Skip to content

Commit cfc6908

Browse files
nikicyuxuanchen1997
authored andcommitted
[CVP] Add test for phi merging of vectors (NFC)
Summary: Test Plan: Reviewers: Subscribers: Tasks: Tags: Differential Revision: https://phabricator.intern.facebook.com/D60250905
1 parent 2f01a13 commit cfc6908

File tree

1 file changed

+52
-2
lines changed
  • llvm/test/Transforms/CorrelatedValuePropagation

1 file changed

+52
-2
lines changed

llvm/test/Transforms/CorrelatedValuePropagation/vectors.ll

+52-2
Original file line numberDiff line numberDiff line change
@@ -241,8 +241,6 @@ define <2 x i16> @and_with_poison(<2 x i8> %a) {
241241
ret <2 x i16> %res
242242
}
243243

244-
245-
246244
define <4 x i64> @issue_97674_getConstantOnEdge(i1 %cond) {
247245
; CHECK-LABEL: define <4 x i64> @issue_97674_getConstantOnEdge(
248246
; CHECK-SAME: i1 [[COND:%.*]]) {
@@ -277,3 +275,55 @@ entry:
277275
%folds = add <4 x i64> zeroinitializer, zeroinitializer
278276
ret <4 x i64> %folds
279277
}
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

Comments
 (0)