Commit Graph

639 Commits

Author SHA1 Message Date
gnzlbg 8bfa74b5e7 Enable passing allow_failure builds (#644) 2019-01-22 08:57:17 -08:00
gnzlbg 11c624e488 Refactor stdsimd
This commit:

* renames `coresimd` to `core_arch` and `stdsimd` to `std_detect`

* `std_detect` does no longer depend on `core_arch` - it is a freestanding
  `no_std` library that only depends on `core` - it is renamed to `std_detect`

* moves the top-level coresimd and stdsimd directories into the appropriate
  crates/... directories - this simplifies creating crate.io releases of these crates

* moves the top-level `coresimd` and `stdsimd` sub-directories into their
  corresponding crates in `crates/{core_arch, std_detect}`.
2019-01-22 17:04:25 +01:00
gnzlbg 3ca14c6fec Adds _mm_cvtsi32_si64 and _mm_cvsi64_si32 MMX intrinsics 2019-01-22 16:31:15 +01:00
gnzlbg c4983c50d2 Fix android build jobs 2019-01-21 21:37:45 +01:00
gnzlbg cac46058e2 Upgrade serde_xml_rs version 2019-01-21 16:45:12 +01:00
dependabot[bot] cd0995d1e5 Update quickcheck requirement from 0.7 to 0.8
Updates the requirements on [quickcheck](https://github.com/BurntSushi/quickcheck) to permit the latest version.
- [Release notes](https://github.com/BurntSushi/quickcheck/releases)
- [Commits](https://github.com/BurntSushi/quickcheck/commits/quickcheck_macros-0.8.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-01-21 15:18:16 +01:00
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