Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
a24022a
Fix LLVM intrinsic signatures for AVX-VNNI
sayantn Mar 1, 2026
35f7c8b
Correct stability attribute for avx512bw intrinsics
sayantn Mar 4, 2026
985cd23
Add immediate AMX intrinsics
sayantn Mar 1, 2026
5d3caa5
Merge pull request #2043 from sayantn/amx-avx512
folkertdev Mar 4, 2026
3483792
Merge pull request #2044 from sayantn/fix-signatures
folkertdev Mar 4, 2026
48d573f
Add movrs intrinsics
sayantn Mar 5, 2026
6abb95c
gate use of `wasm_target_feature` on wasm target arch
folkertdev Mar 6, 2026
753e5b8
Merge pull request #2049 from folkertdev/gate-wasm-target-features
sayantn Mar 6, 2026
c61045d
Merge pull request #2047 from sayantn/correct-bw-const
folkertdev Mar 6, 2026
3494337
Merge pull request #2048 from sayantn/movrs
folkertdev Mar 6, 2026
6c7d342
add ACLE random number generation intrinsics
folkertdev Mar 6, 2026
279c43e
Prepare for merging from rust-lang/rust
invalid-email-address Mar 9, 2026
5cc9690
Merge ref 'eda4fc7733ee' from rust-lang/rust
invalid-email-address Mar 9, 2026
f1bd647
Revert "Merge pull request #1871 from folkertdev/aarch64-float-min-max"
RalfJung Mar 10, 2026
d97cd54
Merge pull request #2052 from RalfJung/avoid-simd-minmax
folkertdev Mar 10, 2026
46bada3
aarch64: use `simd_reduce_{min, max}` on integers
folkertdev Mar 10, 2026
f326a42
Merge pull request #2051 from rust-lang/rustc-pull
folkertdev Mar 10, 2026
752a87f
s390x: use llvm.s390 intrinsics instead of simd_fmin/fmax
RalfJung Mar 10, 2026
47d82e2
add f32 min/max tests
RalfJung Mar 10, 2026
a668717
go back to portable LLVM intrinsic to avoid fallback trouble
RalfJung Mar 11, 2026
e6dc137
Merge pull request #2058 from RalfJung/s390x-minmax
folkertdev Mar 11, 2026
80b8698
s390x: add f64 tests for vec_min
RalfJung Mar 11, 2026
ebd8272
Merge pull request #2053 from folkertdev/aarch64-int-simd-reduce-min-max
folkertdev Mar 12, 2026
b245493
Merge pull request #2061 from RalfJung/f64-tests
folkertdev Mar 12, 2026
4f10c64
remove `cfg_attr` on `aarch64`/`arm64ec` in the aarch64 module
folkertdev Mar 12, 2026
30c24f4
ci: update to actions/checkout@v6
Mar 12, 2026
ccf7d4e
inline `assert_instr` tests
folkertdev Mar 12, 2026
185a329
Merge pull request #2062 from clado/github-action-checkout-v6
folkertdev Mar 13, 2026
3776c07
Merge pull request #2050 from folkertdev/aarch64-rand
sayantn Mar 16, 2026
8155209
enable the `movrs` target feature in `core` and `std`
folkertdev Mar 16, 2026
a72acee
correct `vpdpbusd` asserts in miri
folkertdev Mar 17, 2026
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
1 change: 1 addition & 0 deletions library/core/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,7 @@
#![feature(hexagon_target_feature)]
#![feature(loongarch_target_feature)]
#![feature(mips_target_feature)]
#![feature(movrs_target_feature)]
#![feature(nvptx_target_feature)]
#![feature(powerpc_target_feature)]
#![feature(riscv_target_feature)]
Expand Down
12 changes: 6 additions & 6 deletions library/stdarch/.github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ jobs:
name: Check Style
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- name: Install Rust
run: rustup update nightly --no-self-update && rustup default nightly
- run: ci/style.sh
Expand All @@ -18,7 +18,7 @@ jobs:
needs: [style]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- name: Install Rust
run: rustup update nightly --no-self-update && rustup default nightly
- run: ci/dox.sh
Expand All @@ -30,7 +30,7 @@ jobs:
needs: [style]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- name: Install Rust
run: rustup update nightly --no-self-update && rustup default nightly
- run: cargo test --manifest-path crates/stdarch-verify/Cargo.toml
Expand Down Expand Up @@ -216,7 +216,7 @@ jobs:
build_std: true

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- name: Install Rust
run: |
rustup update nightly --no-self-update
Expand Down Expand Up @@ -285,7 +285,7 @@ jobs:
build_std: true

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- name: Install Rust
run: |
rustup update nightly --no-self-update
Expand All @@ -310,7 +310,7 @@ jobs:
name: Check stdarch-gen-{arm, loongarch, hexagon} output
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- name: Install Rust
run: rustup update nightly && rustup default nightly && rustup component add rustfmt
- name: Check arm spec
Expand Down
4 changes: 4 additions & 0 deletions library/stdarch/crates/core_arch/src/aarch64/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ mod mte;
#[unstable(feature = "stdarch_aarch64_mte", issue = "129010")]
pub use self::mte::*;

