Function serde::lib::core::arch::x86_64::_mm_getmant_round_sh

source ·
pub unsafe fn _mm_getmant_round_sh<const NORM: i32, const SIGN: i32, const SAE: i32>(
    a: __m128h,
    b: __m128h,
) -> __m128h
🔬This is a nightly-only experimental API. (stdarch_x86_avx512_f16)
Available on x86-64 only.
Expand description

Normalize the mantissas of the lower half-precision (16-bit) floating-point element in b, store the result in the lower element of dst, and copy the upper 7 packed elements from a to the upper elements of dst. This intrinsic essentially calculates ±(2^k)*|x.significand|, where k depends on the interval range defined by norm and the sign depends on sign and the source sign. Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter

The mantissa is normalized to the interval specified by interv, which can take the following values:

_MM_MANT_NORM_1_2     // interval [1, 2)
_MM_MANT_NORM_p5_2    // interval [0.5, 2)
_MM_MANT_NORM_p5_1    // interval [0.5, 1)
_MM_MANT_NORM_p75_1p5 // interval [0.75, 1.5)

The sign is determined by sc which can take the following values:

_MM_MANT_SIGN_src     // sign = sign(src)
_MM_MANT_SIGN_zero    // sign = 0
_MM_MANT_SIGN_nan     // dst = NaN if sign(src) = 1

Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter

Intel’s documentation