1027 Commits

Author SHA1 Message Date
Amanieu d'Antras
5161de5da4 Add #![allow(internal_unstable)]
This is required to avoid build failures when using rustc features
intended only for use by the standard library.
2023-08-29 15:21:34 +02:00
zica
9a991c7a67 Fix typo 2023-08-13 10:55:01 +02:00
Bruce Mitchener
b781d20dc8 clippy: unnecessary cast warnings on x86.
The full warning is "casting raw pointers to the same type and constness
is unnecessary"
2023-08-04 00:06:36 +01:00
Bruce Mitchener
02b324c46a clippy: Some simple clippy fixes. 2023-07-30 10:58:50 +01:00
Bruce Mitchener
87276b002c Use #[rustfmt::skip] instead of #[cfg_attr(...)]. 2023-07-30 10:58:20 +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
Amanieu d'Antras
08e8e220fc Remove redundant definitions
Fixes #1446
2023-07-30 08:00:01 +01:00
Amanieu d'Antras
94867fad87 Remove #[target_feature] from const fn 2023-07-29 22:38:57 +01:00
Luca Barbato
9eddada872 Add vec_xl 2023-07-03 20:39:57 +01:00
Luca Barbato
d834f538b4 Add vec_loge 2023-07-03 20:39:57 +01:00
Luca Barbato
34e8658bae Add vec_mfvscr 2023-07-03 20:39:57 +01:00
Luca Barbato
3bdfa0f20e Fix the documentation of vec_ceil 2023-07-03 20:39:57 +01:00
Amanieu d'Antras
cf728faa26 Fix some NEON intrinsics not appearing in standard library docs
This happens because the docs are built for x86_64, see #1345.

Fixes #1444
2023-06-28 21:19:48 +01:00
bjorn3
ecc8d7ccb6 Use const {} for the immediate args of _mm*_cmp_*
Rustc_codegen_cranelift requires immediates to already be constant in
MIR unlike LLVM which only needs them constant after optimizations.
2023-06-23 14:57:54 +02:00
Jacob Bramley
31e17e39c2 Add AArch64 vrnd*_f64 Neon intrinsics.
The LLVM intrinsic doesn't support float64x1_t, but the required
instruction is a scalar form (e.g. `frint32x <Dd>, <Dn>`), so we can
implement these using the scalar intrinsic.

Note that Clang does not support these intrinsics, so they aren't
covered by intrinsic-test. Additional validation is included in this
patch to ensure that we're selecting an instruction with the same
behaviour as the corresponding vector form (which all have
intrinsic-tests).
2023-06-21 18:52:21 +02: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
Kisaragi Marine
4afdd80422 arm(neon): regenerate code 2023-06-20 00:47:34 +02:00
Kisaragi Marine
7b6c185ae3 arm(neon): avoid snippets which triggers unused_paren lint 2023-06-20 00:47:34 +02:00
Amanieu d'Antras
636476bcc1 Remove obscure & rarely used ARM intrinsics
In almost all cases it is preferable to use the stable `asm!` instead of
calling these intrinsics.

This PR removes the following unstable intrinsics:
- `__breakpoint` Clang extension, not part of ACLE.
- `brk`: undocumented
- `_rev*`, `_clz*`, `_rbit*`: use methods on integer types instead
- `__ldrex`, `__strex`: deprecated in ACLE, hard to use correctly
- Register access API: API doesn't match ACLE, better to just use asm

Also considered for deletion, but not included in this PR:
- Barriers: `__isb`, `__dsb`, `__dmb`
- Hints: `__wfi`, `__wfe`, `__sev`, `__sevl`, `__yield`, `__nop`
2023-06-16 16:09:53 +02:00
Scott McMurray
b77fc27aaa Stabilize __m512i, __m512, and __m512d
I didn't include `__m512bh` since `__m128bh` is also unstable.
2023-06-13 22:46:58 +02:00
Jacob Bramley
f480c64fe9 Remove assert_instr exception for AArch64 *cvt*.
The LLVM code generation was improved some time ago.
2023-06-09 00:34:38 +02:00
8051enthusiast
4b9528ec3b Fix documentation for carryless multiplication 2023-05-26 15:21:37 +02:00
Amanieu d'Antras
7586d9dcd1 Fix typo in cfg 2023-05-26 15:20:15 +02:00
Josh Triplett
87c70444d6 Remove ud2 intrinsic (in favor of asm! or abort as needed) 2023-05-25 23:30:24 +02:00
Amanieu d'Antras
01d9b052ea Stabilize AArch64 AES/SHA1/SHA2 intrinsics 2023-05-25 23:29:04 +02:00
Luca Barbato
5ebcf56693 Add vec_splat 2023-05-17 23:16:09 +02:00
Luca Barbato
79a969a616 Add vec_splat_{u,i}{8,16,32} 2023-05-17 23:16:09 +02:00
Adam Gemmell
9fc8fd8375 Fix intrinsic-test rejecting the new instructions JSON field 2023-05-16 14:05:52 +02:00
Adam Gemmell
ba671a06c1 Use arm_intrinsics.json in stdarch-verify 2023-05-15 17:34:11 +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
Luca Barbato
284b9706d0 Add vec_unpackh and vec_unpackl 2023-05-12 11:18:18 +01:00
Luca Barbato
147b864b34 Add vec_packs and vec_packsu 2023-05-12 11:18:18 +01:00
Luca Barbato
76a5034836 Add vec_pack 2023-05-12 11:18:18 +01:00
Luca Barbato
7b080559bb Add vec_mergel and vec_mergeh 2023-05-12 11:18:18 +01:00
Alan Somers
1dcba9edde Implement _mm256_i32scatter_epi64 from AVX512VL 2023-05-08 07:20:40 +01:00
Luca Barbato
bbc8575e9b Add vec_cts and vec_ctu 2023-04-27 13:08:05 -07:00
Luca Barbato
dc115cabbb Add vec_cft 2023-04-27 13:08:05 -07:00
Luca Barbato
94362b595c Split vec_lde tests 2023-04-24 19:02:22 -07:00
Luca Barbato
333d986341 Add vec_ldl 2023-04-24 19:02:22 -07:00
Luca Barbato
9bf9dd4e4d Add vec_lde 2023-04-24 19:02:22 -07:00
Taiki Endo
38c1a16190 std_detect: Do not use libc::getauxval on 32-bit Android
libc crate currently doesn't provide it.
2023-04-24 12:50:27 -07:00
Luca Barbato
e50d4d54b5 Remove the altivec and vsx guards
As mentioned in #1402.
2023-04-23 11:52:27 -07:00
Luca Barbato
cdfd5a2721 Add vec_or, vec_xor, vec_nor 2023-04-22 16:03:22 -07:00
Urgau
5d4192a9d6 Remove useless drop (clippy drop_ref and drop_copy lint) 2023-04-21 06:41:55 -07:00
Jeroen Van Der Donckt
9778c39444 docs: fix unfinished vcgt documentation 2023-04-15 08:12:01 -07:00
Luca Barbato
416fb2e11b Add vec_any_out 2023-04-13 01:54:42 +01:00
Luca Barbato
b27fcf7ba3 Add vec_any_nan, vec_any_nge, vec_any_ngt, vec_any_nle, vec_any_nlt and vec_any_numeric 2023-04-13 01:54:42 +01:00
Luca Barbato
6e78450cb5 Add vec_all_numeric 2023-04-13 01:54:42 +01:00