Ralf Jung
4ddcc006a9
rust-lang/portable-simd#252 : extern blocks don't have doc comments
2022-03-04 11:14:49 -08:00
Jubilee
30975615b7
rust-lang/portable-simd#250 : Add bitmask i{N <8} -> u8 impls
...
...and copy the notes for why they're legal.
2022-03-01 16:10:49 -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
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
03f6fbb21e
Omit Simd::cast during bootstrap
2022-01-27 10:59:23 -08:00
Jubilee Young
a991d48e95
Add Simd::cast
2022-01-26 18:37:02 -08:00
Caleb Zulawski
138b9cf4bf
Use intrinsic for min/max
2022-01-13 17:59:55 -05:00
Jubilee Young
af26e3b9fd
Tear down and rewrite support for float testing
2021-12-31 14:28:14 -08:00
Jubilee Young
949f71c0dc
Deny warnings in CI and fix
2021-11-10 14:40:32 -08: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 Young
c2f59483f9
Feature-flag fused mul-add to block libcalls
2021-09-21 19:42:31 -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
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
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 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
Caleb Zulawski
f102de7c8b
Add mul_add
2021-06-13 19:59:17 +00:00
miguel raz
d6795814d4
add simd_fsqrt intrinsic
2021-05-18 10:11:37 -05: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
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
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
24ebae870e
Merge pull request #83 from rust-lang/feature/reductions
...
Add reductions
2021-04-22 16:44:41 -07:00
Jubilee Young
9acc112090
Use fabs intrinsic
2021-04-19 04:49:04 +00:00
Jubilee Young
87b7207acd
Use neg intrinsics
2021-04-16 15:02:59 -07:00
Caleb Zulawski
926cf3aba3
Add intrinsics
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
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
Jubilee Young
5424140b66
Add SIMD shuffles for SimdType{2,4,8,16,32,64}
...
This const generic implementation for certain lane sizes represents
a more limited interface than what LLVM's shufflevector instruction
can handle, as normally the length of U can be different from the
length of T, but offers an interface that it is expected to be able
to expand the capabilities of in the future.
2021-02-05 23:28:12 -08:00
Caleb Zulawski
9cc3deaa92
Finish refactoring vector types
2020-12-14 00:00:02 -05:00
Caleb Zulawski
5bc5d7f0d1
Add comparison ops
2020-12-14 00:00:02 -05:00
Jubilee Young
3d9bbf9b86
Use simd_{floor,ceil} intrinsics for round.rs
2020-11-30 19:31:08 -08:00
Caleb Zulawski
3d8721b053
Fix casts, add tests
2020-10-11 14:32:46 -04:00
Caleb Zulawski
43dabd1aea
Implement core::ops
( #10 )
...
* Add vector-vector arithmetic ops
* Add operators and integer conversions for masks
* Add unary traits
* Implement Index and IndexMut
* Implement by-ref ops for masks
* Document intrinsics
* Implement format traits for masks
* Add floating point ops tests
* Add integer tests
* Add mask tests
2020-10-01 19:50:15 -07:00