Commit Graph

2485 Commits

Author SHA1 Message Date
gnzlbg
1d1266b185 Readme from std_detect 2019-01-22 18:49:24 +01:00
gnzlbg
d989b154e5 Add README and licenses to core_arch 2019-01-22 18:49:24 +01:00
gnzlbg
e627b1ac4a Update versions of core_arch and std_detect for release 2019-01-22 18:49:24 +01:00
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