Remove PartialEq impls for x86 types (#294)

* Remove `PartialEq for __m64`

This helps to strip the public API of the vendor type for now, although this may
come back at a later date!

* Remove `PartialEq for __m128i`

Like the previous commit, but for another type!

* Remove `PartialEq for __m256i`

Same as previous commit!
This commit is contained in:
Alex Crichton 2018-01-20 11:24:09 -06:00 committed by GitHub
parent 4b66abaede
commit 30694efc68
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
18 changed files with 559 additions and 546 deletions

View file

@ -3041,7 +3041,7 @@ mod tests {
let a = _mm256_setr_ps(4., 9., 16., 25., 4., 9., 16., 25.);
let r = _mm256_cvtps_epi32(a);
let e = _mm256_setr_epi32(4, 9, 16, 25, 4, 9, 16, 25);
assert_eq!(r, e);
assert_eq_m256i(r, e);
}
#[simd_test = "avx"]
@ -3057,7 +3057,7 @@ mod tests {
let a = _mm256_setr_pd(4., 9., 16., 25.);
let r = _mm256_cvttpd_epi32(a);
let e = _mm_setr_epi32(4, 9, 16, 25);
assert_eq!(r, e);
assert_eq_m128i(r, e);
}
#[simd_test = "avx"]
@ -3065,7 +3065,7 @@ mod tests {
let a = _mm256_setr_pd(4., 9., 16., 25.);
let r = _mm256_cvtpd_epi32(a);
let e = _mm_setr_epi32(4, 9, 16, 25);
assert_eq!(r, e);
assert_eq_m128i(r, e);
}
#[simd_test = "avx"]
@ -3073,7 +3073,7 @@ mod tests {
let a = _mm256_setr_ps(4., 9., 16., 25., 4., 9., 16., 25.);
let r = _mm256_cvttps_epi32(a);
let e = _mm256_setr_epi32(4, 9, 16, 25, 4, 9, 16, 25);
assert_eq!(r, e);
assert_eq_m256i(r, e);
}
#[simd_test = "avx"]
@ -3097,7 +3097,7 @@ mod tests {
let a = _mm256_setr_epi64x(4, 3, 2, 5);
let r = _mm256_extractf128_si256(a, 0);
let e = _mm_setr_epi64x(4, 3);
assert_eq!(r, e);
assert_eq_m128i(r, e);
}
#[simd_test = "avx"]
@ -3202,7 +3202,7 @@ mod tests {
let b = _mm256_setr_epi32(5, 6, 7, 8, 5, 6, 7, 8);
let r = _mm256_permute2f128_si256(a, b, 0x20);
let e = _mm256_setr_epi32(1, 2, 3, 4, 5, 6, 7, 8);
assert_eq!(r, e);
assert_eq_m256i(r, e);
}
#[simd_test = "avx"]
@ -3266,7 +3266,7 @@ mod tests {
let b = _mm_setr_epi64x(5, 6);
let r = _mm256_insertf128_si256(a, b, 0);
let e = _mm256_setr_epi64x(5, 6, 3, 4);
assert_eq!(r, e);
assert_eq_m256i(r, e);
}
#[simd_test = "avx"]
@ -3286,7 +3286,7 @@ mod tests {
17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 0,
);
assert_eq!(r, e);
assert_eq_m256i(r, e);
}
#[simd_test = "avx"]
@ -3296,7 +3296,7 @@ mod tests {
let r = _mm256_insert_epi16(a, 0, 15);
let e =
_mm256_setr_epi16(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0);
assert_eq!(r, e);
assert_eq_m256i(r, e);
}
#[simd_test = "avx"]
@ -3304,7 +3304,7 @@ mod tests {
let a = _mm256_setr_epi32(1, 2, 3, 4, 5, 6, 7, 8);
let r = _mm256_insert_epi32(a, 0, 7);
let e = _mm256_setr_epi32(1, 2, 3, 4, 5, 6, 7, 0);
assert_eq!(r, e);
assert_eq_m256i(r, e);
}
#[simd_test = "avx"]
@ -3312,7 +3312,7 @@ mod tests {
let a = _mm256_setr_epi64x(1, 2, 3, 4);
let r = _mm256_insert_epi64(a, 0, 3);
let e = _mm256_setr_epi64x(1, 2, 3, 0);
assert_eq!(r, e);
assert_eq_m256i(r, e);
}
#[simd_test = "avx"]
@ -3389,7 +3389,7 @@ mod tests {
let p = &a as *const _;
let r = _mm256_load_si256(p);
let e = _mm256_setr_epi64x(1, 2, 3, 4);
assert_eq!(r, e);
assert_eq_m256i(r, e);
}
#[simd_test = "avx"]
@ -3397,7 +3397,7 @@ mod tests {
let a = _mm256_setr_epi64x(1, 2, 3, 4);
let mut r = _mm256_undefined_si256();
_mm256_store_si256(&mut r as *mut _, a);
assert_eq!(r, a);
assert_eq_m256i(r, a);
}
#[simd_test = "avx"]
@ -3406,7 +3406,7 @@ mod tests {
let p = &a as *const _;
let r = _mm256_loadu_si256(black_box(p));
let e = _mm256_setr_epi64x(1, 2, 3, 4);
assert_eq!(r, e);
assert_eq_m256i(r, e);
}
#[simd_test = "avx"]
@ -3414,7 +3414,7 @@ mod tests {
let a = _mm256_set1_epi8(9);
let mut r = _mm256_undefined_si256();
_mm256_storeu_si256(&mut r as *mut _, a);
assert_eq!(r, a);
assert_eq_m256i(r, a);
}
#[simd_test = "avx"]
@ -3539,7 +3539,7 @@ mod tests {
17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32,
);
assert_eq!(r, e);
assert_eq_m256i(r, e);
}
#[simd_test = "avx"]
@ -3547,7 +3547,7 @@ mod tests {
let a = _mm256_setr_epi64x(1, 2, 3, 4);
let mut r = _mm256_undefined_si256();
_mm256_stream_si256(&mut r as *mut _, a);
assert_eq!(r, a);
assert_eq_m256i(r, a);
}
#[simd_test = "avx"]
@ -3841,7 +3841,7 @@ mod tests {
#[simd_test = "avx"]
unsafe fn test_mm256_setzero_si256() {
let r = _mm256_setzero_si256();
assert_eq!(r, _mm256_set1_epi8(0));
assert_eq_m256i(r, _mm256_set1_epi8(0));
}
#[simd_test = "avx"]
@ -3872,7 +3872,7 @@ mod tests {
16, 15, 14, 13, 12, 11, 10, 9,
8, 7, 6, 5, 4, 3, 2, 1
);
assert_eq!(r, e);
assert_eq_m256i(r, e);
}
#[simd_test = "avx"]
@ -3882,7 +3882,7 @@ mod tests {
1, 2, 3, 4, 5, 6, 7, 8,
9, 10, 11, 12, 13, 14, 15, 16,
);
assert_eq!(
assert_eq_m256i(
r,
_mm256_setr_epi16(16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1)
);
@ -3891,13 +3891,13 @@ mod tests {
#[simd_test = "avx"]
unsafe fn test_mm256_set_epi32() {
let r = _mm256_set_epi32(1, 2, 3, 4, 5, 6, 7, 8);
assert_eq!(r, _mm256_setr_epi32(8, 7, 6, 5, 4, 3, 2, 1));
assert_eq_m256i(r, _mm256_setr_epi32(8, 7, 6, 5, 4, 3, 2, 1));
}
#[simd_test = "avx"]
unsafe fn test_mm256_set_epi64x() {
let r = _mm256_set_epi64x(1, 2, 3, 4);
assert_eq!(r, _mm256_setr_epi64x(4, 3, 2, 1));
assert_eq_m256i(r, _mm256_setr_epi64x(4, 3, 2, 1));
}
#[simd_test = "avx"]
@ -3929,7 +3929,7 @@ mod tests {
25, 26, 27, 28, 29, 30, 31, 32
);
assert_eq!(r, e);
assert_eq_m256i(r, e);
}
#[simd_test = "avx"]
@ -3939,7 +3939,7 @@ mod tests {
1, 2, 3, 4, 5, 6, 7, 8,
9, 10, 11, 12, 13, 14, 15, 16,
);
assert_eq!(
assert_eq_m256i(
r,
_mm256_setr_epi16(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
);
@ -3948,13 +3948,13 @@ mod tests {
#[simd_test = "avx"]
unsafe fn test_mm256_setr_epi32() {
let r = _mm256_setr_epi32(1, 2, 3, 4, 5, 6, 7, 8);
assert_eq!(r, _mm256_setr_epi32(1, 2, 3, 4, 5, 6, 7, 8));
assert_eq_m256i(r, _mm256_setr_epi32(1, 2, 3, 4, 5, 6, 7, 8));
}
#[simd_test = "avx"]
unsafe fn test_mm256_setr_epi64x() {
let r = _mm256_setr_epi64x(1, 2, 3, 4);
assert_eq!(r, _mm256_setr_epi64x(1, 2, 3, 4));
assert_eq_m256i(r, _mm256_setr_epi64x(1, 2, 3, 4));
}
#[simd_test = "avx"]
@ -3972,25 +3972,25 @@ mod tests {
#[simd_test = "avx"]
unsafe fn test_mm256_set1_epi8() {
let r = _mm256_set1_epi8(1);
assert_eq!(r, _mm256_set1_epi8(1));
assert_eq_m256i(r, _mm256_set1_epi8(1));
}
#[simd_test = "avx"]
unsafe fn test_mm256_set1_epi16() {
let r = _mm256_set1_epi16(1);
assert_eq!(r, _mm256_set1_epi16(1));
assert_eq_m256i(r, _mm256_set1_epi16(1));
}
#[simd_test = "avx"]
unsafe fn test_mm256_set1_epi32() {
let r = _mm256_set1_epi32(1);
assert_eq!(r, _mm256_set1_epi32(1));
assert_eq_m256i(r, _mm256_set1_epi32(1));
}
#[simd_test = "avx"]
unsafe fn test_mm256_set1_epi64x() {
let r = _mm256_set1_epi64x(1);
assert_eq!(r, _mm256_set1_epi64x(1));
assert_eq_m256i(r, _mm256_set1_epi64x(1));
}
#[simd_test = "avx"]
@ -4020,7 +4020,7 @@ mod tests {
0, 0, -96, 64, 0, 0, -64, 64,
0, 0, -32, 64, 0, 0, 0, 65,
);
assert_eq!(r, e);
assert_eq_m256i(r, e);
}
#[simd_test = "avx"]
@ -4069,7 +4069,7 @@ mod tests {
unsafe fn test_mm256_castsi256_si128() {
let a = _mm256_setr_epi64x(1, 2, 3, 4);
let r = _mm256_castsi256_si128(a);
assert_eq!(r, _mm_setr_epi64x(1, 2));
assert_eq_m128i(r, _mm_setr_epi64x(1, 2));
}
#[simd_test = "avx"]
@ -4085,7 +4085,7 @@ mod tests {
let a = _mm_setr_epi64x(1, 2);
let r = _mm256_zextsi128_si256(a);
let e = _mm256_setr_epi64x(1, 2, 0, 0);
assert_eq!(r, e);
assert_eq_m256i(r, e);
}
#[simd_test = "avx"]
@ -4138,7 +4138,7 @@ mod tests {
17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32,
);
assert_eq!(r, e);
assert_eq_m256i(r, e);
}
#[simd_test = "avx"]
@ -4181,7 +4181,7 @@ mod tests {
17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32,
);
assert_eq!(r, e);
assert_eq_m256i(r, e);
}
#[simd_test = "avx"]
@ -4226,7 +4226,7 @@ mod tests {
17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32,
);
assert_eq!(r, e);
assert_eq_m256i(r, e);
}
#[simd_test = "avx"]
@ -4280,8 +4280,8 @@ mod tests {
9, 10, 11, 12, 13, 14, 15, 16
);
assert_eq!(hi, e_hi);
assert_eq!(lo, e_lo);
assert_eq_m128i(hi, e_hi);
assert_eq_m128i(lo, e_lo);
}
#[simd_test = "avx"]

File diff suppressed because it is too large Load diff

View file

@ -3188,6 +3188,6 @@ mod tests {
let mut mem =
::std::boxed::Box::<__m64>::new(transmute(i8x8::splat(1)));
_mm_stream_pi(&mut *mem as *mut _ as *mut _, a);
assert_eq!(a, *mem);
assert_eq_m64(a, *mem);
}
}

