Caleb Zulawski
20fa4b7623
Make internal mask implementation safe
2022-02-24 18:04:02 -08:00
Caleb Zulawski
11c3eefa35
Manually implement for supported lanes
2022-02-24 18:03:40 -08:00
Caleb Zulawski
842ac87747
Use bitmask trait
2022-02-24 18:02:39 -08:00
Jubilee
78a18c3433
rust-lang/portable-simd#245 : Explain unsafe contracts of core::simd
...
* Explain unsafe contracts of core::simd
This permeates the module with remarks on safety for pub methods,
layout of the Simd type, correct use of intrinsics, et cetera.
This is mostly to help others curious about how core::simd works,
including other Rust contributors, `unsafe` library authors,
and eventually ourselves.
2022-02-10 09:32:44 -08:00
Caleb Zulawski
dddfffcfb3
Add some safety comments
2022-02-09 16:15:01 -08:00
Jubilee
5d52455c65
Review for clarity and concision
...
Co-authored-by: Caleb Zulawski <caleb.zulawski@gmail.com>
2022-02-08 17:43:26 -08:00
Jubilee Young
e628a2991c
Document Simd is Simd<Wrapping<T>, N>
...
and other quirks like panicking
and the equivalence to zipping and mapping binary ops
2022-02-08 15:40:52 -08:00
Jubilee Young
672bfebfd8
Remove overflow panic from divrem
...
Includes some remarks in intrinsics.rs,
generated while auditing the interface for remaining UB.
2022-02-08 15:39:55 -08:00
Jubilee Young
4910274686
Genericize to_int_unchecked
2022-02-03 03:46:16 -08:00
Jubilee Young
ebf65de2ce
Delete outmoded fn round_from_int
2022-02-03 03:46:16 -08:00
Jubilee
01350a222a
Merge portable-simd#203 - deantvv/add-spectral-norm
...
Add spectral_norm example from packed_simd
2022-02-01 23:17:17 -08:00
Jubilee Young
efb20c2d20
Sync rust-lang/portable-simd@03f6fbb21e
2022-01-27 11:23:40 -08:00
Jubilee Young
03f6fbb21e
Omit Simd::cast during bootstrap
2022-01-27 10:59:23 -08:00
Jubilee Young
0031b02cee
Add core_simd/tests/cast.rs
2022-01-26 21:04:47 -08:00
Jubilee Young
a991d48e95
Add Simd::cast
2022-01-26 18:37:02 -08:00
Caleb Zulawski
36cca22f16
Update crates/core_simd/src/vector/float.rs
...
Co-authored-by: Alexander Ronald Altman <alexanderaltman@me.com>
2022-01-24 20:11:17 -05:00
Alec Goncharow
4fc62c2082
fix documentation typo
...
Remove redundant "neither" in the documentation comment.
2022-01-23 16:42:57 -05:00
Jubilee Young
56566d816d
Annotate signed type in int_divrem_guard
...
The way the macro expands, it may sometimes infer
"this is a uint, but doesn't impl Neg???"
Also, I made the "wrong path for intrinsics" error.
These fixes allow integration into libcore.
2022-01-20 19:22:14 -08:00
Jubilee Young
a4f5f01b8a
Use intrinsics for Mask::{to,from}_array
...
This significantly simplifies codegen and should improve mask perf.
Co-authored-by: Jacob Lifshay <programmerjake@gmail.com>
2022-01-19 21:00:21 -08:00
Caleb Zulawski
138b9cf4bf
Use intrinsic for min/max
2022-01-13 17:59:55 -05:00
Caleb Zulawski
65cb2c90a0
Fix mask alias
2022-01-09 13:12:22 -05:00
Jubilee
09fa72ae84
Merge portable-simd#219 - ./std-float
...
impl std::simd::StdFloat
This introduces an extension trait to allow use of floating point methods
that need runtime support. It is *excessively* documented because its mere
existence is quite vexing, as the entire thing constitutes a leakage of
implementation details into user observable space. Eventually the entire
thing will ideally be folded into core and restructured to match the rest
of the library, whatever that structure might look like at the time. This
is preferred in lieu of the "lang item" path because any energy the lang
items require (and it will be significant, by Simulacrum's estimation) is
better spent on implementing our libmvec.
2021-12-31 15:50:20 -08:00
Jubilee Young
af26e3b9fd
Tear down and rewrite support for float testing
2021-12-31 14:28:14 -08:00
Jubilee
4bbef261b6
Merge portable-simd#210 - ./wrap-shifts
...
Refactor ops.rs with wrapping shifts
This approaches reducing macro nesting in a slightly different way. Instead of just flattening details, make one macro apply another. This allows specifying all details up-front in the first macro invocation, making it easier to audit and refactor in the future.
This refactor also has some functional changes. Only one is a true behavior change, however:
- The visible one is that SIMD shifts are now wrapping, not panicking on overflow
- `core::simd` now has a lot more instances of `#[must_use]`, which merely lints
- div/rem now perform a SIMD check but remain as before, which should improve performance but be invisible
2021-12-30 01:22:01 -08:00
Jubilee Young
a42420583b
Use Mask::any in div check
2021-12-23 23:17:13 -08:00
Jubilee Young
bc326a2bbc
Refactor ops.rs with a recursive macro
...
This approaches reducing macro nesting in a slightly different way.
Instead of just flattening details, make one macro apply another.
This allows specifying all details up-front in the first macro
invocation, making it easier to audit and refactor in the future.
2021-12-22 15:37:05 -08:00
Vadim Petrochenkov
35883a7915
Merge commit '533f0fc81ab9ba097779fcd27c8f9ea12261fef5' into psimd
2021-12-17 15:10:53 +08:00
Jubilee Young
533f0fc81a
Use relative intrinsics paths for bitmasks
2021-12-10 22:11:27 -08:00
Jubilee Young
5dcd397f47
Finish refactoring ints in ops.rs
...
This should perform a SIMD check for whether or not we can div/rem,
so that we can panic several times faster!
2021-12-09 13:23:45 -08:00
Jubilee Young
049e8ca7f7
Refactor float arith with #[must_use]
2021-12-08 18:09:46 -08:00
Jubilee Young
8aef340b8b
Refactor bitops with #[must_use]
2021-12-08 18:09:32 -08:00
Jubilee Young
b6d0eec3de
Wrap bitshifts in ops.rs
...
For all other operators, we use wrapping logic where applicable.
This is another case it applies. Per rust-lang/rust#91237 , we may
wish to specify this as the natural behavior of `simd_{shl,shr}`.
2021-12-08 18:08:18 -08:00
Caleb Zulawski
d9f82f9c4d
Remove Select trait
2021-12-04 05:54:15 +00:00
Jubilee Young
af2bc4e3ef
Merge commit 'a8385522ade6f67853edac730b5bf164ddb298fd' into simd-remove-autosplats
2021-12-02 18:27:47 -08:00
Jubilee
a8385522ad
Merge portable-simd#195 - portable-simd:trait-ops
...
Generic `core::ops` for `Simd<T, _>`
In order to maintain type soundness, we need to be sure we only implement an operation for `Simd<T, _> where T: SimdElement`... and also valid for that operation in general. While we could do this purely parametrically, it is more sound to implement the operators directly for the base scalar type arguments and then use type parameters to extend the operators to the "higher order" operations.
This implements that strategy and cleans up `simd::ops` into a few submodules:
- assign.rs: `core::ops::*Assign`
- deref.rs: `core::ops` impls which "deref" borrowed versions of the arguments
- unary.rs: encloses the logic for unary operators on `Simd`, as unary ops are much simpler
This is possible since everything need not be nested in a single maze of macros anymore. The result simplifies the logic and allows reasoning about what operators are valid based on the expressed trait bounds, and also reduces the size of the trait implementation output in rustdoc, for a huge win of 4 MB off the size of `struct.Simd.html`! This addresses a common user complaint, as the original was over 5.5 MB and capable of crashing browsers!
This also carries a fix for a type-inference-related breakage, by removing the autosplatting (vector + scalar binop) impls, as unfortunately the presence of autosplatting was capable of busting type inference. We will likely need to see results from a Crater run before we can understand how to re-land autosplatting.
2021-12-02 17:41:30 -08:00
Jubilee Young
8003b04323
impl Op<&'_ RHS> for &'_ LHS
2021-12-01 15:45:01 -08:00
Jubilee Young
257fa7aa6d
Drop splats for Simd<T, _>
...
Unfortunately, splatting impls currently break several crates.
Rust needs more time to review possible mitigations, so
drop the impls for the `impl Add<T> for Simd<T, _>` pattern, for now.
2021-12-01 15:40:53 -08:00
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
miguel raz
83dc5b782b
don't need clippy
2021-06-01 12:09:11 -05:00
Miguel Raz Guzmán Macedo
3c05ceec70
Update crates/core_simd/examples/nbody.rs
...
Co-authored-by: Jubilee <46493976+workingjubilee@users.noreply.github.com>
2021-05-31 18:03:55 -05:00
Caleb Zulawski
992621844f
Remove extended_key_value_attributes feature
2021-05-26 10:27:16 -04:00
miguel raz
8bea3627cb
replace sum() with horizontal_sum()
2021-05-25 21:25:42 -05:00
miguel raz
ab6af37f8f
Simdf64 from attempt
2021-05-25 20:10:55 -05:00
miguel raz
2591c59ba7
fix imports
2021-05-25 20:07:20 -05:00
miguel raz
e52d51cd45
nbody example
2021-05-25 20:00:01 -05:00
Caleb Zulawski
20c3b8e13f
Merge pull request #120 from miguelraz/simd_fsqrt
...
add simd_fsqrt intrinsic
2021-05-24 19:07:12 -04:00
Caleb Zulawski
1c18f8fd59
Add byte conversions
2021-05-24 15:02:45 -07:00
miguel raz
d6795814d4
add simd_fsqrt intrinsic
2021-05-18 10:11:37 -05:00
Caleb Zulawski
45d7e80aa8
Clarify documentation
2021-05-08 00:13:40 +00:00
Caleb Zulawski
e8cae870fc
Fix rustfmt
2021-05-08 00:11:34 +00:00
Caleb Zulawski
0bf5eb5f72
Add select for masks
2021-05-08 00:07:07 +00:00
Caleb Zulawski
563d2a2cfc
Add select function
2021-05-01 15:21:41 +00:00
Caleb Zulawski
589fce0313
Attempt to workaround MIPS bug
2021-04-30 23:22:27 -07:00
Caleb Zulawski
98dad13526
Make implementation more scalable by using a helper trait to determine bitmask size. Improve bitmask to int conversion.
2021-04-30 23:22:27 -07:00
Caleb Zulawski
eec42808aa
Update bitmask API
2021-04-28 21:56:11 +00:00
Caleb Zulawski
da42aa5403
Begin reducing mask API
2021-04-28 21:56:11 +00:00
Jubilee
5751179dc6
Merge pull request #107 from rust-lang/feat/simd-round
...
Add SIMD rounding intrinsics
2021-04-26 09:05:34 -07:00
Jubilee Young
6ea08d8d5f
Add SIMD round, trunc, fract
2021-04-25 18:31:49 -07:00
Jubilee Young
b4fda6ef06
Give rounding intrinsics their own modules
2021-04-25 18:27:03 -07:00
Jubilee Young
92d643b628
Remove Simd{U,I}128
2021-04-25 16:45:19 -07:00
Jubilee Young
f06427f4d6
Move lanes_at_most_64 to _32
2021-04-25 16:42:49 -07:00
Jubilee Young
91134e614e
Branchless abs
2021-04-25 16:42:49 -07:00
Jubilee Young
e8b6bca694
Finish fixing up abs docs
2021-04-25 16:42:49 -07:00
Caleb Zulawski
1f4e902ee7
Fix saturating math docs
2021-04-25 16:42:49 -07:00
Jubilee
24ebae870e
Merge pull request #83 from rust-lang/feature/reductions
...
Add reductions
2021-04-22 16:44:41 -07:00
Caleb Zulawski
04ee107323
Remove wrapping from sum/product fns
2021-04-22 22:41:12 +00:00
Jubilee
2fa62b91c8
Merge pull request #98 from rust-lang/feature/common-shuffles
...
Add some common shuffles
2021-04-20 23:33:01 -07:00
Caleb Zulawski
7028a58294
Attempt to clarify interleave/deinterleave
2021-04-20 01:51:06 +00:00
Caleb Zulawski
828b274ae7
Rename sum, product to horizontal_{sum,product}
2021-04-19 23:41:11 +00:00
Jubilee Young
9acc112090
Use fabs intrinsic
2021-04-19 04:49:04 +00:00
Caleb Zulawski
1999c54890
Clarify concatenation order
...
Co-authored-by: Jubilee <46493976+workingjubilee@users.noreply.github.com>
2021-04-17 15:21:25 -04:00
Caleb Zulawski
977f26f692
Add some common shuffles
2021-04-17 17:00:14 +00:00
Caleb Zulawski
e73985f25d
Merge pull request #89 from rust-lang/intrinsic-neg
...
Use neg intrinsics
2021-04-16 21:35:11 -04:00
Caleb Zulawski
01d78aa21a
Update docs
2021-04-17 01:32:45 +00:00
Jubilee Young
87b7207acd
Use neg intrinsics
2021-04-16 15:02:59 -07:00
Jubilee Young
e3f0124baf
Silence warnings
2021-04-15 15:19:44 -07:00
Caleb Zulawski
e127586709
Improve function names and docs
2021-04-11 10:59:05 -04:00
Caleb Zulawski
e2fa502617
Enable i586 workaround for both f32 and f64
2021-04-09 16:31:03 -04:00
Caleb Zulawski
3cf970fc09
Fix test sum/product implementation
2021-04-09 16:31:03 -04:00
Caleb Zulawski
3fae09bd08
Revert "Revert i586 fix, fix test instead"
...
This reverts commit 1ea2f128821339d8050ca936f24b71677352437e.
2021-04-09 16:31:03 -04:00
Caleb Zulawski
b51febbd34
Revert i586 fix, fix test instead
2021-04-09 16:31:03 -04:00
Caleb Zulawski
4b8cbd5385
Fix i586 detection
2021-04-09 16:31:03 -04:00
Caleb Zulawski
64f564866b
Update documentation and fix i586 inaccuracy
2021-04-09 16:31:03 -04:00
Caleb Zulawski
02608d44f7
Fix mask ops
2021-04-09 16:31:03 -04:00
Caleb Zulawski
193cd14b4a
Enable special handling of zero
2021-04-09 16:31:03 -04:00
Caleb Zulawski
a7b82adb12
Add tests
2021-04-09 16:31:03 -04:00
Caleb Zulawski
875b31c33f
Implement reductions
2021-04-09 16:31:03 -04:00
Caleb Zulawski
926cf3aba3
Add intrinsics
2021-04-09 16:31:03 -04:00
Caleb Zulawski
d7649f46f3
Various bug fixes
2021-04-09 16:31:03 -04:00
Caleb Zulawski
b0a005dcfb
Add floating-point classification functions
2021-04-09 16:31:03 -04:00
Caleb Zulawski
e6a530907a
Reduce maximum lanes from 64 to 32
2021-04-03 14:43:33 -04:00
Caleb Zulawski
97bbe2d86a
Fix normal and subnormal classification
2021-04-03 13:54:29 -04:00
Caleb Zulawski
07247a001f
Various bug fixes
2021-04-03 13:54:29 -04:00
Caleb Zulawski
93ce1c1a59
Add floating-point classification functions
2021-04-03 13:54:29 -04:00
Jubilee Young
331230fabf
Explain why to use saturation
2021-04-02 09:11:27 -07:00
Jubilee Young
dd1a5e41ad
Add saturating abs/neg
2021-04-02 08:55:45 -07:00
Jubilee Young
4a6b4c0a2e
Introduce saturating math
2021-03-30 17:42:05 -07:00
Caleb Zulawski
fa77b196c8
Add std cargo feature
2021-03-22 14:00:02 -07:00
Caleb Zulawski
8cb1fe0c0e
Fix wasm-bindgen dependency
2021-03-06 22:00:39 -05:00
Jubilee Young
a2302da5b2
Move macros.rs to first.rs
...
This awkwardly has to go first right now, and we don't want more
macros to go into this ambiguously named mod, so let's rename it
to be more literal.
2021-02-21 17:32:23 -08:00
Jubilee Young
39fb223385
Partially carve macros.rs into other files
...
The base impl_vector! in macros.rs is staying put for the moment as
it must go first before everything in order to work.
Everything else, like transmutes, specific type impls, etc. have
been moved into appropriate files elsewhere to subdivide concerns.
2021-02-21 17:32:23 -08:00