Skip to content

Commit 7f2c239

Browse files
satiscugcatAmanieu
authored andcommitted
Moved const fn outside unsafe block
1 parent 49f88c3 commit 7f2c239

File tree

1 file changed

+13
-11
lines changed

1 file changed

+13
-11
lines changed

stdarch/crates/core_arch/src/x86/avx512bw.rs

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11303,7 +11303,16 @@ pub fn _mm512_bsrli_epi128<const IMM8: i32>(a: __m512i) -> __m512i {
1130311303
#[cfg_attr(test, assert_instr(vpalignr, IMM8 = 1))]
1130411304
#[rustc_legacy_const_generics(2)]
1130511305
pub fn _mm512_alignr_epi8<const IMM8: i32>(a: __m512i, b: __m512i) -> __m512i {
11306-
unsafe {
11306+
const fn mask(shift: u32, i: u32) -> u32 {
11307+
let shift = shift % 16;
11308+
let mod_i = i%16;
11309+
if mod_i < (16 - shift) {
11310+
i + shift
11311+
} else {
11312+
i + 48 + shift
11313+
}
11314+
}
11315+
1130711316
// If palignr is shifting the pair of vectors more than the size of two
1130811317
// lanes, emit zero.
1130911318
if IMM8 >= 32 {
@@ -11316,18 +11325,11 @@ pub fn _mm512_alignr_epi8<const IMM8: i32>(a: __m512i, b: __m512i) -> __m512i {
1131611325
} else {
1131711326
(a, b)
1131811327
};
11328+
unsafe {
1131911329
if IMM8 == 16 {
1132011330
return transmute(a);
1132111331
}
11322-
const fn mask(shift: u32, i: u32) -> u32 {
11323-
let shift = shift % 16;
11324-
let mod_i = i%16;
11325-
if mod_i < (16 - shift) {
11326-
i + shift
11327-
} else {
11328-
i + 48 + shift
11329-
}
11330-
}
11332+
1133111333

1133211334
let r: i8x64 = simd_shuffle!(
1133311335
b.as_i8x64(),
@@ -11491,7 +11493,7 @@ pub fn _mm_mask_alignr_epi8<const IMM8: i32>(
1149111493
a: __m128i,
1149211494
b: __m128i,
1149311495
) -> __m128i {
11494-
unsafe {
11496+
unsafe {`
1149511497
static_assert_uimm_bits!(IMM8, 8);
1149611498
let r = _mm_alignr_epi8::<IMM8>(a, b);
1149711499
transmute(simd_select_bitmask(k, r.as_i8x16(), src.as_i8x16()))

0 commit comments

Comments
 (0)