Skip to content

fearless_simd-v1.2.0

Latest

Choose a tag to compare

@LaurenzV LaurenzV released this 25 Oct 18:32
· 5 commits to main since this release
5fbc09b

Crates.io | Docs

This release has an MSRV of 1.89.

Added

  • Added the SimdIntWiden trait with widening_mul and widening_add for signed and unsigned 8-, 16-, and 32-bit integer vectors. These operations compute exact results in lanes twice as wide, returning the lower and upper halves as two vectors. (#415 by @Shnatsel, #425 and #426 by @RunDevelopment)
  • Added SimdIntWiden::pairwise_dot_product, multiplying corresponding integer lanes and summing adjacent pairs of products into lanes twice as wide. Multiplication is exact; addition wraps in the widened type. (#415 by @Shnatsel, #425 and #426 by @RunDevelopment)
  • Added SimdIntWiden::pairwise_widening_add, summing adjacent integer lanes into lanes twice as wide without overflow. (#416 by @Shnatsel)
  • Added SimdFloat::to_bits, SimdFloat::from_bits, and the associated Bits types on SimdFloat and SimdFloatElement, enabling conversions between floating-point vectors and their unsigned integer bit representations in generic code. (#420 by @RunDevelopment)
  • Added SimdBase::clamp for all integer and floating-point vectors, clamping each lane to the inclusive interval [min, max]. NaN input lanes remain NaN; invalid bounds panic when debug assertions are enabled and otherwise produce implementation-defined results. (#421, #427 by @RunDevelopment, @Shnatsel)

Changed

  • Integer narrowing has been optimized on x86, particularly saturating narrowing on AVX-512 and relaxed narrowing when inputs fit in the destination type. (#414 by @Shnatsel)
  • SimdInto and SimdFrom blanket implementations are now marked #[inline(always)], avoiding out-of-line conversion calls and performance losses with lto = "off" or opt-level = 1. (#417 by @Novum)
  • from_bitmask has been optimized for 8-bit masks on NEON. (#418 by @mightsleep)

Full Changelog: fearless_simd-v1.1.0...fearless_simd-v1.2.0