Commit Graph

451 Commits

Author SHA1 Message Date
Caleb Zulawski
c44a608f5f
Merge pull request #278 from rust-lang/feature/simd-traits
Move element-specific functions to traits
2022-05-31 14:26:30 -04:00
Caleb Zulawski
bca8dec404 Remove incorrect comment 2022-05-22 01:20:28 -04:00
Caleb Zulawski
1cee9304b3 Fix generic_const_exprs feature 2022-05-21 20:08:38 -04:00
Caleb Zulawski
b7fea94c96 Generically implement ToBitMaskArray 2022-05-21 20:02:31 -04:00
Caleb Zulawski
939914e39d
Merge pull request #251 from rust-lang/mask-cast
Add Mask::cast
2022-05-21 17:49:35 -04:00
Caleb Zulawski
c9f4e0ef98 Use Mask::cast in From impl 2022-05-21 16:49:03 -04:00
Caleb Zulawski
aa11959f19 Add mask cast tests 2022-05-21 16:34:27 -04:00
Jubilee Young
98cd636d58 Add Mask::cast 2022-05-21 15:13:33 -04:00
Caleb Zulawski
af53b5de24
rust-lang/portable-simd#279: Silence clippy false alarms 2022-04-25 13:32:56 -07:00
Caleb Zulawski
62d3b2e39c Add Copy bound to SIMD traits 2022-04-16 16:17:43 -04:00
Caleb Zulawski
528bc8593a Improve copysign documentation 2022-04-15 13:47:43 -04:00
Caleb Zulawski
04be48ff97 Add float trait, and seal traits. 2022-04-15 02:11:16 -04:00
Caleb Zulawski
376957ad8c Move integer functions to traits. 2022-04-15 02:00:50 -04:00
Andrew Straw
9718639d61
rust-lang/portable-simd#276: Mention slice methods as_simd() and as_simd_mut()
This links to a practical suggestion for how to solve the issues brought up in this section.
2022-04-11 12:17:44 -07:00
Sean Stangl
fcc5ca0f93
rust-lang/portable-simd#273: Documentation update for reduce functions, swizzle
Working through giving example documentation to every Simd function.

The major change in this patch is using doc macros to generate
type-specific examples for each function, using a visually-apparent type
constructor. This makes it feel nicer to have twelve separate
documentation entries for reduce_product(), for example.
2022-04-10 23:08:34 -07:00
Sean Stangl
7136841cbd
rust-lang/portable-simd#274: Use SIMD equality for PartialEq on SIMD vectors 2022-04-10 23:05:14 -07:00
Jubilee
1ec010db2a
rust-lang/portable-simd#265: Move comparisons to traits
A simpler variant of rust-lang/portable-simd#206.

* Comparisons are moved to `SimdPartialEq`, `SimdPartialOrd`, and `SimdOrd`.  The function names are prefixed with `simd_` to disambiguate from the regular `PartialEq` etc functions.  With the functions on traits instead of `Simd` directly, shadowing the function names doesn't work very well.
* Floating point `Ord`-like functions are put into a `SimdFloat` trait.  The intention is that eventually (some time after this PR) all floating point functions will be moved from `Simd` to `SimdFloat`, and the same goes for future `SimdInt`/`SimdUint` traits.
2022-04-04 10:19:20 -07:00
Jubilee
c2fbead43a
rust-lang/portable-simd#272: Standardize documentation for SIMD vector and mask types
This is a documentation-only patch that standardizes the presentation of vector types like `u32x4` and mask types like `mask32x16`.

The reasoning behind the patch was as follows:
1. Standardized terminology should be preferred, so `element` instead of `value` and `SIMD vector` instead of `vector`. These terms appear in the rest of the documentation and tutorials.
2. Try to avoid situations where two numbers are next to each other. So `16 elements of 32 bits` instead of `16 32-bit elements`.
4. Try to anticipate what readers are looking for -- so state the full bit-width directly.

### Vector Types
- Before: Vector of 32 `i8` values
- After: A 256-bit SIMD vector with 32 elements of type `i8`.

