Commit Graph

2966 Commits

Author SHA1 Message Date
Folkert de Vries 244fc326f2 Merge pull request #2026 from folkertdev/neon-vpadd
use `intrinsics::simd` for vpadd
2026-02-18 16:18:15 +00:00
Folkert de Vries 6671f95770 use intrinsics::simd for vpadd 2026-02-18 16:54:47 +01:00
Sayantan Chakraborty 9ce60760aa Merge pull request #2028 from folkertdev/f64-vld
use `read_unaligned` for f64 `vld` and `vldq`
2026-02-18 15:50:38 +00:00
Folkert de Vries 57a1974398 neon ld1 2026-02-18 10:03:31 +01:00
Folkert de Vries caff332902 neon ld4 2026-02-18 10:03:31 +01:00
Folkert de Vries 15e68a188c neon ld3 2026-02-18 10:03:31 +01:00
Folkert de Vries 0168f07955 use intrinsics::simd for aarch64 deinterleaving loads 2026-02-18 10:03:31 +01:00
Folkert de Vries dba288e0bd lock stdout when printing a intrinsic test failure 2026-02-18 10:03:31 +01:00
Folkert de Vries 7a43a6e73d Merge pull request #2029 from folkertdev/interleaving-load-store-roundtrip
test interleaving load/store roundtrip
2026-02-18 08:46:24 +00:00
Sayantan Chakraborty 33a9d03873 Merge pull request #2023 from folkertdev/neon-vmull
use `intrinsics::simd` for `vmull_*`
2026-02-17 22:06:34 +00:00
Folkert de Vries 061b5225f4 fix interleaving read/write not roundtripping on aarch64_be 2026-02-17 19:46:49 +01:00
Folkert de Vries 72adcde31d test interleaving load/store roundtrip 2026-02-17 17:22:33 +01:00
Folkert de Vries f3ff080c68 use read_unaligned for f64 vld and vldq 2026-02-17 11:34:02 +01:00
Folkert de Vries 7ce33416af use intrinsics::simd for vmull_* 2026-02-17 00:58:11 +01:00
The rustc-josh-sync Cronjob Bot 6bbe5cc783 Merge ref '139651428df8' from rust-lang/rust
Pull recent changes from https://github.com/rust-lang/rust via Josh.

Upstream ref: rust-lang/rust@139651428d
Filtered ref: rust-lang/stdarch@b1e0e474e1
Upstream diff: https://github.com/rust-lang/rust/compare/db3e99bbab28c6ca778b13222becdea54533d908...139651428df86cf88443295542c12ea617cbb587

This merge was created using https://github.com/rust-lang/josh-sync.
2026-02-16 04:50:28 +00:00
The rustc-josh-sync Cronjob Bot 73cb0682f5 Prepare for merging from rust-lang/rust
This updates the rust-version file to 139651428d.
2026-02-16 04:48:11 +00:00
Folkert de Vries 022d24b34c Merge pull request #1999 from androm3da/main
arch: Add Hexagon HVX instructions
2026-02-15 19:01:37 +00:00
Brian Cain 76c041c19a stdarch-gen-hexagon: Fix formatting 2026-02-15 12:18:19 -06:00
Brian Cain f5161526e6 core_arch: Add tracking issue to hexagon module declaration
Update the unstable attribute for the hexagon module to use the
proper tracking issue number (151523) instead of "none".
2026-02-15 12:13:00 -06:00
Brian Cain 0e08703130 stdarch-gen-hexagon: Use checked-in header file instead of downloading
Check in the LLVM HVX header file (hvx_hexagon_protos.h) from LLVM
22.1.0-rc1 and modify the generator to read from this local copy
instead of downloading it at runtime. This removes the ureq dependency
and makes the build more reproducible.
2026-02-15 11:58:03 -06:00
Brian Cain d6b2cb08a8 examples: Make gaussian build on all targets
Restructure gaussian.rs to follow the pattern used by hex.rs and
connect5.rs.

Remove the 'hexagon' feature gate.
2026-02-15 07:10:55 -06:00
Brian Cain be9dc99118 examples: Use HvxVectorPair for precise Gaussian blur arithmetic
Update the Gaussian 3x3 blur example to use HvxVectorPair widening
operations. This demonstrates that HvxVectorPair intrinsics now work
 correctly with the updated nightly.

- Add #![cfg(target_arch = "hexagon")] crate-level gate
2026-02-15 07:01:00 -06:00
Amanieu d'Antras fcc7e72a46 Merge pull request #2024 from folkertdev/arm-shift-right-and-insert
use `intrinsics::simd` for 'shift right and insert'
2026-02-15 07:18:32 +00:00
Jacob Pratt ef776c603c Rollup merge of #152188 - cuviper:placeholder-stdarch, r=Mark-Simulacrum
Include `library/stdarch` for `CURRENT_RUSTC_VERSION` updates

Our tool `replace-version-placeholder` uses the `tidy` file walker and its
directory filter, but that skips `library/stdarch` which we do need for public
stability markers. This PR adds a local filter function that explicitly allows
that path.

The commit for 1.94 `stdarch` updates is coming from beta rust-lang/rust#152187.
2026-02-14 23:17:40 -05:00
Folkert de Vries 6a12103dda use intrinsics::simd for 'shift right and insert' 2026-02-14 20:28:29 +01:00
Amanieu d'Antras b96ea54109 Merge pull request #2017 from heiher/loong64-sync
loongarch: Sync SIMD intrinsics with C
2026-02-14 15:15:02 +00:00
Brian Cain 5b7ab682b4 examples: Simplify gaussian.rs with cfg gate
Add `#![cfg(target_arch = "hexagon")]`

- Remove redundant #[cfg(target_arch = "hexagon")] from functions
- Simplify import and constant cfg conditions
- Remove non-Hexagon test code branch from main()
2026-02-12 11:41:57 -06:00
Brian Cain 7df6e6799f Update Cargo.lock
Updates cc crate to 1.2.55 which fixes macabi target triple
handling for x86_64-apple-ios-macabi builds.
2026-02-12 10:41:53 -06:00
Brian Cain d2ce1c9c3d stdarch-gen-hexagon: Fix clippy warnings
- Move regex compilations outside loops
- Use Option::map and or_else instead of manual if-let chains
- Use strip_prefix instead of manual starts_with + slice
- Use !is_empty() instead of len() >= 1
- Combine consecutive str::replace calls
2026-02-12 09:34:06 -06:00
Brian Cain 01036ee64e stdarch-gen-hexagon: Remove unused module_name method 2026-02-12 07:54:58 -06:00
Brian Cain eb6bbfa830 examples: Fix rustfmt formatting in gaussian.rs 2026-02-12 07:47:01 -06:00
Brian Cain 736af97d6c examples: Add assertions to gaussian example
Replace print statements with assertions that verify the Gaussian 3x3
blur implementation against the Hexagon SDK reference algorithm.

- Port exact SDK Gaussian3x3u8 implementation from:
  /opt/Hexagon_SDK/.../Examples/HVX/gaussian/src/gaussian.c
- Verify specific output values [15, 16, 17, 18, 19, 20, 21, 22]
  for row 2, cols 1..9 with test pattern ((x + y*7) % 256)
- Assert byte-averaging approximation exactly matches SDK reference
- On Hexagon: verify HVX output matches both scalar approximation
  and SDK reference exactly
2026-02-12 07:33:16 -06:00
Brian Cain 2b710f1a45 Switched to 64b and 128b crate definitions 2026-02-12 07:33:16 -06:00
Brian Cain 0a662d0f72 arch: Add Hexagon HVX instructions 2026-02-12 07:33:16 -06:00
Sayantan Chakraborty 74397dcc68 Merge pull request #2020 from Snehal-Reddy/main
aarch64: Guard RCPC3 intrinsics with target_has_atomic = "64"
2026-02-11 20:40:14 +00:00
Sayantan Chakraborty 3e0724784b Merge pull request #2004 from folkertdev/arm-ld1-read
aarch64: use `read_unaligned` for `vld1_*`
2026-02-10 14:18:57 +00:00
Folkert de Vries dfef1209b1 x86: use intrinsics::simd for masked truncated saturating stores 2026-02-08 22:42:48 +01:00
Josh Stone ec3de4bac5 Replace stdarch version placeholders with 1.94
(cherry picked from commit b90149755a)
2026-02-05 13:41:19 -08:00
Eddy (Eduard) Stefes edeb02f382 disable s390x vector intrinsics if softfloat is enabled
we will add an explicit incompatibility of softfloat and vector feature
in rutsc s390x-unknown-none-softfloat target specification.
Therefore we need to disable vector intrinsics here to be able to compile
core for this target.
2026-02-05 13:36:18 +01:00
Folkert de Vries cfcf20fe90 Merge pull request #2018 from rust-lang/revert-2014-llvm-22-madd
Revert "Revert "Use LLVM intrinsics for `madd` intrinsics""
2026-02-05 09:33:31 +00:00
The rustc-josh-sync Cronjob Bot 32b93d1f94 Merge ref 'db3e99bbab28' from rust-lang/rust
Pull recent changes from https://github.com/rust-lang/rust via Josh.

Upstream ref: rust-lang/rust@db3e99bbab
Filtered ref: rust-lang/stdarch@4749411ab3
Upstream diff: https://github.com/rust-lang/rust/compare/873d4682c7d285540b8f28bfe637006cef8918a6...db3e99bbab28c6ca778b13222becdea54533d908

This merge was created using https://github.com/rust-lang/josh-sync.
2026-02-05 04:37:20 +00:00
The rustc-josh-sync Cronjob Bot 8c404a7649 Prepare for merging from rust-lang/rust
This updates the rust-version file to db3e99bbab.
2026-02-05 04:37:12 +00:00
Snehal 5e5772d11f aarch64: Guard RCPC3 intrinsics with target_has_atomic = "64"
The `vldap1` and `vstl1` RCPC3 intrinsics introduced in standard library unconditionally use `AtomicI64`. This breaks builds on target that do not support 64-bit atomics, such as `aarch64-unknown-none` with `max-atomic-width` set to 0. This commit adds a `#[cfg(target_has_atomic = "64")]` guard to these intrinsics
2026-02-03 16:15:29 +00:00
ltdk 28feae0c87 Move bigint helper tracking issues 2026-02-02 18:45:26 -05:00
Folkert de Vries 54641efc68 add vpmaddwd tests back in 2026-02-02 17:05:35 +01:00
Folkert de Vries 81c0218ae8 aarch64: use read_unaligned for vld1_* 2026-02-02 15:53:56 +01:00
Folkert de Vries f4ce247bc2 Merge pull request #2009 from folkertdev/aarch64-vld1-tests
test the `vld1*` functions
2026-02-02 13:47:28 +00:00
Folkert de Vries 821f139a29 Revert "Revert "Use LLVM intrinsics for madd intrinsics"" 2026-02-02 10:51:20 +01:00
WANG Rui f49a46c7aa loongarch: Sync SIMD intrinsics with C 2026-02-02 14:58:52 +08:00
Folkert de Vries f5540adde9 add test for multiply by one pattern 2026-02-01 16:28:16 +01:00