File diff suppressed because it is too large Load diff

View file

@ -189,7 +189,7 @@ mod tests {
13, 14, 15, 16,
);
let r = _mm_lddqu_si128(&a);
assert_eq!(a, r);
assert_eq_m128i(a, r);
}
#[simd_test = "sse3"]

View file

@ -815,7 +815,7 @@ mod tests {
let e = _mm_setr_epi8(
0, 17, 2, 19, 4, 21, 6, 23, 8, 25, 10, 27, 12, 29, 14, 31,
);
assert_eq!(_mm_blendv_epi8(a, b, mask), e);
assert_eq_m128i(_mm_blendv_epi8(a, b, mask), e);
}
#[simd_test = "sse4.1"]
@ -862,7 +862,7 @@ mod tests {
let b = _mm_set1_epi16(1);
let r = _mm_blend_epi16(a, b, 0b1010_1100);
let e = _mm_setr_epi16(0, 0, 1, 1, 0, 1, 0, 1);
assert_eq!(r, e);
assert_eq_m128i(r, e);
}
#[simd_test = "sse4.1"]
@ -907,9 +907,9 @@ mod tests {
let a = _mm_set1_epi8(0);
let e = _mm_setr_epi8(0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
let r = _mm_insert_epi8(a, 32, 1);
assert_eq!(r, e);
assert_eq_m128i(r, e);
let r = _mm_insert_epi8(a, 32, 17);
assert_eq!(r, e);
assert_eq_m128i(r, e);
}
#[simd_test = "sse4.1"]
@ -917,9 +917,9 @@ mod tests {
let a = _mm_set1_epi32(0);
let e = _mm_setr_epi32(0, 32, 0, 0);
let r = _mm_insert_epi32(a, 32, 1);
assert_eq!(r, e);
assert_eq_m128i(r, e);
let r = _mm_insert_epi32(a, 32, 5);
assert_eq!(r, e);
assert_eq_m128i(r, e);
}
#[simd_test = "sse4.1"]
@ -940,7 +940,7 @@ mod tests {
2, 4, 6, 8, 10, 12, 14, 16,
18, 20, 22, 24, 26, 28, 30, 32,
);
assert_eq!(r, e);
assert_eq_m128i(r, e);
}
#[simd_test = "sse4.1"]
@ -949,7 +949,7 @@ mod tests {
let b = _mm_setr_epi16(2, 3, 6, 7, 10, 11, 14, 15);
let r = _mm_max_epu16(a, b);
let e = _mm_setr_epi16(2, 4, 6, 8, 10, 12, 14, 16);
assert_eq!(r, e);
assert_eq_m128i(r, e);
}
#[simd_test = "sse4.1"]
@ -958,7 +958,7 @@ mod tests {
let b = _mm_setr_epi32(2, 3, 6, 7);
let r = _mm_max_epi32(a, b);
let e = _mm_setr_epi32(2, 4, 6, 8);
assert_eq!(r, e);
assert_eq_m128i(r, e);
}
#[simd_test = "sse4.1"]
@ -967,7 +967,7 @@ mod tests {
let b = _mm_setr_epi32(2, 3, 6, 7);
let r = _mm_max_epu32(a, b);
let e = _mm_setr_epi32(2, 4, 6, 8);
assert_eq!(r, e);
assert_eq_m128i(r, e);
}
#[simd_test = "sse4.1"]
@ -988,7 +988,7 @@ mod tests {
1, 3, 5, 7, 9, 11, 13, 15,
17, 19, 21, 23, 25, 27, 29, 31,
);
assert_eq!(r, e);
assert_eq_m128i(r, e);
}
#[simd_test = "sse4.1"]
@ -1009,7 +1009,7 @@ mod tests {
1, -4, -6, 7, -10, -12, 13, -16,
17, 19, 21, 23, 25, 27, 29, 31,
);
assert_eq!(r, e);
assert_eq_m128i(r, e);
}
#[simd_test = "sse4.1"]
@ -1018,7 +1018,7 @@ mod tests {
let b = _mm_setr_epi16(2, 3, 6, 7, 10, 11, 14, 15);
let r = _mm_min_epu16(a, b);
let e = _mm_setr_epi16(1, 3, 5, 7, 9, 11, 13, 15);
assert_eq!(r, e);
assert_eq_m128i(r, e);
}
#[simd_test = "sse4.1"]
@ -1027,7 +1027,7 @@ mod tests {
let b = _mm_setr_epi32(2, 3, 6, 7);
let r = _mm_min_epi32(a, b);
let e = _mm_setr_epi32(1, 3, 5, 7);
assert_eq!(r, e);
assert_eq_m128i(r, e);
}
#[simd_test = "sse4.1"]
@ -1036,7 +1036,7 @@ mod tests {
let b = _mm_setr_epi32(-2, 3, -6, 8);
let r = _mm_min_epi32(a, b);
let e = _mm_setr_epi32(-2, 3, -6, -7);
assert_eq!(r, e);
assert_eq_m128i(r, e);
}
#[simd_test = "sse4.1"]
@ -1045,7 +1045,7 @@ mod tests {
let b = _mm_setr_epi32(2, 3, 6, 7);
let r = _mm_min_epu32(a, b);
let e = _mm_setr_epi32(1, 3, 5, 7);
assert_eq!(r, e);
assert_eq_m128i(r, e);
}
#[simd_test = "sse4.1"]
@ -1054,7 +1054,7 @@ mod tests {
let b = _mm_setr_epi32(-1, -2, -3, -4);
let r = _mm_packus_epi32(a, b);
let e = _mm_setr_epi16(1, 2, 3, 4, 0, 0, 0, 0);
assert_eq!(r, e);
assert_eq_m128i(r, e);
}
#[simd_test = "sse4.1"]
@ -1063,7 +1063,7 @@ mod tests {
let b = _mm_setr_epi64x(0, 0);
let r = _mm_cmpeq_epi64(a, b);
let e = _mm_setr_epi64x(-1, 0);
assert_eq!(r, e);
assert_eq_m128i(r, e);
}
#[simd_test = "sse4.1"]
@ -1071,11 +1071,11 @@ mod tests {
let a = _mm_set1_epi8(10);
let r = _mm_cvtepi8_epi16(a);
let e = _mm_set1_epi16(10);
assert_eq!(r, e);
assert_eq_m128i(r, e);
let a = _mm_set1_epi8(-10);
let r = _mm_cvtepi8_epi16(a);
let e = _mm_set1_epi16(-10);
assert_eq!(r, e);
assert_eq_m128i(r, e);
}
#[simd_test = "sse4.1"]
@ -1083,11 +1083,11 @@ mod tests {
let a = _mm_set1_epi8(10);
let r = _mm_cvtepi8_epi32(a);
let e = _mm_set1_epi32(10);
assert_eq!(r, e);
assert_eq_m128i(r, e);
let a = _mm_set1_epi8(-10);
let r = _mm_cvtepi8_epi32(a);
let e = _mm_set1_epi32(-10);
assert_eq!(r, e);
assert_eq_m128i(r, e);
}
#[simd_test = "sse4.1"]
@ -1095,11 +1095,11 @@ mod tests {
let a = _mm_set1_epi8(10);
let r = _mm_cvtepi8_epi64(a);
let e = _mm_set1_epi64x(10);
assert_eq!(r, e);
assert_eq_m128i(r, e);
let a = _mm_set1_epi8(-10);
let r = _mm_cvtepi8_epi64(a);
let e = _mm_set1_epi64x(-10);
assert_eq!(r, e);
assert_eq_m128i(r, e);
}
#[simd_test = "sse4.1"]
@ -1107,11 +1107,11 @@ mod tests {
let a = _mm_set1_epi16(10);
let r = _mm_cvtepi16_epi32(a);
let e = _mm_set1_epi32(10);
assert_eq!(r, e);
assert_eq_m128i(r, e);
let a = _mm_set1_epi16(-10);
let r = _mm_cvtepi16_epi32(a);
let e = _mm_set1_epi32(-10);
assert_eq!(r, e);
assert_eq_m128i(r, e);
}
#[simd_test = "sse4.1"]
@ -1119,11 +1119,11 @@ mod tests {
let a = _mm_set1_epi16(10);
let r = _mm_cvtepi16_epi64(a);
let e = _mm_set1_epi64x(10);
assert_eq!(r, e);
assert_eq_m128i(r, e);
let a = _mm_set1_epi16(-10);
let r = _mm_cvtepi16_epi64(a);
let e = _mm_set1_epi64x(-10);
assert_eq!(r, e);
assert_eq_m128i(r, e);
}
#[simd_test = "sse4.1"]
@ -1131,11 +1131,11 @@ mod tests {
let a = _mm_set1_epi32(10);
let r = _mm_cvtepi32_epi64(a);
let e = _mm_set1_epi64x(10);
assert_eq!(r, e);
assert_eq_m128i(r, e);
let a = _mm_set1_epi32(-10);
let r = _mm_cvtepi32_epi64(a);
let e = _mm_set1_epi64x(-10);
assert_eq!(r, e);
assert_eq_m128i(r, e);
}
#[simd_test = "sse4.1"]
@ -1143,7 +1143,7 @@ mod tests {
let a = _mm_set1_epi8(10);
let r = _mm_cvtepu8_epi16(a);
let e = _mm_set1_epi16(10);
assert_eq!(r, e);
assert_eq_m128i(r, e);
}
#[simd_test = "sse4.1"]
@ -1151,7 +1151,7 @@ mod tests {
let a = _mm_set1_epi8(10);
let r = _mm_cvtepu8_epi32(a);
let e = _mm_set1_epi32(10);
assert_eq!(r, e);
assert_eq_m128i(r, e);
}
#[simd_test = "sse4.1"]
@ -1159,7 +1159,7 @@ mod tests {
let a = _mm_set1_epi8(10);
let r = _mm_cvtepu8_epi64(a);
let e = _mm_set1_epi64x(10);
assert_eq!(r, e);
assert_eq_m128i(r, e);
}
#[simd_test = "sse4.1"]
@ -1167,7 +1167,7 @@ mod tests {
let a = _mm_set1_epi16(10);
let r = _mm_cvtepu16_epi32(a);
let e = _mm_set1_epi32(10);
assert_eq!(r, e);
assert_eq_m128i(r, e);
}
#[simd_test = "sse4.1"]
@ -1175,7 +1175,7 @@ mod tests {
let a = _mm_set1_epi16(10);
let r = _mm_cvtepu16_epi64(a);
let e = _mm_set1_epi64x(10);
assert_eq!(r, e);
assert_eq_m128i(r, e);
}
#[simd_test = "sse4.1"]
@ -1183,7 +1183,7 @@ mod tests {
let a = _mm_set1_epi32(10);
let r = _mm_cvtepu32_epi64(a);
let e = _mm_set1_epi64x(10);
assert_eq!(r, e);
assert_eq_m128i(r, e);
}
#[simd_test = "sse4.1"]
@ -1315,7 +1315,7 @@ mod tests {
let a = _mm_setr_epi16(23, 18, 44, 97, 50, 13, 67, 66);
let r = _mm_minpos_epu16(a);
let e = _mm_setr_epi16(13, 5, 0, 0, 0, 0, 0, 0);
assert_eq!(r, e);
assert_eq_m128i(r, e);
}
#[simd_test = "sse4.1"]
@ -1323,7 +1323,7 @@ mod tests {
let a = _mm_setr_epi16(0, 18, 44, 97, 50, 13, 67, 66);
let r = _mm_minpos_epu16(a);
let e = _mm_setr_epi16(0, 0, 0, 0, 0, 0, 0, 0);
assert_eq!(r, e);
assert_eq_m128i(r, e);
}
#[simd_test = "sse4.1"]
@ -1333,7 +1333,7 @@ mod tests {
let b = _mm_setr_epi32(1, 2, 3, 4);
let r = _mm_mul_epi32(a, b);
let e = _mm_setr_epi64x(1, 3);
assert_eq!(r, e);
assert_eq_m128i(r, e);
}
{
let a = _mm_setr_epi32(
@ -1350,7 +1350,7 @@ mod tests {
);
let r = _mm_mul_epi32(a, b);
let e = _mm_setr_epi64x(-300, 823043843622);
assert_eq!(r, e);
assert_eq_m128i(r, e);
}
}
@ -1361,7 +1361,7 @@ mod tests {
let b = _mm_setr_epi32(1, 2, 3, 4);
let r = _mm_mullo_epi32(a, b);
let e = _mm_setr_epi32(1, 2, 3, 4);
assert_eq!(r, e);
assert_eq_m128i(r, e);
}
{
let a = _mm_setr_epi32(15, -2, 1234567, 99999);
@ -1371,7 +1371,7 @@ mod tests {
// as a sign bit:
// 1234567 * 666666 = -1589877210
let e = _mm_setr_epi32(-300, 512, -1589877210, -1409865409);
assert_eq!(r, e);
assert_eq_m128i(r, e);
}
}
@ -1380,7 +1380,7 @@ mod tests {
let a = _mm_setr_epi16(8, 7, 6, 5, 4, 1, 2, 3);
let r = _mm_minpos_epu16(a);
let e = _mm_setr_epi16(1, 5, 0, 0, 0, 0, 0, 0);
assert_eq!(r, e);
assert_eq_m128i(r, e);
}
#[simd_test = "sse4.1"]
@ -1390,22 +1390,22 @@ mod tests {
let r = _mm_mpsadbw_epu8(a, a, 0b000);
let e = _mm_setr_epi16(0, 4, 8, 12, 16, 20, 24, 28);
assert_eq!(r, e);
assert_eq_m128i(r, e);
let r = _mm_mpsadbw_epu8(a, a, 0b001);
let e = _mm_setr_epi16(16, 12, 8, 4, 0, 4, 8, 12);
assert_eq!(r, e);
assert_eq_m128i(r, e);
let r = _mm_mpsadbw_epu8(a, a, 0b100);
let e = _mm_setr_epi16(16, 20, 24, 28, 32, 36, 40, 44);
assert_eq!(r, e);
assert_eq_m128i(r, e);
let r = _mm_mpsadbw_epu8(a, a, 0b101);
let e = _mm_setr_epi16(0, 4, 8, 12, 16, 20, 24, 28);
assert_eq!(r, e);
assert_eq_m128i(r, e);
let r = _mm_mpsadbw_epu8(a, a, 0b111);
let e = _mm_setr_epi16(32, 28, 24, 20, 16, 12, 8, 4);
assert_eq!(r, e);
assert_eq_m128i(r, e);
}
}

