Commit Graph

2464 Commits

Author SHA1 Message Date
gnzlbg
903492d910 don't run assert_instr on unsupported windows toolchains 2018-11-10 12:30:07 +01:00
gnzlbg
331a5e9941 allow i686-pc-windows-gnu to fail on travis 2018-11-10 12:30:07 +01:00
gnzlbg
7f6fd8f3a0 skip some assert_instr on windows 2018-11-10 12:30:07 +01:00
gnzlbg
64fbf25e53 remove register ordering from fma assert_instr 2018-11-10 12:30:07 +01:00
gnzlbg
2b6de4e98e test windows on travis 2018-11-10 12:30:07 +01:00
gnzlbg
e22d61c901 update to rust nightly (#591) 2018-11-09 12:44:15 -06:00
gnzlbg
9dd384b5c7 update authors and version 2018-11-09 18:35:18 +01:00
Peter Jin
630dd1bf47 Rename llvm.cuda.syncthreads -> llvm.nvvm.barrier0 to keep up with (#589)
changes in LLVM.
2018-11-06 11:44:11 -06:00
gnzlbg
bd36bb317d fix return type of _MM_SHUFFLE from u32 to i32 (#588) 2018-11-05 09:36:55 -06:00
gnzlbg
c6f90494db [breaking change] fixes unsoundness in avx non-temporal store APIs. Closes #575 (#576) 2018-11-02 08:55:48 -05:00
Brian Armstrong
4a0ae6e8cb just load 64 bits with _mm_loadl_epi64 2018-10-29 11:16:40 +01:00
Brian Armstrong
294056c160 no type annotation 2018-10-27 22:23:20 +02:00
Brian Armstrong
8e981b1b12 allow unaligned reads with _mm_loadl_epi64 2018-10-27 22:23:20 +02: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
Alex Crichton
e270a1a737 Fix a doc #[cfg] for wasm 2018-10-09 14:21:24 -07:00
Alex Crichton
de368dce51 Add wasm intrinsics to documentation 2018-10-09 12:30:59 -07:00
Alex Crichton
0e673facfb Add wasm intrinsics to documentation 2018-10-09 20:51:24 +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
fcab62504d expose nvptx in core::arch (#574) 2018-10-02 08:50:45 -07:00
gnzlbg
10a23c8056 Expose NVPTX intrinsics in core::arch 2018-10-02 17:07:05 +02:00
Alex Crichton
31faffa592 Remove lld-shim.rs no longer needed on wasm
Bugs are fixed upstream!
2018-09-17 11:32:10 +02: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
Alex Crichton
b1dad3e46e Add wasm32 atomic intrinsics (#561)
Currently these are gated by the `atomics` feature unconditionally, but that may
be tweaked in the future! Otherwise this should enable building out some
primitives in the standard library using these intrinsics.
2018-09-06 15:23:07 -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
bdf9127d41 Table lookup fixes (#547)
* test table lookup intrinsics with negative indices

* provide table lookup intrinsics only on little endian targets
2018-08-01 18:47:00 -05: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
608265e15d Dual 16-bit Signed Multiply with Addition/Subtraction (#543)
Add support for `smlad` and `smlsd`.

- `smlad`: Dual 16-bit Signed Multiply with Addition and
           32-bit accumulation

- `smlsd`: Dual 16-bit Signed Multiply with Subtraction and
           32-bit accumulation
2018-07-27 10:00:28 -07:00
Luca Barbato
923ed00d4d Add Vector Multiply Even and Vector Multiply Odd (#542) 2018-07-26 17:12:44 -07:00
Luca Barbato
03a4a3ae30 Add more mixed arithmetic instructions (#541)
* Add Vector Multiply Add

* Add Vector Negative Multiply Subtract

* Add Vector Sum Across Partial (1/2) Saturated

* Add Vector Sum Across Partial (1/4) Saturated
2018-07-26 13:43:08 -07:00
Luca Barbato
4db62cdf71 Move the vsx code to powerpc (#538)
Even if it is unlikely to happen the VSX instructions can be executed in
32bit mode just as well.
2018-07-25 19:30:57 -05:00
Luca Barbato
eaa2ea8016 One more instruction and further refinements (#521)
* Add more inline and target_feature decorators

* Add Vector Multiply Low and Add Unsigned Half Word

* Add Vector Multiply Sum
2018-07-25 03:57:14 -05:00
Paolo Teti
80fa53ad7c ARM ARM DSP/SIMD32: Sum of 8-bit absolute differences (#537)
- `usad8`: Sum of 8-bit absolute differences
- `usad8a`: Sum of 8-bit absolute differences and constant (usad8(a, b) + c)
2018-07-24 14:00:28 -05:00
Jorge Aparicio
5fe4272376 generate docs for Cortex-M / Cortex-R intrinsics (#536) 2018-07-24 11:02:33 -05:00
Paolo Teti
c2f7e244d0 ARM DSP: Halving parallel add/sub and multiply add/sub (#535)
* ARM DSP: Add signed halving parallel sub.

Add:

- `shsub8`: Signed halving parallel byte-wise subtraction.
- `shsub16`: Signed halving parallel halfword-wise subtraction.

* ARM DSP: Signed halving parallel additions.

- `shadd8`: Signed halving parallel byte-wise add.
- `shadd16`: Signed halving parallel halfword-wise add.

* ARM DSP: Signed Dual Multiply Add and Signed Dual Multiply Sub.

- `SMUAD`: Signed Dual Multiply Add.
- `SMUADX`: Signed Dual Multiply Add Reversed.
- `SMUSD`: Signed Dual Multiply Subtract.
- `SMUSDX`: Signed Dual Multiply Subtract Reversed.

* ARM DSP: Restrict to Cortex-A and Cortex-R

Restrict everything to Cortex-A/R till We found a better way manage
thumb* targets.

Add 'dox' to generate docs.

* ARM DSP: fix Markdown documentation

Quote '[' and ']' where are not part of the Markdown syntax.
2018-07-23 16:32:05 -05:00
Paolo Teti
8889d6a500 ARM DSP: fix intra_doc_link_resolution_failure (#534)
Escape '[' and ']' used for arrays and not as Markdown syntax
2018-07-23 09:01:48 -05:00
Paolo Teti
8d663bd234 Fix x86 build on latest nightly (#533)
`cargo test --no-run` raise:

```
error[E0432]: unresolved import
  --> crates/coresimd/src/../../../coresimd/x86/rdtsc.rs:62:9
   |
62 |     use coresimd::x86::rdtsc;
   |         ^^^^^^^^^^^^^^^^^^^^
```
2018-07-22 10:58:21 -05: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
Alex Crichton
f1e4ebd8de Fix compile of stdsimd on powerpc with no flags (#531)
We're running into issues updating with rust-lang/rust#52535, so we need to get
this working without `RUSTFLAGS` enabling the `altivec` feature
2018-07-20 11:54:33 -05:00
Jorge Aparicio
15813c3dcd add links to standard, API and implementation to the module level docs 2018-07-19 02:45:51 +02:00