Add bindings for _mm_blendv_epi8
Just wanted to test this out!
This commit is contained in:
parent
91a4849bba
commit
1450e641a5
2 changed files with 41 additions and 1 deletions
|
|
@ -1,6 +1,7 @@
|
|||
pub use self::sse::*;
|
||||
pub use self::sse2::*;
|
||||
pub use self::ssse3::*;
|
||||
pub use self::sse41::*;
|
||||
pub use self::sse42::*;
|
||||
pub use self::avx::*;
|
||||
pub use self::avx2::*;
|
||||
|
|
@ -13,6 +14,7 @@ pub type __m256i = ::v256::i8x32;
|
|||
mod sse;
|
||||
mod sse2;
|
||||
mod ssse3;
|
||||
mod sse41;
|
||||
mod sse42;
|
||||
mod avx;
|
||||
mod avx2;
|
||||
mod avx2;
|
||||
|
|
|
|||
38
library/stdarch/src/x86/sse41.rs
Normal file
38
library/stdarch/src/x86/sse41.rs
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
// use v128::*;
|
||||
use x86::__m128i;
|
||||
|
||||
#[inline(always)]
|
||||
#[target_feature = "+sse4.1"]
|
||||
pub fn _mm_blendv_epi8(
|
||||
a: __m128i,
|
||||
b: __m128i,
|
||||
mask: __m128i,
|
||||
) -> __m128i {
|
||||
unsafe { pblendvb(a, b, mask) }
|
||||
}
|
||||
|
||||
#[allow(improper_ctypes)]
|
||||
extern {
|
||||
#[link_name = "llvm.x86.sse41.pblendvb"]
|
||||
fn pblendvb(a: __m128i, b: __m128i, mask: __m128i) -> __m128i;
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use v128::*;
|
||||
use x86::sse41;
|
||||
|
||||
#[test]
|
||||
#[target_feature = "+sse4.2"]
|
||||
fn _mm_blendv_epi8() {
|
||||
let a = i8x16::new(
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
|
||||
let b = i8x16::new(
|
||||
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31);
|
||||
let mask = i8x16::new(
|
||||
0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1);
|
||||
let e = i8x16::new(
|
||||
0, 17, 2, 19, 4, 21, 6, 23, 8, 25, 10, 27, 12, 29, 14, 31);
|
||||
assert_eq!(sse41::_mm_blendv_epi8(a, b, mask), e);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue