annotate polly/test/ScopDetect/intrinsics_3.ll @ 236:c4bab56944e8 llvm-original

LLVM 16
author kono
date Wed, 09 Nov 2022 17:45:10 +0900
parents 79ff65ed7e25
children 1f2b6ac9f198
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
236
c4bab56944e8 LLVM 16
kono
parents: 221
diff changeset
1 ; RUN: opt %loadPolly -basic-aa -polly-print-detect -disable-output < %s | FileCheck %s
150
anatofuz
parents:
diff changeset
2 ;
anatofuz
parents:
diff changeset
3 ; Verify that we allow the misc intrinsics.
anatofuz
parents:
diff changeset
4 ;
anatofuz
parents:
diff changeset
5 ; CHECK: Valid Region for Scop: for.cond => for.end13
anatofuz
parents:
diff changeset
6 ;
anatofuz
parents:
diff changeset
7 ; int A[1024];
anatofuz
parents:
diff changeset
8 ; void jd() {
anatofuz
parents:
diff changeset
9 ; for (int i = 0; i < 1024; i++) {
anatofuz
parents:
diff changeset
10 ; int tmp[1024];
anatofuz
parents:
diff changeset
11 ; for (int j = i; j < 1024; j++)
anatofuz
parents:
diff changeset
12 ; tmp[i] += A[j];
anatofuz
parents:
diff changeset
13 ; A[i] = tmp[i];
anatofuz
parents:
diff changeset
14 ; }
anatofuz
parents:
diff changeset
15 ; }
anatofuz
parents:
diff changeset
16 ;
anatofuz
parents:
diff changeset
17 ; ModuleID = 'test/Isl/CodeGen/lifetime_intrinsics.ll'
anatofuz
parents:
diff changeset
18 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
anatofuz
parents:
diff changeset
19
anatofuz
parents:
diff changeset
20 @A = common global [1024 x i32] zeroinitializer, align 16
anatofuz
parents:
diff changeset
21
anatofuz
parents:
diff changeset
22 ; Function Attrs: nounwind uwtable
anatofuz
parents:
diff changeset
23 define void @jd() #0 {
anatofuz
parents:
diff changeset
24 entry:
anatofuz
parents:
diff changeset
25 %tmp = alloca [1024 x i32], align 16
anatofuz
parents:
diff changeset
26 %tmp3 = bitcast [1024 x i32]* @A to i8*
anatofuz
parents:
diff changeset
27 br label %for.cond
anatofuz
parents:
diff changeset
28
anatofuz
parents:
diff changeset
29 for.cond: ; preds = %for.inc11, %entry
anatofuz
parents:
diff changeset
30 %indvars.iv3 = phi i64 [ %indvars.iv.next4, %for.inc11 ], [ 0, %entry ]
anatofuz
parents:
diff changeset
31 %exitcond5 = icmp ne i64 %indvars.iv3, 1024
anatofuz
parents:
diff changeset
32 br i1 %exitcond5, label %for.body, label %for.end13
anatofuz
parents:
diff changeset
33
anatofuz
parents:
diff changeset
34 for.body: ; preds = %for.cond
anatofuz
parents:
diff changeset
35 %lis = call {}* @llvm.invariant.start(i64 4096, i8* %tmp3) #1
anatofuz
parents:
diff changeset
36 br label %for.cond2
anatofuz
parents:
diff changeset
37
anatofuz
parents:
diff changeset
38 for.cond2: ; preds = %for.inc, %for.body
anatofuz
parents:
diff changeset
39 %indvars.iv1 = phi i64 [ %indvars.iv.next2, %for.inc ], [ %indvars.iv3, %for.body ]
anatofuz
parents:
diff changeset
40 %lftr.wideiv = trunc i64 %indvars.iv1 to i32
anatofuz
parents:
diff changeset
41 %exitcond = icmp ne i32 %lftr.wideiv, 1024
anatofuz
parents:
diff changeset
42 br i1 %exitcond, label %for.body4, label %for.end
anatofuz
parents:
diff changeset
43
anatofuz
parents:
diff changeset
44 for.body4: ; preds = %for.cond2
anatofuz
parents:
diff changeset
45 call void @llvm.assume(i1 %exitcond)
anatofuz
parents:
diff changeset
46 call i1 @llvm.expect.i1(i1 %exitcond, i1 1)
anatofuz
parents:
diff changeset
47 %arrayidx = getelementptr inbounds [1024 x i32], [1024 x i32]* @A, i64 0, i64 %indvars.iv1
anatofuz
parents:
diff changeset
48 %tmp6 = load i32, i32* %arrayidx, align 4
anatofuz
parents:
diff changeset
49 %arrayidx6 = getelementptr inbounds [1024 x i32], [1024 x i32]* %tmp, i64 0, i64 %indvars.iv3
anatofuz
parents:
diff changeset
50 call void @llvm.donothing()
anatofuz
parents:
diff changeset
51 %tmp7 = load i32, i32* %arrayidx6, align 4
anatofuz
parents:
diff changeset
52 %add = add nsw i32 %tmp7, %tmp6
anatofuz
parents:
diff changeset
53 store i32 %add, i32* %arrayidx6, align 4
anatofuz
parents:
diff changeset
54 br label %for.inc
anatofuz
parents:
diff changeset
55
anatofuz
parents:
diff changeset
56 for.inc: ; preds = %for.body4
anatofuz
parents:
diff changeset
57 %indvars.iv.next2 = add nuw nsw i64 %indvars.iv1, 1
anatofuz
parents:
diff changeset
58 br label %for.cond2
anatofuz
parents:
diff changeset
59
anatofuz
parents:
diff changeset
60 for.end: ; preds = %for.cond2
anatofuz
parents:
diff changeset
61 %arrayidx8 = getelementptr inbounds [1024 x i32], [1024 x i32]* %tmp, i64 0, i64 %indvars.iv3
anatofuz
parents:
diff changeset
62 %tmp8 = load i32, i32* %arrayidx8, align 4
anatofuz
parents:
diff changeset
63 %arrayidx10 = getelementptr inbounds [1024 x i32], [1024 x i32]* @A, i64 0, i64 %indvars.iv3
anatofuz
parents:
diff changeset
64 call void @llvm.invariant.end({}* %lis, i64 4096, i8* %tmp3) #1
anatofuz
parents:
diff changeset
65 store i32 %tmp8, i32* %arrayidx10, align 4
anatofuz
parents:
diff changeset
66 br label %for.inc11
anatofuz
parents:
diff changeset
67
anatofuz
parents:
diff changeset
68 for.inc11: ; preds = %for.end
anatofuz
parents:
diff changeset
69 %indvars.iv.next4 = add nuw nsw i64 %indvars.iv3, 1
anatofuz
parents:
diff changeset
70 br label %for.cond
anatofuz
parents:
diff changeset
71
anatofuz
parents:
diff changeset
72 for.end13: ; preds = %for.cond
anatofuz
parents:
diff changeset
73 ret void
anatofuz
parents:
diff changeset
74 }
anatofuz
parents:
diff changeset
75
anatofuz
parents:
diff changeset
76 ; Function Attrs: nounwind
anatofuz
parents:
diff changeset
77 declare void @llvm.donothing() #1
anatofuz
parents:
diff changeset
78
anatofuz
parents:
diff changeset
79 ; Function Attrs: nounwind
anatofuz
parents:
diff changeset
80 declare void @llvm.assume(i1) #1
anatofuz
parents:
diff changeset
81
anatofuz
parents:
diff changeset
82 ; Function Attrs: nounwind
anatofuz
parents:
diff changeset
83 declare i1 @llvm.expect.i1(i1, i1) #1
anatofuz
parents:
diff changeset
84
anatofuz
parents:
diff changeset
85 ; Function Attrs: nounwind
anatofuz
parents:
diff changeset
86 declare {}* @llvm.invariant.start(i64, i8* nocapture) #1
anatofuz
parents:
diff changeset
87
anatofuz
parents:
diff changeset
88 ; Function Attrs: nounwind
anatofuz
parents:
diff changeset
89 declare void @llvm.invariant.end({}*, i64, i8* nocapture) #1
anatofuz
parents:
diff changeset
90
anatofuz
parents:
diff changeset
91 attributes #0 = { nounwind uwtable "less-precise-fpmad"="false" "frame-pointer"="all" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "stack-protector-buffer-size"="8" "unsafe-fp-math"="true" "use-soft-float"="false" }
anatofuz
parents:
diff changeset
92 attributes #1 = { nounwind }