11target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
22
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
55
66; 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 ]
88; 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 ]
1010; 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
1313
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 ) {
1515entry:
1616 %cmp92 = icmp eq i32 %out_height , 0
1717 br i1 %cmp92 , label %for.cond.cleanup , label %for.cond1.preheader.lr.ph
@@ -23,8 +23,8 @@ for.cond1.preheader.lr.ph: ; preds = %entry
2323
2424for.cond1.preheader: ; preds = %for.cond.cleanup3, %for.cond1.preheader.lr.ph
2525 %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
2828 br label %for.cond9.preheader.us.us.preheader
2929
3030for.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.
3535 %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 ]
3636 %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 ]
3737 %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
4242 br label %for.body12.us.us
4343
4444for.body12.us.us: ; preds = %for.body12.us.us, %for.cond9.preheader.us.us
4545 %filter_x.053.us.us = phi i32 [ %inc.us.us.3 , %for.body12.us.us ], [ 0 , %for.cond9.preheader.us.us ]
4646 %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 ]
4747 %niter = phi i32 [ %niter.nsub.3 , %for.body12.us.us ], [ %unroll_iter , %for.cond9.preheader.us.us ]
4848 %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
5151 %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
5454 %conv17.us.us = sext i16 %tmp10 to i32
5555 %mul.us.us = mul nsw i32 %conv17.us.us , %conv.us.us
5656 %add18.us.us = add nsw i32 %mul.us.us , %result_element.152.us.us
5757 %inc.us.us = or i32 %filter_x.053.us.us , 1
5858 %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
6161 %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
6464 %conv17.us.us.1 = sext i16 %tmp12 to i32
6565 %mul.us.us.1 = mul nsw i32 %conv17.us.us.1 , %conv.us.us.1
6666 %add18.us.us.1 = add nsw i32 %mul.us.us.1 , %add18.us.us
6767 %inc.us.us.1 = or i32 %filter_x.053.us.us , 2
6868 %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
7171 %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
7474 %conv17.us.us.2 = sext i16 %tmp14 to i32
7575 %mul.us.us.2 = mul nsw i32 %conv17.us.us.2 , %conv.us.us.2
7676 %add18.us.us.2 = add nsw i32 %mul.us.us.2 , %add18.us.us.1
7777 %inc.us.us.2 = or i32 %filter_x.053.us.us , 3
7878 %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
8181 %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
8484 %conv17.us.us.3 = sext i16 %tmp16 to i32
8585 %mul.us.us.3 = mul nsw i32 %conv17.us.us.3 , %conv.us.us.3
8686 %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
9595 br i1 %exitcond98 , label %for.cond5.for.cond.cleanup7_crit_edge.us , label %for.cond9.preheader.us.us
9696
9797for.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
100100 %add25.us = add nuw i32 %res_x.060.us , 1
101101 %exitcond99 = icmp eq i32 %add25.us , %out_width
102102 br i1 %exitcond99 , label %for.cond.cleanup3 , label %for.cond9.preheader.us.us.preheader
0 commit comments