### Mask Types
- Before: Vector of 16 16-bit masks
- After: A mask for SIMD vectors with 16 elements of 32 bits.
2022-04-03 16:17:54 -07:00
Sean Stangl
8cd9325e20 Add a *small* blurb to Mask that is likely unobjectionable 2022-04-03 16:22:31 -06:00
Sean Stangl
21b070ce43 Correct the Mask docs, and get them to fit in search results 2022-04-03 16:15:27 -06:00
Sean Stangl
c73f1fbdde
Update crates/core_simd/src/masks.rs
Co-authored-by: Jacob Lifshay <programmerjake@gmail.com>
2022-04-03 15:59:22 -06:00
Sean Stangl
4e14017f3d Standardize documentation for SIMD vector and mask types 2022-04-03 15:20:00 -06:00
Jubilee
0711e11593
rust-lang/portable-simd#267: fix big-endian bitmasks smaller than a byte 2022-03-21 00:05:38 -07:00
Ralf Jung
35e16a1e06
rust-lang/portable-simd#266: reduce Miri test count in round.rs 2022-03-20 16:17:33 -07:00
Ralf Jung
60555b57f1 fix big-endian bitmasks smaller than a byte 2022-03-17 10:42:39 -04:00
Ralf Jung
50fbfa4eba add bitmask roundtrip test for vector length below 8 2022-03-16 20:28:18 -04:00
Caleb Zulawski
60486e08ed SimdPartialOrd implies SimdPartialEq 2022-03-15 00:17:14 +00:00
Caleb Zulawski
2a02c4d9cb Create SimdFloat trait 2022-03-13 19:57:06 +00:00
Caleb Zulawski
80469c66d6 Move comparisons to SimdPartialOrd and SimdOrd traits 2022-03-13 19:07:36 +00:00
Jubilee
72df4c4505
portable-simd#261: Rename horizontal_* to reduce_* 2022-03-12 15:34:58 -08:00
Ralf Jung
49043f4434
rust-lang/portable-simd#262: also implement clamp for integer vectors
* add test from issue rust-lang/portable-simd#253
2022-03-12 15:32:28 -08:00
Ralf Jung
b6ee5293f4
rust-lang/portable-simd#259: remove Miri from CI 2022-03-11 18:14:52 -08:00
Jacob Lifshay
b6e03f5886 Change beginner's guide to explain Reducing rather than Horizontal. 2022-03-11 16:27:00 -08:00
Jacob Lifshay
c196b8abaa replace horizontal_* with reduce_* 2022-03-11 14:49:06 -08:00
Jorge Leitao
86b9f69622
rust-lang/portable-simd#260: Add .min and .max for integers 2022-03-10 15:12:40 -08:00
Jubilee
89bc660d21 rust-lang/portable-simd#255: run Miri on CI
This is allowed to fail, but might produce useful results to check on.
2022-03-09 12:08:31 -08:00
Ralf Jung
4023d77e39 run Miri on CI (but allowed to fail) 2022-03-09 10:59:28 -05:00
Ralf Jung
adbd47973e reduce number of tests being run under Miri 2022-03-09 07:54:49 -05:00
Jubilee Young
2d13059ae9 Clean up use of cargo feature "std" 2022-03-08 13:36:29 -08:00
Jubilee Young
2e5e0ec380 Remove #![feature(const_fn_trait_bound)] 2022-03-08 13:36:29 -08:00
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
a5789d17bf
rust-lang/portable-simd#248: Remove default features
Now that we are thoroughly embedded in libcore, we don't need these on by default.
Indeed, their presence may provide confusing results during integration attempts.
2022-02-28 19:56:31 -08:00
Jubilee
5f49d4c843
rust-lang/portable-simd#239: Bitmask conversion trait
Another approach that fixes rust-lang/portable-simd#223, as an alternative to rust-lang/portable-simd#238.

This adds the `ToBitMask` trait, which is implemented on a vector for each bitmask type it supports.  This includes all unsigned integers with enough bits to contain it.  The byte array variant has been separated out for now into rust-lang/portable-simd#246 and still requires `generic_const_exprs`, but the integer variants no longer require it and can make it to nightly.
2022-02-26 12:56:23 -08:00
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
6143bdef6d
Merge rust-lang/portable-simd#243 from ./no-overflow-panic
Remove overflow panic from divrem and add basic docs to Simd<T, N>

This finishes normalizing Simd<T, N> to being approximately equivalent to Simd<Wrapping<T>, N> for all implemented operations I can think of. It also documents this fact, allowing this to close rust-lang/portable-simd#56.
2022-02-09 12:46:41 -08:00