Skip to main content

## _mm_fcmadd_round_sch

# Function _mm_fcmadd_round_sch

1.94.0 · Source

    pub fn _mm_fcmadd_round_sch(
        a: __m128h,
        b: __m128h,
        c: __m128h,
        const ROUNDING: i32,
    ) -> __m128h

Available on x86-64 and target feature `avx512fp16` only.
Expand description

Multiply the lower complex number in a by the complex conjugate of the lower complex number in b, accumulate to the lower complex number in c, and store the result in the lower elements of dst, and copy the upper 6 packed elements from a to the upper elements of dst. Each complex number is composed of two adjacent half-precision (16-bit) floating-point elements, which defines the complex number `complex = vec.fp16[0] + i * vec.fp16[1]`, or the complex conjugate `conjugate = vec.fp16[0] - i * vec.fp16[1]`.

Rounding is done according to the rounding parameter, which can be one of:

- `_MM_FROUND_TO_NEAREST_INT` | `_MM_FROUND_NO_EXC` : round to nearest and suppress exceptions
- `_MM_FROUND_TO_NEG_INF` | `_MM_FROUND_NO_EXC` : round down and suppress exceptions
- `_MM_FROUND_TO_POS_INF` | `_MM_FROUND_NO_EXC` : round up and suppress exceptions
- `_MM_FROUND_TO_ZERO` | `_MM_FROUND_NO_EXC` : truncate and suppress exceptions
- `_MM_FROUND_CUR_DIRECTION` : use `MXCSR.RC` - see `_MM_SET_ROUNDING_MODE`

Intel’s documentation