Skip to content

Commit 3cac608

Browse files
committed
[LV] Add interleave only test case with reduction requiring casts.
This adds test coverage for a crash exposed by d311126349b8fe1684d62154a9fa5a7bbb0b713.
1 parent 3daa771 commit 3cac608

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

llvm/test/Transforms/LoopVectorize/interleave-and-scalarize-only.ll

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,3 +232,40 @@ loop:
232232
exit:
233233
ret void
234234
}
235+
236+
define i16 @reduction_with_casts() {
237+
; CHECK-LABEL: define i16 @reduction_with_casts() {
238+
; CHECK: vector.body:
239+
; CHECK-NEXT: [[INDEX:%.*]] = phi i32 [ 0, [[VECTOR_PH:%.+]] ], [ [[INDEX_NEXT:%.*]], [[VECTOR_BODY:%.+]] ]
240+
; CHECK-NEXT: [[VEC_PHI:%.*]] = phi i32 [ 0, [[VECTOR_PH]] ], [ [[TMP2:%.*]], [[VECTOR_BODY]] ]
241+
; CHECK-NEXT: [[VEC_PHI1:%.*]] = phi i32 [ 0, [[VECTOR_PH]] ], [ [[TMP3:%.*]], [[VECTOR_BODY]] ]
242+
; CHECK-NEXT: [[TMP0:%.*]] = and i32 [[VEC_PHI]], 65535
243+
; CHECK-NEXT: [[TMP1:%.*]] = and i32 [[VEC_PHI1]], 65535
244+
; CHECK-NEXT: [[TMP2]] = add i32 [[TMP0]], 1
245+
; CHECK-NEXT: [[TMP3]] = add i32 [[TMP1]], 1
246+
; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i32 [[INDEX]], 2
247+
; CHECK-NEXT: [[TMP4:%.*]] = icmp eq i32 [[INDEX_NEXT]], 9998
248+
; CHECK-NEXT: br i1 [[TMP4]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]]
249+
; CHECK: middle.block:
250+
; CHECK-NEXT: [[BIN_RDX:%.*]] = add i32 [[TMP3]], [[TMP2]]
251+
; CHECK-NEXT: br i1 false, label [[EXIT:%.*]], label %scalar.ph
252+
;
253+
entry:
254+
br label %loop
255+
256+
loop:
257+
%count.0.in1 = phi i32 [ 0, %entry ], [ %add, %loop ]
258+
%iv = phi i16 [ 1, %entry ], [ %iv.next, %loop ]
259+
%conv1 = and i32 %count.0.in1, 65535
260+
%add = add nuw nsw i32 %conv1, 1
261+
%iv.next = add i16 %iv, 1
262+
%cmp = icmp eq i16 %iv.next, 10000
263+
br i1 %cmp, label %exit, label %loop
264+
265+
exit:
266+
%add.lcssa = phi i32 [ %add, %loop ]
267+
%count.0 = trunc i32 %add.lcssa to i16
268+
ret i16 %count.0
269+
}
270+
;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
271+
; DBG: {{.*}}

0 commit comments

Comments
 (0)