Skip to content

Commit da100db

Browse files
committed
[SelectionDAG]: Pre-commit tests (NFC)
1 parent de0abc0 commit da100db

File tree

1 file changed

+78
-44
lines changed

1 file changed

+78
-44
lines changed

llvm/test/CodeGen/X86/known-never-zero.ll

Lines changed: 78 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -267,18 +267,33 @@ define i32 @smin_known_nonzero(i32 %xx, i32 %yy) {
267267
ret i32 %r
268268
}
269269

270+
define i32 @smin_known_zero_2(i32 %x, i32 %y) {
271+
; CHECK-LABEL: smin_known_zero_2:
272+
; CHECK: # %bb.0:
273+
; CHECK-NEXT: cmpl $-54, %edi
274+
; CHECK-NEXT: movl $-54, %eax
275+
; CHECK-NEXT: cmovll %edi, %eax
276+
; CHECK-NEXT: bsfl %eax, %ecx
277+
; CHECK-NEXT: movl $32, %eax
278+
; CHECK-NEXT: cmovnel %ecx, %eax
279+
; CHECK-NEXT: retq
280+
%z = call i32 @llvm.smin.i32(i32 %x, i32 -54)
281+
%r = call i32 @llvm.cttz.i32(i32 %z, i1 false)
282+
ret i32 %r
283+
}
284+
270285
define i32 @smin_maybe_zero(i32 %x, i32 %y) {
271286
; CHECK-LABEL: smin_maybe_zero:
272287
; CHECK: # %bb.0:
273288
; CHECK-NEXT: cmpl $54, %edi
274289
; CHECK-NEXT: movl $54, %eax
275290
; CHECK-NEXT: cmovll %edi, %eax
276291
; CHECK-NEXT: testl %eax, %eax
277-
; CHECK-NEXT: je .LBB15_1
292+
; CHECK-NEXT: je .LBB16_1
278293
; CHECK-NEXT: # %bb.2: # %cond.false
279294
; CHECK-NEXT: rep bsfl %eax, %eax
280295
; CHECK-NEXT: retq
281-
; CHECK-NEXT: .LBB15_1:
296+
; CHECK-NEXT: .LBB16_1:
282297
; CHECK-NEXT: movl $32, %eax
283298
; CHECK-NEXT: retq
284299
%z = call i32 @llvm.smin.i32(i32 %x, i32 54)
@@ -305,8 +320,8 @@ define i32 @smax_known_nonzero(i32 %xx, i32 %yy) {
305320
ret i32 %r
306321
}
307322

308-
define i32 @smax_maybe_zero(i32 %x, i32 %y) {
309-
; CHECK-LABEL: smax_maybe_zero:
323+
define i32 @smax_known_zero_2(i32 %x, i32 %y) {
324+
; CHECK-LABEL: smax_known_zero_2:
310325
; CHECK: # %bb.0:
311326
; CHECK-NEXT: cmpl $55, %edi
312327
; CHECK-NEXT: movl $54, %eax
@@ -320,6 +335,25 @@ define i32 @smax_maybe_zero(i32 %x, i32 %y) {
320335
ret i32 %r
321336
}
322337

338+
define i32 @smax_maybe_zero(i32 %x, i32 %y) {
339+
; CHECK-LABEL: smax_maybe_zero:
340+
; CHECK: # %bb.0:
341+
; CHECK-NEXT: testl %edi, %edi
342+
; CHECK-NEXT: movl $-1, %eax
343+
; CHECK-NEXT: cmovnsl %edi, %eax
344+
; CHECK-NEXT: testl %eax, %eax
345+
; CHECK-NEXT: je .LBB19_1
346+
; CHECK-NEXT: # %bb.2: # %cond.false
347+
; CHECK-NEXT: rep bsfl %eax, %eax
348+
; CHECK-NEXT: retq
349+
; CHECK-NEXT: .LBB19_1:
350+
; CHECK-NEXT: movl $32, %eax
351+
; CHECK-NEXT: retq
352+
%z = call i32 @llvm.smax.i32(i32 %x, i32 -1)
353+
%r = call i32 @llvm.cttz.i32(i32 %z, i1 false)
354+
ret i32 %r
355+
}
356+
323357
define i32 @rotr_known_nonzero(i32 %xx, i32 %y) {
324358
; CHECK-LABEL: rotr_known_nonzero:
325359
; CHECK: # %bb.0:
@@ -328,11 +362,11 @@ define i32 @rotr_known_nonzero(i32 %xx, i32 %y) {
328362
; CHECK-NEXT: # kill: def $cl killed $cl killed $ecx
329363
; CHECK-NEXT: rorl %cl, %edi
330364
; CHECK-NEXT: testl %edi, %edi
331-
; CHECK-NEXT: je .LBB18_1
365+
; CHECK-NEXT: je .LBB20_1
332366
; CHECK-NEXT: # %bb.2: # %cond.false
333367
; CHECK-NEXT: rep bsfl %edi, %eax
334368
; CHECK-NEXT: retq
335-
; CHECK-NEXT: .LBB18_1:
369+
; CHECK-NEXT: .LBB20_1:
336370
; CHECK-NEXT: movl $32, %eax
337371
; CHECK-NEXT: retq
338372
%x = or i32 %xx, 256
@@ -351,11 +385,11 @@ define i32 @rotr_maybe_zero(i32 %x, i32 %y) {
351385
; CHECK-NEXT: # kill: def $cl killed $cl killed $ecx
352386
; CHECK-NEXT: rorl %cl, %edi
353387
; CHECK-NEXT: testl %edi, %edi
354-
; CHECK-NEXT: je .LBB19_1
388+
; CHECK-NEXT: je .LBB21_1
355389
; CHECK-NEXT: # %bb.2: # %cond.false
356390
; CHECK-NEXT: rep bsfl %edi, %eax
357391
; CHECK-NEXT: retq
358-
; CHECK-NEXT: .LBB19_1:
392+
; CHECK-NEXT: .LBB21_1:
359393
; CHECK-NEXT: movl $32, %eax
360394
; CHECK-NEXT: retq
361395
%shr = lshr i32 %x, %y
@@ -388,11 +422,11 @@ define i32 @rotr_with_fshr_maybe_zero(i32 %x, i32 %y) {
388422
; CHECK-NEXT: # kill: def $cl killed $cl killed $ecx
389423
; CHECK-NEXT: rorl %cl, %edi
390424
; CHECK-NEXT: testl %edi, %edi
391-
; CHECK-NEXT: je .LBB21_1
425+
; CHECK-NEXT: je .LBB23_1
392426
; CHECK-NEXT: # %bb.2: # %cond.false
393427
; CHECK-NEXT: rep bsfl %edi, %eax
394428
; CHECK-NEXT: retq
395-
; CHECK-NEXT: .LBB21_1:
429+
; CHECK-NEXT: .LBB23_1:
396430
; CHECK-NEXT: movl $32, %eax
397431
; CHECK-NEXT: retq
398432
%z = call i32 @llvm.fshr.i32(i32 %x, i32 %x, i32 %y)
@@ -408,11 +442,11 @@ define i32 @rotl_known_nonzero(i32 %xx, i32 %y) {
408442
; CHECK-NEXT: # kill: def $cl killed $cl killed $ecx
409443
; CHECK-NEXT: roll %cl, %edi
410444
; CHECK-NEXT: testl %edi, %edi
411-
; CHECK-NEXT: je .LBB22_1
445+
; CHECK-NEXT: je .LBB24_1
412446
; CHECK-NEXT: # %bb.2: # %cond.false
413447
; CHECK-NEXT: rep bsfl %edi, %eax
414448
; CHECK-NEXT: retq
415-
; CHECK-NEXT: .LBB22_1:
449+
; CHECK-NEXT: .LBB24_1:
416450
; CHECK-NEXT: movl $32, %eax
417451
; CHECK-NEXT: retq
418452
%x = or i32 %xx, 256
@@ -431,11 +465,11 @@ define i32 @rotl_maybe_zero(i32 %x, i32 %y) {
431465
; CHECK-NEXT: # kill: def $cl killed $cl killed $ecx
432466
; CHECK-NEXT: roll %cl, %edi
433467
; CHECK-NEXT: testl %edi, %edi
434-
; CHECK-NEXT: je .LBB23_1
468+
; CHECK-NEXT: je .LBB25_1
435469
; CHECK-NEXT: # %bb.2: # %cond.false
436470
; CHECK-NEXT: rep bsfl %edi, %eax
437471
; CHECK-NEXT: retq
438-
; CHECK-NEXT: .LBB23_1:
472+
; CHECK-NEXT: .LBB25_1:
439473
; CHECK-NEXT: movl $32, %eax
440474
; CHECK-NEXT: retq
441475
%shl = shl i32 %x, %y
@@ -468,11 +502,11 @@ define i32 @rotl_with_fshl_maybe_zero(i32 %x, i32 %y) {
468502
; CHECK-NEXT: # kill: def $cl killed $cl killed $ecx
469503
; CHECK-NEXT: roll %cl, %edi
470504
; CHECK-NEXT: testl %edi, %edi
471-
; CHECK-NEXT: je .LBB25_1
505+
; CHECK-NEXT: je .LBB27_1
472506
; CHECK-NEXT: # %bb.2: # %cond.false
473507
; CHECK-NEXT: rep bsfl %edi, %eax
474508
; CHECK-NEXT: retq
475-
; CHECK-NEXT: .LBB25_1:
509+
; CHECK-NEXT: .LBB27_1:
476510
; CHECK-NEXT: movl $32, %eax
477511
; CHECK-NEXT: retq
478512
%z = call i32 @llvm.fshl.i32(i32 %x, i32 %x, i32 %y)
@@ -516,11 +550,11 @@ define i32 @sra_maybe_zero(i32 %x, i32 %y) {
516550
; CHECK-NEXT: # kill: def $cl killed $cl killed $ecx
517551
; CHECK-NEXT: sarl %cl, %esi
518552
; CHECK-NEXT: testl %esi, %esi
519-
; CHECK-NEXT: je .LBB28_1
553+
; CHECK-NEXT: je .LBB30_1
520554
; CHECK-NEXT: # %bb.2: # %cond.false
521555
; CHECK-NEXT: rep bsfl %esi, %eax
522556
; CHECK-NEXT: retq
523-
; CHECK-NEXT: .LBB28_1:
557+
; CHECK-NEXT: .LBB30_1:
524558
; CHECK-NEXT: movl $32, %eax
525559
; CHECK-NEXT: retq
526560
%z = ashr exact i32 %y, %x
@@ -564,11 +598,11 @@ define i32 @srl_maybe_zero(i32 %x, i32 %y) {
564598
; CHECK-NEXT: # kill: def $cl killed $cl killed $ecx
565599
; CHECK-NEXT: shrl %cl, %esi
566600
; CHECK-NEXT: testl %esi, %esi
567-
; CHECK-NEXT: je .LBB31_1
601+
; CHECK-NEXT: je .LBB33_1
568602
; CHECK-NEXT: # %bb.2: # %cond.false
569603
; CHECK-NEXT: rep bsfl %esi, %eax
570604
; CHECK-NEXT: retq
571-
; CHECK-NEXT: .LBB31_1:
605+
; CHECK-NEXT: .LBB33_1:
572606
; CHECK-NEXT: movl $32, %eax
573607
; CHECK-NEXT: retq
574608
%z = lshr exact i32 %y, %x
@@ -598,11 +632,11 @@ define i32 @udiv_maybe_zero(i32 %x, i32 %y) {
598632
; CHECK-NEXT: xorl %edx, %edx
599633
; CHECK-NEXT: divl %esi
600634
; CHECK-NEXT: testl %eax, %eax
601-
; CHECK-NEXT: je .LBB33_1
635+
; CHECK-NEXT: je .LBB35_1
602636
; CHECK-NEXT: # %bb.2: # %cond.false
603637
; CHECK-NEXT: rep bsfl %eax, %eax
604638
; CHECK-NEXT: retq
605-
; CHECK-NEXT: .LBB33_1:
639+
; CHECK-NEXT: .LBB35_1:
606640
; CHECK-NEXT: movl $32, %eax
607641
; CHECK-NEXT: retq
608642
%z = udiv exact i32 %x, %y
@@ -632,11 +666,11 @@ define i32 @sdiv_maybe_zero(i32 %x, i32 %y) {
632666
; CHECK-NEXT: cltd
633667
; CHECK-NEXT: idivl %esi
634668
; CHECK-NEXT: testl %eax, %eax
635-
; CHECK-NEXT: je .LBB35_1
669+
; CHECK-NEXT: je .LBB37_1
636670
; CHECK-NEXT: # %bb.2: # %cond.false
637671
; CHECK-NEXT: rep bsfl %eax, %eax
638672
; CHECK-NEXT: retq
639-
; CHECK-NEXT: .LBB35_1:
673+
; CHECK-NEXT: .LBB37_1:
640674
; CHECK-NEXT: movl $32, %eax
641675
; CHECK-NEXT: retq
642676
%z = sdiv exact i32 %x, %y
@@ -662,11 +696,11 @@ define i32 @add_maybe_zero(i32 %xx, i32 %y) {
662696
; CHECK: # %bb.0:
663697
; CHECK-NEXT: orl $1, %edi
664698
; CHECK-NEXT: addl %esi, %edi
665-
; CHECK-NEXT: je .LBB37_1
699+
; CHECK-NEXT: je .LBB39_1
666700
; CHECK-NEXT: # %bb.2: # %cond.false
667701
; CHECK-NEXT: rep bsfl %edi, %eax
668702
; CHECK-NEXT: retq
669-
; CHECK-NEXT: .LBB37_1:
703+
; CHECK-NEXT: .LBB39_1:
670704
; CHECK-NEXT: movl $32, %eax
671705
; CHECK-NEXT: retq
672706
%x = or i32 %xx, 1
@@ -713,11 +747,11 @@ define i32 @sub_maybe_zero(i32 %x) {
713747
; CHECK-NEXT: movl %edi, %eax
714748
; CHECK-NEXT: orl $64, %eax
715749
; CHECK-NEXT: subl %edi, %eax
716-
; CHECK-NEXT: je .LBB40_1
750+
; CHECK-NEXT: je .LBB42_1
717751
; CHECK-NEXT: # %bb.2: # %cond.false
718752
; CHECK-NEXT: rep bsfl %eax, %eax
719753
; CHECK-NEXT: retq
720-
; CHECK-NEXT: .LBB40_1:
754+
; CHECK-NEXT: .LBB42_1:
721755
; CHECK-NEXT: movl $32, %eax
722756
; CHECK-NEXT: retq
723757
%y = or i32 %x, 64
@@ -730,11 +764,11 @@ define i32 @sub_maybe_zero2(i32 %x) {
730764
; CHECK-LABEL: sub_maybe_zero2:
731765
; CHECK: # %bb.0:
732766
; CHECK-NEXT: negl %edi
733-
; CHECK-NEXT: je .LBB41_1
767+
; CHECK-NEXT: je .LBB43_1
734768
; CHECK-NEXT: # %bb.2: # %cond.false
735769
; CHECK-NEXT: rep bsfl %edi, %eax
736770
; CHECK-NEXT: retq
737-
; CHECK-NEXT: .LBB41_1:
771+
; CHECK-NEXT: .LBB43_1:
738772
; CHECK-NEXT: movl $32, %eax
739773
; CHECK-NEXT: retq
740774
%z = sub i32 0, %x
@@ -748,11 +782,11 @@ define i32 @mul_known_nonzero_nsw(i32 %x, i32 %yy) {
748782
; CHECK-NEXT: orl $256, %esi # imm = 0x100
749783
; CHECK-NEXT: imull %edi, %esi
750784
; CHECK-NEXT: testl %esi, %esi
751-
; CHECK-NEXT: je .LBB42_1
785+
; CHECK-NEXT: je .LBB44_1
752786
; CHECK-NEXT: # %bb.2: # %cond.false
753787
; CHECK-NEXT: rep bsfl %esi, %eax
754788
; CHECK-NEXT: retq
755-
; CHECK-NEXT: .LBB42_1:
789+
; CHECK-NEXT: .LBB44_1:
756790
; CHECK-NEXT: movl $32, %eax
757791
; CHECK-NEXT: retq
758792
%y = or i32 %yy, 256
@@ -767,11 +801,11 @@ define i32 @mul_known_nonzero_nuw(i32 %x, i32 %yy) {
767801
; CHECK-NEXT: orl $256, %esi # imm = 0x100
768802
; CHECK-NEXT: imull %edi, %esi
769803
; CHECK-NEXT: testl %esi, %esi
770-
; CHECK-NEXT: je .LBB43_1
804+
; CHECK-NEXT: je .LBB45_1
771805
; CHECK-NEXT: # %bb.2: # %cond.false
772806
; CHECK-NEXT: rep bsfl %esi, %eax
773807
; CHECK-NEXT: retq
774-
; CHECK-NEXT: .LBB43_1:
808+
; CHECK-NEXT: .LBB45_1:
775809
; CHECK-NEXT: movl $32, %eax
776810
; CHECK-NEXT: retq
777811
%y = or i32 %yy, 256
@@ -785,11 +819,11 @@ define i32 @mul_maybe_zero(i32 %x, i32 %y) {
785819
; CHECK: # %bb.0:
786820
; CHECK-NEXT: imull %esi, %edi
787821
; CHECK-NEXT: testl %edi, %edi
788-
; CHECK-NEXT: je .LBB44_1
822+
; CHECK-NEXT: je .LBB46_1
789823
; CHECK-NEXT: # %bb.2: # %cond.false
790824
; CHECK-NEXT: rep bsfl %edi, %eax
791825
; CHECK-NEXT: retq
792-
; CHECK-NEXT: .LBB44_1:
826+
; CHECK-NEXT: .LBB46_1:
793827
; CHECK-NEXT: movl $32, %eax
794828
; CHECK-NEXT: retq
795829
%z = mul nuw nsw i32 %y, %x
@@ -822,11 +856,11 @@ define i32 @bitcast_maybe_zero(<2 x i16> %x) {
822856
; CHECK: # %bb.0:
823857
; CHECK-NEXT: movd %xmm0, %eax
824858
; CHECK-NEXT: testl %eax, %eax
825-
; CHECK-NEXT: je .LBB46_1
859+
; CHECK-NEXT: je .LBB48_1
826860
; CHECK-NEXT: # %bb.2: # %cond.false
827861
; CHECK-NEXT: rep bsfl %eax, %eax
828862
; CHECK-NEXT: retq
829-
; CHECK-NEXT: .LBB46_1:
863+
; CHECK-NEXT: .LBB48_1:
830864
; CHECK-NEXT: movl $32, %eax
831865
; CHECK-NEXT: retq
832866
%z = bitcast <2 x i16> %x to i32
@@ -839,11 +873,11 @@ define i32 @bitcast_from_float(float %x) {
839873
; CHECK: # %bb.0:
840874
; CHECK-NEXT: movd %xmm0, %eax
841875
; CHECK-NEXT: testl %eax, %eax
842-
; CHECK-NEXT: je .LBB47_1
876+
; CHECK-NEXT: je .LBB49_1
843877
; CHECK-NEXT: # %bb.2: # %cond.false
844878
; CHECK-NEXT: rep bsfl %eax, %eax
845879
; CHECK-NEXT: retq
846-
; CHECK-NEXT: .LBB47_1:
880+
; CHECK-NEXT: .LBB49_1:
847881
; CHECK-NEXT: movl $32, %eax
848882
; CHECK-NEXT: retq
849883
%z = bitcast float %x to i32
@@ -871,12 +905,12 @@ define i32 @zext_maybe_zero(i16 %x) {
871905
; CHECK-LABEL: zext_maybe_zero:
872906
; CHECK: # %bb.0:
873907
; CHECK-NEXT: testw %di, %di
874-
; CHECK-NEXT: je .LBB49_1
908+
; CHECK-NEXT: je .LBB51_1
875909
; CHECK-NEXT: # %bb.2: # %cond.false
876910
; CHECK-NEXT: movzwl %di, %eax
877911
; CHECK-NEXT: rep bsfl %eax, %eax
878912
; CHECK-NEXT: retq
879-
; CHECK-NEXT: .LBB49_1:
913+
; CHECK-NEXT: .LBB51_1:
880914
; CHECK-NEXT: movl $32, %eax
881915
; CHECK-NEXT: retq
882916
%z = zext i16 %x to i32
@@ -904,12 +938,12 @@ define i32 @sext_maybe_zero(i16 %x) {
904938
; CHECK-LABEL: sext_maybe_zero:
905939
; CHECK: # %bb.0:
906940
; CHECK-NEXT: testw %di, %di
907-
; CHECK-NEXT: je .LBB51_1
941+
; CHECK-NEXT: je .LBB53_1
908942
; CHECK-NEXT: # %bb.2: # %cond.false
909943
; CHECK-NEXT: movswl %di, %eax
910944
; CHECK-NEXT: rep bsfl %eax, %eax
911945
; CHECK-NEXT: retq
912-
; CHECK-NEXT: .LBB51_1:
946+
; CHECK-NEXT: .LBB53_1:
913947
; CHECK-NEXT: movl $32, %eax
914948
; CHECK-NEXT: retq
915949
%z = sext i16 %x to i32

0 commit comments

Comments
 (0)