Skip to content

Commit

Permalink
mark AVX512 & AVXNECONVERT intrinsics as safe
Browse files Browse the repository at this point in the history
Mark all AVX512 & AVXNECONVERT SIMD-computing intrinsics as safe, except for those involving memory operations.
  • Loading branch information
usamoi authored and Amanieu committed Feb 24, 2025
1 parent fb03902 commit 0e35041
Show file tree
Hide file tree
Showing 16 changed files with 21,802 additions and 18,456 deletions.
311 changes: 174 additions & 137 deletions crates/core_arch/src/x86/avx512bf16.rs

Large diffs are not rendered by default.

216 changes: 120 additions & 96 deletions crates/core_arch/src/x86/avx512bitalg.rs

Large diffs are not rendered by default.

7,321 changes: 3,957 additions & 3,364 deletions crates/core_arch/src/x86/avx512bw.rs

Large diffs are not rendered by default.

252 changes: 150 additions & 102 deletions crates/core_arch/src/x86/avx512cd.rs

Large diffs are not rendered by default.

2,742 changes: 1,530 additions & 1,212 deletions crates/core_arch/src/x86/avx512dq.rs

Large diffs are not rendered by default.

22,206 changes: 12,098 additions & 10,108 deletions crates/core_arch/src/x86/avx512f.rs

Large diffs are not rendered by default.

4,886 changes: 2,578 additions & 2,308 deletions crates/core_arch/src/x86/avx512fp16.rs

Large diffs are not rendered by default.

