@@ -18,7 +18,7 @@ use stdarch_test::assert_instr;
18
18
#[ cfg_attr( test, assert_instr( addss) ) ]
19
19
#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
20
20
pub unsafe fn _mm_add_ss ( a : __m128 , b : __m128 ) -> __m128 {
21
- addss ( a, b )
21
+ simd_insert ! ( a, 0 , _mm_cvtss_f32 ( a ) + _mm_cvtss_f32 ( b ) )
22
22
}
23
23
24
24
/// Adds __m128 vectors.
@@ -41,7 +41,7 @@ pub unsafe fn _mm_add_ps(a: __m128, b: __m128) -> __m128 {
41
41
#[ cfg_attr( test, assert_instr( subss) ) ]
42
42
#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
43
43
pub unsafe fn _mm_sub_ss ( a : __m128 , b : __m128 ) -> __m128 {
44
- subss ( a, b )
44
+ simd_insert ! ( a, 0 , _mm_cvtss_f32 ( a ) - _mm_cvtss_f32 ( b ) )
45
45
}
46
46
47
47
/// Subtracts __m128 vectors.
@@ -64,7 +64,7 @@ pub unsafe fn _mm_sub_ps(a: __m128, b: __m128) -> __m128 {
64
64
#[ cfg_attr( test, assert_instr( mulss) ) ]
65
65
#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
66
66
pub unsafe fn _mm_mul_ss ( a : __m128 , b : __m128 ) -> __m128 {
67
- mulss ( a, b )
67
+ simd_insert ! ( a, 0 , _mm_cvtss_f32 ( a ) * _mm_cvtss_f32 ( b ) )
68
68
}
69
69
70
70
/// Multiplies __m128 vectors.
@@ -87,7 +87,7 @@ pub unsafe fn _mm_mul_ps(a: __m128, b: __m128) -> __m128 {
87
87
#[ cfg_attr( test, assert_instr( divss) ) ]
88
88
#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
89
89
pub unsafe fn _mm_div_ss ( a : __m128 , b : __m128 ) -> __m128 {
90
- divss ( a, b )
90
+ simd_insert ! ( a, 0 , _mm_cvtss_f32 ( a ) / _mm_cvtss_f32 ( b ) )
91
91
}
92
92
93
93
/// Divides __m128 vectors.
@@ -110,7 +110,7 @@ pub unsafe fn _mm_div_ps(a: __m128, b: __m128) -> __m128 {
110
110
#[ cfg_attr( test, assert_instr( sqrtss) ) ]
111
111
#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
112
112
pub unsafe fn _mm_sqrt_ss ( a : __m128 ) -> __m128 {
113
- sqrtss ( a )
113
+ simd_insert ! ( a , 0 , _mm_cvtss_f32 ( a ) . sqrt ( ) )
114
114
}
115
115
116
116
/// Returns the square root of packed single-precision (32-bit) floating-point
@@ -122,7 +122,7 @@ pub unsafe fn _mm_sqrt_ss(a: __m128) -> __m128 {
122
122
#[ cfg_attr( test, assert_instr( sqrtps) ) ]
123
123
#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
124
124
pub unsafe fn _mm_sqrt_ps ( a : __m128 ) -> __m128 {
125
- sqrtps ( a)
125
+ simd_fsqrt ( a)
126
126
}
127
127
128
128
/// Returns the approximate reciprocal of the first single-precision
@@ -1920,18 +1920,6 @@ pub unsafe fn _MM_TRANSPOSE4_PS(
1920
1920
1921
1921
#[ allow( improper_ctypes) ]
1922
1922
extern "C" {
1923
- #[ link_name = "llvm.x86.sse.add.ss" ]
1924
- fn addss ( a : __m128 , b : __m128 ) -> __m128 ;
1925
- #[ link_name = "llvm.x86.sse.sub.ss" ]
1926
- fn subss ( a : __m128 , b : __m128 ) -> __m128 ;
1927
- #[ link_name = "llvm.x86.sse.mul.ss" ]
1928
- fn mulss ( a : __m128 , b : __m128 ) -> __m128 ;
1929
- #[ link_name = "llvm.x86.sse.div.ss" ]
1930
- fn divss ( a : __m128 , b : __m128 ) -> __m128 ;
1931
- #[ link_name = "llvm.x86.sse.sqrt.ss" ]
1932
- fn sqrtss ( a : __m128 ) -> __m128 ;
1933
- #[ link_name = "llvm.x86.sse.sqrt.ps" ]
1934
- fn sqrtps ( a : __m128 ) -> __m128 ;
1935
1923
#[ link_name = "llvm.x86.sse.rcp.ss" ]
1936
1924
fn rcpss ( a : __m128 ) -> __m128 ;
1937
1925
#[ link_name = "llvm.x86.sse.rcp.ps" ]
0 commit comments