Skip to content

MaxMath v2.1.2

Compare
Choose a tag to compare
@MrUnbelievable92 MrUnbelievable92 released this 24 Mar 17:09

Known Issues

  • half8 "equals" and "not equals" operators don't conform to the IEEE 754 standard - Unity has not yet reacted to my bug-report in regards to their "half" implementation

Fixes

  • fixed undefined behavior of "vshr" functions for vector types smaller than 128 bits
  • fixed SSE2 implementations of "vrol" and "vror" functions for the (u)short16 type

Additions

  • implemented Bmi1 and Bmi2 intrinsics as functions with a "bits_" prefix (except for "andn", which has already been implemented as "andnot")
  • added high performance and/or SIMD "isdivisible" functions for all integer vector types and scalar value types
  • added high performance and/or SIMD "intpow" - integer exponentiation - functions for (u)int, (u)long and all integer vector types
  • added high performance and/or SIMD "floorpow2" functions for all integer vector types
  • added "nabs" - negative absolute value functions for all non-boolean vector- and single value types
  • added "indexof(vector v, value x)" functions for all non-boolean vector types

Improvements

  • aggressivley optimized away global variables (shuffle masks) and thus memory access and usage where appropriate
  • improved performance of 256 bit vector subvector getters
  • added Sse2 fallback code for all (u)long2/3/4 operators
  • improved performance of mulitplication, division and modulo operations for all (s)byte- and (u)short vector- and matrix types when dividing by a single non-compile time constant value
  • added overloads for (s)byte- and (u)short vectors' "divrem" functions with a scalar value as the divisor parameter, improving performance when it is a compile time constant
  • improved performance of "intsqrt" functions for most types

Changes

  • bump com.unity.burst to version 1.5

Fixed Oversights

  • added bitmask8 and bitmask16 functions for (s)byte and (u)short vector types, respectively