Skip to content

s390x: yet another batch of intrinsics #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 57 commits into from
Closed
Changes from 1 commit
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
9426bb5
feat - FEAT_LUT neon instrinsics
Jamesbarford Mar 3, 2025
58538b1
Don't field-project (`.0`) into SIMD types
scottmcm Mar 5, 2025
eba2217
Update SDE mirror to ci-mirrors.rust-lang.org
sayantn Mar 15, 2025
31c9f7a
wasm32: Fix undefined behavior with shift intrinsics
alexcrichton Mar 3, 2025
d4a26b9
Fix rustfmt
alexcrichton Mar 3, 2025
b7a1daf
Document safety conditions of simd shifts
alexcrichton Mar 10, 2025
5192f30
add `vec_reve`
folkertdev Feb 19, 2025
cefe6c9
add `vec_xl` and `vec_xst`
folkertdev Feb 25, 2025
6d6ca49
add `vec_load_len` and `vec_store_len`
folkertdev Feb 25, 2025
21b00cb
add `vec_load_len_r` and `vec_store_len_r`
folkertdev Feb 25, 2025
bb23a48
add `vec_load_bndry`, `__lcbb` and `vec_load_pair`
folkertdev Feb 25, 2025
4f57e52
add `vec_pack`, `vec_packs` and `vec_packsu`
folkertdev Mar 1, 2025
8870be2
add `vec_packs_cc` and `vec_packsu_cc`
folkertdev Mar 1, 2025
d4ba3d2
add `vec_madd` and `vec_msub`
folkertdev Mar 1, 2025
64ac60b
test `vec_rl`
folkertdev Mar 2, 2025
b5443d6
correct name of signed splat functions
folkertdev Mar 3, 2025
8a1e79e
add `vec_unpackh` and `vec_unpackl`
folkertdev Mar 3, 2025
ef8f79e
add `vec_avg`
folkertdev Mar 3, 2025
0dab415
add `vec_checksum`
folkertdev Mar 3, 2025
ad4d693
add `vec_add_u128`, `vec_addc_u128`, `vec_adde_u128` and `vec_addce_u…
folkertdev Mar 4, 2025
e61e147
add `vec_mule`
folkertdev Mar 4, 2025
ab66d14
add `vec_nmsub`
folkertdev Mar 4, 2025
6956f2a
clarify fixme waiting for a newer llvm version
folkertdev Mar 4, 2025
58fa7a7
add `vec_gfmsum`
folkertdev Mar 4, 2025
75e9c9e
add `vec_gfmsum_128`
folkertdev Mar 4, 2025
eba5adf
add `vec_gfmsum_accum` and `vec_gfmsum_accum_128`
folkertdev Mar 4, 2025
3c1bdfe
add `vec_nmadd`
folkertdev Mar 4, 2025
31be70e
add `vec_gather_element`
folkertdev Mar 4, 2025
7777e5c
add `vec_bperm_u128`
folkertdev Mar 4, 2025
f325359
add `vec_sel`
folkertdev Mar 4, 2025
a9a6405
add `vec_scatter`
folkertdev Mar 4, 2025
25746d1
add `vec_fp_test_data_class`
folkertdev Mar 5, 2025
9006150
add `vec_test_mask`
folkertdev Mar 5, 2025
7914100
add `vec_search_string_cc` and `vec_search_string_until_zero_cc`
folkertdev Mar 5, 2025
a48b504
add `vec_double` and `vec_float`
folkertdev Mar 5, 2025
814f140
add `vec_extend_s64`
folkertdev Mar 5, 2025
cd185a8
add `vec_signed` and `vec_unsigned`
folkertdev Mar 5, 2025
900d502
add `vec_cp_until_zero` and `vec_cp_until_zero_cc`
folkertdev Mar 5, 2025
01c208f
add `vec_msum_u128`
folkertdev Mar 5, 2025
bd478a9
add `vec_sld`, `vec_sldb`, `vec_sldw` and `vec_srdb`
folkertdev Mar 5, 2025
747870f
add `vec_cmprg`
folkertdev Mar 6, 2025
6a03b2f
add `vec_cmpnrg`
folkertdev Mar 6, 2025
434d285
add `vec_cmprg_idx` and `vec_cmpnrg_idx`
folkertdev Mar 6, 2025
66b2a46
add `vec_cmprg_cc` and friends
folkertdev Mar 6, 2025
4dbc8af
add `vec_cmprg_or_0_idx` and `vec_cmpnrg_or_0_idx`
folkertdev Mar 6, 2025
83d5d2a
add `vec_cmprg_or_0_idx_cc` and `vec_cmpnrg_or_0_idx_cc`
folkertdev Mar 6, 2025
e67cadf
let's not use `&mut` until we get confirmation it's OK
folkertdev Mar 6, 2025
c872f5b
add `vec_cmpgt`, `vec_cmplt`, `vec_cmpge`, `vec_cmple`
folkertdev Mar 7, 2025
e8508b5
add `vec_cmpeq` and `vec_cmpne`
folkertdev Mar 7, 2025
9e19b0e
add `vec_cmpeq_idx` and variations
folkertdev Mar 7, 2025
551ecd0
add `vec_all_nan`, `vec_any_nan`, `vec_all_numeric` and `vec_any_nume…
folkertdev Mar 8, 2025
db1d9ca
add `vec_any_*` and `vec_all_*`
folkertdev Mar 8, 2025
11d56df
add `vec_mulo`
folkertdev Mar 8, 2025
1070ae8
add `vec_mulh`
folkertdev Mar 8, 2025
052dd81
add `vec_meadd`, `vec_moadd`, `vec_mhadd` and `vec_mladd`
folkertdev Mar 8, 2025
049b750
shink the size of type signatures
folkertdev Mar 16, 2025
5e2f119
move unsafe pointer writes to the surface
folkertdev Mar 16, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
add vec_checksum
  • Loading branch information
folkertdev authored and Amanieu committed Mar 16, 2025
commit 0dab41523b52585140a1f94d94b629d49c5712d0
17 changes: 17 additions & 0 deletions crates/core_arch/src/s390x/vector.rs
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,8 @@ unsafe extern "unadjusted" {
#[link_name = "llvm.s390.vavglh"] fn vavglh(a: vector_unsigned_short, b: vector_unsigned_short) -> vector_unsigned_short;
#[link_name = "llvm.s390.vavglf"] fn vavglf(a: vector_unsigned_int, b: vector_unsigned_int) -> vector_unsigned_int;
#[link_name = "llvm.s390.vavglg"] fn vavglg(a: vector_unsigned_long_long, b: vector_unsigned_long_long) -> vector_unsigned_long_long;

#[link_name = "llvm.s390.vcksm"] fn vcksm(a: vector_unsigned_int, b: vector_unsigned_int) -> vector_unsigned_int;
}

impl_from! { i8x16, u8x16, i16x8, u16x8, i32x4, u32x4, i64x2, u64x2, f32x4, f64x2 }
Expand Down Expand Up @@ -3383,6 +3385,15 @@ pub unsafe fn vec_msub<T: sealed::VectorMadd>(a: T, b: T, c: T) -> T {
a.vec_msub(b, c)
}

/// Vector Checksum
#[inline]
#[target_feature(enable = "vector")]
#[unstable(feature = "stdarch_s390x", issue = "135681")]
#[cfg_attr(test, assert_instr(vcksm))]
pub unsafe fn vec_checksum(a: vector_unsigned_int, b: vector_unsigned_int) -> vector_unsigned_int {
vcksm(a, b)
}

#[cfg(test)]
mod tests {
use super::*;
Expand Down Expand Up @@ -4229,4 +4240,10 @@ mod tests {
[4, 2, 2, 0],
[3, (1u32 + 2).div_ceil(2), (u32::MAX as u64 + 2u64).div_ceil(2) as u32, 0]
}

test_vec_2! { test_vec_checksum, vec_checksum, u32x4,
[1, 2, 3, u32::MAX],
[5, 6, 7, 8],
[0, 12, 0, 0]
}
}