Skip to content

Commit c8d63ea

Browse files
committed
Make test intrinsics use __m128i
1 parent 15a1ec7 commit c8d63ea

File tree

1 file changed

+48
-46
lines changed

1 file changed

+48
-46
lines changed

src/x86/sse41.rs

Lines changed: 48 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ use std::mem;
66
use stdsimd_test::assert_instr;
77
use simd_llvm::{simd_shuffle2, simd_shuffle4, simd_shuffle8};
88

9+
use x86::__m128i;
910
use v128::*;
1011

1112
// SSE4 rounding constans
@@ -387,8 +388,8 @@ pub unsafe fn _mm_mullo_epi32 (a: i32x4, b:i32x4) -> i32x4 {
387388
#[inline(always)]
388389
#[target_feature = "+sse4.1"]
389390
#[cfg_attr(test, assert_instr(ptest))]
390-
pub unsafe fn _mm_testz_si128(a: i64x2, mask: i64x2) -> i32 {
391-
ptestz(a, mask)
391+
pub unsafe fn _mm_testz_si128(a: __m128i, mask: __m128i) -> i32 {
392+
ptestz(a.into(), mask.into())
392393
}
393394

394395
/// Tests whether the specified bits in a 128-bit integer vector are all
@@ -406,8 +407,8 @@ pub unsafe fn _mm_testz_si128(a: i64x2, mask: i64x2) -> i32 {
406407
#[inline(always)]
407408
#[target_feature = "+sse4.1"]
408409
#[cfg_attr(test, assert_instr(ptest))]
409-
pub unsafe fn _mm_testc_si128(a: i64x2, mask: i64x2) -> i32 {
410-
ptestc(a, mask)
410+
pub unsafe fn _mm_testc_si128(a: __m128i, mask: __m128i) -> i32 {
411+
ptestc(a.into(), mask.into())
411412
}
412413

413414
/// Tests whether the specified bits in a 128-bit integer vector are
@@ -425,8 +426,8 @@ pub unsafe fn _mm_testc_si128(a: i64x2, mask: i64x2) -> i32 {
425426
#[inline(always)]
426427
#[target_feature = "+sse4.1"]
427428
#[cfg_attr(test, assert_instr(ptest))]
428-
pub unsafe fn _mm_testnzc_si128(a: i64x2, mask: i64x2) -> i32 {
429-
ptestnzc(a, mask)
429+
pub unsafe fn _mm_testnzc_si128(a: __m128i, mask: __m128i) -> i32 {
430+
ptestnzc(a.into(), mask.into())
430431
}
431432

432433
/// Tests whether the specified bits in a 128-bit integer vector are all
@@ -444,7 +445,7 @@ pub unsafe fn _mm_testnzc_si128(a: i64x2, mask: i64x2) -> i32 {
444445
#[inline(always)]
445446
#[target_feature = "+sse4.1"]
446447
#[cfg_attr(test, assert_instr(ptest))]
447-
pub unsafe fn _mm_test_all_zeros(a: i64x2, mask: i64x2) -> i32 {
448+
pub unsafe fn _mm_test_all_zeros(a: __m128i, mask: __m128i) -> i32 {
448449
_mm_testz_si128(a, mask)
449450
}
450451

@@ -463,8 +464,8 @@ pub unsafe fn _mm_test_all_zeros(a: i64x2, mask: i64x2) -> i32 {
463464
#[target_feature = "+sse4.1"]
464465
#[cfg_attr(test, assert_instr(pcmpeqd))]
465466
#[cfg_attr(test, assert_instr(ptest))]
466-
pub unsafe fn _mm_test_all_ones(a: i64x2) -> i32 {
467-
_mm_testc_si128(a, i64x2::splat(-1))
467+
pub unsafe fn _mm_test_all_ones(a: __m128i) -> i32 {
468+
_mm_testc_si128(a, ::x86::sse2::_mm_cmpeq_epi32(a.into(), a.into()).into())
468469
}
469470

470471
/// Tests whether the specified bits in a 128-bit integer vector are
@@ -482,7 +483,7 @@ pub unsafe fn _mm_test_all_ones(a: i64x2) -> i32 {
482483
#[inline(always)]
483484
#[target_feature = "+sse4.1"]
484485
#[cfg_attr(test, assert_instr(ptest))]
485-
pub unsafe fn _mm_test_mix_ones_zeros(a: i64x2, mask: i64x2) -> i32 {
486+
pub unsafe fn _mm_test_mix_ones_zeros(a: __m128i, mask: __m128i) -> i32 {
486487
_mm_testnzc_si128(a, mask)
487488
}
488489

@@ -850,6 +851,7 @@ mod tests {
850851
use stdsimd_test::simd_test;
851852

852853
use v128::*;
854+
use x86::__m128i;
853855
use x86::sse41;
854856

855857
#[simd_test = "sse4.1"]
@@ -1200,98 +1202,98 @@ mod tests {
12001202

12011203
#[simd_test = "sse4.1"]
12021204
unsafe fn _mm_testz_si128() {
1203-
let a = i64x2::splat(1);
1204-
let mask = i64x2::splat(0);
1205+
let a = __m128i::splat(1);
1206+
let mask = __m128i::splat(0);
12051207
let r = sse41::_mm_testz_si128(a, mask);
12061208
assert_eq!(r, 1);
1207-
let a = i64x2::splat(0b101);
1208-
let mask = i64x2::splat(0b110);
1209+
let a = __m128i::splat(0b101);
1210+
let mask = __m128i::splat(0b110);
12091211
let r = sse41::_mm_testz_si128(a, mask);
12101212
assert_eq!(r, 0);
1211-
let a = i64x2::splat(0b011);
1212-
let mask = i64x2::splat(0b100);
1213+
let a = __m128i::splat(0b011);
1214+
let mask = __m128i::splat(0b100);
12131215
let r = sse41::_mm_testz_si128(a, mask);
12141216
assert_eq!(r, 1);
12151217
}
12161218

12171219
#[simd_test = "sse4.1"]
12181220
unsafe fn _mm_testc_si128() {
1219-
let a = i64x2::splat(-1);
1220-
let mask = i64x2::splat(0);
1221+
let a = __m128i::splat(-1);
1222+
let mask = __m128i::splat(0);
12211223
let r = sse41::_mm_testc_si128(a, mask);
12221224
assert_eq!(r, 1);
1223-
let a = i64x2::splat(0b101);
1224-
let mask = i64x2::splat(0b110);
1225+
let a = __m128i::splat(0b101);
1226+
let mask = __m128i::splat(0b110);
12251227
let r = sse41::_mm_testc_si128(a, mask);
12261228
assert_eq!(r, 0);
1227-
let a = i64x2::splat(0b101);
1228-
let mask = i64x2::splat(0b100);
1229+
let a = __m128i::splat(0b101);
1230+
let mask = __m128i::splat(0b100);
12291231
let r = sse41::_mm_testc_si128(a, mask);
12301232
assert_eq!(r, 1);
12311233
}
12321234

12331235
#[simd_test = "sse4.1"]
12341236
unsafe fn _mm_testnzc_si128() {
1235-
let a = i64x2::splat(0);
1236-
let mask = i64x2::splat(1);
1237+
let a = __m128i::splat(0);
1238+
let mask = __m128i::splat(1);
12371239
let r = sse41::_mm_testnzc_si128(a, mask);
12381240
assert_eq!(r, 0);
1239-
let a = i64x2::splat(-1);
1240-
let mask = i64x2::splat(0);
1241+
let a = __m128i::splat(-1);
1242+
let mask = __m128i::splat(0);
12411243
let r = sse41::_mm_testnzc_si128(a, mask);
12421244
assert_eq!(r, 0);
1243-
let a = i64x2::splat(0b101);
1244-
let mask = i64x2::splat(0b110);
1245+
let a = __m128i::splat(0b101);
1246+
let mask = __m128i::splat(0b110);
12451247
let r = sse41::_mm_testnzc_si128(a, mask);
12461248
assert_eq!(r, 1);
1247-
let a = i64x2::splat(0b101);
1248-
let mask = i64x2::splat(0b101);
1249+
let a = __m128i::splat(0b101);
1250+
let mask = __m128i::splat(0b101);
12491251
let r = sse41::_mm_testnzc_si128(a, mask);
12501252
assert_eq!(r, 0);
12511253
}
12521254

12531255
#[simd_test = "sse4.1"]
12541256
unsafe fn _mm_test_all_zeros() {
1255-
let a = i64x2::splat(1);
1256-
let mask = i64x2::splat(0);
1257+
let a = __m128i::splat(1);
1258+
let mask = __m128i::splat(0);
12571259
let r = sse41::_mm_test_all_zeros(a, mask);
12581260
assert_eq!(r, 1);
1259-
let a = i64x2::splat(0b101);
1260-
let mask = i64x2::splat(0b110);
1261+
let a = __m128i::splat(0b101);
1262+
let mask = __m128i::splat(0b110);
12611263
let r = sse41::_mm_test_all_zeros(a, mask);
12621264
assert_eq!(r, 0);
1263-
let a = i64x2::splat(0b011);
1264-
let mask = i64x2::splat(0b100);
1265+
let a = __m128i::splat(0b011);
1266+
let mask = __m128i::splat(0b100);
12651267
let r = sse41::_mm_test_all_zeros(a, mask);
12661268
assert_eq!(r, 1);
12671269
}
12681270

12691271
#[simd_test = "sse4.1"]
12701272
unsafe fn _mm_test_all_ones() {
1271-
let a = i64x2::splat(-1);
1273+
let a = __m128i::splat(-1);
12721274
let r = sse41::_mm_test_all_ones(a);
12731275
assert_eq!(r, 1);
1274-
let a = i64x2::splat(0b101);
1276+
let a = __m128i::splat(0b101);
12751277
let r = sse41::_mm_test_all_ones(a);
12761278
assert_eq!(r, 0);
12771279
}
12781280

12791281
#[simd_test = "sse4.1"]
12801282
unsafe fn _mm_test_mix_ones_zeros() {
1281-
let a = i64x2::splat(0);
1282-
let mask = i64x2::splat(1);
1283+
let a = __m128i::splat(0);
1284+
let mask = __m128i::splat(1);
12831285
let r = sse41::_mm_test_mix_ones_zeros(a, mask);
12841286
assert_eq!(r, 0);
1285-
let a = i64x2::splat(-1);
1286-
let mask = i64x2::splat(0);
1287+
let a = __m128i::splat(-1);
1288+
let mask = __m128i::splat(0);
12871289
let r = sse41::_mm_test_mix_ones_zeros(a, mask);
12881290
assert_eq!(r, 0);
1289-
let a = i64x2::splat(0b101);
1290-
let mask = i64x2::splat(0b110);
1291+
let a = __m128i::splat(0b101);
1292+
let mask = __m128i::splat(0b110);
12911293
let r = sse41::_mm_test_mix_ones_zeros(a, mask);
12921294
assert_eq!(r, 1);
1293-
let a = i64x2::splat(0b101);
1294-
let mask = i64x2::splat(0b101);
1295+
let a = __m128i::splat(0b101);
1296+
let mask = __m128i::splat(0b101);
12951297
let r = sse41::_mm_test_mix_ones_zeros(a, mask);
12961298
assert_eq!(r, 0);
12971299
}

0 commit comments

Comments
 (0)