SE-0229 — SIMD Vectors

Review Update 3 – Resuming following changes

Hi everyone – thanks for your patience. The proposal and implementation have been updated, and the review will now resume through Friday, November 9th.

An updated copy of the proposal can now be found here, and diffs from previous are here.

To summarize how the proposal has changed:

  • The primary working types are now spelled like Vector3<T> instead of the earlier T.Vector3.
  • Initializers from any Sequence with the right element type are now provided.
  • All mask operations are .-prefixed
  • count has been renamed elementCount
  • The general swizzle / shuffle / permute operation init(gathering: at:) has been removed. We intend to restore it in a later proposal with a better name.
  • Users can make VectorN<T> available for arbitrary types T by conforming T to a new SIMDVectorizable protocol, which has very basic requirements.
  • The any and all and min, max, and clamp free functions have been removed. We intend to re-introduce this functionality (possibly with different bindings) in a follow-on proposal.
  • The IntegerVector and FloatingPointVector protocols have been removed and replaced with conditional conformances.

The text of the proposal now goes into detail about how the new spelling works and how users can add support for new types.