776 Commits

Author SHA1 Message Date
gnzlbg
3006f2f781 Add MMX _mm_empty and _m_empty intrinsics 2019-01-21 15:18:05 +01:00
gnzlbg
81f0043872 enable wasm-bindgen feature of rand dependency 2019-01-21 13:19:00 +01:00
Guillaume Gomez
0c3a513a40 add missing docs (#635) 2019-01-08 08:38:54 -06:00
Alex Crichton
b3aa8524dc
Add ADX-related intrinsics (#631)
Closes #322
2019-01-07 10:04:38 -06:00
Guillaume Gomez
78d02bca36 Add missing docs (#633) 2019-01-07 09:11:11 -06:00
Alex Crichton
cb4bb2961d
Remove usage of platform-intrinsics where unadjusted works (#630)
As suggested [here]!

[here]: https://github.com/rust-lang/rust/pull/57048#issuecomment-449773525
2019-01-04 16:30:46 -06:00
Alex Crichton
3c81dc46ac Add stage0 guard for cmpxchg16b 2019-01-02 10:01:39 -08:00
Alex Crichton
9c4e418fe0 Add a x86_64::cmpxchg16b intrinsic
This intrinsic isn't actually specified by Intel, but it's something
gated with CPUID and can otherwise be a useful thing to have when
building primitives!

There exists an `AtomicU128` type in the standard library but it's only
exposed currently (and it's unstable) when a platform fully supports
128-bit atomics. The x86_64 architecture does not support it *unless*
the `cmpxchg16b` instruction is available, and it isn't always available!

This commit is also a proposal for how we can include support for
128-bit atomics in the standard library on relevant platforms. I'm
thinking that we'll expose this one low-level intrinsic in
`std::arch::x86_64`, and then if desired a crate on crates.io can build
`AtomicU128` from this API.

In any case this is all unstable regardless!
2019-01-02 16:55:53 +01:00
Peter Jin
d30c29e926 Add a build libcore-only nvptx64 test (using xargo).
This also disables the "integer_atomics" feature on nvptx/nvptx64.
2018-12-29 12:02:16 +01:00
Ralf Jung
efc7d648c6 avoid deprecated mem::zeroed 2018-12-28 10:32:07 +01:00
Guillaume Gomez
795eda878c Add missing docs 2018-12-22 12:32:09 +01:00
Alex Crichton
9ab261c3d7
Implement automatic verification for ARM/AArch64 intrinsics (#626)
This commit implements automatic verification of implement ARM/AArch64
intrinsics. Or it's at least a start! This downloads a snapshot of ARM's
[online documentation][docs] and implements necessary logic to parse
that and use it to verify all the intrinsics. Almost everything
checked out A-OK but a few minor tweaks were needed to the neon
intrinsics and the crc ones needed some renaming.

[docs]: https://developer.arm.com/technologies/neon/intrinsics
2018-12-20 14:11:26 -06:00
Alex Crichton
10d166db0e Get stdsimd working in stage0 2018-12-17 13:39:55 -08:00
Alex Crichton
f8f878b61b Match clang for _mm512_abs_epi32 intrinsics
This commit updates stdsimd's codegen to match Clang's for the
`_mm512_abs_epi32` intrinsic (and masked versions) which doesn't use any
LLVM intrinsic calls, but rather raw SIMD operations.

These are built on top of the new `simd_select_bitmask` intrinsic
introduced recently to the compiler!
2018-12-15 10:03:14 +01:00
Alex Crichton
4424a25921 Disable Windows on Travis
The MinGW builds already don't work and the MSVC ones are now timing out
and have been slow otherise, so they're being removed to reduce spurious
failures on Travis.
2018-12-14 12:45:19 -08:00
Alex Crichton
ee0472520c Rerun rustfmt 2018-12-14 12:44:51 -08:00
Alex Crichton
dfc233c613 Remove usage of deprecated functions 2018-12-14 12:12:26 -08:00
Alex Crichton
24b3977f6a
Run multithreaded quiet tests (#622)
We historically have run single-threaded verbose tests because we were
faulting all over the place due to bugs in rustc itself, primarily
around calling conventions and passing values around. Those bugs have
all since been fixed so we should be clear to run multithreaded tests
quietly on CI nowadays!

Closes #621
2018-12-14 13:28:23 -06:00
Alex Crichton
67f8ed0bf4
Start adding some avx512 intrinsics (#618)
First one is the quite simple `_mm512_abs_epi32` intrinsic!
2018-12-14 09:44:26 -06:00
Alex Crichton
cb921381c4
Rewrite simd128 and wasm support (#620)
* Update representation of `v128`
* Rename everything with new naming convention of underscores and no
  modules/impls
* Remove no longer necessary `wasm_simd128` feature
* Remove `#[target_feature]` attributes (use `#[cfg]` instead)
* Update `assert_instr` tests
* Update some implementations as LLVM has evolved
* Allow some more esoteric syntax in `#[assert_instr]`
* Adjust the safety of APIs where appropriate
* Remove macros in favor of hand-coded implementations
* Comment out the tests for now as there's no known runtime for these
  yet
2018-12-13 20:17:30 -06:00
Alex Crichton
591ce8fe6f Add retries to a number of downloads 2018-12-13 15:30:17 -08:00
Alex Crichton
5a45175fe1
Run rustfmt on stable, delete rustfmt.toml (#619)
This commit switches CI to running `rustfmt` on the stable compiler (as
rustfmt is stable now!). Additionally it deletes `rustfmt.toml` to
ensure we're following the same style as the rest of the ecosystem.
2018-12-13 17:26:22 -06:00
Alex Crichton
80a3099792 Another fix for wasm example 2018-12-12 13:02:58 -08:00
Alex Crichton
0bd85b5711
Rename the wasm atomic intrinsics (#617)
This commit renames the atomic intrinsics for wasm and tweaks them to
match the new naming convention of the memory intrinsics. Apart from
naming the `wake` intrinsic was renamed to `atomic_notify` (reflecting
the upstream rename) as well as updating to take/return unsigned
arguments, also reflecting the upstream spec changes.
2018-12-12 15:02:18 -06:00
Alex Crichton
0e1658b014 Fix wasm example 2018-12-12 12:41:24 -08:00
Alex Crichton
f5c276bf2b
Add definitions for AVX-512 types on x86 (#616)
These aren't actually used anywhere yet, but this is likely a first step
in any world! Also note that these types are unstable currently.
2018-12-12 14:41:00 -06:00
Nikolai Vazquez
6624bad4d8 Derive Debug for CpuidResult (#615) 2018-12-12 10:44:41 -06:00
Greg V
02e0812d12 Add support for feature detection on FreeBSD/aarch64 2018-12-12 16:02:01 +01:00
Alex Crichton
6bea399766
Stabilize wasm32 memory-related intrinsics (#613)
This commit stabilizes the wasm32 memory-related intrinsics, as
specified in rust-lang/rust#56292. The old intrinsics were removed and
the current intrinsics were updated in place, but it's the last breaking
change!
2018-12-10 11:53:16 -08:00
myfreeweb
d39cc0f3cb Add AArch64 CRC32 intrinsics (#612) 2018-12-08 11:45:09 -05:00
gnzlbg
847985c8b8 reformat 2018-11-29 13:22:24 +01:00
Alex Crichton
2ededbb71f Fix build of documentation in libstd
Ensure we've always got a macro defined!

Closes #603
2018-11-29 13:21:32 +01:00
Alex Crichton
af99d5984c Fix a copy/paste error on wasm32 2018-11-28 10:38:01 +01:00
gnzlbg
900fa0261a Update x86 codegen 2018-11-27 12:09:33 +01:00
gnzlbg
4a582fe37e Remove all usages of mem::uninitialized 2018-11-22 15:13:10 +01:00
gnzlbg
47286d6c06 formatting 2018-11-22 13:45:03 +01:00
gnzlbg
339bc65b61 allow x86_64-pc-windows-gnu 2018-11-22 13:45:03 +01:00
Jethro Beekman
ab8e222e09 Fix build when used as a submodule 2018-11-19 19:24:01 +01:00
dependabot[bot]
7d16e6a216 Update rand requirement from 0.5 to 0.6
Updates the requirements on [rand](https://github.com/rust-random/rand) to permit the latest version.
- [Release notes](https://github.com/rust-random/rand/releases)
- [Changelog](https://github.com/rust-random/rand/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-random/rand/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-11-19 14:51:42 +01:00
Jethro Beekman
25c30821af Add SGX target 2018-11-19 13:01:17 +01:00
gnzlbg
271faf05b8 do not validate the argument to the __breakpoint intrinsic 2018-11-11 14:30:09 +01:00
Jorge Aparicio
3bf788b48d aarch64 support and range validation 2018-11-11 14:30:09 +01:00
Jorge Aparicio
c6b1b4281c fix typo 2018-11-11 14:30:09 +01:00
Jorge Aparicio
4abc2de5f4 fix assert_instr test 2018-11-11 14:30:09 +01:00
Jorge Aparicio
7e2442c884 remove TODO; add link to doc comment 2018-11-11 14:30:09 +01:00
Jorge Aparicio
8c14c223c1 add __breakpoint
this is an ARM compiler specific intrinsic which can be used to implement
CMSIS's __BKPT intrinsic
2018-11-11 14:30:09 +01:00
gnzlbg
c7134ba2bd support never type in stdsimd-verify and white-list ud2 intrinsic 2018-11-11 13:27:09 +01:00
gnzlbg
9ab2d41b8a remove extraneous import 2018-11-11 13:27:09 +01:00
Jorge Aparicio
b9c701e880 remove assert_instr from nvptx
it doesn't do the right thing
2018-11-11 13:27:09 +01:00
Jorge Aparicio
80067f6e56 add the trap instrinsic 2018-11-11 13:27:09 +01:00