Skip to content

Commit 322667d

Browse files
authored
Migrate i586::sse3 to vendor types (rust-lang#274)
1 parent 92917a5 commit 322667d

File tree

1 file changed

+51
-53
lines changed

1 file changed

+51
-53
lines changed

coresimd/src/x86/i586/sse3.rs

Lines changed: 51 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -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)]
111111
extern "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" {
129129
mod 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

Comments
 (0)