Commit Graph

2899 Commits

Author SHA1 Message Date
Folkert de Vries 70a07c91de Merge pull request #1991 from usamoi/fp16-transmute
remove fp16 target feature from some vreinterpret intrinsics
2026-01-28 11:37:09 +00:00
usamoi 18a4a3ace0 fix overflowing_literals in avx512fp16 tests 2026-01-28 19:15:25 +08:00
usamoi f4b4ab3b23 remove fp16 target feature from some vreinterpret intrinsics 2026-01-28 19:04:59 +08:00
Folkert de Vries 5a6e86708a Merge pull request #1994 from CrooseGit/dev/reucru01/add-missing-intrinsics
Adds missing neon intrinsics
2026-01-27 21:45:28 +00:00
reucru01 9fddd28d38 Ammends typo in generator & generated 2026-01-27 15:53:01 +00:00
reucru01 9ce0ebf994 Disables assert_instr tests on windows msvc
The opcodes for these intructions are not recognised by the dissasembler on the windows msvc toolchain.
As such they are not translated to the relevant mneumonic and the `assert_instr` test fails.
Please see [failing test](https://github.com/rust-lang/stdarch/actions/runs/20992978794/job/60342796821?pr=1994#logs).
2026-01-27 15:51:41 +00:00
reucru01 57a42dbf54 Makes some A64 intrinsics available on A32
Moves the relevant defintions from the aarch64 yaml to the arm_shared.
2026-01-27 15:51:37 +00:00
Reuben Cruise 354365a0e0 Adds some arm intrinsics to bring more up-to-date with acle
- Adds vluti2 intrinsics
- Adds famin/famax intrinsics
- Adds vstl1(q) intrinsics
- Adds vldap1(q) intrinsics
	- Excludes vldap1_lane_f64 as in testing it fails assert_intr. There seems to be some bad IR gen from rust.
- Adds vscale(q) intrinsics
- Adds new intrinsics to arm_intrinsics.json
	- Had to be done manually as intrinsics are not yet on developer.arm.com
2026-01-27 15:48:26 +00:00
Amanieu d'Antras 333ce17b2c Merge pull request #1995 from CrooseGit/dev/reucru01/documentation
Adds documentation for `stdarch-gen-arm`
2026-01-27 15:32:38 +00:00
Amanieu d'Antras e20d484540 Merge pull request #1989 from eduardosm/unsafe-tests
Avoid `unsafe fn` in remaining x86 tests
2026-01-27 15:03:52 +00:00
Folkert de Vries f648ba2e0a Merge pull request #2003 from folkertdev/use-simd-splat
use `simd_splat`
2026-01-26 21:01:13 +00:00
Folkert de Vries 0ef4c3aca7 use simd_splat for the set1 functions 2026-01-26 21:03:43 +01:00
Folkert de Vries 246399cb7d use simd_splat 2026-01-26 10:38:04 +01:00
The rustc-josh-sync Cronjob Bot 7168e5d9e1 Merge ref '873d4682c7d2' from rust-lang/rust
Pull recent changes from https://github.com/rust-lang/rust via Josh.

Upstream ref: rust-lang/rust@873d4682c7
Filtered ref: rust-lang/stdarch@003d326514
Upstream diff: https://github.com/rust-lang/rust/compare/48622726c4a91c87bf6cd4dbe1000c95df59906e...873d4682c7d285540b8f28bfe637006cef8918a6

This merge was created using https://github.com/rust-lang/josh-sync.
2026-01-26 04:34:26 +00:00
The rustc-josh-sync Cronjob Bot a4f92e5d81 Prepare for merging from rust-lang/rust
This updates the rust-version file to 873d4682c7.
2026-01-26 04:32:16 +00:00
Folkert de Vries 464b309040 Merge pull request #1993 from folkertdev/stabilize-jscvt
Stabilize `__jcvt`
2026-01-24 17:48:52 +00:00
Jonathan 'theJPster' Pallant 7cc102a4ee Revised yield hints
Turns out v7 targets always have v6t2 set, so that line was redundant. Also add a link to the Arm Armv7 A.R.M.
2026-01-24 17:29:25 +00:00
Jonathan 'theJPster' Pallant 96897f016e Add ARMv6 bare-metal targets
Three targets, covering A32 and T32 instructions, and soft-float and
hard-float ABIs. Hard-float not available in Thumb mode. Atomics
in Thumb mode require __sync* functions from compiler-builtins.
2026-01-24 17:29:25 +00:00
Amanieu d'Antras 5ec32b532c Merge pull request #1998 from folkertdev/test-vmulh_lane_f16
test `vmulh_lane_f16` in intrinsic test
2026-01-22 23:58:54 +00:00
Folkert de Vries cf08a111d0 s390x: add nnp-assist intrinsics
Because `qemu` does not support these (yet), I haven't added any runtime tests
2026-01-22 18:29:45 +01:00
Folkert de Vries b1ef655cb3 use simd_extract_dyn for extract 2026-01-22 17:00:45 +01:00
Folkert de Vries bf7c1c2d82 test vmulh_lane_f16 in intrinsic test 2026-01-21 20:57:49 +01:00
Sayantan Chakraborty d251a38981 Merge pull request #1974 from JamieCunliffe/inline-always-neon
Mark the neon intrinsics as inline(always).
2026-01-20 16:19:29 +00:00
Sayantan Chakraborty 0d802f5078 Merge pull request #1992 from folkertdev/remove-impl-neg
remove `impl Neg` on s390x/powerpc vector types
2026-01-17 16:43:13 +00:00
Sayantan Chakraborty aaf31e7e65 Merge pull request #1973 from ZuseZ4/u32-threadidx
thread, grid, and block dim/idx can only return non-negative values
2026-01-17 16:35:57 +00:00
Folkert de Vries 5bf9ca7b00 stabilize __jscvt 2026-01-13 12:11:18 +01:00
reucru01 f09b0bc2cb Creates README for stdarch-gen-arm 2026-01-13 10:28:11 +00:00
Jamie Cunliffe 78952f6aaa Mark the neon intrinsics as inline(always).
The inline(always) attribute is now applied to the call site when a
function has target features enabled so that it can determine that the
call is safe to inline.
2026-01-12 17:18:45 +00:00
Folkert de Vries d0204a399a remove impl Neg on s390x/powerpc vector types
For other targets we don't have such instances. We specifically decided agains implementing arithmetic operators on these low-level vector types
2026-01-11 21:40:30 +01:00
Eduardo Sánchez Muñoz 7630884c55 Avoid unsafe fn in remaining x86 tests 2026-01-07 17:58:32 +01:00
Sayantan Chakraborty f9e6d4bc20 Merge pull request #1987 from eduardosm/generic-simd-type-avoid-unsafe-tests
Use a generic type to implement SIMD types in `core_arch::simd` and avoid `unsafe fn` in more tests
2026-01-05 14:17:38 +00:00
Sayantan Chakraborty 7434dd6a2d Merge pull request #1984 from rust-lang/rustc-pull
Rustc pull update
2026-01-03 03:33:46 +00:00
Eduardo Sánchez Muñoz 68701ff93a arm_shared: avoid using transmute and unsafe fn in tests 2026-01-02 22:07:47 +01:00
Eduardo Sánchez Muñoz dab553268a x86: avoid using transmute in some tests 2026-01-02 22:07:47 +01:00
Eduardo Sánchez Muñoz 69c7a7e405 Use a generic type to implement SIMD types in core_arch::simd
This allows the `types` macro to easily implement `From<Simd<T, N>>` and `Into<Simd<T, N>>`
2026-01-02 22:07:47 +01:00
Sayantan Chakraborty c914627c86 Merge pull request #1988 from eduardosm/packed-struct
Change `repr(packed)` struct to `repr(C, packed)`
2026-01-02 20:31:26 +00:00
Eduardo Sánchez Muñoz f41fa64f97 Change repr(packed) struct to repr(C, packed)
`repr(packed)` structs do not have a well-defined layout
2026-01-02 21:18:51 +01:00
Sayantan Chakraborty 85f3ba3dd1 Merge pull request #1985 from usamoi/vpmaddwd
Use LLVM intrinsics for `madd` intrinsics
2026-01-02 19:35:29 +00:00
usamoi 344fc5112a Use LLVM intrinsics for madd intrinsics 2026-01-02 00:02:11 +08:00
Luca Versari c571336420 Clarify documentation around "undefined" bits in intrinsics. 2026-01-01 13:24:42 +01:00
The rustc-josh-sync Cronjob Bot 8a8b2e72e0 Merge ref '48622726c4a9' from rust-lang/rust
Pull recent changes from https://github.com/rust-lang/rust via Josh.

Upstream ref: 48622726c4
Filtered ref: cd67a857259ae6c8e166020f097dd070d6c16fb3
Upstream diff: https://github.com/rust-lang/rust/compare/8401398e1f14a24670ee1a3203713dc2f0f8b3a8...48622726c4a91c87bf6cd4dbe1000c95df59906e

This merge was created using https://github.com/rust-lang/josh-sync.
2026-01-01 04:24:14 +00:00
The rustc-josh-sync Cronjob Bot 6ba984fa33 Prepare for merging from rust-lang/rust
This updates the rust-version file to 48622726c4.
2026-01-01 04:24:07 +00:00
Amanieu d'Antras 56a8bfadfc Merge pull request #1981 from eduardosm/unsafe-tests
x86: remove "unsafe" from tests that do not need it
2025-12-31 20:41:19 +00:00
Jonathan Brouwer dc103c4cd9 Rollup merge of #146798 - a4lg:riscv-intrinsics-zkne_or_zknd, r=Amanieu
RISC-V: Implement (Zkne or Zknd) intrinsics correctly

On rust-lang/stdarch#1765, it has been pointed out that two RISC-V (64-bit only) intrinsics to perform AES key scheduling have wrong target feature.
`aes64ks1i` and `aes64ks2` instructions require *either* Zkne (scalar cryptography: AES encryption) or Zknd (scalar cryptography: AES decryption) extension (or both) but corresponding Rust intrinsics (in `core::arch::riscv64`) required *both* Zkne and Zknd extensions.

An excerpt from the original intrinsics:

```rust
#[target_feature(enable = "zkne", enable = "zknd")]
```

To fix that, we need to:

1.  Represent a condition where *either* Zkne or Zknd is available and
2.  Workaround an issue: `llvm.riscv.aes64ks1i` / `llvm.riscv.aes64ks2` LLVM intrinsics require either Zkne or Zknd extension.

This PR attempts to resolve them by:

1.  Adding a perma-unstable RISC-V target feature: `zkne_or_zknd` (implied from both `zkne` and `zknd`) and
2.  Using inline assembly to construct machine code directly (because `zkne_or_zknd` alone cannot imply neither Zkne nor Zknd, we cannot use LLVM intrinsics).

The author confirmed that we can construct an AES key scheduling function with decent performance using fixed `aes64ks1i` and `aes64ks2` intrinsics (with optimization enabled).
2025-12-31 17:32:04 +01:00
Amanieu d'Antras e116716862 Merge pull request #1905 from sayantn/stabilize-avx512fp16
(Partially) Stabilize AVX512-FP16
2025-12-29 13:30:19 +00:00
Amanieu d'Antras cb3952a243 Merge pull request #1983 from eduardosm/tests
Fix some tests so they test the correct function
2025-12-29 13:29:11 +00:00
Eduardo Sánchez Muñoz 8d66e58838 Fix some tests so they test the correct function 2025-12-28 19:32:34 +01:00
Eduardo Sánchez Muñoz c32f2759a3 x86: remove "unsafe" from tests that do not need it
Some test utility functions (e.g., `assert_eq_m128`) have been refactored so they are not unsafe. Many test functions (`test_mm_*`) do not call any unsafe function (besides needing target features) anymore, so they do not need to be `unsafe fn`.
2025-12-26 21:50:27 +01:00
usamoi e9b75fa34a (partially) stablize stdarch_neon_f16 2025-12-20 23:27:19 +08:00
Sayantan Chakraborty 6adebf5685 Merge pull request #1976 from Flakebi/amdgpu-intrinsics
Add amdgpu intrinsics
2025-12-19 20:02:31 +00:00