# Portable SIMD 2022-01-31 Meeting
###### tags: `Portable SIMD` `Minutes`
[Last Meeting] | [This Meeting's Chat] | [Next Meeting]
<!-- [Last Meeting]: -->
[This Meeting's Chat]: https://rust-lang.zulipchat.com/#narrow/stream/257879-project-portable-simd/topic/Meeting.202022-01-31
<!-- [Next Meeting]: -->
## Agenda
- Latest sync + libm story update from Jubilee
- Notable additions: `std::simd::StdFloat`
- Was originally opened as https://github.com/rust-lang/rust/pull/91891
- Then work was added upstream at https://github.com/rust-lang/portable-simd/pull/219
- PR reopened as a sync PR: https://github.com/rust-lang/rust/pull/93146
- Now only waiting on ~~review~~ bors!
- Includes `Simd::cast` (which uses `simd_as`), thanks @calebzulawski!
- Re-adding "autosplats"
- Request to add for Shl/Shr in https://github.com/rust-lang/portable-simd/issues/225
- Inference failure issues:
- https://github.com/rust-lang/rust/issues/90904
- https://github.com/rust-lang/rust/issues/91872
- Inference failures seem to be with `ops::{Add, Mul, Sub, Div}`
- Only in ambiguous cases (e.g. use of `Default::default()` with `&T + &T` )
- Previously we have expressed a desire to maintain consistency, whatever impls we do
- Can we impl some things gradually and then pull back again if it turns out bad?
- [portable-simd#203] remains waiting on review.
- Anyone up for this?
- `simd::Float` + `Simd<T, N>` vs. `simd::Vector` + `SimdFloat<T,N>`
- Two paths diverged in a wood, etc.
- What measure portability?
- IEEE754 transcendental functions are not implemented to the last bit, yet are considered relatively portable nonetheless.
- It is likely some functions should be precise and others need not be quite as precise.
- `Simd::<T,N>::cast::<U>`, its future, and possible cleanup
- https://github.com/rust-lang/portable-simd/issues/233
- See: https://rust-lang.zulipchat.com/#narrow/stream/257879-project-portable-simd/topic/Simd.3A.3Acast.3A.3A.3CU.3E.28self.29
- Briefly: `fn cast` is a slightly awkward name, we've already discussed that.
- We can't use `fn as`, and `fn convert` isn't much clearer.
- PG-safe-transmute may or may not want `fn cast` for pure bitcasts
- We may or may not want to split float conversion methods from our bitcasts?
- Conciseness in naming / avoiding repeating `lanes_` everywhere.
- Language features like `as` exist precisely to make it possible and easy to convert.
- _(Your Text Here)_
## Resolutions
- Latest sync + libm story update from Jubilee
- waiting on bors
- Re-adding "autosplats"
- no incrementalism, ideally, easier to just keep things consistent
- "nah" on `&T $op &U`, drop
- "eh" on `T $op &U`, probably remove?
- Jubilee will take a shot at?
- [portable-simd#203] remains waiting on review.
- Jacob took a look at it
- `Simd::<T,N>::cast::<U>`, its future, and possible cleanup
- keep `fn cast` as is without splitting,
- defined as: it's not "a bitcast", it's an overloaded value conversion
- one of the conversions happens to be an isomorphism to ℤ/2ᴺℤ.
- therefore yes cleanup other functions
- `simd::Float` + `Simd<T, N>` vs. `simd::Vector` + `SimdFloat<T,N>`
- ???
- What measure portability
- ???
- Conciseness in naming / avoiding repeating `lanes_` everywhere.
- ???
- _(Your Text Here)_
[portable-simd#203]: https://github.com/rust-lang/portable-simd/pull/203