s390x vector facilities support
Open
Nobody has claimed this yet.
A-ABI
A-inline-assembly
A-SIMD
O-SystemZ
T-compiler
T-libs
- Dominant language
- Rust
- Stars
- 119k
- Forks
- 16.1k
- PR merge metrics
- PR metrics pending
Description
This tracks the status of s390x vector facilities support in rustc and standard libraries.
- ABI support
- support z13 vector ABI: done in https://github.com/rust-lang/rust/pull/131586
https://github.com/rust-lang/rust/blob/58420a065b68ecb3eec03b942740c761cdadd5c4/compiler/rustc_target/src/abi/call/s390x.rs#L1-L2 - remove explicit disabling of the vector feature (blocked on the above FIXME): done in https://github.com/rust-lang/rust/pull/131586
https://github.com/rust-lang/rust/blob/58420a065b68ecb3eec03b942740c761cdadd5c4/compiler/rustc_target/src/spec/targets/s390x_unknown_linux_gnu.rs#L9-L11
- support z13 vector ABI: done in https://github.com/rust-lang/rust/pull/131586
- target_feature support
- support nightly-only
cfg(target_feature = "vector")and unstabletarget_feature(enable = "vector")(underfeature(s390x_target_feature)): done in https://github.com/rust-lang/rust/pull/127506 - support other vector facility-related target features: vector-enhancements-1, vector-enhancements-2, etc. (see also https://github.com/rust-lang/rust/issues/88937); done in https://github.com/rust-lang/rust/pull/135630
- stabilize vector-related target features: done in https://github.com/rust-lang/rust/pull/145656
At least blocked until ABI support doneUPDATE: ABI support done
And may be more things are needed given the precedent of postponed stabilization of vector features in RISC-V.
- support nightly-only
- asm support
- support clobber-only vector registers: done in https://github.com/rust-lang/rust/pull/130630
- stabilize
feature(asm_experimental_arch)on s390x: done in https://github.com/rust-lang/rust/pull/131258 - support
#[repr(simd)]types in input/output of asm (i.e., fully support vector registers) underfeature(asm_experimental_reg): pending in https://github.com/rust-lang/rust/pull/131664
Both LLVM and GCC do not documentvconstraint, but actually seem to be supported.
Blocked until ABI support done.UPDATE: ABI support done - stabilize
feature(asm_experimental_reg)for s390x vector registers (https://github.com/rust-lang/rust/pull/154184)
- core_arch support (tracking issue: https://github.com/rust-lang/rust/issues/135681)
- add unstable vector intrinsics to
core::arch::s390x, mostly done https://github.com/rust-lang/rust/issues/135681 - stabilize vector types to allow use them with inline assembly
- stabilize vector intrinsics in
core::arch::s390x
- add unstable vector intrinsics to
- std_detect support (tracking issue: https://github.com/rust-lang/rust/issues/135413)
- support unstable
is_s390x_feature_detected!("vector"): done in https://github.com/rust-lang/stdarch/pull/1699 - stabilize
is_s390x_feature_detected!for vector-related target features: done in https://github.com/rust-lang/rust/pull/145656
- support unstable
@rustbot label +O-SystemZ
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the remaining checklist items and read the linked core::arch::s390x tracking issue (#135681) and std_detect tracking issue (#135413). Review the existing s390x ABI, target-feature, inline-assembly, and feature-detection work referenced here. Done means resolving the remaining vector intrinsic, vector-type, and stabilization items and updating this tracker.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- compilers
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100