Add const to avx512bw intrinsics

This commit is contained in:
okaneco
2026-02-20 07:30:10 -05:00
parent 4f881c4b89
commit 37bd99e2e0
@@ -6523,10 +6523,11 @@ pub fn _mm_maskz_maddubs_epi16(k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
#[target_feature(enable = "avx512bw")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpackssdw))]
pub fn _mm512_packs_epi32(a: __m512i, b: __m512i) -> __m512i {
#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
pub const fn _mm512_packs_epi32(a: __m512i, b: __m512i) -> __m512i {
unsafe {
let max = simd_splat(i32::from(i16::MAX));
let min = simd_splat(i32::from(i16::MIN));
let max = simd_splat(i16::MAX as i32);
let min = simd_splat(i16::MIN as i32);
let clamped_a = simd_imax(simd_imin(a.as_i32x16(), max), min)
.as_m512i()
@@ -6559,7 +6560,13 @@ pub fn _mm512_packs_epi32(a: __m512i, b: __m512i) -> __m512i {
#[target_feature(enable = "avx512bw")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpackssdw))]
pub fn _mm512_mask_packs_epi32(src: __m512i, k: __mmask32, a: __m512i, b: __m512i) -> __m512i {
#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
pub const fn _mm512_mask_packs_epi32(
src: __m512i,
k: __mmask32,
a: __m512i,
b: __m512i,
) -> __m512i {
unsafe {
let pack = _mm512_packs_epi32(a, b).as_i16x32();
transmute(simd_select_bitmask(k, pack, src.as_i16x32()))
@@ -6573,7 +6580,8 @@ pub fn _mm512_mask_packs_epi32(src: __m512i, k: __mmask32, a: __m512i, b: __m512
#[target_feature(enable = "avx512bw")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpackssdw))]
pub fn _mm512_maskz_packs_epi32(k: __mmask32, a: __m512i, b: __m512i) -> __m512i {
#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
pub const fn _mm512_maskz_packs_epi32(k: __mmask32, a: __m512i, b: __m512i) -> __m512i {
unsafe {
let pack = _mm512_packs_epi32(a, b).as_i16x32();
transmute(simd_select_bitmask(k, pack, i16x32::ZERO))
@@ -6651,10 +6659,11 @@ pub const fn _mm_maskz_packs_epi32(k: __mmask8, a: __m128i, b: __m128i) -> __m12
#[target_feature(enable = "avx512bw")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpacksswb))]
pub fn _mm512_packs_epi16(a: __m512i, b: __m512i) -> __m512i {
#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
pub const fn _mm512_packs_epi16(a: __m512i, b: __m512i) -> __m512i {
unsafe {
let max = simd_splat(i16::from(i8::MAX));
let min = simd_splat(i16::from(i8::MIN));
let max = simd_splat(i8::MAX as i16);
let min = simd_splat(i8::MIN as i16);
let clamped_a = simd_imax(simd_imin(a.as_i16x32(), max), min)
.as_m512i()
@@ -6687,7 +6696,13 @@ pub fn _mm512_packs_epi16(a: __m512i, b: __m512i) -> __m512i {
#[target_feature(enable = "avx512bw")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpacksswb))]
pub fn _mm512_mask_packs_epi16(src: __m512i, k: __mmask64, a: __m512i, b: __m512i) -> __m512i {
#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
pub const fn _mm512_mask_packs_epi16(
src: __m512i,
k: __mmask64,
a: __m512i,
b: __m512i,
) -> __m512i {
unsafe {
let pack = _mm512_packs_epi16(a, b).as_i8x64();
transmute(simd_select_bitmask(k, pack, src.as_i8x64()))
@@ -6701,7 +6716,8 @@ pub fn _mm512_mask_packs_epi16(src: __m512i, k: __mmask64, a: __m512i, b: __m512
#[target_feature(enable = "avx512bw")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpacksswb))]
pub fn _mm512_maskz_packs_epi16(k: __mmask64, a: __m512i, b: __m512i) -> __m512i {
#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
pub const fn _mm512_maskz_packs_epi16(k: __mmask64, a: __m512i, b: __m512i) -> __m512i {
unsafe {
let pack = _mm512_packs_epi16(a, b).as_i8x64();
transmute(simd_select_bitmask(k, pack, i8x64::ZERO))
@@ -6780,10 +6796,11 @@ pub const fn _mm_maskz_packs_epi16(k: __mmask16, a: __m128i, b: __m128i) -> __m1
#[target_feature(enable = "avx512bw")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpackusdw))]
pub fn _mm512_packus_epi32(a: __m512i, b: __m512i) -> __m512i {
#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
pub const fn _mm512_packus_epi32(a: __m512i, b: __m512i) -> __m512i {
unsafe {
let max = simd_splat(i32::from(u16::MAX));
let min = simd_splat(i32::from(u16::MIN));
let max = simd_splat(u16::MAX as i32);
let min = simd_splat(u16::MIN as i32);
let clamped_a = simd_imax(simd_imin(a.as_i32x16(), max), min)
.as_m512i()
@@ -6816,7 +6833,13 @@ pub fn _mm512_packus_epi32(a: __m512i, b: __m512i) -> __m512i {
#[target_feature(enable = "avx512bw")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpackusdw))]
pub fn _mm512_mask_packus_epi32(src: __m512i, k: __mmask32, a: __m512i, b: __m512i) -> __m512i {
#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
pub const fn _mm512_mask_packus_epi32(
src: __m512i,
k: __mmask32,
a: __m512i,
b: __m512i,
) -> __m512i {
unsafe {
let pack = _mm512_packus_epi32(a, b).as_i16x32();
transmute(simd_select_bitmask(k, pack, src.as_i16x32()))
@@ -6830,7 +6853,8 @@ pub fn _mm512_mask_packus_epi32(src: __m512i, k: __mmask32, a: __m512i, b: __m51
#[target_feature(enable = "avx512bw")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpackusdw))]
pub fn _mm512_maskz_packus_epi32(k: __mmask32, a: __m512i, b: __m512i) -> __m512i {
#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
pub const fn _mm512_maskz_packus_epi32(k: __mmask32, a: __m512i, b: __m512i) -> __m512i {
unsafe {
let pack = _mm512_packus_epi32(a, b).as_i16x32();
transmute(simd_select_bitmask(k, pack, i16x32::ZERO))
@@ -6909,10 +6933,11 @@ pub const fn _mm_maskz_packus_epi32(k: __mmask8, a: __m128i, b: __m128i) -> __m1
#[target_feature(enable = "avx512bw")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpackuswb))]
pub fn _mm512_packus_epi16(a: __m512i, b: __m512i) -> __m512i {
#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
pub const fn _mm512_packus_epi16(a: __m512i, b: __m512i) -> __m512i {
unsafe {
let max = simd_splat(i16::from(u8::MAX));
let min = simd_splat(i16::from(u8::MIN));
let max = simd_splat(u8::MAX as i16);
let min = simd_splat(u8::MIN as i16);
let clamped_a = simd_imax(simd_imin(a.as_i16x32(), max), min)
.as_m512i()
@@ -6945,7 +6970,13 @@ pub fn _mm512_packus_epi16(a: __m512i, b: __m512i) -> __m512i {
#[target_feature(enable = "avx512bw")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpackuswb))]
pub fn _mm512_mask_packus_epi16(src: __m512i, k: __mmask64, a: __m512i, b: __m512i) -> __m512i {
#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
pub const fn _mm512_mask_packus_epi16(
src: __m512i,
k: __mmask64,
a: __m512i,
b: __m512i,
) -> __m512i {
unsafe {
let pack = _mm512_packus_epi16(a, b).as_i8x64();
transmute(simd_select_bitmask(k, pack, src.as_i8x64()))
@@ -6959,7 +6990,8 @@ pub fn _mm512_mask_packus_epi16(src: __m512i, k: __mmask64, a: __m512i, b: __m51
#[target_feature(enable = "avx512bw")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpackuswb))]
pub fn _mm512_maskz_packus_epi16(k: __mmask64, a: __m512i, b: __m512i) -> __m512i {
#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
pub const fn _mm512_maskz_packus_epi16(k: __mmask64, a: __m512i, b: __m512i) -> __m512i {
unsafe {
let pack = _mm512_packus_epi16(a, b).as_i8x64();
transmute(simd_select_bitmask(k, pack, i8x64::ZERO))
@@ -17828,7 +17860,7 @@ fn test_mm_maskz_maddubs_epi16() {
}
#[simd_test(enable = "avx512bw")]
fn test_mm512_packs_epi32() {
const fn test_mm512_packs_epi32() {
let a = _mm512_set1_epi32(i32::MAX);
let b = _mm512_set1_epi32(1);
let r = _mm512_packs_epi32(a, b);
@@ -17839,7 +17871,7 @@ fn test_mm512_packs_epi32() {
}
#[simd_test(enable = "avx512bw")]
fn test_mm512_mask_packs_epi32() {
const fn test_mm512_mask_packs_epi32() {
let a = _mm512_set1_epi32(i32::MAX);
let b = _mm512_set1_epi32(1 << 16 | 1);
let r = _mm512_mask_packs_epi32(a, 0, a, b);
@@ -17852,7 +17884,7 @@ fn test_mm512_mask_packs_epi32() {
}
#[simd_test(enable = "avx512bw")]
fn test_mm512_maskz_packs_epi32() {
const fn test_mm512_maskz_packs_epi32() {
let a = _mm512_set1_epi32(i32::MAX);
let b = _mm512_set1_epi32(1);
let r = _mm512_maskz_packs_epi32(0, a, b);
@@ -17911,7 +17943,7 @@ const fn test_mm_maskz_packs_epi32() {
}
#[simd_test(enable = "avx512bw")]
fn test_mm512_packs_epi16() {
const fn test_mm512_packs_epi16() {
let a = _mm512_set1_epi16(i16::MAX);
let b = _mm512_set1_epi16(1);
let r = _mm512_packs_epi16(a, b);
@@ -17924,7 +17956,7 @@ fn test_mm512_packs_epi16() {
}
#[simd_test(enable = "avx512bw")]
fn test_mm512_mask_packs_epi16() {
const fn test_mm512_mask_packs_epi16() {
let a = _mm512_set1_epi16(i16::MAX);
let b = _mm512_set1_epi16(1 << 8 | 1);
let r = _mm512_mask_packs_epi16(a, 0, a, b);
@@ -17944,7 +17976,7 @@ fn test_mm512_mask_packs_epi16() {
}
#[simd_test(enable = "avx512bw")]
fn test_mm512_maskz_packs_epi16() {
const fn test_mm512_maskz_packs_epi16() {
let a = _mm512_set1_epi16(i16::MAX);
let b = _mm512_set1_epi16(1);
let r = _mm512_maskz_packs_epi16(0, a, b);
@@ -18013,7 +18045,7 @@ const fn test_mm_maskz_packs_epi16() {
}
#[simd_test(enable = "avx512bw")]
fn test_mm512_packus_epi32() {
const fn test_mm512_packus_epi32() {
let a = _mm512_set1_epi32(-1);
let b = _mm512_set1_epi32(1);
let r = _mm512_packus_epi32(a, b);
@@ -18024,7 +18056,7 @@ fn test_mm512_packus_epi32() {
}
#[simd_test(enable = "avx512bw")]
fn test_mm512_mask_packus_epi32() {
const fn test_mm512_mask_packus_epi32() {
let a = _mm512_set1_epi32(-1);
let b = _mm512_set1_epi32(1 << 16 | 1);
let r = _mm512_mask_packus_epi32(a, 0, a, b);
@@ -18037,7 +18069,7 @@ fn test_mm512_mask_packus_epi32() {
}
#[simd_test(enable = "avx512bw")]
fn test_mm512_maskz_packus_epi32() {
const fn test_mm512_maskz_packus_epi32() {
let a = _mm512_set1_epi32(-1);
let b = _mm512_set1_epi32(1);
let r = _mm512_maskz_packus_epi32(0, a, b);
@@ -18094,7 +18126,7 @@ const fn test_mm_maskz_packus_epi32() {
}
#[simd_test(enable = "avx512bw")]
fn test_mm512_packus_epi16() {
const fn test_mm512_packus_epi16() {
let a = _mm512_set1_epi16(-1);
let b = _mm512_set1_epi16(1);
let r = _mm512_packus_epi16(a, b);
@@ -18107,7 +18139,7 @@ fn test_mm512_packus_epi16() {
}
#[simd_test(enable = "avx512bw")]
fn test_mm512_mask_packus_epi16() {
const fn test_mm512_mask_packus_epi16() {
let a = _mm512_set1_epi16(-1);
let b = _mm512_set1_epi16(1 << 8 | 1);
let r = _mm512_mask_packus_epi16(a, 0, a, b);
@@ -18127,7 +18159,7 @@ fn test_mm512_mask_packus_epi16() {
}
#[simd_test(enable = "avx512bw")]
fn test_mm512_maskz_packus_epi16() {
const fn test_mm512_maskz_packus_epi16() {
let a = _mm512_set1_epi16(-1);
let b = _mm512_set1_epi16(1);
let r = _mm512_maskz_packus_epi16(0, a, b);