@@ -51,25 +51,17 @@ define <4 x double> @splat_fdiv_v4f64(<4 x double> %x, double %y) {
51
51
define <4 x float > @splat_fdiv_v4f32 (<4 x float > %x , float %y ) {
52
52
; SSE-LABEL: splat_fdiv_v4f32:
53
53
; SSE: # %bb.0:
54
- ; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,0,0,0]
55
- ; SSE-NEXT: rcpps %xmm1, %xmm2
56
- ; SSE-NEXT: mulps %xmm2, %xmm1
57
- ; SSE-NEXT: movaps {{.*#+}} xmm3 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0]
58
- ; SSE-NEXT: subps %xmm1, %xmm3
59
- ; SSE-NEXT: mulps %xmm2, %xmm3
60
- ; SSE-NEXT: addps %xmm2, %xmm3
61
- ; SSE-NEXT: mulps %xmm3, %xmm0
54
+ ; SSE-NEXT: movss {{.*#+}} xmm2 = mem[0],zero,zero,zero
55
+ ; SSE-NEXT: divss %xmm1, %xmm2
56
+ ; SSE-NEXT: shufps {{.*#+}} xmm2 = xmm2[0,0,0,0]
57
+ ; SSE-NEXT: mulps %xmm2, %xmm0
62
58
; SSE-NEXT: retq
63
59
;
64
60
; AVX-LABEL: splat_fdiv_v4f32:
65
61
; AVX: # %bb.0:
62
+ ; AVX-NEXT: vmovss {{.*#+}} xmm2 = mem[0],zero,zero,zero
63
+ ; AVX-NEXT: vdivss %xmm1, %xmm2, %xmm1
66
64
; AVX-NEXT: vpermilps {{.*#+}} xmm1 = xmm1[0,0,0,0]
67
- ; AVX-NEXT: vrcpps %xmm1, %xmm2
68
- ; AVX-NEXT: vmulps %xmm2, %xmm1, %xmm1
69
- ; AVX-NEXT: vmovaps {{.*#+}} xmm3 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0]
70
- ; AVX-NEXT: vsubps %xmm1, %xmm3, %xmm1
71
- ; AVX-NEXT: vmulps %xmm1, %xmm2, %xmm1
72
- ; AVX-NEXT: vaddps %xmm1, %xmm2, %xmm1
73
65
; AVX-NEXT: vmulps %xmm1, %xmm0, %xmm0
74
66
; AVX-NEXT: retq
75
67
%vy = insertelement <4 x float > undef , float %y , i32 0
@@ -90,14 +82,10 @@ define <8 x float> @splat_fdiv_v8f32(<8 x float> %x, float %y) {
90
82
;
91
83
; AVX-LABEL: splat_fdiv_v8f32:
92
84
; AVX: # %bb.0:
85
+ ; AVX-NEXT: vmovss {{.*#+}} xmm2 = mem[0],zero,zero,zero
86
+ ; AVX-NEXT: vdivss %xmm1, %xmm2, %xmm1
93
87
; AVX-NEXT: vpermilps {{.*#+}} xmm1 = xmm1[0,0,0,0]
94
88
; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm1, %ymm1
95
- ; AVX-NEXT: vrcpps %ymm1, %ymm2
96
- ; AVX-NEXT: vmulps %ymm2, %ymm1, %ymm1
97
- ; AVX-NEXT: vmovaps {{.*#+}} ymm3 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]
98
- ; AVX-NEXT: vsubps %ymm1, %ymm3, %ymm1
99
- ; AVX-NEXT: vmulps %ymm1, %ymm2, %ymm1
100
- ; AVX-NEXT: vaddps %ymm1, %ymm2, %ymm1
101
89
; AVX-NEXT: vmulps %ymm1, %ymm0, %ymm0
102
90
; AVX-NEXT: retq
103
91
%vy = insertelement <8 x float > undef , float %y , i32 0
@@ -109,25 +97,25 @@ define <8 x float> @splat_fdiv_v8f32(<8 x float> %x, float %y) {
109
97
define <4 x float > @splat_fdiv_v4f32_estimate (<4 x float > %x , float %y ) #0 {
110
98
; SSE-LABEL: splat_fdiv_v4f32_estimate:
111
99
; SSE: # %bb.0:
112
- ; SSE-NEXT: shufps {{.*#+}} xmm1 = xmm1[0,0,0,0]
113
- ; SSE-NEXT: rcpps %xmm1 , %xmm2
114
- ; SSE-NEXT: mulps %xmm2, %xmm1
115
- ; SSE-NEXT: movaps {{.*#+}} xmm3 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0]
116
- ; SSE-NEXT: subps %xmm1 , %xmm3
117
- ; SSE-NEXT: mulps %xmm2, %xmm3
118
- ; SSE-NEXT: addps %xmm2, % xmm3
100
+ ; SSE-NEXT: rcpss % xmm1, %xmm2
101
+ ; SSE-NEXT: mulss %xmm2 , %xmm1
102
+ ; SSE-NEXT: movss {{.*#+}} xmm3 = mem[0],zero,zero,zero
103
+ ; SSE-NEXT: subss %xmm1, % xmm3
104
+ ; SSE-NEXT: mulss %xmm2 , %xmm3
105
+ ; SSE-NEXT: addss %xmm2, %xmm3
106
+ ; SSE-NEXT: shufps {{.*#+}} xmm3 = xmm3[0,0,0,0]
119
107
; SSE-NEXT: mulps %xmm3, %xmm0
120
108
; SSE-NEXT: retq
121
109
;
122
110
; AVX-LABEL: splat_fdiv_v4f32_estimate:
123
111
; AVX: # %bb.0:
112
+ ; AVX-NEXT: vrcpss %xmm1, %xmm1, %xmm2
113
+ ; AVX-NEXT: vmulss %xmm2, %xmm1, %xmm1
114
+ ; AVX-NEXT: vmovss {{.*#+}} xmm3 = mem[0],zero,zero,zero
115
+ ; AVX-NEXT: vsubss %xmm1, %xmm3, %xmm1
116
+ ; AVX-NEXT: vmulss %xmm1, %xmm2, %xmm1
117
+ ; AVX-NEXT: vaddss %xmm1, %xmm2, %xmm1
124
118
; AVX-NEXT: vpermilps {{.*#+}} xmm1 = xmm1[0,0,0,0]
125
- ; AVX-NEXT: vrcpps %xmm1, %xmm2
126
- ; AVX-NEXT: vmulps %xmm2, %xmm1, %xmm1
127
- ; AVX-NEXT: vmovaps {{.*#+}} xmm3 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0]
128
- ; AVX-NEXT: vsubps %xmm1, %xmm3, %xmm1
129
- ; AVX-NEXT: vmulps %xmm1, %xmm2, %xmm1
130
- ; AVX-NEXT: vaddps %xmm1, %xmm2, %xmm1
131
119
; AVX-NEXT: vmulps %xmm1, %xmm0, %xmm0
132
120
; AVX-NEXT: retq
133
121
%vy = insertelement <4 x float > undef , float %y , i32 0
@@ -152,14 +140,14 @@ define <8 x float> @splat_fdiv_v8f32_estimate(<8 x float> %x, float %y) #0 {
152
140
;
153
141
; AVX-LABEL: splat_fdiv_v8f32_estimate:
154
142
; AVX: # %bb.0:
143
+ ; AVX-NEXT: vrcpss %xmm1, %xmm1, %xmm2
144
+ ; AVX-NEXT: vmulss %xmm2, %xmm1, %xmm1
145
+ ; AVX-NEXT: vmovss {{.*#+}} xmm3 = mem[0],zero,zero,zero
146
+ ; AVX-NEXT: vsubss %xmm1, %xmm3, %xmm1
147
+ ; AVX-NEXT: vmulss %xmm1, %xmm2, %xmm1
148
+ ; AVX-NEXT: vaddss %xmm1, %xmm2, %xmm1
155
149
; AVX-NEXT: vpermilps {{.*#+}} xmm1 = xmm1[0,0,0,0]
156
150
; AVX-NEXT: vinsertf128 $1, %xmm1, %ymm1, %ymm1
157
- ; AVX-NEXT: vrcpps %ymm1, %ymm2
158
- ; AVX-NEXT: vmulps %ymm2, %ymm1, %ymm1
159
- ; AVX-NEXT: vmovaps {{.*#+}} ymm3 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]
160
- ; AVX-NEXT: vsubps %ymm1, %ymm3, %ymm1
161
- ; AVX-NEXT: vmulps %ymm1, %ymm2, %ymm1
162
- ; AVX-NEXT: vaddps %ymm1, %ymm2, %ymm1
163
151
; AVX-NEXT: vmulps %ymm1, %ymm0, %ymm0
164
152
; AVX-NEXT: retq
165
153
%vy = insertelement <8 x float > undef , float %y , i32 0
0 commit comments