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
Jorge Aparicio
e894731ccd
add thumb targets to ci
2018-07-19 02:45:51 +02:00
Jorge Aparicio
438a0f5eeb
add #[assert_instr(...)]
2018-07-19 02:45:51 +02:00
Jorge Aparicio
3c33e3dd3e
add #[target_feature(enable = ...)]
2018-07-19 02:45:51 +02:00
Jorge Aparicio
bdb74ed658
add CMSIS / Cortex-M instrinsics
2018-07-19 02:45:51 +02:00
gnzlbg
1c09cc76c4
LLVM7 generates different machine than LLVM6 for x86/x86_64 targets for some intrinsics. These are new optimizations
2018-07-19 00:10:44 +02: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
Cameron Hart
d89dc542ec
Make _MM_SHUFFLE unstable. ( #524 )
2018-07-14 18:45:51 -05:00
Steve Klabnik
99102f4bcd
fix some doc links ( #520 )
2018-07-11 09:18:28 -05:00
Luca Barbato
8d8d81aa35
Drop the not really supported PowerPC 32bit target
...
The LLVM backend has known issues and even for them the main
development target is PowerPC 64bit Little Endian.
2018-07-11 15:41:07 +02:00
Luca Barbato
77243a10a1
Check the documentation for the supported powerpc64
...
PowerPC 64bit Little Endian is the main development target currently.
2018-07-11 15:41:07 +02:00
Luca Barbato
409f648047
Make the dox.sh more verbose
...
Make easier spot where the errors happen.
2018-07-11 15:41:07 +02:00
Luca Barbato
2260f0af17
Add Vector Multiply Sum Saturated
2018-07-11 15:41:07 +02:00
TheIronBorn
83e5d232ac
add swap_bytes/to_le/to_be ( #517 )
...
* add large shuffle intrinsics
* add swap_bytes/to_le
* add to_be
* more tests
* improve swap_bytes tests
2018-07-10 10:20:52 +02: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
Brandon Falk
625c31200a
Fix PartialEq issue #511
2018-07-02 10:26:51 +02:00
Luca Barbato
22d5f8ca33
Test vec_mradds and not vec_madds
...
Typo introduced in 1d6ccad0136cd1ed97dbb83b4975d8feb6fec059
2018-06-28 09:12:28 +02:00
Luca Barbato
5c00a2b2a4
Add vector multiply round and add saturated
2018-06-28 00:34:14 +02:00
gnzlbg
f55d7be7c9
deprecate read/write eflags ( #494 )
2018-06-27 13:32:11 -05:00
gnzlbg
0402aba4be
allow dead code in reduction tests
2018-06-26 14:54:07 +02:00
gnzlbg
ea6d2b47af
[s390x] Fall back to scalar math for portable floating-point vector operations.
...
I've opened #501 to track the workarounds introduced here.
Closes #498 .
2018-06-26 14:54:07 +02:00
gnzlbg
d5cf70cac5
[s390x] add CI
...
This commit tests `s390x-unknown-linux-gnu` on CI using `qemu-user`.
Closes #499 .
2018-06-26 14:54:07 +02:00
gnzlbg
8287afe0cb
Optimize has_cpuid for x86 Rust targets that have cpuid
...
Improves #497 .
2018-06-26 14:53:57 +02:00
gnzlbg
6fa79873e3
Document what the xcr0 masks do
2018-06-26 14:53:46 +02:00
gnzlbg
a0a6e784fb
fma requires osxsave
2018-06-26 14:53:46 +02:00
gnzlbg
ae64d7a468
Calling xgetbv is safe only if the OS has set osxsave.
...
Closes #500 .
2018-06-26 14:53:46 +02:00
gnzlbg
f72da708eb
fix all nursery doc links
2018-06-26 14:03:57 +02:00
gnzlbg
771dc9fd8e
hoist the and out of the inline assembly
2018-06-25 10:16:15 +02:00
gnzlbg
7affba30a5
use and to test the 21st bit
2018-06-25 10:16:15 +02:00
gnzlbg
d6290b5e88
remove unnecesary unsafe block
2018-06-25 10:16:15 +02:00
gnzlbg
a84c619bf3
remove unnecessary shift
2018-06-25 10:16:15 +02:00
gnzlbg
637541bd83
Use Stephen Checkoway solution
2018-06-25 10:16:15 +02:00
gnzlbg
7e710e7e4a
fix the shift
2018-06-25 10:16:15 +02:00