Skip to content

Commit 55c4b4d

Browse files
author
Daniel Smith
committed
Merge branch 'avx-512-cmp' into scatter-512
2 parents d6c2354 + c761d6f commit 55c4b4d

File tree

11 files changed

+113635
-99364
lines changed

11 files changed

+113635
-99364
lines changed

crates/core_arch/src/mod.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,13 @@ pub mod arch {
5757

5858
/// Platform-specific intrinsics for the `wasm32` platform.
5959
///
60+
61+
/// # Availability
62+
///
63+
/// Note that intrinsics gated by `target_feature = "atomics"` or `target_feature = "simd128"`
64+
/// are only available **when the standard library itself is compiled with the the respective
65+
/// target feature**. This version of the standard library is not obtainable via `rustup`,
66+
/// but rather will require the standard library to be compiled from source.
6067
/// See the [module documentation](../index.html) for more details.
6168
#[cfg(any(target_arch = "wasm32", dox))]
6269
#[doc(cfg(target_arch = "wasm32"))]

crates/core_arch/src/simd.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,18 @@ simd_ty!(i32x16[i32]:
198198
| x0, x1, x2, x3, x4, x5, x6, x7,
199199
x8, x9, x10, x11, x12, x13, x14, x15);
200200

201+
simd_ty!(u32x16[u32]:
202+
u32, u32, u32, u32, u32, u32, u32, u32,
203+
u32, u32, u32, u32, u32, u32, u32, u32
204+
| x0, x1, x2, x3, x4, x5, x6, x7,
205+
x8, x9, x10, x11, x12, x13, x14, x15);
206+
207+
simd_ty!(f32x16[f32]:
208+
f32, f32, f32, f32, f32, f32, f32, f32,
209+
f32, f32, f32, f32, f32, f32, f32, f32
210+
| x0, x1, x2, x3, x4, x5, x6, x7,
211+
x8, x9, x10, x11, x12, x13, x14, x15);
212+
201213
simd_ty!(i64x8[i64]:
202214
i64, i64, i64, i64, i64, i64, i64, i64
203215
| x0, x1, x2, x3, x4, x5, x6, x7);

crates/core_arch/src/x86/avx2.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3743,9 +3743,9 @@ pub unsafe fn _mm256_xor_si256(a: __m256i, b: __m256i) -> __m256i {
37433743
// This intrinsic has no corresponding instruction.
37443744
#[rustc_args_required_const(1)]
37453745
#[stable(feature = "simd_x86", since = "1.27.0")]
3746-
pub unsafe fn _mm256_extract_epi8(a: __m256i, imm8: i32) -> i8 {
3746+
pub unsafe fn _mm256_extract_epi8(a: __m256i, imm8: i32) -> i32 {
37473747
let imm8 = (imm8 & 31) as u32;
3748-
simd_extract(a.as_i8x32(), imm8)
3748+
simd_extract::<_, u8>(a.as_u8x32(), imm8) as i32
37493749
}
37503750

37513751
/// Extracts a 16-bit integer from `a`, selected with `imm8`. Returns a 32-bit
@@ -3759,9 +3759,9 @@ pub unsafe fn _mm256_extract_epi8(a: __m256i, imm8: i32) -> i8 {
37593759
// This intrinsic has no corresponding instruction.
37603760
#[rustc_args_required_const(1)]
37613761
#[stable(feature = "simd_x86", since = "1.27.0")]
3762-
pub unsafe fn _mm256_extract_epi16(a: __m256i, imm8: i32) -> i16 {
3762+
pub unsafe fn _mm256_extract_epi16(a: __m256i, imm8: i32) -> i32 {
37633763
let imm8 = (imm8 & 15) as u32;
3764-
simd_extract(a.as_i16x16(), imm8)
3764+
simd_extract::<_, u16>(a.as_u16x16(), imm8) as i32
37653765
}
37663766

37673767
/// Extracts a 32-bit integer from `a`, selected with `imm8`.
@@ -6115,7 +6115,7 @@ mod tests {
61156115
);
61166116
let r1 = _mm256_extract_epi8(a, 0);
61176117
let r2 = _mm256_extract_epi8(a, 35);
6118-
assert_eq!(r1, -1);
6118+
assert_eq!(r1, 0xFF);
61196119
assert_eq!(r2, 3);
61206120
}
61216121

@@ -6128,7 +6128,7 @@ mod tests {
61286128
);
61296129
let r1 = _mm256_extract_epi16(a, 0);
61306130
let r2 = _mm256_extract_epi16(a, 19);
6131-
assert_eq!(r1, -1);
6131+
assert_eq!(r1, 0xFFFF);
61326132
assert_eq!(r2, 3);
61336133
}
61346134

0 commit comments

Comments
 (0)