Merge commit 'e8dca3e87d
' into sync_from_cg_gcc
This commit is contained in:
commit
3fac982e07
41 changed files with 7933 additions and 592 deletions
|
@ -93,9 +93,10 @@ fn main() {
|
|||
|
||||
println!("{:?}", std::intrinsics::caller_location());
|
||||
|
||||
/*unsafe {
|
||||
#[cfg(feature="master")]
|
||||
unsafe {
|
||||
test_simd();
|
||||
}*/
|
||||
}
|
||||
|
||||
Box::pin(move |mut _task_context| {
|
||||
yield ();
|
||||
|
@ -104,7 +105,8 @@ fn main() {
|
|||
println!("End");
|
||||
}
|
||||
|
||||
/*#[target_feature(enable = "sse2")]
|
||||
#[cfg(feature="master")]
|
||||
#[target_feature(enable = "sse2")]
|
||||
unsafe fn test_simd() {
|
||||
let x = _mm_setzero_si128();
|
||||
let y = _mm_set1_epi16(7);
|
||||
|
@ -112,7 +114,7 @@ unsafe fn test_simd() {
|
|||
let cmp_eq = _mm_cmpeq_epi8(y, y);
|
||||
let cmp_lt = _mm_cmplt_epi8(y, y);
|
||||
|
||||
/*assert_eq!(std::mem::transmute::<_, [u16; 8]>(or), [7, 7, 7, 7, 7, 7, 7, 7]);
|
||||
assert_eq!(std::mem::transmute::<_, [u16; 8]>(or), [7, 7, 7, 7, 7, 7, 7, 7]);
|
||||
assert_eq!(std::mem::transmute::<_, [u16; 8]>(cmp_eq), [0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff]);
|
||||
assert_eq!(std::mem::transmute::<_, [u16; 8]>(cmp_lt), [0, 0, 0, 0, 0, 0, 0, 0]);
|
||||
|
||||
|
@ -124,14 +126,15 @@ unsafe fn test_simd() {
|
|||
test_mm_cvtepi8_epi16();
|
||||
test_mm_cvtsi128_si64();
|
||||
|
||||
// FIXME(#666) implement `#[rustc_arg_required_const(..)]` support
|
||||
//test_mm_extract_epi8();
|
||||
test_mm_extract_epi8();
|
||||
test_mm_insert_epi16();
|
||||
|
||||
let mask1 = _mm_movemask_epi8(dbg!(_mm_setr_epi8(255u8 as i8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)));
|
||||
assert_eq!(mask1, 1);*/
|
||||
}*/
|
||||
assert_eq!(mask1, 1);
|
||||
}
|
||||
|
||||
/*#[target_feature(enable = "sse2")]
|
||||
#[cfg(feature="master")]
|
||||
#[target_feature(enable = "sse2")]
|
||||
unsafe fn test_mm_slli_si128() {
|
||||
#[rustfmt::skip]
|
||||
let a = _mm_setr_epi8(
|
||||
|
@ -155,22 +158,10 @@ unsafe fn test_mm_slli_si128() {
|
|||
);
|
||||
let r = _mm_slli_si128(a, 16);
|
||||
assert_eq_m128i(r, _mm_set1_epi8(0));
|
||||
|
||||
#[rustfmt::skip]
|
||||
let a = _mm_setr_epi8(
|
||||
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
|
||||
);
|
||||
let r = _mm_slli_si128(a, -1);
|
||||
assert_eq_m128i(_mm_set1_epi8(0), r);
|
||||
|
||||
#[rustfmt::skip]
|
||||
let a = _mm_setr_epi8(
|
||||
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
|
||||
);
|
||||
let r = _mm_slli_si128(a, -0x80000000);
|
||||
assert_eq_m128i(r, _mm_set1_epi8(0));
|
||||
}
|
||||
|
||||
|
||||
#[cfg(feature="master")]
|
||||
#[target_feature(enable = "sse2")]
|
||||
unsafe fn test_mm_movemask_epi8() {
|
||||
#[rustfmt::skip]
|
||||
|
@ -184,6 +175,7 @@ unsafe fn test_mm_movemask_epi8() {
|
|||
assert_eq!(r, 0b10100100_00100101);
|
||||
}
|
||||
|
||||
#[cfg(feature="master")]
|
||||
#[target_feature(enable = "avx2")]
|
||||
unsafe fn test_mm256_movemask_epi8() {
|
||||
let a = _mm256_set1_epi8(-1);
|
||||
|
@ -192,6 +184,7 @@ unsafe fn test_mm256_movemask_epi8() {
|
|||
assert_eq!(r, e);
|
||||
}
|
||||
|
||||
#[cfg(feature="master")]
|
||||
#[target_feature(enable = "sse2")]
|
||||
unsafe fn test_mm_add_epi8() {
|
||||
let a = _mm_setr_epi8(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
|
||||
|
@ -207,6 +200,7 @@ unsafe fn test_mm_add_epi8() {
|
|||
assert_eq_m128i(r, e);
|
||||
}
|
||||
|
||||
#[cfg(feature="master")]
|
||||
#[target_feature(enable = "sse2")]
|
||||
unsafe fn test_mm_add_pd() {
|
||||
let a = _mm_setr_pd(1.0, 2.0);
|
||||
|
@ -215,12 +209,14 @@ unsafe fn test_mm_add_pd() {
|
|||
assert_eq_m128d(r, _mm_setr_pd(6.0, 12.0));
|
||||
}
|
||||
|
||||
#[cfg(feature="master")]
|
||||
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]>(y));
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(feature="master")]
|
||||
#[target_feature(enable = "sse2")]
|
||||
pub unsafe fn assert_eq_m128d(a: __m128d, b: __m128d) {
|
||||
if _mm_movemask_pd(_mm_cmpeq_pd(a, b)) != 0b11 {
|
||||
|
@ -228,12 +224,14 @@ pub unsafe fn assert_eq_m128d(a: __m128d, b: __m128d) {
|
|||
}
|
||||
}
|
||||
|
||||
#[cfg(feature="master")]
|
||||
#[target_feature(enable = "sse2")]
|
||||
unsafe fn test_mm_cvtsi128_si64() {
|
||||
let r = _mm_cvtsi128_si64(std::mem::transmute::<[i64; 2], _>([5, 0]));
|
||||
assert_eq!(r, 5);
|
||||
}
|
||||
|
||||
#[cfg(feature="master")]
|
||||
#[target_feature(enable = "sse4.1")]
|
||||
unsafe fn test_mm_cvtepi8_epi16() {
|
||||
let a = _mm_set1_epi8(10);
|
||||
|
@ -246,6 +244,7 @@ unsafe fn test_mm_cvtepi8_epi16() {
|
|||
assert_eq_m128i(r, e);
|
||||
}
|
||||
|
||||
#[cfg(feature="master")]
|
||||
#[target_feature(enable = "sse4.1")]
|
||||
unsafe fn test_mm_extract_epi8() {
|
||||
#[rustfmt::skip]
|
||||
|
@ -254,10 +253,19 @@ unsafe fn test_mm_extract_epi8() {
|
|||
8, 9, 10, 11, 12, 13, 14, 15
|
||||
);
|
||||
let r1 = _mm_extract_epi8(a, 0);
|
||||
let r2 = _mm_extract_epi8(a, 19);
|
||||
let r2 = _mm_extract_epi8(a, 3);
|
||||
assert_eq!(r1, 0xFF);
|
||||
assert_eq!(r2, 3);
|
||||
}*/
|
||||
}
|
||||
|
||||
#[cfg(all(feature="master", target_arch = "x86_64"))]
|
||||
#[target_feature(enable = "sse2")]
|
||||
unsafe fn test_mm_insert_epi16() {
|
||||
let a = _mm_setr_epi16(0, 1, 2, 3, 4, 5, 6, 7);
|
||||
let r = _mm_insert_epi16(a, 9, 0);
|
||||
let e = _mm_setr_epi16(9, 1, 2, 3, 4, 5, 6, 7);
|
||||
assert_eq_m128i(r, e);
|
||||
}
|
||||
|
||||
#[derive(PartialEq)]
|
||||
enum LoopState {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue