@@ -502,13 +502,24 @@ define double @fmaxnum64_non_zero_intrinsic(double %x) {
502
502
define <4 x float > @fminnumv432_intrinsic (<4 x float > %x , <4 x float > %y ) {
503
503
; ARMV7-LABEL: fminnumv432_intrinsic:
504
504
; ARMV7: @ %bb.0:
505
- ; ARMV7-NEXT: vmov d17, r2, r3
506
- ; ARMV7-NEXT: vmov d16, r0, r1
507
- ; ARMV7-NEXT: mov r0, sp
508
- ; ARMV7-NEXT: vld1.64 {d18, d19}, [r0]
509
- ; ARMV7-NEXT: vmin.f32 q8, q8, q9
510
- ; ARMV7-NEXT: vmov r0, r1, d16
511
- ; ARMV7-NEXT: vmov r2, r3, d17
505
+ ; ARMV7-NEXT: mov r12, sp
506
+ ; ARMV7-NEXT: vld1.64 {d0, d1}, [r12]
507
+ ; ARMV7-NEXT: vmov d3, r2, r3
508
+ ; ARMV7-NEXT: vmov d2, r0, r1
509
+ ; ARMV7-NEXT: vcmp.f32 s7, s3
510
+ ; ARMV7-NEXT: vmrs APSR_nzcv, fpscr
511
+ ; ARMV7-NEXT: vcmp.f32 s6, s2
512
+ ; ARMV7-NEXT: vmovlt.f32 s3, s7
513
+ ; ARMV7-NEXT: vmrs APSR_nzcv, fpscr
514
+ ; ARMV7-NEXT: vcmp.f32 s5, s1
515
+ ; ARMV7-NEXT: vmovlt.f32 s2, s6
516
+ ; ARMV7-NEXT: vmrs APSR_nzcv, fpscr
517
+ ; ARMV7-NEXT: vcmp.f32 s4, s0
518
+ ; ARMV7-NEXT: vmovlt.f32 s1, s5
519
+ ; ARMV7-NEXT: vmrs APSR_nzcv, fpscr
520
+ ; ARMV7-NEXT: vmovlt.f32 s0, s4
521
+ ; ARMV7-NEXT: vmov r2, r3, d1
522
+ ; ARMV7-NEXT: vmov r0, r1, d0
512
523
; ARMV7-NEXT: bx lr
513
524
;
514
525
; ARMV8-LABEL: fminnumv432_intrinsic:
@@ -635,21 +646,31 @@ define <4 x float> @fminnumv432_non_zero_intrinsic(<4 x float> %x) {
635
646
define <4 x float > @fminnumv432_one_zero_intrinsic (<4 x float > %x ) {
636
647
; ARMV7-LABEL: fminnumv432_one_zero_intrinsic:
637
648
; ARMV7: @ %bb.0:
638
- ; ARMV7-NEXT: vmov d17, r2, r3
639
- ; ARMV7-NEXT: vmov d16, r0, r1
640
- ; ARMV7-NEXT: adr r0, .LCPI18_0
641
- ; ARMV7-NEXT: vld1.64 {d18, d19}, [r0:128]
642
- ; ARMV7-NEXT: vmin.f32 q8, q8, q9
643
- ; ARMV7-NEXT: vmov r0, r1, d16
644
- ; ARMV7-NEXT: vmov r2, r3, d17
649
+ ; ARMV7-NEXT: vmov d3, r2, r3
650
+ ; ARMV7-NEXT: vmov d2, r0, r1
651
+ ; ARMV7-NEXT: vmov.f32 s0, #-1.000000e+00
652
+ ; ARMV7-NEXT: vcmp.f32 s5, #0
653
+ ; ARMV7-NEXT: vldr s1, .LCPI18_0
654
+ ; ARMV7-NEXT: vmrs APSR_nzcv, fpscr
655
+ ; ARMV7-NEXT: vcmp.f32 s7, s0
656
+ ; ARMV7-NEXT: vmovlt.f32 s1, s5
657
+ ; ARMV7-NEXT: vmrs APSR_nzcv, fpscr
658
+ ; ARMV7-NEXT: vmov.f32 s3, s0
659
+ ; ARMV7-NEXT: vcmp.f32 s6, s0
660
+ ; ARMV7-NEXT: vmovlt.f32 s3, s7
661
+ ; ARMV7-NEXT: vmrs APSR_nzcv, fpscr
662
+ ; ARMV7-NEXT: vmov.f32 s2, s0
663
+ ; ARMV7-NEXT: vcmp.f32 s4, s0
664
+ ; ARMV7-NEXT: vmovlt.f32 s2, s6
665
+ ; ARMV7-NEXT: vmrs APSR_nzcv, fpscr
666
+ ; ARMV7-NEXT: vmovlt.f32 s0, s4
667
+ ; ARMV7-NEXT: vmov r2, r3, d1
668
+ ; ARMV7-NEXT: vmov r0, r1, d0
645
669
; ARMV7-NEXT: bx lr
646
- ; ARMV7-NEXT: .p2align 4
670
+ ; ARMV7-NEXT: .p2align 2
647
671
; ARMV7-NEXT: @ %bb.1:
648
672
; ARMV7-NEXT: .LCPI18_0:
649
- ; ARMV7-NEXT: .long 0xbf800000 @ float -1
650
673
; ARMV7-NEXT: .long 0x00000000 @ float 0
651
- ; ARMV7-NEXT: .long 0xbf800000 @ float -1
652
- ; ARMV7-NEXT: .long 0xbf800000 @ float -1
653
674
;
654
675
; ARMV8-LABEL: fminnumv432_one_zero_intrinsic:
655
676
; ARMV8: @ %bb.0:
@@ -697,13 +718,24 @@ define <4 x float> @fminnumv432_one_zero_intrinsic(<4 x float> %x) {
697
718
define <4 x float > @fmaxnumv432_intrinsic (<4 x float > %x , <4 x float > %y ) {
698
719
; ARMV7-LABEL: fmaxnumv432_intrinsic:
699
720
; ARMV7: @ %bb.0:
700
- ; ARMV7-NEXT: vmov d17, r2, r3
701
- ; ARMV7-NEXT: vmov d16, r0, r1
702
- ; ARMV7-NEXT: mov r0, sp
703
- ; ARMV7-NEXT: vld1.64 {d18, d19}, [r0]
704
- ; ARMV7-NEXT: vmax.f32 q8, q8, q9
705
- ; ARMV7-NEXT: vmov r0, r1, d16
706
- ; ARMV7-NEXT: vmov r2, r3, d17
721
+ ; ARMV7-NEXT: mov r12, sp
722
+ ; ARMV7-NEXT: vld1.64 {d0, d1}, [r12]
723
+ ; ARMV7-NEXT: vmov d3, r2, r3
724
+ ; ARMV7-NEXT: vmov d2, r0, r1
725
+ ; ARMV7-NEXT: vcmp.f32 s7, s3
726
+ ; ARMV7-NEXT: vmrs APSR_nzcv, fpscr
727
+ ; ARMV7-NEXT: vcmp.f32 s6, s2
728
+ ; ARMV7-NEXT: vmovgt.f32 s3, s7
729
+ ; ARMV7-NEXT: vmrs APSR_nzcv, fpscr
730
+ ; ARMV7-NEXT: vcmp.f32 s5, s1
731
+ ; ARMV7-NEXT: vmovgt.f32 s2, s6
732
+ ; ARMV7-NEXT: vmrs APSR_nzcv, fpscr
733
+ ; ARMV7-NEXT: vcmp.f32 s4, s0
734
+ ; ARMV7-NEXT: vmovgt.f32 s1, s5
735
+ ; ARMV7-NEXT: vmrs APSR_nzcv, fpscr
736
+ ; ARMV7-NEXT: vmovgt.f32 s0, s4
737
+ ; ARMV7-NEXT: vmov r2, r3, d1
738
+ ; ARMV7-NEXT: vmov r0, r1, d0
707
739
; ARMV7-NEXT: bx lr
708
740
;
709
741
; ARMV8-LABEL: fmaxnumv432_intrinsic:
@@ -789,13 +821,31 @@ define <4 x float> @fmaxnumv432_nsz_intrinsic(<4 x float> %x, <4 x float> %y) {
789
821
define <4 x float > @fmaxnumv432_zero_intrinsic (<4 x float > %x ) {
790
822
; ARMV7-LABEL: fmaxnumv432_zero_intrinsic:
791
823
; ARMV7: @ %bb.0:
792
- ; ARMV7-NEXT: vmov d19, r2, r3
793
- ; ARMV7-NEXT: vmov.i32 q8, #0x0
794
- ; ARMV7-NEXT: vmov d18, r0, r1
795
- ; ARMV7-NEXT: vmax.f32 q8, q9, q8
796
- ; ARMV7-NEXT: vmov r0, r1, d16
797
- ; ARMV7-NEXT: vmov r2, r3, d17
824
+ ; ARMV7-NEXT: vmov d3, r2, r3
825
+ ; ARMV7-NEXT: vldr s0, .LCPI21_0
826
+ ; ARMV7-NEXT: vmov d2, r0, r1
827
+ ; ARMV7-NEXT: vcmp.f32 s7, #0
828
+ ; ARMV7-NEXT: vmrs APSR_nzcv, fpscr
829
+ ; ARMV7-NEXT: vmov.f32 s3, s0
830
+ ; ARMV7-NEXT: vcmp.f32 s6, #0
831
+ ; ARMV7-NEXT: vmovgt.f32 s3, s7
832
+ ; ARMV7-NEXT: vmrs APSR_nzcv, fpscr
833
+ ; ARMV7-NEXT: vmov.f32 s2, s0
834
+ ; ARMV7-NEXT: vcmp.f32 s5, #0
835
+ ; ARMV7-NEXT: vmovgt.f32 s2, s6
836
+ ; ARMV7-NEXT: vmrs APSR_nzcv, fpscr
837
+ ; ARMV7-NEXT: vmov.f32 s1, s0
838
+ ; ARMV7-NEXT: vcmp.f32 s4, #0
839
+ ; ARMV7-NEXT: vmovgt.f32 s1, s5
840
+ ; ARMV7-NEXT: vmrs APSR_nzcv, fpscr
841
+ ; ARMV7-NEXT: vmovgt.f32 s0, s4
842
+ ; ARMV7-NEXT: vmov r2, r3, d1
843
+ ; ARMV7-NEXT: vmov r0, r1, d0
798
844
; ARMV7-NEXT: bx lr
845
+ ; ARMV7-NEXT: .p2align 2
846
+ ; ARMV7-NEXT: @ %bb.1:
847
+ ; ARMV7-NEXT: .LCPI21_0:
848
+ ; ARMV7-NEXT: .long 0x00000000 @ float 0
799
849
;
800
850
; ARMV8-LABEL: fmaxnumv432_zero_intrinsic:
801
851
; ARMV8: @ %bb.0:
@@ -834,13 +884,31 @@ define <4 x float> @fmaxnumv432_zero_intrinsic(<4 x float> %x) {
834
884
define <4 x float > @fmaxnumv432_minus_zero_intrinsic (<4 x float > %x ) {
835
885
; ARMV7-LABEL: fmaxnumv432_minus_zero_intrinsic:
836
886
; ARMV7: @ %bb.0:
837
- ; ARMV7-NEXT: vmov d19, r2, r3
838
- ; ARMV7-NEXT: vmov.i32 q8, #0x80000000
839
- ; ARMV7-NEXT: vmov d18, r0, r1
840
- ; ARMV7-NEXT: vmax.f32 q8, q9, q8
841
- ; ARMV7-NEXT: vmov r0, r1, d16
842
- ; ARMV7-NEXT: vmov r2, r3, d17
887
+ ; ARMV7-NEXT: vldr s0, .LCPI22_0
888
+ ; ARMV7-NEXT: vmov d3, r2, r3
889
+ ; ARMV7-NEXT: vmov d2, r0, r1
890
+ ; ARMV7-NEXT: vcmp.f32 s7, s0
891
+ ; ARMV7-NEXT: vmrs APSR_nzcv, fpscr
892
+ ; ARMV7-NEXT: vmov.f32 s3, s0
893
+ ; ARMV7-NEXT: vcmp.f32 s6, s0
894
+ ; ARMV7-NEXT: vmovgt.f32 s3, s7
895
+ ; ARMV7-NEXT: vmrs APSR_nzcv, fpscr
896
+ ; ARMV7-NEXT: vmov.f32 s2, s0
897
+ ; ARMV7-NEXT: vcmp.f32 s5, s0
898
+ ; ARMV7-NEXT: vmovgt.f32 s2, s6
899
+ ; ARMV7-NEXT: vmrs APSR_nzcv, fpscr
900
+ ; ARMV7-NEXT: vmov.f32 s1, s0
901
+ ; ARMV7-NEXT: vcmp.f32 s4, s0
902
+ ; ARMV7-NEXT: vmovgt.f32 s1, s5
903
+ ; ARMV7-NEXT: vmrs APSR_nzcv, fpscr
904
+ ; ARMV7-NEXT: vmovgt.f32 s0, s4
905
+ ; ARMV7-NEXT: vmov r2, r3, d1
906
+ ; ARMV7-NEXT: vmov r0, r1, d0
843
907
; ARMV7-NEXT: bx lr
908
+ ; ARMV7-NEXT: .p2align 2
909
+ ; ARMV7-NEXT: @ %bb.1:
910
+ ; ARMV7-NEXT: .LCPI22_0:
911
+ ; ARMV7-NEXT: .long 0x80000000 @ float -0
844
912
;
845
913
; ARMV8-LABEL: fmaxnumv432_minus_zero_intrinsic:
846
914
; ARMV8: @ %bb.0:
0 commit comments