mirror of
https://github.com/rust-lang/rust.git
synced 2026-04-27 18:57:42 +03:00
Add const to avx512bw intrinsics
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user