Commit Graph

406 Commits

Author SHA1 Message Date
Jacob Lifshay
f7412ad7b9 add workaround comment in Simd::splat 2022-06-06 12:43:29 -07:00
Jacob Lifshay
c9636158d9 Change Simd::splat to not generate a loop
This fixes poor codegen in some circumstances for `u16x8::splat` on x86_64
https://rust-lang.zulipchat.com/#narrow/stream/257879-project-portable-simd/topic/Very.20bad.20.60u16x8.3A.3Asplat.60.20codegen.20on.20x86_64
2022-06-06 12:16:17 -07:00
Caleb Zulawski
f237f133c1
Merge pull request #280 from rust-lang/feature/document-unsafety
Document unsafety
2022-05-31 20:20:00 -04:00
Caleb Zulawski
05c92c73c1 Document remaining internal unsafety, and deny undocumented unsafety 2022-05-31 14:44:23 -04:00
Caleb Zulawski
5e320046ec
Merge pull request #246 from rust-lang/feature/bitmask_array
Add bitmask array
2022-05-31 14:42:34 -04:00
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