gwenn
fbd3416f0c
sse3: _mm_hadd_pd
2017-09-30 09:13:18 -04:00
gwenn
dc684dc221
sse3: _mm_addsub_pd
2017-09-30 09:13:18 -04:00
gwenn
fff98467f3
sse3: _mm_addsub_ps
2017-09-30 09:13:18 -04:00
gwenn
b5a28bad22
sse3: _mm_lddqu_si128
2017-09-30 09:13:18 -04:00
Andrew Gallant
dfc7bef6cc
add note about release mode in tests
2017-09-30 08:44:28 -04:00
Dan Robertson
5adea8cc03
Implement the sse4.2 string comparison intrinsics ( #70 )
...
* Docs: Fix typo in module documentation
s/paltform/platform/g
* [x86] Implement sse4.2 string cmp intrinsics
- Implement
- _mm_cmpistrm
- _mm_cmpistri
- _mm_cmpistrz
- _mm_cmpistrc
- _mm_cmpistrs
- _mm_cmpistro
- _mm_cmpistra
- _mm_cmpestrm
- _mm_cmpestrz
- _mm_cmpestrc
- _mm_cmpestrs
- _mm_cmpestro
- _mm_cmpestra
- Add documentation to _mm_cmpestri
- Add missing constants
2017-09-30 07:35:37 +00:00
Vincent Barrielle
44d1343cb0
avx: add _mm256_div_pd, _mm256_div_ps
2017-09-29 11:53:02 -04:00
André Oliveira
d23da170d5
Match clang's code unsigned implementation for consistency
2017-09-29 11:42:27 -04:00
André Oliveira
6a081164bb
Reorder imports
2017-09-29 11:42:27 -04:00
André Oliveira
790087c0fb
Fix 'assert_*' tests by using the single precision instruction
2017-09-29 11:42:27 -04:00
André Oliveira
f2cbe79265
Remove define_from! hack and use mem::transmute directly
2017-09-29 11:42:27 -04:00
André Oliveira
9ad5c4e88a
avx: add vandpd, vandps, vorps and vorpd
...
- HACK Warning: Add from impls for u64x4 <-> f64x4 and f32x8 <-> u32x8
- The 'assert_*' tests for the '*pd' instructions are failing due to llvm always using the single precision ('*ps') variation
2017-09-29 11:42:27 -04:00
Dustin Bensing
e6f343d989
added support for _mm_cvtpd_epi32 / cvtpd2dq
2017-09-28 19:44:32 -04:00
gwenn
d8881bcbc9
ssse3 ( #68 )
...
* SSSE3: _mm_abs_epi16, _mm_abs_epi32, _mm_hadd_epi16
* SSSE3: _mm_hadds_epi16
* SSSE3: assert_instr
* SSSE3: _mm_hadd_epi32
* SSSE3: _mm_hsub_epi16
* SSSE3: _mm_hsubs_epi16
* SSSE3: _mm_hsub_epi32
* SSSE3: _mm_maddubs_epi16
* SSSE3: _mm_mulhrs_epi16
* SSSE3: _mm_sign_epi8
* SSSE3: _mm_sign_epi32
* SSSE3: _mm_sign_epi32
* SSSE3: Fix assert_instr
2017-09-28 14:10:40 -05:00
krampenschiesser
0511ecbaf0
added support for _mm_cvtpd_ps / cvtpd2ps
2017-09-28 12:33:05 -05:00
p32blo
3dba6f3b4d
avx: add vmaxpd, vmaxps, vminpd, vminps
2017-09-28 11:03:25 -05:00
Dan Robertson
fc65913f2f
[x86] Add _mm_cvtps_epi32 (cvtps2dq) function
...
_mm_cvtepi32_ps has been implemented, but _mm_cvtps_epi32 is missing.
Use the implementation of _mm_cvtepi32_ps as a guide for implementing
_mm_cvtps_epi32.
2017-09-28 08:41:11 -04:00
gnzlbg
7e0655e92f
[arm] fix unused unsafe warning
2017-09-28 07:07:34 -04:00
gnzlbg
ffc69c752e
[arm] fix aarch64 cls intrinsic
2017-09-28 06:59:53 -04:00
Alex Crichton
e0176b278f
Mark arm intrinsics as unsafe
2017-09-27 21:41:51 -07:00
Alex Crichton
7063458f30
Touch up some recently added intrinsics
...
* Mark them as `unsafe`
* Mark the tests as `unsafe`
* Leverage the new features of the `#[assert_instr]` macro
2017-09-27 19:44:14 -07:00
Adam Niederer
ddf4512561
Add vroundps, vceilps, vfloorps, vsqrtps, vsqrtpd ( #53 )
...
* Add vroundps, vceilps, vfloorps, vsqrtps, vsqrtpd
* Uninhibit assert_instr on non-expanded intrinsics
Also use the new simd_test macro
* Use simd_test where possible
* Add automated tests for vround*
* Add target_feature guards to automated tests
* Move automated tests below their functions
2017-09-27 21:41:37 -05:00
Andrew Gallant
bd75f7fcac
avx2: add _mm256_movemask_epi8
2017-09-27 12:18:57 -04:00
Andrew Gallant
5cc85000a7
x86: remove remaining wrapper tests
...
This commit switches the remaining "wrapper" tests to assert_instr with
constant parameters. This form of test is necessary when a vendor
intrinsic requires an immediate constant value to optimize properly into
the intended CPU instruction.
2017-09-27 11:03:10 -05:00
Alex Crichton
24f08cd458
Enhance #[assert_instr] with constant arguments
...
Some intrinsics need to be invoked with constant arguments to get the right
instruction to get generated, so this commit enhances the `assert_instr` macro
to enable this ability. Namely you pass constant arguments like:
#[assert_instr(foo, a = b)]
where this will assert that the intrinsic, when invoked with argument `a` equal
to the value `b` and all other arguments passed from the outside, will generate
the instruction `foo`.
Closes #49
2017-09-27 10:32:13 -05:00
Andrew Gallant
25cef3696a
crate: use unsafe in tests
2017-09-27 11:04:23 -04:00
Andrew Gallant
6dfc65289c
x86: add unsafe to all x86 vendor intrinsics
...
Also, add missing assert_instr tests to each intrinsic, where possible.
2017-09-27 11:04:23 -04:00
Andrew Gallant
ff9e960628
arm: add unsafe to target fns
...
This commit only updates one function, _rbit_u32, which conditionally
sets the target feature.
2017-09-27 11:04:23 -04:00
Andrew Gallant
84331e7afb
ci: limit CI to master
...
This prevents duplicating CI on every PR.
2017-09-27 11:04:23 -04:00
Andrew Gallant
91d463b3e1
crate: allow unused features
...
It looks like const_atomic_usize_new is conditionally used?
2017-09-27 11:04:23 -04:00
Alex Crichton
89719a802d
Merge pull request #56 from AdamNiederer/autotest-avx
...
Add assert_instr to the rest of avx.rs
2017-09-26 22:10:41 -05:00
Alex Crichton
fbcf876ce0
Merge pull request #55 from AdamNiederer/addps
...
Add vaddsubps
2017-09-26 22:10:21 -05:00
Alex Crichton
b5c5d82941
Merge pull request #54 from AdamNiederer/vmul
...
Add vmulpd and vmulps
2017-09-26 22:10:03 -05:00
Alex Crichton
9413ec01a7
Don't backtrace failures on windows
2017-09-26 20:03:01 -07:00
Adam
6486b65308
Add assert_instr to the rest of avx.rs
2017-09-26 22:57:32 -04:00
Adam
d3b97d0566
Add vaddsubps
2017-09-26 22:56:10 -04:00
Adam
ecfad658fc
Add vmulpd and vmulps
2017-09-26 22:55:18 -04:00
Alex Crichton
87afb940eb
Fix a test on Windows
2017-09-26 19:14:25 -07:00
Alex Crichton
c201942094
Tweak some test asserts and style
2017-09-26 19:06:44 -07:00
Adam
a01fd615ba
Use new assert_instr
2017-09-26 21:19:02 -04:00
Adam Niederer
d5ed881685
Merge branch 'master' into master
2017-09-26 19:37:59 -04:00
Adam
e1dd2ae43c
Constify vroundpd, add tests for vsubps and vsubpd
...
Tests are still up in the air because of #49 .
2017-09-26 19:36:38 -04:00
Alex Crichton
60fbf44231
Run bmi tests everywhere
2017-09-26 15:55:36 -07:00
Alex Crichton
1d6fbebf11
x86 intrinsics TODO is now in an issue
2017-09-26 15:08:40 -07:00
Alex Crichton
15530322e6
Merge branch 'master' of https://github.com/mohanrajendran/stdsimd
2017-09-26 15:06:44 -07:00
Alex Crichton
6fbab9af44
Add a test for x86 runtime support
...
Make sure we agree with the `cupid` crate
2017-09-26 14:58:41 -07:00
Alex Crichton
2660ba176e
Fix a merge conflict
2017-09-26 14:53:20 -07:00
Alex Crichton
129f7191dd
Merge pull request #44 from alexcrichton/assert
...
Add AVX2 instruction assertiosn
2017-09-26 16:49:51 -05:00
Alex Crichton
b8bcdd93c6
Always test intrinsics unconditionally
...
This commit alters the test suite to unconditionally compile and run all tests,
regardless of the ambient target features enabled. This then uses a new
convenience macro, `#[simd_test]`, to guard all tests with the appropriate
`cfg_feature_enabled!` and also enable the `#[target_feature]` appropriately.
2017-09-26 14:38:58 -07:00
Alex Crichton
1fa49dfe5d
Add AVX2 instruction assertiosn
...
Also a few other assorted modules
2017-09-26 11:12:16 -07:00