Commit Graph

289 Commits

Author SHA1 Message Date
Jubilee Young
6094f22ceb impl unary.rs for Simd<{i,u}{8,16,32,64,size}, _>
In order to assure type soundness, these "base" impls
need to go directly on Simd<T, _> for every scalar type argument.
A bit of cleanup of ops.rs is still warranted.
2021-12-01 15:40:46 -08:00
Dean Li
861a6e85e1
Add spectral_norm example from packed_simd 2021-11-28 15:19:01 +08:00
Alexander Ronald Altman
b2dac7124b Uncomment AVX512 byte vector conversions
Resolves my comment in #197, at least for now; #187 is pending but since these are already here, just commented, it seemed to make sense to me to re-enable them anyway.
2021-11-26 13:48:52 -08:00
Jubilee Young
ae612100d2 Generically implement horizontal_{and,or,xor} 2021-11-24 08:07:41 -08:00
Jubilee Young
51ff925925 impl assign.rs<U> for Simd<T, _>
Instead of implementing {Op}Assign traits for individual scalar type args
to Simd<_, _>, use parametric impls that reassert the bounds of the binary op.
2021-11-23 18:11:48 -08:00
Jubilee Young
0a6992f5bf impl deref.rs<&Self> for Simd<T, _>
Instead of implementing each "deref" pattern for every single scalar,
we can use type parameters for Simd operating on &Self.
We can use a macro, but keep it cleaner and more explicit.
2021-11-23 18:11:48 -08:00
Jubilee Young
ced3a05526 Attempt to support to 64 lanes 2021-11-23 15:19:01 -08:00
Jubilee Young
f7b0358573 Sprinkle the crate with #[must_use] 2021-11-14 12:11:35 -08:00
Caleb Zulawski
36e198b97a Use new bitmask intrinsics with byte arrays 2021-11-13 13:22:06 -08:00
Jubilee Young
1ce1c645cf Rewrite Arm transmutes, reading std::arch closer 2021-11-12 16:56:14 -08:00
Jubilee Young
6ddf7ad8e1 Restrict Arm types to Arm v7+
This mostly mirrors the restrictions in std::arch.
It can be loosened slightly with later refactoring.
2021-11-11 11:40:18 -08:00
Jubilee Young
949f71c0dc Deny warnings in CI and fix 2021-11-10 14:40:32 -08:00
Jubilee
081240a663
Merge pull request #175 from rust-lang/feature/more-actions
Delete travis config, move tests to github actions.
2021-11-09 20:12:47 -08:00
Caleb Zulawski
349a61143c Delete travis config, move tests to github actions. 2021-11-10 02:18:41 +00:00
Caleb Zulawski
0ecf9871fc
Merge pull request #181 from rust-lang/rotate_lanes
rotate_{left,right} -> rotate_lanes_{left,right}
2021-11-08 23:01:05 -05:00
Proloy Mishra
d2e87281fc
add Simd::from_slice (#177)
* add `Simd::from_slice`

uses a zeroed initial array and loops so that it can be const.
unfortunately, parameterizing the assert with slice length
needs `#![feature(const_fn_fn_ptr_basics)]` to work.
2021-11-08 17:28:43 -08:00
Caleb Zulawski
4e00aa68c7 rotate_{left,right} -> rotate_lanes_{left,right} 2021-11-06 00:34:23 +00:00
Caleb Zulawski
772bf2090e Hide select impl in sealed trait 2021-10-22 00:10:44 -07:00
Caleb Zulawski
7c2d295a76 Hide mask impl details in sealed trait. 2021-10-22 00:10:44 -07:00
Jubilee Young
ab8eec7cba Fixup import pathing for core
This changes simd_swizzle! to a decl_macro to give it a path,
so it can be imported using a path and not the crate root.
It also adds various uses that were missed and adjusts paths.
2021-10-21 18:20:06 -07:00
Caleb Zulawski
5b4282edcd Improve docs 2021-10-11 13:18:59 -07:00
Caleb Zulawski
765bee6362 Update crates/core_simd/src/swizzle.rs
Co-authored-by: Jubilee <46493976+workingjubilee@users.noreply.github.com>
2021-10-11 13:18:59 -07:00
Caleb Zulawski
cd7ecba19f Remove adt_const_params feature 2021-10-11 13:18:59 -07:00
Caleb Zulawski
37797d9c0a simd_shuffle -> simd_swizzle 2021-10-11 13:18:59 -07:00
Caleb Zulawski
98e4fcae5a Fix macro in core
Co-authored-by: Jubilee <46493976+workingjubilee@users.noreply.github.com>
2021-10-11 13:18:59 -07:00
Caleb Zulawski
10168fb7c4 Add new swizzle API
Expand swizzle API and migrate existing functions. Add rotate_left, rotate_right.

Hide implementation details

Add simd_shuffle macro
2021-10-11 13:18:59 -07:00
Jubilee
a16b481a08 Simplify language for scatter/gather
Co-authored-by: Caleb Zulawski <caleb.zulawski@gmail.com>
2021-10-03 14:35:07 -07:00
Jubilee Young
9be26656d2 Rewrite gather/scatter docs
Headings with # Safety and # Examples are more "std style".
Use terms like "enable" and "disable", rather than "mask" jargon.
2021-10-03 14:33:56 -07:00
Jubilee
01e9816ace docs: fix typo gather -> scatter
Co-authored-by: Jacob Lifshay <programmerjake@gmail.com>
2021-10-03 11:04:58 -07:00
Jubilee Young
6d23662689 Add {gather,scatter}_select_unchecked
This unsafe variant allows the thinnest API, in case LLVM cannot
perform loop-invariant code motion on a hot loop when the safe
form is used.

An unchecked variant could be added to other forms, but doesn't
seem likely to improve anything, since it would just add heavier
codegen.
2021-10-03 11:04:58 -07:00
Jubilee
436ca7f7aa
Add lanes() and associated LANES const 2021-09-29 14:19:45 -07:00
Jubilee Young
b506e3e28e Renovate for Edition 2021
In a still-future edition, `unsafe_op_in_unsafe_fn` may error.
Let's get ahead of that.
2021-09-29 14:11:40 -07:00
Magnus Ulimoen
ec05dfbbf9 Add associated LANES const 2021-09-29 17:20:07 +00:00
Magnus Ulimoen
4fbccafc66 Add lanes() 2021-09-29 16:38:03 +00:00
Jubilee Young
afd7c5a5ee Make sure MaskElement is in bitmasks.rs 2021-09-27 15:27:34 -07:00
Jubilee Young
c2f59483f9 Feature-flag fused mul-add to block libcalls 2021-09-21 19:42:31 -07:00
Jubilee Young
6d3d07abfe Feature-flag doc tests so they run for core 2021-09-21 17:19:35 -07:00
Jubilee Young
8342fe75f2 Cleanup more for std::simd also 2021-09-21 10:31:37 -07:00
Jubilee Young
b25ed7f86d Restructure crate as core module
Aligns module with rust-lang/library/core, creating an... unusual
architecture that is easier to pull in as a module, as core itself can
have no dependencies (as we haven't built core yet).
2021-09-18 23:26:10 -07:00
Caleb Zulawski
8cf7a62e5d
Fix cargo features for nightly (#155)
* Fix cargo features for nightly
2021-09-08 17:01:16 -07:00
Jubilee
d42875302d
Merge pull request #154 from rust-lang/feature/generic-element-type
Change vectors to be generic over element type.
2021-08-17 12:10:44 -07:00
Caleb Zulawski
4aafd8e779 Rename element type variable 2021-08-16 16:38:30 -04:00
Caleb Zulawski
cf653c7b93
Update crates/core_simd/src/vector.rs
Co-authored-by: Jubilee <46493976+workingjubilee@users.noreply.github.com>
2021-08-13 20:40:05 -04:00
Caleb Zulawski
00165ed5be Remove mask aliases 2021-08-07 21:22:10 +00:00
Caleb Zulawski
40142ac034 Remove aliases 2021-08-07 21:15:24 +00:00
Caleb Zulawski
275889f7f4 Remove remaining usage of aliases 2021-08-07 21:06:40 +00:00
Caleb Zulawski
f7f29683a8 Remove aliases from most tests 2021-08-07 20:38:41 +00:00
Caleb Zulawski
88f79d4a6f Remove aliases from op trait impls 2021-08-07 20:20:20 +00:00
Caleb Zulawski
5ed57b4c85 Remove most usage of type aliases 2021-08-07 19:28:27 +00:00
Caleb Zulawski
e11286a362 Remove unused transmute file 2021-08-07 16:53:08 +00:00
Caleb Zulawski
e6d95e4798 Implement comparisons generically 2021-08-07 05:47:54 +00:00
Caleb Zulawski
ea0280539c Implement select generically 2021-08-07 05:19:06 +00:00
Caleb Zulawski
de13b20b27 Convert all masks to a single type 2021-08-07 04:30:24 +00:00
Caleb Zulawski
ddc67e3bf2 Remove Mask trait 2021-08-07 01:17:27 +00:00
Caleb Zulawski
8cc38ae292 Remove Vector trait 2021-08-07 01:16:23 +00:00
Caleb Zulawski
dc4dc99649 Change to various generic impls 2021-08-06 03:45:57 +00:00
Caleb Zulawski
054f25f2b0 Convert all vectors to a single type 2021-08-06 02:31:24 +00:00
Caleb Zulawski
50eb35eb3b
Merge pull request #153 from rust-lang/death-of-the-author
Rename to portable-simd and remove other names
2021-08-05 20:49:45 -04:00
Jubilee Young
2acf204b09 Rename to portable-simd and remove other names
Clean up references to the repo's previous name.
Removes the authors field, which is non-obligatory since RFC 3052.
Better to omit than confound: let git log be our witness.
2021-08-04 23:12:23 -07:00
Caleb Zulawski
cca9102429 Change bitmasks to use less opaque type 2021-07-29 04:55:28 +00:00
Caleb Zulawski
34384b7a68 Add const_evaluatable_checked feature, change to_bitmask to use it, and fix existing std feature 2021-07-28 04:19:31 +00:00
Caleb Zulawski
97c25dd746 Add lane count marker type 2021-07-24 17:37:36 +00:00
Caleb Zulawski
f93bef35f3 Move vector implementation 2021-07-24 17:37:36 +00:00
Caleb Zulawski
529ffe05d6 Use new module naming 2021-07-24 17:37:36 +00:00
Caleb Zulawski
fdd7d6e252 Change as_slice to as_array 2021-07-24 17:37:36 +00:00
Caleb Zulawski
f178dda187 Add as_slice/as_mut_slice to Vector 2021-07-24 17:37:36 +00:00
Caleb Zulawski
c077bf3c07 Rename SimdArray to Vector, remove its generic parameter, and remove LanesAtMost32 2021-07-24 17:37:36 +00:00
Caleb Zulawski
732b7edfab
Add fmt and clippy to CI (#147)
* Add fmt and clippy to CI
* Add rust components
* Fix formatting
2021-07-23 17:43:53 -07:00
Caleb Zulawski
be96995d8d
Add portable_simd unstable feature gate (#141) 2021-07-19 16:13:24 -07:00
Caleb Zulawski
3954b27787
Add conversions between vendor intrinsics (#144)
* Add x86 vendor conversions
* Add wasm32 vendor types
* Add arm vendor types
* Add powerpc vendor types
2021-07-19 15:01:28 -07:00
Miguel Raz Guzmán Macedo
ac749a180b
add matrix_inversion example (#131)
* add matrix_inversion example
2021-07-19 14:58:13 -07:00
Adam Greig
871d588ec4
Add 32-bit SIMD types i/u16x2 and i/u8x4. (#145)
These types are useful for the "SIMD32" instructions available on ARMv6
(except M-class), ARMv7 (M-class with DSP), and ARMv8.
2021-07-19 14:18:29 -07:00
Jubilee
b5ba19577f
Merge pull request #139 from rust-lang/feat/gather
Add SimdArray trait and safe gather/scatter API (rust-lang/stdsimd#139)
This PR has four parts, without which it doesn't make a lot of sense:
-    The introduction of the SimdArray trait for abstraction over vectors.
-    The implementation of private vector-of-pointers types.
-    Using these to allow constructing vectors with SimdArray::gather_{or, or_default, select}.
-    Using these to allow writing vectors using SimdArray::scatter{,_select}.
2021-06-23 20:47:51 -07:00
Jubilee
3872723ead
Merge pull request #138 from rust-lang/feature/various-fns
Add various fns
- Sum/Product traits
- recip/to_degrees/to_radians/min/max/clamp/signum/copysign; rust-lang/stdsimd#14
- mul_add: rust-lang/stdsimd#14, fixes rust-lang/stdsimd#102
2021-06-23 14:19:08 -07:00
Jubilee Young
1529ed43d8 Document and test doubled writes in scatter 2021-06-23 12:13:10 -07:00
Jubilee Young
f38659a46c Add assoc const SimdArray::LANES 2021-06-22 15:28:15 -07:00
Jubilee Young
81ceda8c5b Add SimdArray::scatter{,_select} 2021-06-21 18:18:50 -07:00
Jubilee Young
128b6f5e22 Add SimdArray::gather_{or,or_default,select} 2021-06-21 18:10:28 -07:00
Jubilee Young
2f99cc80d8 Add pointer vectors: SimdConstPtr, SimdMutPtr 2021-06-21 16:15:19 -07:00
Jubilee Young
16765a1021 Introduce SimdArray trait
This provides a general framework for describing relationships
between vector types and scalar types.
2021-06-21 16:15:15 -07:00
Caleb Zulawski
b0a9fe5d07 Extract constant from scalar to_radians as well 2021-06-21 21:11:37 +00:00
Caleb Zulawski
708ae61841 Remove scalar Sum/Product over questionable order of operations 2021-06-21 21:08:26 +00:00
Caleb Zulawski
15b4e28004
Add from_bitmask (#136)
* Add from_bitmask
* Add mips workaround
2021-06-21 14:05:43 -07:00
Caleb Zulawski
7b66032ed5 Fix test typo 2021-06-13 20:11:01 +00:00
Caleb Zulawski
f102de7c8b Add mul_add 2021-06-13 19:59:17 +00:00
Caleb Zulawski
74e6262ce4 Add min/max/clamp 2021-06-13 19:47:32 +00:00
Caleb Zulawski
b936f34a5c Add various special functions (recip, signum, copysign) 2021-06-13 18:45:45 +00:00
Caleb Zulawski
96f0f5d29f Implement Sum/Product over references 2021-06-13 18:00:47 +00:00
Caleb Zulawski
bdcccba55c Implement Sum/Product traits 2021-06-13 17:52:44 +00:00
Miguel Raz Guzmán Macedo
57e67c905f
add doctests for shuffle (#130)
* add shuffle doctests/examples
2021-06-11 15:48:44 -07:00
Caleb Zulawski
68393aa594
Add mask width conversion (#127) 2021-06-11 15:48:05 -07:00
Jubilee
4311c0660e
Merge pull request #122 from miguelraz/nbodyexample
nbody example
2021-06-04 09:43:48 -07:00
miguel raz
be121c93ff clean code vis. Jubilee's comments 2021-06-04 10:54:08 -05:00
Miguel Raz Guzmán Macedo
435d1cf7a6
Update crates/core_simd/examples/nbody.rs
Co-authored-by: Jubilee <46493976+workingjubilee@users.noreply.github.com>
2021-06-04 10:40:39 -05:00
miguel raz
c042f33673 clean up code, fudge approx true 2021-06-01 20:05:30 -05:00
miguel raz
70305c5fad add main to avoid CI crash 2021-06-01 19:46:48 -05:00
miguel raz
4e86aeb7f9 finish nbody 2021-06-01 19:31:34 -05:00
miguel raz
5557907098 rewrite unaligned slice, fix output const array 2021-06-01 15:25:56 -05:00
miguel raz
f24110aa5b collapse run_k into run 2021-06-01 12:26:29 -05:00
miguel raz
56050562f1 don't use turbofish on run 2021-06-01 12:15:37 -05:00