View file

@ -640,7 +640,7 @@ mod tests {
0x00, !0, !0, !0, !0, !0, !0, 0x00,
!0, !0, !0, !0, 0x00, !0, !0, !0,
);
assert_eq!(i, res);
assert_eq_m128i(i, res);
}
#[simd_test = "sse4.2"]
@ -715,7 +715,7 @@ mod tests {
!0, !0, !0, !0, !0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
);
assert_eq!(i, r);
assert_eq_m128i(i, r);
}
#[simd_test = "sse4.2"]

View file

@ -296,19 +296,19 @@ mod tests {
#[simd_test = "ssse3"]
unsafe fn test_mm_abs_epi8() {
let r = _mm_abs_epi8(_mm_set1_epi8(-5));
assert_eq!(r, _mm_set1_epi8(5));
assert_eq_m128i(r, _mm_set1_epi8(5));
}
#[simd_test = "ssse3"]
unsafe fn test_mm_abs_epi16() {
let r = _mm_abs_epi16(_mm_set1_epi16(-5));
assert_eq!(r, _mm_set1_epi16(5));
assert_eq_m128i(r, _mm_set1_epi16(5));
}
#[simd_test = "ssse3"]
unsafe fn test_mm_abs_epi32() {
let r = _mm_abs_epi32(_mm_set1_epi32(-5));
assert_eq!(r, _mm_set1_epi32(5));
assert_eq_m128i(r, _mm_set1_epi32(5));
}
#[simd_test = "ssse3"]
@ -320,7 +320,7 @@ mod tests {
let expected =
_mm_setr_epi8(5, 0, 5, 4, 9, 13, 7, 4, 13, 6, 6, 11, 5, 2, 9, 1);
let r = _mm_shuffle_epi8(a, b);
assert_eq!(r, expected);
assert_eq_m128i(r, expected);
}
#[simd_test = "ssse3"]
@ -330,23 +330,23 @@ mod tests {
let b =
_mm_setr_epi8(4, 63, 4, 3, 24, 12, 6, 19, 12, 5, 5, 10, 4, 1, 8, 0);
let r = _mm_alignr_epi8(a, b, 33);
assert_eq!(r, _mm_set1_epi8(0));
assert_eq_m128i(r, _mm_set1_epi8(0));
let r = _mm_alignr_epi8(a, b, 17);
let expected =
_mm_setr_epi8(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 0);
assert_eq!(r, expected);
assert_eq_m128i(r, expected);
let r = _mm_alignr_epi8(a, b, 16);
assert_eq!(r, a);
assert_eq_m128i(r, a);
let r = _mm_alignr_epi8(a, b, 15);
let expected =
_mm_setr_epi8(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
assert_eq!(r, expected);
assert_eq_m128i(r, expected);
let r = _mm_alignr_epi8(a, b, 0);
assert_eq!(r, b);
assert_eq_m128i(r, b);
}
#[simd_test = "ssse3"]
@ -355,7 +355,7 @@ mod tests {
let b = _mm_setr_epi16(4, 128, 4, 3, 24, 12, 6, 19);
let expected = _mm_setr_epi16(3, 7, 11, 15, 132, 7, 36, 25);
let r = _mm_hadd_epi16(a, b);
assert_eq!(r, expected);
assert_eq_m128i(r, expected);
}
#[simd_test = "ssse3"]
@ -364,7 +364,7 @@ mod tests {
let b = _mm_setr_epi16(4, 128, 4, 3, 32767, 1, -32768, -1);
let expected = _mm_setr_epi16(3, 7, 11, 15, 132, 7, 32767, -32768);
let r = _mm_hadds_epi16(a, b);
assert_eq!(r, expected);
assert_eq_m128i(r, expected);
}
#[simd_test = "ssse3"]
@ -373,7 +373,7 @@ mod tests {
let b = _mm_setr_epi32(4, 128, 4, 3);
let expected = _mm_setr_epi32(3, 7, 132, 7);
let r = _mm_hadd_epi32(a, b);
assert_eq!(r, expected);
assert_eq_m128i(r, expected);
}
#[simd_test = "ssse3"]
@ -382,7 +382,7 @@ mod tests {
let b = _mm_setr_epi16(4, 128, 4, 3, 24, 12, 6, 19);
let expected = _mm_setr_epi16(-1, -1, -1, -1, -124, 1, 12, -13);
let r = _mm_hsub_epi16(a, b);
assert_eq!(r, expected);
assert_eq_m128i(r, expected);
}
#[simd_test = "ssse3"]
@ -391,7 +391,7 @@ mod tests {
let b = _mm_setr_epi16(4, 128, 4, 3, 32767, -1, -32768, 1);
let expected = _mm_setr_epi16(-1, -1, -1, -1, -124, 1, 32767, -32768);
let r = _mm_hsubs_epi16(a, b);
assert_eq!(r, expected);
assert_eq_m128i(r, expected);
}
#[simd_test = "ssse3"]
@ -400,7 +400,7 @@ mod tests {
let b = _mm_setr_epi32(4, 128, 4, 3);
let expected = _mm_setr_epi32(-1, -1, -124, 1);
let r = _mm_hsub_epi32(a, b);
assert_eq!(r, expected);
assert_eq_m128i(r, expected);
}
#[simd_test = "ssse3"]
@ -411,7 +411,7 @@ mod tests {
_mm_setr_epi8(4, 63, 4, 3, 24, 12, 6, 19, 12, 5, 5, 10, 4, 1, 8, 0);
let expected = _mm_setr_epi16(130, 24, 192, 194, 158, 175, 66, 120);
let r = _mm_maddubs_epi16(a, b);
assert_eq!(r, expected);
assert_eq_m128i(r, expected);
}
#[simd_test = "ssse3"]
@ -420,7 +420,7 @@ mod tests {
let b = _mm_setr_epi16(4, 128, 4, 3, 32767, -1, -32768, 1);
let expected = _mm_setr_epi16(0, 0, 0, 0, 5, 0, -7, 0);
let r = _mm_mulhrs_epi16(a, b);
assert_eq!(r, expected);
assert_eq_m128i(r, expected);
}
#[simd_test = "ssse3"]
@ -441,7 +441,7 @@ mod tests {
9, 10, -11, 12, 13, -14, 15, 0,
);
let r = _mm_sign_epi8(a, b);
assert_eq!(r, expected);
assert_eq_m128i(r, expected);
}
#[simd_test = "ssse3"]
@ -450,7 +450,7 @@ mod tests {
let b = _mm_setr_epi16(4, 128, 0, 3, 1, -1, -2, 1);
let expected = _mm_setr_epi16(1, 2, 0, 4, -5, 6, -7, 8);
let r = _mm_sign_epi16(a, b);
assert_eq!(r, expected);
assert_eq_m128i(r, expected);
}
#[simd_test = "ssse3"]
@ -459,6 +459,6 @@ mod tests {
let b = _mm_setr_epi32(1, -1, 1, 0);
let expected = _mm_setr_epi32(-1, -2, 3, 0);
let r = _mm_sign_epi32(a, b);
assert_eq!(r, expected);
assert_eq_m128i(r, expected);
}
}

