1513 Commits

Author SHA1 Message Date
usamoi
a355388e26 mark BMI2 intrinsics as safe
Mark all BMI2 intrinsics as safe.

`_mulx_u32` and `_mulx_u64` accepts a reference instead of a pointer.
2025-02-24 14:23:31 +00:00
usamoi
cfbeb3be9c mark BMI1 intrinsics as safe
Mark all BMI1 intrinsics as safe.
2025-02-24 14:23:31 +00:00
usamoi
9913eb5436 mark LZCNT intrinsics as safe
Mark all LZCNT intrinsics as safe.
2025-02-24 14:23:31 +00:00
usamoi
1271b7e281 mark POPCNT intrinsics as safe
Mark all POPCNT intrinsics as safe.

`_mm_popcnt_u32` and `_mm_popcnt_u64` are missing.
2025-02-24 14:23:31 +00:00
usamoi
0db395e703 mark SSE4a intrinsics as safe
Mark all SSE4a SIMD-computing intrinsics as safe, except for those involving memory operations.
2025-02-24 14:23:31 +00:00
usamoi
caafa820b1 mark SSE4.2 intrinsics as safe
Mark all SSE4.2 intrinsics as safe.
2025-02-24 14:23:31 +00:00
usamoi
d12cfd7851 mark SSE4.1 intrinsics as safe
Mark all SSE4.1 SIMD-computing intrinsics as safe, except for those involving memory operations.
2025-02-24 14:23:31 +00:00
usamoi
e801fc4ffd mark SSSE3 intrinsics as safe
Mark all SSSE3 intrinsics as safe.
2025-02-24 14:23:31 +00:00
usamoi
4836ce515e mark SSE3 SIMD intrinsics as safe
Mark all SSE3 SIMD-computing intrinsics as safe, except for those involving memory operations.
2025-02-24 14:23:31 +00:00
usamoi
f6a4a09e27 mark SSE2 SIMD intrinsics as safe
Mark all SSE2 SIMD-computing intrinsics as safe, except for those involving memory operations.
2025-02-24 14:23:31 +00:00
usamoi
74ff8754fd mark SSE SIMD intrinsics as safe
Mark all SSE SIMD-computing intrinsics as safe, except for those involving memory operations.
2025-02-24 14:23:31 +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
7cdc9157e6 core-arch: Add Arm f16 vector types 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
Kajetan Puchalski
78e6b3ede9 stdarch-verify: Support f16 vector types 2025-02-24 14:22:42 +00:00
James Barford-Evans
014fe0b9c1 fix - only use simd_shuffle! on intrinsics that require it 2025-02-24 11:04:20 +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
443d1cdbf0 fix non-working intrinsics 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
James Barford-Evans
d12027810c Remove hand crafted intrinsics that are now generated 2025-02-24 11:04:20 +00:00
James Barford-Evans
3b93df83b2 Update YAML & generated files 2025-02-24 11:04:20 +00:00
James Barford-Evans
f64b610918 Update generator to facilitate big endian 2025-02-24 11:04:20 +00:00
Folkert de Vries
67468b20ff add newly-added s390x features to is_s390x_feature_detected 2025-02-23 23:53:36 +00:00
usamoi
3ac35a7333 mark riscv intrinsics as safe 2025-02-23 23:32:14 +00:00
Folkert de Vries
055daf7b8c start using the newly added target features for testing 2025-02-23 23:21:35 +00:00
Folkert de Vries
d845304ed7 use generic llvm intrinsics for rounding 2025-02-23 23:21:35 +00:00
Folkert de Vries
3e3c523954 simplify the vec_abs implementation 2025-02-23 23:21:35 +00:00
Folkert de Vries
bed15215fb impl VectorMax/Min for vector_float/double
these implementations work with just the vector target feature, but they only get a dedicated instruction in vector-enhancements-1
2025-02-23 23:21:35 +00:00
Folkert de Vries
cefc61d22e implement vec_round and friends 2025-02-23 23:21:35 +00:00
Folkert de Vries
b75bc77065 use simd_neg in the impl crate::ops::Neg
on s390x I had some problems with the old implementation not combining
with other instructions well, and using the purpose-built intrinsic is
just clearer.
2025-02-23 23:21:06 +00:00
Folkert de Vries
2dbc1e9b25 use simd_shuffle in the implementation of vec_splat 2025-02-23 23:21:06 +00:00
Folkert de Vries
1fab09a95c use simd_ctlz instead of an extern 2025-02-23 23:21:06 +00:00
Folkert de Vries
ac92d7d006 use llvm.nearbyint.v4f32 for rounding
see https://godbolt.org/z/Wx1KWezbe to see that these in fact generate equivalent assembly
2025-02-23 23:21:06 +00:00
Folkert de Vries
f6d53388e6 use generic llvm intrinsics for min/max on powerpc 2025-02-23 23:21:06 +00:00
bendn
ae8b7b38aa fix 2025-02-23 23:15:57 +00:00
Nikita Popov
96c609e5f7 Update wasm sub sat intrinsics for LLVM 20
The wasm-specific intrinsics have been removed in
https://github.com/llvm/llvm-project/pull/109405, use the generic
ones instead.
2025-02-19 17:04:36 +00:00
Amanieu d'Antras
3107e07899 Remove target_feature_11 feature which is now stable 2025-02-14 16:40:26 +00:00
Folkert de Vries
d28b3b3eea add vec_nand, vec_nor, vec_eqv, vec_andc and vec_orc 2025-02-13 10:55:13 +00:00
Folkert de Vries
8e6208b18f s390x vector: add vec_and, vec_or and vec_xor 2025-02-13 10:55:13 +00:00
Folkert de Vries
507a298ba9 s390x vector: add vec_cntlz, vec_cnttz and vec_popcnt 2025-02-13 10:55:13 +00:00
sayantn
46fbfe9b09 Add the keylocker intrinsics 2025-02-13 10:54:53 +00:00
sayantn
2a6953d38a Add runtime feature detection for keylocker 2025-02-13 10:54:53 +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
Eric Huss
1d091e3aaa Update documentation for unsafe_op_in_unsafe_fn
For the documentation side, we probably want to show the Rust 2024
style.
2025-02-09 12:31:33 -08:00
Eric Huss
844a604bf0 Allow unsafe_op_in_unsafe_fn
Because stdarch has a really large number of unsafe functions with
single-line calls, `unsafe_op_in_unsafe_fn` would end up adding a lot of
noise, so for now we will allow it to migrate to 2024.
2025-02-09 12:31:30 -08:00