Commit Graph

2551 Commits

Author SHA1 Message Date
gnzlbg
d5ef055ba9 Fix building docs for all targets on docs.rs and re-export the arch module 2019-01-30 13:46:41 +01:00
gnzlbg
25197fca7b Update readme and dependencies 2019-01-30 11:27:23 +01:00
gnzlbg
3f07066166 Remove integer_atomics feature gate due to stabilization 2019-01-30 11:27:23 +01:00
gnzlbg
80616364f6 Remove core_arch dev-dependency of std_detect 2019-01-30 11:27:23 +01:00
gnzlbg
72d929bed6 Bump core_arch and std_detect patch version 2019-01-30 11:27:23 +01:00
gnzlbg
3e0f1f754a Update description of core_arch and std_detect 2019-01-30 10:40:16 +01:00
Peter Jin
2c924adce6 Fixes to the nvptx target spec json: disable merge-functions, (#653)
and set the correct datalayout string.
2019-01-25 12:51:13 -07:00
gnzlbg
57fa47d5d3 Fix libcore doc tests 2019-01-24 11:19:06 +01:00
gnzlbg
01ae98c6ac Fix vendor.yml syntax 2019-01-24 10:24:59 +01:00
gnzlbg
bf4710d8fe Add vendored files 2019-01-24 10:22:32 +01:00
Peter Jin
7a64a19e2d Update Travis CI urls. 2019-01-23 23:34:38 +01:00
gnzlbg
af7134fcf1 Do not use Self constructors 2019-01-22 20:11:48 +01:00
gnzlbg
8ebe7deadc Automatically insert emms after running each MMX test
After using MMX intrinsics the FPU must be
cleared by using _mm_empty() before interfacing
with any x87 code.

This commit makes the simd_test macro automatically do that
when one of the features enabled is "mmx".
2019-01-22 19:51:05 +01:00
gnzlbg
5f7006df5a Fix clippy issues 2019-01-22 19:23:32 +01:00
gnzlbg
51e7d81a38 Add instructions for publishing the crates 2019-01-22 18:49:24 +01:00
gnzlbg
691c93f600 Update top-level readme 2019-01-22 18:49:24 +01:00
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