View file

@ -493,7 +493,7 @@ mod tests {
#[simd_test = "mmx"]
unsafe fn test_mm_setzero_si64() {
let r: __m64 = ::std::mem::transmute(0_i64);
assert_eq!(r, _mm_setzero_si64());
assert_eq_m64(r, _mm_setzero_si64());
}
#[simd_test = "mmx"]
@ -501,8 +501,8 @@ mod tests {
let a = _mm_setr_pi8(-1, -1, 1, 1, -1, 0, 1, 0);
let b = _mm_setr_pi8(-127, 101, 99, 126, 0, -1, 0, 1);
let e = _mm_setr_pi8(-128, 100, 100, 127, -1, -1, 1, 1);
assert_eq!(e, _mm_add_pi8(a, b));
assert_eq!(e, _m_paddb(a, b));
assert_eq_m64(e, _mm_add_pi8(a, b));
assert_eq_m64(e, _m_paddb(a, b));
}
#[simd_test = "mmx"]
@ -515,8 +515,8 @@ mod tests {
i16::max_value() - 1,
);
let e = _mm_setr_pi16(i16::min_value(), 30000, -30000, i16::max_value());
assert_eq!(e, _mm_add_pi16(a, b));
assert_eq!(e, _m_paddw(a, b));
assert_eq_m64(e, _mm_add_pi16(a, b));
assert_eq_m64(e, _m_paddw(a, b));
}
#[simd_test = "mmx"]
@ -524,8 +524,8 @@ mod tests {
let a = _mm_setr_pi32(1, -1);
let b = _mm_setr_pi32(i32::max_value() - 1, i32::min_value() + 1);
let e = _mm_setr_pi32(i32::max_value(), i32::min_value());
assert_eq!(e, _mm_add_pi32(a, b));
assert_eq!(e, _m_paddd(a, b));
assert_eq_m64(e, _mm_add_pi32(a, b));
assert_eq_m64(e, _m_paddd(a, b));
}
#[simd_test = "mmx"]
@ -534,8 +534,8 @@ mod tests {
let b = _mm_setr_pi8(-100, 1, -1, 100, 0, -1, 0, 1);
let e =
_mm_setr_pi8(i8::min_value(), 0, 0, i8::max_value(), -1, -1, 1, 1);
assert_eq!(e, _mm_adds_pi8(a, b));
assert_eq!(e, _m_paddsb(a, b));
assert_eq_m64(e, _mm_adds_pi8(a, b));
assert_eq_m64(e, _m_paddsb(a, b));
}
#[simd_test = "mmx"]
@ -543,8 +543,8 @@ mod tests {
let a = _mm_setr_pi16(-32000, 32000, 4, 0);
let b = _mm_setr_pi16(-32000, 32000, -5, 1);
let e = _mm_setr_pi16(i16::min_value(), i16::max_value(), -1, 1);
assert_eq!(e, _mm_adds_pi16(a, b));
assert_eq!(e, _m_paddsw(a, b));
assert_eq_m64(e, _mm_adds_pi16(a, b));
assert_eq_m64(e, _m_paddsw(a, b));
}
#[simd_test = "mmx"]
@ -552,8 +552,8 @@ mod tests {
let a = _mm_setr_pi8(0, 1, 2, 3, 4, 5, 6, 200u8 as i8);
let b = _mm_setr_pi8(0, 10, 20, 30, 40, 50, 60, 200u8 as i8);
let e = _mm_setr_pi8(0, 11, 22, 33, 44, 55, 66, u8::max_value() as i8);
assert_eq!(e, _mm_adds_pu8(a, b));
assert_eq!(e, _m_paddusb(a, b));
assert_eq_m64(e, _mm_adds_pu8(a, b));
assert_eq_m64(e, _m_paddusb(a, b));
}
#[simd_test = "mmx"]
@ -561,8 +561,8 @@ mod tests {
let a = _mm_setr_pi16(0, 1, 2, 60000u16 as i16);
let b = _mm_setr_pi16(0, 10, 20, 60000u16 as i16);
let e = _mm_setr_pi16(0, 11, 22, u16::max_value() as i16);
assert_eq!(e, _mm_adds_pu16(a, b));
assert_eq!(e, _m_paddusw(a, b));
assert_eq_m64(e, _mm_adds_pu16(a, b));
assert_eq_m64(e, _m_paddusw(a, b));
}
#[simd_test = "mmx"]
@ -570,8 +570,8 @@ mod tests {
let a = _mm_setr_pi8(0, 0, 1, 1, -1, -1, 0, 0);
let b = _mm_setr_pi8(-1, 1, -2, 2, 100, -100, -127, 127);
let e = _mm_setr_pi8(1, -1, 3, -1, -101, 99, 127, -127);
assert_eq!(e, _mm_sub_pi8(a, b));
assert_eq!(e, _m_psubb(a, b));
assert_eq_m64(e, _mm_sub_pi8(a, b));
assert_eq_m64(e, _m_psubb(a, b));
}
#[simd_test = "mmx"]
@ -579,8 +579,8 @@ mod tests {
let a = _mm_setr_pi16(-20000, -20000, 20000, 30000);
let b = _mm_setr_pi16(-10000, 10000, -10000, 30000);
let e = _mm_setr_pi16(-10000, -30000, 30000, 0);
assert_eq!(e, _mm_sub_pi16(a, b));
assert_eq!(e, _m_psubw(a, b));
assert_eq_m64(e, _mm_sub_pi16(a, b));
assert_eq_m64(e, _m_psubw(a, b));
}
#[simd_test = "mmx"]
@ -588,8 +588,8 @@ mod tests {
let a = _mm_setr_pi32(500_000, -500_000);
let b = _mm_setr_pi32(500_000, 500_000);
let e = _mm_setr_pi32(0, -1_000_000);
assert_eq!(e, _mm_sub_pi32(a, b));
assert_eq!(e, _m_psubd(a, b));
assert_eq_m64(e, _mm_sub_pi32(a, b));
assert_eq_m64(e, _m_psubd(a, b));
}
#[simd_test = "mmx"]
@ -606,8 +606,8 @@ mod tests {
-8,
8,
);
assert_eq!(e, _mm_subs_pi8(a, b));
assert_eq!(e, _m_psubsb(a, b));
assert_eq_m64(e, _mm_subs_pi8(a, b));
assert_eq_m64(e, _m_psubsb(a, b));
}
#[simd_test = "mmx"]
@ -615,8 +615,8 @@ mod tests {
let a = _mm_setr_pi16(-20000, 20000, 0, 0);
let b = _mm_setr_pi16(20000, -20000, -1, 1);
let e = _mm_setr_pi16(i16::min_value(), i16::max_value(), 1, -1);
assert_eq!(e, _mm_subs_pi16(a, b));
assert_eq!(e, _m_psubsw(a, b));
assert_eq_m64(e, _mm_subs_pi16(a, b));
assert_eq_m64(e, _m_psubsw(a, b));
}
#[simd_test = "mmx"]
@ -624,8 +624,8 @@ mod tests {
let a = _mm_setr_pi8(50, 10, 20, 30, 40, 60, 70, 80);
let b = _mm_setr_pi8(60, 20, 30, 40, 30, 20, 10, 0);
let e = _mm_setr_pi8(0, 0, 0, 0, 10, 40, 60, 80);
assert_eq!(e, _mm_subs_pu8(a, b));
assert_eq!(e, _m_psubusb(a, b));
assert_eq_m64(e, _mm_subs_pu8(a, b));
assert_eq_m64(e, _m_psubusb(a, b));
}
#[simd_test = "mmx"]
@ -633,8 +633,8 @@ mod tests {
let a = _mm_setr_pi16(10000, 200, 0, 44444u16 as i16);
let b = _mm_setr_pi16(20000, 300, 1, 11111);
let e = _mm_setr_pi16(0, 0, 0, 33333u16 as i16);
assert_eq!(e, _mm_subs_pu16(a, b));
assert_eq!(e, _m_psubusw(a, b));
assert_eq_m64(e, _mm_subs_pu16(a, b));
assert_eq_m64(e, _m_psubusw(a, b));
}
#[simd_test = "mmx"]
@ -642,7 +642,7 @@ mod tests {
let a = _mm_setr_pi16(-1, 2, -3, 4);
let b = _mm_setr_pi16(-5, 6, -7, 8);
let r = _mm_setr_pi8(-1, 2, -3, 4, -5, 6, -7, 8);
assert_eq!(r, _mm_packs_pi16(a, b));
assert_eq_m64(r, _mm_packs_pi16(a, b));
}
#[simd_test = "mmx"]
@ -650,7 +650,7 @@ mod tests {
let a = _mm_setr_pi32(-1, 2);
let b = _mm_setr_pi32(-5, 6);
let r = _mm_setr_pi16(-1, 2, -5, 6);
assert_eq!(r, _mm_packs_pi32(a, b));
assert_eq_m64(r, _mm_packs_pi32(a, b));
}
#[simd_test = "mmx"]
@ -658,7 +658,7 @@ mod tests {
let a = _mm_setr_pi8(0, 1, 2, 3, 4, 5, 6, 7);
let b = _mm_setr_pi8(8, 7, 6, 5, 4, 3, 2, 1);
let r = _mm_setr_pi8(0, 0, 0, 0, 0, -1, -1, -1);
assert_eq!(r, _mm_cmpgt_pi8(a, b));
assert_eq_m64(r, _mm_cmpgt_pi8(a, b));
}
#[simd_test = "mmx"]
@ -666,7 +666,7 @@ mod tests {
let a = _mm_setr_pi16(0, 1, 2, 3);
let b = _mm_setr_pi16(4, 3, 2, 1);
let r = _mm_setr_pi16(0, 0, 0, -1);
assert_eq!(r, _mm_cmpgt_pi16(a, b));
assert_eq_m64(r, _mm_cmpgt_pi16(a, b));
}
#[simd_test = "mmx"]
@ -676,8 +676,8 @@ mod tests {
let r0 = _mm_setr_pi32(0, -1);
let r1 = _mm_setr_pi32(-1, 0);
assert_eq!(r0, _mm_cmpgt_pi32(a, b));
assert_eq!(r1, _mm_cmpgt_pi32(b, a));
assert_eq_m64(r0, _mm_cmpgt_pi32(a, b));
assert_eq_m64(r1, _mm_cmpgt_pi32(b, a));
}
#[simd_test = "mmx"]
@ -686,7 +686,7 @@ mod tests {
let b = _mm_setr_pi8(1, 2, 5, 6, 9, 10, 13, 14);
let r = _mm_setr_pi8(8, 9, 11, 10, 12, 13, 15, 14);
assert_eq!(r, _mm_unpackhi_pi8(a, b));
assert_eq_m64(r, _mm_unpackhi_pi8(a, b));
}
#[simd_test = "mmx"]
@ -694,7 +694,7 @@ mod tests {
let a = _mm_setr_pi8(0, 1, 2, 3, 4, 5, 6, 7);
let b = _mm_setr_pi8(8, 9, 10, 11, 12, 13, 14, 15);
let r = _mm_setr_pi8(0, 8, 1, 9, 2, 10, 3, 11);
assert_eq!(r, _mm_unpacklo_pi8(a, b));
assert_eq_m64(r, _mm_unpacklo_pi8(a, b));
}
#[simd_test = "mmx"]
@ -702,7 +702,7 @@ mod tests {
let a = _mm_setr_pi16(0, 1, 2, 3);
let b = _mm_setr_pi16(4, 5, 6, 7);
let r = _mm_setr_pi16(2, 6, 3, 7);
assert_eq!(r, _mm_unpackhi_pi16(a, b));
assert_eq_m64(r, _mm_unpackhi_pi16(a, b));
}
#[simd_test = "mmx"]
@ -710,7 +710,7 @@ mod tests {
let a = _mm_setr_pi16(0, 1, 2, 3);
let b = _mm_setr_pi16(4, 5, 6, 7);
let r = _mm_setr_pi16(0, 4, 1, 5);
assert_eq!(r, _mm_unpacklo_pi16(a, b));
assert_eq_m64(r, _mm_unpacklo_pi16(a, b));
}
#[simd_test = "mmx"]
@ -719,7 +719,7 @@ mod tests {
let b = _mm_setr_pi32(1, 2);
let r = _mm_setr_pi32(3, 2);
assert_eq!(r, _mm_unpackhi_pi32(a, b));
assert_eq_m64(r, _mm_unpackhi_pi32(a, b));
}
#[simd_test = "mmx"]
@ -728,6 +728,6 @@ mod tests {
let b = _mm_setr_pi32(1, 2);
let r = _mm_setr_pi32(0, 1);
assert_eq!(r, _mm_unpacklo_pi32(a, b));
assert_eq_m64(r, _mm_unpacklo_pi32(a, b));
}
}

View file

@ -455,8 +455,6 @@ pub unsafe fn _mm_cvtps_pi8(a: __m128) -> __m64 {
#[cfg(test)]
mod tests {
use std::mem;
use x86::*;
use stdsimd_test::simd_test;
@ -466,8 +464,8 @@ mod tests {
let b = _mm_setr_pi16(5, -2, 7, -4);
let r = _mm_setr_pi16(5, 6, 7, 8);
assert_eq!(r, _mm_max_pi16(a, b));
assert_eq!(r, _m_pmaxsw(a, b));
assert_eq_m64(r, _mm_max_pi16(a, b));
assert_eq_m64(r, _m_pmaxsw(a, b));
}
#[simd_test = "sse"]
@ -476,8 +474,8 @@ mod tests {
let b = _mm_setr_pi8(5, 2, 7, 4, 5, 2, 7, 4);
let r = _mm_setr_pi8(5, 6, 7, 8, 5, 6, 7, 8);
assert_eq!(r, _mm_max_pu8(a, b));
assert_eq!(r, _m_pmaxub(a, b));
assert_eq_m64(r, _mm_max_pu8(a, b));
assert_eq_m64(r, _m_pmaxub(a, b));
}
#[simd_test = "sse"]
@ -486,8 +484,8 @@ mod tests {
let b = _mm_setr_pi16(5, -2, 7, -4);
let r = _mm_setr_pi16(-1, -2, -3, -4);
assert_eq!(r, _mm_min_pi16(a, b));
assert_eq!(r, _m_pminsw(a, b));
assert_eq_m64(r, _mm_min_pi16(a, b));
assert_eq_m64(r, _m_pminsw(a, b));
}
#[simd_test = "sse"]
@ -496,42 +494,42 @@ mod tests {
let b = _mm_setr_pi8(5, 2, 7, 4, 5, 2, 7, 4);
let r = _mm_setr_pi8(2, 2, 3, 4, 2, 2, 3, 4);
assert_eq!(r, _mm_min_pu8(a, b));
assert_eq!(r, _m_pminub(a, b));
assert_eq_m64(r, _mm_min_pu8(a, b));
assert_eq_m64(r, _m_pminub(a, b));
}
#[simd_test = "sse"]
unsafe fn test_mm_mulhi_pu16() {
let (a, b) = (_mm_set1_pi16(1000), _mm_set1_pi16(1001));
let r = _mm_mulhi_pu16(a, b);
assert_eq!(r, _mm_set1_pi16(15));
assert_eq_m64(r, _mm_set1_pi16(15));
}
#[simd_test = "sse"]
unsafe fn test_m_pmulhuw() {
let (a, b) = (_mm_set1_pi16(1000), _mm_set1_pi16(1001));
let r = _m_pmulhuw(a, b);
assert_eq!(r, _mm_set1_pi16(15));
assert_eq_m64(r, _mm_set1_pi16(15));
}
#[simd_test = "sse"]
unsafe fn test_mm_avg_pu8() {
let (a, b) = (_mm_set1_pi8(3), _mm_set1_pi8(9));
let r = _mm_avg_pu8(a, b);
assert_eq!(r, _mm_set1_pi8(6));
assert_eq_m64(r, _mm_set1_pi8(6));
let r = _m_pavgb(a, b);
assert_eq!(r, _mm_set1_pi8(6));
assert_eq_m64(r, _mm_set1_pi8(6));
}
#[simd_test = "sse"]
unsafe fn test_mm_avg_pu16() {
let (a, b) = (_mm_set1_pi16(3), _mm_set1_pi16(9));
let r = _mm_avg_pu16(a, b);
assert_eq!(r, _mm_set1_pi16(6));
assert_eq_m64(r, _mm_set1_pi16(6));
let r = _m_pavgw(a, b);
assert_eq!(r, _mm_set1_pi16(6));
assert_eq_m64(r, _mm_set1_pi16(6));
}
#[simd_test = "sse"]
@ -540,10 +538,10 @@ mod tests {
1, 2, 3, 4);
let b = _mm_setr_pi8(0, 0, 0, 0, 2, 1, 2, 1);
let r = _mm_sad_pu8(a, b);
assert_eq!(r, mem::transmute(_mm_setr_pi16(1020, 0, 0, 0)));
assert_eq_m64(r, _mm_setr_pi16(1020, 0, 0, 0));
let r = _m_psadbw(a, b);
assert_eq!(r, mem::transmute(_mm_setr_pi16(1020, 0, 0, 0)));
assert_eq_m64(r, _mm_setr_pi16(1020, 0, 0, 0));
}
#[simd_test = "sse"]
@ -610,11 +608,11 @@ mod tests {
&mut r as *mut _ as *mut i8,
);
let e = _mm_setr_pi8(0, 0, 9, 0, 0, 0, 0, 0);
assert_eq!(r, e);
assert_eq_m64(r, e);
let mut r = _mm_set1_pi8(0);
_m_maskmovq(a, mask, &mut r as *mut _ as *mut i8);
assert_eq!(r, e);
assert_eq_m64(r, e);
}
#[simd_test = "sse"]
@ -634,13 +632,13 @@ mod tests {
let a = _mm_setr_pi16(1, 2, 3, 4);
let r = _mm_insert_pi16(a, 0, 0b0);
let expected = _mm_setr_pi16(0, 2, 3, 4);
assert_eq!(r, expected);
assert_eq_m64(r, expected);
let r = _mm_insert_pi16(a, 0, 0b10);
let expected = _mm_setr_pi16(1, 2, 0, 4);
assert_eq!(r, expected);
assert_eq_m64(r, expected);
let r = _m_pinsrw(a, 0, 0b10);
assert_eq!(r, expected);
assert_eq_m64(r, expected);
}
#[simd_test = "sse"]
@ -658,10 +656,10 @@ mod tests {
let a = _mm_setr_pi16(1, 2, 3, 4);
let r = _mm_shuffle_pi16(a, 0b00_01_01_11);
let expected = _mm_setr_pi16(4, 2, 2, 1);
assert_eq!(r, expected);
assert_eq_m64(r, expected);
let r = _m_pshufw(a, 0b00_01_01_11);
assert_eq!(r, expected);
assert_eq_m64(r, expected);
}
#[simd_test = "sse"]
@ -669,8 +667,8 @@ mod tests {
let a = _mm_setr_ps(1.0, 2.0, 3.0, 4.0);
let r = _mm_setr_pi32(1, 2);
assert_eq!(r, _mm_cvtps_pi32(a));
assert_eq!(r, _mm_cvt_ps2pi(a));
assert_eq_m64(r, _mm_cvtps_pi32(a));
assert_eq_m64(r, _mm_cvt_ps2pi(a));
}
#[simd_test = "sse"]
@ -678,21 +676,21 @@ mod tests {
let a = _mm_setr_ps(7.0, 2.0, 3.0, 4.0);
let r = _mm_setr_pi32(7, 2);
assert_eq!(r, _mm_cvttps_pi32(a));
assert_eq!(r, _mm_cvtt_ps2pi(a));
assert_eq_m64(r, _mm_cvttps_pi32(a));
assert_eq_m64(r, _mm_cvtt_ps2pi(a));
}
#[simd_test = "sse"]
unsafe fn test_mm_cvtps_pi16() {
let a = _mm_setr_ps(7.0, 2.0, 3.0, 4.0);
let r = _mm_setr_pi16(7, 2, 3, 4);
assert_eq!(r, _mm_cvtps_pi16(a));
assert_eq_m64(r, _mm_cvtps_pi16(a));
}
#[simd_test = "sse"]
unsafe fn test_mm_cvtps_pi8() {
let a = _mm_setr_ps(7.0, 2.0, 3.0, 4.0);
let r = _mm_setr_pi8(7, 2, 3, 4, 0, 0, 0, 0);
assert_eq!(r, _mm_cvtps_pi8(a));
assert_eq_m64(r, _mm_cvtps_pi8(a));
}
}

View file

@ -154,7 +154,7 @@ mod tests {
let b = _mm_setr_pi32(3, 4);
let expected = 3u64;
let r = _mm_mul_su32(a, b);
assert_eq!(r, mem::transmute(expected));
assert_eq_m64(r, mem::transmute(expected));
}
#[simd_test = "sse2"]
@ -178,26 +178,26 @@ mod tests {
unsafe fn test_mm_set_epi64() {
let r =
_mm_set_epi64(mem::transmute(1i64), mem::transmute(2i64));
assert_eq!(r, _mm_setr_epi64x(2, 1));
assert_eq_m128i(r, _mm_setr_epi64x(2, 1));
}
#[simd_test = "sse2"]
unsafe fn test_mm_set1_epi64() {
let r = _mm_set1_epi64(mem::transmute(1i64));
assert_eq!(r, _mm_setr_epi64x(1, 1));
assert_eq_m128i(r, _mm_setr_epi64x(1, 1));
}
#[simd_test = "sse2"]
unsafe fn test_mm_setr_epi64() {
let r =
_mm_setr_epi64(mem::transmute(1i64), mem::transmute(2i64));
assert_eq!(r, _mm_setr_epi64x(1, 2));
assert_eq_m128i(r, _mm_setr_epi64x(1, 2));
}
#[simd_test = "sse2"]
unsafe fn test_mm_movepi64_pi64() {
let r = _mm_movepi64_pi64(_mm_setr_epi64x(5, 0));
assert_eq!(r, _mm_setr_pi8(5, 0, 0, 0, 0, 0, 0, 0));
assert_eq_m64(r, _mm_setr_pi8(5, 0, 0, 0, 0, 0, 0, 0));
}
#[simd_test = "sse2"]
@ -212,14 +212,14 @@ mod tests {
0,
0,
));
assert_eq!(r, _mm_setr_epi64x(5, 0));
assert_eq_m128i(r, _mm_setr_epi64x(5, 0));
}
#[simd_test = "sse2"]
unsafe fn test_mm_cvtpd_pi32() {
let a = _mm_setr_pd(5., 0.);
let r = _mm_cvtpd_pi32(a);
assert_eq!(r, _mm_setr_pi32(5, 0));
assert_eq_m64(r, _mm_setr_pi32(5, 0));
}
#[simd_test = "sse2"]
@ -228,10 +228,10 @@ mod tests {
let a = _mm_setr_pd(5., 0.);
let r = _mm_cvttpd_pi32(a);
assert_eq!(r, _mm_setr_pi32(5, 0));
assert_eq_m64(r, _mm_setr_pi32(5, 0));
let a = _mm_setr_pd(f64::NEG_INFINITY, f64::NAN);
let r = _mm_cvttpd_pi32(a);
assert_eq!(r, _mm_setr_pi32(i32::MIN, i32::MIN));
assert_eq_m64(r, _mm_setr_pi32(i32::MIN, i32::MIN));
}
}