128 changes: 44 additions & 84 deletions crates/core_arch/src/x86/avx512ifma.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ use stdarch_test::assert_instr;
#[target_feature(enable = "avx512ifma")]
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
#[cfg_attr(test, assert_instr(vpmadd52huq))]
pub unsafe fn _mm512_madd52hi_epu64(a: __m512i, b: __m512i, c: __m512i) -> __m512i {
vpmadd52huq_512(a, b, c)
pub fn _mm512_madd52hi_epu64(a: __m512i, b: __m512i, c: __m512i) -> __m512i {
unsafe { vpmadd52huq_512(a, b, c) }
}

/// Multiply packed unsigned 52-bit integers in each 64-bit element of
Expand All @@ -31,13 +31,8 @@ pub unsafe fn _mm512_madd52hi_epu64(a: __m512i, b: __m512i, c: __m512i) -> __m51
#[target_feature(enable = "avx512ifma")]
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
#[cfg_attr(test, assert_instr(vpmadd52huq))]
pub unsafe fn _mm512_mask_madd52hi_epu64(
a: __m512i,
k: __mmask8,
b: __m512i,
c: __m512i,
) -> __m512i {
simd_select_bitmask(k, vpmadd52huq_512(a, b, c), a)
pub fn _mm512_mask_madd52hi_epu64(a: __m512i, k: __mmask8, b: __m512i, c: __m512i) -> __m512i {
unsafe { simd_select_bitmask(k, vpmadd52huq_512(a, b, c), a) }
}

/// Multiply packed unsigned 52-bit integers in each 64-bit element of
Expand All @@ -52,13 +47,8 @@ pub unsafe fn _mm512_mask_madd52hi_epu64(
#[target_feature(enable = "avx512ifma")]
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
#[cfg_attr(test, assert_instr(vpmadd52huq))]
pub unsafe fn _mm512_maskz_madd52hi_epu64(
k: __mmask8,
a: __m512i,
b: __m512i,
c: __m512i,
) -> __m512i {
simd_select_bitmask(k, vpmadd52huq_512(a, b, c), _mm512_setzero_si512())
pub fn _mm512_maskz_madd52hi_epu64(k: __mmask8, a: __m512i, b: __m512i, c: __m512i) -> __m512i {
unsafe { simd_select_bitmask(k, vpmadd52huq_512(a, b, c), _mm512_setzero_si512()) }
}

/// Multiply packed unsigned 52-bit integers in each 64-bit element of
Expand All @@ -72,8 +62,8 @@ pub unsafe fn _mm512_maskz_madd52hi_epu64(
#[target_feature(enable = "avx512ifma")]
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
#[cfg_attr(test, assert_instr(vpmadd52luq))]
pub unsafe fn _mm512_madd52lo_epu64(a: __m512i, b: __m512i, c: __m512i) -> __m512i {
vpmadd52luq_512(a, b, c)
pub fn _mm512_madd52lo_epu64(a: __m512i, b: __m512i, c: __m512i) -> __m512i {
unsafe { vpmadd52luq_512(a, b, c) }
}

/// Multiply packed unsigned 52-bit integers in each 64-bit element of
Expand All @@ -88,13 +78,8 @@ pub unsafe fn _mm512_madd52lo_epu64(a: __m512i, b: __m512i, c: __m512i) -> __m51
#[target_feature(enable = "avx512ifma")]
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
#[cfg_attr(test, assert_instr(vpmadd52luq))]
pub unsafe fn _mm512_mask_madd52lo_epu64(
a: __m512i,
k: __mmask8,
b: __m512i,
c: __m512i,
) -> __m512i {
simd_select_bitmask(k, vpmadd52luq_512(a, b, c), a)
pub fn _mm512_mask_madd52lo_epu64(a: __m512i, k: __mmask8, b: __m512i, c: __m512i) -> __m512i {
unsafe { simd_select_bitmask(k, vpmadd52luq_512(a, b, c), a) }
}

/// Multiply packed unsigned 52-bit integers in each 64-bit element of
Expand All @@ -109,13 +94,8 @@ pub unsafe fn _mm512_mask_madd52lo_epu64(
#[target_feature(enable = "avx512ifma")]
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
#[cfg_attr(test, assert_instr(vpmadd52luq))]
pub unsafe fn _mm512_maskz_madd52lo_epu64(
k: __mmask8,
a: __m512i,
b: __m512i,
c: __m512i,
) -> __m512i {
simd_select_bitmask(k, vpmadd52luq_512(a, b, c), _mm512_setzero_si512())
pub fn _mm512_maskz_madd52lo_epu64(k: __mmask8, a: __m512i, b: __m512i, c: __m512i) -> __m512i {
unsafe { simd_select_bitmask(k, vpmadd52luq_512(a, b, c), _mm512_setzero_si512()) }
}

/// Multiply packed unsigned 52-bit integers in each 64-bit element of
Expand All @@ -132,8 +112,8 @@ pub unsafe fn _mm512_maskz_madd52lo_epu64(
all(test, any(target_os = "linux", target_env = "msvc")),
assert_instr(vpmadd52huq)
)]
pub unsafe fn _mm256_madd52hi_avx_epu64(a: __m256i, b: __m256i, c: __m256i) -> __m256i {
vpmadd52huq_256(a, b, c)
pub fn _mm256_madd52hi_avx_epu64(a: __m256i, b: __m256i, c: __m256i) -> __m256i {
unsafe { vpmadd52huq_256(a, b, c) }
}

/// Multiply packed unsigned 52-bit integers in each 64-bit element of
Expand All @@ -147,8 +127,8 @@ pub unsafe fn _mm256_madd52hi_avx_epu64(a: __m256i, b: __m256i, c: __m256i) -> _
#[target_feature(enable = "avx512ifma,avx512vl")]
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
#[cfg_attr(test, assert_instr(vpmadd52huq))]
pub unsafe fn _mm256_madd52hi_epu64(a: __m256i, b: __m256i, c: __m256i) -> __m256i {
vpmadd52huq_256(a, b, c)
pub fn _mm256_madd52hi_epu64(a: __m256i, b: __m256i, c: __m256i) -> __m256i {
unsafe { vpmadd52huq_256(a, b, c) }
}

/// Multiply packed unsigned 52-bit integers in each 64-bit element of
Expand All @@ -163,13 +143,8 @@ pub unsafe fn _mm256_madd52hi_epu64(a: __m256i, b: __m256i, c: __m256i) -> __m25
#[target_feature(enable = "avx512ifma,avx512vl")]
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
#[cfg_attr(test, assert_instr(vpmadd52huq))]
pub unsafe fn _mm256_mask_madd52hi_epu64(
a: __m256i,
k: __mmask8,
b: __m256i,
c: __m256i,
) -> __m256i {
simd_select_bitmask(k, vpmadd52huq_256(a, b, c), a)
pub fn _mm256_mask_madd52hi_epu64(a: __m256i, k: __mmask8, b: __m256i, c: __m256i) -> __m256i {
unsafe { simd_select_bitmask(k, vpmadd52huq_256(a, b, c), a) }
}

/// Multiply packed unsigned 52-bit integers in each 64-bit element of
Expand All @@ -184,13 +159,8 @@ pub unsafe fn _mm256_mask_madd52hi_epu64(
#[target_feature(enable = "avx512ifma,avx512vl")]
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
#[cfg_attr(test, assert_instr(vpmadd52huq))]
pub unsafe fn _mm256_maskz_madd52hi_epu64(
k: __mmask8,
a: __m256i,
b: __m256i,
c: __m256i,
) -> __m256i {
simd_select_bitmask(k, vpmadd52huq_256(a, b, c), _mm256_setzero_si256())
pub fn _mm256_maskz_madd52hi_epu64(k: __mmask8, a: __m256i, b: __m256i, c: __m256i) -> __m256i {
unsafe { simd_select_bitmask(k, vpmadd52huq_256(a, b, c), _mm256_setzero_si256()) }
}

/// Multiply packed unsigned 52-bit integers in each 64-bit element of
Expand All @@ -207,8 +177,8 @@ pub unsafe fn _mm256_maskz_madd52hi_epu64(
all(test, any(target_os = "linux", target_env = "msvc")),
assert_instr(vpmadd52luq)
)]
pub unsafe fn _mm256_madd52lo_avx_epu64(a: __m256i, b: __m256i, c: __m256i) -> __m256i {
vpmadd52luq_256(a, b, c)
pub fn _mm256_madd52lo_avx_epu64(a: __m256i, b: __m256i, c: __m256i) -> __m256i {
unsafe { vpmadd52luq_256(a, b, c) }
}

/// Multiply packed unsigned 52-bit integers in each 64-bit element of
Expand All @@ -222,8 +192,8 @@ pub unsafe fn _mm256_madd52lo_avx_epu64(a: __m256i, b: __m256i, c: __m256i) -> _
#[target_feature(enable = "avx512ifma,avx512vl")]
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
#[cfg_attr(test, assert_instr(vpmadd52luq))]
pub unsafe fn _mm256_madd52lo_epu64(a: __m256i, b: __m256i, c: __m256i) -> __m256i {
vpmadd52luq_256(a, b, c)
pub fn _mm256_madd52lo_epu64(a: __m256i, b: __m256i, c: __m256i) -> __m256i {
unsafe { vpmadd52luq_256(a, b, c) }
}

/// Multiply packed unsigned 52-bit integers in each 64-bit element of
Expand All @@ -238,13 +208,8 @@ pub unsafe fn _mm256_madd52lo_epu64(a: __m256i, b: __m256i, c: __m256i) -> __m25
#[target_feature(enable = "avx512ifma,avx512vl")]
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
#[cfg_attr(test, assert_instr(vpmadd52luq))]
pub unsafe fn _mm256_mask_madd52lo_epu64(
a: __m256i,
k: __mmask8,
b: __m256i,
c: __m256i,
) -> __m256i {
simd_select_bitmask(k, vpmadd52luq_256(a, b, c), a)
pub fn _mm256_mask_madd52lo_epu64(a: __m256i, k: __mmask8, b: __m256i, c: __m256i) -> __m256i {
unsafe { simd_select_bitmask(k, vpmadd52luq_256(a, b, c), a) }
}

/// Multiply packed unsigned 52-bit integers in each 64-bit element of
Expand All @@ -259,13 +224,8 @@ pub unsafe fn _mm256_mask_madd52lo_epu64(
#[target_feature(enable = "avx512ifma,avx512vl")]
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
#[cfg_attr(test, assert_instr(vpmadd52luq))]
pub unsafe fn _mm256_maskz_madd52lo_epu64(
k: __mmask8,
a: __m256i,
b: __m256i,
c: __m256i,
) -> __m256i {
simd_select_bitmask(k, vpmadd52luq_256(a, b, c), _mm256_setzero_si256())
pub fn _mm256_maskz_madd52lo_epu64(k: __mmask8, a: __m256i, b: __m256i, c: __m256i) -> __m256i {
unsafe { simd_select_bitmask(k, vpmadd52luq_256(a, b, c), _mm256_setzero_si256()) }
}

/// Multiply packed unsigned 52-bit integers in each 64-bit element of
Expand All @@ -282,8 +242,8 @@ pub unsafe fn _mm256_maskz_madd52lo_epu64(
all(test, any(target_os = "linux", target_env = "msvc")),
assert_instr(vpmadd52huq)
)]
pub unsafe fn _mm_madd52hi_avx_epu64(a: __m128i, b: __m128i, c: __m128i) -> __m128i {
vpmadd52huq_128(a, b, c)
pub fn _mm_madd52hi_avx_epu64(a: __m128i, b: __m128i, c: __m128i) -> __m128i {
unsafe { vpmadd52huq_128(a, b, c) }
}

/// Multiply packed unsigned 52-bit integers in each 64-bit element of
Expand All @@ -297,8 +257,8 @@ pub unsafe fn _mm_madd52hi_avx_epu64(a: __m128i, b: __m128i, c: __m128i) -> __m1
#[target_feature(enable = "avx512ifma,avx512vl")]
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
#[cfg_attr(test, assert_instr(vpmadd52huq))]
pub unsafe fn _mm_madd52hi_epu64(a: __m128i, b: __m128i, c: __m128i) -> __m128i {
vpmadd52huq_128(a, b, c)
pub fn _mm_madd52hi_epu64(a: __m128i, b: __m128i, c: __m128i) -> __m128i {
unsafe { vpmadd52huq_128(a, b, c) }
}

/// Multiply packed unsigned 52-bit integers in each 64-bit element of
Expand All @@ -313,8 +273,8 @@ pub unsafe fn _mm_madd52hi_epu64(a: __m128i, b: __m128i, c: __m128i) -> __m128i
#[target_feature(enable = "avx512ifma,avx512vl")]
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
#[cfg_attr(test, assert_instr(vpmadd52huq))]
pub unsafe fn _mm_mask_madd52hi_epu64(a: __m128i, k: __mmask8, b: __m128i, c: __m128i) -> __m128i {
simd_select_bitmask(k, vpmadd52huq_128(a, b, c), a)
pub fn _mm_mask_madd52hi_epu64(a: __m128i, k: __mmask8, b: __m128i, c: __m128i) -> __m128i {
unsafe { simd_select_bitmask(k, vpmadd52huq_128(a, b, c), a) }
}

/// Multiply packed unsigned 52-bit integers in each 64-bit element of
Expand All @@ -329,8 +289,8 @@ pub unsafe fn _mm_mask_madd52hi_epu64(a: __m128i, k: __mmask8, b: __m128i, c: __
#[target_feature(enable = "avx512ifma,avx512vl")]
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
#[cfg_attr(test, assert_instr(vpmadd52huq))]
pub unsafe fn _mm_maskz_madd52hi_epu64(k: __mmask8, a: __m128i, b: __m128i, c: __m128i) -> __m128i {
simd_select_bitmask(k, vpmadd52huq_128(a, b, c), _mm_setzero_si128())
pub fn _mm_maskz_madd52hi_epu64(k: __mmask8, a: __m128i, b: __m128i, c: __m128i) -> __m128i {
unsafe { simd_select_bitmask(k, vpmadd52huq_128(a, b, c), _mm_setzero_si128()) }
}

/// Multiply packed unsigned 52-bit integers in each 64-bit element of
Expand All @@ -347,8 +307,8 @@ pub unsafe fn _mm_maskz_madd52hi_epu64(k: __mmask8, a: __m128i, b: __m128i, c: _
all(test, any(target_os = "linux", target_env = "msvc")),
assert_instr(vpmadd52luq)
)]
pub unsafe fn _mm_madd52lo_avx_epu64(a: __m128i, b: __m128i, c: __m128i) -> __m128i {
vpmadd52luq_128(a, b, c)
pub fn _mm_madd52lo_avx_epu64(a: __m128i, b: __m128i, c: __m128i) -> __m128i {
unsafe { vpmadd52luq_128(a, b, c) }
}

/// Multiply packed unsigned 52-bit integers in each 64-bit element of
Expand All @@ -362,8 +322,8 @@ pub unsafe fn _mm_madd52lo_avx_epu64(a: __m128i, b: __m128i, c: __m128i) -> __m1
#[target_feature(enable = "avx512ifma,avx512vl")]
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
#[cfg_attr(test, assert_instr(vpmadd52luq))]
pub unsafe fn _mm_madd52lo_epu64(a: __m128i, b: __m128i, c: __m128i) -> __m128i {
vpmadd52luq_128(a, b, c)
pub fn _mm_madd52lo_epu64(a: __m128i, b: __m128i, c: __m128i) -> __m128i {
unsafe { vpmadd52luq_128(a, b, c) }
}

/// Multiply packed unsigned 52-bit integers in each 64-bit element of
Expand All @@ -378,8 +338,8 @@ pub unsafe fn _mm_madd52lo_epu64(a: __m128i, b: __m128i, c: __m128i) -> __m128i
#[target_feature(enable = "avx512ifma,avx512vl")]
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
#[cfg_attr(test, assert_instr(vpmadd52luq))]
pub unsafe fn _mm_mask_madd52lo_epu64(a: __m128i, k: __mmask8, b: __m128i, c: __m128i) -> __m128i {
simd_select_bitmask(k, vpmadd52luq_128(a, b, c), a)
pub fn _mm_mask_madd52lo_epu64(a: __m128i, k: __mmask8, b: __m128i, c: __m128i) -> __m128i {
unsafe { simd_select_bitmask(k, vpmadd52luq_128(a, b, c), a) }
}

/// Multiply packed unsigned 52-bit integers in each 64-bit element of
Expand All @@ -394,8 +354,8 @@ pub unsafe fn _mm_mask_madd52lo_epu64(a: __m128i, k: __mmask8, b: __m128i, c: __
#[target_feature(enable = "avx512ifma,avx512vl")]
#[unstable(feature = "stdarch_x86_avx512", issue = "111137")]
#[cfg_attr(test, assert_instr(vpmadd52luq))]
pub unsafe fn _mm_maskz_madd52lo_epu64(k: __mmask8, a: __m128i, b: __m128i, c: __m128i) -> __m128i {
simd_select_bitmask(k, vpmadd52luq_128(a, b, c), _mm_setzero_si128())
pub fn _mm_maskz_madd52lo_epu64(k: __mmask8, a: __m128i, b: __m128i, c: __m128i) -> __m128i {
unsafe { simd_select_bitmask(k, vpmadd52luq_128(a, b, c), _mm_setzero_si128()) }
}

#[allow(improper_ctypes)]
Expand Down
Loading

0 comments on commit 0e35041

Please sign in to comment.