@@ -12,7 +12,7 @@ use stdsimd_test::assert_instr;
1212#[ inline( always) ]
1313#[ target_feature = "+sse3" ]
1414#[ cfg_attr( test, assert_instr( addsubps) ) ]
15- pub unsafe fn _mm_addsub_ps ( a : f32x4 , b : f32x4 ) -> f32x4 {
15+ pub unsafe fn _mm_addsub_ps ( a : __m128 , b : __m128 ) -> __m128 {
1616 addsubps ( a, b)
1717}
1818
@@ -21,7 +21,7 @@ pub unsafe fn _mm_addsub_ps(a: f32x4, b: f32x4) -> f32x4 {
2121#[ inline( always) ]
2222#[ target_feature = "+sse3" ]
2323#[ cfg_attr( test, assert_instr( addsubpd) ) ]
24- pub unsafe fn _mm_addsub_pd ( a : f64x2 , b : f64x2 ) -> f64x2 {
24+ pub unsafe fn _mm_addsub_pd ( a : __m128d , b : __m128d ) -> __m128d {
2525 addsubpd ( a, b)
2626}
2727
@@ -30,7 +30,7 @@ pub unsafe fn _mm_addsub_pd(a: f64x2, b: f64x2) -> f64x2 {
3030#[ inline( always) ]
3131#[ target_feature = "+sse3" ]
3232#[ cfg_attr( test, assert_instr( haddpd) ) ]
33- pub unsafe fn _mm_hadd_pd ( a : f64x2 , b : f64x2 ) -> f64x2 {
33+ pub unsafe fn _mm_hadd_pd ( a : __m128d , b : __m128d ) -> __m128d {
3434 haddpd ( a, b)
3535}
3636
@@ -39,7 +39,7 @@ pub unsafe fn _mm_hadd_pd(a: f64x2, b: f64x2) -> f64x2 {
3939#[ inline( always) ]
4040#[ target_feature = "+sse3" ]
4141#[ cfg_attr( test, assert_instr( haddps) ) ]
42- pub unsafe fn _mm_hadd_ps ( a : f32x4 , b : f32x4 ) -> f32x4 {
42+ pub unsafe fn _mm_hadd_ps ( a : __m128 , b : __m128 ) -> __m128 {
4343 haddps ( a, b)
4444}
4545
@@ -48,7 +48,7 @@ pub unsafe fn _mm_hadd_ps(a: f32x4, b: f32x4) -> f32x4 {
4848#[ inline( always) ]
4949#[ target_feature = "+sse3" ]
5050#[ cfg_attr( test, assert_instr( hsubpd) ) ]
51- pub unsafe fn _mm_hsub_pd ( a : f64x2 , b : f64x2 ) -> f64x2 {
51+ pub unsafe fn _mm_hsub_pd ( a : __m128d , b : __m128d ) -> __m128d {
5252 hsubpd ( a, b)
5353}
5454
@@ -57,7 +57,7 @@ pub unsafe fn _mm_hsub_pd(a: f64x2, b: f64x2) -> f64x2 {
5757#[ inline( always) ]
5858#[ target_feature = "+sse3" ]
5959#[ cfg_attr( test, assert_instr( hsubps) ) ]
60- pub unsafe fn _mm_hsub_ps ( a : f32x4 , b : f32x4 ) -> f32x4 {
60+ pub unsafe fn _mm_hsub_ps ( a : __m128 , b : __m128 ) -> __m128 {
6161 hsubps ( a, b)
6262}
6363
@@ -76,7 +76,7 @@ pub unsafe fn _mm_lddqu_si128(mem_addr: *const __m128i) -> __m128i {
7676#[ inline( always) ]
7777#[ target_feature = "+sse3" ]
7878#[ cfg_attr( test, assert_instr( movddup) ) ]
79- pub unsafe fn _mm_movedup_pd ( a : f64x2 ) -> f64x2 {
79+ pub unsafe fn _mm_movedup_pd ( a : __m128d ) -> __m128d {
8080 simd_shuffle2 ( a, a, [ 0 , 0 ] )
8181}
8282
@@ -94,7 +94,7 @@ pub unsafe fn _mm_loaddup_pd(mem_addr: *const f64) -> __m128d {
9494#[ inline( always) ]
9595#[ target_feature = "+sse3" ]
9696#[ cfg_attr( test, assert_instr( movshdup) ) ]
97- pub unsafe fn _mm_movehdup_ps ( a : f32x4 ) -> f32x4 {
97+ pub unsafe fn _mm_movehdup_ps ( a : __m128 ) -> __m128 {
9898 simd_shuffle4 ( a, a, [ 1 , 1 , 3 , 3 ] )
9999}
100100
@@ -103,24 +103,24 @@ pub unsafe fn _mm_movehdup_ps(a: f32x4) -> f32x4 {
103103#[ inline( always) ]
104104#[ target_feature = "+sse3" ]
105105#[ cfg_attr( test, assert_instr( movsldup) ) ]
106- pub unsafe fn _mm_moveldup_ps ( a : f32x4 ) -> f32x4 {
106+ pub unsafe fn _mm_moveldup_ps ( a : __m128 ) -> __m128 {
107107 simd_shuffle4 ( a, a, [ 0 , 0 , 2 , 2 ] )
108108}
109109
110110#[ allow( improper_ctypes) ]
111111extern "C" {
112112 #[ link_name = "llvm.x86.sse3.addsub.ps" ]
113- fn addsubps ( a : f32x4 , b : f32x4 ) -> f32x4 ;
113+ fn addsubps ( a : __m128 , b : __m128 ) -> __m128 ;
114114 #[ link_name = "llvm.x86.sse3.addsub.pd" ]
115- fn addsubpd ( a : f64x2 , b : f64x2 ) -> f64x2 ;
115+ fn addsubpd ( a : __m128d , b : __m128d ) -> __m128d ;
116116 #[ link_name = "llvm.x86.sse3.hadd.pd" ]
117- fn haddpd ( a : f64x2 , b : f64x2 ) -> f64x2 ;
117+ fn haddpd ( a : __m128d , b : __m128d ) -> __m128d ;
118118 #[ link_name = "llvm.x86.sse3.hadd.ps" ]
119- fn haddps ( a : f32x4 , b : f32x4 ) -> f32x4 ;
119+ fn haddps ( a : __m128 , b : __m128 ) -> __m128 ;
120120 #[ link_name = "llvm.x86.sse3.hsub.pd" ]
121- fn hsubpd ( a : f64x2 , b : f64x2 ) -> f64x2 ;
121+ fn hsubpd ( a : __m128d , b : __m128d ) -> __m128d ;
122122 #[ link_name = "llvm.x86.sse3.hsub.ps" ]
123- fn hsubps ( a : f32x4 , b : f32x4 ) -> f32x4 ;
123+ fn hsubps ( a : __m128 , b : __m128 ) -> __m128 ;
124124 #[ link_name = "llvm.x86.sse3.ldu.dq" ]
125125 fn lddqu ( mem_addr : * const i8 ) -> i8x16 ;
126126}
@@ -129,90 +129,88 @@ extern "C" {
129129mod tests {
130130 use stdsimd_test:: simd_test;
131131
132- use v128:: * ;
133- use x86:: i586:: sse3;
134132 use x86:: * ;
135133
136134 #[ simd_test = "sse3" ]
137135 unsafe fn test_mm_addsub_ps ( ) {
138- let a = f32x4 :: new ( -1.0 , 5.0 , 0.0 , -10.0 ) ;
139- let b = f32x4 :: new ( -100.0 , 20.0 , 0.0 , -5.0 ) ;
140- let r = sse3 :: _mm_addsub_ps ( a, b) ;
141- assert_eq ! ( r, f32x4 :: new ( 99.0 , 25.0 , 0.0 , -15.0 ) ) ;
136+ let a = _mm_setr_ps ( -1.0 , 5.0 , 0.0 , -10.0 ) ;
137+ let b = _mm_setr_ps ( -100.0 , 20.0 , 0.0 , -5.0 ) ;
138+ let r = _mm_addsub_ps ( a, b) ;
139+ assert_eq_m128 ( r, _mm_setr_ps ( 99.0 , 25.0 , 0.0 , -15.0 ) ) ;
142140 }
143141
144142 #[ simd_test = "sse3" ]
145143 unsafe fn test_mm_addsub_pd ( ) {
146- let a = f64x2 :: new ( -1.0 , 5.0 ) ;
147- let b = f64x2 :: new ( -100.0 , 20.0 ) ;
148- let r = sse3 :: _mm_addsub_pd ( a, b) ;
149- assert_eq ! ( r, f64x2 :: new ( 99.0 , 25.0 ) ) ;
144+ let a = _mm_setr_pd ( -1.0 , 5.0 ) ;
145+ let b = _mm_setr_pd ( -100.0 , 20.0 ) ;
146+ let r = _mm_addsub_pd ( a, b) ;
147+ assert_eq_m128d ( r, _mm_setr_pd ( 99.0 , 25.0 ) ) ;
150148 }
151149
152150 #[ simd_test = "sse3" ]
153151 unsafe fn test_mm_hadd_pd ( ) {
154- let a = f64x2 :: new ( -1.0 , 5.0 ) ;
155- let b = f64x2 :: new ( -100.0 , 20.0 ) ;
156- let r = sse3 :: _mm_hadd_pd ( a, b) ;
157- assert_eq ! ( r, f64x2 :: new ( 4.0 , -80.0 ) ) ;
152+ let a = _mm_setr_pd ( -1.0 , 5.0 ) ;
153+ let b = _mm_setr_pd ( -100.0 , 20.0 ) ;
154+ let r = _mm_hadd_pd ( a, b) ;
155+ assert_eq_m128d ( r, _mm_setr_pd ( 4.0 , -80.0 ) ) ;
158156 }
159157
160158 #[ simd_test = "sse3" ]
161159 unsafe fn test_mm_hadd_ps ( ) {
162- let a = f32x4 :: new ( -1.0 , 5.0 , 0.0 , -10.0 ) ;
163- let b = f32x4 :: new ( -100.0 , 20.0 , 0.0 , -5.0 ) ;
164- let r = sse3 :: _mm_hadd_ps ( a, b) ;
165- assert_eq ! ( r, f32x4 :: new ( 4.0 , -10.0 , -80.0 , -5.0 ) ) ;
160+ let a = _mm_setr_ps ( -1.0 , 5.0 , 0.0 , -10.0 ) ;
161+ let b = _mm_setr_ps ( -100.0 , 20.0 , 0.0 , -5.0 ) ;
162+ let r = _mm_hadd_ps ( a, b) ;
163+ assert_eq_m128 ( r, _mm_setr_ps ( 4.0 , -10.0 , -80.0 , -5.0 ) ) ;
166164 }
167165
168166 #[ simd_test = "sse3" ]
169167 unsafe fn test_mm_hsub_pd ( ) {
170- let a = f64x2 :: new ( -1.0 , 5.0 ) ;
171- let b = f64x2 :: new ( -100.0 , 20.0 ) ;
172- let r = sse3 :: _mm_hsub_pd ( a, b) ;
173- assert_eq ! ( r, f64x2 :: new ( -6.0 , -120.0 ) ) ;
168+ let a = _mm_setr_pd ( -1.0 , 5.0 ) ;
169+ let b = _mm_setr_pd ( -100.0 , 20.0 ) ;
170+ let r = _mm_hsub_pd ( a, b) ;
171+ assert_eq_m128d ( r, _mm_setr_pd ( -6.0 , -120.0 ) ) ;
174172 }
175173
176174 #[ simd_test = "sse3" ]
177175 unsafe fn test_mm_hsub_ps ( ) {
178- let a = f32x4 :: new ( -1.0 , 5.0 , 0.0 , -10.0 ) ;
179- let b = f32x4 :: new ( -100.0 , 20.0 , 0.0 , -5.0 ) ;
180- let r = sse3 :: _mm_hsub_ps ( a, b) ;
181- assert_eq ! ( r, f32x4 :: new ( -6.0 , 10.0 , -120.0 , 5.0 ) ) ;
176+ let a = _mm_setr_ps ( -1.0 , 5.0 , 0.0 , -10.0 ) ;
177+ let b = _mm_setr_ps ( -100.0 , 20.0 , 0.0 , -5.0 ) ;
178+ let r = _mm_hsub_ps ( a, b) ;
179+ assert_eq_m128 ( r, _mm_setr_ps ( -6.0 , 10.0 , -120.0 , 5.0 ) ) ;
182180 }
183181
184182 #[ simd_test = "sse3" ]
185183 unsafe fn test_mm_lddqu_si128 ( ) {
186184 #[ cfg_attr( rustfmt, rustfmt_skip) ]
187- let a = __m128i :: from ( i8x16 :: new (
185+ let a = _mm_setr_epi8 (
188186 1 , 2 , 3 , 4 ,
189187 5 , 6 , 7 , 8 ,
190188 9 , 10 , 11 , 12 ,
191189 13 , 14 , 15 , 16 ,
192- ) ) ;
193- let r = sse3 :: _mm_lddqu_si128 ( & a) ;
190+ ) ;
191+ let r = _mm_lddqu_si128 ( & a) ;
194192 assert_eq ! ( a, r) ;
195193 }
196194
197195 #[ simd_test = "sse3" ]
198196 unsafe fn test_mm_movedup_pd ( ) {
199- let a = f64x2 :: new ( -1.0 , 5.0 ) ;
200- let r = sse3 :: _mm_movedup_pd ( a) ;
201- assert_eq ! ( r, f64x2 :: new ( -1.0 , -1.0 ) ) ;
197+ let a = _mm_setr_pd ( -1.0 , 5.0 ) ;
198+ let r = _mm_movedup_pd ( a) ;
199+ assert_eq_m128d ( r, _mm_setr_pd ( -1.0 , -1.0 ) ) ;
202200 }
203201
204202 #[ simd_test = "sse3" ]
205203 unsafe fn test_mm_movehdup_ps ( ) {
206- let a = f32x4 :: new ( -1.0 , 5.0 , 0.0 , -10.0 ) ;
207- let r = sse3 :: _mm_movehdup_ps ( a) ;
208- assert_eq ! ( r, f32x4 :: new ( 5.0 , 5.0 , -10.0 , -10.0 ) ) ;
204+ let a = _mm_setr_ps ( -1.0 , 5.0 , 0.0 , -10.0 ) ;
205+ let r = _mm_movehdup_ps ( a) ;
206+ assert_eq_m128 ( r, _mm_setr_ps ( 5.0 , 5.0 , -10.0 , -10.0 ) ) ;
209207 }
210208
211209 #[ simd_test = "sse3" ]
212210 unsafe fn test_mm_moveldup_ps ( ) {
213- let a = f32x4 :: new ( -1.0 , 5.0 , 0.0 , -10.0 ) ;
214- let r = sse3 :: _mm_moveldup_ps ( a) ;
215- assert_eq ! ( r, f32x4 :: new ( -1.0 , -1.0 , 0.0 , 0.0 ) ) ;
211+ let a = _mm_setr_ps ( -1.0 , 5.0 , 0.0 , -10.0 ) ;
212+ let r = _mm_moveldup_ps ( a) ;
213+ assert_eq_m128 ( r, _mm_setr_ps ( -1.0 , -1.0 , 0.0 , 0.0 ) ) ;
216214 }
217215
218216 #[ simd_test = "sse3" ]
0 commit comments