@@ -241,8 +241,6 @@ define <2 x i16> @and_with_poison(<2 x i8> %a) {
241
241
ret <2 x i16 > %res
242
242
}
243
243
244
-
245
-
246
244
define <4 x i64 > @issue_97674_getConstantOnEdge (i1 %cond ) {
247
245
; CHECK-LABEL: define <4 x i64> @issue_97674_getConstantOnEdge(
248
246
; CHECK-SAME: i1 [[COND:%.*]]) {
@@ -277,3 +275,55 @@ entry:
277
275
%folds = add <4 x i64 > zeroinitializer , zeroinitializer
278
276
ret <4 x i64 > %folds
279
277
}
278
+
279
+ define <2 x i16 > @phi_merge1 (i1 %c , <2 x i8 > %a ) {
280
+ ; CHECK-LABEL: define <2 x i16> @phi_merge1(
281
+ ; CHECK-SAME: i1 [[C:%.*]], <2 x i8> [[A:%.*]]) {
282
+ ; CHECK-NEXT: [[ENTRY:.*]]:
283
+ ; CHECK-NEXT: [[ZEXT:%.*]] = zext <2 x i8> [[A]] to <2 x i16>
284
+ ; CHECK-NEXT: br i1 [[C]], label %[[IF:.*]], label %[[JOIN:.*]]
285
+ ; CHECK: [[IF]]:
286
+ ; CHECK-NEXT: br label %[[JOIN]]
287
+ ; CHECK: [[JOIN]]:
288
+ ; CHECK-NEXT: [[PHI:%.*]] = phi <2 x i16> [ [[ZEXT]], %[[ENTRY]] ], [ <i16 1, i16 2>, %[[IF]] ]
289
+ ; CHECK-NEXT: [[ADD:%.*]] = add <2 x i16> [[PHI]], <i16 2, i16 3>
290
+ ; CHECK-NEXT: ret <2 x i16> [[ADD]]
291
+ ;
292
+ entry:
293
+ %zext = zext <2 x i8 > %a to <2 x i16 >
294
+ br i1 %c , label %if , label %join
295
+
296
+ if:
297
+ br label %join
298
+
299
+ join:
300
+ %phi = phi <2 x i16 > [ %zext , %entry ], [ <i16 1 , i16 2 >, %if ]
301
+ %add = add <2 x i16 > %phi , <i16 2 , i16 3 >
302
+ ret <2 x i16 > %add
303
+ }
304
+
305
+ define <2 x i16 > @phi_merge2 (i1 %c , <2 x i8 > %a ) {
306
+ ; CHECK-LABEL: define <2 x i16> @phi_merge2(
307
+ ; CHECK-SAME: i1 [[C:%.*]], <2 x i8> [[A:%.*]]) {
308
+ ; CHECK-NEXT: [[ENTRY:.*]]:
309
+ ; CHECK-NEXT: [[ZEXT:%.*]] = zext <2 x i8> [[A]] to <2 x i16>
310
+ ; CHECK-NEXT: br i1 [[C]], label %[[IF:.*]], label %[[JOIN:.*]]
311
+ ; CHECK: [[IF]]:
312
+ ; CHECK-NEXT: br label %[[JOIN]]
313
+ ; CHECK: [[JOIN]]:
314
+ ; CHECK-NEXT: [[PHI:%.*]] = phi <2 x i16> [ <i16 1, i16 2>, %[[ENTRY]] ], [ [[ZEXT]], %[[IF]] ]
315
+ ; CHECK-NEXT: [[ADD:%.*]] = add <2 x i16> [[PHI]], <i16 2, i16 3>
316
+ ; CHECK-NEXT: ret <2 x i16> [[ADD]]
317
+ ;
318
+ entry:
319
+ %zext = zext <2 x i8 > %a to <2 x i16 >
320
+ br i1 %c , label %if , label %join
321
+
322
+ if:
323
+ br label %join
324
+
325
+ join:
326
+ %phi = phi <2 x i16 > [ <i16 1 , i16 2 >, %entry ], [ %zext , %if ]
327
+ %add = add <2 x i16 > %phi , <i16 2 , i16 3 >
328
+ ret <2 x i16 > %add
329
+ }
0 commit comments