@@ -664,122 +664,6 @@ define <8 x float> @fdiv_const_op1_splat_v8f32(<8 x float> %vx) {
664
664
ret <8 x float > %r
665
665
}
666
666
667
- define <2 x double > @fadd_splat_const_op1_v2f64 (<2 x double > %vx ) {
668
- ; SSE-LABEL: fadd_splat_const_op1_v2f64:
669
- ; SSE: # %bb.0:
670
- ; SSE-NEXT: unpcklpd {{.*#+}} xmm0 = xmm0[0,0]
671
- ; SSE-NEXT: addpd {{.*}}(%rip), %xmm0
672
- ; SSE-NEXT: retq
673
- ;
674
- ; AVX-LABEL: fadd_splat_const_op1_v2f64:
675
- ; AVX: # %bb.0:
676
- ; AVX-NEXT: vmovddup {{.*#+}} xmm0 = xmm0[0,0]
677
- ; AVX-NEXT: vaddpd {{.*}}(%rip), %xmm0, %xmm0
678
- ; AVX-NEXT: retq
679
- %splatx = shufflevector <2 x double > %vx , <2 x double > undef , <2 x i32 > zeroinitializer
680
- %r = fadd <2 x double > %splatx , <double 42 .0 , double 42 .0 >
681
- ret <2 x double > %r
682
- }
683
-
684
- define <4 x double > @fsub_const_op0_splat_v4f64 (double %x ) {
685
- ; SSE-LABEL: fsub_const_op0_splat_v4f64:
686
- ; SSE: # %bb.0:
687
- ; SSE-NEXT: movsd {{.*#+}} xmm1 = mem[0],zero
688
- ; SSE-NEXT: subpd %xmm0, %xmm1
689
- ; SSE-NEXT: unpcklpd {{.*#+}} xmm1 = xmm1[0,0]
690
- ; SSE-NEXT: movapd %xmm1, %xmm0
691
- ; SSE-NEXT: retq
692
- ;
693
- ; AVX-LABEL: fsub_const_op0_splat_v4f64:
694
- ; AVX: # %bb.0:
695
- ; AVX-NEXT: vmovsd {{.*#+}} xmm1 = mem[0],zero
696
- ; AVX-NEXT: vsubpd %xmm0, %xmm1, %xmm0
697
- ; AVX-NEXT: vmovddup {{.*#+}} xmm0 = xmm0[0,0]
698
- ; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0
699
- ; AVX-NEXT: retq
700
- %vx = insertelement <4 x double > undef , double 8 .0 , i32 0
701
- %vy = insertelement <4 x double > undef , double %x , i32 0
702
- %splatx = shufflevector <4 x double > %vx , <4 x double > undef , <4 x i32 > zeroinitializer
703
- %splaty = shufflevector <4 x double > %vy , <4 x double > undef , <4 x i32 > zeroinitializer
704
- %r = fsub <4 x double > %splatx , %splaty
705
- ret <4 x double > %r
706
- }
707
-
708
- define <4 x float > @fmul_splat_const_op1_v4f32 (<4 x float > %vx , <4 x float > %vy ) {
709
- ; SSE-LABEL: fmul_splat_const_op1_v4f32:
710
- ; SSE: # %bb.0:
711
- ; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,0,0,0]
712
- ; SSE-NEXT: mulps {{.*}}(%rip), %xmm0
713
- ; SSE-NEXT: retq
714
- ;
715
- ; AVX-LABEL: fmul_splat_const_op1_v4f32:
716
- ; AVX: # %bb.0:
717
- ; AVX-NEXT: vpermilps {{.*#+}} xmm0 = xmm0[0,0,0,0]
718
- ; AVX-NEXT: vmulps {{.*}}(%rip), %xmm0, %xmm0
719
- ; AVX-NEXT: retq
720
- %splatx = shufflevector <4 x float > %vx , <4 x float > undef , <4 x i32 > zeroinitializer
721
- %r = fmul fast <4 x float > %splatx , <float 17 .0 , float 17 .0 , float 17 .0 , float 17 .0 >
722
- ret <4 x float > %r
723
- }
724
-
725
- define <8 x float > @fdiv_splat_const_op0_v8f32 (<8 x float > %vy ) {
726
- ; SSE-LABEL: fdiv_splat_const_op0_v8f32:
727
- ; SSE: # %bb.0:
728
- ; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,0,0,0]
729
- ; SSE-NEXT: rcpps %xmm0, %xmm2
730
- ; SSE-NEXT: mulps %xmm2, %xmm0
731
- ; SSE-NEXT: movaps {{.*#+}} xmm1 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0]
732
- ; SSE-NEXT: subps %xmm0, %xmm1
733
- ; SSE-NEXT: mulps %xmm2, %xmm1
734
- ; SSE-NEXT: addps %xmm2, %xmm1
735
- ; SSE-NEXT: mulps {{.*}}(%rip), %xmm1
736
- ; SSE-NEXT: movaps %xmm1, %xmm0
737
- ; SSE-NEXT: retq
738
- ;
739
- ; AVX-LABEL: fdiv_splat_const_op0_v8f32:
740
- ; AVX: # %bb.0:
741
- ; AVX-NEXT: vpermilps {{.*#+}} xmm0 = xmm0[0,0,0,0]
742
- ; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0
743
- ; AVX-NEXT: vrcpps %ymm0, %ymm1
744
- ; AVX-NEXT: vmulps %ymm1, %ymm0, %ymm0
745
- ; AVX-NEXT: vmovaps {{.*#+}} ymm2 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]
746
- ; AVX-NEXT: vsubps %ymm0, %ymm2, %ymm0
747
- ; AVX-NEXT: vmulps %ymm0, %ymm1, %ymm0
748
- ; AVX-NEXT: vaddps %ymm0, %ymm1, %ymm0
749
- ; AVX-NEXT: vmulps {{.*}}(%rip), %ymm0, %ymm0
750
- ; AVX-NEXT: retq
751
- %splatx = shufflevector <8 x float > <float 4 .5 , float 1 .0 , float 2 .0 , float 3 .0 , float 4 .0 , float 5 .0 , float 6 .0 , float 7 .0 >, <8 x float > undef , <8 x i32 > zeroinitializer
752
- %splaty = shufflevector <8 x float > %vy , <8 x float > undef , <8 x i32 > zeroinitializer
753
- %r = fdiv fast <8 x float > %splatx , %splaty
754
- ret <8 x float > %r
755
- }
756
-
757
- define <8 x float > @fdiv_const_op1_splat_v8f32 (<8 x float > %vx ) {
758
- ; SSE-LABEL: fdiv_const_op1_splat_v8f32:
759
- ; SSE: # %bb.0:
760
- ; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,0,0,0]
761
- ; SSE-NEXT: xorps %xmm1, %xmm1
762
- ; SSE-NEXT: rcpps %xmm1, %xmm1
763
- ; SSE-NEXT: addps %xmm1, %xmm1
764
- ; SSE-NEXT: mulps %xmm0, %xmm1
765
- ; SSE-NEXT: movaps %xmm1, %xmm0
766
- ; SSE-NEXT: retq
767
- ;
768
- ; AVX-LABEL: fdiv_const_op1_splat_v8f32:
769
- ; AVX: # %bb.0:
770
- ; AVX-NEXT: vpermilps {{.*#+}} xmm0 = xmm0[0,0,0,0]
771
- ; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0
772
- ; AVX-NEXT: vxorps %xmm1, %xmm1, %xmm1
773
- ; AVX-NEXT: vrcpps %ymm1, %ymm1
774
- ; AVX-NEXT: vaddps %ymm1, %ymm1, %ymm1
775
- ; AVX-NEXT: vmulps %ymm1, %ymm0, %ymm0
776
- ; AVX-NEXT: retq
777
- %splatx = shufflevector <8 x float > %vx , <8 x float > undef , <8 x i32 > zeroinitializer
778
- %splaty = shufflevector <8 x float > <float 0 .0 , float 1 .0 , float 2 .0 , float 3 .0 , float 4 .0 , float 5 .0 , float 6 .0 , float 7 .0 >, <8 x float > undef , <8 x i32 > zeroinitializer
779
- %r = fdiv fast <8 x float > %splatx , %splaty
780
- ret <8 x float > %r
781
- }
782
-
783
667
define <2 x double > @splat0_fadd_v2f64 (<2 x double > %vx , <2 x double > %vy ) {
784
668
; SSE-LABEL: splat0_fadd_v2f64:
785
669
; SSE: # %bb.0:
@@ -980,118 +864,3 @@ define <8 x float> @splat0_fdiv_const_op0_v8f32(<8 x float> %vx) {
980
864
%r = shufflevector <8 x float > %b , <8 x float > undef , <8 x i32 > zeroinitializer
981
865
ret <8 x float > %r
982
866
}
983
-
984
- define <2 x double > @splat0_fadd_const_op1_v2f64 (<2 x double > %vx ) {
985
- ; SSE-LABEL: splat0_fadd_const_op1_v2f64:
986
- ; SSE: # %bb.0:
987
- ; SSE-NEXT: movsd {{.*#+}} xmm1 = mem[0],zero
988
- ; SSE-NEXT: addpd %xmm0, %xmm1
989
- ; SSE-NEXT: unpcklpd {{.*#+}} xmm1 = xmm1[0,0]
990
- ; SSE-NEXT: movapd %xmm1, %xmm0
991
- ; SSE-NEXT: retq
992
- ;
993
- ; AVX-LABEL: splat0_fadd_const_op1_v2f64:
994
- ; AVX: # %bb.0:
995
- ; AVX-NEXT: vmovsd {{.*#+}} xmm1 = mem[0],zero
996
- ; AVX-NEXT: vaddpd %xmm1, %xmm0, %xmm0
997
- ; AVX-NEXT: vmovddup {{.*#+}} xmm0 = xmm0[0,0]
998
- ; AVX-NEXT: retq
999
- %b = fadd <2 x double > %vx , <double 42 .0 , double 12 .0 >
1000
- %r = shufflevector <2 x double > %b , <2 x double > undef , <2 x i32 > zeroinitializer
1001
- ret <2 x double > %r
1002
- }
1003
-
1004
- define <4 x double > @splat0_fsub_const_op0_v4f64 (double %x ) {
1005
- ; SSE-LABEL: splat0_fsub_const_op0_v4f64:
1006
- ; SSE: # %bb.0:
1007
- ; SSE-NEXT: movsd {{.*#+}} xmm1 = mem[0],zero
1008
- ; SSE-NEXT: subpd %xmm0, %xmm1
1009
- ; SSE-NEXT: unpcklpd {{.*#+}} xmm1 = xmm1[0,0]
1010
- ; SSE-NEXT: movapd %xmm1, %xmm0
1011
- ; SSE-NEXT: retq
1012
- ;
1013
- ; AVX-LABEL: splat0_fsub_const_op0_v4f64:
1014
- ; AVX: # %bb.0:
1015
- ; AVX-NEXT: vmovsd {{.*#+}} xmm1 = mem[0],zero
1016
- ; AVX-NEXT: vsubpd %xmm0, %xmm1, %xmm0
1017
- ; AVX-NEXT: vmovddup {{.*#+}} xmm0 = xmm0[0,0]
1018
- ; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0
1019
- ; AVX-NEXT: retq
1020
- %vx = insertelement <4 x double > undef , double %x , i32 0
1021
- %b = fsub <4 x double > <double -42 .0 , double 42 .0 , double 0 .0 , double 1 .0 >, %vx
1022
- %r = shufflevector <4 x double > %b , <4 x double > undef , <4 x i32 > zeroinitializer
1023
- ret <4 x double > %r
1024
- }
1025
-
1026
- define <4 x float > @splat0_fmul_const_op1_v4f32 (<4 x float > %vx ) {
1027
- ; SSE-LABEL: splat0_fmul_const_op1_v4f32:
1028
- ; SSE: # %bb.0:
1029
- ; SSE-NEXT: movss {{.*#+}} xmm1 = mem[0],zero,zero,zero
1030
- ; SSE-NEXT: mulps %xmm0, %xmm1
1031
- ; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,0,0,0]
1032
- ; SSE-NEXT: movaps %xmm1, %xmm0
1033
- ; SSE-NEXT: retq
1034
- ;
1035
- ; AVX-LABEL: splat0_fmul_const_op1_v4f32:
1036
- ; AVX: # %bb.0:
1037
- ; AVX-NEXT: vmovss {{.*#+}} xmm1 = mem[0],zero,zero,zero
1038
- ; AVX-NEXT: vmulps %xmm1, %xmm0, %xmm0
1039
- ; AVX-NEXT: vpermilps {{.*#+}} xmm0 = xmm0[0,0,0,0]
1040
- ; AVX-NEXT: retq
1041
- %b = fmul fast <4 x float > %vx , <float 6 .0 , float -1 .0 , float 1 .0 , float 7 .0 >
1042
- %r = shufflevector <4 x float > %b , <4 x float > undef , <4 x i32 > zeroinitializer
1043
- ret <4 x float > %r
1044
- }
1045
-
1046
- define <8 x float > @splat0_fdiv_const_op1_v8f32 (<8 x float > %vx ) {
1047
- ; SSE-LABEL: splat0_fdiv_const_op1_v8f32:
1048
- ; SSE: # %bb.0:
1049
- ; SSE-NEXT: shufps {{.*#+}} xmm0 = xmm0[0,0,0,0]
1050
- ; SSE-NEXT: movaps %xmm0, %xmm1
1051
- ; SSE-NEXT: retq
1052
- ;
1053
- ; AVX-LABEL: splat0_fdiv_const_op1_v8f32:
1054
- ; AVX: # %bb.0:
1055
- ; AVX-NEXT: vmovss {{.*#+}} xmm1 = mem[0],zero,zero,zero
1056
- ; AVX-NEXT: vrcpps %ymm1, %ymm1
1057
- ; AVX-NEXT: vmovaps {{.*#+}} xmm2 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]
1058
- ; AVX-NEXT: vsubps %xmm1, %xmm2, %xmm2
1059
- ; AVX-NEXT: vmulps %xmm2, %xmm1, %xmm2
1060
- ; AVX-NEXT: vaddps %xmm2, %xmm1, %xmm1
1061
- ; AVX-NEXT: vmulps %xmm1, %xmm0, %xmm0
1062
- ; AVX-NEXT: vpermilps {{.*#+}} xmm0 = xmm0[0,0,0,0]
1063
- ; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0
1064
- ; AVX-NEXT: retq
1065
- %b = fdiv fast <8 x float > %vx , <float 1 .0 , float 2 .0 , float 3 .0 , float 4 .0 , float 5 .0 , float 6 .0 , float 7 .0 , float 8 .0 >
1066
- %r = shufflevector <8 x float > %b , <8 x float > undef , <8 x i32 > zeroinitializer
1067
- ret <8 x float > %r
1068
- }
1069
-
1070
- define <8 x float > @splat0_fdiv_const_op0_v8f32 (<8 x float > %vx ) {
1071
- ; SSE-LABEL: splat0_fdiv_const_op0_v8f32:
1072
- ; SSE: # %bb.0:
1073
- ; SSE-NEXT: rcpps %xmm0, %xmm2
1074
- ; SSE-NEXT: mulps %xmm2, %xmm0
1075
- ; SSE-NEXT: movaps {{.*#+}} xmm1 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0]
1076
- ; SSE-NEXT: subps %xmm0, %xmm1
1077
- ; SSE-NEXT: mulps %xmm2, %xmm1
1078
- ; SSE-NEXT: addps %xmm2, %xmm1
1079
- ; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,0,0,0]
1080
- ; SSE-NEXT: movaps %xmm1, %xmm0
1081
- ; SSE-NEXT: retq
1082
- ;
1083
- ; AVX-LABEL: splat0_fdiv_const_op0_v8f32:
1084
- ; AVX: # %bb.0:
1085
- ; AVX-NEXT: vrcpps %ymm0, %ymm1
1086
- ; AVX-NEXT: vmulps %xmm1, %xmm0, %xmm0
1087
- ; AVX-NEXT: vmovaps {{.*#+}} xmm2 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]
1088
- ; AVX-NEXT: vsubps %xmm0, %xmm2, %xmm0
1089
- ; AVX-NEXT: vmulps %xmm0, %xmm1, %xmm0
1090
- ; AVX-NEXT: vaddps %xmm0, %xmm1, %xmm0
1091
- ; AVX-NEXT: vpermilps {{.*#+}} xmm0 = xmm0[0,0,0,0]
1092
- ; AVX-NEXT: vinsertf128 $1, %xmm0, %ymm0, %ymm0
1093
- ; AVX-NEXT: retq
1094
- %b = fdiv fast <8 x float > <float 1 .0 , float 2 .0 , float 3 .0 , float 4 .0 , float 5 .0 , float 6 .0 , float 7 .0 , float 8 .0 >, %vx
1095
- %r = shufflevector <8 x float > %b , <8 x float > undef , <8 x i32 > zeroinitializer
1096
- ret <8 x float > %r
1097
- }
0 commit comments