53 Commits

Author SHA1 Message Date
James Barford-Evans
89c9c8ba9c feat - FEAT_LUT neon instrinsics 2025-03-05 14:54:05 +00:00
James Barford-Evans
5ece6ac059 armV7 does not need faminmax flag 2025-03-04 15:50:04 +00:00
James Barford-Evans
24555b5ac1 Add faminmax intrinsics to the skip list 2025-03-04 15:50:04 +00:00
James Barford-Evans
de7f56ff35 Add aarch64_unstable_target_feature and relax instruction assertion 2025-03-04 15:50:04 +00:00
Kajetan Puchalski
3b58340073 intrinsic-test: Print C++ float16_t in hex
Upstream Rust currently does not support printing f16s in decimal.
For the intrinsics tests to work, make C++ print float16_t in the same
format.

Can be droppen once https://github.com/rust-lang/rust/pull/127013
is merged.
2025-02-24 14:22:42 +00:00
Kajetan Puchalski
f4a31fd609 core-arch: Add NEON fp16 intrinsics 2025-02-24 14:22:42 +00:00
Kajetan Puchalski
ed7bf87061 intrinsic-test: Support testing f16 intrinsics 2025-02-24 14:22:42 +00:00
James Barford-Evans
b95fc44d25 fix up yaml & re-generate 2025-02-24 11:04:20 +00:00
James Barford-Evans
2ab46242f0 remove print statment and correct target name 2025-02-24 11:04:20 +00:00
James Barford-Evans
bec322f990 fix test runner for armv7 2025-02-24 11:04:20 +00:00
James Barford-Evans
f4974ae1ed ensure correct linker gets chosen 2025-02-24 11:04:20 +00:00
James Barford-Evans
7294081fda Update test runner to support big endian 2025-02-24 11:04:20 +00:00
Eric Huss
d9ec0157da Format with style edition 2024 2025-02-09 12:57:14 -08:00
Eric Huss
699a872630 Update all crates to Rust 2024 2025-02-09 12:31:33 -08:00
Jacob Bramley
039f322e18 Consistently use the latest itertools. 2025-02-03 21:15:41 +00:00
Yuri Astrakhan
0760ed6ca7 Minor linting 2024-09-30 13:00:24 -04:00
George Wort
2caf80145b Use #[rustc_intrinsic_const_vector_arg] for Neon intrinsics
This allows the constant vector to be passed directly
to LLVM which fixes a few issues where the LLVM intrinsic
expects a constant vector.
2024-08-21 01:18:59 +01:00
Olasunkanmi Olayinka
da09b47285 feat: stabilization for stdarch_aarch64_crc32 2024-05-14 15:52:07 +02:00
Tony Arcieri
153bde14d1 Remove duplicated allow(dead_code) attribute
Accidentally added in #1552
2024-04-13 02:32:07 +02:00
Tony Arcieri
eab9f2d6d9 Stabilize AArch64 SHA3 intrinsics
See also: rust-lang/rust#117225
2024-04-12 14:08:47 +02:00
Luca Barbato
06495b6f45 intrinsic-test: Suppress a warning about dead code 2024-04-10 01:46:00 +02:00
Daniel Paoliello
a00a70eacb arm64ec 2024-03-13 22:30:36 +00:00
eupn
2e8d4ba8c8
Add missing ARM-v7A CRC intrinsics (#1515)
* Move aarch64 crc into arm shared module

* Add missing 32-bit arm crc intrinsics

On 32-bit ARM, this intrinsic emits two instructions and splits its 64-bit input parameter between them.

https://gcc.gnu.org/onlinedocs/gcc-4.9.4/gcc/ARM-ACLE-Intrinsics.html
2024-01-10 12:44:04 +00:00
Amanieu d'Antras
3ac4ba6670 Revert "Work around CI failures for the ARM target"
This reverts commit 5a748ec5fabcaee29351ac3c90eee4f3e16964e7.
2023-11-30 08:20:47 +00:00
Amanieu d'Antras
4fe088329c Work around CI failures for the ARM target
These seem to have been introduced by recent LLVM changes.

* The instruction limit for vld*/vst* has been raised. This is not a
significant issue, it is only used for testing.
* vld*/vst* instructions are generated with overly strict alignments:
https://github.com/rust-lang/stdarch/issues/1217
* vtbl/vtbx instrinsics are failing intrinsic-test for unknown reasons.
2023-11-30 07:48:09 +00:00
Eduardo Sánchez Muñoz
57479f8c9b Remove unneeded borrows 2023-11-18 20:28:46 -08:00
Jacob Bramley
211a00769c Improve intrinsic-test output formatting.
This change is simple, but makes the generated tests much easier to
follow (and debug).
2023-11-17 23:49:21 -08:00
Jacob Bramley
d2736197f7 Add --generate-only to intrinsic-test.
This is useful for debugging.
2023-11-17 23:49:21 -08:00
Jacob Bramley
7f2a7c09ef Fix intrinsic-test author handling.
CARGO_PKG_AUTHORS is :-separated.

Also add myself to intrinsic-test authors.
2023-11-01 14:33:48 +01:00
Jacob Bramley
05afebca4d Clean up intrinsic-test literals.
- Ensure that C literals don't rely on undefined overflow behaviour.
- We don't need to use 'as' casts, so remove them.
- We weren't using allow(overflowing_literals), so remove it.
- Format FP bit values as hex.

This simplifies the test input initialisers in the generated files,
making them shorter and easier to debug.
2023-11-01 14:33:48 +01:00
Jacob Bramley
1970299926 Remove unnecessary unsafety in intrinsic tests.
This fixes "unnecessary `unsafe` block" warnings encountered when
building the generated rust_programs.

The only pattern that actually required `unsafe` was transmuting bit
patterns into floats. This patch uses the safe `from_bits` instead, but
because that isn't const, we have to make them local let-bound
variables.
2023-11-01 14:33:48 +01:00
Jacob Bramley
a76000b6a0 Drop old link from intrinsic-test README.
Now, the README approximately matches the `--help` output.
2023-10-31 02:17:45 +01:00
Amanieu d'Antras
ea27e5cfcb Fix various compilation errors 2023-10-29 20:39:50 +01:00
Amanieu d'Antras
b8ba57f310 Cleanup last uses of the stdsimd feature 2023-10-29 20:39:50 +01:00
Eduardo Sánchez Muñoz
07bbe62ccb Bump itertools to 0.11 2023-10-10 14:47:43 +01:00
Eduardo Sánchez Muñoz
a4cb14940f Bump pretty_env_logger to 0.5 2023-10-10 14:47:43 +01:00
Eduardo Sánchez Muñoz
eef659efee Bump clap to 4.4
Also define args with derive style instead of builder style.
2023-10-10 14:47:43 +01:00
Bruce Mitchener
5c4a950591 docs: Fix warnings and typos.
* Fix typo in HTML tag
* Mark some things with backticks to fix warnings about
  unescaped square brackets.
* Spell "initialize" correctly to fix typos.
2023-07-30 10:57:20 +01:00
Jacob Bramley
0459405ea9 Add more AArch64 vrnd intrinsics.
LLVM can't select float64x1_t variants, but float64x2_t variants work.
2023-06-21 18:52:21 +02:00
Jacob Bramley
a9fecd8456 Support AArch32 Neon dotprod intrinsics.
Note that the feature detection requires a recent Linux kernel (v6.2).
2023-06-21 18:52:21 +02:00
Jacob Bramley
1e15fa3f0a Add support for AArch64 i8mm *dot intrinsics.
This includes vsudot and vusdot, which perform mixed-signedness dot
product operations.
2023-06-21 18:52:21 +02:00
Adam Gemmell
9fc8fd8375 Fix intrinsic-test rejecting the new instructions JSON field 2023-05-16 14:05:52 +02:00
Adam Gemmell
0125fa17c8 Remove ACLE submodule
This involves moving from the ACLE intrinsic definitions (which aren't
available for SVE at this point) to a JSON file. This was derived from
ARM's documentation[^1], and then relicensed under `MIT OR Apache-2.0` for
use in this repository.

[^1]: https://developer.arm.com/architectures/instruction-sets/intrinsics
2023-05-15 17:34:11 +02:00
Jacob Bramley
6e5b949ee7 Check and pass the ACLE licence on to generated tests.
The generated tests are transient, and aren't committed, so this is
primarily a safety check.
2023-01-23 18:58:28 +00:00
Jacob Bramley
4407146bb8 Declare licence for crates/intrinsics-test. 2023-01-23 18:58:28 +00:00
Ruben De Smet
755a95168f
Move vector combine intrisics to arm/neon.rs (#1363) 2022-12-11 18:09:13 +00:00
Yuri Astrakhan
81c221f058
Edition 2021, apply clippy::uninlined_format_args fix (#1339) 2022-10-25 20:17:23 +01:00
James McGregor
893bbdd717 Use load intrinsic and loop for intrinsic-test programs. Add --release flag back to intrinsic-test programs. 2022-08-22 23:46:30 +02:00
Amanieu d'Antras
b25548658a Updates for LLVM 14 on nightly 2022-02-19 20:44:04 +00:00
Frank Steffahn
df24e2a0f8 Fix a bunch of typos 2021-12-14 10:17:43 -08:00