Skip to content

Commit ab071e5

Browse files
committed
[LoopDist] Add metadata for checking post process state of distributed loops
Add a boolean marker noting when loop distribution was sucessfully applied in a loops meta data, then check for loops which are already distributed to prevent reprocessing.
1 parent 769a905 commit ab071e5

File tree

10 files changed

+240
-74
lines changed

10 files changed

+240
-74
lines changed

llvm/docs/LangRef.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7966,6 +7966,13 @@ The attributes in this metadata is added to all followup loops of the
79667966
loop distribution pass. See
79677967
:ref:`Transformation Metadata <transformation-metadata>` for details.
79687968

7969+
'``llvm.loop.isdistributed``' Metadata
7970+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
7971+
7972+
If a loop was successfully processed by the loop distribution pass,
7973+
this metadata is added (i.e. has been distributed). See
7974+
:ref:`Transformation Metadata <transformation-metadata>` for details.
7975+
79697976
'``llvm.licm.disable``' Metadata
79707977
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
79717978

llvm/docs/TransformMetadata.rst

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,18 @@ It is recommended to add ``llvm.loop.disable_nonforced`` to
346346
fallback version (which is likely never executed) is further optimized
347347
which would increase the code size.
348348

349+
Attributes defined in ``llvm.loop.isdistributed`` are added to successfully
350+
distributed loops to prevent subsequent reprocessing.
351+
352+
As an example, the following instructs a loop to be ignored during
353+
loop distribution.
354+
355+
.. code-block:: llvm
356+
357+
!4 = distinct !{!4, !5, !6}
358+
!5 = !{!"llvm.loop.mustprogress"}
359+
!6 = !{!"llvm.loop.isdistributed", i32 1}
360+
349361
Versioning LICM
350362
---------------
351363

llvm/lib/Transforms/Scalar/LoopDistribute.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,8 @@ static cl::opt<bool> EnableLoopDistribute(
113113
cl::desc("Enable the new, experimental LoopDistribution Pass"),
114114
cl::init(false));
115115

116+
static const char *DistributedMetaData = "llvm.loop.isdistributed";
117+
116118
STATISTIC(NumLoopsDistributed, "Number of loops distributed");
117119

118120
namespace {
@@ -826,6 +828,8 @@ class LoopDistributeForLoop {
826828
{LLVMLoopDistributeFollowupAll, LLVMLoopDistributeFollowupFallback},
827829
"llvm.loop.distribute.", true);
828830
LVer.getNonVersionedLoop()->setLoopID(UnversionedLoopID);
831+
addStringMetadataToLoop(LVer.getNonVersionedLoop(), DistributedMetaData,
832+
true);
829833
}
830834

