767 Commits

Author SHA1 Message Date
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
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
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
Luca Barbato
3e90cd9b62 Add vec_all_nle and vec_all_nlt 2023-04-13 01:54:42 +01:00
Luca Barbato
e85dff6489 Add vec_all_nge and vec_all_ngt 2023-04-13 01:54:42 +01:00
Luca Barbato
3b83d68b9a Add vec_all_nan, vec_all_ne and vec_any_ne 2023-04-13 01:54:42 +01:00
Luca Barbato
e17e7243b1 Add vec_all_lt and vec_any_lt 2023-04-13 01:54:42 +01:00
Luca Barbato
8a97475c66 Add vec_all_le and vec_any_le 2023-04-13 01:54:42 +01:00
Luca Barbato
911ee09056 Add vec_all_in 2023-04-13 01:54:42 +01:00
Luca Barbato
0fa72df240 Add vec_all_gt and vec_any_gt 2023-04-13 01:54:42 +01:00
Luca Barbato
24cc2fdb85 Add vec_all_ge and vec_any_ge 2023-04-13 01:54:42 +01:00
Luca Barbato
c587804586 Add vec_all_eq and vec_any_eq 2023-04-13 01:54:42 +01:00
Luca Barbato
2749cfe2ff Move the altivec macros in a stand alone files 2023-04-13 01:54:42 +01:00
Kisaragi
600533dbdc x86: remove unnecessary parens 2023-04-12 21:41:28 +01:00
Jubilee Young
adc506ddaa Clarify undefined can still mean init
These intrinsics actually are zeroing, so we should be upfront
that these still return a valid value in reality. At most,
we might in the future want to use a "freezing" semantics here.
In any case, they are definitely not returning MaybeUninit,
or any other possibly-poison value.
2023-04-11 13:17:42 +01:00
Amanieu d'Antras
c66be336c6 Fix CI 2023-04-08 21:41:40 +01:00
Taiki Endo
1ec5981759 core_arch: Remove uses of arm crypto target feature 2023-04-01 18:42:27 +01:00
Amanieu d'Antras
fbed7945aa Update intrinsic tests for LLVM 16 2023-03-30 15:43:03 +01:00
Luca Barbato
a331bc9512 Fix the powerpc feature guards
Now the documentation should be generated correctly and vsx isn't always
present.
2023-03-25 23:05:16 +01:00
Amanieu d'Antras
fff3c73f11 Mark more arm_shared intrinsics and types as stable in docs
This is a follow-up to #1345 where these appeared as unstable in the
standard library docs because they are only stabilized for ARM. They
were missed in the original PR.
2023-03-24 23:27:24 +01:00
Luca Barbato
e82aebe756 core_arch: Unbreak powerpc64 tests 2023-03-24 23:27:08 +01:00
Taiki Endo
fe04ca5624 core_arch: Update cmpxchg16b docs and fix feature name
- Fix a typo in the feature name
- Update docs to reflect changes in behavior on invalid ordering in
  stabilized PR: invalid ordering is no longer UB, just causes panic as
  well as compare_exchange
2023-03-19 16:09:29 +01:00
Alex Crichton
be861579df wasm32: Add relaxed simd instructions
This commit adds intrinsics to the `wasm32` to support the [relaxed SIMD
proposal][proposal]. These are added with the same naming conventions of
existing simd-related intrinsics for wasm which is similar to the
instruction name but matches sign in a few places.

This additionally updates Wasmtime to execute tests with support for the
relaxed simd proposal. No release has been made yet so this uses the
`dev` release, and I can make a PR in April when the support in Wasmtime
has been released to an official release. The `wasmprinter` crate is
also updated to understand these instruction opcodes as well.

Documentation has been added for all intrinsics, but tests have only
been added for some of them so far. I hope to follow-up later with more
tests.

