91 Commits

Author SHA1 Message Date
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
81f0043872 enable wasm-bindgen feature of rand dependency 2019-01-21 13:19:00 +01:00
Alex Crichton
b3aa8524dc
Add ADX-related intrinsics (#631)
Closes #322
2019-01-07 10:04:38 -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
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
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
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
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
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
Greg V
02e0812d12 Add support for feature detection on FreeBSD/aarch64 2018-12-12 16:02:01 +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
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
gnzlbg
c7134ba2bd support never type in stdsimd-verify and white-list ud2 intrinsic 2018-11-11 13:27:09 +01:00
gnzlbg
e375261a1c remove intel_sde feature 2018-11-11 12:37:44 +01:00
gnzlbg
eee3d5e6f0 fix clippy and shellcheck issues 2018-11-11 12:37:44 +01:00
gnzlbg
f31a104c1c formatting 2018-11-11 12:37:44 +01:00
gnzlbg
9dd384b5c7 update authors and version 2018-11-09 18:35:18 +01:00
Kaz Wesley
7fda54f9bc fix _mm_castsi128_pd and _mm_castpd_si128 impls (#581)
* fix _mm_castsi128_pd and _mm_castpd_si128 impls

The _mm_castX_Y SSE intrinsics are "reinterpreting" casts; LLVM's
simd_cast is a "converting" cast. Replace simd_cast with mem::transmute.
Fixes #55249

* Temporarily pin CI

* Fix i686 segfaults

* Fix wasm CI

Output of `wasm2wat` has changed!

* Fix AppVeyor with an older nightly
2018-10-23 18:10:54 +02:00
Gabriel Majeri
f8d3a9a1ee Fix nightly build breakage 2018-10-07 18:54:35 +02:00
Alex Crichton
5bebbe4c4f Remove stabilized feature 2018-10-02 08:51:05 -07:00
gnzlbg
c9afe0e684 only require wasm dependencies when targetting wasm 2018-09-12 19:56:41 +02:00
gnzlbg
1b9d8bb0ef Add environment variable STDSIMD_ASSERT_INSTR_LIMIT to control the instruction limit 2018-09-12 16:34:18 +02:00
Alex Crichton
469af4ef9b
Update to syn 0.15 (#564) 2018-09-06 16:54:14 -07:00
Alex Crichton
274b91093d Tighten wasm-bindgen version dependency
No need to pick up new features right now as it's tied to what we're downloading
in the docker container
2018-09-06 16:43:59 -07:00
Alex Crichton
c1965d33a8
Rename wasm32 memory intrinsics (#560)
The official name of the memory intrinsics has changed to `memory.size` and
`memory.grow`, so let's reflect that with our naming as well! Additionally they
have an argument of which memory to operate on with LLVM and must always be zero
currently.
2018-09-06 15:34:05 -07:00
dependabot[bot]
a5e3c34e3b Update quickcheck requirement from 0.6 to 0.7 (#554)
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/0.7.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-08-27 11:22:33 -07:00
Alex Crichton
bd9f2b6314 Remove declaration of stable attributes 2018-08-27 10:04:25 -07:00
gnzlbg
3daebfbc0b Add wasm32 simd128 intrinsics (#549)
* Add wasm32 simd128 intrinsics

* test wasm32 simd128 instructions

* Run wasm tests like all other tests

* use modules instead of types to access wasm simd128 interpretations

* generate docs for wasm32-unknown-unknown

* fix typo

* Enable #[assert_instr] on wasm32

* Shell out to Node's `execSync` to execute `wasm2wat` over our wasm file
* Parse the wasm file line-by-line, looking for various function markers and
  such
* Use the `elem` section to build a function pointer table, allowing us to map
  exactly from function pointer to a function
* Avoid losing debug info (the names section) in release mode by stripping
  `--strip-debug` from `rust-lld`.

* remove exclude list from Cargo.toml

* fix assert_instr for non-wasm targets

* re-format assert-instr changes

* add crate that uses assert_instr

* Fix instructions having extra quotes

* Add assert_instr for wasm memory intrinsics

* Remove hacks for git wasm-bindgen

* add wasm_simd128 feature

* make wasm32 build correctly

* run simd128 tests on ci

* remove wasm-assert-instr-tests
2018-08-15 09:20:33 -07:00
gnzlbg
dafc8d9fbd remove unused features; formatting 2018-08-14 17:23:01 +02:00
gnzlbg
9cd646f037 update codegen due to LLVM7 upgrade 2018-08-08 18:50:35 +02:00
gnzlbg
e6370ca22a add arm/aarch64 table lookup and vector combine intrinsics (#546) 2018-08-01 08:59:31 -05:00
gnzlbg
82274aadc1 re-format (#544) 2018-07-31 08:03:22 -07:00
Paolo Teti
f0eb5e1b3b ARM DSP: add Quad/Double add/sub with exchange and select bytes intrinsics (#532)
- Quad 8-bit addition/subtraction
- Double 8-bit addition/subtraction
- Saturating Add and Subtract with Exchange and
  Saturating Subtract and Add with Exchange, signed
- Select bytes based on GE bits

This patch bump the `assert_instr` limit to 22 (from 20) instead of
add a lots of exception for all DSP intrinsics.
2018-07-21 10:51:18 -05:00
Paolo Teti
e0504ce54a Add few ARM DSP Intrinsics (#529)
* Add few ARM DSP Intrinsics

- Signed saturating add/sub
- Saturating four 8-bit integer add/sub
- Saturating two 8-bit integer add/sub

The intent is mainly to setup the module and to add all
the rest in the future.

Listed intrinsics are available on Cortex-M too (+dsp is required
on some model except for M4).

* Arm DSP: rebase and remove portable vector types

Rebase everything on top of master since the portable vector types
have been removed.
2018-07-20 11:54:52 -05:00
gnzlbg
faafc284bd remove portable vector types 2018-07-19 00:10:44 +02:00
Alex Crichton
f3cb25b8f9
Fix compile on latest nightly (#527)
The `proc_macro` feature has stabilized in the compiler and usage of it largely
needs to switch to `use_extern_macros` now.
2018-07-17 09:30:18 -05:00
dependabot[bot]
e0752318f7 Update cupid requirement to 0.6.0
Updates the requirements on [cupid](https://github.com/shepmaster/cupid) to permit the latest version.
- [Release notes](https://github.com/shepmaster/cupid/releases)
- [Commits](https://github.com/shepmaster/cupid/commits/v0.6.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-07-06 23:26:44 +00:00
dependabot[bot]
df3fac4bfb Update lazy_static requirement to 1.0
Updates the requirements on [lazy_static](https://github.com/rust-lang-nursery/lazy-static.rs) to permit the latest version.
- [Release notes](https://github.com/rust-lang-nursery/lazy-static.rs/releases)
- [Commits](https://github.com/rust-lang-nursery/lazy-static.rs/commits/v1.0.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-07-06 21:46:33 +00:00
dependabot[bot]
42321c7f4e Update rand requirement to 0.5
Updates the requirements on [rand](https://github.com/rust-lang-nursery/rand) to permit the latest version.
- [Release notes](https://github.com/rust-lang-nursery/rand/releases)
- [Changelog](https://github.com/rust-lang-nursery/rand/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang-nursery/rand/commits/0.5.3)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-07-06 21:26:25 +00:00
gnzlbg
0402aba4be allow dead code in reduction tests 2018-06-26 14:54:07 +02:00
gnzlbg
f72da708eb fix all nursery doc links 2018-06-26 14:03:57 +02:00
gnzlbg
e70ae5558f add CI for Android 2018-06-23 16:09:27 +02:00
gnzlbg
c3d273c980 reformat with latest rustfmt 2018-06-15 14:40:34 +02:00
gnzlbg
f583b31632 fix warnings in reductions tests 2018-06-13 15:23:39 +02:00
gnzlbg
8ce74840ce rename portable float vector's wrapping_{sum,product} to {sum,product} per the RFC 2018-06-06 14:25:33 +02:00
Luca Barbato
4f2eff627e Replace the deprecated TokenStream::empty() with new()
Requires proc-macro2 0.4.4
2018-06-05 17:37:58 +02:00