parent
47987128b6
commit
a267d9b829
|
@ -0,0 +1,19 @@
|
|||
; RUN: opt %loadPolly %defaultOpts -polly-codegen-isl %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"
|
||||
target triple = "x86_64-unknown-linux-gnu"
|
||||
|
||||
define void @init_array() nounwind {
|
||||
entry:
|
||||
br label %for.cond
|
||||
|
||||
for.cond: ; preds = %for.cond1, %entry
|
||||
%indvar1 = phi i64 [ %indvar.next2, %for.cond1 ], [ 0, %entry ] ; <i64> [#uses=1]
|
||||
br i1 false, label %for.cond1, label %for.end32
|
||||
|
||||
for.cond1: ; preds = %for.cond
|
||||
%indvar.next2 = add i64 %indvar1, 1 ; <i64> [#uses=1]
|
||||
br label %for.cond
|
||||
|
||||
for.end32: ; preds = %for.cond
|
||||
ret void
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
; RUN: opt %loadPolly %defaultOpts -polly-codegen-isl %s
|
||||
; RUN: opt %loadPolly %defaultOpts -polly-detect -analyze < %s | not FileCheck %s
|
||||
|
||||
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32"
|
||||
target triple = "i386-portbld-freebsd8.0"
|
||||
|
||||
define void @MAIN__() nounwind {
|
||||
entry:
|
||||
br i1 undef, label %bb6.preheader, label %bb3
|
||||
|
||||
bb3: ; preds = %bb3, %entry
|
||||
br i1 undef, label %bb6.preheader, label %bb3
|
||||
|
||||
bb6.preheader: ; preds = %bb3, %entry
|
||||
br i1 undef, label %bb11, label %bb9.preheader
|
||||
|
||||
bb9.preheader: ; preds = %bb6.preheader
|
||||
br label %bb11
|
||||
|
||||
bb11: ; preds = %bb9.preheader, %bb6.preheader
|
||||
br label %bb15
|
||||
|
||||
bb15: ; preds = %bb15, %bb11
|
||||
br i1 undef, label %bb26.loopexit, label %bb15
|
||||
|
||||
bb26.loopexit: ; preds = %bb15
|
||||
br i1 undef, label %bb31, label %bb29.preheader
|
||||
|
||||
bb29.preheader: ; preds = %bb26.loopexit
|
||||
br label %bb29
|
||||
|
||||
bb29: ; preds = %bb29, %bb29.preheader
|
||||
%indvar47 = phi i32 [ 0, %bb29.preheader ], [ %indvar.next48, %bb29 ] ; <i32> [#uses=1]
|
||||
%indvar.next48 = add i32 %indvar47, 1 ; <i32> [#uses=2]
|
||||
%exitcond50 = icmp eq i32 %indvar.next48, undef ; <i1> [#uses=1]
|
||||
br i1 %exitcond50, label %bb31, label %bb29
|
||||
|
||||
bb31: ; preds = %bb29, %bb26.loopexit
|
||||
%errtot.3 = phi float [ undef, %bb26.loopexit ], [ undef, %bb29 ] ; <float> [#uses=0]
|
||||
ret void
|
||||
}
|
||||
|
||||
; CHECK: SCOP:
|
|
@ -0,0 +1,27 @@
|
|||
; RUN: opt %loadPolly %defaultOpts -polly-codegen-isl %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"
|
||||
target triple = "x86_64-unknown-linux-gnu"
|
||||
|
||||
define void @clause_SetSplitField(i32 %Length) nounwind inlinehint {
|
||||
entry:
|
||||
br i1 undef, label %bb1, label %bb6
|
||||
|
||||
bb1: ; preds = %entry
|
||||
unreachable
|
||||
|
||||
bb6: ; preds = %entry
|
||||
%tmp = zext i32 %Length to i64 ; <i64> [#uses=1]
|
||||
br label %bb8
|
||||
|
||||
bb7: ; preds = %bb8
|
||||
%indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
|
||||
br label %bb8
|
||||
|
||||
bb8: ; preds = %bb7, %bb6
|
||||
%indvar = phi i64 [ %indvar.next, %bb7 ], [ 0, %bb6 ] ; <i64> [#uses=2]
|
||||
%exitcond = icmp ne i64 %indvar, %tmp ; <i1> [#uses=1]
|
||||
br i1 %exitcond, label %bb7, label %return
|
||||
|
||||
return: ; preds = %bb8
|
||||
ret void
|
||||
}
|
|
@ -0,0 +1,115 @@
|
|||
; RUN: opt %loadPolly %defaultOpts -polly-codegen-isl %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"
|
||||
target triple = "x86_64-unknown-linux-gnu"
|
||||
|
||||
@win193 = external global [4 x [36 x double]], align 32 ; <[4 x [36 x double]]*> [#uses=3]
|
||||
@sb_sample = external global [2 x [2 x [18 x [32 x double]]]], align 32 ; <[2 x [2 x [18 x [32 x double]]]]*> [#uses=2]
|
||||
|
||||
define void @mdct_sub48() nounwind {
|
||||
entry:
|
||||
br i1 undef, label %bb, label %bb54
|
||||
|
||||
bb: ; preds = %entry
|
||||
br label %bb54
|
||||
|
||||
bb3: ; preds = %bb50
|
||||
br label %bb8
|
||||
|
||||
bb4: ; preds = %bb8
|
||||
br label %bb8
|
||||
|
||||
bb8: ; preds = %bb4, %bb3
|
||||
br i1 undef, label %bb4, label %bb9
|
||||
|
||||
bb9: ; preds = %bb8
|
||||
br label %bb48
|
||||
|
||||
bb25: ; preds = %bb48
|
||||
br i1 false, label %bb26, label %bb27
|
||||
|
||||
bb26: ; preds = %bb48, %bb25
|
||||
br label %bb37
|
||||
|
||||
bb27: ; preds = %bb25
|
||||
br i1 undef, label %bb32, label %bb35
|
||||
|
||||
bb32: ; preds = %bb27
|
||||
br label %bb37
|
||||
|
||||
bb34: ; preds = %bb35
|
||||
%0 = getelementptr inbounds [36 x double]* undef, i64 0, i64 0 ; <double*> [#uses=0]
|
||||
%1 = getelementptr inbounds [18 x [32 x double]]* undef, i64 0, i64 0 ; <[32 x double]*> [#uses=1]
|
||||
%2 = getelementptr inbounds [32 x double]* %1, i64 0, i64 0 ; <double*> [#uses=0]
|
||||
%3 = getelementptr inbounds [36 x double]* undef, i64 0, i64 0 ; <double*> [#uses=0]
|
||||
%4 = sub nsw i32 17, %k.4 ; <i32> [#uses=1]
|
||||
%5 = getelementptr inbounds [2 x [2 x [18 x [32 x double]]]]* @sb_sample, i64 0, i64 0 ; <[2 x [18 x [32 x double]]]*> [#uses=1]
|
||||
%6 = getelementptr inbounds [2 x [18 x [32 x double]]]* %5, i64 0, i64 0 ; <[18 x [32 x double]]*> [#uses=1]
|
||||
%7 = sext i32 %4 to i64 ; <i64> [#uses=1]
|
||||
%8 = getelementptr inbounds [18 x [32 x double]]* %6, i64 0, i64 %7 ; <[32 x double]*> [#uses=1]
|
||||
%9 = getelementptr inbounds [32 x double]* %8, i64 0, i64 0 ; <double*> [#uses=1]
|
||||
%10 = load double* %9, align 8 ; <double> [#uses=0]
|
||||
%11 = fsub double 0.000000e+00, undef ; <double> [#uses=1]
|
||||
%12 = getelementptr inbounds double* getelementptr inbounds ([4 x [36 x double]]* @win193, i64 0, i64 2, i64 4), i64 0 ; <double*> [#uses=1]
|
||||
store double %11, double* %12, align 8
|
||||
%13 = add nsw i32 %k.4, 9 ; <i32> [#uses=1]
|
||||
%14 = add nsw i32 %k.4, 18 ; <i32> [#uses=1]
|
||||
%15 = getelementptr inbounds [4 x [36 x double]]* @win193, i64 0, i64 0 ; <[36 x double]*> [#uses=1]
|
||||
%16 = sext i32 %14 to i64 ; <i64> [#uses=1]
|
||||
%17 = getelementptr inbounds [36 x double]* %15, i64 0, i64 %16 ; <double*> [#uses=1]
|
||||
%18 = load double* %17, align 8 ; <double> [#uses=0]
|
||||
%19 = sext i32 %k.4 to i64 ; <i64> [#uses=1]
|
||||
%20 = getelementptr inbounds [18 x [32 x double]]* undef, i64 0, i64 %19 ; <[32 x double]*> [#uses=1]
|
||||
%21 = sext i32 %band.2 to i64 ; <i64> [#uses=1]
|
||||
%22 = getelementptr inbounds [32 x double]* %20, i64 0, i64 %21 ; <double*> [#uses=1]
|
||||
%23 = load double* %22, align 8 ; <double> [#uses=0]
|
||||
%24 = sext i32 %39 to i64 ; <i64> [#uses=1]
|
||||
%25 = getelementptr inbounds [4 x [36 x double]]* @win193, i64 0, i64 %24 ; <[36 x double]*> [#uses=1]
|
||||
%26 = getelementptr inbounds [36 x double]* %25, i64 0, i64 0 ; <double*> [#uses=1]
|
||||
%27 = load double* %26, align 8 ; <double> [#uses=0]
|
||||
%28 = sub nsw i32 17, %k.4 ; <i32> [#uses=1]
|
||||
%29 = getelementptr inbounds [2 x [2 x [18 x [32 x double]]]]* @sb_sample, i64 0, i64 0 ; <[2 x [18 x [32 x double]]]*> [#uses=1]
|
||||
%30 = getelementptr inbounds [2 x [18 x [32 x double]]]* %29, i64 0, i64 0 ; <[18 x [32 x double]]*> [#uses=1]
|
||||
%31 = sext i32 %28 to i64 ; <i64> [#uses=1]
|
||||
%32 = getelementptr inbounds [18 x [32 x double]]* %30, i64 0, i64 %31 ; <[32 x double]*> [#uses=1]
|
||||
%33 = getelementptr inbounds [32 x double]* %32, i64 0, i64 0 ; <double*> [#uses=1]
|
||||
%34 = load double* %33, align 8 ; <double> [#uses=0]
|
||||
%35 = sext i32 %13 to i64 ; <i64> [#uses=1]
|
||||
%36 = getelementptr inbounds double* getelementptr inbounds ([4 x [36 x double]]* @win193, i64 0, i64 2, i64 4), i64 %35 ; <double*> [#uses=1]
|
||||
store double 0.000000e+00, double* %36, align 8
|
||||
%37 = sub nsw i32 %k.4, 1 ; <i32> [#uses=1]
|
||||
br label %bb35
|
||||
|
||||
bb35: ; preds = %bb34, %bb27
|
||||
%k.4 = phi i32 [ %37, %bb34 ], [ 8, %bb27 ] ; <i32> [#uses=6]
|
||||
br i1 undef, label %bb34, label %bb36
|
||||
|
||||
bb36: ; preds = %bb35
|
||||
unreachable
|
||||
|
||||
bb37: ; preds = %bb32, %bb26
|
||||
%38 = add nsw i32 %band.2, 1 ; <i32> [#uses=1]
|
||||
br label %bb48
|
||||
|
||||
bb48: ; preds = %bb37, %bb9
|
||||
%band.2 = phi i32 [ %38, %bb37 ], [ 0, %bb9 ] ; <i32> [#uses=2]
|
||||
%39 = load i32* null, align 8 ; <i32> [#uses=1]
|
||||
br i1 undef, label %bb26, label %bb25
|
||||
|
||||
bb50: ; preds = %bb54
|
||||
br i1 undef, label %bb3, label %bb51
|
||||
|
||||
bb51: ; preds = %bb50
|
||||
br i1 undef, label %bb52, label %bb53
|
||||
|
||||
bb52: ; preds = %bb51
|
||||
unreachable
|
||||
|
||||
bb53: ; preds = %bb51
|
||||
br label %bb54
|
||||
|
||||
bb54: ; preds = %bb53, %bb, %entry
|
||||
br i1 undef, label %bb50, label %return
|
||||
|
||||
return: ; preds = %bb54
|
||||
ret void
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
; RUN: opt %loadPolly %defaultOpts -polly-codegen-isl %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"
|
||||
target triple = "x86_64-pc-linux-gnu"
|
||||
|
||||
define void @init_array() nounwind {
|
||||
bb:
|
||||
br label %bb1
|
||||
|
||||
bb1: ; preds = %bb4, %bb
|
||||
br i1 undef, label %bb2, label %bb5
|
||||
|
||||
bb2: ; preds = %bb3, %bb1
|
||||
%indvar = phi i64 [ %indvar.next, %bb3 ], [ 0, %bb1 ] ; <i64> [#uses=1]
|
||||
%tmp3 = trunc i64 undef to i32 ; <i32> [#uses=1]
|
||||
br i1 false, label %bb3, label %bb4
|
||||
|
||||
bb3: ; preds = %bb2
|
||||
%tmp = srem i32 %tmp3, 1024 ; <i32> [#uses=0]
|
||||
store double undef, double* undef
|
||||
%indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
|
||||
br label %bb2
|
||||
|
||||
bb4: ; preds = %bb2
|
||||
br label %bb1
|
||||
|
||||
bb5: ; preds = %bb1
|
||||
ret void
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
; RUN: opt %loadPolly %defaultOpts -polly-codegen-isl %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"
|
||||
target triple = "x86_64-unknown-linux-gnu"
|
||||
|
||||
define void @fft_float(i32 %NumSamples) nounwind {
|
||||
br label %bb18
|
||||
|
||||
bb18: ; preds = %bb17
|
||||
br i1 false, label %bb19, label %bb22
|
||||
|
||||
bb19: ; preds = %bb18
|
||||
%a = uitofp i32 %NumSamples to double ; <double> [#uses=1]
|
||||
br label %bb21
|
||||
|
||||
bb20: ; preds = %bb21
|
||||
%1 = load float* undef, align 4 ; <float> [#uses=0]
|
||||
%2 = fpext float undef to double ; <double> [#uses=1]
|
||||
%3 = fdiv double %2, %a ; <double> [#uses=0]
|
||||
%indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
|
||||
br label %bb21
|
||||
|
||||
bb21: ; preds = %bb20, %bb19
|
||||
%indvar = phi i64 [ %indvar.next, %bb20 ], [ 0, %bb19 ] ; <i64> [#uses=1]
|
||||
br i1 false, label %bb20, label %bb22.loopexit
|
||||
|
||||
bb22.loopexit: ; preds = %bb21
|
||||
br label %bb22
|
||||
|
||||
bb22: ; preds = %bb22.loopexit, %bb18
|
||||
br label %return
|
||||
|
||||
return: ; preds = %bb22
|
||||
ret void
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
; RUN: opt %loadPolly %defaultOpts -polly-codegen-isl %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"
|
||||
target triple = "x86_64-unknown-linux-gnu"
|
||||
|
||||
define hidden void @luaD_callhook() nounwind {
|
||||
entry:
|
||||
br i1 undef, label %bb, label %return
|
||||
|
||||
bb: ; preds = %entry
|
||||
br i1 undef, label %bb1, label %return
|
||||
|
||||
bb1: ; preds = %bb
|
||||
%0 = sub nsw i64 undef, undef ; <i64> [#uses=1]
|
||||
br i1 false, label %bb2, label %bb3
|
||||
|
||||
bb2: ; preds = %bb1
|
||||
br label %bb4
|
||||
|
||||
bb3: ; preds = %bb1
|
||||
br label %bb4
|
||||
|
||||
bb4: ; preds = %bb3, %bb2
|
||||
br i1 undef, label %bb5, label %bb6
|
||||
|
||||
bb5: ; preds = %bb4
|
||||
unreachable
|
||||
|
||||
bb6: ; preds = %bb4
|
||||
%1 = getelementptr inbounds i8* undef, i64 %0 ; <i8*> [#uses=0]
|
||||
ret void
|
||||
|
||||
return: ; preds = %bb, %entry
|
||||
ret void
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
; RUN: opt %loadPolly %defaultOpts -polly-codegen-isl -disable-output %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"
|
||||
target triple = "x86_64-unknown-linux-gnu"
|
||||
|
||||
define void @matrixTranspose(double** %A) nounwind {
|
||||
entry:
|
||||
br label %bb4
|
||||
|
||||
bb: ; preds = %bb4
|
||||
%0 = add nsw i32 %i.0, 1 ; <i32> [#uses=1]
|
||||
br label %bb2
|
||||
|
||||
bb1: ; preds = %bb2
|
||||
%1 = getelementptr inbounds double** %A, i64 0 ; <double**> [#uses=0]
|
||||
%2 = getelementptr inbounds double** %A, i64 0 ; <double**> [#uses=0]
|
||||
%3 = getelementptr inbounds double** %A, i64 0 ; <double**> [#uses=0]
|
||||
%4 = sext i32 %j.0 to i64 ; <i64> [#uses=1]
|
||||
%5 = getelementptr inbounds double** %A, i64 %4 ; <double**> [#uses=1]
|
||||
%6 = load double** %5, align 8 ; <double*> [#uses=0]
|
||||
%7 = add nsw i32 %j.0, 1 ; <i32> [#uses=1]
|
||||
br label %bb2
|
||||
|
||||
bb2: ; preds = %bb1, %bb
|
||||
%j.0 = phi i32 [ %0, %bb ], [ %7, %bb1 ] ; <i32> [#uses=3]
|
||||
%8 = icmp sle i32 %j.0, 50 ; <i1> [#uses=1]
|
||||
br i1 %8, label %bb1, label %bb3
|
||||
|
||||
bb3: ; preds = %bb2
|
||||
%9 = add nsw i32 %i.0, 1 ; <i32> [#uses=1]
|
||||
br label %bb4
|
||||
|
||||
bb4: ; preds = %bb3, %entry
|
||||
%i.0 = phi i32 [ 0, %entry ], [ %9, %bb3 ] ; <i32> [#uses=3]
|
||||
%10 = icmp sle i32 %i.0, 50 ; <i1> [#uses=1]
|
||||
br i1 %10, label %bb, label %return
|
||||
|
||||
return: ; preds = %bb4
|
||||
ret void
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
; RUN: opt %loadPolly %defaultOpts -polly-codegen-isl -verify-dom-info -disable-output < %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"
|
||||
target triple = "x86_64-unknown-linux-gnu"
|
||||
|
||||
define void @getNonAffNeighbour() nounwind {
|
||||
entry:
|
||||
br i1 undef, label %bb, label %bb6
|
||||
|
||||
bb: ; preds = %entry
|
||||
br i1 false, label %bb1, label %bb2
|
||||
|
||||
bb1: ; preds = %bb
|
||||
br label %bb16
|
||||
|
||||
bb2: ; preds = %bb
|
||||
br i1 false, label %bb3, label %bb4
|
||||
|
||||
bb3: ; preds = %bb2
|
||||
br label %bb16
|
||||
|
||||
bb4: ; preds = %bb2
|
||||
br label %bb16
|
||||
|
||||
bb6: ; preds = %entry
|
||||
br i1 false, label %bb7, label %bb9
|
||||
|
||||
bb7: ; preds = %bb6
|
||||
br label %bb16
|
||||
|
||||
bb9: ; preds = %bb6
|
||||
br label %bb16
|
||||
|
||||
bb16: ; preds = %bb9, %bb7, %bb4, %bb3, %bb1
|
||||
ret void
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
; RUN: opt %loadPolly %defaultOpts -polly-codegen-isl -verify-dom-info -disable-output < %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"
|
||||
target triple = "x86_64-unknown-linux-gnu"
|
||||
|
||||
define void @intrapred_luma_16x16(i32 %predmode) nounwind {
|
||||
entry:
|
||||
switch i32 %predmode, label %bb81 [
|
||||
i32 0, label %bb25
|
||||
i32 1, label %bb26
|
||||
]
|
||||
|
||||
bb23: ; preds = %bb25
|
||||
%indvar.next95 = add i64 %indvar94, 1 ; <i64> [#uses=1]
|
||||
br label %bb25
|
||||
|
||||
bb25: ; preds = %bb23, %entry
|
||||
%indvar94 = phi i64 [ %indvar.next95, %bb23 ], [ 0, %entry ] ; <i64> [#uses=1]
|
||||
br i1 false, label %bb23, label %return
|
||||
|
||||
bb26: ; preds = %entry
|
||||
ret void
|
||||
|
||||
bb81: ; preds = %entry
|
||||
ret void
|
||||
|
||||
return: ; preds = %bb25
|
||||
ret void
|
||||
}
|
|
@ -0,0 +1,96 @@
|
|||
; RUN: opt %loadPolly %defaultOpts -polly-ast -analyze %s
|
||||
|
||||
;int bar1();
|
||||
;int bar2();
|
||||
;int bar3();
|
||||
;int k;
|
||||
;#define N 100
|
||||
;int A[N];
|
||||
;
|
||||
;int main() {
|
||||
; int i, j, z;
|
||||
;
|
||||
; __sync_synchronize();
|
||||
; for (i = 0; i < N; i++) {
|
||||
; if (i < 50)
|
||||
; A[i] = 8;
|
||||
; if (i < 4)
|
||||
; A[i] = 9;
|
||||
; if (i < 3)
|
||||
; A[i] = 10;
|
||||
; }
|
||||
; __sync_synchronize();
|
||||
;
|
||||
; return A[z];
|
||||
;}
|
||||
|
||||
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"
|
||||
|
||||
@A = common global [100 x i32] zeroinitializer, align 16 ; <[100 x i32]*> [#uses=2]
|
||||
@k = common global i32 0, align 4 ; <i32*> [#uses=0]
|
||||
|
||||
define i32 @main() nounwind {
|
||||
; <label>:0
|
||||
fence seq_cst
|
||||
br label %1
|
||||
|
||||
; <label>:1 ; preds = %12, %0
|
||||
%indvar = phi i64 [ %indvar.next, %12 ], [ 0, %0 ] ; <i64> [#uses=4]
|
||||
%scevgep = getelementptr [100 x i32]* @A, i64 0, i64 %indvar ; <i32*> [#uses=3]
|
||||
%i.0 = trunc i64 %indvar to i32 ; <i32> [#uses=3]
|
||||
%exitcond = icmp ne i64 %indvar, 100 ; <i1> [#uses=1]
|
||||
br i1 %exitcond, label %2, label %13
|
||||
|
||||
; <label>:2 ; preds = %1
|
||||
%3 = icmp slt i32 %i.0, 50 ; <i1> [#uses=1]
|
||||
br i1 %3, label %4, label %5
|
||||
|
||||
; <label>:4 ; preds = %2
|
||||
store i32 8, i32* %scevgep
|
||||
br label %5
|
||||
|
||||
; <label>:5 ; preds = %4, %2
|
||||
%6 = icmp slt i32 %i.0, 4 ; <i1> [#uses=1]
|
||||
br i1 %6, label %7, label %8
|
||||
|
||||
; <label>:7 ; preds = %5
|
||||
store i32 9, i32* %scevgep
|
||||
br label %8
|
||||
|
||||
; <label>:8 ; preds = %7, %5
|
||||
%9 = icmp slt i32 %i.0, 3 ; <i1> [#uses=1]
|
||||
br i1 %9, label %10, label %11
|
||||
|
||||
; <label>:10 ; preds = %8
|
||||
store i32 10, i32* %scevgep
|
||||
br label %11
|
||||
|
||||
; <label>:11 ; preds = %10, %8
|
||||
br label %12
|
||||
|
||||
; <label>:12 ; preds = %11
|
||||
%indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
|
||||
br label %1
|
||||
|
||||
; <label>:13 ; preds = %1
|
||||
fence seq_cst
|
||||
%14 = sext i32 undef to i64 ; <i64> [#uses=1]
|
||||
%15 = getelementptr inbounds i32* getelementptr inbounds ([100 x i32]* @A, i32 0, i32 0), i64 %14 ; <i32*> [#uses=1]
|
||||
%16 = load i32* %15 ; <i32> [#uses=1]
|
||||
ret i32 %16
|
||||
}
|
||||
|
||||
; CHECK: for (c2=0;c2<=2;c2++) {
|
||||
; CHECK: S0(c2);
|
||||
; CHECK: S1(c2);
|
||||
; CHECK: S2(c2);
|
||||
; CHECK: }
|
||||
; CHECK: S0(3);
|
||||
; CHECK: S1(3);
|
||||
; CHECK: for (c2=4;c2<=49;c2++) {
|
||||
; CHECK: S0(c2);
|
||||
; CHECK: }
|
||||
; CHECK: S0: Stmt_4
|
||||
; CHECK: S1: Stmt_7
|
||||
; CHECK: S2: Stmt_10
|
|
@ -0,0 +1,31 @@
|
|||
; RUN: opt %loadPolly %defaultOpts -polly-codegen-isl -disable-output %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"
|
||||
target triple = "x86_64-unknown-linux-gnu"
|
||||
define void @cfft2([2 x float]* %x) nounwind {
|
||||
entry:
|
||||
%d.1.reg2mem = alloca [2 x float]* ; <[2 x float]**> [#uses=3]
|
||||
br i1 undef, label %bb2, label %bb34
|
||||
|
||||
bb2: ; preds = %bb34, %entry
|
||||
ret void
|
||||
|
||||
bb20: ; preds = %bb34
|
||||
store [2 x float]* undef, [2 x float]** %d.1.reg2mem
|
||||
br i1 false, label %bb21, label %bb23
|
||||
|
||||
bb21: ; preds = %bb20
|
||||
%0 = getelementptr inbounds [2 x float]* %x, i64 undef ; <[2 x float]*> [#uses=1]
|
||||
store [2 x float]* %0, [2 x float]** %d.1.reg2mem
|
||||
br label %bb23
|
||||
|
||||
bb23: ; preds = %bb21, %bb20
|
||||
%d.1.reload = load [2 x float]** %d.1.reg2mem ; <[2 x float]*> [#uses=1]
|
||||
br i1 undef, label %bb29, label %bb34
|
||||
|
||||
bb29: ; preds = %bb23
|
||||
%1 = getelementptr inbounds [2 x float]* %d.1.reload, i64 undef ; <[2 x float]*> [#uses=0]
|
||||
br label %bb34
|
||||
|
||||
bb34: ; preds = %bb29, %bb23, %entry
|
||||
br i1 undef, label %bb20, label %bb2
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
; RUN: opt %loadPolly %defaultOpts -polly-codegen-isl -disable-output %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"
|
||||
target triple = "x86_64-unknown-linux-gnu"
|
||||
|
||||
define void @main() nounwind {
|
||||
entry:
|
||||
br label %for.cond
|
||||
|
||||
for.cond: ; preds = %for.inc, %entry
|
||||
%indvar1 = phi i64 [ %indvar.next2, %for.inc ], [ 0, %entry ] ; <i64> [#uses=2]
|
||||
%exitcond = icmp ne i64 %indvar1, 1024 ; <i1> [#uses=1]
|
||||
br label %a
|
||||
|
||||
a: ; preds = %for.cond
|
||||
br i1 %exitcond, label %for.body, label %for.end
|
||||
|
||||
for.body: ; preds = %a
|
||||
br label %for.inc
|
||||
|
||||
for.inc: ; preds = %for.body
|
||||
%indvar.next2 = add i64 %indvar1, 1 ; <i64> [#uses=1]
|
||||
br label %for.cond
|
||||
|
||||
for.end: ; preds = %a
|
||||
br label %for.cond5
|
||||
|
||||
for.cond5: ; preds = %for.inc17, %for.end
|
||||
ret void
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
; RUN: opt %loadPolly %defaultOpts -polly-codegen-isl %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"
|
||||
target triple = "x86_64-unknown-linux-gnu"
|
||||
|
||||
define void @compdecomp() nounwind {
|
||||
entry:
|
||||
%max = alloca i64
|
||||
%i = load i64* undef
|
||||
br label %bb37
|
||||
|
||||
bb37: ; preds = %bb36, %bb28
|
||||
%tmp = icmp ugt i64 %i, 0
|
||||
br i1 %tmp, label %bb38, label %bb39
|
||||
|
||||
bb38: ; preds = %bb37
|
||||
store i64 %i, i64* %max
|
||||
br label %bb39
|
||||
|
||||
bb39: ; preds = %bb38, %bb37
|
||||
unreachable
|
||||
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
; RUN: opt %loadPolly %defaultOpts -polly-codegen-isl %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"
|
||||
target triple = "x86_64-unknown-linux-gnu"
|
||||
define void @Reflection_coefficients(i16* %r) nounwind {
|
||||
bb20:
|
||||
%indvar3.lcssa20.reload = load i64* undef
|
||||
%tmp = mul i64 %indvar3.lcssa20.reload, -1
|
||||
%tmp5 = add i64 %tmp, 8
|
||||
br label %bb22
|
||||
|
||||
bb21: ; preds = %bb22
|
||||
%r_addr.1.moved.to.bb21 = getelementptr i16* %r, i64 0
|
||||
store i16 0, i16* %r_addr.1.moved.to.bb21, align 2
|
||||
%indvar.next = add i64 %indvar, 1
|
||||
br label %bb22
|
||||
|
||||
bb22: ; preds = %bb21, %bb20
|
||||
%indvar = phi i64 [ %indvar.next, %bb21 ], [ 0, %bb20 ]
|
||||
%exitcond = icmp ne i64 %indvar, %tmp5
|
||||
br i1 %exitcond, label %bb21, label %return
|
||||
|
||||
return: ; preds = %bb22
|
||||
ret void
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
; RUN: opt %loadPolly %defaultOpts -polly-codegen-isl %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"
|
||||
target triple = "x86_64-pc-linux-gnu"
|
||||
|
||||
define void @CleanNet() nounwind {
|
||||
entry:
|
||||
%firstVia.0.reg2mem = alloca i64
|
||||
br label %bb7
|
||||
|
||||
bb7: ; preds = %bb7, %entry
|
||||
br i1 undef, label %bb7, label %bb8
|
||||
|
||||
bb8: ; preds = %bb7
|
||||
%indvar5.lcssa.reload = load i64* undef
|
||||
%tmp17 = mul i64 %indvar5.lcssa.reload, -1
|
||||
%tmp18 = add i64 0, %tmp17
|
||||
br label %bb18
|
||||
|
||||
bb13: ; preds = %bb18
|
||||
%0 = icmp ult i64 %i.1, 0
|
||||
br i1 %0, label %bb14, label %bb17
|
||||
|
||||
bb14: ; preds = %bb13
|
||||
store i64 %i.1, i64* %firstVia.0.reg2mem
|
||||
br label %bb17
|
||||
|
||||
bb17: ; preds = %bb14, %bb13
|
||||
%indvar.next16 = add i64 %indvar15, 1
|
||||
br label %bb18
|
||||
|
||||
bb18: ; preds = %bb17, %bb8
|
||||
%indvar15 = phi i64 [ %indvar.next16, %bb17 ], [ 0, %bb8 ]
|
||||
%i.1 = add i64 %tmp18, %indvar15
|
||||
br i1 undef, label %bb13, label %bb25
|
||||
|
||||
bb25: ; preds = %bb18
|
||||
ret void
|
||||
}
|
|
@ -0,0 +1,59 @@
|
|||
; RUN: opt %loadPolly %defaultOpts -polly-codegen-isl %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"
|
||||
target triple = "x86_64-unknown-linux-gnu"
|
||||
|
||||
define void @main() nounwind {
|
||||
.split:
|
||||
br label %0
|
||||
|
||||
.loopexit.loopexit: ; preds = %.preheader.us
|
||||
br label %.loopexit.simregexit
|
||||
|
||||
.loopexit.simregexit: ; preds = %.loopexit.loopexit, %._crit_edge
|
||||
br label %.loopexit
|
||||
|
||||
.loopexit: ; preds = %.loopexit.simregexit
|
||||
%indvar.next16 = add i64 %indvar15, 1
|
||||
%exitcond53 = icmp eq i64 %indvar.next16, 2048
|
||||
br i1 %exitcond53, label %2, label %0
|
||||
|
||||
; <label>:0 ; preds = %.loopexit, %.split
|
||||
%indvar15 = phi i64 [ 0, %.split ], [ %indvar.next16, %.loopexit ]
|
||||
br label %.simregentry
|
||||
|
||||
.simregentry: ; preds = %0
|
||||
%indvar15.ph = phi i64 [ %indvar15, %0 ]
|
||||
%tmp67 = add i64 %indvar15, 1
|
||||
%i.06 = trunc i64 %tmp67 to i32
|
||||
%tmp25 = add i64 undef, 1
|
||||
%1 = icmp slt i32 %i.06, 2048
|
||||
br i1 %1, label %.lr.ph.preheader, label %._crit_edge.simregexit
|
||||
|
||||
.lr.ph.preheader: ; preds = %.simregentry
|
||||
br label %.lr.ph
|
||||
|
||||
.lr.ph: ; preds = %.lr.ph, %.lr.ph.preheader
|
||||
%indvar33 = phi i64 [ %indvar.next34, %.lr.ph ], [ 0, %.lr.ph.preheader ]
|
||||
%indvar.next34 = add i64 %indvar33, 1
|
||||
%exitcond40 = icmp eq i64 %indvar.next34, 0
|
||||
br i1 %exitcond40, label %._crit_edge.loopexit, label %.lr.ph
|
||||
|
||||
._crit_edge.loopexit: ; preds = %.lr.ph
|
||||
br label %._crit_edge.simregexit
|
||||
|
||||
._crit_edge.simregexit: ; preds = %.simregentry, %._crit_edge.loopexit
|
||||
br label %._crit_edge
|
||||
|
||||
._crit_edge: ; preds = %._crit_edge.simregexit
|
||||
br i1 false, label %.loopexit.simregexit, label %.preheader.us.preheader
|
||||
|
||||
.preheader.us.preheader: ; preds = %._crit_edge
|
||||
br label %.preheader.us
|
||||
|
||||
.preheader.us: ; preds = %.preheader.us, %.preheader.us.preheader
|
||||
%exitcond26.old = icmp eq i64 undef, %tmp25
|
||||
br i1 false, label %.loopexit.loopexit, label %.preheader.us
|
||||
|
||||
; <label>:2 ; preds = %.loopexit
|
||||
ret void
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
; RUN: opt %loadPolly %defaultOpts -polly-codegen-isl %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"
|
||||
target triple = "x86_64-unknown-linux-gnu"
|
||||
|
||||
define void @main() nounwind {
|
||||
.split:
|
||||
br label %0
|
||||
|
||||
.loopexit: ; preds = %.lr.ph, %0
|
||||
%indvar.next16 = add i64 %indvar15, 1
|
||||
%exitcond53 = icmp eq i64 %indvar.next16, 2048
|
||||
br i1 %exitcond53, label %1, label %0
|
||||
|
||||
; <label>:0 ; preds = %.loopexit, %.split
|
||||
%indvar15 = phi i64 [ 0, %.split ], [ %indvar.next16, %.loopexit ]
|
||||
%tmp59 = sub i64 2046, %indvar15
|
||||
%tmp38 = and i64 %tmp59, 4294967295
|
||||
%tmp39 = add i64 %tmp38, 1
|
||||
br i1 false, label %.lr.ph, label %.loopexit
|
||||
|
||||
.lr.ph: ; preds = %.lr.ph, %0
|
||||
%indvar33 = phi i64 [ %indvar.next34, %.lr.ph ], [ 0, %0 ]
|
||||
%indvar.next34 = add i64 %indvar33, 1
|
||||
%exitcond40 = icmp eq i64 %indvar.next34, %tmp39
|
||||
br i1 %exitcond40, label %.loopexit, label %.lr.ph
|
||||
|
||||
; <label>:1 ; preds = %.loopexit
|
||||
ret void
|
||||
}
|
|
@ -0,0 +1,76 @@
|
|||
; RUN: opt %loadPolly %defaultOpts -polly-codegen-isl %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"
|
||||
target triple = "x86_64-unknown-linux-gnu"
|
||||
|
||||
%struct..0__pthread_mutex_s = type { i32, i32, i32, i32, i32, i32, %struct.__pthread_list_t }
|
||||
%struct.__pthread_list_t = type { %struct.__pthread_list_t*, %struct.__pthread_list_t* }
|
||||
%union.pthread_attr_t = type { i64, [12 x i32] }
|
||||
%union.pthread_mutex_t = type { %struct..0__pthread_mutex_s }
|
||||
%union.pthread_mutexattr_t = type { i32 }
|
||||
|
||||
@_ZL20__gthrw_pthread_oncePiPFvvE = alias weak i32 (i32*, void ()*)* @pthread_once ; <i32 (i32*, void ()*)*> [#uses=0]
|
||||
@_ZL27__gthrw_pthread_getspecificj = alias weak i8* (i32)* @pthread_getspecific ; <i8* (i32)*> [#uses=0]
|
||||
@_ZL27__gthrw_pthread_setspecificjPKv = alias weak i32 (i32, i8*)* @pthread_setspecific ; <i32 (i32, i8*)*> [#uses=0]
|
||||
@_ZL22__gthrw_pthread_createPmPK14pthread_attr_tPFPvS3_ES3_ = alias weak i32 (i64*, %union.pthread_attr_t*, i8* (i8*)*, i8*)* @pthread_create ; <i32 (i64*, %union.pthread_attr_t*, i8* (i8*)*, i8*)*> [#uses=0]
|
||||
@_ZL22__gthrw_pthread_cancelm = alias weak i32 (i64)* @pthread_cancel ; <i32 (i64)*> [#uses=0]
|
||||
@_ZL26__gthrw_pthread_mutex_lockP15pthread_mutex_t = alias weak i32 (%union.pthread_mutex_t*)* @pthread_mutex_lock ; <i32 (%union.pthread_mutex_t*)*> [#uses=0]
|
||||
@_ZL29__gthrw_pthread_mutex_trylockP15pthread_mutex_t = alias weak i32 (%union.pthread_mutex_t*)* @pthread_mutex_trylock ; <i32 (%union.pthread_mutex_t*)*> [#uses=0]
|
||||
@_ZL28__gthrw_pthread_mutex_unlockP15pthread_mutex_t = alias weak i32 (%union.pthread_mutex_t*)* @pthread_mutex_unlock ; <i32 (%union.pthread_mutex_t*)*> [#uses=0]
|
||||
@_ZL26__gthrw_pthread_mutex_initP15pthread_mutex_tPK19pthread_mutexattr_t = alias weak i32 (%union.pthread_mutex_t*, %union.pthread_mutexattr_t*)* @pthread_mutex_init ; <i32 (%union.pthread_mutex_t*, %union.pthread_mutexattr_t*)*> [#uses=0]
|
||||
@_ZL26__gthrw_pthread_key_createPjPFvPvE = alias weak i32 (i32*, void (i8*)*)* @pthread_key_create ; <i32 (i32*, void (i8*)*)*> [#uses=0]
|
||||
@_ZL26__gthrw_pthread_key_deletej = alias weak i32 (i32)* @pthread_key_delete ; <i32 (i32)*> [#uses=0]
|
||||
@_ZL30__gthrw_pthread_mutexattr_initP19pthread_mutexattr_t = alias weak i32 (%union.pthread_mutexattr_t*)* @pthread_mutexattr_init ; <i32 (%union.pthread_mutexattr_t*)*> [#uses=0]
|
||||
@_ZL33__gthrw_pthread_mutexattr_settypeP19pthread_mutexattr_ti = alias weak i32 (%union.pthread_mutexattr_t*, i32)* @pthread_mutexattr_settype ; <i32 (%union.pthread_mutexattr_t*, i32)*> [#uses=0]
|
||||
@_ZL33__gthrw_pthread_mutexattr_destroyP19pthread_mutexattr_t = alias weak i32 (%union.pthread_mutexattr_t*)* @pthread_mutexattr_destroy ; <i32 (%union.pthread_mutexattr_t*)*> [#uses=0]
|
||||
|
||||
define void @_ZL6createP6node_tii3v_tS1_d() {
|
||||
entry:
|
||||
br i1 undef, label %bb, label %bb5
|
||||
|
||||
bb: ; preds = %entry
|
||||
br i1 false, label %bb1, label %bb3
|
||||
|
||||
bb1: ; preds = %bb
|
||||
br label %bb3
|
||||
|
||||
bb3: ; preds = %bb1, %bb
|
||||
%iftmp.99.0 = phi i64 [ undef, %bb1 ], [ 1, %bb ] ; <i64> [#uses=0]
|
||||
br label %bb5
|
||||
|
||||
bb5: ; preds = %bb3, %entry
|
||||
br i1 undef, label %return, label %bb7
|
||||
|
||||
bb7: ; preds = %bb5
|
||||
unreachable
|
||||
|
||||
return: ; preds = %bb5
|
||||
ret void
|
||||
}
|
||||
|
||||
declare i32 @pthread_once(i32*, void ()*)
|
||||
|
||||
declare i8* @pthread_getspecific(i32)
|
||||
|
||||
declare i32 @pthread_setspecific(i32, i8*)
|
||||
|
||||
declare i32 @pthread_create(i64*, %union.pthread_attr_t*, i8* (i8*)*, i8*)
|
||||
|
||||
declare i32 @pthread_cancel(i64)
|
||||
|
||||
declare i32 @pthread_mutex_lock(%union.pthread_mutex_t*)
|
||||
|
||||
declare i32 @pthread_mutex_trylock(%union.pthread_mutex_t*)
|
||||
|
||||
declare i32 @pthread_mutex_unlock(%union.pthread_mutex_t*)
|
||||
|
||||
declare i32 @pthread_mutex_init(%union.pthread_mutex_t*, %union.pthread_mutexattr_t*)
|
||||
|
||||
declare i32 @pthread_key_create(i32*, void (i8*)*)
|
||||
|
||||
declare i32 @pthread_key_delete(i32)
|
||||
|
||||
declare i32 @pthread_mutexattr_init(%union.pthread_mutexattr_t*)
|
||||
|
||||
declare i32 @pthread_mutexattr_settype(%union.pthread_mutexattr_t*, i32)
|
||||
|
||||
declare i32 @pthread_mutexattr_destroy(%union.pthread_mutexattr_t*)
|
|
@ -0,0 +1,56 @@
|
|||
;RUN: opt %loadPolly %defaultOpts -polly-ast -analyze < %s | FileCheck %s
|
||||
|
||||
;#include <string.h>
|
||||
;int A[1];
|
||||
;
|
||||
;void constant_condition () {
|
||||
; int a = 0;
|
||||
; int b = 0;
|
||||
;
|
||||
; if (a == b)
|
||||
; A[0] = 0;
|
||||
; else
|
||||
; A[0] = 1;
|
||||
;}
|
||||
;
|
||||
;int main () {
|
||||
; int i;
|
||||
;
|
||||
; A[0] = 2;
|
||||
;
|
||||
; constant_condition();
|
||||
;
|
||||
; return A[0];
|
||||
;}
|
||||
|
||||
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"
|
||||
@A = common global [1 x i32] zeroinitializer, align 4 ; <[1 x i32]*> [#uses=1]
|
||||
|
||||
define void @constant_condition() nounwind {
|
||||
bb:
|
||||
%tmp = icmp eq i32 0, 0 ; <i1> [#uses=0]
|
||||
br i1 true, label %bb1, label %bb2
|
||||
|
||||
bb1: ; preds = %bb
|
||||
store i32 0, i32* getelementptr inbounds ([1 x i32]* @A, i32 0, i32 0)
|
||||
br label %bb3
|
||||
|
||||
bb2: ; preds = %bb
|
||||
store i32 1, i32* getelementptr inbounds ([1 x i32]* @A, i32 0, i32 0)
|
||||
br label %bb3
|
||||
|
||||
bb3: ; preds = %bb2, %bb1
|
||||
ret void
|
||||
}
|
||||
|
||||
define i32 @main() nounwind {
|
||||
bb:
|
||||
store i32 2, i32* getelementptr inbounds ([1 x i32]* @A, i32 0, i32 0)
|
||||
call void @constant_condition()
|
||||
%tmp = load i32* getelementptr inbounds ([1 x i32]* @A, i32 0, i32 0) ; <i32> [#uses=1]
|
||||
ret i32 %tmp
|
||||
}
|
||||
|
||||
|
||||
; CHECK: Stmt_bb1();
|
|
@ -0,0 +1,175 @@
|
|||
; RUN: opt %loadPolly %defaultOpts -polly-ast -analyze < %s | FileCheck %s
|
||||
|
||||
;#include <string.h>
|
||||
;#define N 1024
|
||||
;int A[N];
|
||||
;int B[N];
|
||||
;
|
||||
;void loop_with_condition() {
|
||||
; int i;
|
||||
;
|
||||
; __sync_synchronize();
|
||||
; for (i = 0; i < N; i++) {
|
||||
; if (i <= N / 2)
|
||||
; A[i] = 1;
|
||||
; else
|
||||
; A[i] = 2;
|
||||
; B[i] = 3;
|
||||
; }
|
||||
; __sync_synchronize();
|
||||
;}
|
||||
;
|
||||
;int main () {
|
||||
; int i;
|
||||
;
|
||||
; memset(A, 0, sizeof(int) * N);
|
||||
; memset(B, 0, sizeof(int) * N);
|
||||
;
|
||||
; loop_with_condition();
|
||||
;
|
||||
; for (i = 0; i < N; i++)
|
||||
; if (B[i] != 3)
|
||||
; return 1;
|
||||
;
|
||||
; for (i = 0; i < N; i++)
|
||||
; if (i <= N / 2 && A[i] != 1)
|
||||
; return 1;
|
||||
; else if (i > N / 2 && A[i] != 2)
|
||||
; return 1;
|
||||
; return 0;
|
||||
;}
|
||||
|
||||
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"
|
||||
|
||||
@A = common global [1024 x i32] zeroinitializer, align 16 ; <[1024 x i32]*> [#uses=4]
|
||||
@B = common global [1024 x i32] zeroinitializer, align 16 ; <[1024 x i32]*> [#uses=4]
|
||||
|
||||
define void @loop_with_condition() nounwind {
|
||||
; <label>:0
|
||||
fence seq_cst
|
||||
br label %1
|
||||
|
||||
; <label>:1 ; preds = %7, %0
|
||||
%indvar = phi i64 [ %indvar.next, %7 ], [ 0, %0 ] ; <i64> [#uses=5]
|
||||
%scevgep = getelementptr [1024 x i32]* @A, i64 0, i64 %indvar ; <i32*> [#uses=2]
|
||||
%scevgep1 = getelementptr [1024 x i32]* @B, i64 0, i64 %indvar ; <i32*> [#uses=1]
|
||||
%i.0 = trunc i64 %indvar to i32 ; <i32> [#uses=1]
|
||||
%exitcond = icmp ne i64 %indvar, 1024 ; <i1> [#uses=1]
|
||||
br i1 %exitcond, label %2, label %8
|
||||
|
||||
; <label>:2 ; preds = %1
|
||||
%3 = icmp sle i32 %i.0, 512 ; <i1> [#uses=1]
|
||||
br i1 %3, label %4, label %5
|
||||
|
||||
; <label>:4 ; preds = %2
|
||||
store i32 1, i32* %scevgep
|
||||
br label %6
|
||||
|
||||
; <label>:5 ; preds = %2
|
||||
store i32 2, i32* %scevgep
|
||||
br label %6
|
||||
|
||||
; <label>:6 ; preds = %5, %4
|
||||
store i32 3, i32* %scevgep1
|
||||
br label %7
|
||||
|
||||
; <label>:7 ; preds = %6
|
||||
%indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
|
||||
br label %1
|
||||
|
||||
; <label>:8 ; preds = %1
|
||||
fence seq_cst
|
||||
ret void
|
||||
}
|
||||
|
||||
define i32 @main() nounwind {
|
||||
; <label>:0
|
||||
call void @llvm.memset.p0i8.i64(i8* bitcast ([1024 x i32]* @A to i8*), i8 0, i64 4096, i32 1, i1 false)
|
||||
call void @llvm.memset.p0i8.i64(i8* bitcast ([1024 x i32]* @B to i8*), i8 0, i64 4096, i32 1, i1 false)
|
||||
call void @loop_with_condition()
|
||||
br label %1
|
||||
|
||||
; <label>:1 ; preds = %8, %0
|
||||
%indvar1 = phi i64 [ %indvar.next2, %8 ], [ 0, %0 ] ; <i64> [#uses=3]
|
||||
%scevgep3 = getelementptr [1024 x i32]* @B, i64 0, i64 %indvar1 ; <i32*> [#uses=1]
|
||||
%i.0 = trunc i64 %indvar1 to i32 ; <i32> [#uses=1]
|
||||
%2 = icmp slt i32 %i.0, 1024 ; <i1> [#uses=1]
|
||||
br i1 %2, label %3, label %9
|
||||
|
||||
; <label>:3 ; preds = %1
|
||||
%4 = load i32* %scevgep3 ; <i32> [#uses=1]
|
||||
%5 = icmp ne i32 %4, 3 ; <i1> [#uses=1]
|
||||
br i1 %5, label %6, label %7
|
||||
|
||||
; <label>:6 ; preds = %3
|
||||
br label %28
|
||||
|
||||
; <label>:7 ; preds = %3
|
||||
br label %8
|
||||
|
||||
; <label>:8 ; preds = %7
|
||||
%indvar.next2 = add i64 %indvar1, 1 ; <i64> [#uses=1]
|
||||
br label %1
|
||||
|
||||
; <label>:9 ; preds = %1
|
||||
br label %10
|
||||
|
||||
; <label>:10 ; preds = %26, %9
|
||||
%indvar = phi i64 [ %indvar.next, %26 ], [ 0, %9 ] ; <i64> [#uses=3]
|
||||
%scevgep = getelementptr [1024 x i32]* @A, i64 0, i64 %indvar ; <i32*> [#uses=2]
|
||||
%i.1 = trunc i64 %indvar to i32 ; <i32> [#uses=3]
|
||||
%11 = icmp slt i32 %i.1, 1024 ; <i1> [#uses=1]
|
||||
br i1 %11, label %12, label %27
|
||||
|
||||
; <label>:12 ; preds = %10
|
||||
%13 = icmp sle i32 %i.1, 512 ; <i1> [#uses=1]
|
||||
br i1 %13, label %14, label %18
|
||||
|
||||
; <label>:14 ; preds = %12
|
||||
%15 = load i32* %scevgep ; <i32> [#uses=1]
|
||||
%16 = icmp ne i32 %15, 1 ; <i1> [#uses=1]
|
||||
br i1 %16, label %17, label %18
|
||||
|
||||
; <label>:17 ; preds = %14
|
||||
br label %28
|
||||
|
||||
; <label>:18 ; preds = %14, %12
|
||||
%19 = icmp sgt i32 %i.1, 512 ; <i1> [#uses=1]
|
||||
br i1 %19, label %20, label %24
|
||||
|
||||
; <label>:20 ; preds = %18
|
||||
%21 = load i32* %scevgep ; <i32> [#uses=1]
|
||||
%22 = icmp ne i32 %21, 2 ; <i1> [#uses=1]
|
||||
br i1 %22, label %23, label %24
|
||||
|
||||
; <label>:23 ; preds = %20
|
||||
br label %28
|
||||
|
||||
; <label>:24 ; preds = %20, %18
|
||||
br label %25
|
||||
|
||||
; <label>:25 ; preds = %24
|
||||
br label %26
|
||||
|
||||
; <label>:26 ; preds = %25
|
||||
%indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
|
||||
br label %10
|
||||
|
||||
; <label>:27 ; preds = %10
|
||||
br label %28
|
||||
|
||||
; <label>:28 ; preds = %27, %23, %17, %6
|
||||
%.0 = phi i32 [ 1, %6 ], [ 1, %17 ], [ 1, %23 ], [ 0, %27 ] ; <i32> [#uses=1]
|
||||
ret i32 %.0
|
||||
}
|
||||
|
||||
declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) nounwind
|
||||
|
||||
; CHECK: for (int c1 = 0; c1 <= 1023; c1 += 1) {
|
||||
; CHECK: if (c1 >= 513) {
|
||||
; CHECK: Stmt_5(c1);
|
||||
; CHECK: } else
|
||||
; CHECK: Stmt_4(c1);
|
||||
; CHECK: Stmt_6(c1);
|
||||
; CHECK: }
|
|
@ -0,0 +1,137 @@
|
|||
; RUN: opt %loadPolly %defaultOpts -polly-ast -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"
|
||||
target triple = "x86_64-unknown-linux-gnu"
|
||||
|
||||
@A = common global [1024 x i32] zeroinitializer, align 16
|
||||
@B = common global [1024 x i32] zeroinitializer, align 16
|
||||
|
||||
define void @loop_with_condition(i32 %m) nounwind {
|
||||
entry:
|
||||
fence seq_cst
|
||||
%tmp = sub i32 0, %m
|
||||
%tmp1 = zext i32 %tmp to i64
|
||||
br label %for.cond
|
||||
|
||||
for.cond: ; preds = %for.inc, %entry
|
||||
%indvar = phi i64 [ %indvar.next, %for.inc ], [ 0, %entry ]
|
||||
%arrayidx = getelementptr [1024 x i32]* @A, i64 0, i64 %indvar
|
||||
%arrayidx10 = getelementptr [1024 x i32]* @B, i64 0, i64 %indvar
|
||||
%tmp2 = add i64 %tmp1, %indvar
|
||||
%sub = trunc i64 %tmp2 to i32
|
||||
%exitcond = icmp ne i64 %indvar, 1024
|
||||
br i1 %exitcond, label %for.body, label %for.end
|
||||
|
||||
for.body: ; preds = %for.cond
|
||||
%cmp3 = icmp sle i32 %sub, 1024
|
||||
br i1 %cmp3, label %if.then, label %if.else
|
||||
|
||||
if.then: ; preds = %for.body
|
||||
store i32 1, i32* %arrayidx
|
||||
br label %if.end
|
||||
|
||||
if.else: ; preds = %for.body
|
||||
store i32 2, i32* %arrayidx
|
||||
br label %if.end
|
||||
|
||||
if.end: ; preds = %if.else, %if.then
|
||||
store i32 3, i32* %arrayidx10
|
||||
br label %for.inc
|
||||
|
||||
for.inc: ; preds = %if.end
|
||||
%indvar.next = add i64 %indvar, 1
|
||||
br label %for.cond
|
||||
|
||||
for.end: ; preds = %for.cond
|
||||
fence seq_cst
|
||||
ret void
|
||||
}
|
||||
|
||||
define i32 @main() nounwind {
|
||||
entry:
|
||||
call void @llvm.memset.p0i8.i64(i8* bitcast ([1024 x i32]* @A to i8*), i8 0, i64 4096, i32 1, i1 false)
|
||||
call void @llvm.memset.p0i8.i64(i8* bitcast ([1024 x i32]* @B to i8*), i8 0, i64 4096, i32 1, i1 false)
|
||||
call void @loop_with_condition(i32 5)
|
||||
br label %for.cond
|
||||
|
||||
for.cond: ; preds = %for.inc, %entry
|
||||
%indvar1 = phi i64 [ %indvar.next2, %for.inc ], [ 0, %entry ]
|
||||
%arrayidx = getelementptr [1024 x i32]* @B, i64 0, i64 %indvar1
|
||||
%i.0 = trunc i64 %indvar1 to i32
|
||||
%cmp = icmp slt i32 %i.0, 1024
|
||||
br i1 %cmp, label %for.body, label %for.end
|
||||
|
||||
for.body: ; preds = %for.cond
|
||||
%tmp3 = load i32* %arrayidx
|
||||
%cmp4 = icmp ne i32 %tmp3, 3
|
||||
br i1 %cmp4, label %if.then, label %if.end
|
||||
|
||||
if.then: ; preds = %for.body
|
||||
br label %return
|
||||
|
||||
if.end: ; preds = %for.body
|
||||
br label %for.inc
|
||||
|
||||
for.inc: ; preds = %if.end
|
||||
%indvar.next2 = add i64 %indvar1, 1
|
||||
br label %for.cond
|
||||
|
||||
for.end: ; preds = %for.cond
|
||||
br label %for.cond6
|
||||
|
||||
for.cond6: ; preds = %for.inc32, %for.end
|
||||
%indvar = phi i64 [ %indvar.next, %for.inc32 ], [ 0, %for.end ]
|
||||
%arrayidx15 = getelementptr [1024 x i32]* @A, i64 0, i64 %indvar
|
||||
%i.1 = trunc i64 %indvar to i32
|
||||
%cmp8 = icmp slt i32 %i.1, 1024
|
||||
br i1 %cmp8, label %for.body9, label %for.end35
|
||||
|
||||
for.body9: ; preds = %for.cond6
|
||||
br i1 true, label %land.lhs.true, label %if.else
|
||||
|
||||
land.lhs.true: ; preds = %for.body9
|
||||
%tmp16 = load i32* %arrayidx15
|
||||
%cmp17 = icmp ne i32 %tmp16, 1
|
||||
br i1 %cmp17, label %if.then18, label %if.else
|
||||
|
||||
if.then18: ; preds = %land.lhs.true
|
||||
br label %return
|
||||
|
||||
if.else: ; preds = %land.lhs.true, %for.body9
|
||||
br i1 false, label %land.lhs.true23, label %if.end30
|
||||
|
||||
land.lhs.true23: ; preds = %if.else
|
||||
%tmp27 = load i32* %arrayidx15
|
||||
%cmp28 = icmp ne i32 %tmp27, 2
|
||||
br i1 %cmp28, label %if.then29, label %if.end30
|
||||
|
||||
if.then29: ; preds = %land.lhs.true23
|
||||
br label %return
|
||||
|
||||
if.end30: ; preds = %land.lhs.true23, %if.else
|
||||
br label %if.end31
|
||||
|
||||
if.end31: ; preds = %if.end30
|
||||
br label %for.inc32
|
||||
|
||||
for.inc32: ; preds = %if.end31
|
||||
%indvar.next = add i64 %indvar, 1
|
||||
br label %for.cond6
|
||||
|
||||
for.end35: ; preds = %for.cond6
|
||||
br label %return
|
||||
|
||||
return: ; preds = %for.end35, %if.then29, %if.then18, %if.then
|
||||
%retval.0 = phi i32 [ 1, %if.then ], [ 1, %if.then18 ], [ 1, %if.then29 ], [ 0, %for.end35 ]
|
||||
ret i32 %retval.0
|
||||
}
|
||||
|
||||
declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) nounwind
|
||||
|
||||
; CHECK: for (int c1 = 0; c1 <= 1023; c1 += 1) {
|
||||
; CHECK: if (c1 >= m + 1025) {
|
||||
; CHECK: Stmt_if_else(c1);
|
||||
; CHECK: } else
|
||||
; CHECK: Stmt_if_then(c1);
|
||||
; CHECK: Stmt_if_end(c1);
|
||||
; CHECK: }
|
|
@ -0,0 +1,177 @@
|
|||
; RUN: opt %loadPolly %defaultOpts -polly-ast -analyze < %s | FileCheck %s
|
||||
|
||||
;#include <string.h>
|
||||
;#define N 1024
|
||||
;int A[N];
|
||||
;int B[N];
|
||||
;
|
||||
;void loop_with_condition_ineq() {
|
||||
; int i;
|
||||
;
|
||||
; __sync_synchronize();
|
||||
; for (i = 0; i < N; i++) {
|
||||
; if (i != N / 2)
|
||||
; A[i] = 1;
|
||||
; else
|
||||
; A[i] = 2;
|
||||
; B[i] = 3;
|
||||
; }
|
||||
; __sync_synchronize();
|
||||
;}
|
||||
;
|
||||
;int main () {
|
||||
; int i;
|
||||
;
|
||||
; memset(A, 0, sizeof(int) * N);
|
||||
; memset(B, 0, sizeof(int) * N);
|
||||
;
|
||||
; loop_with_condition_ineq();
|
||||
;
|
||||
; for (i = 0; i < N; i++)
|
||||
; if (B[i] != 3)
|
||||
; return 1;
|
||||
;
|
||||
; for (i = 0; i < N; i++)
|
||||
; if (i != N / 2 && A[i] != 1)
|
||||
; return 1;
|
||||
; else if (i == N && A[i] != 2)
|
||||
; return 1;
|
||||
; return 0;
|
||||
;}
|
||||
|
||||
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"
|
||||
|
||||
@A = common global [1024 x i32] zeroinitializer, align 16 ; <[1024 x i32]*> [#uses=4]
|
||||
@B = common global [1024 x i32] zeroinitializer, align 16 ; <[1024 x i32]*> [#uses=4]
|
||||
|
||||
define void @loop_with_condition_ineq() nounwind {
|
||||
; <label>:0
|
||||
fence seq_cst
|
||||
br label %1
|
||||
|
||||
; <label>:1 ; preds = %7, %0
|
||||
%indvar = phi i64 [ %indvar.next, %7 ], [ 0, %0 ] ; <i64> [#uses=5]
|
||||
%scevgep = getelementptr [1024 x i32]* @A, i64 0, i64 %indvar ; <i32*> [#uses=2]
|
||||
%scevgep1 = getelementptr [1024 x i32]* @B, i64 0, i64 %indvar ; <i32*> [#uses=1]
|
||||
%i.0 = trunc i64 %indvar to i32 ; <i32> [#uses=1]
|
||||
%exitcond = icmp ne i64 %indvar, 1024 ; <i1> [#uses=1]
|
||||
br i1 %exitcond, label %2, label %8
|
||||
|
||||
; <label>:2 ; preds = %1
|
||||
%3 = icmp ne i32 %i.0, 512 ; <i1> [#uses=1]
|
||||
br i1 %3, label %4, label %5
|
||||
|
||||
; <label>:4 ; preds = %2
|
||||
store i32 1, i32* %scevgep
|
||||
br label %6
|
||||
|
||||
; <label>:5 ; preds = %2
|
||||
store i32 2, i32* %scevgep
|
||||
br label %6
|
||||
|
||||
; <label>:6 ; preds = %5, %4
|
||||
store i32 3, i32* %scevgep1
|
||||
br label %7
|
||||
|
||||
; <label>:7 ; preds = %6
|
||||
%indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
|
||||
br label %1
|
||||
|
||||
; <label>:8 ; preds = %1
|
||||
fence seq_cst
|
||||
ret void
|
||||
}
|
||||
|
||||
define i32 @main() nounwind {
|
||||
; <label>:0
|
||||
call void @llvm.memset.p0i8.i64(i8* bitcast ([1024 x i32]* @A to i8*), i8 0, i64 4096, i32 1, i1 false)
|
||||
call void @llvm.memset.p0i8.i64(i8* bitcast ([1024 x i32]* @B to i8*), i8 0, i64 4096, i32 1, i1 false)
|
||||
call void @loop_with_condition_ineq()
|
||||
br label %1
|
||||
|
||||
; <label>:1 ; preds = %8, %0
|
||||
%indvar1 = phi i64 [ %indvar.next2, %8 ], [ 0, %0 ] ; <i64> [#uses=3]
|
||||
%scevgep3 = getelementptr [1024 x i32]* @B, i64 0, i64 %indvar1 ; <i32*> [#uses=1]
|
||||
%i.0 = trunc i64 %indvar1 to i32 ; <i32> [#uses=1]
|
||||
%2 = icmp slt i32 %i.0, 1024 ; <i1> [#uses=1]
|
||||
br i1 %2, label %3, label %9
|
||||
|
||||
; <label>:3 ; preds = %1
|
||||
%4 = load i32* %scevgep3 ; <i32> [#uses=1]
|
||||
%5 = icmp ne i32 %4, 3 ; <i1> [#uses=1]
|
||||
br i1 %5, label %6, label %7
|
||||
|
||||
; <label>:6 ; preds = %3
|
||||
br label %28
|
||||
|
||||
; <label>:7 ; preds = %3
|
||||
br label %8
|
||||
|
||||
; <label>:8 ; preds = %7
|
||||
%indvar.next2 = add i64 %indvar1, 1 ; <i64> [#uses=1]
|
||||
br label %1
|
||||
|
||||
; <label>:9 ; preds = %1
|
||||
br label %10
|
||||
|
||||
; <label>:10 ; preds = %26, %9
|
||||
%indvar = phi i64 [ %indvar.next, %26 ], [ 0, %9 ] ; <i64> [#uses=3]
|
||||
%scevgep = getelementptr [1024 x i32]* @A, i64 0, i64 %indvar ; <i32*> [#uses=2]
|
||||
%i.1 = trunc i64 %indvar to i32 ; <i32> [#uses=3]
|
||||
%11 = icmp slt i32 %i.1, 1024 ; <i1> [#uses=1]
|
||||
br i1 %11, label %12, label %27
|
||||
|
||||
; <label>:12 ; preds = %10
|
||||
%13 = icmp ne i32 %i.1, 512 ; <i1> [#uses=1]
|
||||
br i1 %13, label %14, label %18
|
||||
|
||||
; <label>:14 ; preds = %12
|
||||
%15 = load i32* %scevgep ; <i32> [#uses=1]
|
||||
%16 = icmp ne i32 %15, 1 ; <i1> [#uses=1]
|
||||
br i1 %16, label %17, label %18
|
||||
|
||||
; <label>:17 ; preds = %14
|
||||
br label %28
|
||||
|
||||
; <label>:18 ; preds = %14, %12
|
||||
%19 = icmp eq i32 %i.1, 1024 ; <i1> [#uses=1]
|
||||
br i1 %19, label %20, label %24
|
||||
|
||||
; <label>:20 ; preds = %18
|
||||
%21 = load i32* %scevgep ; <i32> [#uses=1]
|
||||
%22 = icmp ne i32 %21, 2 ; <i1> [#uses=1]
|
||||
br i1 %22, label %23, label %24
|
||||
|
||||
; <label>:23 ; preds = %20
|
||||
br label %28
|
||||
|
||||
; <label>:24 ; preds = %20, %18
|
||||
br label %25
|
||||
|
||||
; <label>:25 ; preds = %24
|
||||
br label %26
|
||||
|
||||
; <label>:26 ; preds = %25
|
||||
%indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
|
||||
br label %10
|
||||
|
||||
; <label>:27 ; preds = %10
|
||||
br label %28
|
||||
|
||||
; <label>:28 ; preds = %27, %23, %17, %6
|
||||
%.0 = phi i32 [ 1, %6 ], [ 1, %17 ], [ 1, %23 ], [ 0, %27 ] ; <i32> [#uses=1]
|
||||
ret i32 %.0
|
||||
}
|
||||
|
||||
declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) nounwind
|
||||
|
||||
; CHECK: for (int c1 = 0; c1 <= 1023; c1 += 1) {
|
||||
; CHECK: if (c1 >= 513) {
|
||||
; CHECK: Stmt_4(c1);
|
||||
; CHECK: } else if (c1 <= 511) {
|
||||
; CHECK: Stmt_4(c1);
|
||||
; CHECK: } else
|
||||
; CHECK: Stmt_5(512);
|
||||
; CHECK: Stmt_6(c1);
|
||||
; CHECK: }
|
|
@ -0,0 +1,211 @@
|
|||
; RUN: opt %loadPolly %defaultOpts -polly-ast -analyze < %s | FileCheck %s
|
||||
|
||||
;#include <string.h>
|
||||
;#define N 1024
|
||||
;int A[N];
|
||||
;int B[N];
|
||||
;
|
||||
;void loop_with_condition() {
|
||||
; int i;
|
||||
;
|
||||
; __sync_synchronize();
|
||||
; for (i = 0; i < N; i++) {
|
||||
; if (i <= N / 2) {
|
||||
; if (i > 20)
|
||||
; A[i] = 1;
|
||||
; else
|
||||
; A[i] = 2;
|
||||
; }
|
||||
; B[i] = 3;
|
||||
; }
|
||||
; __sync_synchronize();
|
||||
;}
|
||||
;
|
||||
;int main () {
|
||||
; int i;
|
||||
;
|
||||
; memset(A, 0, sizeof(int) * N);
|
||||
; memset(B, 0, sizeof(int) * N);
|
||||
;
|
||||
; loop_with_condition();
|
||||
;
|
||||
; for (i = 0; i < N; i++)
|
||||
; if (B[i] != 3)
|
||||
; return 1;
|
||||
;
|
||||
; for (i = 0; i < N; i++)
|
||||
; if (i <= N / 2 && i > 20 && A[i] != 1)
|
||||
; return 1;
|
||||
; else if (i > N / 2) {
|
||||
; if (i <= 20 && A[i] != 2)
|
||||
; return 1;
|
||||
; if (i > 20 && A[i] != 0)
|
||||
; return 1;
|
||||
; }
|
||||
; return 0;
|
||||
;}
|
||||
|
||||
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"
|
||||
|
||||
@A = common global [1024 x i32] zeroinitializer, align 16 ; <[1024 x i32]*> [#uses=4]
|
||||
@B = common global [1024 x i32] zeroinitializer, align 16 ; <[1024 x i32]*> [#uses=4]
|
||||
|
||||
define void @loop_with_condition() nounwind {
|
||||
; <label>:0
|
||||
fence seq_cst
|
||||
br label %1
|
||||
|
||||
; <label>:1 ; preds = %10, %0
|
||||
%indvar = phi i64 [ %indvar.next, %10 ], [ 0, %0 ] ; <i64> [#uses=5]
|
||||
%scevgep = getelementptr [1024 x i32]* @A, i64 0, i64 %indvar ; <i32*> [#uses=2]
|
||||
%scevgep1 = getelementptr [1024 x i32]* @B, i64 0, i64 %indvar ; <i32*> [#uses=1]
|
||||
%i.0 = trunc i64 %indvar to i32 ; <i32> [#uses=2]
|
||||
%exitcond = icmp ne i64 %indvar, 1024 ; <i1> [#uses=1]
|
||||
br i1 %exitcond, label %2, label %11
|
||||
|
||||
; <label>:2 ; preds = %1
|
||||
%3 = icmp sle i32 %i.0, 512 ; <i1> [#uses=1]
|
||||
br i1 %3, label %4, label %9
|
||||
|
||||
; <label>:4 ; preds = %2
|
||||
%5 = icmp sgt i32 %i.0, 20 ; <i1> [#uses=1]
|
||||
br i1 %5, label %6, label %7
|
||||
|
||||
; <label>:6 ; preds = %4
|
||||
store i32 1, i32* %scevgep
|
||||
br label %8
|
||||
|
||||
; <label>:7 ; preds = %4
|
||||
store i32 2, i32* %scevgep
|
||||
br label %8
|
||||
|
||||
; <label>:8 ; preds = %7, %6
|
||||
br label %9
|
||||
|
||||
; <label>:9 ; preds = %8, %2
|
||||
store i32 3, i32* %scevgep1
|
||||
br label %10
|
||||
|
||||
; <label>:10 ; preds = %9
|
||||
%indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
|
||||
br label %1
|
||||
|
||||
; <label>:11 ; preds = %1
|
||||
fence seq_cst
|
||||
ret void
|
||||
}
|
||||
|
||||
define i32 @main() nounwind {
|
||||
; <label>:0
|
||||
call void @llvm.memset.p0i8.i64(i8* bitcast ([1024 x i32]* @A to i8*), i8 0, i64 4096, i32 1, i1 false)
|
||||
call void @llvm.memset.p0i8.i64(i8* bitcast ([1024 x i32]* @B to i8*), i8 0, i64 4096, i32 1, i1 false)
|
||||
call void @loop_with_condition()
|
||||
br label %1
|
||||
|
||||
; <label>:1 ; preds = %8, %0
|
||||
%indvar1 = phi i64 [ %indvar.next2, %8 ], [ 0, %0 ] ; <i64> [#uses=3]
|
||||
%scevgep3 = getelementptr [1024 x i32]* @B, i64 0, i64 %indvar1 ; <i32*> [#uses=1]
|
||||
%i.0 = trunc i64 %indvar1 to i32 ; <i32> [#uses=1]
|
||||
%2 = icmp slt i32 %i.0, 1024 ; <i1> [#uses=1]
|
||||
br i1 %2, label %3, label %9
|
||||
|
||||
; <label>:3 ; preds = %1
|
||||
%4 = load i32* %scevgep3 ; <i32> [#uses=1]
|
||||
%5 = icmp ne i32 %4, 3 ; <i1> [#uses=1]
|
||||
br i1 %5, label %6, label %7
|
||||
|
||||
; <label>:6 ; preds = %3
|
||||
br label %39
|
||||
|
||||
; <label>:7 ; preds = %3
|
||||
br label %8
|
||||
|
||||
; <label>:8 ; preds = %7
|
||||
%indvar.next2 = add i64 %indvar1, 1 ; <i64> [#uses=1]
|
||||
br label %1
|
||||
|
||||
; <label>:9 ; preds = %1
|
||||
br label %10
|
||||
|
||||
; <label>:10 ; preds = %37, %9
|
||||
%indvar = phi i64 [ %indvar.next, %37 ], [ 0, %9 ] ; <i64> [#uses=3]
|
||||
%scevgep = getelementptr [1024 x i32]* @A, i64 0, i64 %indvar ; <i32*> [#uses=3]
|
||||
%i.1 = trunc i64 %indvar to i32 ; <i32> [#uses=6]
|
||||
%11 = icmp slt i32 %i.1, 1024 ; <i1> [#uses=1]
|
||||
br i1 %11, label %12, label %38
|
||||
|
||||
; <label>:12 ; preds = %10
|
||||
%13 = icmp sle i32 %i.1, 512 ; <i1> [#uses=1]
|
||||
br i1 %13, label %14, label %20
|
||||
|
||||
; <label>:14 ; preds = %12
|
||||
%15 = icmp sgt i32 %i.1, 20 ; <i1> [#uses=1]
|
||||
br i1 %15, label %16, label %20
|
||||
|
||||
; <label>:16 ; preds = %14
|
||||
%17 = load i32* %scevgep ; <i32> [#uses=1]
|
||||
%18 = icmp ne i32 %17, 1 ; <i1> [#uses=1]
|
||||
br i1 %18, label %19, label %20
|
||||
|
||||
; <label>:19 ; preds = %16
|
||||
br label %39
|
||||
|
||||
; <label>:20 ; preds = %16, %14, %12
|
||||
%21 = icmp sgt i32 %i.1, 512 ; <i1> [#uses=1]
|
||||
br i1 %21, label %22, label %35
|
||||
|
||||
; <label>:22 ; preds = %20
|
||||
%23 = icmp sle i32 %i.1, 20 ; <i1> [#uses=1]
|
||||
br i1 %23, label %24, label %28
|
||||
|
||||
; <label>:24 ; preds = %22
|
||||
%25 = load i32* %scevgep ; <i32> [#uses=1]
|
||||
%26 = icmp ne i32 %25, 2 ; <i1> [#uses=1]
|
||||
br i1 %26, label %27, label %28
|
||||
|
||||
; <label>:27 ; preds = %24
|
||||
br label %39
|
||||
|
||||
; <label>:28 ; preds = %24, %22
|
||||
%29 = icmp sgt i32 %i.1, 20 ; <i1> [#uses=1]
|
||||
br i1 %29, label %30, label %34
|
||||
|
||||
; <label>:30 ; preds = %28
|
||||
%31 = load i32* %scevgep ; <i32> [#uses=1]
|
||||
%32 = icmp ne i32 %31, 0 ; <i1> [#uses=1]
|
||||
br i1 %32, label %33, label %34
|
||||
|
||||
; <label>:33 ; preds = %30
|
||||
br label %39
|
||||
|
||||
; <label>:34 ; preds = %30, %28
|
||||
br label %35
|
||||
|
||||
; <label>:35 ; preds = %34, %20
|
||||
br label %36
|
||||
|
||||
; <label>:36 ; preds = %35
|
||||
br label %37
|
||||
|
||||
; <label>:37 ; preds = %36
|
||||
%indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
|
||||
br label %10
|
||||
|
||||
; <label>:38 ; preds = %10
|
||||
br label %39
|
||||
|
||||
; <label>:39 ; preds = %38, %33, %27, %19, %6
|
||||
%.0 = phi i32 [ 1, %6 ], [ 1, %19 ], [ 1, %27 ], [ 1, %33 ], [ 0, %38 ] ; <i32> [#uses=1]
|
||||
ret i32 %.0
|
||||
}
|
||||
|
||||
declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) nounwind
|
||||
|
||||
; CHECK: for (int c1 = 0; c1 <= 1023; c1 += 1) {
|
||||
; CHECK: if (c1 <= 20) {
|
||||
; CHECK: Stmt_7(c1);
|
||||
; CHECK: } else if (c1 <= 512)
|
||||
; CHECK: Stmt_6(c1);
|
||||
; CHECK: Stmt_9(c1);
|
||||
; CHECK: }
|
|
@ -0,0 +1,93 @@
|
|||
; RUN: opt %loadPolly %defaultOpts -polly-ast -analyze < %s | FileCheck %s
|
||||
|
||||
;#include <string.h>
|
||||
;#include <stdio.h>
|
||||
;#define N 1021
|
||||
;
|
||||
;int main () {
|
||||
; int i;
|
||||
; int A[N];
|
||||
; int RED[1];
|
||||
;
|
||||
; memset(A, 0, sizeof(int) * N);
|
||||
;
|
||||
; A[0] = 1;
|
||||
; A[1] = 1;
|
||||
; RED[0] = 0;
|
||||
;
|
||||
; for (i = 2; i < N; i++) {
|
||||
; A[i] = A[i-1] + A[i-2];
|
||||
; RED[0] += A[i-2];
|
||||
; }
|
||||
;
|
||||
; if (RED[0] != 382399368)
|
||||
; return 1;
|
||||
;}
|
||||
|
||||
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"
|
||||
|
||||
define i32 @main() nounwind {
|
||||
entry:
|
||||
%A = alloca [1021 x i32], align 4 ; <[1021 x i32]*> [#uses=6]
|
||||
%RED = alloca [1 x i32], align 4 ; <[1 x i32]*> [#uses=3]
|
||||
%arraydecay = getelementptr inbounds [1021 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
|
||||
%conv = bitcast i32* %arraydecay to i8* ; <i8*> [#uses=1]
|
||||
call void @llvm.memset.p0i8.i64(i8* %conv, i8 0, i64 4084, i32 1, i1 false)
|
||||
%arraydecay1 = getelementptr inbounds [1021 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
|
||||
%arrayidx = getelementptr inbounds i32* %arraydecay1, i64 0 ; <i32*> [#uses=1]
|
||||
store i32 1, i32* %arrayidx
|
||||
%arraydecay2 = getelementptr inbounds [1021 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
|
||||
%arrayidx3 = getelementptr inbounds i32* %arraydecay2, i64 1 ; <i32*> [#uses=1]
|
||||
store i32 1, i32* %arrayidx3
|
||||
%arraydecay4 = getelementptr inbounds [1 x i32]* %RED, i32 0, i32 0 ; <i32*> [#uses=1]
|
||||
%arrayidx5 = getelementptr inbounds i32* %arraydecay4, i64 0 ; <i32*> [#uses=1]
|
||||
store i32 0, i32* %arrayidx5
|
||||
br label %for.cond
|
||||
|
||||
for.cond: ; preds = %for.inc, %entry
|
||||
%indvar = phi i64 [ %indvar.next, %for.inc ], [ 0, %entry ] ; <i64> [#uses=5]
|
||||
%arrayidx15 = getelementptr [1021 x i32]* %A, i64 0, i64 %indvar ; <i32*> [#uses=2]
|
||||
%tmp = add i64 %indvar, 2 ; <i64> [#uses=1]
|
||||
%arrayidx20 = getelementptr [1021 x i32]* %A, i64 0, i64 %tmp ; <i32*> [#uses=1]
|
||||
%tmp1 = add i64 %indvar, 1 ; <i64> [#uses=1]
|
||||
%arrayidx9 = getelementptr [1021 x i32]* %A, i64 0, i64 %tmp1 ; <i32*> [#uses=1]
|
||||
%exitcond = icmp ne i64 %indvar, 1019 ; <i1> [#uses=1]
|
||||
br i1 %exitcond, label %for.body, label %for.end
|
||||
|
||||
for.body: ; preds = %for.cond
|
||||
%tmp10 = load i32* %arrayidx9 ; <i32> [#uses=1]
|
||||
%tmp16 = load i32* %arrayidx15 ; <i32> [#uses=1]
|
||||
%add = add nsw i32 %tmp10, %tmp16 ; <i32> [#uses=1]
|
||||
store i32 %add, i32* %arrayidx20
|
||||
%tmp26 = load i32* %arrayidx15 ; <i32> [#uses=1]
|
||||
%arraydecay27 = getelementptr inbounds [1 x i32]* %RED, i32 0, i32 0 ; <i32*> [#uses=1]
|
||||
%arrayidx28 = getelementptr inbounds i32* %arraydecay27, i64 0 ; <i32*> [#uses=2]
|
||||
%tmp29 = load i32* %arrayidx28 ; <i32> [#uses=1]
|
||||
%add30 = add nsw i32 %tmp29, %tmp26 ; <i32> [#uses=1]
|
||||
store i32 %add30, i32* %arrayidx28
|
||||
br label %for.inc
|
||||
|
||||
for.inc: ; preds = %for.body
|
||||
%indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
|
||||
br label %for.cond
|
||||
|
||||
for.end: ; preds = %for.cond
|
||||
%arraydecay32 = getelementptr inbounds [1 x i32]* %RED, i32 0, i32 0 ; <i32*> [#uses=1]
|
||||
%arrayidx33 = getelementptr inbounds i32* %arraydecay32, i64 0 ; <i32*> [#uses=1]
|
||||
%tmp34 = load i32* %arrayidx33 ; <i32> [#uses=1]
|
||||
%cmp35 = icmp ne i32 %tmp34, 382399368 ; <i1> [#uses=1]
|
||||
br i1 %cmp35, label %if.then, label %if.end
|
||||
|
||||
if.then: ; preds = %for.end
|
||||
br label %if.end
|
||||
|
||||
if.end: ; preds = %if.then, %for.end
|
||||
%retval.0 = phi i32 [ 1, %if.then ], [ 0, %for.end ] ; <i32> [#uses=1]
|
||||
ret i32 %retval.0
|
||||
}
|
||||
|
||||
declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) nounwind
|
||||
|
||||
; CHECK: for (int c1 = 0; c1 <= 1018; c1 += 1)
|
||||
; CHECK: Stmt_for_body(c1);
|
|
@ -0,0 +1,138 @@
|
|||
; RUN: opt %loadPolly %defaultOpts -polly-ast -analyze < %s | FileCheck %s
|
||||
|
||||
;#include <string.h>
|
||||
;#define N 1024
|
||||
;
|
||||
;int A[N];
|
||||
;
|
||||
;void sequential_loops() {
|
||||
; int i;
|
||||
; for (i = 0; i < N/2; i++) {
|
||||
; A[i] = 1;
|
||||
; }
|
||||
; for (i = N/2 ; i < N; i++) {
|
||||
; A[i] = 2;
|
||||
; }
|
||||
;}
|
||||
;
|
||||
;int main () {
|
||||
; int i;
|
||||
; memset(A, 0, sizeof(int) * N);
|
||||
;
|
||||
; sequential_loops();
|
||||
;
|
||||
; for (i = 0; i < N; i++) {
|
||||
; if (A[i] != 1 && i < N/2)
|
||||
; return 1;
|
||||
; if (A[i] != 2 && i >= N/2)
|
||||
; return 1;
|
||||
; }
|
||||
;
|
||||
; return 0;
|
||||
;}
|
||||
|
||||
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"
|
||||
|
||||
@A = common global [1024 x i32] zeroinitializer, align 4 ; <[1024 x i32]*> [#uses=5]
|
||||
|
||||
define void @sequential_loops() nounwind {
|
||||
bb:
|
||||
br label %bb1
|
||||
|
||||
bb1: ; preds = %bb3, %bb
|
||||
%indvar1 = phi i64 [ %indvar.next2, %bb3 ], [ 0, %bb ]
|
||||
%scevgep4 = getelementptr [1024 x i32]* @A, i64 0, i64 %indvar1
|
||||
%exitcond3 = icmp ne i64 %indvar1, 512
|
||||
br i1 %exitcond3, label %bb2, label %bb4
|
||||
|
||||
bb2: ; preds = %bb1
|
||||
store i32 1, i32* %scevgep4
|
||||
br label %bb3
|
||||
|
||||
bb3: ; preds = %bb2
|
||||
%indvar.next2 = add i64 %indvar1, 1
|
||||
br label %bb1
|
||||
|
||||
bb4: ; preds = %bb1
|
||||
br label %bb5
|
||||
|
||||
bb5: ; preds = %bb7, %bb4
|
||||
%indvar = phi i64 [ %indvar.next, %bb7 ], [ 0, %bb4 ]
|
||||
%tmp = add i64 %indvar, 512
|
||||
%scevgep = getelementptr [1024 x i32]* @A, i64 0, i64 %tmp
|
||||
%exitcond = icmp ne i64 %indvar, 512
|
||||
br i1 %exitcond, label %bb6, label %bb8
|
||||
|
||||
bb6: ; preds = %bb5
|
||||
store i32 2, i32* %scevgep
|
||||
br label %bb7
|
||||
|
||||
bb7: ; preds = %bb6
|
||||
%indvar.next = add i64 %indvar, 1
|
||||
br label %bb5
|
||||
|
||||
bb8: ; preds = %bb5
|
||||
ret void
|
||||
}
|
||||
|
||||
define i32 @main() nounwind {
|
||||
bb:
|
||||
call void @llvm.memset.p0i8.i64(i8* bitcast ([1024 x i32]* @A to i8*), i8 0, i64 4096, i32 1, i1 false)
|
||||
call void @sequential_loops()
|
||||
br label %bb1
|
||||
|
||||
bb1: ; preds = %bb15, %bb
|
||||
%indvar = phi i64 [ %indvar.next, %bb15 ], [ 0, %bb ]
|
||||
%i.0 = trunc i64 %indvar to i32
|
||||
%scevgep = getelementptr [1024 x i32]* @A, i64 0, i64 %indvar
|
||||
%tmp = icmp slt i32 %i.0, 1024
|
||||
br i1 %tmp, label %bb2, label %bb16
|
||||
|
||||
bb2: ; preds = %bb1
|
||||
%tmp3 = load i32* %scevgep
|
||||
%tmp4 = icmp ne i32 %tmp3, 1
|
||||
br i1 %tmp4, label %bb5, label %bb8
|
||||
|
||||
bb5: ; preds = %bb2
|
||||
%tmp6 = icmp slt i32 %i.0, 512
|
||||
br i1 %tmp6, label %bb7, label %bb8
|
||||
|
||||
bb7: ; preds = %bb5
|
||||
br label %bb17
|
||||
|
||||
bb8: ; preds = %bb5, %bb2
|
||||
%tmp9 = load i32* %scevgep
|
||||
%tmp10 = icmp ne i32 %tmp9, 2
|
||||
br i1 %tmp10, label %bb11, label %bb14
|
||||
|
||||
bb11: ; preds = %bb8
|
||||
%tmp12 = icmp sge i32 %i.0, 512
|
||||
br i1 %tmp12, label %bb13, label %bb14
|
||||
|
||||
bb13: ; preds = %bb11
|
||||
br label %bb17
|
||||
|
||||
bb14: ; preds = %bb11, %bb8
|
||||
br label %bb15
|
||||
|
||||
bb15: ; preds = %bb14
|
||||
%indvar.next = add i64 %indvar, 1
|
||||
br label %bb1
|
||||
|
||||
bb16: ; preds = %bb1
|
||||
br label %bb17
|
||||
|
||||
bb17: ; preds = %bb16, %bb13, %bb7
|
||||
%.0 = phi i32 [ 1, %bb7 ], [ 1, %bb13 ], [ 0, %bb16 ]
|
||||
ret i32 %.0
|
||||
}
|
||||
|
||||
declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) nounwind
|
||||
|
||||
; CHECK: {
|
||||
; CHECK: for (int c1 = 0; c1 <= 511; c1 += 1)
|
||||
; CHECK: Stmt_bb2(c1);
|
||||
; CHECK: for (int c1 = 0; c1 <= 511; c1 += 1)
|
||||
; CHECK: Stmt_bb6(c1);
|
||||
; CHECK: }
|
|
@ -0,0 +1,59 @@
|
|||
; RUN: opt %loadPolly %defaultOpts -O3 -polly-ast -polly-allow-nonaffine -analyze < %s | FileCheck %s
|
||||
|
||||
;#include <stdio.h>
|
||||
;#include <stdlib.h>
|
||||
;#include <math.h>
|
||||
;
|
||||
;int main()
|
||||
;{
|
||||
; int A[1024*1024];
|
||||
; int i;
|
||||
; for (i = 0; i < 1024; i++)
|
||||
; A[i*i] = 2*i;
|
||||
;
|
||||
; printf("Random Value: %d", A[rand() % 1024*1024]);
|
||||
;
|
||||
; return 0;
|
||||
;}
|
||||
|
||||
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"
|
||||
|
||||
@.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: for (int c1 = 0; c1 <= 1023; c1 += 1)
|
||||
; CHECK: Stmt_for_body(c1);
|
|
@ -0,0 +1,93 @@
|
|||
; RUN: opt %loadPolly %defaultOpts -polly-ast -analyze -S < %s | FileCheck %s
|
||||
|
||||
;#define N 20
|
||||
;#include "limits.h"
|
||||
;#include <stdio.h>
|
||||
;int A[N];
|
||||
;
|
||||
;void single_do_loop_int_max_iterations() {
|
||||
; int i;
|
||||
;
|
||||
; __sync_synchronize();
|
||||
;
|
||||
; i = 0;
|
||||
;
|
||||
; do {
|
||||
; A[0] = i;
|
||||
; ++i;
|
||||
; } while (i < INT_MAX);
|
||||
;
|
||||
; __sync_synchronize();
|
||||
;}
|
||||
;
|
||||
;int main () {
|
||||
; int i;
|
||||
;
|
||||
; A[0] = 0;
|
||||
;
|
||||
; single_do_loop_int_max_iterations();
|
||||
;
|
||||
; fprintf(stdout, "Output %d\n", A[0]);
|
||||
;
|
||||
; if (A[0] == INT_MAX - 1)
|
||||
; return 0;
|
||||
; else
|
||||
; return 1;
|
||||
;}
|
||||
|
||||
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"
|
||||
|
||||
%struct._IO_FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct._IO_FILE*, i32, i32, i64, i16, i8, [1 x i8], i8*, i64, i8*, i8*, i8*, i8*, i64, i32, [20 x i8] }
|
||||
%struct._IO_marker = type { %struct._IO_marker*, %struct._IO_FILE*, i32 }
|
||||
|
||||
@A = common global [20 x i32] zeroinitializer, align 4 ; <[20 x i32]*> [#uses=1]
|
||||
@stdout = external global %struct._IO_FILE* ; <%struct._IO_FILE**> [#uses=1]
|
||||
@.str = private constant [11 x i8] c"Output %d\0A\00" ; <[11 x i8]*> [#uses=1]
|
||||
|
||||
define void @single_do_loop_int_max_iterations() nounwind {
|
||||
entry:
|
||||
fence seq_cst
|
||||
br label %do.body
|
||||
|
||||
do.body: ; preds = %do.cond, %entry
|
||||
%0 = phi i32 [ 0, %entry ], [ %inc, %do.cond ] ; <i32> [#uses=2]
|
||||
store i32 %0, i32* getelementptr inbounds ([20 x i32]* @A, i32 0, i32 0)
|
||||
%inc = add nsw i32 %0, 1 ; <i32> [#uses=2]
|
||||
br label %do.cond
|
||||
|
||||
do.cond: ; preds = %do.body
|
||||
%exitcond = icmp ne i32 %inc, 2147483647 ; <i1> [#uses=1]
|
||||
br i1 %exitcond, label %do.body, label %do.end
|
||||
|
||||
do.end: ; preds = %do.cond
|
||||
fence seq_cst
|
||||
ret void
|
||||
}
|
||||
|
||||
define i32 @main() nounwind {
|
||||
entry:
|
||||
store i32 0, i32* getelementptr inbounds ([20 x i32]* @A, i32 0, i32 0)
|
||||
call void @single_do_loop_int_max_iterations()
|
||||
%tmp = load %struct._IO_FILE** @stdout ; <%struct._IO_FILE*> [#uses=1]
|
||||
%tmp1 = load i32* getelementptr inbounds ([20 x i32]* @A, i32 0, i32 0) ; <i32> [#uses=1]
|
||||
%call = call i32 (%struct._IO_FILE*, i8*, ...)* @fprintf(%struct._IO_FILE* %tmp, i8* getelementptr inbounds ([11 x i8]* @.str, i32 0, i32 0), i32 %tmp1) ; <i32> [#uses=0]
|
||||
%tmp2 = load i32* getelementptr inbounds ([20 x i32]* @A, i32 0, i32 0) ; <i32> [#uses=1]
|
||||
%cmp = icmp eq i32 %tmp2, 2147483646 ; <i1> [#uses=1]
|
||||
br i1 %cmp, label %if.then, label %if.else
|
||||
|
||||
if.then: ; preds = %entry
|
||||
br label %return
|
||||
|
||||
if.else: ; preds = %entry
|
||||
br label %return
|
||||
|
||||
return: ; preds = %if.else, %if.then
|
||||
%retval.0 = phi i32 [ 0, %if.then ], [ 1, %if.else ] ; <i32> [#uses=1]
|
||||
ret i32 %retval.0
|
||||
}
|
||||
|
||||
declare i32 @fprintf(%struct._IO_FILE*, i8*, ...)
|
||||
|
||||
; CHECK: for (int c1 = 0; c1 <= 2147483646; c1 += 1)
|
||||
; CHECK: Stmt_do_body(c1);
|
|
@ -0,0 +1,69 @@
|
|||
; RUN: opt %loadPolly %defaultOpts -polly-ast -analyze -S < %s | FileCheck %s
|
||||
; RUN: opt %loadPolly %defaultOpts -polly-codegen-isl -O3 %s
|
||||
|
||||
;#define N 20
|
||||
;#include "limits.h"
|
||||
;long long A[N];
|
||||
;
|
||||
;int main () {
|
||||
; long long i;
|
||||
;
|
||||
; A[0] = 0;
|
||||
;
|
||||
; __sync_synchronize();
|
||||
;
|
||||
; i = 0;
|
||||
;
|
||||
; do {
|
||||
; A[0] = i;
|
||||
; ++i;
|
||||
; } while (i < LLONG_MAX);
|
||||
;
|
||||
; __sync_synchronize();
|
||||
;
|
||||
; if (A[0] == LLONG_MAX - 1)
|
||||
; return 0;
|
||||
; else
|
||||
; return 1;
|
||||
;}
|
||||
|
||||
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"
|
||||
|
||||
@A = common global [20 x i64] zeroinitializer, align 8 ; <[20 x i64]*> [#uses=1]
|
||||
|
||||
define i32 @main() nounwind {
|
||||
entry:
|
||||
store i64 0, i64* getelementptr inbounds ([20 x i64]* @A, i32 0, i32 0)
|
||||
fence seq_cst
|
||||
br label %do.body
|
||||
|
||||
do.body: ; preds = %do.cond, %entry
|
||||
%0 = phi i64 [ 0, %entry ], [ %inc, %do.cond ] ; <i64> [#uses=2]
|
||||
store i64 %0, i64* getelementptr inbounds ([20 x i64]* @A, i32 0, i32 0)
|
||||
%inc = add nsw i64 %0, 1 ; <i64> [#uses=2]
|
||||
br label %do.cond
|
||||
|
||||
do.cond: ; preds = %do.body
|
||||
%exitcond = icmp ne i64 %inc, 9223372036854775807 ; <i1> [#uses=1]
|
||||
br i1 %exitcond, label %do.body, label %do.end
|
||||
|
||||
do.end: ; preds = %do.cond
|
||||
fence seq_cst
|
||||
%tmp3 = load i64* getelementptr inbounds ([20 x i64]* @A, i32 0, i32 0) ; <i64> [#uses=1]
|
||||
%cmp4 = icmp eq i64 %tmp3, 9223372036854775806 ; <i1> [#uses=1]
|
||||
br i1 %cmp4, label %if.then, label %if.else
|
||||
|
||||
if.then: ; preds = %do.end
|
||||
br label %return
|
||||
|
||||
if.else: ; preds = %do.end
|
||||
br label %return
|
||||
|
||||
return: ; preds = %if.else, %if.then
|
||||
%retval.0 = phi i32 [ 0, %if.then ], [ 1, %if.else ] ; <i32> [#uses=1]
|
||||
ret i32 %retval.0
|
||||
}
|
||||
|
||||
; CHECK: for (int c1 = 0; c1 <= 9223372036854775806; c1 += 1)
|
||||
; CHECK: Stmt_do_body(c1);
|
|
@ -0,0 +1,95 @@
|
|||
; RUN: opt %loadPolly %defaultOpts -polly-ast -analyze < %s | FileCheck %s
|
||||
|
||||
;#define N 20
|
||||
;#include "limits.h"
|
||||
;#include <stdio.h>
|
||||
;int A[2 * N];
|
||||
;
|
||||
;void single_do_loop_scev_replace() {
|
||||
; int i;
|
||||
;
|
||||
; __sync_synchronize();
|
||||
;
|
||||
; i = 0;
|
||||
;
|
||||
; do {
|
||||
; A[2 * i] = i;
|
||||
; ++i;
|
||||
; } while (i < N);
|
||||
;
|
||||
; __sync_synchronize();
|
||||
;}
|
||||
;
|
||||
;int main () {
|
||||
; int i;
|
||||
;
|
||||
; single_do_loop_scev_replace();
|
||||
;
|
||||
; fprintf(stdout, "Output %d\n", A[0]);
|
||||
;
|
||||
; if (A[2 * N - 2] == N - 1)
|
||||
; return 0;
|
||||
; else
|
||||
; return 1;
|
||||
;}
|
||||
|
||||
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"
|
||||
|
||||
%struct._IO_FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct._IO_FILE*, i32, i32, i64, i16, i8, [1 x i8], i8*, i64, i8*, i8*, i8*, i8*, i64, i32, [20 x i8] }
|
||||
%struct._IO_marker = type { %struct._IO_marker*, %struct._IO_FILE*, i32 }
|
||||
|
||||
@A = common global [40 x i32] zeroinitializer, align 4 ; <[40 x i32]*> [#uses=3]
|
||||
@stdout = external global %struct._IO_FILE* ; <%struct._IO_FILE**> [#uses=1]
|
||||
@.str = private constant [11 x i8] c"Output %d\0A\00" ; <[11 x i8]*> [#uses=1]
|
||||
|
||||
define void @single_do_loop_scev_replace() nounwind {
|
||||
entry:
|
||||
fence seq_cst
|
||||
br label %do.body
|
||||
|
||||
do.body: ; preds = %do.cond, %entry
|
||||
%indvar = phi i64 [ %indvar.next, %do.cond ], [ 0, %entry ] ; <i64> [#uses=3]
|
||||
%tmp = mul i64 %indvar, 2 ; <i64> [#uses=1]
|
||||
%arrayidx = getelementptr [40 x i32]* @A, i64 0, i64 %tmp ; <i32*> [#uses=1]
|
||||
%i.0 = trunc i64 %indvar to i32 ; <i32> [#uses=1]
|
||||
br label %do.cond
|
||||
|
||||
do.cond: ; preds = %do.body
|
||||
store i32 %i.0, i32* %arrayidx
|
||||
%indvar.next = add i64 %indvar, 1 ; <i64> [#uses=2]
|
||||
%exitcond = icmp ne i64 %indvar.next, 20 ; <i1> [#uses=1]
|
||||
br i1 %exitcond, label %do.body, label %do.end
|
||||
|
||||
do.end: ; preds = %do.cond
|
||||
fence seq_cst
|
||||
ret void
|
||||
}
|
||||
|
||||
define i32 @main() nounwind {
|
||||
entry:
|
||||
call void @single_do_loop_scev_replace()
|
||||
%tmp = load %struct._IO_FILE** @stdout ; <%struct._IO_FILE*> [#uses=1]
|
||||
%tmp1 = load i32* getelementptr inbounds ([40 x i32]* @A, i32 0, i32 0) ; <i32> [#uses=1]
|
||||
%call = call i32 (%struct._IO_FILE*, i8*, ...)* @fprintf(%struct._IO_FILE* %tmp, i8* getelementptr inbounds ([11 x i8]* @.str, i32 0, i32 0), i32 %tmp1) ; <i32> [#uses=0]
|
||||
%tmp2 = load i32* getelementptr inbounds ([40 x i32]* @A, i32 0, i64 38) ; <i32> [#uses=1]
|
||||
%cmp = icmp eq i32 %tmp2, 19 ; <i1> [#uses=1]
|
||||
br i1 %cmp, label %if.then, label %if.else
|
||||
|
||||
if.then: ; preds = %entry
|
||||
br label %return
|
||||
|
||||
if.else: ; preds = %entry
|
||||
br label %return
|
||||
|
||||
return: ; preds = %if.else, %if.then
|
||||
%retval.0 = phi i32 [ 0, %if.then ], [ 1, %if.else ] ; <i32> [#uses=1]
|
||||
ret i32 %retval.0
|
||||
}
|
||||
|
||||
declare i32 @fprintf(%struct._IO_FILE*, i8*, ...)
|
||||
|
||||
; CHECK: for (int c1 = 0; c1 <= 19; c1 += 1)
|
||||
; CHECK: Stmt_do_cond(c1);
|
||||
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
; RUN: opt %loadPolly %defaultOpts -polly-ast -analyze < %s | FileCheck %s
|
||||
|
||||
;#include <string.h>
|
||||
;#define N 1024
|
||||
;
|
||||
;int main () {
|
||||
; int i;
|
||||
; int A[N];
|
||||
;
|
||||
; memset(A, 0, sizeof(int) * N);
|
||||
;
|
||||
; for (i = 0; i < N; i++) {
|
||||
; A[i] = 1;
|
||||
; }
|
||||
;
|
||||
; for (i = 0; i < N; i++)
|
||||
; if (A[i] != 1)
|
||||
; return 1;
|
||||
;
|
||||
; return 0;
|
||||
;}
|
||||
;
|
||||
|
||||
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"
|
||||
|
||||
define i32 @main() nounwind {
|
||||
entry:
|
||||
%A = alloca [1024 x i32], align 4 ; <[1024 x i32]*> [#uses=3]
|
||||
%arraydecay = getelementptr inbounds [1024 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
|
||||
%conv = bitcast i32* %arraydecay to i8* ; <i8*> [#uses=1]
|
||||
call void @llvm.memset.p0i8.i64(i8* %conv, i8 0, i64 4096, i32 1, i1 false)
|
||||
br label %for.cond
|
||||
|
||||
for.cond: ; preds = %for.inc, %entry
|
||||
%indvar1 = phi i64 [ %indvar.next2, %for.inc ], [ 0, %entry ] ; <i64> [#uses=3]
|
||||
%arrayidx = getelementptr [1024 x i32]* %A, i64 0, i64 %indvar1 ; <i32*> [#uses=1]
|
||||
%exitcond = icmp ne i64 %indvar1, 1024 ; <i1> [#uses=1]
|
||||
br i1 %exitcond, label %for.body, label %for.end
|
||||
|
||||
for.body: ; preds = %for.cond
|
||||
store i32 1, i32* %arrayidx
|
||||
br label %for.inc
|
||||
|
||||
for.inc: ; preds = %for.body
|
||||
%indvar.next2 = add i64 %indvar1, 1 ; <i64> [#uses=1]
|
||||
br label %for.cond
|
||||
|
||||
for.end: ; preds = %for.cond
|
||||
br label %for.cond5
|
||||
|
||||
for.cond5: ; preds = %for.inc17, %for.end
|
||||
%indvar = phi i64 [ %indvar.next, %for.inc17 ], [ 0, %for.end ] ; <i64> [#uses=3]
|
||||
%arrayidx13 = getelementptr [1024 x i32]* %A, i64 0, i64 %indvar ; <i32*> [#uses=1]
|
||||
%i.1 = trunc i64 %indvar to i32 ; <i32> [#uses=1]
|
||||
%cmp7 = icmp slt i32 %i.1, 1024 ; <i1> [#uses=1]
|
||||
br i1 %cmp7, label %for.body9, label %for.end20
|
||||
|
||||
for.body9: ; preds = %for.cond5
|
||||
%tmp14 = load i32* %arrayidx13 ; <i32> [#uses=1]
|
||||
%cmp15 = icmp ne i32 %tmp14, 1 ; <i1> [#uses=1]
|
||||
br i1 %cmp15, label %if.then, label %if.end
|
||||
|
||||
if.then: ; preds = %for.body9
|
||||
br label %return
|
||||
|
||||
if.end: ; preds = %for.body9
|
||||
br label %for.inc17
|
||||
|
||||
for.inc17: ; preds = %if.end
|
||||
%indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
|
||||
br label %for.cond5
|
||||
|
||||
for.end20: ; preds = %for.cond5
|
||||
br label %return
|
||||
|
||||
return: ; preds = %for.end20, %if.then
|
||||
%retval.0 = phi i32 [ 1, %if.then ], [ 0, %for.end20 ] ; <i32> [#uses=1]
|
||||
ret i32 %retval.0
|
||||
}
|
||||
|
||||
declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) nounwind
|
||||
|
||||
; CHECK: for (int c1 = 0; c1 <= 1023; c1 += 1)
|
||||
; CHECK: Stmt_for_body(c1);
|
|
@ -0,0 +1,72 @@
|
|||
; RUN: opt %loadPolly %defaultOpts -polly-ast -analyze -S < %s | FileCheck %s
|
||||
|
||||
;#define N 20
|
||||
;#include "limits.h"
|
||||
;
|
||||
;int main () {
|
||||
; int i;
|
||||
; int A[N];
|
||||
;
|
||||
; A[0] = 0;
|
||||
;
|
||||
; __sync_synchronize();
|
||||
;
|
||||
; for (i = 0; i < INT_MAX; i++)
|
||||
; A[0] = i;
|
||||
;
|
||||
; __sync_synchronize();
|
||||
;
|
||||
; if (A[0] == INT_MAX - 1)
|
||||
; return 0;
|
||||
; else
|
||||
; return 1;
|
||||
;}
|
||||
|
||||
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"
|
||||
|
||||
define i32 @main() nounwind {
|
||||
entry:
|
||||
%A = alloca [20 x i32], align 4 ; <[20 x i32]*> [#uses=3]
|
||||
%arraydecay = getelementptr inbounds [20 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
|
||||
%arrayidx = getelementptr inbounds i32* %arraydecay, i64 0 ; <i32*> [#uses=1]
|
||||
store i32 0, i32* %arrayidx
|
||||
fence seq_cst
|
||||
br label %for.cond
|
||||
|
||||
for.cond: ; preds = %for.inc, %entry
|
||||
%0 = phi i32 [ 0, %entry ], [ %inc, %for.inc ] ; <i32> [#uses=3]
|
||||
%exitcond = icmp ne i32 %0, 2147483647 ; <i1> [#uses=1]
|
||||
br i1 %exitcond, label %for.body, label %for.end
|
||||
|
||||
for.body: ; preds = %for.cond
|
||||
%arraydecay2 = getelementptr inbounds [20 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
|
||||
%arrayidx3 = getelementptr inbounds i32* %arraydecay2, i64 0 ; <i32*> [#uses=1]
|
||||
store i32 %0, i32* %arrayidx3
|
||||
br label %for.inc
|
||||
|
||||
for.inc: ; preds = %for.body
|
||||
%inc = add nsw i32 %0, 1 ; <i32> [#uses=1]
|
||||
br label %for.cond
|
||||
|
||||
for.end: ; preds = %for.cond
|
||||
fence seq_cst
|
||||
%arraydecay5 = getelementptr inbounds [20 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
|
||||
%arrayidx6 = getelementptr inbounds i32* %arraydecay5, i64 0 ; <i32*> [#uses=1]
|
||||
%tmp7 = load i32* %arrayidx6 ; <i32> [#uses=1]
|
||||
%cmp8 = icmp eq i32 %tmp7, 2147483646 ; <i1> [#uses=1]
|
||||
br i1 %cmp8, label %if.then, label %if.else
|
||||
|
||||
if.then: ; preds = %for.end
|
||||
br label %return
|
||||
|
||||
if.else: ; preds = %for.end
|
||||
br label %return
|
||||
|
||||
return: ; preds = %if.else, %if.then
|
||||
%retval.0 = phi i32 [ 0, %if.then ], [ 1, %if.else ] ; <i32> [#uses=1]
|
||||
ret i32 %retval.0
|
||||
}
|
||||
|
||||
; CHECK: for (int c1 = 0; c1 <= 2147483646; c1 += 1)
|
||||
; CHECK: Stmt_for_body(c1);
|
|
@ -0,0 +1,72 @@
|
|||
; RUN: opt %loadPolly %defaultOpts -polly-ast -analyze -S < %s | FileCheck %s
|
||||
|
||||
;#include "limits.h"
|
||||
;#define N 20
|
||||
;
|
||||
;int main () {
|
||||
; long long i;
|
||||
; long long A[N];
|
||||
;
|
||||
; A[0] = 0;
|
||||
;
|
||||
; __sync_synchronize();
|
||||
;
|
||||
; for (i = 0; i < LLONG_MAX; i++)
|
||||
; A[0] = i;
|
||||
;
|
||||
; __sync_synchronize();
|
||||
;
|
||||
; if (A[0] == LLONG_MAX - 1)
|
||||
; return 0;
|
||||
; else
|
||||
; return 1;
|
||||
;}
|
||||
|
||||
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"
|
||||
|
||||
define i32 @main() nounwind {
|
||||
entry:
|
||||
%A = alloca [20 x i64], align 8 ; <[20 x i64]*> [#uses=3]
|
||||
%arraydecay = getelementptr inbounds [20 x i64]* %A, i32 0, i32 0 ; <i64*> [#uses=1]
|
||||
%arrayidx = getelementptr inbounds i64* %arraydecay, i64 0 ; <i64*> [#uses=1]
|
||||
store i64 0, i64* %arrayidx
|
||||
fence seq_cst
|
||||
br label %for.cond
|
||||
|
||||
for.cond: ; preds = %for.inc, %entry
|
||||
%0 = phi i64 [ 0, %entry ], [ %inc, %for.inc ] ; <i64> [#uses=3]
|
||||
%exitcond = icmp ne i64 %0, 9223372036854775807 ; <i1> [#uses=1]
|
||||
br i1 %exitcond, label %for.body, label %for.end
|
||||
|
||||
for.body: ; preds = %for.cond
|
||||
%arraydecay2 = getelementptr inbounds [20 x i64]* %A, i32 0, i32 0 ; <i64*> [#uses=1]
|
||||
%arrayidx3 = getelementptr inbounds i64* %arraydecay2, i64 0 ; <i64*> [#uses=1]
|
||||
store i64 %0, i64* %arrayidx3
|
||||
br label %for.inc
|
||||
|
||||
for.inc: ; preds = %for.body
|
||||
%inc = add nsw i64 %0, 1 ; <i64> [#uses=1]
|
||||
br label %for.cond
|
||||
|
||||
for.end: ; preds = %for.cond
|
||||
fence seq_cst
|
||||
%arraydecay5 = getelementptr inbounds [20 x i64]* %A, i32 0, i32 0 ; <i64*> [#uses=1]
|
||||
%arrayidx6 = getelementptr inbounds i64* %arraydecay5, i64 0 ; <i64*> [#uses=1]
|
||||
%tmp7 = load i64* %arrayidx6 ; <i64> [#uses=1]
|
||||
%cmp8 = icmp eq i64 %tmp7, 9223372036854775806 ; <i1> [#uses=1]
|
||||
br i1 %cmp8, label %if.then, label %if.else
|
||||
|
||||
if.then: ; preds = %for.end
|
||||
br label %return
|
||||
|
||||
if.else: ; preds = %for.end
|
||||
br label %return
|
||||
|
||||
return: ; preds = %if.else, %if.then
|
||||
%retval.0 = phi i32 [ 0, %if.then ], [ 1, %if.else ] ; <i32> [#uses=1]
|
||||
ret i32 %retval.0
|
||||
}
|
||||
|
||||
; CHECK: for (int c1 = 0; c1 <= 9223372036854775806; c1 += 1)
|
||||
; CHECK: Stmt_for_body(c1);
|
|
@ -0,0 +1,69 @@
|
|||
; RUN: opt %loadPolly %defaultOpts -polly-ast -analyze < %s | FileCheck %s
|
||||
|
||||
;#define N 20
|
||||
;
|
||||
;int main () {
|
||||
; int i;
|
||||
; int A[N];
|
||||
;
|
||||
; A[0] = 0;
|
||||
;
|
||||
; __sync_synchronize();
|
||||
;
|
||||
; for (i = 0; i < 1; i++)
|
||||
; A[i] = 1;
|
||||
;
|
||||
; __sync_synchronize();
|
||||
;
|
||||
; if (A[0] == 1)
|
||||
; return 0;
|
||||
; else
|
||||
; return 1;
|
||||
;}
|
||||
|
||||
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"
|
||||
|
||||
define i32 @main() nounwind {
|
||||
entry:
|
||||
%A = alloca [20 x i32], align 4 ; <[20 x i32]*> [#uses=3]
|
||||
%arraydecay = getelementptr inbounds [20 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
|
||||
%arrayidx = getelementptr inbounds i32* %arraydecay, i64 0 ; <i32*> [#uses=1]
|
||||
store i32 0, i32* %arrayidx
|
||||
fence seq_cst
|
||||
br label %for.cond
|
||||
|
||||
for.cond: ; preds = %for.inc, %entry
|
||||
%indvar = phi i64 [ %indvar.next, %for.inc ], [ 0, %entry ] ; <i64> [#uses=3]
|
||||
%arrayidx3 = getelementptr [20 x i32]* %A, i64 0, i64 %indvar ; <i32*> [#uses=1]
|
||||
%exitcond = icmp ne i64 %indvar, 1 ; <i1> [#uses=1]
|
||||
br i1 %exitcond, label %for.body, label %for.end
|
||||
|
||||
for.body: ; preds = %for.cond
|
||||
store i32 1, i32* %arrayidx3
|
||||
br label %for.inc
|
||||
|
||||
for.inc: ; preds = %for.body
|
||||
%indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
|
||||
br label %for.cond
|
||||
|
||||
for.end: ; preds = %for.cond
|
||||
fence seq_cst
|
||||
%arraydecay5 = getelementptr inbounds [20 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
|
||||
%arrayidx6 = getelementptr inbounds i32* %arraydecay5, i64 0 ; <i32*> [#uses=1]
|
||||
%tmp7 = load i32* %arrayidx6 ; <i32> [#uses=1]
|
||||
%cmp8 = icmp eq i32 %tmp7, 1 ; <i1> [#uses=1]
|
||||
br i1 %cmp8, label %if.then, label %if.else
|
||||
|
||||
if.then: ; preds = %for.end
|
||||
br label %return
|
||||
|
||||
if.else: ; preds = %for.end
|
||||
br label %return
|
||||
|
||||
return: ; preds = %if.else, %if.then
|
||||
%retval.0 = phi i32 [ 0, %if.then ], [ 1, %if.else ] ; <i32> [#uses=1]
|
||||
ret i32 %retval.0
|
||||
}
|
||||
|
||||
; CHECK: Stmt_for_body(0);
|
|
@ -0,0 +1,71 @@
|
|||
; RUN: opt %loadPolly %defaultOpts -polly-ast -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"
|
||||
target triple = "x86_64-pc-linux-gnu"
|
||||
|
||||
@A = common global [1024 x i32] zeroinitializer, align 16 ; <[1024 x i32]*> [#uses=3]
|
||||
|
||||
define void @bar(i64 %n) nounwind {
|
||||
bb:
|
||||
fence seq_cst
|
||||
br label %bb1
|
||||
|
||||
bb1: ; preds = %bb3, %bb
|
||||
%i.0 = phi i64 [ 0, %bb ], [ %tmp, %bb3 ] ; <i64> [#uses=3]
|
||||
%scevgep = getelementptr [1024 x i32]* @A, i64 0, i64 %i.0 ; <i32*> [#uses=1]
|
||||
%exitcond = icmp ne i64 %i.0, %n ; <i1> [#uses=1]
|
||||
br i1 %exitcond, label %bb2, label %bb4
|
||||
|
||||
bb2: ; preds = %bb1
|
||||
store i32 1, i32* %scevgep
|
||||
br label %bb3
|
||||
|
||||
bb3: ; preds = %bb2
|
||||
%tmp = add nsw i64 %i.0, 1 ; <i64> [#uses=1]
|
||||
br label %bb1
|
||||
|
||||
bb4: ; preds = %bb1
|
||||
fence seq_cst
|
||||
ret void
|
||||
}
|
||||
|
||||
define i32 @main() nounwind {
|
||||
bb:
|
||||
call void @llvm.memset.p0i8.i64(i8* bitcast ([1024 x i32]* @A to i8*), i8 0, i64 4096, i32 1, i1 false)
|
||||
call void @bar(i64 1024)
|
||||
br label %bb1
|
||||
|
||||
bb1: ; preds = %bb7, %bb
|
||||
%indvar = phi i64 [ %indvar.next, %bb7 ], [ 0, %bb ] ; <i64> [#uses=3]
|
||||
%scevgep = getelementptr [1024 x i32]* @A, i64 0, i64 %indvar ; <i32*> [#uses=1]
|
||||
%i.0 = trunc i64 %indvar to i32 ; <i32> [#uses=1]
|
||||
%tmp = icmp slt i32 %i.0, 1024 ; <i1> [#uses=1]
|
||||
br i1 %tmp, label %bb2, label %bb8
|
||||
|
||||
bb2: ; preds = %bb1
|
||||
%tmp3 = load i32* %scevgep ; <i32> [#uses=1]
|
||||
%tmp4 = icmp ne i32 %tmp3, 1 ; <i1> [#uses=1]
|
||||
br i1 %tmp4, label %bb5, label %bb6
|
||||
|
||||
bb5: ; preds = %bb2
|
||||
br label %bb9
|
||||
|
||||
bb6: ; preds = %bb2
|
||||
br label %bb7
|
||||
|
||||
bb7: ; preds = %bb6
|
||||
%indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
|
||||
br label %bb1
|
||||
|
||||
bb8: ; preds = %bb1
|
||||
br label %bb9
|
||||
|
||||
bb9: ; preds = %bb8, %bb5
|
||||
%.0 = phi i32 [ 1, %bb5 ], [ 0, %bb8 ] ; <i32> [#uses=1]
|
||||
ret i32 %.0
|
||||
}
|
||||
|
||||
declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) nounwind
|
||||
|
||||
; CHECK: for (int c1 = 0; c1 < n; c1 += 1)
|
||||
; CHECK: Stmt_bb2(c1);
|
||||
|
|
@ -0,0 +1,70 @@
|
|||
; RUN: opt %loadPolly %defaultOpts -polly-ast -analyze -S < %s | FileCheck %s
|
||||
|
||||
;#define N 20
|
||||
;
|
||||
;int main () {
|
||||
; int i;
|
||||
; int A[N];
|
||||
;
|
||||
; A[0] = 0;
|
||||
;
|
||||
; __sync_synchronize();
|
||||
;
|
||||
; for (i = 0; i < 0; i++)
|
||||
; A[i] = 1;
|
||||
;
|
||||
; __sync_synchronize();
|
||||
;
|
||||
; if (A[0] == 0)
|
||||
; return 0;
|
||||
; else
|
||||
; return 1;
|
||||
;}
|
||||
|
||||
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"
|
||||
|
||||
define i32 @main() nounwind {
|
||||
entry:
|
||||
%A = alloca [20 x i32], align 4 ; <[20 x i32]*> [#uses=3]
|
||||
%arraydecay = getelementptr inbounds [20 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
|
||||
%arrayidx = getelementptr inbounds i32* %arraydecay, i64 0 ; <i32*> [#uses=1]
|
||||
store i32 0, i32* %arrayidx
|
||||
fence seq_cst
|
||||
br label %for.cond
|
||||
|
||||
for.cond: ; preds = %for.inc, %entry
|
||||
%indvar = phi i64 [ %indvar.next, %for.inc ], [ 0, %entry ] ; <i64> [#uses=2]
|
||||
%arrayidx3 = getelementptr [20 x i32]* %A, i64 0, i64 %indvar ; <i32*> [#uses=1]
|
||||
br i1 false, label %for.body, label %for.end
|
||||
|
||||
for.body: ; preds = %for.cond
|
||||
store i32 1, i32* %arrayidx3
|
||||
br label %for.inc
|
||||
|
||||
for.inc: ; preds = %for.body
|
||||
%indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1]
|
||||
br label %for.cond
|
||||
|
||||
for.end: ; preds = %for.cond
|
||||
fence seq_cst
|
||||
%arraydecay5 = getelementptr inbounds [20 x i32]* %A, i32 0, i32 0 ; <i32*> [#uses=1]
|
||||
%arrayidx6 = getelementptr inbounds i32* %arraydecay5, i64 0 ; <i32*> [#uses=1]
|
||||
%tmp7 = load i32* %arrayidx6 ; <i32> [#uses=1]
|
||||
%cmp8 = icmp eq i32 %tmp7, 0 ; <i1> [#uses=1]
|
||||
br i1 %cmp8, label %if.then, label %if.else
|
||||
|
||||
if.then: ; preds = %for.end
|
||||
br label %return
|
||||
|
||||
if.else: ; preds = %for.end
|
||||
br label %return
|
||||
|
||||
return: ; preds = %if.else, %if.then
|
||||
%retval.0 = phi i32 [ 0, %if.then ], [ 1, %if.else ] ; <i32> [#uses=1]
|
||||
ret i32 %retval.0
|
||||
}
|
||||
|
||||
; CHECK: for region: 'for.cond => for.end.region' in function 'main':
|
||||
; CHECK-NEXT: main():
|
||||
; CHECK-NEXT: Stmt_for_body(0);
|
|
@ -0,0 +1,34 @@
|
|||
; RUN: opt %loadPolly -polly-codegen-isl -verify-region-info -verify-dom-info -S < %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"
|
||||
target triple = "x86_64-pc-linux-gnu"
|
||||
|
||||
define void @loop_with_condition() nounwind {
|
||||
bb0:
|
||||
fence seq_cst
|
||||
br label %bb1
|
||||
|
||||
bb1:
|
||||
br i1 true, label %bb2, label %bb3
|
||||
|
||||
bb2:
|
||||
%ind1 = phi i32 [0, %bb1], [ %inc1, %bb2]
|
||||
%inc1 = add i32 %ind1, 1
|
||||
%cond1 = icmp eq i32 %ind1, 32
|
||||
br i1 %cond1, label %bb4, label %bb2
|
||||
|
||||
bb3:
|
||||
%ind2 = phi i32 [0, %bb1], [ %inc2, %bb3]
|
||||
%inc2 = add i32 %ind2, 1
|
||||
br i1 true, label %bb4, label %bb3
|
||||
|
||||
bb4:
|
||||
br label %bb5
|
||||
|
||||
bb5:
|
||||
fence seq_cst
|
||||
ret void
|
||||
|
||||
}
|
||||
|
||||
; CHECK: polly.split_new_and_old
|
||||
; CHECK: polly.merge_new_and_old
|
|
@ -0,0 +1,33 @@
|
|||
; RUN: opt %loadPolly -polly-codegen-isl -verify-region-info -verify-dom-info -S < %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"
|
||||
target triple = "x86_64-pc-linux-gnu"
|
||||
|
||||
define void @loop_with_condition() nounwind {
|
||||
bb0:
|
||||
fence seq_cst
|
||||
br label %bb1
|
||||
|
||||
bb1:
|
||||
br label %bb2
|
||||
|
||||
bb2:
|
||||
%ind1 = phi i32 [0, %bb1], [ %inc1, %bb2]
|
||||
%inc1 = add i32 %ind1, 1
|
||||
%cond1 = icmp eq i32 %ind1, 32
|
||||
br i1 %cond1, label %bb4, label %bb2
|
||||
|
||||
bb4:
|
||||
br label %bb5
|
||||
|
||||
bb5:
|
||||
fence seq_cst
|
||||
ret void
|
||||
|
||||
}
|
||||
|
||||
; CHECK: polly.split_new_and_old
|
||||
; CHECK: polly.merge_new_and_old
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue