908 Commits

Author SHA1 Message Date
Ralf Jung
ef6263d968 do not use const stability attribute when we don't even need to call the intrinsic in const 2023-11-16 15:53:11 -08:00
Jake Goulding
e01a7c2408 Fix copy-paste typos for the _x2 and _x3 vector types 2023-11-16 15:52:37 -08:00
Ralf Jung
3bc20dc71c riscv: remove intrinsics that cannot be used from Rust 2023-11-05 18:28:04 +01:00
Eduardo Sánchez Muñoz
5a4a732762 Avoid unneeded transmutes in generated ARM tests 2023-10-31 17:58:01 +01:00
Eduardo Sánchez Muñoz
c808ba4722 Remove unneeded transmutes in ARM code, except generated tests 2023-10-31 17:58:01 +01:00
Eduardo Sánchez Muñoz
3b2a5e2866 Refactor some loops to avoid indexing 2023-10-31 02:20:17 +01:00
Eduardo Sánchez Muñoz
9f741c5986 Simplify some expressions with pointers and references 2023-10-31 02:20:17 +01:00
Eduardo Sánchez Muñoz
02156819c9 Avoid constans that are too close to PI or TAU 2023-10-31 02:20:17 +01:00
Eduardo Sánchez Muñoz
d2674ea2fe Replace some x >= LO && x <= HI with matches!(x, LO..=HI) 2023-10-31 02:20:17 +01:00
Eduardo Sánchez Muñoz
db57b42188 Change x <= y - 1 to x < y in static_assert_{u,s}imm_bits 2023-10-31 02:20:17 +01:00
Eduardo Sánchez Muñoz
438d00e891 Silence four additional clippy warnings and sort them alphabetically 2023-10-31 02:20:17 +01:00
Eduardo Sánchez Muñoz
fa766fe954 Add #[cfg_attr(miri, ignore)] to tests of functions that cannot be supported by Miri
This includes functions that use inline assemby or that do certains operations such as saving/restoring the processor state.
2023-10-30 00:01:33 +01:00
Eduardo Sánchez Muñoz
8b88fb87b7 Improve _mm_round_ss/_mm_round_sd tests
* Do not use deprecated CSR access functions
* Test different rounding modes
2023-10-30 00:00:49 +01:00
Eduardo Sánchez Muñoz
4f52b00597 Extend _mm_minpos_epu16 test to check case where minimum value is repeated 2023-10-30 00:00:49 +01:00
Eduardo Sánchez Muñoz
46c6fee14e Extend _mm_insert_ps test to check zeroing priority over copying 2023-10-30 00:00:49 +01:00
Eduardo Sánchez Muñoz
88cf134226 Extend _mm_mulhrs_epi16 test to check large values 2023-10-30 00:00:49 +01:00
Eduardo Sánchez Muñoz
e8d5cbd60f Extend _mm_maddubs_epi16 test to check widening and saturating behavior 2023-10-30 00:00:49 +01:00
Eduardo Sánchez Muñoz
c07535ca79 Extend SSSE3 hadd/hsub tests to check overflow behavior (wrapping or saturating) 2023-10-30 00:00:49 +01:00
Eduardo Sánchez Muñoz
0d09b65521 Extend _mm_shuffle_epi8 test to check index wrapping 2023-10-30 00:00:49 +01:00
Eduardo Sánchez Muñoz
d2970f4514 Extend _mm_madd_epi16 test to check cases with large values. 2023-10-30 00:00:49 +01:00
Amanieu d'Antras
ea27e5cfcb Fix various compilation errors 2023-10-29 20:39:50 +01:00
Amanieu d'Antras
3e5850284a Fix more missing/incorrect feature specifications 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
Amanieu d'Antras
941d609570 Add tracking issue for 32-bit ARM DSP instrinsics 2023-10-29 20:39:50 +01:00
Amanieu d'Antras
0352c542d1 Remove ARM udf and dbg intrinsics
These have already been removed for AArch64
2023-10-29 20:39:50 +01:00
Amanieu d'Antras
7de980e124 Add tracking issue for all remaining unstable NEON intrinsics 2023-10-29 20:39:50 +01:00
Amanieu d'Antras
736da66780 Add tracking issue for ARM barrier intrinsics 2023-10-29 20:39:50 +01:00
Amanieu d'Antras
bd54f94098 Add tracking issue for ARM hint intrinsics 2023-10-29 20:39:50 +01:00
Amanieu d'Antras
6bde701fe3 Add tracking issue for AArch64 prefetch intrinsic 2023-10-29 20:39:50 +01:00
Amanieu d'Antras
a70d90d17a Add tracking issue for AArch64 TME intrinsics 2023-10-29 20:39:50 +01:00
Amanieu d'Antras
9a1854b844 Add tracking issue for ARM CRC32 intrinsics 2023-10-29 20:39:50 +01:00
Amanieu d'Antras
1838ada25d Add stability attributes for re-exports of AArch64 NEON intrinsics 2023-10-29 20:39:50 +01:00
Amanieu d'Antras
b10902e788 Fix 'since' in simd_avx512_types stability attribute 2023-10-29 20:39:50 +01:00
Amanieu d'Antras
bde97f485d Fix stability attributes for ARM crypto intrinsics 2023-10-29 20:39:50 +01:00
Amanieu d'Antras
1dcafa2caf Add tracking issue for ARM NEON instructions 2023-10-29 20:39:50 +01:00
Amanieu d'Antras
ed25ca9875 Add tracking issue for NVPTX intrinsics 2023-10-29 20:39:50 +01:00
Amanieu d'Antras
39c6d6af13 Add tracking issue for MIPS intrinsics 2023-10-29 20:39:50 +01:00
Amanieu d'Antras
ead4834277 Add tracking issues for WebAssembly 2023-10-29 20:39:50 +01:00
Amanieu d'Antras
676ad64cae Add tracking issue for _MM_SHUFFLE 2023-10-29 20:39:50 +01:00
Amanieu d'Antras
04ab1c04b1 Check for missing stability attributes when building outside core 2023-10-29 20:39:50 +01:00
Amanieu d'Antras
ef2c441c81 Add tracking issue for PowerPC intrinsics 2023-10-29 20:39:50 +01:00
Amanieu d'Antras
5f29166d6a Add tracking issue for RISC-V intrinsics 2023-10-29 20:39:50 +01:00
Amanieu d'Antras
3243b5b41f Revert accidental stabilization of _mm512_storeu_ps 2023-10-29 20:39:50 +01:00
Amanieu d'Antras
ef968b89fe Add tracking issue on has_cpuid 2023-10-29 20:39:50 +01:00
Amanieu d'Antras
3c7af52600 Add stability attributes on x86 re-exports 2023-10-29 20:39:50 +01:00
Amanieu d'Antras
7c238335ea Add tracking issue for RTM 2023-10-29 20:39:50 +01:00
Amanieu d'Antras
ca55a52eba Add tracking issue for AVX-512 2023-10-29 20:39:50 +01:00
Amanieu d'Antras
7f5fd0955a Disable NEON intrinsics on big-endian ARM
These are currently broken because the order of elements inside
vectors is reversed on big-endian systems: the ARM ABI requires that
element 0 is located at the highest address of the vector type. However
LLVM intrinsics expect element 0 to be located at the lowest address.

See https://llvm.org/docs/BigEndianNEON.html and `arm_neon.h` in
Clang for more details.

Although this is a breaking change, this is acceptable for 2 reasons:
- big endian ARM targets are only tier 3.
- it is preferable to stop existing code from compiling than to let it
run and produce incorrect results.
2023-10-21 16:29:18 +02:00
Eduardo Sánchez Muñoz
45f28923ce Fix UB in _mm_movemask_ps, _mm_movemask_pd, _mm256_movemask_ps and _mm256_movemask_pd
The `simd_bitmask` intrinsic requires each element to be all-1 or all-0, while the x86 functions only check for the highest bit.
2023-10-12 08:37:29 +02:00
Eduardo Sánchez Muñoz
b2c5bc9696 Remove unneeded transmutes
(or replace them with safe versions)
2023-10-11 18:11:51 +02:00