[proposal]: https://github.com/WebAssembly/relaxed-simd
2023-03-19 16:08:18 +01:00
Kathryn Long
a63313212b Stabilize f16c intrinsics 2023-03-12 20:19:54 +01:00
Amanieu d'Antras
644e8f8900 Replace associated const hacks with inline consts
Fixes #1368
2023-03-05 18:00:21 +01:00
Taiki Endo
c7daba316e Re-add #![feature(target_feature_11)]
We removed this in 307c42fbf4bdfdda2c46fdc1d330cc61d96b5182, but the
stabilization was reverted in https://github.com/rust-lang/rust/pull/108654.
2023-03-05 17:02:26 +01:00
Taiki Endo
169d8d8c48 Fix stable_features warnings
```
warning: the feature `cmpxchg16b_target_feature` has been stable since 1.69.0-nightly and no longer requires an attribute to enable
  --> crates/core_arch/src/lib.rs:24:5
   |
24 |     cmpxchg16b_target_feature,
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
   |
   = note: `#[warn(stable_features)]` on by default

warning: the feature `target_feature_11` has been stable since 1.69.0-nightly and no longer requires an attribute to enable
  --> crates/core_arch/src/lib.rs:34:5
   |
34 |     target_feature_11,
   |     ^^^^^^^^^^^^^^^^^
```
2023-03-01 18:56:19 +01:00
Taiki Endo
a9681a2ca6 Merge core_arch/tests/cpu-detection.rs to std_detect/tests/cpu-detection.rs
Except for the recently added `x86_deprecated` test,
`core_arch/tests/cpu-detection.rs` is a subset of
`std_detect/tests/cpu-detection.rs`.
2023-03-01 18:53:20 +01:00
Kuba Jaroszewski
56faab71f8 Fix typo 2023-02-23 12:51:14 +01:00
Артём Павлов
0301eced58 Update Intel Intrinsics Guide links 2023-02-18 20:34:16 +01:00
bwmf2
1c18225f32 Fix typo 2023-02-18 20:02:17 +01:00
Felix
217a7d106a
update the URL of Intel CPUID reference book (#1376) 2023-02-07 15:17:59 +01:00
Urgau
8048734108 Remove obsolete cfg for nvptx
Following to the compiler MCP 496
(https://github.com/rust-lang/compiler-team/issues/496)
2023-01-22 18:20:30 +00:00
Jacob Bramley
262d7c77bf Don't declare f16c_target_feature.
f16c_target_feature was recently stabilised.

This fixes a warning that results in a CI failure (due to `-D
stable-features`) with current nightly Rust.
2023-01-22 15:38:02 +00:00
Ralf Jung
5afa869e0a use inline const for last simd_shuffle argument 2023-01-10 00:23:14 +00:00
Jacob Bramley
4364634d74 Remove some trailing whitespace. 2023-01-09 15:08:12 +00:00
Jacob Bramley
665e33f3be Match Neon test features to their intrinsics.
The tests can run if and only if the target_features for the
corresponding intrinsics are detected at run-time, so make sure that the
tests have an appropriate `simd_test()`.

This fixes some failures due to tests running when they shouldn't. For
example, some tests would fail on hardware that lacks "fcma".
2023-01-09 15:08:12 +00:00
Jacob Bramley
f966d451b5 Decouple TargetFeature strings.
"arm" and "aarch64" support different sets of `target_feature` and
`simd_test` arguments, and for "arm", the set of features that can be
dynamically detected is different again. Restructure the generator code
to allow this to be expressed accurately (in future patches).

This implementation preserves the way that target features are specified
for shared intrinsics, because this has an impact on the generated
documentation. In particular, rustdoc cannot look inside
`cfg_attr(target_arch = ...)` tests, so we use unconditional
`target_feature` attributes where possible.
2023-01-09 15:08:12 +00:00
Nugine
284e7768c9
Resolve old FIXME comments (#1364) 2023-01-06 11:52:12 +00:00
Nugine
ee060659d9
Stabilize cmpxchg16b instrinsic (#1358)
Resolves https://github.com/rust-lang/stdarch/issues/827
2023-01-05 17:52:56 +00:00