diff --git a/library/stdarch/crates/core_arch/src/x86/avx512f.rs b/library/stdarch/crates/core_arch/src/x86/avx512f.rs index 5b64367d1f29..804ffc30d3a3 100644 --- a/library/stdarch/crates/core_arch/src/x86/avx512f.rs +++ b/library/stdarch/crates/core_arch/src/x86/avx512f.rs @@ -207,12 +207,4 @@ mod tests { ); assert_eq_m512i(r, e); } - - #[simd_test(enable = "avx512f")] - unsafe fn test_mm512_cmplt_epu64_mask() { - let a = _mm512_set_epi64(0, 1, -1, u64::MAX as i64, i64::MAX, i64::MIN, 100, -100); - let b = _mm512_set1_epi64(-1); - let m = _mm512_cmplt_epu64_mask(a, b); - assert_eq!(m, 0b11001111); - } } diff --git a/library/stdarch/crates/core_arch/src/x86_64/avx512f.rs b/library/stdarch/crates/core_arch/src/x86_64/avx512f.rs index 8c40235958e5..c4544a5acf6b 100644 --- a/library/stdarch/crates/core_arch/src/x86_64/avx512f.rs +++ b/library/stdarch/crates/core_arch/src/x86_64/avx512f.rs @@ -18,18 +18,27 @@ pub unsafe fn _mm512_set_epi64( e1: i64, e0: i64, ) -> __m512i { - let r = i64x8(e0, e1, e2, e3, e4, e5, e6, e7); - transmute(r) + _mm512_setr_epi64(e7, e6, e5, e4, e3, e2, e1, e0); } -/// Compare packed unsigned 64-bit integers in a and b for less-than, and store the results in a mask vector. +/// Sets packed 64-bit integers in `dst` with the supplied values in +/// reverse order. /// -/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#expand=727,1063,4909,1062,1062&text=_mm512_cmplt_epu64) +/// [Intel's documentation]( https://software.intel.com/sites/landingpage/IntrinsicsGuide/#expand=727,1063,4909,1062,1062,4909&text=_mm512_set_epi64) #[inline] #[target_feature(enable = "avx512f")] -#[cfg_attr(test, assert_instr(vpcmpuq))] -pub unsafe fn _mm512_cmplt_epu64_mask(a: __m512i, b: __m512i) -> __mmask8 { - simd_bitmask::<__m512i, _>(simd_lt(a.as_u64x8(), b.as_u64x8())) +pub unsafe fn _mm512_setr_epi64( + e7: i64, + e6: i64, + e5: i64, + e4: i64, + e3: i64, + e2: i64, + e1: i64, + e0: i64, +) -> __m512i { + let r = i64x8(e0, e1, e2, e3, e4, e5, e6, e7); + transmute(r) } #[cfg(test)] @@ -47,4 +56,16 @@ mod tests { let m = _mm512_cmplt_epu64_mask(a, b); assert_eq!(m, 0b11001111); } + + #[simd_test(enable = "avx512f")] + unsafe fn test_mm512_set_epi64() { + let r = _mm512_setr_epi64(0, 1, 2, 3, 4, 5, 6, 7); + assert_eq_m512i(r, _mm512_set_epi64(7, 6, 5, 4, 3, 2, 1, 0)) + } + + #[simd_test(enable = "avx512f")] + unsafe fn test_mm512_setr_epi64() { + let r = _mm512_set_epi64(0, 1, 2, 3, 4, 5, 6, 7); + assert_eq_m512i(r, _mm512_setr_epi64(7, 6, 5, 4, 3, 2, 1, 0)) + } }