View file

@ -27,6 +27,6 @@ mod tests {
let a = _mm_setr_epi64x(0, 0x2a);
let b = _mm_set1_epi64x(0x00);
let i = _mm_cmpgt_epi64(a, b);
assert_eq!(i, _mm_setr_epi64x(0x00, 0xffffffffffffffffu64 as i64));
assert_eq_m128i(i, _mm_setr_epi64x(0x00, 0xffffffffffffffffu64 as i64));
}
}

View file

@ -87,7 +87,7 @@ mod tests {
let y = _mm_setr_epi64x(v, 0);
let e = _mm_setr_epi64x(0b0110_i64, 0);
let r = _mm_extract_si64(x, y);
assert_eq!(r, e);
assert_eq_m128i(r, e);
}
#[simd_test = "sse4a"]
@ -104,7 +104,7 @@ mod tests {
// ^idx: 2^3 = 8 ^length = 2^2 = 4
let y = _mm_setr_epi64x(i, v);
let r = _mm_insert_si64(x, y);
assert_eq!(r, expected);
assert_eq_m128i(r, expected);
}
#[repr(align(16))]

View file

@ -227,19 +227,19 @@ mod tests {
#[simd_test = "ssse3"]
unsafe fn test_mm_abs_pi8() {
let r = _mm_abs_pi8(_mm_set1_pi8(-5));
assert_eq!(r, _mm_set1_pi8(5));
assert_eq_m64(r, _mm_set1_pi8(5));
}
#[simd_test = "ssse3"]
unsafe fn test_mm_abs_pi16() {
let r = _mm_abs_pi16(_mm_set1_pi16(-5));
assert_eq!(r, _mm_set1_pi16(5));
assert_eq_m64(r, _mm_set1_pi16(5));
}
#[simd_test = "ssse3"]
unsafe fn test_mm_abs_pi32() {
let r = _mm_abs_pi32(_mm_set1_pi32(-5));
assert_eq!(r, _mm_set1_pi32(5));
assert_eq_m64(r, _mm_set1_pi32(5));
}
#[simd_test = "ssse3"]
@ -248,7 +248,7 @@ mod tests {
let b = _mm_setr_pi8(4, 128u8 as i8, 4, 3, 24, 12, 6, 19);
let expected = _mm_setr_pi8(5, 0, 5, 4, 1, 5, 7, 4);
let r = _mm_shuffle_pi8(a, b);
assert_eq!(r, expected);
assert_eq_m64(r, expected);
}
#[simd_test = "ssse3"]
@ -256,7 +256,7 @@ mod tests {
let a = _mm_setr_pi32(0x89ABCDEF_u32 as i32, 0x01234567_u32 as i32);
let b = _mm_setr_pi32(0xBBAA9988_u32 as i32, 0xFFDDEECC_u32 as i32);
let r = _mm_alignr_pi8(a, b, 4);
assert_eq!(r, ::std::mem::transmute(0x89abcdefffddeecc_u64));
assert_eq_m64(r, ::std::mem::transmute(0x89abcdefffddeecc_u64));
}
#[simd_test = "ssse3"]
@ -265,7 +265,7 @@ mod tests {
let b = _mm_setr_pi16(4, 128, 4, 3);
let expected = _mm_setr_pi16(3, 7, 132, 7);
let r = _mm_hadd_pi16(a, b);
assert_eq!(r, expected);
assert_eq_m64(r, expected);
}
#[simd_test = "ssse3"]
@ -274,7 +274,7 @@ mod tests {
let b = _mm_setr_pi32(4, 128);
let expected = _mm_setr_pi32(3, 132);
let r = _mm_hadd_pi32(a, b);
assert_eq!(r, expected);
assert_eq_m64(r, expected);
}
#[simd_test = "ssse3"]
@ -283,7 +283,7 @@ mod tests {
let b = _mm_setr_pi16(32767, 1, -32768, -1);
let expected = _mm_setr_pi16(3, 7, 32767, -32768);
let r = _mm_hadds_pi16(a, b);
assert_eq!(r, expected);
assert_eq_m64(r, expected);
}
#[simd_test = "ssse3"]
@ -292,7 +292,7 @@ mod tests {
let b = _mm_setr_pi16(4, 128, 4, 3);
let expected = _mm_setr_pi16(-1, -1, -124, 1);
let r = _mm_hsub_pi16(a, b);
assert_eq!(r, expected);
assert_eq_m64(r, expected);
}
#[simd_test = "ssse3"]
@ -301,7 +301,7 @@ mod tests {
let b = _mm_setr_pi32(4, 128);
let expected = _mm_setr_pi32(-1, -124);
let r = _mm_hsub_pi32(a, b);
assert_eq!(r, expected);
assert_eq_m64(r, expected);
}
#[simd_test = "ssse3"]
@ -310,7 +310,7 @@ mod tests {
let b = _mm_setr_pi16(4, 128, 4, 3);
let expected = _mm_setr_pi16(-1, -1, -124, 1);
let r = _mm_hsubs_pi16(a, b);
assert_eq!(r, expected);
assert_eq_m64(r, expected);
}
#[simd_test = "ssse3"]
@ -319,7 +319,7 @@ mod tests {
let b = _mm_setr_pi8(4, 63, 4, 3, 24, 12, 6, 19);
let expected = _mm_setr_pi16(130, 24, 192, 194);
let r = _mm_maddubs_pi16(a, b);
assert_eq!(r, expected);
assert_eq_m64(r, expected);
}
#[simd_test = "ssse3"]
@ -328,7 +328,7 @@ mod tests {
let b = _mm_setr_pi16(4, 32767, -1, -32768);
let expected = _mm_setr_pi16(0, 2, 0, -4);
let r = _mm_mulhrs_pi16(a, b);
assert_eq!(r, expected);
assert_eq_m64(r, expected);
}
#[simd_test = "ssse3"]
@ -337,7 +337,7 @@ mod tests {
let b = _mm_setr_pi8(4, 64, 0, 3, 1, -1, -2, 1);
let expected = _mm_setr_pi8(1, 2, 0, 4, -5, 6, -7, 8);
let r = _mm_sign_pi8(a, b);
assert_eq!(r, expected);
assert_eq_m64(r, expected);
}
#[simd_test = "ssse3"]
@ -346,7 +346,7 @@ mod tests {
let b = _mm_setr_pi16(1, -1, 1, 0);
let expected = _mm_setr_pi16(-1, -2, 3, 0);
let r = _mm_sign_pi16(a, b);
assert_eq!(r, expected);
assert_eq_m64(r, expected);
}
#[simd_test = "ssse3"]
@ -355,6 +355,6 @@ mod tests {
let b = _mm_setr_pi32(1, 0);
let expected = _mm_setr_pi32(-1, 0);
let r = _mm_sign_pi32(a, b);
assert_eq!(r, expected);
assert_eq_m64(r, expected);
}
}

