Function core::arch::x86_64::_mm_mask_getmant_round_sh
source · pub unsafe fn _mm_mask_getmant_round_sh(
src: __m128h,
k: __mmask8,
a: __m128h,
b: __m128h,
const NORM: _MM_MANTISSA_NORM_ENUM,
const SIGN: _MM_MANTISSA_SIGN_ENUM,
const SAE: i32,
) -> __m128h
stdarch_x86_avx512_f16
#127213)avx512fp16
and 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 using writemask k (the element is copied from src when mask bit 0 is not set),
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