Skip to content

Commit 970fcba

Browse files
committed
[LoopVersioningLICM] Convert tests to opaque pointers (NFC)
1 parent 0fde03c commit 970fcba

File tree

5 files changed

+76
-77
lines changed

5 files changed

+76
-77
lines changed

llvm/test/Transforms/LoopVersioningLICM/convergent.ll

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
; CHECK-LABEL: @test_convergent(
77
; CHECK: call void @llvm.convergent()
88
; CHECK-NOT: call void @llvm.convergent()
9-
define i32 @test_convergent(i32* nocapture %var1, i32* nocapture readnone %var2, i32* nocapture %var3, i32 %itr) #1 {
9+
define i32 @test_convergent(ptr nocapture %var1, ptr nocapture readnone %var2, ptr nocapture %var3, i32 %itr) #1 {
1010
entry:
1111
%cmp14 = icmp eq i32 %itr, 0
1212
br i1 %cmp14, label %for.end13, label %for.cond1.preheader
@@ -20,18 +20,18 @@ for.cond1.preheader: ; preds = %entry, %for.inc11
2020
for.body3.lr.ph: ; preds = %for.cond1.preheader
2121
%add = add i32 %i.015, %itr
2222
%idxprom6 = zext i32 %i.015 to i64
23-
%arrayidx7 = getelementptr inbounds i32, i32* %var3, i64 %idxprom6
23+
%arrayidx7 = getelementptr inbounds i32, ptr %var3, i64 %idxprom6
2424
br label %for.body3
2525

2626
for.body3: ; preds = %for.body3, %for.body3.lr.ph
2727
%j.113 = phi i32 [ %j.016, %for.body3.lr.ph ], [ %inc, %for.body3 ]
2828
%idxprom = zext i32 %j.113 to i64
29-
%arrayidx = getelementptr inbounds i32, i32* %var1, i64 %idxprom
30-
store i32 %add, i32* %arrayidx, align 4
31-
%load.arrayidx7 = load i32, i32* %arrayidx7, align 4
29+
%arrayidx = getelementptr inbounds i32, ptr %var1, i64 %idxprom
30+
store i32 %add, ptr %arrayidx, align 4
31+
%load.arrayidx7 = load i32, ptr %arrayidx7, align 4
3232
call void @llvm.convergent()
3333
%add8 = add nsw i32 %load.arrayidx7, %add
34-
store i32 %add8, i32* %arrayidx7, align 4
34+
store i32 %add8, ptr %arrayidx7, align 4
3535
%inc = add nuw i32 %j.113, 1
3636
%cmp2 = icmp ult i32 %inc, %itr
3737
br i1 %cmp2, label %for.body3, label %for.inc11
@@ -49,7 +49,7 @@ for.end13: ; preds = %for.inc11, %entry
4949
; CHECK-LABEL: @test_noduplicate(
5050
; CHECK: call void @llvm.noduplicate()
5151
; CHECK-NOT: call void @llvm.noduplicate()
52-
define i32 @test_noduplicate(i32* nocapture %var1, i32* nocapture readnone %var2, i32* nocapture %var3, i32 %itr) #2 {
52+
define i32 @test_noduplicate(ptr nocapture %var1, ptr nocapture readnone %var2, ptr nocapture %var3, i32 %itr) #2 {
5353
entry:
5454
%cmp14 = icmp eq i32 %itr, 0
5555
br i1 %cmp14, label %for.end13, label %for.cond1.preheader
@@ -63,18 +63,18 @@ for.cond1.preheader: ; preds = %entry, %for.inc11
6363
for.body3.lr.ph: ; preds = %for.cond1.preheader
6464
%add = add i32 %i.015, %itr
6565
%idxprom6 = zext i32 %i.015 to i64
66-
%arrayidx7 = getelementptr inbounds i32, i32* %var3, i64 %idxprom6
66+
%arrayidx7 = getelementptr inbounds i32, ptr %var3, i64 %idxprom6
6767
br label %for.body3
6868

6969
for.body3: ; preds = %for.body3, %for.body3.lr.ph
7070
%j.113 = phi i32 [ %j.016, %for.body3.lr.ph ], [ %inc, %for.body3 ]
7171
%idxprom = zext i32 %j.113 to i64
72-
%arrayidx = getelementptr inbounds i32, i32* %var1, i64 %idxprom
73-
store i32 %add, i32* %arrayidx, align 4
74-
%load.arrayidx7 = load i32, i32* %arrayidx7, align 4
72+
%arrayidx = getelementptr inbounds i32, ptr %var1, i64 %idxprom
73+
store i32 %add, ptr %arrayidx, align 4
74+
%load.arrayidx7 = load i32, ptr %arrayidx7, align 4
7575
call void @llvm.noduplicate()
7676
%add8 = add nsw i32 %load.arrayidx7, %add
77-
store i32 %add8, i32* %arrayidx7, align 4
77+
store i32 %add8, ptr %arrayidx7, align 4
7878
%inc = add nuw i32 %j.113, 1
7979
%cmp2 = icmp ult i32 %inc, %itr
8080
br i1 %cmp2, label %for.body3, label %for.inc11

llvm/test/Transforms/LoopVersioningLICM/loopversioningLICM1.ll

Lines changed: 35 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -8,73 +8,72 @@
88
; CHECK: Loop: Loop at depth 2 containing: %for.body3<header><latch><exiting>
99
; CHECK-NEXT: Loop Versioning found to be beneficial
1010

11-
define i32 @foo(i32* nocapture %var1, i32* nocapture readnone %var2, i32* nocapture %var3, i32 %itr) #0 {
11+
define i32 @foo(ptr nocapture %var1, ptr nocapture readnone %var2, ptr nocapture %var3, i32 %itr) #0 {
1212
; CHECK-LABEL: @foo(
1313
; CHECK-NEXT: entry:
1414
; CHECK-NEXT: [[CMP14:%.*]] = icmp eq i32 [[ITR:%.*]], 0
1515
; CHECK-NEXT: br i1 [[CMP14]], label [[FOR_END13:%.*]], label [[FOR_COND1_PREHEADER_PREHEADER:%.*]]
1616
; CHECK: for.cond1.preheader.preheader:
17-
; CHECK-NEXT: [[SCEVGEP2:%.*]] = getelementptr i32, i32* [[VAR1:%.*]], i64 1
17+
; CHECK-NEXT: [[UGLYGEP1:%.*]] = getelementptr i8, ptr [[VAR1:%.*]], i64 4
1818
; CHECK-NEXT: [[TMP0:%.*]] = add i32 [[ITR]], -1
1919
; CHECK-NEXT: br label [[FOR_COND1_PREHEADER:%.*]]
2020
; CHECK: for.cond1.preheader:
2121
; CHECK-NEXT: [[INDVAR:%.*]] = phi i64 [ 0, [[FOR_COND1_PREHEADER_PREHEADER]] ], [ [[INDVAR_NEXT:%.*]], [[FOR_INC11:%.*]] ]
2222
; CHECK-NEXT: [[J_016:%.*]] = phi i32 [ [[J_1_LCSSA:%.*]], [[FOR_INC11]] ], [ 0, [[FOR_COND1_PREHEADER_PREHEADER]] ]
2323
; CHECK-NEXT: [[I_015:%.*]] = phi i32 [ [[INC12:%.*]], [[FOR_INC11]] ], [ 0, [[FOR_COND1_PREHEADER_PREHEADER]] ]
24-
; CHECK-NEXT: [[SCEVGEP5:%.*]] = getelementptr i32, i32* [[VAR3:%.*]], i64 [[INDVAR]]
25-
; CHECK-NEXT: [[SCEVGEP56:%.*]] = bitcast i32* [[SCEVGEP5]] to i8*
26-
; CHECK-NEXT: [[TMP1:%.*]] = add i64 [[INDVAR]], 1
27-
; CHECK-NEXT: [[SCEVGEP7:%.*]] = getelementptr i32, i32* [[VAR3]], i64 [[TMP1]]
28-
; CHECK-NEXT: [[SCEVGEP78:%.*]] = bitcast i32* [[SCEVGEP7]] to i8*
24+
; CHECK-NEXT: [[TMP1:%.*]] = shl nuw nsw i64 [[INDVAR]], 2
25+
; CHECK-NEXT: [[UGLYGEP3:%.*]] = getelementptr i8, ptr [[VAR3:%.*]], i64 [[TMP1]]
26+
; CHECK-NEXT: [[TMP2:%.*]] = add i64 [[TMP1]], 4
27+
; CHECK-NEXT: [[UGLYGEP4:%.*]] = getelementptr i8, ptr [[VAR3]], i64 [[TMP2]]
2928
; CHECK-NEXT: [[CMP212:%.*]] = icmp ult i32 [[J_016]], [[ITR]]
3029
; CHECK-NEXT: br i1 [[CMP212]], label [[FOR_BODY3_LVER_CHECK:%.*]], label [[FOR_INC11]]
3130
; CHECK: for.body3.lver.check:
3231
; CHECK-NEXT: [[ADD:%.*]] = add i32 [[I_015]], [[ITR]]
3332
; CHECK-NEXT: [[IDXPROM6:%.*]] = zext i32 [[I_015]] to i64
34-
; CHECK-NEXT: [[ARRAYIDX7:%.*]] = getelementptr inbounds i32, i32* [[VAR3]], i64 [[IDXPROM6]]
35-
; CHECK-NEXT: [[TMP2:%.*]] = zext i32 [[J_016]] to i64
36-
; CHECK-NEXT: [[SCEVGEP:%.*]] = getelementptr i32, i32* [[VAR1]], i64 [[TMP2]]
37-
; CHECK-NEXT: [[SCEVGEP1:%.*]] = bitcast i32* [[SCEVGEP]] to i8*
38-
; CHECK-NEXT: [[TMP3:%.*]] = sub i32 [[TMP0]], [[J_016]]
39-
; CHECK-NEXT: [[TMP4:%.*]] = zext i32 [[TMP3]] to i64
40-
; CHECK-NEXT: [[TMP5:%.*]] = add i64 [[TMP2]], [[TMP4]]
41-
; CHECK-NEXT: [[SCEVGEP3:%.*]] = getelementptr i32, i32* [[SCEVGEP2]], i64 [[TMP5]]
42-
; CHECK-NEXT: [[SCEVGEP34:%.*]] = bitcast i32* [[SCEVGEP3]] to i8*
43-
; CHECK-NEXT: [[BOUND0:%.*]] = icmp ult i8* [[SCEVGEP1]], [[SCEVGEP78]]
44-
; CHECK-NEXT: [[BOUND1:%.*]] = icmp ult i8* [[SCEVGEP56]], [[SCEVGEP34]]
33+
; CHECK-NEXT: [[ARRAYIDX7:%.*]] = getelementptr inbounds i32, ptr [[VAR3]], i64 [[IDXPROM6]]
34+
; CHECK-NEXT: [[TMP3:%.*]] = zext i32 [[J_016]] to i64
35+
; CHECK-NEXT: [[TMP4:%.*]] = shl nuw nsw i64 [[TMP3]], 2
36+
; CHECK-NEXT: [[UGLYGEP:%.*]] = getelementptr i8, ptr [[VAR1]], i64 [[TMP4]]
37+
; CHECK-NEXT: [[TMP5:%.*]] = sub i32 [[TMP0]], [[J_016]]
38+
; CHECK-NEXT: [[TMP6:%.*]] = zext i32 [[TMP5]] to i64
39+
; CHECK-NEXT: [[TMP7:%.*]] = shl nuw nsw i64 [[TMP6]], 2
40+
; CHECK-NEXT: [[TMP8:%.*]] = add i64 [[TMP4]], [[TMP7]]
41+
; CHECK-NEXT: [[UGLYGEP2:%.*]] = getelementptr i8, ptr [[UGLYGEP1]], i64 [[TMP8]]
42+
; CHECK-NEXT: [[BOUND0:%.*]] = icmp ult ptr [[UGLYGEP]], [[UGLYGEP4]]
43+
; CHECK-NEXT: [[BOUND1:%.*]] = icmp ult ptr [[UGLYGEP3]], [[UGLYGEP2]]
4544
; CHECK-NEXT: [[FOUND_CONFLICT:%.*]] = and i1 [[BOUND0]], [[BOUND1]]
4645
; CHECK-NEXT: br i1 [[FOUND_CONFLICT]], label [[FOR_BODY3_PH_LVER_ORIG:%.*]], label [[FOR_BODY3_PH:%.*]]
4746
; CHECK: for.body3.ph.lver.orig:
4847
; CHECK-NEXT: br label [[FOR_BODY3_LVER_ORIG:%.*]]
4948
; CHECK: for.body3.lver.orig:
5049
; CHECK-NEXT: [[J_113_LVER_ORIG:%.*]] = phi i32 [ [[J_016]], [[FOR_BODY3_PH_LVER_ORIG]] ], [ [[INC_LVER_ORIG:%.*]], [[FOR_BODY3_LVER_ORIG]] ]
5150
; CHECK-NEXT: [[IDXPROM_LVER_ORIG:%.*]] = zext i32 [[J_113_LVER_ORIG]] to i64
52-
; CHECK-NEXT: [[ARRAYIDX_LVER_ORIG:%.*]] = getelementptr inbounds i32, i32* [[VAR1]], i64 [[IDXPROM_LVER_ORIG]]
53-
; CHECK-NEXT: store i32 [[ADD]], i32* [[ARRAYIDX_LVER_ORIG]], align 4
54-
; CHECK-NEXT: [[TMP6:%.*]] = load i32, i32* [[ARRAYIDX7]], align 4
55-
; CHECK-NEXT: [[ADD8_LVER_ORIG:%.*]] = add nsw i32 [[TMP6]], [[ADD]]
56-
; CHECK-NEXT: store i32 [[ADD8_LVER_ORIG]], i32* [[ARRAYIDX7]], align 4
51+
; CHECK-NEXT: [[ARRAYIDX_LVER_ORIG:%.*]] = getelementptr inbounds i32, ptr [[VAR1]], i64 [[IDXPROM_LVER_ORIG]]
52+
; CHECK-NEXT: store i32 [[ADD]], ptr [[ARRAYIDX_LVER_ORIG]], align 4
53+
; CHECK-NEXT: [[TMP9:%.*]] = load i32, ptr [[ARRAYIDX7]], align 4
54+
; CHECK-NEXT: [[ADD8_LVER_ORIG:%.*]] = add nsw i32 [[TMP9]], [[ADD]]
55+
; CHECK-NEXT: store i32 [[ADD8_LVER_ORIG]], ptr [[ARRAYIDX7]], align 4
5756
; CHECK-NEXT: [[INC_LVER_ORIG]] = add nuw i32 [[J_113_LVER_ORIG]], 1
5857
; CHECK-NEXT: [[CMP2_LVER_ORIG:%.*]] = icmp ult i32 [[INC_LVER_ORIG]], [[ITR]]
5958
; CHECK-NEXT: br i1 [[CMP2_LVER_ORIG]], label [[FOR_BODY3_LVER_ORIG]], label [[FOR_INC11_LOOPEXIT_LOOPEXIT:%.*]], !llvm.loop [[LOOP0:![0-9]+]]
6059
; CHECK: for.body3.ph:
61-
; CHECK-NEXT: [[ARRAYIDX7_PROMOTED:%.*]] = load i32, i32* [[ARRAYIDX7]], align 4, !alias.scope !2, !noalias !2
60+
; CHECK-NEXT: [[ARRAYIDX7_PROMOTED:%.*]] = load i32, ptr [[ARRAYIDX7]], align 4, !alias.scope !2, !noalias !2
6261
; CHECK-NEXT: br label [[FOR_BODY3:%.*]]
6362
; CHECK: for.body3:
64-
; CHECK-NEXT: [[ADD810:%.*]] = phi i32 [ [[ARRAYIDX7_PROMOTED]], [[FOR_BODY3_PH]] ], [ [[ADD8:%.*]], [[FOR_BODY3]] ]
63+
; CHECK-NEXT: [[ADD86:%.*]] = phi i32 [ [[ARRAYIDX7_PROMOTED]], [[FOR_BODY3_PH]] ], [ [[ADD8:%.*]], [[FOR_BODY3]] ]
6564
; CHECK-NEXT: [[J_113:%.*]] = phi i32 [ [[J_016]], [[FOR_BODY3_PH]] ], [ [[INC:%.*]], [[FOR_BODY3]] ]
6665
; CHECK-NEXT: [[IDXPROM:%.*]] = zext i32 [[J_113]] to i64
67-
; CHECK-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i32, i32* [[VAR1]], i64 [[IDXPROM]]
68-
; CHECK-NEXT: store i32 [[ADD]], i32* [[ARRAYIDX]], align 4, !alias.scope !2, !noalias !2
69-
; CHECK-NEXT: [[ADD8]] = add nsw i32 [[ADD810]], [[ADD]]
66+
; CHECK-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i32, ptr [[VAR1]], i64 [[IDXPROM]]
67+
; CHECK-NEXT: store i32 [[ADD]], ptr [[ARRAYIDX]], align 4, !alias.scope !2, !noalias !2
68+
; CHECK-NEXT: [[ADD8]] = add nsw i32 [[ADD86]], [[ADD]]
7069
; CHECK-NEXT: [[INC]] = add nuw i32 [[J_113]], 1
7170
; CHECK-NEXT: [[CMP2:%.*]] = icmp ult i32 [[INC]], [[ITR]]
72-
; CHECK-NEXT: br i1 [[CMP2]], label [[FOR_BODY3]], label [[FOR_INC11_LOOPEXIT_LOOPEXIT9:%.*]], !llvm.loop [[LOOP5:![0-9]+]]
71+
; CHECK-NEXT: br i1 [[CMP2]], label [[FOR_BODY3]], label [[FOR_INC11_LOOPEXIT_LOOPEXIT5:%.*]], !llvm.loop [[LOOP5:![0-9]+]]
7372
; CHECK: for.inc11.loopexit.loopexit:
7473
; CHECK-NEXT: br label [[FOR_INC11_LOOPEXIT:%.*]]
75-
; CHECK: for.inc11.loopexit.loopexit9:
74+
; CHECK: for.inc11.loopexit.loopexit5:
7675
; CHECK-NEXT: [[ADD8_LCSSA:%.*]] = phi i32 [ [[ADD8]], [[FOR_BODY3]] ]
77-
; CHECK-NEXT: store i32 [[ADD8_LCSSA]], i32* [[ARRAYIDX7]], align 4, !alias.scope !2, !noalias !2
76+
; CHECK-NEXT: store i32 [[ADD8_LCSSA]], ptr [[ARRAYIDX7]], align 4, !alias.scope !2, !noalias !2
7877
; CHECK-NEXT: br label [[FOR_INC11_LOOPEXIT]]
7978
; CHECK: for.inc11.loopexit:
8079
; CHECK-NEXT: br label [[FOR_INC11]]
@@ -105,17 +104,17 @@ for.cond1.preheader: ; preds = %for.cond1.preheader
105104
for.body3.lr.ph: ; preds = %for.cond1.preheader
106105
%add = add i32 %i.015, %itr
107106
%idxprom6 = zext i32 %i.015 to i64
108-
%arrayidx7 = getelementptr inbounds i32, i32* %var3, i64 %idxprom6
107+
%arrayidx7 = getelementptr inbounds i32, ptr %var3, i64 %idxprom6
109108
br label %for.body3
110109

111110
for.body3: ; preds = %for.body3.lr.ph, %for.body3
112111
%j.113 = phi i32 [ %j.016, %for.body3.lr.ph ], [ %inc, %for.body3 ]
113112
%idxprom = zext i32 %j.113 to i64
114-
%arrayidx = getelementptr inbounds i32, i32* %var1, i64 %idxprom
115-
store i32 %add, i32* %arrayidx, align 4
116-
%0 = load i32, i32* %arrayidx7, align 4
113+
%arrayidx = getelementptr inbounds i32, ptr %var1, i64 %idxprom
114+
store i32 %add, ptr %arrayidx, align 4
115+
%0 = load i32, ptr %arrayidx7, align 4
117116
%add8 = add nsw i32 %0, %add
118-
store i32 %add8, i32* %arrayidx7, align 4
117+
store i32 %add8, ptr %arrayidx7, align 4
119118
%inc = add nuw i32 %j.113, 1
120119
%cmp2 = icmp ult i32 %inc, %itr
121120
br i1 %cmp2, label %for.body3, label %for.inc11.loopexit

llvm/test/Transforms/LoopVersioningLICM/loopversioningLICM2.ll

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@
77
; CHECK: Loop: Loop at depth 2 containing: %for.body3.us<header><latch><exiting>
88
; CHECK-NEXT: Loop Versioning found to be beneficial
99
;
10-
; CHECK: for.cond1.for.inc17_crit_edge.us.loopexit9: ; preds = %for.body3.us
10+
; CHECK: for.cond1.for.inc17_crit_edge.us.loopexit5: ; preds = %for.body3.us
1111
; CHECK-NEXT: %add14.us.lcssa = phi float [ %add14.us, %for.body3.us ]
12-
; CHECK-NEXT: store float %add14.us.lcssa, float* %arrayidx.us, align 4, !alias.scope !0, !noalias !0
12+
; CHECK-NEXT: store float %add14.us.lcssa, ptr %arrayidx.us, align 4, !alias.scope !0, !noalias !0
1313
; CHECK-NEXT: br label %for.cond1.for.inc17_crit_edge.us
1414
;
15-
define i32 @foo(float* nocapture %var2, float** nocapture readonly %var3, i32 %itr) #0 {
15+
define i32 @foo(ptr nocapture %var2, ptr nocapture readonly %var3, i32 %itr) #0 {
1616
entry:
1717
%cmp38 = icmp sgt i32 %itr, 1
1818
br i1 %cmp38, label %for.body3.lr.ph.us, label %for.end19
@@ -23,22 +23,22 @@ for.body3.us: ; preds = %for.body3.us, %for.
2323
%1 = trunc i64 %indvars.iv to i32
2424
%conv.us = sitofp i32 %1 to float
2525
%add.us = fadd float %conv.us, %0
26-
%arrayidx7.us = getelementptr inbounds float, float* %3, i64 %indvars.iv
27-
store float %add.us, float* %arrayidx7.us, align 4
28-
%2 = load float, float* %arrayidx.us, align 4
26+
%arrayidx7.us = getelementptr inbounds float, ptr %3, i64 %indvars.iv
27+
store float %add.us, ptr %arrayidx7.us, align 4
28+
%2 = load float, ptr %arrayidx.us, align 4
2929
%add14.us = fadd float %2, %add.us
30-
store float %add14.us, float* %arrayidx.us, align 4
30+
store float %add14.us, ptr %arrayidx.us, align 4
3131
%indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
3232
%lftr.wideiv = trunc i64 %indvars.iv.next to i32
3333
%exitcond = icmp eq i32 %lftr.wideiv, %itr
3434
br i1 %exitcond, label %for.cond1.for.inc17_crit_edge.us, label %for.body3.us
3535

3636
for.body3.lr.ph.us: ; preds = %entry, %for.cond1.for.inc17_crit_edge.us
3737
%indvars.iv40 = phi i64 [ %indvars.iv.next41, %for.cond1.for.inc17_crit_edge.us ], [ 1, %entry ]
38-
%arrayidx.us = getelementptr inbounds float, float* %var2, i64 %indvars.iv40
39-
%arrayidx6.us = getelementptr inbounds float*, float** %var3, i64 %indvars.iv40
40-
%3 = load float*, float** %arrayidx6.us, align 8
41-
%.pre = load float, float* %arrayidx.us, align 4
38+
%arrayidx.us = getelementptr inbounds float, ptr %var2, i64 %indvars.iv40
39+
%arrayidx6.us = getelementptr inbounds ptr, ptr %var3, i64 %indvars.iv40
40+
%3 = load ptr, ptr %arrayidx6.us, align 8
41+
%.pre = load float, ptr %arrayidx.us, align 4
4242
br label %for.body3.us
4343

4444
for.cond1.for.inc17_crit_edge.us: ; preds = %for.body3.us

llvm/test/Transforms/LoopVersioningLICM/loopversioningLICM3.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
; CHECK-NEXT: LAA: Runtime check not found !!
99
; CHECK-NEXT: Loop instructions not suitable for LoopVersioningLICM
1010

11-
define i32 @foo(i32* nocapture %var1, i32 %itr) #0 {
11+
define i32 @foo(ptr nocapture %var1, i32 %itr) #0 {
1212
entry:
1313
%cmp18 = icmp eq i32 %itr, 0
1414
br i1 %cmp18, label %for.end8, label %for.cond1.preheader
@@ -25,10 +25,10 @@ for.body3.lr.ph: ; preds = %for.cond1.preheader
2525

2626
for.body3: ; preds = %for.body3, %for.body3.lr.ph
2727
%indvars.iv = phi i64 [ %0, %for.body3.lr.ph ], [ %indvars.iv.next, %for.body3 ]
28-
%arrayidx = getelementptr inbounds i32, i32* %var1, i64 %indvars.iv
29-
%1 = load i32, i32* %arrayidx, align 4
28+
%arrayidx = getelementptr inbounds i32, ptr %var1, i64 %indvars.iv
29+
%1 = load i32, ptr %arrayidx, align 4
3030
%add = add nsw i32 %1, %itr
31-
store i32 %add, i32* %arrayidx, align 4
31+
store i32 %add, ptr %arrayidx, align 4
3232
%indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
3333
%lftr.wideiv = trunc i64 %indvars.iv.next to i32
3434
%exitcond = icmp eq i32 %lftr.wideiv, %itr

llvm/test/Transforms/LoopVersioningLICM/metadata.ll

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
; RUN: opt < %s -S -passes='function(loop-versioning-licm,loop-mssa(licm))' 2>&1 | FileCheck %s
22

33
; CHECK-LABEL: @without_metadata(
4-
define i32 @without_metadata(i32* nocapture %var1, i32* nocapture readnone %var2, i32* nocapture %var3, i32 %itr) #0 {
4+
define i32 @without_metadata(ptr nocapture %var1, ptr nocapture readnone %var2, ptr nocapture %var3, i32 %itr) #0 {
55
entry:
66
%cmp14 = icmp eq i32 %itr, 0
77
br i1 %cmp14, label %for.end13, label %for.cond1.preheader.preheader
@@ -18,18 +18,18 @@ for.cond1.preheader: ; preds = %for.cond1.preheader
1818
for.body3.lr.ph: ; preds = %for.cond1.preheader
1919
%add = add i32 %i.015, %itr
2020
%idxprom6 = zext i32 %i.015 to i64
21-
%arrayidx7 = getelementptr inbounds i32, i32* %var3, i64 %idxprom6
21+
%arrayidx7 = getelementptr inbounds i32, ptr %var3, i64 %idxprom6
2222
br label %for.body3
2323

2424
for.body3: ; preds = %for.body3.lr.ph, %for.body3
2525
%j.113 = phi i32 [ %j.016, %for.body3.lr.ph ], [ %inc, %for.body3 ]
2626
%idxprom = zext i32 %j.113 to i64
27-
%arrayidx = getelementptr inbounds i32, i32* %var1, i64 %idxprom
28-
; CHECK: store i32 %add, i32* %arrayidx, align 4, !alias.scope {{.*}}, !noalias {{.*}}
29-
store i32 %add, i32* %arrayidx, align 4
30-
%0 = load i32, i32* %arrayidx7, align 4
27+
%arrayidx = getelementptr inbounds i32, ptr %var1, i64 %idxprom
28+
; CHECK: store i32 %add, ptr %arrayidx, align 4, !alias.scope {{.*}}, !noalias {{.*}}
29+
store i32 %add, ptr %arrayidx, align 4
30+
%0 = load i32, ptr %arrayidx7, align 4
3131
%add8 = add nsw i32 %0, %add
32-
store i32 %add8, i32* %arrayidx7, align 4
32+
store i32 %add8, ptr %arrayidx7, align 4
3333
%inc = add nuw i32 %j.113, 1
3434
%cmp2 = icmp ult i32 %inc, %itr
3535
br i1 %cmp2, label %for.body3, label %for.inc11.loopexit
@@ -51,7 +51,7 @@ for.end13: ; preds = %for.end13.loopexit,
5151
}
5252

5353
; CHECK-LABEL: @with_metadata(
54-
define i32 @with_metadata(i32* nocapture %var1, i32* nocapture readnone %var2, i32* nocapture %var3, i32 %itr) #0 {
54+
define i32 @with_metadata(ptr nocapture %var1, ptr nocapture readnone %var2, ptr nocapture %var3, i32 %itr) #0 {
5555
entry:
5656
%cmp14 = icmp eq i32 %itr, 0
5757
br i1 %cmp14, label %for.end13, label %for.cond1.preheader.preheader
@@ -68,18 +68,18 @@ for.cond1.preheader: ; preds = %for.cond1.preheader
6868
for.body3.lr.ph: ; preds = %for.cond1.preheader
6969
%add = add i32 %i.015, %itr
7070
%idxprom6 = zext i32 %i.015 to i64
71-
%arrayidx7 = getelementptr inbounds i32, i32* %var3, i64 %idxprom6
71+
%arrayidx7 = getelementptr inbounds i32, ptr %var3, i64 %idxprom6
7272
br label %for.body3
7373

7474
for.body3: ; preds = %for.body3.lr.ph, %for.body3
7575
%j.113 = phi i32 [ %j.016, %for.body3.lr.ph ], [ %inc, %for.body3 ]
7676
%idxprom = zext i32 %j.113 to i64
77-
%arrayidx = getelementptr inbounds i32, i32* %var1, i64 %idxprom
78-
; CHECK-NOT: store i32 %add, i32* %arrayidx, align 4, !alias.scope {{.*}}, !noalias {{.*}}
79-
store i32 %add, i32* %arrayidx, align 4
80-
%0 = load i32, i32* %arrayidx7, align 4
77+
%arrayidx = getelementptr inbounds i32, ptr %var1, i64 %idxprom
78+
; CHECK-NOT: store i32 %add, ptr %arrayidx, align 4, !alias.scope {{.*}}, !noalias {{.*}}
79+
store i32 %add, ptr %arrayidx, align 4
80+
%0 = load i32, ptr %arrayidx7, align 4
8181
%add8 = add nsw i32 %0, %add
82-
store i32 %add8, i32* %arrayidx7, align 4
82+
store i32 %add8, ptr %arrayidx7, align 4
8383
%inc = add nuw i32 %j.113, 1
8484
%cmp2 = icmp ult i32 %inc, %itr
8585
br i1 %cmp2, label %for.body3, label %for.inc11.loopexit, !llvm.loop !0

0 commit comments

Comments
 (0)