831835
// Create identical copies of the original loop for each partition and hook
@@ -986,6 +990,13 @@ static bool runImpl(Function &F, LoopInfo *LI, DominatorTree *DT,
986990
for (Loop *L : Worklist) {
987991
LoopDistributeForLoop LDL(L, &F, LI, DT, SE, LAIs, ORE);
988992

993+
// Do not reprocess loops we already distributed
994+
if (getOptionalBoolLoopAttribute(L, DistributedMetaData).value_or(false)) {
995+
LLVM_DEBUG(
996+
dbgs() << "LDist: Distributed loop guarded for reprocessing\n");
997+
continue;
998+
}
999+
9891000
// If distribution was forced for the specific loop to be
9901001
// enabled/disabled, follow that. Otherwise use the global flag.
9911002
if (LDL.isForced().value_or(EnableLoopDistribute))

llvm/test/Transforms/LoopDistribute/cross-partition-access.ll

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -64,30 +64,30 @@ define dso_local void @_Z13distribution3PiS_S_S_i(ptr nocapture noundef %a, ptr
6464
; CHECK: [[FOR_BODY_LDIST1]]:
6565
; CHECK-NEXT: [[IDXPROM_LDIST1:%.*]] = phi i64 [ 0, %[[FOR_BODY_PH_LDIST1]] ], [ [[I6_LDIST1:%.*]], %[[FOR_BODY_LDIST1]] ]
6666
; CHECK-NEXT: [[ARRAYIDX_LDIST1:%.*]] = getelementptr inbounds i32, ptr [[B]], i64 [[IDXPROM_LDIST1]]
67-
; CHECK-NEXT: [[I2_LDIST1:%.*]] = load i32, ptr [[ARRAYIDX_LDIST1]], align 4, !tbaa [[TBAA0]], !alias.scope [[META6:![0-9]+]]
67+
; CHECK-NEXT: [[I2_LDIST1:%.*]] = load i32, ptr [[ARRAYIDX_LDIST1]], align 4, !tbaa [[TBAA0]], !alias.scope [[META7:![0-9]+]]
6868
; CHECK-NEXT: [[ADD4_LDIST1:%.*]] = add nsw i32 [[I2_LDIST1]], 1
6969
; CHECK-NEXT: [[ARRAYIDX8_LDIST1:%.*]] = getelementptr inbounds i32, ptr [[A]], i64 [[IDXPROM_LDIST1]]
70-
; CHECK-NEXT: store i32 [[ADD4_LDIST1]], ptr [[ARRAYIDX8_LDIST1]], align 4, !tbaa [[TBAA0]], !alias.scope [[META9:![0-9]+]], !noalias [[META11:![0-9]+]]
70+
; CHECK-NEXT: store i32 [[ADD4_LDIST1]], ptr [[ARRAYIDX8_LDIST1]], align 4, !tbaa [[TBAA0]], !alias.scope [[META10:![0-9]+]], !noalias [[META12:![0-9]+]]
7171
; CHECK-NEXT: [[I3_LDIST1:%.*]] = getelementptr i32, ptr [[C]], i64 [[IDXPROM_LDIST1]]
7272
; CHECK-NEXT: [[ARRAYIDX17_LDIST1:%.*]] = getelementptr i8, ptr [[I3_LDIST1]], i64 -4
73-
; CHECK-NEXT: [[I4_LDIST1:%.*]] = load i32, ptr [[ARRAYIDX17_LDIST1]], align 4, !tbaa [[TBAA0]], !alias.scope [[META14:![0-9]+]], !noalias [[META15:![0-9]+]]
73+
; CHECK-NEXT: [[I4_LDIST1:%.*]] = load i32, ptr [[ARRAYIDX17_LDIST1]], align 4, !tbaa [[TBAA0]], !alias.scope [[META15:![0-9]+]], !noalias [[META16:![0-9]+]]
7474
; CHECK-NEXT: [[SUB18_LDIST1:%.*]] = sub nsw i32 [[ADD4_LDIST1]], [[I4_LDIST1]]
75-
; CHECK-NEXT: store i32 [[SUB18_LDIST1]], ptr [[I3_LDIST1]], align 4, !tbaa [[TBAA0]], !alias.scope [[META14]], !noalias [[META15]]
75+
; CHECK-NEXT: store i32 [[SUB18_LDIST1]], ptr [[I3_LDIST1]], align 4, !tbaa [[TBAA0]], !alias.scope [[META15]], !noalias [[META16]]
7676
; CHECK-NEXT: [[I6_LDIST1]] = add i64 [[IDXPROM_LDIST1]], 1
7777
; CHECK-NEXT: [[CMP1_NOT_LDIST1:%.*]] = icmp eq i64 [[I6_LDIST1]], [[LEN]]
78-
; CHECK-NEXT: br i1 [[CMP1_NOT_LDIST1]], label %[[FOR_BODY_PH:.*]], label %[[FOR_BODY_LDIST1]], !llvm.loop [[LOOP16:![0-9]+]]
78+
; CHECK-NEXT: br i1 [[CMP1_NOT_LDIST1]], label %[[FOR_BODY_PH:.*]], label %[[FOR_BODY_LDIST1]], !llvm.loop [[LOOP17:![0-9]+]]
7979
; CHECK: [[FOR_BODY_PH]]:
8080
; CHECK-NEXT: br label %[[FOR_BODY:.*]]
8181
; CHECK: [[FOR_BODY]]:
8282
; CHECK-NEXT: [[IDXPROM:%.*]] = phi i64 [ 0, %[[FOR_BODY_PH]] ], [ [[I6:%.*]], %[[FOR_BODY]] ]
8383
; CHECK-NEXT: [[ARRAYIDX8:%.*]] = getelementptr inbounds i32, ptr [[A]], i64 [[IDXPROM]]
84-
; CHECK-NEXT: [[I5:%.*]] = load i32, ptr [[ARRAYIDX8]], align 4, !tbaa [[TBAA0]], !alias.scope [[META9]], !noalias [[META11]]
84+
; CHECK-NEXT: [[I5:%.*]] = load i32, ptr [[ARRAYIDX8]], align 4, !tbaa [[TBAA0]], !alias.scope [[META10]], !noalias [[META12]]
8585
; CHECK-NEXT: [[ADD27:%.*]] = add nsw i32 [[I5]], 2
8686
; CHECK-NEXT: [[ARRAYIDX31:%.*]] = getelementptr inbounds i32, ptr [[D]], i64 [[IDXPROM]]
87-
; CHECK-NEXT: store i32 [[ADD27]], ptr [[ARRAYIDX31]], align 4, !tbaa [[TBAA0]], !alias.scope [[META15]], !noalias [[META6]]
87+
; CHECK-NEXT: store i32 [[ADD27]], ptr [[ARRAYIDX31]], align 4, !tbaa [[TBAA0]], !alias.scope [[META16]], !noalias [[META7]]
8888
; CHECK-NEXT: [[I6]] = add i64 [[IDXPROM]], 1
8989
; CHECK-NEXT: [[CMP1_NOT:%.*]] = icmp eq i64 [[I6]], [[LEN]]
90-
; CHECK-NEXT: br i1 [[CMP1_NOT]], label %[[END_LOOPEXIT_LOOPEXIT20:.*]], label %[[FOR_BODY]], !llvm.loop [[LOOP16]]
90+
; CHECK-NEXT: br i1 [[CMP1_NOT]], label %[[END_LOOPEXIT_LOOPEXIT20:.*]], label %[[FOR_BODY]], !llvm.loop [[LOOP17]]
9191
; CHECK: [[END_LOOPEXIT_LOOPEXIT]]:
9292
; CHECK-NEXT: br label %[[END_LOOPEXIT:.*]]
9393
; CHECK: [[END_LOOPEXIT_LOOPEXIT20]]:
@@ -143,17 +143,18 @@ end: ; preds = %end.loopexit, %entr
143143
; CHECK: [[META1]] = !{!"int", [[META2:![0-9]+]], i64 0}
144144
; CHECK: [[META2]] = !{!"omnipotent char", [[META3:![0-9]+]], i64 0}
145145
; CHECK: [[META3]] = !{!"Simple C++ TBAA"}
146-
; CHECK: [[LOOP4]] = distinct !{[[LOOP4]], [[META5:![0-9]+]]}
146+
; CHECK: [[LOOP4]] = distinct !{[[LOOP4]], [[META5:![0-9]+]], [[META6:![0-9]+]]}
147147
; CHECK: [[META5]] = !{!"llvm.loop.mustprogress"}
148-
; CHECK: [[META6]] = !{[[META7:![0-9]+]]}
149-
; CHECK: [[META7]] = distinct !{[[META7]], [[META8:![0-9]+]]}
150-
; CHECK: [[META8]] = distinct !{[[META8]], !"LVerDomain"}
151-
; CHECK: [[META9]] = !{[[META10:![0-9]+]]}
152-
; CHECK: [[META10]] = distinct !{[[META10]], [[META8]]}
153-
; CHECK: [[META11]] = !{[[META12:![0-9]+]], [[META13:![0-9]+]], [[META7]]}
154-
; CHECK: [[META12]] = distinct !{[[META12]], [[META8]]}
155-
; CHECK: [[META13]] = distinct !{[[META13]], [[META8]]}
156-
; CHECK: [[META14]] = !{[[META12]]}
148+
; CHECK: [[META6]] = !{!"llvm.loop.isdistributed", i32 1}
149+
; CHECK: [[META7]] = !{[[META8:![0-9]+]]}
150+
; CHECK: [[META8]] = distinct !{[[META8]], [[META9:![0-9]+]]}
151+
; CHECK: [[META9]] = distinct !{[[META9]], !"LVerDomain"}
152+
; CHECK: [[META10]] = !{[[META11:![0-9]+]]}
153+
; CHECK: [[META11]] = distinct !{[[META11]], [[META9]]}
154+
; CHECK: [[META12]] = !{[[META13:![0-9]+]], [[META14:![0-9]+]], [[META8]]}
155+
; CHECK: [[META13]] = distinct !{[[META13]], [[META9]]}
156+
; CHECK: [[META14]] = distinct !{[[META14]], [[META9]]}
157157
; CHECK: [[META15]] = !{[[META13]]}
158-
; CHECK: [[LOOP16]] = distinct !{[[LOOP16]], [[META5]]}
158+
; CHECK: [[META16]] = !{[[META14]]}
159+
; CHECK: [[LOOP17]] = distinct !{[[LOOP17]], [[META5]]}
159160
;.

llvm/test/Transforms/LoopDistribute/followup.ll

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -58,29 +58,29 @@ define void @f(ptr %a, ptr %b, ptr %c, ptr %d, ptr %e) {
5858
; CHECK: [[FOR_BODY_LDIST1]]:
5959
; CHECK-NEXT: [[IND_LDIST1:%.*]] = phi i64 [ 0, %[[FOR_BODY_PH_LDIST1]] ], [ [[ADD_LDIST1:%.*]], %[[FOR_BODY_LDIST1]] ]
6060
; CHECK-NEXT: [[ARRAYIDXA_LDIST1:%.*]] = getelementptr inbounds i32, ptr [[A]], i64 [[IND_LDIST1]]
61-
; CHECK-NEXT: [[LOADA_LDIST1:%.*]] = load i32, ptr [[ARRAYIDXA_LDIST1]], align 4, !alias.scope [[META3:![0-9]+]], !noalias [[META6:![0-9]+]]
61+
; CHECK-NEXT: [[LOADA_LDIST1:%.*]] = load i32, ptr [[ARRAYIDXA_LDIST1]], align 4, !alias.scope [[META4:![0-9]+]], !noalias [[META7:![0-9]+]]
6262
; CHECK-NEXT: [[ARRAYIDXB_LDIST1:%.*]] = getelementptr inbounds i32, ptr [[B]], i64 [[IND_LDIST1]]
63-
; CHECK-NEXT: [[LOADB_LDIST1:%.*]] = load i32, ptr [[ARRAYIDXB_LDIST1]], align 4, !alias.scope [[META10:![0-9]+]]
63+
; CHECK-NEXT: [[LOADB_LDIST1:%.*]] = load i32, ptr [[ARRAYIDXB_LDIST1]], align 4, !alias.scope [[META11:![0-9]+]]
6464
; CHECK-NEXT: [[MULA_LDIST1:%.*]] = mul i32 [[LOADB_LDIST1]], [[LOADA_LDIST1]]
6565
; CHECK-NEXT: [[ADD_LDIST1]] = add nuw nsw i64 [[IND_LDIST1]], 1
6666
; CHECK-NEXT: [[ARRAYIDXA_PLUS_4_LDIST1:%.*]] = getelementptr inbounds i32, ptr [[A]], i64 [[ADD_LDIST1]]
67-
; CHECK-NEXT: store i32 [[MULA_LDIST1]], ptr [[ARRAYIDXA_PLUS_4_LDIST1]], align 4, !alias.scope [[META3]], !noalias [[META6]]
67+
; CHECK-NEXT: store i32 [[MULA_LDIST1]], ptr [[ARRAYIDXA_PLUS_4_LDIST1]], align 4, !alias.scope [[META4]], !noalias [[META7]]
6868
; CHECK-NEXT: [[EXITCOND_LDIST1:%.*]] = icmp eq i64 [[ADD_LDIST1]], 20
69-
; CHECK-NEXT: br i1 [[EXITCOND_LDIST1]], label %[[FOR_BODY_PH:.*]], label %[[FOR_BODY_LDIST1]], !llvm.loop [[LOOP12:![0-9]+]]
69+
; CHECK-NEXT: br i1 [[EXITCOND_LDIST1]], label %[[FOR_BODY_PH:.*]], label %[[FOR_BODY_LDIST1]], !llvm.loop [[LOOP13:![0-9]+]]
7070
; CHECK: [[FOR_BODY_PH]]:
7171
; CHECK-NEXT: br label %[[FOR_BODY:.*]]
7272
; CHECK: [[FOR_BODY]]:
7373
; CHECK-NEXT: [[IND:%.*]] = phi i64 [ 0, %[[FOR_BODY_PH]] ], [ [[ADD:%.*]], %[[FOR_BODY]] ]
7474
; CHECK-NEXT: [[ADD]] = add nuw nsw i64 [[IND]], 1
7575
; CHECK-NEXT: [[ARRAYIDXD:%.*]] = getelementptr inbounds i32, ptr [[D]], i64 [[IND]]
76-
; CHECK-NEXT: [[LOADD:%.*]] = load i32, ptr [[ARRAYIDXD]], align 4, !alias.scope [[META14:![0-9]+]]
76+
; CHECK-NEXT: [[LOADD:%.*]] = load i32, ptr [[ARRAYIDXD]], align 4, !alias.scope [[META15:![0-9]+]]
7777
; CHECK-NEXT: [[ARRAYIDXE:%.*]] = getelementptr inbounds i32, ptr [[E]], i64 [[IND]]
78-
; CHECK-NEXT: [[LOADE:%.*]] = load i32, ptr [[ARRAYIDXE]], align 4, !alias.scope [[META15:![0-9]+]]
78+
; CHECK-NEXT: [[LOADE:%.*]] = load i32, ptr [[ARRAYIDXE]], align 4, !alias.scope [[META16:![0-9]+]]
7979
; CHECK-NEXT: [[MULC:%.*]] = mul i32 [[LOADD]], [[LOADE]]
8080
; CHECK-NEXT: [[ARRAYIDXC:%.*]] = getelementptr inbounds i32, ptr [[C]], i64 [[IND]]
81-
; CHECK-NEXT: store i32 [[MULC]], ptr [[ARRAYIDXC]], align 4, !alias.scope [[META16:![0-9]+]], !noalias [[META10]]
81+
; CHECK-NEXT: store i32 [[MULC]], ptr [[ARRAYIDXC]], align 4, !alias.scope [[META17:![0-9]+]], !noalias [[META11]]
8282
; CHECK-NEXT: [[EXITCOND:%.*]] = icmp eq i64 [[ADD]], 20
83-
; CHECK-NEXT: br i1 [[EXITCOND]], label %[[FOR_END_LOOPEXIT16:.*]], label %[[FOR_BODY]], !llvm.loop [[LOOP17:![0-9]+]]
83+
; CHECK-NEXT: br i1 [[EXITCOND]], label %[[FOR_END_LOOPEXIT16:.*]], label %[[FOR_BODY]], !llvm.loop [[LOOP18:![0-9]+]]
8484
; CHECK: [[FOR_END_LOOPEXIT]]:
8585
; CHECK-NEXT: br label %[[FOR_END:.*]]
8686
; CHECK: [[FOR_END_LOOPEXIT16]]:
@@ -131,23 +131,24 @@ for.end:
131131
!4 = !{!"llvm.loop.distribute.followup_sequential", !{!"FollowupSequential", i32 8}}
132132
!5 = !{!"llvm.loop.distribute.followup_fallback", !{!"FollowupFallback"}}
133133
;.
134-
; CHECK: [[LOOP0]] = distinct !{[[LOOP0]], [[META1:![0-9]+]], [[META2:![0-9]+]]}
134+
; CHECK: [[LOOP0]] = distinct !{[[LOOP0]], [[META1:![0-9]+]], [[META2:![0-9]+]], [[META3:![0-9]+]]}
135135
; CHECK: [[META1]] = !{!"FollowupAll"}
136136
; CHECK: [[META2]] = !{!"FollowupFallback"}
137-
; CHECK: [[META3]] = !{[[META4:![0-9]+]]}
138-
; CHECK: [[META4]] = distinct !{[[META4]], [[META5:![0-9]+]]}
139-
; CHECK: [[META5]] = distinct !{[[META5]], !"LVerDomain"}
140-
; CHECK: [[META6]] = !{[[META7:![0-9]+]], [[META8:![0-9]+]], [[META9:![0-9]+]]}
141-
; CHECK: [[META7]] = distinct !{[[META7]], [[META5]]}
142-
; CHECK: [[META8]] = distinct !{[[META8]], [[META5]]}
143-
; CHECK: [[META9]] = distinct !{[[META9]], [[META5]]}
144-
; CHECK: [[META10]] = !{[[META11:![0-9]+]]}
145-
; CHECK: [[META11]] = distinct !{[[META11]], [[META5]]}
146-
; CHECK: [[LOOP12]] = distinct !{[[LOOP12]], [[META1]], [[META13:![0-9]+]]}
147-
; CHECK: [[META13]] = !{!"FollowupSequential", i32 8}
148-
; CHECK: [[META14]] = !{[[META8]]}
137+
; CHECK: [[META3]] = !{!"llvm.loop.isdistributed", i32 1}
138+
; CHECK: [[META4]] = !{[[META5:![0-9]+]]}
139+
; CHECK: [[META5]] = distinct !{[[META5]], [[META6:![0-9]+]]}
140+
; CHECK: [[META6]] = distinct !{[[META6]], !"LVerDomain"}
141+
; CHECK: [[META7]] = !{[[META8:![0-9]+]], [[META9:![0-9]+]], [[META10:![0-9]+]]}
142+
; CHECK: [[META8]] = distinct !{[[META8]], [[META6]]}
143+
; CHECK: [[META9]] = distinct !{[[META9]], [[META6]]}
144+
; CHECK: [[META10]] = distinct !{[[META10]], [[META6]]}
145+
; CHECK: [[META11]] = !{[[META12:![0-9]+]]}
146+
; CHECK: [[META12]] = distinct !{[[META12]], [[META6]]}
147+
; CHECK: [[LOOP13]] = distinct !{[[LOOP13]], [[META1]], [[META14:![0-9]+]]}
148+
; CHECK: [[META14]] = !{!"FollowupSequential", i32 8}
149149
; CHECK: [[META15]] = !{[[META9]]}
150-
; CHECK: [[META16]] = !{[[META7]]}
151-
; CHECK: [[LOOP17]] = distinct !{[[LOOP17]], [[META1]], [[META18:![0-9]+]]}
152-
; CHECK: [[META18]] = !{!"FollowupCoincident", i1 false}
150+
; CHECK: [[META16]] = !{[[META10]]}
151+
; CHECK: [[META17]] = !{[[META8]]}
152+
; CHECK: [[LOOP18]] = distinct !{[[LOOP18]], [[META1]], [[META19:![0-9]+]]}
153+
; CHECK: [[META19]] = !{!"FollowupCoincident", i1 false}
153154
;.

llvm/test/Transforms/LoopDistribute/laa-invalidation.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,21 +27,21 @@ define void @test_pr50940(ptr %A, ptr %B) {
2727
; CHECK-NEXT: store i16 1, ptr [[B]], align 1
2828
; CHECK-NEXT: [[IV_NEXT_LVER_ORIG]] = add nuw nsw i16 [[IV_LVER_ORIG]], 1
2929
; CHECK-NEXT: [[C_1_LVER_ORIG:%.*]] = icmp ult i16 [[IV_LVER_ORIG]], 38
30-
; CHECK-NEXT: br i1 [[C_1_LVER_ORIG]], label [[INNER_LVER_ORIG]], label [[EXIT_LOOPEXIT:%.*]]
30+
; CHECK-NEXT: br i1 [[C_1_LVER_ORIG]], label [[INNER_LVER_ORIG]], label [[EXIT_LOOPEXIT:%.*]], !llvm.loop [[LOOP0:![0-9]+]]
3131
; CHECK: inner.ph3.ldist1:
3232
; CHECK-NEXT: br label [[INNER_LDIST1:%.*]]
3333
; CHECK: inner.ldist1:
3434
; CHECK-NEXT: [[IV_LDIST1:%.*]] = phi i16 [ 0, [[INNER_PH3_LDIST1]] ], [ [[IV_NEXT_LDIST1:%.*]], [[INNER_LDIST1]] ]
35-
; CHECK-NEXT: [[L_LDIST1:%.*]] = load <2 x i16>, ptr [[UGLYGEP]], align 1, !alias.scope !0, !noalias !3
36-
; CHECK-NEXT: store i16 0, ptr [[GEP_A_3]], align 1, !alias.scope !0, !noalias !3
35+
; CHECK-NEXT: [[L_LDIST1:%.*]] = load <2 x i16>, ptr [[UGLYGEP]], align 1, !alias.scope [[META2:![0-9]+]], !noalias [[META5:![0-9]+]]
36+
; CHECK-NEXT: store i16 0, ptr [[GEP_A_3]], align 1, !alias.scope [[META2]], !noalias [[META5]]
3737
; CHECK-NEXT: [[IV_NEXT_LDIST1]] = add nuw nsw i16 [[IV_LDIST1]], 1
3838
; CHECK-NEXT: [[C_1_LDIST1:%.*]] = icmp ult i16 [[IV_LDIST1]], 38
3939
; CHECK-NEXT: br i1 [[C_1_LDIST1]], label [[INNER_LDIST1]], label [[INNER_PH3:%.*]]
4040
; CHECK: inner.ph3:
4141
; CHECK-NEXT: br label [[INNER:%.*]]
4242
; CHECK: inner:
4343
; CHECK-NEXT: [[IV:%.*]] = phi i16 [ 0, [[INNER_PH3]] ], [ [[IV_NEXT:%.*]], [[INNER]] ]
44-
; CHECK-NEXT: store i16 1, ptr [[B]], align 1, !alias.scope !3
44+
; CHECK-NEXT: store i16 1, ptr [[B]], align 1, !alias.scope [[META5]]
4545
; CHECK-NEXT: [[IV_NEXT]] = add nuw nsw i16 [[IV]], 1
4646
; CHECK-NEXT: [[C_1:%.*]] = icmp ult i16 [[IV]], 38
4747
; CHECK-NEXT: br i1 [[C_1]], label [[INNER]], label [[EXIT_LOOPEXIT4:%.*]]

0 commit comments

Comments
 (0)