Alex Crichton
f1f513d461
Fix Windows MSVC CI
...
Pass the `/OPT:NOICF` flag to the linker to ensure that all functions don't get
eliminated (somethign we don't want in this scenario)
2017-09-21 09:24:15 -07:00
Alex Crichton
c77c903e88
Help debug missing assembly
2017-09-21 07:32:37 -07:00
gnzlbg
0ab8c0600d
[assert-instr] simplify
2017-09-21 16:14:16 +02:00
gnzlbg
868399bcc4
[appveyor] enable panic backtraces
2017-09-21 13:49:03 +02:00
gnzlbg
4e52b8641a
Merge branch 'master' into runtime_detection
2017-09-21 13:09:46 +02:00
gnzlbg
800b43ec59
[assert-instr] compare only the instruction prefix
...
When comparing the assembly instructions against
the expected instruction, depending on the platform,
we might end up with `tzcntl != tzcnt`. This
commit truncates the instructions to the length
of the expected instruction, such that `tzcntl => tzcnt`
and the comparison succeeds.
2017-09-21 09:34:06 +02:00
gnzlbg
bbeec63f52
[bmi] add some more code-gen tests
2017-09-21 09:07:52 +02:00
gnzlbg
53540f0eee
[arm] bitwise manipulation instructions
2017-09-20 21:53:21 +02:00
gnzlbg
7ac777c523
remove explicit discriminant values
2017-09-20 20:56:33 +02:00
gnzlbg
0dc630020a
[runtime] initial run-time feature detection support
2017-09-20 20:25:37 +02:00
Alex Crichton
124f731ce2
Migrate existing tests to #[assert_instr]
...
Also add some documentation to the assert_instr infrastructure
2017-09-20 10:29:39 -07:00
Alex Crichton
5e8f0e72b5
Merge pull request #28 from alexcrichton/tests
...
Add assertions correct instructions are generated
2017-09-20 12:01:51 -05:00
Alex Crichton
ba7f62715a
Add assertions correct instructions are generated
...
This commit adds a procedural macro which can be used to test instruction
generation in a lightweight way. The intention is that all functions are
annotated with:
#[cfg_attr(test, assert_instr(maxps))]
fn foo(...) {
// ...
}
and then during `cargo test --release` it'll assert the function `foo` does
indeed generate the instruction `maxps`. This only activates tests in optimized
mode to avoid debug mode inefficiencies, and it uses a literal invocation of
`objdump` and some parsing to figure out what instructions are inside each
function. Finally it also uses the `backtrace` crate to figure out the symbol
name of the relevant function and hook that up to the output of `objdump`.
I added a few assertions in the `sse` module to get some feedback, but curious
what y'all think of this!
2017-09-20 09:57:43 -07:00
Dávid Kocsis
fe5d8f939f
SSE4.1 dot product instructions
2017-09-20 12:35:43 -04:00
Mohan Rajendran
9b96985000
Added _mm_unpackhi_ps function ( #16 )
...
Added _mm_unpackhi_ps
2017-09-20 06:50:06 -04:00
gnzlbg
e64f80e479
[abm] use lzcnt and popcnt features
2017-09-19 17:10:00 -04:00
gnzlbg
08a890a0a0
[tbm] check generated code
2017-09-19 17:10:00 -04:00
gnzlbg
59f6e21751
nitpicks, whitespace, etc
2017-09-19 17:10:00 -04:00
gnzlbg
4f1f53b707
[bmi] check assembly of bmi instructions
2017-09-19 17:10:00 -04:00
gnzlbg
cb1db00983
[abm] check generated assembly
2017-09-19 17:10:00 -04:00
gnzlbg
9483950d3e
[bmi2] check generated assembly
2017-09-19 17:10:00 -04:00
gnzlbg
21091b0d71
[bmi] export all intrinsics
2017-09-19 17:10:00 -04:00
gnzlbg
4446e941ed
[bmi] use llvm intrinsics instead of platform-intrinsic
2017-09-19 17:10:00 -04:00
gnzlbg
5c483e3773
[tbm] adds all tbm intrinsics
2017-09-19 17:10:00 -04:00
gnzlbg
c66003d259
[bmi] add module-level docs to bmi and bmi2 modules
2017-09-19 17:10:00 -04:00
gnzlbg
778d55a0bc
[abm] support popcnt and lzcnt
2017-09-19 17:10:00 -04:00
gnzlbg
bf68b58e6b
[bmi2] implement all bmi2 instructions
2017-09-19 17:10:00 -04:00
gnzlbg
14144a3b38
[bmi] implement all bmi1 intrinsics
2017-09-19 17:10:00 -04:00
gnzlbg
ad5ff722de
run tests only in architectures that support them
2017-09-19 17:10:00 -04:00
Paul Masurel
045f931b1a
Implementing _mm_shuffle_epi8. ( #18 )
...
Implementing `_mm_shuffle_epi8`.
2017-09-19 08:55:21 -04:00
Andrew Gallant
c2af1c3fea
update
2017-09-17 19:02:18 -04:00
Andrew Gallant
46ae8c2afd
add contributing guide
2017-09-17 18:46:43 -04:00
Andrew Gallant
81db783a91
0.0.2
2017-09-17 18:11:04 -04:00
Andrew Gallant
edabaf0763
add doc link
2017-09-17 18:10:48 -04:00
Andrew Gallant
baaa64258b
add scratch
2017-09-17 18:09:04 -04:00
Andrew Gallant
b2ac72c2fa
prepare for publish
2017-09-17 18:08:32 -04:00
Andrew Gallant
8f490e5dff
fix
2017-06-19 18:34:32 -04:00
Andrew Gallant
f04dd91c71
add strange example that fails
2017-06-19 18:31:05 -04:00
Andrew Gallant
e975e22c20
refactor
2017-06-19 17:06:53 -04:00
Alex Crichton
1450e641a5
Add bindings for _mm_blendv_epi8
...
Just wanted to test this out!
2017-06-19 16:15:54 -04:00
Alex Crichton
91a4849bba
Add #[inline] to cast methods
...
Avoids function calls in release builds!
2017-06-19 16:01:03 -04:00
Alex Crichton
da7dc55140
Add fmt::LowerHex to integer simd for debugging
...
Helped me locally at least! Curious what you think.
2017-06-19 16:00:50 -04:00
Jack Mott
90a4379f1a
avx2 lhf complete
2017-06-01 07:26:02 -04:00
Jack Mott
59aa3f75ac
Another batch of AVX2 intrinsics ( #4 )
...
add more avx2 intrinsics
2017-05-29 10:36:08 -04:00
Jack Mott
0b760d7e20
Start on AVX ( #3 )
...
start on avx
2017-05-28 16:08:12 -04:00
Jack Mott
15b8068c8b
Start of AVX2 functions ( #2 )
...
start adding avx2
2017-05-28 15:46:54 -04:00
Andrew Gallant
27e307278a
Add 256-bit vectors and some SSE intrinsics.
2017-03-18 15:21:32 -04:00
Andrew Gallant
df03dc4d80
progress
2017-03-14 15:53:20 -04:00
Andrew Gallant
1203e97ac0
progress
2017-03-13 20:56:22 -04:00
Andrew Gallant
52cb807e6e
progress
2017-03-13 20:42:45 -04:00