Skip to content

Commit c07be08

Browse files
committed
[LV] Add tail folding test with scalarized store and wide header mask.
Add additional test with salarized store which caused crashes with earlier versions of llvm#92555.
1 parent 651d44d commit c07be08

File tree

1 file changed

+225
-0
lines changed

1 file changed

+225
-0
lines changed

llvm/test/Transforms/LoopVectorize/AArch64/conditional-branches-cost.ll

Lines changed: 225 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1003,6 +1003,227 @@ exit:
10031003
ret void
10041004
}
10051005

1006+
define void @low_trip_count_fold_tail_scalarized_store(ptr %dst) {
1007+
; DEFAULT-LABEL: define void @low_trip_count_fold_tail_scalarized_store(
1008+
; DEFAULT-SAME: ptr [[DST:%.*]]) {
1009+
; DEFAULT-NEXT: entry:
1010+
; DEFAULT-NEXT: br i1 false, label [[SCALAR_PH:%.*]], label [[VECTOR_PH:%.*]]
1011+
; DEFAULT: vector.ph:
1012+
; DEFAULT-NEXT: br label [[VECTOR_BODY:%.*]]
1013+
; DEFAULT: vector.body:
1014+
; DEFAULT-NEXT: [[INDEX:%.*]] = phi i64 [ 0, [[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], [[PRED_STORE_CONTINUE14:%.*]] ]
1015+
; DEFAULT-NEXT: [[VEC_IND:%.*]] = phi <8 x i64> [ <i64 0, i64 1, i64 2, i64 3, i64 4, i64 5, i64 6, i64 7>, [[VECTOR_PH]] ], [ [[VEC_IND_NEXT:%.*]], [[PRED_STORE_CONTINUE14]] ]
1016+
; DEFAULT-NEXT: [[TMP0:%.*]] = trunc i64 [[INDEX]] to i8
1017+
; DEFAULT-NEXT: [[TMP1:%.*]] = icmp ule <8 x i64> [[VEC_IND]], <i64 6, i64 6, i64 6, i64 6, i64 6, i64 6, i64 6, i64 6>
1018+
; DEFAULT-NEXT: [[TMP2:%.*]] = extractelement <8 x i1> [[TMP1]], i32 0
1019+
; DEFAULT-NEXT: br i1 [[TMP2]], label [[PRED_STORE_IF:%.*]], label [[PRED_STORE_CONTINUE:%.*]]
1020+
; DEFAULT: pred.store.if:
1021+
; DEFAULT-NEXT: [[TMP3:%.*]] = add i64 [[INDEX]], 0
1022+
; DEFAULT-NEXT: [[TMP4:%.*]] = getelementptr i8, ptr [[DST]], i64 [[TMP3]]
1023+
; DEFAULT-NEXT: [[TMP5:%.*]] = add i8 [[TMP0]], 0
1024+
; DEFAULT-NEXT: store i8 [[TMP5]], ptr [[TMP4]], align 1
1025+
; DEFAULT-NEXT: br label [[PRED_STORE_CONTINUE]]
1026+
; DEFAULT: pred.store.continue:
1027+
; DEFAULT-NEXT: [[TMP6:%.*]] = extractelement <8 x i1> [[TMP1]], i32 1
1028+
; DEFAULT-NEXT: br i1 [[TMP6]], label [[PRED_STORE_IF1:%.*]], label [[PRED_STORE_CONTINUE2:%.*]]
1029+
; DEFAULT: pred.store.if1:
1030+
; DEFAULT-NEXT: [[TMP7:%.*]] = add i64 [[INDEX]], 1
1031+
; DEFAULT-NEXT: [[TMP8:%.*]] = getelementptr i8, ptr [[DST]], i64 [[TMP7]]
1032+
; DEFAULT-NEXT: [[TMP9:%.*]] = add i8 [[TMP0]], 1
1033+
; DEFAULT-NEXT: store i8 [[TMP9]], ptr [[TMP8]], align 1
1034+
; DEFAULT-NEXT: br label [[PRED_STORE_CONTINUE2]]
1035+
; DEFAULT: pred.store.continue2:
1036+
; DEFAULT-NEXT: [[TMP10:%.*]] = extractelement <8 x i1> [[TMP1]], i32 2
1037+
; DEFAULT-NEXT: br i1 [[TMP10]], label [[PRED_STORE_IF3:%.*]], label [[PRED_STORE_CONTINUE4:%.*]]
1038+
; DEFAULT: pred.store.if3:
1039+
; DEFAULT-NEXT: [[TMP11:%.*]] = add i64 [[INDEX]], 2
1040+
; DEFAULT-NEXT: [[TMP12:%.*]] = getelementptr i8, ptr [[DST]], i64 [[TMP11]]
1041+
; DEFAULT-NEXT: [[TMP13:%.*]] = add i8 [[TMP0]], 2
1042+
; DEFAULT-NEXT: store i8 [[TMP13]], ptr [[TMP12]], align 1
1043+
; DEFAULT-NEXT: br label [[PRED_STORE_CONTINUE4]]
1044+
; DEFAULT: pred.store.continue4:
1045+
; DEFAULT-NEXT: [[TMP14:%.*]] = extractelement <8 x i1> [[TMP1]], i32 3
1046+
; DEFAULT-NEXT: br i1 [[TMP14]], label [[PRED_STORE_IF5:%.*]], label [[PRED_STORE_CONTINUE6:%.*]]
1047+
; DEFAULT: pred.store.if5:
1048+
; DEFAULT-NEXT: [[TMP15:%.*]] = add i64 [[INDEX]], 3
1049+
; DEFAULT-NEXT: [[TMP16:%.*]] = getelementptr i8, ptr [[DST]], i64 [[TMP15]]
1050+
; DEFAULT-NEXT: [[TMP17:%.*]] = add i8 [[TMP0]], 3
1051+
; DEFAULT-NEXT: store i8 [[TMP17]], ptr [[TMP16]], align 1
1052+
; DEFAULT-NEXT: br label [[PRED_STORE_CONTINUE6]]
1053+
; DEFAULT: pred.store.continue6:
1054+
; DEFAULT-NEXT: [[TMP18:%.*]] = extractelement <8 x i1> [[TMP1]], i32 4
1055+
; DEFAULT-NEXT: br i1 [[TMP18]], label [[PRED_STORE_IF7:%.*]], label [[PRED_STORE_CONTINUE8:%.*]]
1056+
; DEFAULT: pred.store.if7:
1057+
; DEFAULT-NEXT: [[TMP19:%.*]] = add i64 [[INDEX]], 4
1058+
; DEFAULT-NEXT: [[TMP20:%.*]] = getelementptr i8, ptr [[DST]], i64 [[TMP19]]
1059+
; DEFAULT-NEXT: [[TMP21:%.*]] = add i8 [[TMP0]], 4
1060+
; DEFAULT-NEXT: store i8 [[TMP21]], ptr [[TMP20]], align 1
1061+
; DEFAULT-NEXT: br label [[PRED_STORE_CONTINUE8]]
1062+
; DEFAULT: pred.store.continue8:
1063+
; DEFAULT-NEXT: [[TMP22:%.*]] = extractelement <8 x i1> [[TMP1]], i32 5
1064+
; DEFAULT-NEXT: br i1 [[TMP22]], label [[PRED_STORE_IF9:%.*]], label [[PRED_STORE_CONTINUE10:%.*]]
1065+
; DEFAULT: pred.store.if9:
1066+
; DEFAULT-NEXT: [[TMP23:%.*]] = add i64 [[INDEX]], 5
1067+
; DEFAULT-NEXT: [[TMP24:%.*]] = getelementptr i8, ptr [[DST]], i64 [[TMP23]]
1068+
; DEFAULT-NEXT: [[TMP25:%.*]] = add i8 [[TMP0]], 5
1069+
; DEFAULT-NEXT: store i8 [[TMP25]], ptr [[TMP24]], align 1
1070+
; DEFAULT-NEXT: br label [[PRED_STORE_CONTINUE10]]
1071+
; DEFAULT: pred.store.continue10:
1072+
; DEFAULT-NEXT: [[TMP26:%.*]] = extractelement <8 x i1> [[TMP1]], i32 6
1073+
; DEFAULT-NEXT: br i1 [[TMP26]], label [[PRED_STORE_IF11:%.*]], label [[PRED_STORE_CONTINUE12:%.*]]
1074+
; DEFAULT: pred.store.if11:
1075+
; DEFAULT-NEXT: [[TMP27:%.*]] = add i64 [[INDEX]], 6
1076+
; DEFAULT-NEXT: [[TMP28:%.*]] = getelementptr i8, ptr [[DST]], i64 [[TMP27]]
1077+
; DEFAULT-NEXT: [[TMP29:%.*]] = add i8 [[TMP0]], 6
1078+
; DEFAULT-NEXT: store i8 [[TMP29]], ptr [[TMP28]], align 1
1079+
; DEFAULT-NEXT: br label [[PRED_STORE_CONTINUE12]]
1080+
; DEFAULT: pred.store.continue12:
1081+
; DEFAULT-NEXT: [[TMP30:%.*]] = extractelement <8 x i1> [[TMP1]], i32 7
1082+
; DEFAULT-NEXT: br i1 [[TMP30]], label [[PRED_STORE_IF13:%.*]], label [[PRED_STORE_CONTINUE14]]
1083+
; DEFAULT: pred.store.if13:
1084+
; DEFAULT-NEXT: [[TMP31:%.*]] = add i64 [[INDEX]], 7
1085+
; DEFAULT-NEXT: [[TMP32:%.*]] = getelementptr i8, ptr [[DST]], i64 [[TMP31]]
1086+
; DEFAULT-NEXT: [[TMP33:%.*]] = add i8 [[TMP0]], 7
1087+
; DEFAULT-NEXT: store i8 [[TMP33]], ptr [[TMP32]], align 1
1088+
; DEFAULT-NEXT: br label [[PRED_STORE_CONTINUE14]]
1089+
; DEFAULT: pred.store.continue14:
1090+
; DEFAULT-NEXT: [[VEC_IND_NEXT]] = add <8 x i64> [[VEC_IND]], <i64 8, i64 8, i64 8, i64 8, i64 8, i64 8, i64 8, i64 8>
1091+
; DEFAULT-NEXT: [[INDEX_NEXT]] = add i64 [[INDEX]], 8
1092+
; DEFAULT-NEXT: br i1 true, label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP26:![0-9]+]]
1093+
; DEFAULT: middle.block:
1094+
; DEFAULT-NEXT: br i1 true, label [[EXIT:%.*]], label [[SCALAR_PH]]
1095+
; DEFAULT: scalar.ph:
1096+
; DEFAULT-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ 8, [[MIDDLE_BLOCK]] ], [ 0, [[ENTRY:%.*]] ]
1097+
; DEFAULT-NEXT: br label [[LOOP:%.*]]
1098+
; DEFAULT: loop:
1099+
; DEFAULT-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], [[SCALAR_PH]] ], [ [[IV_NEXT:%.*]], [[LOOP]] ]
1100+
; DEFAULT-NEXT: [[IV_TRUNC:%.*]] = trunc i64 [[IV]] to i8
1101+
; DEFAULT-NEXT: [[GEP:%.*]] = getelementptr i8, ptr [[DST]], i64 [[IV]]
1102+
; DEFAULT-NEXT: store i8 [[IV_TRUNC]], ptr [[GEP]], align 1
1103+
; DEFAULT-NEXT: [[IV_NEXT]] = add i64 [[IV]], 1
1104+
; DEFAULT-NEXT: [[EC:%.*]] = icmp eq i64 [[IV_NEXT]], 7
1105+
; DEFAULT-NEXT: br i1 [[EC]], label [[EXIT]], label [[LOOP]], !llvm.loop [[LOOP27:![0-9]+]]
1106+
; DEFAULT: exit:
1107+
; DEFAULT-NEXT: ret void
1108+
;
1109+
; PRED-LABEL: define void @low_trip_count_fold_tail_scalarized_store(
1110+
; PRED-SAME: ptr [[DST:%.*]]) {
1111+
; PRED-NEXT: entry:
1112+
; PRED-NEXT: br i1 false, label [[SCALAR_PH:%.*]], label [[VECTOR_PH:%.*]]
1113+
; PRED: vector.ph:
1114+
; PRED-NEXT: br label [[VECTOR_BODY:%.*]]
1115+
; PRED: vector.body:
1116+
; PRED-NEXT: [[INDEX:%.*]] = phi i64 [ 0, [[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], [[PRED_STORE_CONTINUE14:%.*]] ]
1117+
; PRED-NEXT: [[VEC_IND:%.*]] = phi <8 x i64> [ <i64 0, i64 1, i64 2, i64 3, i64 4, i64 5, i64 6, i64 7>, [[VECTOR_PH]] ], [ [[VEC_IND_NEXT:%.*]], [[PRED_STORE_CONTINUE14]] ]
1118+
; PRED-NEXT: [[TMP0:%.*]] = trunc i64 [[INDEX]] to i8
1119+
; PRED-NEXT: [[TMP1:%.*]] = icmp ule <8 x i64> [[VEC_IND]], <i64 6, i64 6, i64 6, i64 6, i64 6, i64 6, i64 6, i64 6>
1120+
; PRED-NEXT: [[TMP2:%.*]] = extractelement <8 x i1> [[TMP1]], i32 0
1121+
; PRED-NEXT: br i1 [[TMP2]], label [[PRED_STORE_IF:%.*]], label [[PRED_STORE_CONTINUE:%.*]]
1122+
; PRED: pred.store.if:
1123+
; PRED-NEXT: [[TMP3:%.*]] = add i64 [[INDEX]], 0
1124+
; PRED-NEXT: [[TMP4:%.*]] = getelementptr i8, ptr [[DST]], i64 [[TMP3]]
1125+
; PRED-NEXT: [[TMP5:%.*]] = add i8 [[TMP0]], 0
1126+
; PRED-NEXT: store i8 [[TMP5]], ptr [[TMP4]], align 1
1127+
; PRED-NEXT: br label [[PRED_STORE_CONTINUE]]
1128+
; PRED: pred.store.continue:
1129+
; PRED-NEXT: [[TMP6:%.*]] = extractelement <8 x i1> [[TMP1]], i32 1
1130+
; PRED-NEXT: br i1 [[TMP6]], label [[PRED_STORE_IF1:%.*]], label [[PRED_STORE_CONTINUE2:%.*]]
1131+
; PRED: pred.store.if1:
1132+
; PRED-NEXT: [[TMP7:%.*]] = add i64 [[INDEX]], 1
1133+
; PRED-NEXT: [[TMP8:%.*]] = getelementptr i8, ptr [[DST]], i64 [[TMP7]]
1134+
; PRED-NEXT: [[TMP9:%.*]] = add i8 [[TMP0]], 1
1135+
; PRED-NEXT: store i8 [[TMP9]], ptr [[TMP8]], align 1
1136+
; PRED-NEXT: br label [[PRED_STORE_CONTINUE2]]
1137+
; PRED: pred.store.continue2:
1138+
; PRED-NEXT: [[TMP10:%.*]] = extractelement <8 x i1> [[TMP1]], i32 2
1139+
; PRED-NEXT: br i1 [[TMP10]], label [[PRED_STORE_IF3:%.*]], label [[PRED_STORE_CONTINUE4:%.*]]
1140+
; PRED: pred.store.if3:
1141+
; PRED-NEXT: [[TMP11:%.*]] = add i64 [[INDEX]], 2
1142+
; PRED-NEXT: [[TMP12:%.*]] = getelementptr i8, ptr [[DST]], i64 [[TMP11]]
1143+
; PRED-NEXT: [[TMP13:%.*]] = add i8 [[TMP0]], 2
1144+
; PRED-NEXT: store i8 [[TMP13]], ptr [[TMP12]], align 1
1145+
; PRED-NEXT: br label [[PRED_STORE_CONTINUE4]]
1146+
; PRED: pred.store.continue4:
1147+
; PRED-NEXT: [[TMP14:%.*]] = extractelement <8 x i1> [[TMP1]], i32 3
1148+
; PRED-NEXT: br i1 [[TMP14]], label [[PRED_STORE_IF5:%.*]], label [[PRED_STORE_CONTINUE6:%.*]]
1149+
; PRED: pred.store.if5:
1150+
; PRED-NEXT: [[TMP15:%.*]] = add i64 [[INDEX]], 3
1151+
; PRED-NEXT: [[TMP16:%.*]] = getelementptr i8, ptr [[DST]], i64 [[TMP15]]
1152+
; PRED-NEXT: [[TMP17:%.*]] = add i8 [[TMP0]], 3
1153+
; PRED-NEXT: store i8 [[TMP17]], ptr [[TMP16]], align 1
1154+
; PRED-NEXT: br label [[PRED_STORE_CONTINUE6]]
1155+
; PRED: pred.store.continue6:
1156+
; PRED-NEXT: [[TMP18:%.*]] = extractelement <8 x i1> [[TMP1]], i32 4
1157+
; PRED-NEXT: br i1 [[TMP18]], label [[PRED_STORE_IF7:%.*]], label [[PRED_STORE_CONTINUE8:%.*]]
1158+
; PRED: pred.store.if7:
1159+
; PRED-NEXT: [[TMP19:%.*]] = add i64 [[INDEX]], 4
1160+
; PRED-NEXT: [[TMP20:%.*]] = getelementptr i8, ptr [[DST]], i64 [[TMP19]]
1161+
; PRED-NEXT: [[TMP21:%.*]] = add i8 [[TMP0]], 4
1162+
; PRED-NEXT: store i8 [[TMP21]], ptr [[TMP20]], align 1
1163+
; PRED-NEXT: br label [[PRED_STORE_CONTINUE8]]
1164+
; PRED: pred.store.continue8:
1165+
; PRED-NEXT: [[TMP22:%.*]] = extractelement <8 x i1> [[TMP1]], i32 5
1166+
; PRED-NEXT: br i1 [[TMP22]], label [[PRED_STORE_IF9:%.*]], label [[PRED_STORE_CONTINUE10:%.*]]
1167+
; PRED: pred.store.if9:
1168+
; PRED-NEXT: [[TMP23:%.*]] = add i64 [[INDEX]], 5
1169+
; PRED-NEXT: [[TMP24:%.*]] = getelementptr i8, ptr [[DST]], i64 [[TMP23]]
1170+
; PRED-NEXT: [[TMP25:%.*]] = add i8 [[TMP0]], 5
1171+
; PRED-NEXT: store i8 [[TMP25]], ptr [[TMP24]], align 1
1172+
; PRED-NEXT: br label [[PRED_STORE_CONTINUE10]]
1173+
; PRED: pred.store.continue10:
1174+
; PRED-NEXT: [[TMP26:%.*]] = extractelement <8 x i1> [[TMP1]], i32 6
1175+
; PRED-NEXT: br i1 [[TMP26]], label [[PRED_STORE_IF11:%.*]], label [[PRED_STORE_CONTINUE12:%.*]]
1176+
; PRED: pred.store.if11:
1177+
; PRED-NEXT: [[TMP27:%.*]] = add i64 [[INDEX]], 6
1178+
; PRED-NEXT: [[TMP28:%.*]] = getelementptr i8, ptr [[DST]], i64 [[TMP27]]
1179+
; PRED-NEXT: [[TMP29:%.*]] = add i8 [[TMP0]], 6
1180+
; PRED-NEXT: store i8 [[TMP29]], ptr [[TMP28]], align 1
1181+
; PRED-NEXT: br label [[PRED_STORE_CONTINUE12]]
1182+
; PRED: pred.store.continue12:
1183+
; PRED-NEXT: [[TMP30:%.*]] = extractelement <8 x i1> [[TMP1]], i32 7
1184+
; PRED-NEXT: br i1 [[TMP30]], label [[PRED_STORE_IF13:%.*]], label [[PRED_STORE_CONTINUE14]]
1185+
; PRED: pred.store.if13:
1186+
; PRED-NEXT: [[TMP31:%.*]] = add i64 [[INDEX]], 7
1187+
; PRED-NEXT: [[TMP32:%.*]] = getelementptr i8, ptr [[DST]], i64 [[TMP31]]
1188+
; PRED-NEXT: [[TMP33:%.*]] = add i8 [[TMP0]], 7
1189+
; PRED-NEXT: store i8 [[TMP33]], ptr [[TMP32]], align 1
1190+
; PRED-NEXT: br label [[PRED_STORE_CONTINUE14]]
1191+
; PRED: pred.store.continue14:
1192+
; PRED-NEXT: [[VEC_IND_NEXT]] = add <8 x i64> [[VEC_IND]], <i64 8, i64 8, i64 8, i64 8, i64 8, i64 8, i64 8, i64 8>
1193+
; PRED-NEXT: [[INDEX_NEXT]] = add i64 [[INDEX]], 8
1194+
; PRED-NEXT: br i1 true, label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP23:![0-9]+]]
1195+
; PRED: middle.block:
1196+
; PRED-NEXT: br i1 true, label [[EXIT:%.*]], label [[SCALAR_PH]]
1197+
; PRED: scalar.ph:
1198+
; PRED-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ 8, [[MIDDLE_BLOCK]] ], [ 0, [[ENTRY:%.*]] ]
1199+
; PRED-NEXT: br label [[LOOP:%.*]]
1200+
; PRED: loop:
1201+
; PRED-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], [[SCALAR_PH]] ], [ [[IV_NEXT:%.*]], [[LOOP]] ]
1202+
; PRED-NEXT: [[IV_TRUNC:%.*]] = trunc i64 [[IV]] to i8
1203+
; PRED-NEXT: [[GEP:%.*]] = getelementptr i8, ptr [[DST]], i64 [[IV]]
1204+
; PRED-NEXT: store i8 [[IV_TRUNC]], ptr [[GEP]], align 1
1205+
; PRED-NEXT: [[IV_NEXT]] = add i64 [[IV]], 1
1206+
; PRED-NEXT: [[EC:%.*]] = icmp eq i64 [[IV_NEXT]], 7
1207+
; PRED-NEXT: br i1 [[EC]], label [[EXIT]], label [[LOOP]], !llvm.loop [[LOOP24:![0-9]+]]
1208+
; PRED: exit:
1209+
; PRED-NEXT: ret void
1210+
;
1211+
entry:
1212+
br label %loop
1213+
1214+
loop:
1215+
%iv = phi i64 [ 0, %entry ], [ %iv.next, %loop ]
1216+
%iv.trunc = trunc i64 %iv to i8
1217+
%gep = getelementptr i8, ptr %dst, i64 %iv
1218+
store i8 %iv.trunc, ptr %gep, align 1
1219+
%iv.next = add i64 %iv, 1
1220+
%ec = icmp eq i64 %iv.next, 7
1221+
br i1 %ec, label %exit, label %loop
1222+
1223+
exit:
1224+
ret void
1225+
}
1226+
10061227
attributes #1 = { "target-cpu"="neoverse-512tvb" }
10071228