mod rand;
#[unstable(feature = "stdarch_aarch64_rand", issue = "153514")]
pub use self::rand::*;

mod neon;
#[stable(feature = "neon_intrinsics", since = "1.59.0")]
pub use self::neon::*;
Expand Down
46 changes: 16 additions & 30 deletions library/stdarch/crates/core_arch/src/aarch64/mte.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,35 +3,17 @@
//! [ACLE documentation](https://arm-software.github.io/acle/main/acle.html#markdown-toc-mte-intrinsics)

unsafe extern "unadjusted" {
#[cfg_attr(
any(target_arch = "aarch64", target_arch = "arm64ec"),
link_name = "llvm.aarch64.irg"
)]
#[link_name = "llvm.aarch64.irg"]
fn irg_(ptr: *const (), exclude: i64) -> *const ();
#[cfg_attr(
any(target_arch = "aarch64", target_arch = "arm64ec"),
link_name = "llvm.aarch64.gmi"
)]
#[link_name = "llvm.aarch64.gmi"]
fn gmi_(ptr: *const (), exclude: i64) -> i64;
#[cfg_attr(
any(target_arch = "aarch64", target_arch = "arm64ec"),
link_name = "llvm.aarch64.ldg"
)]
#[link_name = "llvm.aarch64.ldg"]
fn ldg_(ptr: *const (), tag_ptr: *const ()) -> *const ();
#[cfg_attr(
any(target_arch = "aarch64", target_arch = "arm64ec"),
link_name = "llvm.aarch64.stg"
)]
#[link_name = "llvm.aarch64.stg"]
fn stg_(tagged_ptr: *const (), addr_to_tag: *const ());
#[cfg_attr(
any(target_arch = "aarch64", target_arch = "arm64ec"),
link_name = "llvm.aarch64.addg"
)]
#[link_name = "llvm.aarch64.addg"]
fn addg_(ptr: *const (), value: i64) -> *const ();
#[cfg_attr(
any(target_arch = "aarch64", target_arch = "arm64ec"),
link_name = "llvm.aarch64.subp"
)]
#[link_name = "llvm.aarch64.subp"]
fn subp_(ptr_a: *const (), ptr_b: *const ()) -> i64;
}

Expand Down Expand Up @@ -127,42 +109,46 @@ mod test {
use super::*;
use stdarch_test::assert_instr;

#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(irg))] // FIXME: MSVC `dumpbin` doesn't support MTE
// Instruction tests are separate because the functions use generics.
//
// FIXME: As of 2026 MSVC `dumpbin` doesn't support MTE.

#[cfg_attr(not(target_env = "msvc"), assert_instr(irg))]
#[allow(dead_code)]
#[target_feature(enable = "mte")]
unsafe fn test_arm_mte_create_random_tag(src: *const (), mask: u64) -> *const () {
__arm_mte_create_random_tag(src, mask)
}

#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(addg))]
#[cfg_attr(not(target_env = "msvc"), assert_instr(addg))]
#[allow(dead_code)]
#[target_feature(enable = "mte")]
unsafe fn test_arm_mte_increment_tag(src: *const ()) -> *const () {
__arm_mte_increment_tag::<1, _>(src)
}

#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(gmi))]
#[cfg_attr(not(target_env = "msvc"), assert_instr(gmi))]
#[allow(dead_code)]
#[target_feature(enable = "mte")]
unsafe fn test_arm_mte_exclude_tag(src: *const (), excluded: u64) -> u64 {
__arm_mte_exclude_tag(src, excluded)
}

#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(stg))]
#[cfg_attr(not(target_env = "msvc"), assert_instr(stg))]
#[allow(dead_code)]
#[target_feature(enable = "mte")]
unsafe fn test_arm_mte_set_tag(src: *const ()) {
__arm_mte_set_tag(src)
}

#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(ldg))]
#[cfg_attr(not(target_env = "msvc"), assert_instr(ldg))]
#[allow(dead_code)]
#[target_feature(enable = "mte")]
unsafe fn test_arm_mte_get_tag(src: *const ()) -> *const () {
__arm_mte_get_tag(src)
}

#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(subp))]
#[cfg_attr(not(target_env = "msvc"), assert_instr(subp))]
#[allow(dead_code)]
#[target_feature(enable = "mte")]
unsafe fn test_arm_mte_ptrdiff(a: *const (), b: *const ()) -> i64 {
Expand Down
Loading
Loading