annotate polly/test/ScopInfo/invariant_load_zext_parameter-2.ll @ 266:00f31e85ec16 default tip

Added tag current for changeset 31d058e83c98
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 14 Oct 2023 10:13:55 +0900
parents 1f2b6ac9f198
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
236
c4bab56944e8 LLVM 16
kono
parents: 150
diff changeset
1 ; RUN: opt %loadPolly -scalar-evolution-max-value-compare-depth=3 -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s | FileCheck %s
c4bab56944e8 LLVM 16
kono
parents: 150
diff changeset
2 ; RUN: opt %loadPolly -scalar-evolution-max-value-compare-depth=3 -polly-codegen -polly-invariant-load-hoisting=true -disable-output < %s
150
anatofuz
parents:
diff changeset
3 ;
anatofuz
parents:
diff changeset
4 ; Stress test for the code generation of invariant accesses.
anatofuz
parents:
diff changeset
5 ;
anatofuz
parents:
diff changeset
6 ; void f(int *I0, int *I1, int *I2, int *V, long p0, long p1, long p2, long p3) {
anatofuz
parents:
diff changeset
7 ; *V = *I1;
anatofuz
parents:
diff changeset
8 ; for (int i = 0; i < 1000; i++) {
anatofuz
parents:
diff changeset
9 ; long n0 = p0 * *I1 + p1 * *I1;
anatofuz
parents:
diff changeset
10 ; V[i] = I0[n0];
anatofuz
parents:
diff changeset
11 ; long m0 = p0 * (I2[0]);
anatofuz
parents:
diff changeset
12 ; long m1 = p1 * (I2[1]);
anatofuz
parents:
diff changeset
13 ; long m2 = p2 * (I2[2]);
anatofuz
parents:
diff changeset
14 ; long m3 = p3 * (I2[3]);
anatofuz
parents:
diff changeset
15 ; int j = 0;
anatofuz
parents:
diff changeset
16 ; do {
anatofuz
parents:
diff changeset
17 ; if (j > 0) {
anatofuz
parents:
diff changeset
18 ; V[i] += I1[m0 + m2];
anatofuz
parents:
diff changeset
19 ; V[i] += I1[n0];
anatofuz
parents:
diff changeset
20 ; }
anatofuz
parents:
diff changeset
21 ; } while (j++ < m1 + m3 * n0);
anatofuz
parents:
diff changeset
22 ; }
anatofuz
parents:
diff changeset
23 ; }
anatofuz
parents:
diff changeset
24 ;
anatofuz
parents:
diff changeset
25 ; CHECK: p0: ((sext i32 %tmp6 to i64) * %p1)
anatofuz
parents:
diff changeset
26 ; CHECK: p1: ((sext i32 %tmp3 to i64) * (sext i32 %tmp8 to i64) * (%p0 + %p1) * %p3)
anatofuz
parents:
diff changeset
27 ; CHECK: p2: ((sext i32 %tmp3 to i64) * (%p0 + %p1))
anatofuz
parents:
diff changeset
28 ; CHECK: p3: ((sext i32 %tmp5 to i64) * %p0)
anatofuz
parents:
diff changeset
29 ; CHECK: p4: ((sext i32 %tmp7 to i64) * %p2)
anatofuz
parents:
diff changeset
30 ;
anatofuz
parents:
diff changeset
31 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
anatofuz
parents:
diff changeset
32
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
33 define void @f(ptr %I0, ptr %I1, ptr %I2, ptr %V, i64 %p0, i64 %p1, i64 %p2, i64 %p3) {
150
anatofuz
parents:
diff changeset
34 entry:
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
35 %tmp = load i32, ptr %I1, align 4
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
36 store i32 %tmp, ptr %V, align 4
150
anatofuz
parents:
diff changeset
37 br label %for.cond
anatofuz
parents:
diff changeset
38
anatofuz
parents:
diff changeset
39 for.cond: ; preds = %for.inc, %entry
anatofuz
parents:
diff changeset
40 %indvars.iv1 = phi i64 [ %indvars.iv.next2, %for.inc ], [ 0, %entry ]
anatofuz
parents:
diff changeset
41 %exitcond = icmp ne i64 %indvars.iv1, 1000
anatofuz
parents:
diff changeset
42 br i1 %exitcond, label %for.body, label %for.end
anatofuz
parents:
diff changeset
43
anatofuz
parents:
diff changeset
44 for.body: ; preds = %for.cond
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
45 %tmp3 = load i32, ptr %I1, align 4
150
anatofuz
parents:
diff changeset
46 %conv = sext i32 %tmp3 to i64
anatofuz
parents:
diff changeset
47 %mul = mul nsw i64 %conv, %p0
anatofuz
parents:
diff changeset
48 %conv1 = sext i32 %tmp3 to i64
anatofuz
parents:
diff changeset
49 %mul2 = mul nsw i64 %conv1, %p1
anatofuz
parents:
diff changeset
50 %add = add nsw i64 %mul, %mul2
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
51 %arrayidx = getelementptr inbounds i32, ptr %I0, i64 %add
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
52 %tmp4 = load i32, ptr %arrayidx, align 4
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
53 %arrayidx3 = getelementptr inbounds i32, ptr %V, i64 %indvars.iv1
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
54 store i32 %tmp4, ptr %arrayidx3, align 4
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
55 %tmp5 = load i32, ptr %I2, align 4
150
anatofuz
parents:
diff changeset
56 %conv5 = sext i32 %tmp5 to i64
anatofuz
parents:
diff changeset
57 %mul6 = mul nsw i64 %conv5, %p0
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
58 %arrayidx7 = getelementptr inbounds i32, ptr %I2, i64 1
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
59 %tmp6 = load i32, ptr %arrayidx7, align 4
150
anatofuz
parents:
diff changeset
60 %conv8 = sext i32 %tmp6 to i64
anatofuz
parents:
diff changeset
61 %mul9 = mul nsw i64 %conv8, %p1
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
62 %arrayidx10 = getelementptr inbounds i32, ptr %I2, i64 2
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
63 %tmp7 = load i32, ptr %arrayidx10, align 4
150
anatofuz
parents:
diff changeset
64 %conv11 = sext i32 %tmp7 to i64
anatofuz
parents:
diff changeset
65 %mul12 = mul nsw i64 %conv11, %p2
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
66 %arrayidx13 = getelementptr inbounds i32, ptr %I2, i64 3
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
67 %tmp8 = load i32, ptr %arrayidx13, align 4
150
anatofuz
parents:
diff changeset
68 %conv14 = sext i32 %tmp8 to i64
anatofuz
parents:
diff changeset
69 %mul15 = mul nsw i64 %conv14, %p3
anatofuz
parents:
diff changeset
70 br label %do.body
anatofuz
parents:
diff changeset
71
anatofuz
parents:
diff changeset
72 do.body: ; preds = %do.cond, %for.body
anatofuz
parents:
diff changeset
73 %indvars.iv = phi i64 [ %indvars.iv.next, %do.cond ], [ 0, %for.body ]
anatofuz
parents:
diff changeset
74 %cmp16 = icmp sgt i64 %indvars.iv, 0
anatofuz
parents:
diff changeset
75 br i1 %cmp16, label %if.then, label %if.end
anatofuz
parents:
diff changeset
76
anatofuz
parents:
diff changeset
77 if.then: ; preds = %do.body
anatofuz
parents:
diff changeset
78 %add18 = add nsw i64 %mul6, %mul12
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
79 %arrayidx19 = getelementptr inbounds i32, ptr %I1, i64 %add18
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
80 %tmp9 = load i32, ptr %arrayidx19, align 4
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
81 %arrayidx21 = getelementptr inbounds i32, ptr %V, i64 %indvars.iv1
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
82 %tmp10 = load i32, ptr %arrayidx21, align 4
150
anatofuz
parents:
diff changeset
83 %add22 = add nsw i32 %tmp10, %tmp9
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
84 store i32 %add22, ptr %arrayidx21, align 4
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
85 %arrayidx23 = getelementptr inbounds i32, ptr %I1, i64 %add
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
86 %tmp11 = load i32, ptr %arrayidx23, align 4
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
87 %arrayidx25 = getelementptr inbounds i32, ptr %V, i64 %indvars.iv1
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
88 %tmp12 = load i32, ptr %arrayidx25, align 4
150
anatofuz
parents:
diff changeset
89 %add26 = add nsw i32 %tmp12, %tmp11
252
1f2b6ac9f198 LLVM16-1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
90 store i32 %add26, ptr %arrayidx25, align 4
150
anatofuz
parents:
diff changeset
91 br label %if.end
anatofuz
parents:
diff changeset
92
anatofuz
parents:
diff changeset
93 if.end: ; preds = %if.then, %do.body
anatofuz
parents:
diff changeset
94 br label %do.cond
anatofuz
parents:
diff changeset
95
anatofuz
parents:
diff changeset
96 do.cond: ; preds = %if.end
anatofuz
parents:
diff changeset
97 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
anatofuz
parents:
diff changeset
98 %mul28 = mul nsw i64 %mul15, %add
anatofuz
parents:
diff changeset
99 %add29 = add nsw i64 %mul9, %mul28
anatofuz
parents:
diff changeset
100 %cmp30 = icmp slt i64 %indvars.iv, %add29
anatofuz
parents:
diff changeset
101 br i1 %cmp30, label %do.body, label %do.end
anatofuz
parents:
diff changeset
102
anatofuz
parents:
diff changeset
103 do.end: ; preds = %do.cond
anatofuz
parents:
diff changeset
104 br label %for.inc
anatofuz
parents:
diff changeset
105
anatofuz
parents:
diff changeset
106 for.inc: ; preds = %do.end
anatofuz
parents:
diff changeset
107 %indvars.iv.next2 = add nuw nsw i64 %indvars.iv1, 1
anatofuz
parents:
diff changeset
108 br label %for.cond
anatofuz
parents:
diff changeset
109
anatofuz
parents:
diff changeset
110 for.end: ; preds = %for.cond
anatofuz
parents:
diff changeset
111 ret void
anatofuz
parents:
diff changeset
112 }