annotate llvm/test/Transforms/LoopDistribute/followup.ll @ 252:1f2b6ac9f198 llvm-original

LLVM16-1
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 18 Aug 2023 09:04:13 +0900
parents c4bab56944e8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
1 ; RUN: opt -passes=loop-distribute -S < %s | FileCheck %s
150
anatofuz
parents:
diff changeset
2 ;
anatofuz
parents:
diff changeset
3 ; Check that followup loop-attributes are applied to the loops after
anatofuz
parents:
diff changeset
4 ; loop distribution.
anatofuz
parents:
diff changeset
5 ;
anatofuz
parents:
diff changeset
6 target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
anatofuz
parents:
diff changeset
7
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
8 define void @f(ptr %a, ptr %b, ptr %c, ptr %d, ptr %e) {
150
anatofuz
parents:
diff changeset
9 entry:
anatofuz
parents:
diff changeset
10 br label %for.body
anatofuz
parents:
diff changeset
11
anatofuz
parents:
diff changeset
12 for.body:
anatofuz
parents:
diff changeset
13 %ind = phi i64 [ 0, %entry ], [ %add, %for.body ]
anatofuz
parents:
diff changeset
14
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
15 %arrayidxA = getelementptr inbounds i32, ptr %a, i64 %ind
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
16 %loadA = load i32, ptr %arrayidxA, align 4
150
anatofuz
parents:
diff changeset
17
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
18 %arrayidxB = getelementptr inbounds i32, ptr %b, i64 %ind
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
19 %loadB = load i32, ptr %arrayidxB, align 4
150
anatofuz
parents:
diff changeset
20
anatofuz
parents:
diff changeset
21 %mulA = mul i32 %loadB, %loadA
anatofuz
parents:
diff changeset
22
anatofuz
parents:
diff changeset
23 %add = add nuw nsw i64 %ind, 1
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
24 %arrayidxA_plus_4 = getelementptr inbounds i32, ptr %a, i64 %add
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
25 store i32 %mulA, ptr %arrayidxA_plus_4, align 4
150
anatofuz
parents:
diff changeset
26
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
27 %arrayidxD = getelementptr inbounds i32, ptr %d, i64 %ind
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
28 %loadD = load i32, ptr %arrayidxD, align 4
150
anatofuz
parents:
diff changeset
29
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
30 %arrayidxE = getelementptr inbounds i32, ptr %e, i64 %ind
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
31 %loadE = load i32, ptr %arrayidxE, align 4
150
anatofuz
parents:
diff changeset
32
anatofuz
parents:
diff changeset
33 %mulC = mul i32 %loadD, %loadE
anatofuz
parents:
diff changeset
34
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
35 %arrayidxC = getelementptr inbounds i32, ptr %c, i64 %ind
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
36 store i32 %mulC, ptr %arrayidxC, align 4
150
anatofuz
parents:
diff changeset
37
anatofuz
parents:
diff changeset
38 %exitcond = icmp eq i64 %add, 20
anatofuz
parents:
diff changeset
39 br i1 %exitcond, label %for.end, label %for.body, !llvm.loop !0
anatofuz
parents:
diff changeset
40
anatofuz
parents:
diff changeset
41 for.end:
anatofuz
parents:
diff changeset
42 ret void
anatofuz
parents:
diff changeset
43 }
anatofuz
parents:
diff changeset
44
anatofuz
parents:
diff changeset
45 !0 = distinct !{!0, !1, !2, !3, !4, !5}
anatofuz
parents:
diff changeset
46 !1 = !{!"llvm.loop.distribute.enable", i1 true}
anatofuz
parents:
diff changeset
47 !2 = !{!"llvm.loop.distribute.followup_all", !{!"FollowupAll"}}
anatofuz
parents:
diff changeset
48 !3 = !{!"llvm.loop.distribute.followup_coincident", !{!"FollowupCoincident", i1 false}}
anatofuz
parents:
diff changeset
49 !4 = !{!"llvm.loop.distribute.followup_sequential", !{!"FollowupSequential", i32 8}}
anatofuz
parents:
diff changeset
50 !5 = !{!"llvm.loop.distribute.followup_fallback", !{!"FollowupFallback"}}
anatofuz
parents:
diff changeset
51
anatofuz
parents:
diff changeset
52
anatofuz
parents:
diff changeset
53 ; CHECK-LABEL: for.body.lver.orig:
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
54 ; CHECK: br i1 %exitcond.lver.orig, label %for.end.loopexit, label %for.body.lver.orig, !llvm.loop ![[LOOP_ORIG:[0-9]+]]
150
anatofuz
parents:
diff changeset
55 ; CHECK-LABEL: for.body.ldist1:
anatofuz
parents:
diff changeset
56 ; CHECK: br i1 %exitcond.ldist1, label %for.body.ph, label %for.body.ldist1, !llvm.loop ![[LOOP_SEQUENTIAL:[0-9]+]]
anatofuz
parents:
diff changeset
57 ; CHECK-LABEL: for.body:
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
58 ; CHECK: br i1 %exitcond, label %for.end.loopexit16, label %for.body, !llvm.loop ![[LOOP_COINCIDENT:[0-9]+]]
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
59 ; CHECK-LABEL: for.end.loopexit:
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
60 ; CHECK: br label %for.end
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
61 ; CHECK-LABEL: for.end.loopexit16:
221
79ff65ed7e25 LLVM12 Original
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
62 ; CHECK: br label %for.end
150
anatofuz
parents:
diff changeset
63
anatofuz
parents:
diff changeset
64 ; CHECK: ![[LOOP_ORIG]] = distinct !{![[LOOP_ORIG]], ![[FOLLOWUP_ALL:[0-9]+]], ![[FOLLOUP_FALLBACK:[0-9]+]]}
anatofuz
parents:
diff changeset
65 ; CHECK: ![[FOLLOWUP_ALL]] = !{!"FollowupAll"}
anatofuz
parents:
diff changeset
66 ; CHECK: ![[FOLLOUP_FALLBACK]] = !{!"FollowupFallback"}
anatofuz
parents:
diff changeset
67 ; CHECK: ![[LOOP_SEQUENTIAL]] = distinct !{![[LOOP_SEQUENTIAL]], ![[FOLLOWUP_ALL]], ![[FOLLOWUP_SEQUENTIAL:[0-9]+]]}
anatofuz
parents:
diff changeset
68 ; CHECK: ![[FOLLOWUP_SEQUENTIAL]] = !{!"FollowupSequential", i32 8}
anatofuz
parents:
diff changeset
69 ; CHECK: ![[LOOP_COINCIDENT]] = distinct !{![[LOOP_COINCIDENT]], ![[FOLLOWUP_ALL]], ![[FOLLOWUP_COINCIDENT:[0-9]+]]}
anatofuz
parents:
diff changeset
70 ; CHECK: ![[FOLLOWUP_COINCIDENT]] = !{!"FollowupCoincident", i1 false}