diff options
| author | bjorn3 <bjorn3@users.noreply.github.com> | 2019-07-29 12:50:20 +0200 |
|---|---|---|
| committer | bjorn3 <bjorn3@users.noreply.github.com> | 2019-07-29 12:50:20 +0200 |
| commit | 63646b1956375836fac8610d04da5d2e8ce04559 (patch) | |
| tree | 9962612a556edac13a4c55f2ee70bde7ecabbf3e /example/std_example.rs | |
| parent | 48a6b581b557f1120e3cb59f2ce51b1b0384275a (diff) | |
| download | rust-63646b1956375836fac8610d04da5d2e8ce04559.tar.gz rust-63646b1956375836fac8610d04da5d2e8ce04559.zip | |
Implement llvm.x86.avx2.pmovmskb llvm intrinsic
Diffstat (limited to 'example/std_example.rs')
| -rw-r--r-- | example/std_example.rs | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/example/std_example.rs b/example/std_example.rs index 9da701d4469..e3b3edd86af 100644 --- a/example/std_example.rs +++ b/example/std_example.rs @@ -65,6 +65,8 @@ unsafe fn test_simd() { assert_eq!(std::mem::transmute::<_, [u16; 8]>(cmp_lt), [0, 0, 0, 0, 0, 0, 0, 0]); test_mm_slli_si128(); + test_mm_movemask_epi8(); + test_mm256_movemask_epi8(); } #[target_feature(enable = "sse2")] @@ -109,6 +111,31 @@ unsafe fn test_mm_slli_si128() { assert_eq_m128i(r, _mm_set1_epi8(0)); } +#[target_feature(enable = "sse2")] +unsafe fn test_mm_movemask_epi8() { + use std::arch::x86_64::*; + + #[rustfmt::skip] + let a = _mm_setr_epi8( + 0b1000_0000u8 as i8, 0b0, 0b1000_0000u8 as i8, 0b01, + 0b0101, 0b1111_0000u8 as i8, 0, 0, + 0, 0, 0b1111_0000u8 as i8, 0b0101, + 0b01, 0b1000_0000u8 as i8, 0b0, 0b1000_0000u8 as i8, + ); + let r = _mm_movemask_epi8(a); + assert_eq!(r, 0b10100100_00100101); +} + +#[target_feature(enable = "avx2")] +unsafe fn test_mm256_movemask_epi8() { + use std::arch::x86_64::*; + + let a = _mm256_set1_epi8(-1); + let r = _mm256_movemask_epi8(a); + let e = -1; + assert_eq!(r, e); +} + fn assert_eq_m128i(x: std::arch::x86_64::__m128i, y: std::arch::x86_64::__m128i) { unsafe { assert_eq!(std::mem::transmute::<_, [u8; 16]>(x), std::mem::transmute::<_, [u8; 16]>(x)); |
