rust/library/stdarch
Tsukasa OI 14fc81b85f reorder all RISC-V features for maintenance
All RISC-V Features are reordered for better maintainability.
The author has a plan to add many RISC-V ratified extensions (mainly
discoverable from Linux) and this is a part of preparation.

Sections are divided as follows:

*   Base ISAs
*   "I"-related
    *   Extensions formerly a part of the base "I" extension
        but divided later (now all of them are ratified).
    *   Other user-mode extensions "Zi*".
*   "M"-related (currently "M" only)
*   "A"-related
    "A", "Za*" and "Ztso" which is named differently but absolutely
    related to memory operations.
*   Base FP extensions
*   Base FP extensions using integer registers
*   "C"-related (currently "C" only)
*   "B"-related (except cryptography-related "Zbk*")
*   Scalar cryptography extensions (including "Zbk*")
*   Base Vector extensions (currently "V" only)
*   Ratified privileged extensions
*   Non-extensions and non-ratified extensions which is *not*
    going to be ratified, at least in the draft form

The last section needs some explanation.

"S" is not an extension (although some buggy implementations such as QEMU
up to 7.0 emitted this character as well as "U" as an extension) and the
DeviceTree parser in the Linux kernel explicitly workarounds this issue.

There's no plan for ratification of the single-letter "J" extension
(there's a room for redefinition like the "B" extension but unlikely).
Instead, pointer masking extensions including "Supm" is one of the results
of the task group discussing J extension*s*.
There's also an instruction in the "Zfa" extension which accelerates
FP-to-int conversion matching JavaScript semantics.

"P" is being actively discussed (and will result in a single-letter "P"
extension and various "Zp*" extensions) but it seems there needs some time
until ratification.
And there's one Rust-specific issue: Rust implements Packed-SIMD intrinsics
based on an early draft of the "P" extension and they are *very unlikely*
kept as-is.  For instance, `add16` does not follow standard RISC-V
instruction naming (ADD16 is the name from the Andes' proposal) and
going to be renamed.

Before moving "P" to above, we have to clearly understand what the final
"P" extension will be and resolve existing intrinsics.
2025-03-24 23:47:00 +00:00
..
.github/workflows Add PowerPC (32-bit) to CI 2024-12-21 10:12:32 +00:00
ci Update SDE mirror to ci-mirrors.rust-lang.org 2025-03-16 13:13:19 +00:00
crates reorder all RISC-V features for maintenance 2025-03-24 23:47:00 +00:00
examples Remove some allow(unsafe_op_in_unsafe_fn)s and use target_feature 1.1 in examples 2025-02-25 01:11:47 +00:00
intrinsics_data feat - FEAT_LUT neon instrinsics 2025-03-05 14:54:05 +00:00
.cirrus.yml Update CI to FreeBSD 13.4 2025-02-14 16:40:26 +00:00
.git-blame-ignore-revs Add .git-blame-ignore-revs 2025-02-09 12:57:14 -08:00
.gitignore Add intrinsic code generator for LoongArch 2024-02-28 08:43:52 +00:00
.gitmodules Remove ACLE submodule 2023-05-15 17:34:11 +02:00
Cargo.toml PR feedback & pipeline 2025-01-16 14:29:19 +00:00
CONTRIBUTING.md Recommend using run-docker.sh instead of run.sh in CONTRIBUTING.md 2024-11-27 09:30:19 +08:00
LICENSE-APACHE Add license files 2017-09-25 12:43:06 -07:00
LICENSE-MIT Add license files 2017-09-25 12:43:06 -07:00
README.md Use SPDX license format and update packed_simd crate link (#1297) 2022-03-17 10:55:51 +00:00
rustfmt.toml Update the intrinsic checker tool (#1258) 2021-12-04 13:03:30 +00:00
triagebot.toml Enable feature detection on all Apple/Darwin targets 2024-09-14 04:25:01 +01:00
vendor.yml Add SVE support to stdarch-verify 2025-01-16 14:29:19 +00:00

stdarch - Rust's standard library SIMD components

Actions Status

Crates

This repository contains two main crates:

  • core_arch implements core::arch - Rust's core library architecture-specific intrinsics, and

  • std_detect implements std::detect - Rust's standard library run-time CPU feature detection.

The std::simd component now lives in the packed_simd_2 crate.