1
1
target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
2
2
3
- ; RUN: opt -opaque-pointers=0 - mtriple=thumbv7em %s -S -loop-reduce -lsr-complexity-limit=65536 -o - | FileCheck %s
4
- ; RUN: opt -opaque-pointers=0 - mtriple=thumbv7em %s -S -loop-reduce -lsr-complexity-limit=2147483647 -o - | FileCheck %s
3
+ ; RUN: opt -mtriple=thumbv7em %s -S -loop-reduce -lsr-complexity-limit=65536 -o - | FileCheck %s
4
+ ; RUN: opt -mtriple=thumbv7em %s -S -loop-reduce -lsr-complexity-limit=2147483647 -o - | FileCheck %s
5
5
6
6
; CHECK-LABEL: for.body12.us.us:
7
- ; CHECK: [[LSR_IV6:%[^ ]+]] = phi i16* [ [[SCEVGEP7:%[^ ]+]], %for.body12.us.us ], [ [[SCEVGEP5:%[^ ]+]], %for.cond9.preheader.us.us ]
7
+ ; CHECK: [[LSR_IV6:%[^ ]+]] = phi ptr [ [[SCEVGEP7:%[^ ]+]], %for.body12.us.us ], [ [[SCEVGEP5:%[^ ]+]], %for.cond9.preheader.us.us ]
8
8
; CHECK: phi i32
9
- ; CHECK: [[LSR_IV:%[^ ]+]] = phi i16* [ [[SCEVGEP1:%[^ ]+]], %for.body12.us.us ], [ [[SCEVGEP:%[^ ]+]], %for.cond9.preheader.us.us ]
9
+ ; CHECK: [[LSR_IV:%[^ ]+]] = phi ptr [ [[SCEVGEP1:%[^ ]+]], %for.body12.us.us ], [ [[SCEVGEP:%[^ ]+]], %for.cond9.preheader.us.us ]
10
10
; CHECK: phi i32
11
- ; CHECK: [[SCEVGEP1]] = getelementptr i16, i16* [[LSR_IV]], i32 4
12
- ; CHECK: [[SCEVGEP7]] = getelementptr i16, i16* [[LSR_IV6]], i32 4
11
+ ; CHECK: [[SCEVGEP1]] = getelementptr i8, ptr [[LSR_IV]], i32 8
12
+ ; CHECK: [[SCEVGEP7]] = getelementptr i8, ptr [[LSR_IV6]], i32 8
13
13
14
- define void @convolve (i16** nocapture readonly %input_image , i16** nocapture readonly %filter , i32 %filter_dim , i32 %out_width , i32 %out_height , i32** nocapture readonly %convolved ) {
14
+ define void @convolve (ptr nocapture readonly %input_image , ptr nocapture readonly %filter , i32 %filter_dim , i32 %out_width , i32 %out_height , ptr nocapture readonly %convolved ) {
15
15
entry:
16
16
%cmp92 = icmp eq i32 %out_height , 0
17
17
br i1 %cmp92 , label %for.cond.cleanup , label %for.cond1.preheader.lr.ph
@@ -23,8 +23,8 @@ for.cond1.preheader.lr.ph: ; preds = %entry
23
23
24
24
for.cond1.preheader: ; preds = %for.cond.cleanup3, %for.cond1.preheader.lr.ph
25
25
%res_y.093 = phi i32 [ 0 , %for.cond1.preheader.lr.ph ], [ %add28 , %for.cond.cleanup3 ]
26
- %arrayidx22 = getelementptr inbounds i32* , i32** %convolved , i32 %res_y.093
27
- %tmp3 = load i32* , i32** %arrayidx22 , align 4
26
+ %arrayidx22 = getelementptr inbounds ptr , ptr %convolved , i32 %res_y.093
27
+ %tmp3 = load ptr , ptr %arrayidx22 , align 4
28
28
br label %for.cond9.preheader.us.us.preheader
29
29
30
30
for.cond9.preheader.us.us.preheader: ; preds = %for.cond5.for.cond.cleanup7_crit_edge.us, %for.cond5.preheader.lr.ph
@@ -35,52 +35,52 @@ for.cond9.preheader.us.us: ; preds = %for.cond9.for.cond.
35
35
%filter_y.056.us.us = phi i32 [ %inc20.us.us , %for.cond9.for.cond.cleanup11_crit_edge.us.us.unr-lcssa ], [ 0 , %for.cond9.preheader.us.us.preheader ]
36
36
%result_element.055.us.us = phi i32 [ %add18.us.us.3 , %for.cond9.for.cond.cleanup11_crit_edge.us.us.unr-lcssa ], [ 0 , %for.cond9.preheader.us.us.preheader ]
37
37
%add.us.us = add i32 %filter_y.056.us.us , %res_y.093
38
- %arrayidx.us.us = getelementptr inbounds i16* , i16** %filter , i32 %filter_y.056.us.us
39
- %tmp5 = load i16* , i16** %arrayidx.us.us , align 4
40
- %arrayidx15.us.us = getelementptr inbounds i16* , i16** %input_image , i32 %add.us.us
41
- %tmp6 = load i16* , i16** %arrayidx15.us.us , align 4
38
+ %arrayidx.us.us = getelementptr inbounds ptr , ptr %filter , i32 %filter_y.056.us.us
39
+ %tmp5 = load ptr , ptr %arrayidx.us.us , align 4
40
+ %arrayidx15.us.us = getelementptr inbounds ptr , ptr %input_image , i32 %add.us.us
41
+ %tmp6 = load ptr , ptr %arrayidx15.us.us , align 4
42
42
br label %for.body12.us.us
43
43
44
44
for.body12.us.us: ; preds = %for.body12.us.us, %for.cond9.preheader.us.us
45
45
%filter_x.053.us.us = phi i32 [ %inc.us.us.3 , %for.body12.us.us ], [ 0 , %for.cond9.preheader.us.us ]
46
46
%result_element.152.us.us = phi i32 [ %add18.us.us.3 , %for.body12.us.us ], [ %result_element.055.us.us , %for.cond9.preheader.us.us ]
47
47
%niter = phi i32 [ %niter.nsub.3 , %for.body12.us.us ], [ %unroll_iter , %for.cond9.preheader.us.us ]
48
48
%add13.us.us = add i32 %filter_x.053.us.us , %res_x.060.us
49
- %arrayidx14.us.us = getelementptr inbounds i16 , i16* %tmp5 , i32 %filter_x.053.us.us
50
- %tmp9 = load i16 , i16* %arrayidx14.us.us , align 2
49
+ %arrayidx14.us.us = getelementptr inbounds i16 , ptr %tmp5 , i32 %filter_x.053.us.us
50
+ %tmp9 = load i16 , ptr %arrayidx14.us.us , align 2
51
51
%conv.us.us = sext i16 %tmp9 to i32
52
- %arrayidx16.us.us = getelementptr inbounds i16 , i16* %tmp6 , i32 %add13.us.us
53
- %tmp10 = load i16 , i16* %arrayidx16.us.us , align 2
52
+ %arrayidx16.us.us = getelementptr inbounds i16 , ptr %tmp6 , i32 %add13.us.us
53
+ %tmp10 = load i16 , ptr %arrayidx16.us.us , align 2
54
54
%conv17.us.us = sext i16 %tmp10 to i32
55
55
%mul.us.us = mul nsw i32 %conv17.us.us , %conv.us.us
56
56
%add18.us.us = add nsw i32 %mul.us.us , %result_element.152.us.us
57
57
%inc.us.us = or i32 %filter_x.053.us.us , 1
58
58
%add13.us.us.1 = add i32 %inc.us.us , %res_x.060.us
59
- %arrayidx14.us.us.1 = getelementptr inbounds i16 , i16* %tmp5 , i32 %inc.us.us
60
- %tmp11 = load i16 , i16* %arrayidx14.us.us.1 , align 2
59
+ %arrayidx14.us.us.1 = getelementptr inbounds i16 , ptr %tmp5 , i32 %inc.us.us
60
+ %tmp11 = load i16 , ptr %arrayidx14.us.us.1 , align 2
61
61
%conv.us.us.1 = sext i16 %tmp11 to i32
62
- %arrayidx16.us.us.1 = getelementptr inbounds i16 , i16* %tmp6 , i32 %add13.us.us.1
63
- %tmp12 = load i16 , i16* %arrayidx16.us.us.1 , align 2
62
+ %arrayidx16.us.us.1 = getelementptr inbounds i16 , ptr %tmp6 , i32 %add13.us.us.1
63
+ %tmp12 = load i16 , ptr %arrayidx16.us.us.1 , align 2
64
64
%conv17.us.us.1 = sext i16 %tmp12 to i32
65
65
%mul.us.us.1 = mul nsw i32 %conv17.us.us.1 , %conv.us.us.1
66
66
%add18.us.us.1 = add nsw i32 %mul.us.us.1 , %add18.us.us
67
67
%inc.us.us.1 = or i32 %filter_x.053.us.us , 2
68
68
%add13.us.us.2 = add i32 %inc.us.us.1 , %res_x.060.us
69
- %arrayidx14.us.us.2 = getelementptr inbounds i16 , i16* %tmp5 , i32 %inc.us.us.1
70
- %tmp13 = load i16 , i16* %arrayidx14.us.us.2 , align 2
69
+ %arrayidx14.us.us.2 = getelementptr inbounds i16 , ptr %tmp5 , i32 %inc.us.us.1
70
+ %tmp13 = load i16 , ptr %arrayidx14.us.us.2 , align 2
71
71
%conv.us.us.2 = sext i16 %tmp13 to i32
72
- %arrayidx16.us.us.2 = getelementptr inbounds i16 , i16* %tmp6 , i32 %add13.us.us.2
73
- %tmp14 = load i16 , i16* %arrayidx16.us.us.2 , align 2
72
+ %arrayidx16.us.us.2 = getelementptr inbounds i16 , ptr %tmp6 , i32 %add13.us.us.2
73
+ %tmp14 = load i16 , ptr %arrayidx16.us.us.2 , align 2
74
74
%conv17.us.us.2 = sext i16 %tmp14 to i32
75
75
%mul.us.us.2 = mul nsw i32 %conv17.us.us.2 , %conv.us.us.2
76
76
%add18.us.us.2 = add nsw i32 %mul.us.us.2 , %add18.us.us.1
77
77
%inc.us.us.2 = or i32 %filter_x.053.us.us , 3
78
78
%add13.us.us.3 = add i32 %inc.us.us.2 , %res_x.060.us
79
- %arrayidx14.us.us.3 = getelementptr inbounds i16 , i16* %tmp5 , i32 %inc.us.us.2
80
- %tmp15 = load i16 , i16* %arrayidx14.us.us.3 , align 2
79
+ %arrayidx14.us.us.3 = getelementptr inbounds i16 , ptr %tmp5 , i32 %inc.us.us.2
80
+ %tmp15 = load i16 , ptr %arrayidx14.us.us.3 , align 2
81
81
%conv.us.us.3 = sext i16 %tmp15 to i32
82
- %arrayidx16.us.us.3 = getelementptr inbounds i16 , i16* %tmp6 , i32 %add13.us.us.3
83
- %tmp16 = load i16 , i16* %arrayidx16.us.us.3 , align 2
82
+ %arrayidx16.us.us.3 = getelementptr inbounds i16 , ptr %tmp6 , i32 %add13.us.us.3
83
+ %tmp16 = load i16 , ptr %arrayidx16.us.us.3 , align 2
84
84
%conv17.us.us.3 = sext i16 %tmp16 to i32
85
85
%mul.us.us.3 = mul nsw i32 %conv17.us.us.3 , %conv.us.us.3
86
86
%add18.us.us.3 = add nsw i32 %mul.us.us.3 , %add18.us.us.2
@@ -95,8 +95,8 @@ for.cond9.for.cond.cleanup11_crit_edge.us.us.unr-lcssa: ; preds = %for.body12.us
95
95
br i1 %exitcond98 , label %for.cond5.for.cond.cleanup7_crit_edge.us , label %for.cond9.preheader.us.us
96
96
97
97
for.cond5.for.cond.cleanup7_crit_edge.us: ; preds = %for.cond9.for.cond.cleanup11_crit_edge.us.us
98
- %arrayidx23.us = getelementptr inbounds i32 , i32* %tmp3 , i32 %res_x.060.us
99
- store i32 %add18.us.us.3 , i32* %arrayidx23.us , align 4
98
+ %arrayidx23.us = getelementptr inbounds i32 , ptr %tmp3 , i32 %res_x.060.us
99
+ store i32 %add18.us.us.3 , ptr %arrayidx23.us , align 4
100
100
%add25.us = add nuw i32 %res_x.060.us , 1
101
101
%exitcond99 = icmp eq i32 %add25.us , %out_width
102
102
br i1 %exitcond99 , label %for.cond.cleanup3 , label %for.cond9.preheader.us.us.preheader
0 commit comments