Skip to content

Commit 637cfa7

Browse files
p32blognzlbg
authored andcommitted
Make test intrinsics use __m128i
1 parent d84ccc3 commit 637cfa7

File tree

1 file changed

+48
-46
lines changed

1 file changed

+48
-46
lines changed

src/x86/sse41.rs

+48-46
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
@@ -425,8 +426,8 @@ pub unsafe fn _mm_mullo_epi32 (a: i32x4, b:i32x4) -> i32x4 {
425426
#[inline(always)]
426427
#[target_feature = "+sse4.1"]
427428
#[cfg_attr(test, assert_instr(ptest))]
428-
pub unsafe fn _mm_testz_si128(a: i64x2, mask: i64x2) -> i32 {
429-
ptestz(a, mask)
429+
pub unsafe fn _mm_testz_si128(a: __m128i, mask: __m128i) -> i32 {
430+
ptestz(a.into(), mask.into())
430431
}
431432

432433

@@ -445,8 +446,8 @@ pub unsafe fn _mm_testz_si128(a: i64x2, mask: i64x2) -> i32 {
445446
#[inline(always)]
446447
#[target_feature = "+sse4.1"]
447448
#[cfg_attr(test, assert_instr(ptest))]
448-
pub unsafe fn _mm_testc_si128(a: i64x2, mask: i64x2) -> i32 {
449-
ptestc(a, mask)
449+
pub unsafe fn _mm_testc_si128(a: __m128i, mask: __m128i) -> i32 {
450+
ptestc(a.into(), mask.into())
450451
}
451452

452453
/// Tests whether the specified bits in a 128-bit integer vector are
@@ -464,8 +465,8 @@ pub unsafe fn _mm_testc_si128(a: i64x2, mask: i64x2) -> i32 {
464465
#[inline(always)]
465466
#[target_feature = "+sse4.1"]
466467
#[cfg_attr(test, assert_instr(ptest))]
467-
pub unsafe fn _mm_testnzc_si128(a: i64x2, mask: i64x2) -> i32 {
468-
ptestnzc(a, mask)
468+
pub unsafe fn _mm_testnzc_si128(a: __m128i, mask: __m128i) -> i32 {
469+
ptestnzc(a.into(), mask.into())
469470
}
470471

471472
/// Tests whether the specified bits in a 128-bit integer vector are all
@@ -483,7 +484,7 @@ pub unsafe fn _mm_testnzc_si128(a: i64x2, mask: i64x2) -> i32 {
483484
#[inline(always)]
484485
#[target_feature = "+sse4.1"]
485486
#[cfg_attr(test, assert_instr(ptest))]
486-
pub unsafe fn _mm_test_all_zeros(a: i64x2, mask: i64x2) -> i32 {
487+
pub unsafe fn _mm_test_all_zeros(a: __m128i, mask: __m128i) -> i32 {
487488
_mm_testz_si128(a, mask)
488489
}
489490

@@ -502,8 +503,8 @@ pub unsafe fn _mm_test_all_zeros(a: i64x2, mask: i64x2) -> i32 {
502503
#[target_feature = "+sse4.1"]
503504
#[cfg_attr(test, assert_instr(pcmpeqd))]
504505
#[cfg_attr(test, assert_instr(ptest))]
505-
pub unsafe fn _mm_test_all_ones(a: i64x2) -> i32 {
506-
_mm_testc_si128(a, i64x2::splat(-1))
506+
pub unsafe fn _mm_test_all_ones(a: __m128i) -> i32 {
507+
_mm_testc_si128(a, ::x86::sse2::_mm_cmpeq_epi32(a.into(), a.into()).into())
507508
}
508509

509510
/// Tests whether the specified bits in a 128-bit integer vector are
@@ -521,7 +522,7 @@ pub unsafe fn _mm_test_all_ones(a: i64x2) -> i32 {
521522
#[inline(always)]
522523
#[target_feature = "+sse4.1"]
523524
#[cfg_attr(test, assert_instr(ptest))]
524-
pub unsafe fn _mm_test_mix_ones_zeros(a: i64x2, mask: i64x2) -> i32 {
525+
pub unsafe fn _mm_test_mix_ones_zeros(a: __m128i, mask: __m128i) -> i32 {
525526
_mm_testnzc_si128(a, mask)
526527
}
527528

@@ -924,6 +925,7 @@ mod tests {
924925
use stdsimd_test::simd_test;
925926

926927
use v128::*;
928+
use x86::__m128i;
927929
use x86::sse41;
928930

929931
#[simd_test = "sse4.1"]
@@ -1352,98 +1354,98 @@ mod tests {
13521354

13531355
#[simd_test = "sse4.1"]
13541356
unsafe fn _mm_testz_si128() {
1355-
let a = i64x2::splat(1);
1356-
let mask = i64x2::splat(0);
1357+
let a = __m128i::splat(1);
1358+
let mask = __m128i::splat(0);
13571359
let r = sse41::_mm_testz_si128(a, mask);
13581360
assert_eq!(r, 1);
1359-
let a = i64x2::splat(0b101);
1360-
let mask = i64x2::splat(0b110);
1361+
let a = __m128i::splat(0b101);
1362+
let mask = __m128i::splat(0b110);
13611363
let r = sse41::_mm_testz_si128(a, mask);
13621364
assert_eq!(r, 0);
1363-
let a = i64x2::splat(0b011);
1364-
let mask = i64x2::splat(0b100);
1365+
let a = __m128i::splat(0b011);
1366+
let mask = __m128i::splat(0b100);
13651367
let r = sse41::_mm_testz_si128(a, mask);
13661368
assert_eq!(r, 1);
13671369
}
13681370

13691371
#[simd_test = "sse4.1"]
13701372
unsafe fn _mm_testc_si128() {
1371-
let a = i64x2::splat(-1);
1372-
let mask = i64x2::splat(0);
1373+
let a = __m128i::splat(-1);
1374+
let mask = __m128i::splat(0);
13731375
let r = sse41::_mm_testc_si128(a, mask);
13741376
assert_eq!(r, 1);
1375-
let a = i64x2::splat(0b101);
1376-
let mask = i64x2::splat(0b110);
1377+
let a = __m128i::splat(0b101);
1378+
let mask = __m128i::splat(0b110);
13771379
let r = sse41::_mm_testc_si128(a, mask);
13781380
assert_eq!(r, 0);
1379-
let a = i64x2::splat(0b101);
1380-
let mask = i64x2::splat(0b100);
1381+
let a = __m128i::splat(0b101);
1382+
let mask = __m128i::splat(0b100);
13811383
let r = sse41::_mm_testc_si128(a, mask);
13821384
assert_eq!(r, 1);
13831385
}
13841386

13851387
#[simd_test = "sse4.1"]
13861388
unsafe fn _mm_testnzc_si128() {
1387-
let a = i64x2::splat(0);
1388-
let mask = i64x2::splat(1);
1389+
let a = __m128i::splat(0);
1390+
let mask = __m128i::splat(1);
13891391
let r = sse41::_mm_testnzc_si128(a, mask);
13901392
assert_eq!(r, 0);
1391-
let a = i64x2::splat(-1);
1392-
let mask = i64x2::splat(0);
1393+
let a = __m128i::splat(-1);
1394+
let mask = __m128i::splat(0);
13931395
let r = sse41::_mm_testnzc_si128(a, mask);
13941396
assert_eq!(r, 0);
1395-
let a = i64x2::splat(0b101);
1396-
let mask = i64x2::splat(0b110);
1397+
let a = __m128i::splat(0b101);
1398+
let mask = __m128i::splat(0b110);
13971399
let r = sse41::_mm_testnzc_si128(a, mask);
13981400
assert_eq!(r, 1);
1399-
let a = i64x2::splat(0b101);
1400-
let mask = i64x2::splat(0b101);
1401+
let a = __m128i::splat(0b101);
1402+
let mask = __m128i::splat(0b101);
14011403
let r = sse41::_mm_testnzc_si128(a, mask);
14021404
assert_eq!(r, 0);
14031405
}
14041406

14051407
#[simd_test = "sse4.1"]
14061408
unsafe fn _mm_test_all_zeros() {
1407-
let a = i64x2::splat(1);
1408-
let mask = i64x2::splat(0);
1409+
let a = __m128i::splat(1);
1410+
let mask = __m128i::splat(0);
14091411
let r = sse41::_mm_test_all_zeros(a, mask);
14101412
assert_eq!(r, 1);
1411-
let a = i64x2::splat(0b101);
1412-
let mask = i64x2::splat(0b110);
1413+
let a = __m128i::splat(0b101);
1414+
let mask = __m128i::splat(0b110);
14131415
let r = sse41::_mm_test_all_zeros(a, mask);
14141416
assert_eq!(r, 0);
1415-
let a = i64x2::splat(0b011);
1416-
let mask = i64x2::splat(0b100);
1417+
let a = __m128i::splat(0b011);
1418+
let mask = __m128i::splat(0b100);
14171419
let r = sse41::_mm_test_all_zeros(a, mask);
14181420
assert_eq!(r, 1);
14191421
}
14201422

14211423
#[simd_test = "sse4.1"]
14221424
unsafe fn _mm_test_all_ones() {
1423-
let a = i64x2::splat(-1);
1425+
let a = __m128i::splat(-1);
14241426
let r = sse41::_mm_test_all_ones(a);
14251427
assert_eq!(r, 1);
1426-
let a = i64x2::splat(0b101);
1428+
let a = __m128i::splat(0b101);
14271429
let r = sse41::_mm_test_all_ones(a);
14281430
assert_eq!(r, 0);
14291431
}
14301432

14311433
#[simd_test = "sse4.1"]
14321434
unsafe fn _mm_test_mix_ones_zeros() {
1433-
let a = i64x2::splat(0);
1434-
let mask = i64x2::splat(1);
1435+
let a = __m128i::splat(0);
1436+
let mask = __m128i::splat(1);
14351437
let r = sse41::_mm_test_mix_ones_zeros(a, mask);
14361438
assert_eq!(r, 0);
1437-
let a = i64x2::splat(-1);
1438-
let mask = i64x2::splat(0);
1439+
let a = __m128i::splat(-1);
1440+
let mask = __m128i::splat(0);
14391441
let r = sse41::_mm_test_mix_ones_zeros(a, mask);
14401442
assert_eq!(r, 0);
1441-
let a = i64x2::splat(0b101);
1442-
let mask = i64x2::splat(0b110);
1443+
let a = __m128i::splat(0b101);
1444+
let mask = __m128i::splat(0b110);
14431445
let r = sse41::_mm_test_mix_ones_zeros(a, mask);
14441446
assert_eq!(r, 1);
1445-
let a = i64x2::splat(0b101);
1446-
let mask = i64x2::splat(0b101);
1447+
let a = __m128i::splat(0b101);
1448+
let mask = __m128i::splat(0b101);
14471449
let r = sse41::_mm_test_mix_ones_zeros(a, mask);
14481450
assert_eq!(r, 0);
14491451
}

0 commit comments

Comments
 (0)