_mm_getmant_sh in core::arch::x86 - Rust
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.

Skip to main content

## _mm_getmant_sh

# Function _mm_getmant_sh

1.94.0 · Source

    pub fn _mm_getmant_sh(
        a: __m128h,
        b: __m128h,
        const NORM: _MM_MANTISSA_NORM_ENUM,
        const SIGN: _MM_MANTISSA_SIGN_ENUM,
    ) -> __m128h

Available on x86 and target feature `avx512fp16` 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.

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

Intel’s documentation