View file

@ -67,7 +67,6 @@ types! {
/// # if cfg_feature_enabled!("mmx") { unsafe { foo() } }
/// # }
/// ```
#[derive(PartialEq)]
pub struct __m64(i64);
/// 128-bit wide integer vector type, x86-specific
@ -111,7 +110,6 @@ types! {
/// # if cfg_feature_enabled!("sse2") { unsafe { foo() } }
/// # }
/// ```
#[derive(PartialEq)]
pub struct __m128i(i64, i64);
/// 128-bit wide set of four `f32` types, x86-specific
@ -224,7 +222,6 @@ types! {
/// # if cfg_feature_enabled!("avx") { unsafe { foo() } }
/// # }
/// ```
#[derive(PartialEq)]
pub struct __m256i(i64, i64, i64, i64);
/// 256-bit wide set of eight `f32` types, x86-specific

View file

@ -2,6 +2,18 @@
use x86::*;
#[target_feature(enable = "mmx")]
pub unsafe fn assert_eq_m64(a: __m64, b: __m64) {
union A { a: __m64, b: u64 }
assert_eq!(A { a }.b, A { a: b }.b)
}
#[target_feature(enable = "sse2")]
pub unsafe fn assert_eq_m128i(a: __m128i, b: __m128i) {
union A { a: __m128i, b: [u64; 2] }
assert_eq!(A { a }.b, A { a: b }.b)
}
#[target_feature(enable = "sse2")]
pub unsafe fn assert_eq_m128d(a: __m128d, b: __m128d) {
if _mm_movemask_pd(_mm_cmpeq_pd(a, b)) != 0b11 {
@ -36,6 +48,12 @@ pub unsafe fn _mm_setr_epi64x(a: i64, b: i64) -> __m128i {
_mm_set_epi64x(b, a)
}
#[target_feature(enable = "avx")]
pub unsafe fn assert_eq_m256i(a: __m256i, b: __m256i) {
union A { a: __m256i, b: [u64; 4] }
assert_eq!(A { a }.b, A { a: b }.b)
}
#[target_feature(enable = "avx")]
pub unsafe fn assert_eq_m256d(a: __m256d, b: __m256d) {
let cmp = _mm256_cmp_pd(a, b, _CMP_EQ_OQ);

View file

@ -160,7 +160,7 @@ mod tests {
#[simd_test = "sse2"]
unsafe fn test_mm_cvtsi64_si128() {
let r = _mm_cvtsi64_si128(5);
assert_eq!(r, _mm_setr_epi64x(5, 0));
assert_eq_m128i(r, _mm_setr_epi64x(5, 0));
}
#[simd_test = "sse2"]

View file

@ -46,8 +46,8 @@ mod tests {
let a = _mm_set1_epi64x(0);
let e = _mm_setr_epi64x(0, 32);
let r = _mm_insert_epi64(a, 32, 1);
assert_eq!(r, e);
assert_eq_m128i(r, e);
let r = _mm_insert_epi64(a, 32, 3);
assert_eq!(r, e);
assert_eq_m128i(r, e);
}
}