10081229
;.
@@ -1032,6 +1253,8 @@ attributes #1 = { "target-cpu"="neoverse-512tvb" }
10321253
; DEFAULT: [[LOOP23]] = distinct !{[[LOOP23]], [[META1]]}
10331254
; DEFAULT: [[LOOP24]] = distinct !{[[LOOP24]], [[META1]], [[META2]]}
10341255
; DEFAULT: [[LOOP25]] = distinct !{[[LOOP25]], [[META2]], [[META1]]}
1256+
; DEFAULT: [[LOOP26]] = distinct !{[[LOOP26]], [[META1]], [[META2]]}
1257+
; DEFAULT: [[LOOP27]] = distinct !{[[LOOP27]], [[META2]], [[META1]]}
10351258
;.
10361259
; PRED: [[LOOP0]] = distinct !{[[LOOP0]], [[META1:![0-9]+]], [[META2:![0-9]+]]}
10371260
; PRED: [[META1]] = !{!"llvm.loop.isvectorized", i32 1}
@@ -1056,4 +1279,6 @@ attributes #1 = { "target-cpu"="neoverse-512tvb" }
10561279
; PRED: [[LOOP20]] = distinct !{[[LOOP20]], [[META1]]}
10571280
; PRED: [[LOOP21]] = distinct !{[[LOOP21]], [[META1]], [[META2]]}
10581281
; PRED: [[LOOP22]] = distinct !{[[LOOP22]], [[META2]], [[META1]]}
1282+
; PRED: [[LOOP23]] = distinct !{[[LOOP23]], [[META1]], [[META2]]}
1283+
; PRED: [[LOOP24]] = distinct !{[[LOOP24]], [[META2]], [[META1]]}
10591284
;.

0 commit comments

Comments
 (0)