Skip to content

Commit 8a28b9b

Browse files
committed
[ValueTracking] Add tests for insertelement in isKnownNonZero; NFC
1 parent 87528bf commit 8a28b9b

File tree

1 file changed

+96
-0
lines changed

1 file changed

+96
-0
lines changed

llvm/test/Transforms/InstSimplify/known-non-zero.ll

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -293,3 +293,99 @@ define <4 x i1> @shuf_nonzero_rhs2_fail(<4 x i8> %xx) {
293293
%r = icmp eq <4 x i8> %shuf, zeroinitializer
294294
ret <4 x i1> %r
295295
}
296+
297+
define <2 x i1> @insert_nonzero0(<2 x i8> %xx, i8 %yy) {
298+
; CHECK-LABEL: @insert_nonzero0(
299+
; CHECK-NEXT: [[X:%.*]] = add nuw <2 x i8> [[XX:%.*]], <i8 1, i8 0>
300+
; CHECK-NEXT: [[Y:%.*]] = add nuw i8 [[YY:%.*]], 1
301+
; CHECK-NEXT: [[INS:%.*]] = insertelement <2 x i8> [[X]], i8 [[Y]], i32 1
302+
; CHECK-NEXT: [[R:%.*]] = icmp eq <2 x i8> [[INS]], zeroinitializer
303+
; CHECK-NEXT: ret <2 x i1> [[R]]
304+
;
305+
%x = add nuw <2 x i8> %xx, <i8 1, i8 0>
306+
%y = add nuw i8 %yy, 1
307+
308+
%ins = insertelement <2 x i8> %x, i8 %y, i32 1
309+
%r = icmp eq <2 x i8> %ins, zeroinitializer
310+
ret <2 x i1> %r
311+
}
312+
313+
define <2 x i1> @insert_nonzero1(<2 x i8> %xx, i8 %yy) {
314+
; CHECK-LABEL: @insert_nonzero1(
315+
; CHECK-NEXT: [[X:%.*]] = add nuw <2 x i8> [[XX:%.*]], <i8 0, i8 1>
316+
; CHECK-NEXT: [[Y:%.*]] = add nuw i8 [[YY:%.*]], 1
317+
; CHECK-NEXT: [[INS:%.*]] = insertelement <2 x i8> [[X]], i8 [[Y]], i32 0
318+
; CHECK-NEXT: [[R:%.*]] = icmp eq <2 x i8> [[INS]], zeroinitializer
319+
; CHECK-NEXT: ret <2 x i1> [[R]]
320+
;
321+
%x = add nuw <2 x i8> %xx, <i8 0, i8 1>
322+
%y = add nuw i8 %yy, 1
323+
324+
%ins = insertelement <2 x i8> %x, i8 %y, i32 0
325+
%r = icmp eq <2 x i8> %ins, zeroinitializer
326+
ret <2 x i1> %r
327+
}
328+
329+
define <2 x i1> @insert_nonzero_fail(<2 x i8> %xx, i8 %yy) {
330+
; CHECK-LABEL: @insert_nonzero_fail(
331+
; CHECK-NEXT: [[X:%.*]] = add nuw <2 x i8> [[XX:%.*]], <i8 1, i8 0>
332+
; CHECK-NEXT: [[Y:%.*]] = add nuw i8 [[YY:%.*]], 1
333+
; CHECK-NEXT: [[INS:%.*]] = insertelement <2 x i8> [[X]], i8 [[Y]], i32 0
334+
; CHECK-NEXT: [[R:%.*]] = icmp eq <2 x i8> [[INS]], zeroinitializer
335+
; CHECK-NEXT: ret <2 x i1> [[R]]
336+
;
337+
%x = add nuw <2 x i8> %xx, <i8 1, i8 0>
338+
%y = add nuw i8 %yy, 1
339+
340+
%ins = insertelement <2 x i8> %x, i8 %y, i32 0
341+
%r = icmp eq <2 x i8> %ins, zeroinitializer
342+
ret <2 x i1> %r
343+
}
344+
345+
define <2 x i1> @insert_nonzero_fail2(<2 x i8> %xx, i8 %yy) {
346+
; CHECK-LABEL: @insert_nonzero_fail2(
347+
; CHECK-NEXT: [[X:%.*]] = add nuw <2 x i8> [[XX:%.*]], <i8 0, i8 1>
348+
; CHECK-NEXT: [[Y:%.*]] = add i8 [[YY:%.*]], 1
349+
; CHECK-NEXT: [[INS:%.*]] = insertelement <2 x i8> [[X]], i8 [[Y]], i32 0
350+
; CHECK-NEXT: [[R:%.*]] = icmp eq <2 x i8> [[INS]], zeroinitializer
351+
; CHECK-NEXT: ret <2 x i1> [[R]]
352+
;
353+
%x = add nuw <2 x i8> %xx, <i8 0, i8 1>
354+
%y = add i8 %yy, 1
355+
356+
%ins = insertelement <2 x i8> %x, i8 %y, i32 0
357+
%r = icmp eq <2 x i8> %ins, zeroinitializer
358+
ret <2 x i1> %r
359+
}
360+
361+
define <2 x i1> @insert_nonzero_any_idx(<2 x i8> %xx, i8 %yy, i32 %idx) {
362+
; CHECK-LABEL: @insert_nonzero_any_idx(
363+
; CHECK-NEXT: [[X:%.*]] = add nuw <2 x i8> [[XX:%.*]], <i8 1, i8 1>
364+
; CHECK-NEXT: [[Y:%.*]] = add nuw i8 [[YY:%.*]], 1
365+
; CHECK-NEXT: [[INS:%.*]] = insertelement <2 x i8> [[X]], i8 [[Y]], i32 [[IDX:%.*]]
366+
; CHECK-NEXT: [[R:%.*]] = icmp eq <2 x i8> [[INS]], zeroinitializer
367+
; CHECK-NEXT: ret <2 x i1> [[R]]
368+
;
369+
%x = add nuw <2 x i8> %xx, <i8 1, i8 1>
370+
%y = add nuw i8 %yy, 1
371+
372+
%ins = insertelement <2 x i8> %x, i8 %y, i32 %idx
373+
%r = icmp eq <2 x i8> %ins, zeroinitializer
374+
ret <2 x i1> %r
375+
}
376+
377+
define <2 x i1> @insert_nonzero_any_idx_fail(<2 x i8> %xx, i8 %yy, i32 %idx) {
378+
; CHECK-LABEL: @insert_nonzero_any_idx_fail(
379+
; CHECK-NEXT: [[X:%.*]] = add nuw <2 x i8> [[XX:%.*]], <i8 1, i8 0>
380+
; CHECK-NEXT: [[Y:%.*]] = add nuw i8 [[YY:%.*]], 1
381+
; CHECK-NEXT: [[INS:%.*]] = insertelement <2 x i8> [[X]], i8 [[Y]], i32 [[IDX:%.*]]
382+
; CHECK-NEXT: [[R:%.*]] = icmp eq <2 x i8> [[INS]], zeroinitializer
383+
; CHECK-NEXT: ret <2 x i1> [[R]]
384+
;
385+
%x = add nuw <2 x i8> %xx, <i8 1, i8 0>
386+
%y = add nuw i8 %yy, 1
387+
388+
%ins = insertelement <2 x i8> %x, i8 %y, i32 %idx
389+
%r = icmp eq <2 x i8> %ins, zeroinitializer
390+
ret <2 x i1> %r
391+
}

0 commit comments

Comments
 (0)