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:
parent
4b66abaede
commit
30694efc68
18 changed files with 559 additions and 546 deletions
|
|
@ -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
|
|
@ -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
|
|
@ -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"]
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"]
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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))]
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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"]
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue