The class for single-precision floating point SIMD computations using128-bit registers (MM0-XMM15 for SSE, and Q0-Q15 for NEON).
More...
|
template<size_t N> |
static f128 | SetZeroToLane (f128arg value) noexcept |
| Sets lane N of value to 0.f . More...
|
|
|
static f128 | SetValue (float v, each_float_tag) noexcept |
| Sets four 32-bit lanes to a single-precision floating point value.
|
|
static f128 | SetValue (uint32_t v, each_uint32_tag) noexcept |
| Sets four 32-bit lanes to an unsigned 32-bit integer.
|
|
static f128 | SetValue (float a, float b, float c, float d) noexcept |
| Sets four 32-bit lanes to separate single-precision floating point numbers.
|
|
template<size_t N> |
static f128 | SetValue (f128arg value, each_select32_tag) noexcept |
| Sets all lanes to the single-precision floating point value of lane N of the value argument. More...
|
|
static f128 | SetZero () noexcept |
| Sets all lanes to 0.f .
|
|
static f128 | SetOne () noexcept |
| Sets all lanes to 1.f .
|
|
static f128 | SetNegativeOne () noexcept |
| Sets all lanes to 1.f .
|
|
static f128 | SetEpsilon () noexcept |
| Sets all lanes to epsilon(1.0e-7f) .
|
|
static f128 | SetInfinity () noexcept |
| Sets all lanes to positive infinity (0x7F800000U ).
|
|
static f128 | SetNaN () noexcept |
| Sets all lanes to NaN(0x7FC00000U) .
|
|
static f128 | SetSignMask () noexcept |
| Sets all lanes to -0.f (0x80000000U ).
|
|
|
static f128 | LoadA16 (const float *p) noexcept |
| Loads 16 bytes of data from the 16-byte-aligned address p and sets the value. The argument type is either uintptr_t or intptr_t .
|
|
static f128 | LoadA8 (const float *p) noexcept |
| Loads 8 bytes of data from the 16-byte-aligned address p and sets the value. The argument type is either uintptr_t or intptr_t .
|
|
static f128 | LoadA4 (const float *p) noexcept |
| Loads 4 bytes of data from the 16-byte-aligned address p and sets the value. The argument type is either uintptr_t or intptr_t .
|
|
static f128 | LoadA16 (uintptr_t p) noexcept |
| Wraps LoadA16(const float* p) .
|
|
static f128 | LoadA8 (uintptr_t p) noexcept |
| Wraps LoadA8(const float* p) .
|
|
static f128 | LoadA4 (uintptr_t p) noexcept |
| Wraps LoadA4(const float* p) .
|
|
static f128 | LoadA16 (intptr_t p) noexcept |
| Wraps LoadA16(const float* p) .
|
|
static f128 | LoadA8 (intptr_t p) noexcept |
| Wraps LoadA8(const float* p) .
|
|
static f128 | LoadA4 (intptr_t p) noexcept |
| Wraps LoadA4(const float* p) .
|
|
|
static void | StoreA16 (float *p, f128arg value) noexcept |
| Writes the 16 bytes of data of value to the 16-byte-aligned address specified in the p parameter. The argument type is either uintptr_t or intptr_t .
|
|
static void | StoreA8 (float *p, f128arg value) noexcept |
| Writes the 8 bytes of data of value to the 16-byte-aligned address specified in the p parameter. The argument type is either uintptr_t or intptr_t .
|
|
static void | StoreA4 (float *p, f128arg value) noexcept |
| Writes the 4 bytes of data of value to the 16-byte-aligned address specified in the p parameter. The argument type is either uintptr_t or intptr_t .
|
|
static void | StoreA16 (uintptr_t p, f128arg value) noexcept |
| Wraps StoreA16(float* p, f128arg value) .
|
|
static void | StoreA8 (uintptr_t p, f128arg value) noexcept |
| Wraps StoreA8(float* p, f128arg value) .
|
|
static void | StoreA4 (uintptr_t p, f128arg value) noexcept |
| Wraps StoreA4(float* p, f128arg value) .
|
|
static void | StoreA16 (intptr_t p, f128arg value) noexcept |
| Wraps StoreA16(float* p, f128arg value) .
|
|
static void | StoreA8 (intptr_t p, f128arg value) noexcept |
| Wraps StoreA8(float* p, f128arg value) .
|
|
static void | StoreA4 (intptr_t p, f128arg value) noexcept |
| Wraps StoreA4(float* p, f128arg value) .
|
|
static void | StoreLoA8 (float *p, f128arg value) noexcept |
| Writes the lower 64 bits of value to the 8-byte-aligned address specified in the p parameter. The argument type is either uintptr_t or intptr_t .
|
|
static void | StoreLoA4 (float *p, f128arg value) noexcept |
| Writes the lower 64 bits of value to the 4-byte-aligned address specified in the p parameter. The argument type is either uintptr_t or intptr_t .
|
|
static void | StoreLoA8 (uintptr_t p, f128arg value) noexcept |
| Wraps StoreLoA8(float* p, f128arg value) .
|
|
static void | StoreLoA4 (uintptr_t p, f128arg value) noexcept |
| Wraps StoreLoA4(float* p, f128arg value) .
|
|
static void | StoreLoA8 (intptr_t p, f128arg value) noexcept |
| Wraps StoreLoA8(float* p, f128arg value) .
|
|
static void | StoreLoA4 (intptr_t p, f128arg value) noexcept |
| Wraps StoreLoA4(float* p, f128arg value) .
|
|
static void | StoreHiA8 (float *p, f128arg value) noexcept |
| Writes the upper 64 bits of value to the 8-byte-aligned address specified in the p parameter. The argument type is either uintptr_t or intptr_t .
|
|
static void | StoreHiA4 (float *p, f128arg value) noexcept |
| Writes the upper 64 bits of value to the 4-byte-aligned address specified in the p parameter. The argument type is either uintptr_t or intptr_t .
|
|
static void | StoreHiA8 (uintptr_t p, f128arg value) noexcept |
| Wraps StoreHiA8(float* p, f128arg value) .
|
|
static void | StoreHiA4 (uintptr_t p, f128arg value) noexcept |
| Wraps StoreHiA4(float* p, f128arg value) .
|
|
static void | StoreHiA8 (intptr_t p, f128arg value) noexcept |
| Wraps StoreHiA8(float* p, f128arg value) .
|
|
static void | StoreHiA4 (intptr_t p, f128arg value) noexcept |
| Wraps StoreHiA4(float* p, f128arg value) .
|
|
|
static f128 | ConvertFromI128 (i128 value) noexcept |
| Converts the set of 32-bit signed integers from value into single-precision floating point numbers and returns those numbers. More...
|
|
static i128 | ConvertToI128Round (f128 value) noexcept |
| Converts value into four 32-bit signed integers. The decimal portion is rounded to zero. More...
|
|
static i128 | ConvertToI128Truncate (f128 value) noexcept |
| Converts value into four 32-bit signed integers. The decimal portion is truncated to zero. More...
|
|
static f128 | CastFromI128 (i128 value) noexcept |
| Converts all of the bits of value to f128 . More...
|
|
static i128 | CastToI128 (f128 value) noexcept |
| Converts all of the bits of value to i128 . More...
|
|
|
static f128 | Add (f128arg a, f128arg b) noexcept |
| Adds the floating point numbers in the same lanes of a and b and returns the results.
|
|
static f128 | Sub (f128arg a, f128arg b) noexcept |
| Subtracts the floating point numbers in the same lanes of a and b and returns the results.
|
|
static f128 | Mult (f128arg a, f128arg b) noexcept |
| Multiplies the floating point numbers in the same lanes of a and b and returns the results.
|
|
static f128 | Mult (float a, f128arg b) noexcept |
| Multiplies each lane of b by a and returns the results.
|
|
template<size_t N> |
static f128 | Mult (f128arg a, f128arg b, each_select32_tag) noexcept |
| Performs multiplication corresponding to a[N] * b.
|
|
static f128 | Div (f128arg a, f128arg b) noexcept |
| Divides the floating point numbers in the same lanes of a and b and returns the results. If this involves division by zero, the function returns either positive infinity or negative infinity.
|
|
static f128 | Negate (f128arg value) noexcept |
| Reverses the signs of the floating-point numbers in the lanes of the value argument.
|
|
template<bool NegateLane0, bool NegateLane1, bool NegateLane2, bool NegateLane3> |
static f128 | NegateEx (f128arg value) noexcept |
| Reverses the signs of the lanes of value. It's possible to set whether to reverse the sign for each lane separately. More...
|
|
static f128 | MultAdd (f128arg a, f128arg b, f128arg c) noexcept |
| Performs a product-sum operation corresponding to c + a * b.
|
|
static f128 | MultAdd (float a, f128arg b, f128arg c) noexcept |
| Performs a product-sum operation corresponding to c + a * b.
|
|
template<size_t N> |
static f128 | MultAdd (f128arg a, f128arg b, f128arg c, each_select32_tag) noexcept |
| Performs a product-sum operation corresponding to c + a[N] * b.
|
|
static f128 | MultSub (f128arg a, f128arg b, f128arg c) noexcept |
| Performs a product-sum operation corresponding to c - a * b.
|
|
static f128 | MultSub (float a, f128arg b, f128arg c) noexcept |
| Performs a product-sum operation corresponding to c - a * b.
|
|
template<size_t N> |
static f128 | MultSub (f128arg a, f128arg b, f128arg c, each_select32_tag) noexcept |
| Performs a product-sum operation corresponding to c - a[N] * b.
|
|
static f128 | PairwiseAdd (f128arg a, f128arg b) noexcept |
| Performs horizontal addition on a and b and collects the results into a single 128-bit value. More...
|
|
static f128 | Abs (f128arg value) noexcept |
| Computes the absolute values for the lanes of value and returns the results.
|
|
static f128 | AbsDiff (f128arg a, f128arg b) noexcept |
| Computes the absolute values for the differences between the lanes of a and b and returns the results.
|
|
|
static f128 | Max (f128arg a, f128arg b) noexcept |
| Compares the values in the same lanes of the a and b arguments, and selects and returns the larger value. More...
|
|
static f128 | Min (f128arg a, f128arg b) noexcept |
| Compares the values in the same lanes of the a and b arguments, and selects and returns the larger value. More...
|
|
static f128 | PairwiseMax (f128arg a, f128arg b) noexcept |
| Compares the values in adjacent lanes of the a and b arguments, and selects and returns the larger of them. More...
|
|
static f128 | PairwiseMin (f128arg a, f128arg b) noexcept |
| Compares the values in adjacent lanes of the a and b arguments, and selects and returns the smaller of them. More...
|
|
static f128 | Clamp (f128arg value, f128arg min, f128arg max) noexcept |
| Returns the clamped values for each lane of value, clamping each value to either min if it is less than the value of the same lane of min, or to max if it is larger than the value of the same lane of max. More...
|
|
static f128 | Saturate (f128arg value) noexcept |
| Clamps the value of each lane of value using 0.0 and 1.0 .
|
|
|
static f128 | Recp (f128arg value) noexcept |
| Computes the reciprocal values for each lane of value. If this involves division by zero, the function returns positive infinity. More...
|
|
static f128 | RecpEst (f128arg value) noexcept |
| Computes the reciprocal values for each lane of value relatively quickly but with low precision. If this involves division by zero, the function returns positive infinity. More...
|
|
static f128 | Sqrt (f128arg value) noexcept |
| Computes the square root for each lane of value. More...
|
|
static f128 | SqrtEst (f128arg value) noexcept |
| Computes the square root for each lane of value relatively quickly but with low precision. More...
|
|
static f128 | RecpSqrt (f128arg value) noexcept |
| Computes the reciprocal square root for each lane of value. If this involves division by zero, the function returns positive infinity. More...
|
|
static f128 | RecpSqrtEst (f128arg value) noexcept |
| Computes the reciprocal square root for each lane of value relatively quickly but with low precision. If this involves division by zero, the function returns positive infinity. More...
|
|
|
static f128 | Round (f128arg value) noexcept |
| Computes the single-precision floating-point value for each lane of value and rounds off the decimal point. More...
|
|
static f128 | Truncate (f128arg value) noexcept |
| Computes the single-precision floating-point value for each lane of value, with the decimal portion truncated to zero. More...
|
|
static f128 | Floor (f128arg value) noexcept |
| Computes the largest integer value that is less than the single-precision floating point number in each lane of value. More...
|
|
static f128 | Ceil (f128arg value) noexcept |
| Computes the smallest integer value that is greater than the single-precision floating point number in each lane of value. More...
|
|
|
static f128 | And (f128arg a, f128arg b) noexcept |
| Calculates the bitwise AND of the a and b arguments.
|
|
static f128 | Or (f128arg a, f128arg b) noexcept |
| Calculates the bitwise OR of the a and b arguments.
|
|
static f128 | Xor (f128arg a, f128arg b) noexcept |
| Calculates the bitwise XOR of the a and b arguments.
|
|
static f128 | Not (f128arg a) noexcept |
| Calculates the bitwise NOT of the a argument.
|
|
static f128 | AndNot (f128arg a, f128arg b) noexcept |
| Calculates the bitwise NOT of the a argument, and the bitwise AND of the b argument. More...
|
|
static f128 | OrNot (f128arg a, f128arg b) noexcept |
| Calculates the bitwise NOT of the a argument, and the bitwise OR of the b argument. More...
|
|
|
static f128 | CmpEq (f128arg a, f128arg b) noexcept |
| Compares a and b in units of single-precision floating-point numbers and sets the bits according to the results of the comparison. More...
|
|
static f128 | CmpLt (f128arg a, f128arg b) noexcept |
| Compares a and b in units of single-precision floating-point numbers and sets the bits according to the results of the comparison. More...
|
|
static f128 | CmpLe (f128arg a, f128arg b) noexcept |
| Compares a and b in units of single-precision floating-point numbers and sets the bits according to the results of the comparison. More...
|
|
static f128 | CmpGt (f128arg a, f128arg b) noexcept |
| Compares a and b in units of single-precision floating-point numbers and sets the bits according to the results of the comparison. More...
|
|
static f128 | CmpGe (f128arg a, f128arg b) noexcept |
| Compares a and b in units of single-precision floating-point numbers and sets the bits according to the results of the comparison. More...
|
|
static f128 | CmpNe (f128arg a, f128arg b) noexcept |
| Compares a and b in units of single-precision floating-point numbers and sets the bits according to the results of the comparison. More...
|
|
static f128 | CmpNearEq (f128arg a, f128arg b, f128arg eps) noexcept |
| Determines whether the difference between a and b is within eps, and sets the bits according to the results of the comparison. More...
|
|
static f128 | InBound (f128arg value, f128arg bounds) noexcept |
| Determines whether the individual absolute values of value can fit in bounds, and sets the bits according to the results of the comparison. More...
|
|
|
static f128 | AddAngle (f128arg angle1, f128arg angle2) noexcept |
| Adds the four radians stored in the separate lanes. The results are normalized to values greater than -π and less than π . More...
|
|
static f128 | SubAngle (f128arg angle1, f128arg angle2) noexcept |
| Subtracts the four radians stored in the separate lanes. The results are normalized to values greater than -π and less than π . More...
|
|
static f128 | ModAngle (f128arg value) noexcept |
| Normalizes the four radians stored in each lane to values greater than -π and less than π .
|
|
static f128 | Sin (f128arg value) noexcept |
| Calculates the sine corresponding to the radians stored in each lane.
|
|
static f128 | Cos (f128arg value) noexcept |
| Calculates the cosine corresponding to the radians stored in each lane.
|
|
static f128x2 | SinCos (f128arg value) noexcept |
| Calculates and returns the sine and the cosine. The return value for the sine is stored in val[0], and the value for the cosine is stored in val[1].
|
|
static f128 | Tan (f128arg value) noexcept |
| Calculates the tangent corresponding to the radians stored in each lane.
|
|
static f128 | SinH (f128arg value) noexcept |
| Calculates the hyperbolic sine for each lane value.
|
|
static f128 | CosH (f128arg value) noexcept |
| Calculates the hyperbolic cosine for each lane value.
|
|
static f128 | TanH (f128arg value) noexcept |
| Calculates the hyperbolic tangent for each lane value.
|
|
static f128 | ArcSin (f128arg value) noexcept |
| Calculates the arcsine for each lane.
|
|
static f128 | ArcCos (f128arg value) noexcept |
| Calculates the arccosine for each lane.
|
|
static f128 | ArcTan (f128arg value) noexcept |
| Calculates the arctangent for each lane.
|
|
static f128 | ArcTan2 (f128arg y, f128arg x) noexcept |
| Calculates the arctangents for y / x. More...
|
|
static f128 | Exp2 (f128arg value) noexcept |
| Calculates 2 to the power of value for each lane, and stores the result in each lane. More...
|
|
static f128 | ExpE (f128arg value) noexcept |
| Calculates e to the power of value for each lane, and stores the result in each lane. More...
|
|
static f128 | Log2 (f128arg value) noexcept |
| Calculates the binary logarithm for each lane.
|
|
static f128 | LogE (f128arg value) noexcept |
| Calculates the 'e' logarithm (the natural logarithm) for each lane.
|
|
|
static f128 | Lerp (f128arg a, f128arg b, f128arg t) noexcept |
| Performs linear interpolation on the values in each lane of a and b. More...
|
|
static f128 | Hermite (f128arg p0, f128arg v0, f128arg p1, f128arg_ex v1, f128arg_ex t) noexcept |
| Performs Hermite interpolation using the specified arguments. More...
|
|
static f128 | CatmullRom (f128arg p0, f128arg p1, f128arg p2, f128arg_ex p3, f128arg_ex t) noexcept |
| Performs Catmull-Rom interpolation using the specified arguments. More...
|
|
static f128 | BaryCentric (f128arg p0, f128arg p1, f128arg p2, f128arg_ex f, f128arg_ex g) noexcept |
| Performs barycentric interpolation using the specified arguments. More...
|
|
|
static int | MoveMask (f128arg value) noexcept |
| Consolidates the various 32-bit lanes into a 1-bit value and returns it as an integer. More...
|
|
static bool | IsAllMaskFalse (f128arg value) noexcept |
| Checks whether the results of all logical operations are all false. More...
|
|
static bool | IsAllMaskTrue (f128arg value) noexcept |
| Checks whether the results of all logical operations are all true. More...
|
|
static f128 | Select (f128arg mask, f128arg a, f128arg b) noexcept |
| Compounds a and b according to the value of mask. Use this function to avoid conditional branching. More...
|
|
static f128 | IsNaN (f128arg value) noexcept |
| If the single-precision floating-point numbers in the lane of value are non-numeric, all bits in that lane are set to 1. More...
|
|
static f128 | IsInfinite (f128arg value) noexcept |
| If the single-precision floating-point numbers in the lane of value are either positive infinity or negative infinity, all bits in that lane are set to 1 . More...
|
|
|
template<size_t N> |
static float | GetFloatFromLane (f128arg value) noexcept |
| Gets the single-precision floating-point numbers of lane N of value. More...
|
|
template<size_t N> |
static uint32_t | GetUint32FromLane (f128arg value) noexcept |
| Gets the bit pattern of the single-precision floating-point numbers in lane N of value as a 32-bit unsigned integer. More...
|
|
static float | GetFloatByIndex (f128arg value, size_t idx) noexcept |
| Gets the single-precision floating-point numbers of lane idx of value. More...
|
|
static uint32_t | GetUint32ByIndex (f128arg value, size_t idx) noexcept |
| Gets the unsigned 32-bit integer from lane idx of value. More...
|
|
template<size_t N> |
static f128 | SetFloatToLane (f128arg value, float v) noexcept |
| Returns the single-precision floating point numbers of lane N of value that were set to v. More...
|
|
static f128 | SetFloatByIndex (f128arg value, float v, size_t i) noexcept |
| Returns the single-precision floating point numbers of lane i of value that were set to v. More...
|
|
|
template<size_t V0, size_t V1, size_t V2, size_t V3> |
static f128 | Swizzle (f128arg value) noexcept |
| Generates a new 128-bit value from four sorted single-precision floating-point numbers. More...
|
|
template<size_t V0, size_t V1, size_t V2, size_t V3> |
static f128 | Permute (f128arg a, f128arg b) noexcept |
| Generates a new 128-bit value from eight sorted single-precision floating-point numbers. More...
|
|
template<bool SplatLane0, bool SplatLane1, bool SplatLane2, bool SplatLane3> |
static f128 | Splat (f128arg value, f128arg splat) noexcept |
| Based on the settings of the template arguments, replaces the values of the lanes of value with the values of splat. All lanes must have the same splat values. More...
|
|
template<size_t N> |
static f128 | RotateLeft (f128arg value) noexcept |
| Rotates four single-precision floating-point numbers to the left by the amount of N. More...
|
|
template<size_t N> |
static f128 | RotateRight (f128arg value) noexcept |
| Rotates four single-precision floating-point numbers to the right by the amount of N. More...
|
|
template<size_t N> |
static f128 | ShiftRight (f128arg a, f128arg b) noexcept |
| Sets the elements of b in shifted order to the portion of a that becomes empty when a is shifted to the right. More...
|
|