AVX-512-Arithmetic-YMM

Contents

AVX-512-Arithmetic-YMM#

_mm256_mask_abs_epi8#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask32 k, __m256i a

Param ETypes:

UI8 src, MASK k, SI8 a

__m256i _mm256_mask_abs_epi8(__m256i src, __mmask32 k,
                             __m256i a)

Intel Description

Compute the absolute value of packed signed 8-bit integers in “a”, and store the unsigned results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 31
        i := j*8
        IF k[j]
                dst[i+7:i] := ABS(a[i+7:i])
        ELSE
                dst[i+7:i] := src[i+7:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_abs_epi8#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask32 k, __m256i a

Param ETypes:

MASK k, SI8 a

__m256i _mm256_maskz_abs_epi8(__mmask32 k, __m256i a);

Intel Description

Compute the absolute value of packed signed 8-bit integers in “a”, and store the unsigned results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 31
        i := j*8
        IF k[j]
                dst[i+7:i] := ABS(a[i+7:i])
        ELSE
                dst[i+7:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_abs_epi16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask16 k, __m256i a

Param ETypes:

UI16 src, MASK k, SI16 a

__m256i _mm256_mask_abs_epi16(__m256i src, __mmask16 k,
                              __m256i a)

Intel Description

Compute the absolute value of packed signed 16-bit integers in “a”, and store the unsigned results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        i := j*16
        IF k[j]
                dst[i+15:i] := ABS(a[i+15:i])
        ELSE
                dst[i+15:i] := src[i+15:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_abs_epi16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask16 k, __m256i a

Param ETypes:

MASK k, SI16 a

__m256i _mm256_maskz_abs_epi16(__mmask16 k, __m256i a);

Intel Description

Compute the absolute value of packed signed 16-bit integers in “a”, and store the unsigned results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        i := j*16
        IF k[j]
                dst[i+15:i] := ABS(a[i+15:i])
        ELSE
                dst[i+15:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_add_epi8#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask32 k, __m256i a, __m256i b

Param ETypes:

UI8 src, MASK k, UI8 a, UI8 b

__m256i _mm256_mask_add_epi8(__m256i src, __mmask32 k,
                             __m256i a, __m256i b)

Intel Description

Add packed 8-bit integers in “a” and “b”, and store the results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 31
        i := j*8
        IF k[j]
                dst[i+7:i] := a[i+7:i] + b[i+7:i]
        ELSE
                dst[i+7:i] := src[i+7:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_add_epi8#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask32 k, __m256i a, __m256i b

Param ETypes:

MASK k, UI8 a, UI8 b

__m256i _mm256_maskz_add_epi8(__mmask32 k, __m256i a,
                              __m256i b)

Intel Description

Add packed 8-bit integers in “a” and “b”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 31
        i := j*8
        IF k[j]
                dst[i+7:i] := a[i+7:i] + b[i+7:i]
        ELSE
                dst[i+7:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_adds_epi8#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask32 k, __m256i a, __m256i b

Param ETypes:

UI8 src, MASK k, SI8 a, SI8 b

__m256i _mm256_mask_adds_epi8(__m256i src, __mmask32 k,
                              __m256i a, __m256i b)

Intel Description

Add packed signed 8-bit integers in “a” and “b” using saturation, and store the results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 31
        i := j*8
        IF k[j]
                dst[i+7:i] := Saturate8( a[i+7:i] + b[i+7:i] )
        ELSE
                dst[i+7:i] := src[i+7:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_adds_epi8#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask32 k, __m256i a, __m256i b

Param ETypes:

MASK k, SI8 a, SI8 b

__m256i _mm256_maskz_adds_epi8(__mmask32 k, __m256i a,
                               __m256i b)

Intel Description

Add packed signed 8-bit integers in “a” and “b” using saturation, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 31
        i := j*8
        IF k[j]
                dst[i+7:i] := Saturate8( a[i+7:i] + b[i+7:i] )
        ELSE
                dst[i+7:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_adds_epi16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask16 k, __m256i a, __m256i b

Param ETypes:

UI16 src, MASK k, SI16 a, SI16 b

__m256i _mm256_mask_adds_epi16(__m256i src, __mmask16 k,
                               __m256i a, __m256i b)

Intel Description

Add packed signed 16-bit integers in “a” and “b” using saturation, and store the results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        i := j*16
        IF k[j]
                dst[i+15:i] := Saturate16( a[i+15:i] + b[i+15:i] )
        ELSE
                dst[i+15:i] := src[i+15:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_adds_epi16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask16 k, __m256i a, __m256i b

Param ETypes:

MASK k, SI16 a, SI16 b

__m256i _mm256_maskz_adds_epi16(__mmask16 k, __m256i a,
                                __m256i b)

Intel Description

Add packed signed 16-bit integers in “a” and “b” using saturation, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        i := j*16
        IF k[j]
                dst[i+15:i] := Saturate16( a[i+15:i] + b[i+15:i] )
        ELSE
                dst[i+15:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_adds_epu8#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask32 k, __m256i a, __m256i b

Param ETypes:

UI8 src, MASK k, UI8 a, UI8 b

__m256i _mm256_mask_adds_epu8(__m256i src, __mmask32 k,
                              __m256i a, __m256i b)

Intel Description

Add packed unsigned 8-bit integers in “a” and “b” using saturation, and store the results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 31
        i := j*8
        IF k[j]
                dst[i+7:i] := SaturateU8( a[i+7:i] + b[i+7:i] )
        ELSE
                dst[i+7:i] := src[i+7:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_adds_epu8#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask32 k, __m256i a, __m256i b

Param ETypes:

MASK k, UI8 a, UI8 b

__m256i _mm256_maskz_adds_epu8(__mmask32 k, __m256i a,
                               __m256i b)

Intel Description

Add packed unsigned 8-bit integers in “a” and “b” using saturation, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 31
        i := j*8
        IF k[j]
                dst[i+7:i] := SaturateU8( a[i+7:i] + b[i+7:i] )
        ELSE
                dst[i+7:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_adds_epu16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask16 k, __m256i a, __m256i b

Param ETypes:

UI16 src, MASK k, UI16 a, UI16 b

__m256i _mm256_mask_adds_epu16(__m256i src, __mmask16 k,
                               __m256i a, __m256i b)

Intel Description

Add packed unsigned 16-bit integers in “a” and “b” using saturation, and store the results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        i := j*16
        IF k[j]
                dst[i+15:i] := SaturateU16( a[i+15:i] + b[i+15:i] )
        ELSE
                dst[i+15:i] := src[i+15:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_adds_epu16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask16 k, __m256i a, __m256i b

Param ETypes:

MASK k, UI16 a, UI16 b

__m256i _mm256_maskz_adds_epu16(__mmask16 k, __m256i a,
                                __m256i b)

Intel Description

Add packed unsigned 16-bit integers in “a” and “b” using saturation, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        i := j*16
        IF k[j]
                dst[i+15:i] := SaturateU16( a[i+15:i] + b[i+15:i] )
        ELSE
                dst[i+15:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_add_epi16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask16 k, __m256i a, __m256i b

Param ETypes:

UI16 src, MASK k, UI16 a, UI16 b

__m256i _mm256_mask_add_epi16(__m256i src, __mmask16 k,
                              __m256i a, __m256i b)

Intel Description

Add packed 16-bit integers in “a” and “b”, and store the results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        i := j*16
        IF k[j]
                dst[i+15:i] := a[i+15:i] + b[i+15:i]
        ELSE
                dst[i+15:i] := src[i+15:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_add_epi16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask16 k, __m256i a, __m256i b

Param ETypes:

MASK k, UI16 a, UI16 b

__m256i _mm256_maskz_add_epi16(__mmask16 k, __m256i a,
                               __m256i b)

Intel Description

Add packed 16-bit integers in “a” and “b”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        i := j*16
        IF k[j]
                dst[i+15:i] := a[i+15:i] + b[i+15:i]
        ELSE
                dst[i+15:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_avg_epu8#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask32 k, __m256i a, __m256i b

Param ETypes:

UI8 src, MASK k, UI8 a, UI8 b

__m256i _mm256_mask_avg_epu8(__m256i src, __mmask32 k,
                             __m256i a, __m256i b)

Intel Description

Average packed unsigned 8-bit integers in “a” and “b”, and store the results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 31
        i := j*8
        IF k[j]
                dst[i+7:i] := (a[i+7:i] + b[i+7:i] + 1) >> 1
        ELSE
                dst[i+7:i] := src[i+7:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_avg_epu8#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask32 k, __m256i a, __m256i b

Param ETypes:

MASK k, UI8 a, UI8 b

__m256i _mm256_maskz_avg_epu8(__mmask32 k, __m256i a,
                              __m256i b)

Intel Description

Average packed unsigned 8-bit integers in “a” and “b”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 31
        i := j*8
        IF k[j]
                dst[i+7:i] := (a[i+7:i] + b[i+7:i] + 1) >> 1
        ELSE
                dst[i+7:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_avg_epu16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask16 k, __m256i a, __m256i b

Param ETypes:

UI16 src, MASK k, UI16 a, UI16 b

__m256i _mm256_mask_avg_epu16(__m256i src, __mmask16 k,
                              __m256i a, __m256i b)

Intel Description

Average packed unsigned 16-bit integers in “a” and “b”, and store the results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        i := j*16
        IF k[j]
                dst[i+15:i] := (a[i+15:i] + b[i+15:i] + 1) >> 1
        ELSE
                dst[i+15:i] := src[i+15:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_avg_epu16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask16 k, __m256i a, __m256i b

Param ETypes:

MASK k, UI16 a, UI16 b

__m256i _mm256_maskz_avg_epu16(__mmask16 k, __m256i a,
                               __m256i b)

Intel Description

Average packed unsigned 16-bit integers in “a” and “b”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        i := j*16
        IF k[j]
                dst[i+15:i] := (a[i+15:i] + b[i+15:i] + 1) >> 1
        ELSE
                dst[i+15:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_maddubs_epi16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask16 k, __m256i a, __m256i b

Param ETypes:

SI16 src, MASK k, UI8 a, SI8 b

__m256i _mm256_mask_maddubs_epi16(__m256i src, __mmask16 k,
                                  __m256i a, __m256i b)

Intel Description

Multiply packed unsigned 8-bit integers in “a” by packed signed 8-bit integers in “b”, producing intermediate signed 16-bit integers. Horizontally add adjacent pairs of intermediate signed 16-bit integers, and pack the saturated results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        i := j*16
        IF k[j]
                dst[i+15:i] := Saturate16( a[i+15:i+8]*b[i+15:i+8] + a[i+7:i]*b[i+7:i] )
        ELSE
                dst[i+15:i] := src[i+15:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_maddubs_epi16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask16 k, __m256i a, __m256i b

Param ETypes:

MASK k, UI8 a, SI8 b

__m256i _mm256_maskz_maddubs_epi16(__mmask16 k, __m256i a,
                                   __m256i b)

Intel Description

Multiply packed unsigned 8-bit integers in “a” by packed signed 8-bit integers in “b”, producing intermediate signed 16-bit integers. Horizontally add adjacent pairs of intermediate signed 16-bit integers, and pack the saturated results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        i := j*16
        IF k[j]
                dst[i+15:i] := Saturate16( a[i+15:i+8]*b[i+15:i+8] + a[i+7:i]*b[i+7:i] )
        ELSE
                dst[i+15:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_madd_epi16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask8 k, __m256i a, __m256i b

Param ETypes:

SI32 src, MASK k, SI16 a, SI16 b

__m256i _mm256_mask_madd_epi16(__m256i src, __mmask8 k,
                               __m256i a, __m256i b)

Intel Description

Multiply packed signed 16-bit integers in “a” and “b”, producing intermediate signed 32-bit integers. Horizontally add adjacent pairs of intermediate 32-bit integers, and pack the results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := SignExtend32(a[i+31:i+16]*b[i+31:i+16]) + SignExtend32(a[i+15:i]*b[i+15:i])
        ELSE
                dst[i+31:i] := src[i+31:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_madd_epi16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask8 k, __m256i a, __m256i b

Param ETypes:

MASK k, SI16 a, SI16 b

__m256i _mm256_maskz_madd_epi16(__mmask8 k, __m256i a,
                                __m256i b)

Intel Description

Multiply packed signed 16-bit integers in “a” and “b”, producing intermediate signed 32-bit integers. Horizontally add adjacent pairs of intermediate 32-bit integers, and pack the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := SignExtend32(a[i+31:i+16]*b[i+31:i+16]) + SignExtend32(a[i+15:i]*b[i+15:i])
        ELSE
                dst[i+31:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_max_epi8#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask32 k, __m256i a, __m256i b

Param ETypes:

UI8 src, MASK k, SI8 a, SI8 b

__m256i _mm256_mask_max_epi8(__m256i src, __mmask32 k,
                             __m256i a, __m256i b)

Intel Description

Compare packed signed 8-bit integers in “a” and “b”, and store packed maximum values in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 31
        i := j*8
        IF k[j]
                dst[i+7:i] := MAX(a[i+7:i], b[i+7:i])
        ELSE
                dst[i+7:i] := src[i+7:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_max_epi8#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask32 k, __m256i a, __m256i b

Param ETypes:

MASK k, SI8 a, SI8 b

__m256i _mm256_maskz_max_epi8(__mmask32 k, __m256i a,
                              __m256i b)

Intel Description

Compare packed signed 8-bit integers in “a” and “b”, and store packed maximum values in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 31
        i := j*8
        IF k[j]
                dst[i+7:i] := MAX(a[i+7:i], b[i+7:i])
        ELSE
                dst[i+7:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_max_epi16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask16 k, __m256i a, __m256i b

Param ETypes:

UI16 src, MASK k, SI16 a, SI16 b

__m256i _mm256_mask_max_epi16(__m256i src, __mmask16 k,
                              __m256i a, __m256i b)

Intel Description

Compare packed signed 16-bit integers in “a” and “b”, and store packed maximum values in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        i := j*16
        IF k[j]
                dst[i+15:i] := MAX(a[i+15:i], b[i+15:i])
        ELSE
                dst[i+15:i] := src[i+15:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_max_epi16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask16 k, __m256i a, __m256i b

Param ETypes:

MASK k, SI16 a, SI16 b

__m256i _mm256_maskz_max_epi16(__mmask16 k, __m256i a,
                               __m256i b)

Intel Description

Compare packed signed 16-bit integers in “a” and “b”, and store packed maximum values in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        i := j*16
        IF k[j]
                dst[i+15:i] := MAX(a[i+15:i], b[i+15:i])
        ELSE
                dst[i+15:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_max_epu8#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask32 k, __m256i a, __m256i b

Param ETypes:

UI8 src, MASK k, UI8 a, UI8 b

__m256i _mm256_mask_max_epu8(__m256i src, __mmask32 k,
                             __m256i a, __m256i b)

Intel Description

Compare packed unsigned 8-bit integers in “a” and “b”, and store packed maximum values in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 31
        i := j*8
        IF k[j]
                dst[i+7:i] := MAX(a[i+7:i], b[i+7:i])
        ELSE
                dst[i+7:i] := src[i+7:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_max_epu8#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask32 k, __m256i a, __m256i b

Param ETypes:

MASK k, UI8 a, UI8 b

__m256i _mm256_maskz_max_epu8(__mmask32 k, __m256i a,
                              __m256i b)

Intel Description

Compare packed unsigned 8-bit integers in “a” and “b”, and store packed maximum values in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 31
        i := j*8
        IF k[j]
                dst[i+7:i] := MAX(a[i+7:i], b[i+7:i])
        ELSE
                dst[i+7:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_max_epu16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask16 k, __m256i a, __m256i b

Param ETypes:

UI16 src, MASK k, UI16 a, UI16 b

__m256i _mm256_mask_max_epu16(__m256i src, __mmask16 k,
                              __m256i a, __m256i b)

Intel Description

Compare packed unsigned 16-bit integers in “a” and “b”, and store packed maximum values in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        i := j*16
        IF k[j]
                dst[i+15:i] := MAX(a[i+15:i], b[i+15:i])
        ELSE
                dst[i+15:i] := src[i+15:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_max_epu16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask16 k, __m256i a, __m256i b

Param ETypes:

MASK k, UI16 a, UI16 b

__m256i _mm256_maskz_max_epu16(__mmask16 k, __m256i a,
                               __m256i b)

Intel Description

Compare packed unsigned 16-bit integers in “a” and “b”, and store packed maximum values in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        i := j*16
        IF k[j]
                dst[i+15:i] := MAX(a[i+15:i], b[i+15:i])
        ELSE
                dst[i+15:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_min_epi8#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask32 k, __m256i a, __m256i b

Param ETypes:

UI8 src, MASK k, SI8 a, SI8 b

__m256i _mm256_mask_min_epi8(__m256i src, __mmask32 k,
                             __m256i a, __m256i b)

Intel Description

Compare packed signed 8-bit integers in “a” and “b”, and store packed minimum values in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 31
        i := j*8
        IF k[j]
                dst[i+7:i] := MIN(a[i+7:i], b[i+7:i])
        ELSE
                dst[i+7:i] := src[i+7:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_min_epi8#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask32 k, __m256i a, __m256i b

Param ETypes:

MASK k, SI8 a, SI8 b

__m256i _mm256_maskz_min_epi8(__mmask32 k, __m256i a,
                              __m256i b)

Intel Description

Compare packed signed 8-bit integers in “a” and “b”, and store packed minimum values in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 31
        i := j*8
        IF k[j]
                dst[i+7:i] := MIN(a[i+7:i], b[i+7:i])
        ELSE
                dst[i+7:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_min_epi16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask16 k, __m256i a, __m256i b

Param ETypes:

UI16 src, MASK k, SI16 a, SI16 b

__m256i _mm256_mask_min_epi16(__m256i src, __mmask16 k,
                              __m256i a, __m256i b)

Intel Description

Compare packed signed 16-bit integers in “a” and “b”, and store packed minimum values in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        i := j*16
        IF k[j]
                dst[i+15:i] := MIN(a[i+15:i], b[i+15:i])
        ELSE
                dst[i+15:i] := src[i+15:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_min_epi16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask16 k, __m256i a, __m256i b

Param ETypes:

MASK k, SI16 a, SI16 b

__m256i _mm256_maskz_min_epi16(__mmask16 k, __m256i a,
                               __m256i b)

Intel Description

Compare packed signed 16-bit integers in “a” and “b”, and store packed minimum values in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        i := j*16
        IF k[j]
                dst[i+15:i] := MIN(a[i+15:i], b[i+15:i])
        ELSE
                dst[i+15:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_min_epu8#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask32 k, __m256i a, __m256i b

Param ETypes:

UI8 src, MASK k, UI8 a, UI8 b

__m256i _mm256_mask_min_epu8(__m256i src, __mmask32 k,
                             __m256i a, __m256i b)

Intel Description

Compare packed unsigned 8-bit integers in “a” and “b”, and store packed minimum values in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 31
        i := j*8
        IF k[j]
                dst[i+7:i] := MIN(a[i+7:i], b[i+7:i])
        ELSE
                dst[i+7:i] := src[i+7:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_min_epu8#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask32 k, __m256i a, __m256i b

Param ETypes:

MASK k, UI8 a, UI8 b

__m256i _mm256_maskz_min_epu8(__mmask32 k, __m256i a,
                              __m256i b)

Intel Description

Compare packed unsigned 8-bit integers in “a” and “b”, and store packed minimum values in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 31
        i := j*8
        IF k[j]
                dst[i+7:i] := MIN(a[i+7:i], b[i+7:i])
        ELSE
                dst[i+7:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_min_epu16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask16 k, __m256i a, __m256i b

Param ETypes:

UI16 src, MASK k, UI16 a, UI16 b

__m256i _mm256_mask_min_epu16(__m256i src, __mmask16 k,
                              __m256i a, __m256i b)

Intel Description

Compare packed unsigned 16-bit integers in “a” and “b”, and store packed minimum values in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        i := j*16
        IF k[j]
                dst[i+15:i] := MIN(a[i+15:i], b[i+15:i])
        ELSE
                dst[i+15:i] := src[i+15:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_min_epu16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask16 k, __m256i a, __m256i b

Param ETypes:

MASK k, UI16 a, UI16 b

__m256i _mm256_maskz_min_epu16(__mmask16 k, __m256i a,
                               __m256i b)

Intel Description

Compare packed unsigned 16-bit integers in “a” and “b”, and store packed minimum values in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        i := j*16
        IF k[j]
                dst[i+15:i] := MIN(a[i+15:i], b[i+15:i])
        ELSE
                dst[i+15:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_mulhrs_epi16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask16 k, __m256i a, __m256i b

Param ETypes:

UI16 src, MASK k, SI16 a, SI16 b

__m256i _mm256_mask_mulhrs_epi16(__m256i src, __mmask16 k,
                                 __m256i a, __m256i b)

Intel Description

Multiply packed signed 16-bit integers in “a” and “b”, producing intermediate signed 32-bit integers. Truncate each intermediate integer to the 18 most significant bits, round by adding 1, and store bits [16:1] to “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        i := j*16
        IF k[j]
                tmp[31:0] := ((SignExtend32(a[i+15:i]) * SignExtend32(b[i+15:i])) >> 14) + 1
                dst[i+15:i] := tmp[16:1]
        ELSE
                dst[i+15:i] := src[i+15:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_mulhrs_epi16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask16 k, __m256i a, __m256i b

Param ETypes:

MASK k, SI16 a, SI16 b

__m256i _mm256_maskz_mulhrs_epi16(__mmask16 k, __m256i a,
                                  __m256i b)

Intel Description

Multiply packed signed 16-bit integers in “a” and “b”, producing intermediate signed 32-bit integers. Truncate each intermediate integer to the 18 most significant bits, round by adding 1, and store bits [16:1] to “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        i := j*16
        IF k[j]
                tmp[31:0] := ((SignExtend32(a[i+15:i]) * SignExtend32(b[i+15:i])) >> 14) + 1
                dst[i+15:i] := tmp[16:1]
        ELSE
                dst[i+15:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_mulhi_epu16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask16 k, __m256i a, __m256i b

Param ETypes:

UI16 src, MASK k, UI16 a, UI16 b

__m256i _mm256_mask_mulhi_epu16(__m256i src, __mmask16 k,
                                __m256i a, __m256i b)

Intel Description

Multiply the packed unsigned 16-bit integers in “a” and “b”, producing intermediate 32-bit integers, and store the high 16 bits of the intermediate integers in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        i := j*16
        IF k[j]
                tmp[31:0] := a[i+15:i] * b[i+15:i]
                dst[i+15:i] := tmp[31:16]
        ELSE
                dst[i+15:i] := src[i+15:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_mulhi_epu16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask16 k, __m256i a, __m256i b

Param ETypes:

MASK k, UI16 a, UI16 b

__m256i _mm256_maskz_mulhi_epu16(__mmask16 k, __m256i a,
                                 __m256i b)

Intel Description

Multiply the packed unsigned 16-bit integers in “a” and “b”, producing intermediate 32-bit integers, and store the high 16 bits of the intermediate integers in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        i := j*16
        IF k[j]
                tmp[31:0] := a[i+15:i] * b[i+15:i]
                dst[i+15:i] := tmp[31:16]
        ELSE
                dst[i+15:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_mulhi_epi16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask16 k, __m256i a, __m256i b

Param ETypes:

UI16 src, MASK k, SI16 a, SI16 b

__m256i _mm256_mask_mulhi_epi16(__m256i src, __mmask16 k,
                                __m256i a, __m256i b)

Intel Description

Multiply the packed signed 16-bit integers in “a” and “b”, producing intermediate 32-bit integers, and store the high 16 bits of the intermediate integers in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        i := j*16
        IF k[j]
                tmp[31:0] := SignExtend32(a[i+15:i]) * SignExtend32(b[i+15:i])
                dst[i+15:i] := tmp[31:16]
        ELSE
                dst[i+15:i] := src[i+15:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_mulhi_epi16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask16 k, __m256i a, __m256i b

Param ETypes:

MASK k, SI16 a, SI16 b

__m256i _mm256_maskz_mulhi_epi16(__mmask16 k, __m256i a,
                                 __m256i b)

Intel Description

Multiply the packed signed 16-bit integers in “a” and “b”, producing intermediate 32-bit integers, and store the high 16 bits of the intermediate integers in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        i := j*16
        IF k[j]
                tmp[31:0] := SignExtend32(a[i+15:i]) * SignExtend32(b[i+15:i])
                dst[i+15:i] := tmp[31:16]
        ELSE
                dst[i+15:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_mullo_epi16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask16 k, __m256i a, __m256i b

Param ETypes:

UI16 src, MASK k, UI16 a, UI16 b

__m256i _mm256_mask_mullo_epi16(__m256i src, __mmask16 k,
                                __m256i a, __m256i b)

Intel Description

Multiply the packed 16-bit integers in “a” and “b”, producing intermediate 32-bit integers, and store the low 16 bits of the intermediate integers in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        i := j*16
        IF k[j]
                tmp[31:0] := SignExtend32(a[i+15:i]) * SignExtend32(b[i+15:i])
                dst[i+15:i] := tmp[15:0]
        ELSE
                dst[i+15:i] := src[i+15:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_mullo_epi16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask16 k, __m256i a, __m256i b

Param ETypes:

MASK k, UI16 a, UI16 b

__m256i _mm256_maskz_mullo_epi16(__mmask16 k, __m256i a,
                                 __m256i b)

Intel Description

Multiply the packed 16-bit integers in “a” and “b”, producing intermediate 32-bit integers, and store the low 16 bits of the intermediate integers in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        i := j*16
        IF k[j]
                tmp[31:0] := SignExtend32(a[i+15:i]) * SignExtend32(b[i+15:i])
                dst[i+15:i] := tmp[15:0]
        ELSE
                dst[i+15:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_sub_epi8#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask32 k, __m256i a, __m256i b

Param ETypes:

UI8 src, MASK k, UI8 a, UI8 b

__m256i _mm256_mask_sub_epi8(__m256i src, __mmask32 k,
                             __m256i a, __m256i b)

Intel Description

Subtract packed 8-bit integers in “b” from packed 8-bit integers in “a”, and store the results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 31
        i := j*8
        IF k[j]
                dst[i+7:i] := a[i+7:i] - b[i+7:i]
        ELSE
                dst[i+7:i] := src[i+7:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_sub_epi8#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask32 k, __m256i a, __m256i b

Param ETypes:

MASK k, UI8 a, UI8 b

__m256i _mm256_maskz_sub_epi8(__mmask32 k, __m256i a,
                              __m256i b)

Intel Description

Subtract packed 8-bit integers in “b” from packed 8-bit integers in “a”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 31
        i := j*8
        IF k[j]
                dst[i+7:i] := a[i+7:i] - b[i+7:i]
        ELSE
                dst[i+7:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_subs_epi8#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask32 k, __m256i a, __m256i b

Param ETypes:

UI8 src, MASK k, SI8 a, SI8 b

__m256i _mm256_mask_subs_epi8(__m256i src, __mmask32 k,
                              __m256i a, __m256i b)

Intel Description

Subtract packed signed 8-bit integers in “b” from packed 8-bit integers in “a” using saturation, and store the results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 31
        i := j*8
        IF k[j]
                dst[i+7:i] := Saturate8(a[i+7:i] - b[i+7:i])
        ELSE
                dst[i+7:i] := src[i+7:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_subs_epi8#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask32 k, __m256i a, __m256i b

Param ETypes:

MASK k, SI8 a, SI8 b

__m256i _mm256_maskz_subs_epi8(__mmask32 k, __m256i a,
                               __m256i b)

Intel Description

Subtract packed signed 8-bit integers in “b” from packed 8-bit integers in “a” using saturation, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 31
        i := j*8
        IF k[j]
                dst[i+7:i] := Saturate8(a[i+7:i] - b[i+7:i])
        ELSE
                dst[i+7:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_subs_epi16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask16 k, __m256i a, __m256i b

Param ETypes:

UI16 src, MASK k, SI16 a, SI16 b

__m256i _mm256_mask_subs_epi16(__m256i src, __mmask16 k,
                               __m256i a, __m256i b)

Intel Description

Subtract packed signed 16-bit integers in “b” from packed 16-bit integers in “a” using saturation, and store the results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        i := j*16
        IF k[j]
                dst[i+15:i] := Saturate16(a[i+15:i] - b[i+15:i])
        ELSE
                dst[i+15:i] := src[i+15:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_subs_epi16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask16 k, __m256i a, __m256i b

Param ETypes:

MASK k, SI16 a, SI16 b

__m256i _mm256_maskz_subs_epi16(__mmask16 k, __m256i a,
                                __m256i b)

Intel Description

Subtract packed signed 16-bit integers in “b” from packed 16-bit integers in “a” using saturation, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        i := j*16
        IF k[j]
                dst[i+15:i] := Saturate16(a[i+15:i] - b[i+15:i])
        ELSE
                dst[i+15:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_subs_epu8#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask32 k, __m256i a, __m256i b

Param ETypes:

UI8 src, MASK k, UI8 a, UI8 b

__m256i _mm256_mask_subs_epu8(__m256i src, __mmask32 k,
                              __m256i a, __m256i b)

Intel Description

Subtract packed unsigned 8-bit integers in “b” from packed unsigned 8-bit integers in “a” using saturation, and store the results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 31
        i := j*8
        IF k[j]
                dst[i+7:i] := SaturateU8(a[i+7:i] - b[i+7:i])
        ELSE
                dst[i+7:i] := src[i+7:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_subs_epu8#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask32 k, __m256i a, __m256i b

Param ETypes:

MASK k, UI8 a, UI8 b

__m256i _mm256_maskz_subs_epu8(__mmask32 k, __m256i a,
                               __m256i b)

Intel Description

Subtract packed unsigned 8-bit integers in “b” from packed unsigned 8-bit integers in “a” using saturation, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 31
        i := j*8
        IF k[j]
                dst[i+7:i] := SaturateU8(a[i+7:i] - b[i+7:i])
        ELSE
                dst[i+7:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_subs_epu16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask16 k, __m256i a, __m256i b

Param ETypes:

UI16 src, MASK k, UI16 a, UI16 b

__m256i _mm256_mask_subs_epu16(__m256i src, __mmask16 k,
                               __m256i a, __m256i b)

Intel Description

Subtract packed unsigned 16-bit integers in “b” from packed unsigned 16-bit integers in “a” using saturation, and store the results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        i := j*16
        IF k[j]
                dst[i+15:i] := SaturateU16(a[i+15:i] - b[i+15:i])
        ELSE
                dst[i+15:i] := src[i+15:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_subs_epu16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask16 k, __m256i a, __m256i b

Param ETypes:

MASK k, UI16 a, UI16 b

__m256i _mm256_maskz_subs_epu16(__mmask16 k, __m256i a,
                                __m256i b)

Intel Description

Subtract packed unsigned 16-bit integers in “b” from packed unsigned 16-bit integers in “a” using saturation, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        i := j*16
        IF k[j]
                dst[i+15:i] := SaturateU16(a[i+15:i] - b[i+15:i])
        ELSE
                dst[i+15:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_sub_epi16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask16 k, __m256i a, __m256i b

Param ETypes:

UI16 src, MASK k, UI16 a, UI16 b

__m256i _mm256_mask_sub_epi16(__m256i src, __mmask16 k,
                              __m256i a, __m256i b)

Intel Description

Subtract packed 16-bit integers in “b” from packed 16-bit integers in “a”, and store the results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        i := j*16
        IF k[j]
                dst[i+15:i] := a[i+15:i] - b[i+15:i]
        ELSE
                dst[i+15:i] := src[i+15:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_sub_epi16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask16 k, __m256i a, __m256i b

Param ETypes:

MASK k, UI16 a, UI16 b

__m256i _mm256_maskz_sub_epi16(__mmask16 k, __m256i a,
                               __m256i b)

Intel Description

Subtract packed 16-bit integers in “b” from packed 16-bit integers in “a”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        i := j*16
        IF k[j]
                dst[i+15:i] := a[i+15:i] - b[i+15:i]
        ELSE
                dst[i+15:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_reduce_add_epi16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

short

Param Types:

__m256i a

Param ETypes:

SI16 a

short _mm256_reduce_add_epi16(__m256i a);

Intel Description

Reduce the packed 16-bit integers in “a” by addition. Returns the sum of all elements in “a”.

Intel Implementation Psudeo-Code

DEFINE REDUCE_ADD(src, len) {
        IF len == 2
                RETURN src[15:0] + src[31:16]
        FI
        len := len / 2
        FOR j:= 0 to (len-1)
                i := j*16
                src[i+15:i] := src[i+15:i] + src[i+16*len+31:i+16*len]
        ENDFOR
        RETURN REDUCE_ADD(src[16*len-1:0], len)
}
dst[15:0] := REDUCE_ADD(a, 16)

_mm256_mask_reduce_add_epi16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

short

Param Types:

__mmask16 k, __m256i a

Param ETypes:

MASK k, SI16 a

short _mm256_mask_reduce_add_epi16(__mmask16 k, __m256i a);

Intel Description

Reduce the packed 16-bit integers in “a” by addition using mask “k”. Returns the sum of all active elements in “a”.

Intel Implementation Psudeo-Code

DEFINE REDUCE_ADD(src, len) {
        IF len == 2
                RETURN src[15:0] + src[31:16]
        FI
        len := len / 2
        FOR j:= 0 to (len-1)
                i := j*16
                src[i+15:i] := src[i+15:i] + src[i+16*len+15:i+16*len]
        ENDFOR
        RETURN REDUCE_ADD(src[16*len-1:0], len)
}
tmp := a
FOR j := 0 to 15
        i := j*16
        IF k[j]
                tmp[i+15:i] := a[i+15:i]
        ELSE
                tmp[i+15:i] := 0
        FI
ENDFOR
dst[15:0] := REDUCE_ADD(tmp, 16)

_mm256_reduce_add_epi8#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

char

Param Types:

__m256i a

Param ETypes:

SI8 a

char _mm256_reduce_add_epi8(__m256i a);

Intel Description

Reduce the packed 8-bit integers in “a” by addition. Returns the sum of all elements in “a”.

Intel Implementation Psudeo-Code

DEFINE REDUCE_ADD(src, len) {
        IF len == 2
                RETURN src[7:0] + src[15:8]
        FI
        len := len / 2
        FOR j:= 0 to (len-1)
                i := j*8
                src[i+7:i] := src[i+7:i] + src[i+8*len+15:i+8*len]
        ENDFOR
        RETURN REDUCE_ADD(src[8*len-1:0], len)
}
dst[7:0] := REDUCE_ADD(a, 32)

_mm256_mask_reduce_add_epi8#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

char

Param Types:

__mmask32 k, __m256i a

Param ETypes:

MASK k, SI8 a

char _mm256_mask_reduce_add_epi8(__mmask32 k, __m256i a);

Intel Description

Reduce the packed 8-bit integers in “a” by addition using mask “k”. Returns the sum of all active elements in “a”.

Intel Implementation Psudeo-Code

DEFINE REDUCE_ADD(src, len) {
        IF len == 2
                RETURN src[7:0] + src[15:8]
        FI
        len := len / 2
        FOR j:= 0 to (len-1)
                i := j*8
                src[i+7:i] := src[i+7:i] + src[i+8*len+7:i+8*len]
        ENDFOR
        RETURN REDUCE_ADD(src[8*len-1:0], len)
}
tmp := a
FOR j := 0 to 31
        i := j*8
        IF k[j]
                tmp[i+7:i] := a[i+7:i]
        ELSE
                tmp[i+7:i] := 0
        FI
ENDFOR
dst[7:0] := REDUCE_ADD(tmp, 32)

_mm256_reduce_mul_epi16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

short

Param Types:

__m256i a

Param ETypes:

SI16 a

short _mm256_reduce_mul_epi16(__m256i a);

Intel Description

Reduce the packed 16-bit integers in “a” by multiplication. Returns the sum of all elements in “a”.

Intel Implementation Psudeo-Code

DEFINE REDUCE_MUL(src, len) {
        IF len == 2
                RETURN src[15:0] * src[31:16]
        FI
        len := len / 2
        FOR j:= 0 to (len-1)
                i := j*16
                src[i+15:i] := src[i+15:i] * src[i+16*len+31:i+16*len]
        ENDFOR
        RETURN REDUCE_MUL(src[16*len-1:0], len)
}
dst[15:0] := REDUCE_MUL(a, 16)

_mm256_mask_reduce_mul_epi16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

short

Param Types:

__mmask16 k, __m256i a

Param ETypes:

MASK k, SI16 a

short _mm256_mask_reduce_mul_epi16(__mmask16 k, __m256i a);

Intel Description

Reduce the packed 16-bit integers in “a” by multiplication using mask “k”. Returns the sum of all active elements in “a”.

Intel Implementation Psudeo-Code

DEFINE REDUCE_MUL(src, len) {
        IF len == 2
                RETURN src[15:0] * src[31:16]
        FI
        len := len / 2
        FOR j:= 0 to (len-1)
                i := j*16
                src[i+15:i] := src[i+15:i] * src[i+16*len+15:i+16*len]
        ENDFOR
        RETURN REDUCE_MUL(src[16*len-1:0], len)
}
tmp := a
FOR j := 0 to 15
        i := j*16
        IF k[j]
                tmp[i+15:i] := a[i+15:i]
        ELSE
                tmp[i+15:i] := 1
        FI
ENDFOR
dst[15:0] := REDUCE_MUL(tmp, 16)

_mm256_reduce_mul_epi8#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

char

Param Types:

__m256i a

Param ETypes:

SI8 a

char _mm256_reduce_mul_epi8(__m256i a);

Intel Description

Reduce the packed 8-bit integers in “a” by multiplication. Returns the sum of all elements in “a”.

Intel Implementation Psudeo-Code

DEFINE REDUCE_MUL(src, len) {
        IF len == 2
                RETURN src[7:0] * src[15:8]
        FI
        len := len / 2
        FOR j:= 0 to (len-1)
                i := j*8
                src[i+7:i] := src[i+7:i] * src[i+8*len+15:i+8*len]
        ENDFOR
        RETURN REDUCE_MUL(src[8*len-1:0], len)
}
dst[7:0] := REDUCE_MUL(a, 32)

_mm256_mask_reduce_mul_epi8#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

char

Param Types:

__mmask32 k, __m256i a

Param ETypes:

MASK k, SI8 a

char _mm256_mask_reduce_mul_epi8(__mmask32 k, __m256i a);

Intel Description

Reduce the packed 8-bit integers in “a” by multiplication using mask “k”. Returns the sum of all active elements in “a”.

Intel Implementation Psudeo-Code

DEFINE REDUCE_MUL(src, len) {
        IF len == 2
                RETURN src[7:0] * src[15:8]
        FI
        len := len / 2
        FOR j:= 0 to (len-1)
                i := j*8
                src[i+7:i] := src[i+7:i] * src[i+8*len+7:i+8*len]
        ENDFOR
        RETURN REDUCE_MUL(src[8*len-1:0], len)
}
tmp := a
FOR j := 0 to 31
        i := j*8
        IF k[j]
                tmp[i+7:i] := a[i+7:i]
        ELSE
                tmp[i+7:i] := 1
        FI
ENDFOR
dst[7:0] := REDUCE_MUL(tmp, 32)

_mm256_reduce_or_epi16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

short

Param Types:

__m256i a

Param ETypes:

SI16 a

short _mm256_reduce_or_epi16(__m256i a);

Intel Description

Reduce the packed 16-bit integers in “a” by multiplication. Returns the sum of all elements in “a”.

Intel Implementation Psudeo-Code

DEFINE REDUCE_OR(src, len) {
        IF len == 2
                RETURN src[15:0] OR src[31:16]
        FI
        len := len / 2
        FOR j:= 0 to (len-1)
                i := j*16
                src[i+15:i] := src[i+15:i] OR src[i+16*len+31:i+16*len]
        ENDFOR
        RETURN REDUCE_OR(src[16*len-1:0], len)
}
dst[15:0] := REDUCE_OR(a, 16)

_mm256_mask_reduce_or_epi16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

short

Param Types:

__mmask16 k, __m256i a

Param ETypes:

MASK k, SI16 a

short _mm256_mask_reduce_or_epi16(__mmask16 k, __m256i a);

Intel Description

Reduce the packed 16-bit integers in “a” by multiplication using mask “k”. Returns the sum of all active elements in “a”.

Intel Implementation Psudeo-Code

DEFINE REDUCE_OR(src, len) {
        IF len == 2
                RETURN src[15:0] OR src[31:16]
        FI
        len := len / 2
        FOR j:= 0 to (len-1)
                i := j*16
                src[i+15:i] := src[i+15:i] OR src[i+16*len+15:i+16*len]
        ENDFOR
        RETURN REDUCE_OR(src[16*len-1:0], len)
}
tmp := a
FOR j := 0 to 15
        i := j*16
        IF k[j]
                tmp[i+15:i] := a[i+15:i]
        ELSE
                tmp[i+15:i] := 0
        FI
ENDFOR
dst[15:0] := REDUCE_OR(tmp, 16)

_mm256_reduce_or_epi8#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

char

Param Types:

__m256i a

Param ETypes:

SI8 a

char _mm256_reduce_or_epi8(__m256i a);

Intel Description

Reduce the packed 8-bit integers in “a” by multiplication. Returns the sum of all elements in “a”.

Intel Implementation Psudeo-Code

DEFINE REDUCE_OR(src, len) {
        IF len == 2
                RETURN src[7:0] OR src[15:8]
        FI
        len := len / 2
        FOR j:= 0 to (len-1)
                i := j*8
                src[i+7:i] := src[i+7:i] OR src[i+8*len+15:i+8*len]
        ENDFOR
        RETURN REDUCE_OR(src[8*len-1:0], len)
}
dst[7:0] := REDUCE_OR(a, 32)

_mm256_mask_reduce_or_epi8#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

char

Param Types:

__mmask32 k, __m256i a

Param ETypes:

MASK k, SI8 a

char _mm256_mask_reduce_or_epi8(__mmask32 k, __m256i a);

Intel Description

Reduce the packed 8-bit integers in “a” by multiplication using mask “k”. Returns the sum of all active elements in “a”.

Intel Implementation Psudeo-Code

DEFINE REDUCE_OR(src, len) {
        IF len == 2
                RETURN src[7:0] OR src[15:8]
        FI
        len := len / 2
        FOR j:= 0 to (len-1)
                i := j*8
                src[i+7:i] := src[i+7:i] OR src[i+8*len+7:i+8*len]
        ENDFOR
        RETURN REDUCE_OR(src[8*len-1:0], len)
}
tmp := a
FOR j := 0 to 31
        i := j*8
        IF k[j]
                tmp[i+7:i] := a[i+7:i]
        ELSE
                tmp[i+7:i] := 0
        FI
ENDFOR
dst[7:0] := REDUCE_OR(tmp, 32)

_mm256_reduce_and_epi16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

short

Param Types:

__m256i a

Param ETypes:

SI16 a

short _mm256_reduce_and_epi16(__m256i a);

Intel Description

Reduce the packed 16-bit integers in “a” by multiplication. Returns the sum of all elements in “a”.

Intel Implementation Psudeo-Code

DEFINE REDUCE_AND(src, len) {
        IF len == 2
                RETURN src[15:0] AND src[31:16]
        FI
        len := len / 2
        FOR j:= 0 to (len-1)
                i := j*16
                src[i+15:i] := src[i+15:i] AND src[i+16*len+31:i+16*len]
        ENDFOR
        RETURN REDUCE_AND(src[16*len-1:0], len)
}
dst[15:0] := REDUCE_AND(a, 16)

_mm256_mask_reduce_and_epi16#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

short

Param Types:

__mmask16 k, __m256i a

Param ETypes:

MASK k, SI16 a

short _mm256_mask_reduce_and_epi16(__mmask16 k, __m256i a);

Intel Description

Reduce the packed 16-bit integers in “a” by multiplication using mask “k”. Returns the sum of all active elements in “a”.

Intel Implementation Psudeo-Code

DEFINE REDUCE_AND(src, len) {
        IF len == 2
                RETURN src[15:0] AND src[31:16]
        FI
        len := len / 2
        FOR j:= 0 to (len-1)
                i := j*16
                src[i+15:i] := src[i+15:i] AND src[i+16*len+15:i+16*len]
        ENDFOR
        RETURN REDUCE_AND(src[16*len-1:0], len)
}
tmp := a
FOR j := 0 to 15
        i := j*16
        IF k[j]
                tmp[i+15:i] := a[i+15:i]
        ELSE
                tmp[i+15:i] := 0xFFFF
        FI
ENDFOR
dst[15:0] := REDUCE_AND(tmp, 16)

_mm256_reduce_and_epi8#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

char

Param Types:

__m256i a

Param ETypes:

SI8 a

char _mm256_reduce_and_epi8(__m256i a);

Intel Description

Reduce the packed 8-bit integers in “a” by multiplication. Returns the sum of all elements in “a”.

Intel Implementation Psudeo-Code

DEFINE REDUCE_AND(src, len) {
        IF len == 2
                RETURN src[7:0] AND src[15:8]
        FI
        len := len / 2
        FOR j:= 0 to (len-1)
                i := j*8
                src[i+7:i] := src[i+7:i] AND src[i+8*len+15:i+8*len]
        ENDFOR
        RETURN REDUCE_AND(src[8*len-1:0], len)
}
dst[7:0] := REDUCE_AND(a, 32)

_mm256_mask_reduce_and_epi8#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

char

Param Types:

__mmask32 k, __m256i a

Param ETypes:

MASK k, SI8 a

char _mm256_mask_reduce_and_epi8(__mmask32 k, __m256i a);

Intel Description

Reduce the packed 8-bit integers in “a” by multiplication using mask “k”. Returns the sum of all active elements in “a”.

Intel Implementation Psudeo-Code

DEFINE REDUCE_AND(src, len) {
        IF len == 2
                RETURN src[7:0] AND src[15:8]
        FI
        len := len / 2
        FOR j:= 0 to (len-1)
                i := j*8
                src[i+7:i] := src[i+7:i] AND src[i+8*len+7:i+8*len]
        ENDFOR
        RETURN REDUCE_AND(src[8*len-1:0], len)
}
tmp := a
FOR j := 0 to 31
        i := j*8
        IF k[j]
                tmp[i+7:i] := a[i+7:i]
        ELSE
                tmp[i+7:i] := 0xFF
        FI
ENDFOR
dst[7:0] := REDUCE_AND(tmp, 32)

_mm256_mask_mullo_epi64#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask8 k, __m256i a, __m256i b

Param ETypes:

UI64 src, MASK k, UI64 a, UI64 b

__m256i _mm256_mask_mullo_epi64(__m256i src, __mmask8 k,
                                __m256i a, __m256i b)

Intel Description

Multiply the packed 64-bit integers in “a” and “b”, producing intermediate 128-bit integers, and store the low 64 bits of the intermediate integers in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                tmp[127:0] := a[i+63:i] * b[i+63:i]
                dst[i+63:i] := tmp[63:0]
        ELSE
                dst[i+63:i] := src[i+63:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_mullo_epi64#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask8 k, __m256i a, __m256i b

Param ETypes:

MASK k, UI64 a, UI64 b

__m256i _mm256_maskz_mullo_epi64(__mmask8 k, __m256i a,
                                 __m256i b)

Intel Description

Multiply the packed 64-bit integers in “a” and “b”, producing intermediate 128-bit integers, and store the low 64 bits of the intermediate integers in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                tmp[127:0] := a[i+63:i] * b[i+63:i]
                dst[i+63:i] := tmp[63:0]
        ELSE
                dst[i+63:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mullo_epi64#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i a, __m256i b

Param ETypes:

UI64 a, UI64 b

__m256i _mm256_mullo_epi64(__m256i a, __m256i b);

Intel Description

Multiply the packed 64-bit integers in “a” and “b”, producing intermediate 128-bit integers, and store the low 64 bits of the intermediate integers in “dst”.

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        tmp[127:0] := a[i+63:i] * b[i+63:i]
        dst[i+63:i] := tmp[63:0]
ENDFOR
dst[MAX:256] := 0

_mm256_mask_add_pd#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256d

Param Types:

__m256d src, __mmask8 k, __m256d a, __m256d b

Param ETypes:

FP64 src, MASK k, FP64 a, FP64 b

__m256d _mm256_mask_add_pd(__m256d src, __mmask8 k,
                           __m256d a, __m256d b)

Intel Description

Add packed double-precision (64-bit) floating-point elements in “a” and “b”, and store the results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := a[i+63:i] + b[i+63:i]
        ELSE
                dst[i+63:i] := src[i+63:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_add_pd#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256d

Param Types:

__mmask8 k, __m256d a, __m256d b

Param ETypes:

MASK k, FP64 a, FP64 b

__m256d _mm256_maskz_add_pd(__mmask8 k, __m256d a,
                            __m256d b)

Intel Description

Add packed double-precision (64-bit) floating-point elements in “a” and “b”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := a[i+63:i] + b[i+63:i]
        ELSE
                dst[i+63:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_add_ps#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256

Param Types:

__m256 src, __mmask8 k, __m256 a, __m256 b

Param ETypes:

FP32 src, MASK k, FP32 a, FP32 b

__m256 _mm256_mask_add_ps(__m256 src, __mmask8 k, __m256 a,
                          __m256 b)

Intel Description

Add packed single-precision (32-bit) floating-point elements in “a” and “b”, and store the results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := a[i+31:i] + b[i+31:i]
        ELSE
                dst[i+31:i] := src[i+31:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_add_ps#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256

Param Types:

__mmask8 k, __m256 a, __m256 b

Param ETypes:

MASK k, FP32 a, FP32 b

__m256 _mm256_maskz_add_ps(__mmask8 k, __m256 a, __m256 b);

Intel Description

Add packed single-precision (32-bit) floating-point elements in “a” and “b”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := a[i+31:i] + b[i+31:i]
        ELSE
                dst[i+31:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_div_pd#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256d

Param Types:

__m256d src, __mmask8 k, __m256d a, __m256d b

Param ETypes:

FP64 src, MASK k, FP64 a, FP64 b

__m256d _mm256_mask_div_pd(__m256d src, __mmask8 k,
                           __m256d a, __m256d b)

Intel Description

Divide packed double-precision (64-bit) floating-point elements in “a” by packed elements in “b”, and store the results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := 64*j
        IF k[j]
                dst[i+63:i] := a[i+63:i] / b[i+63:i]
        ELSE
                dst[i+63:i] := src[i+63:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_div_pd#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256d

Param Types:

__mmask8 k, __m256d a, __m256d b

Param ETypes:

MASK k, FP64 a, FP64 b

__m256d _mm256_maskz_div_pd(__mmask8 k, __m256d a,
                            __m256d b)

Intel Description

Divide packed double-precision (64-bit) floating-point elements in “a” by packed elements in “b”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := 64*j
        IF k[j]
                dst[i+63:i] := a[i+63:i] / b[i+63:i]
        ELSE
                dst[i+63:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_div_ps#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256

Param Types:

__m256 src, __mmask8 k, __m256 a, __m256 b

Param ETypes:

FP32 src, MASK k, FP32 a, FP32 b

__m256 _mm256_mask_div_ps(__m256 src, __mmask8 k, __m256 a,
                          __m256 b)

Intel Description

Divide packed single-precision (32-bit) floating-point elements in “a” by packed elements in “b”, and store the results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := 32*j
        IF k[j]
                dst[i+31:i] := a[i+31:i] / b[i+31:i]
        ELSE
                dst[i+31:i] := src[i+31:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_div_ps#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256

Param Types:

__mmask8 k, __m256 a, __m256 b

Param ETypes:

MASK k, FP32 a, FP32 b

__m256 _mm256_maskz_div_ps(__mmask8 k, __m256 a, __m256 b);

Intel Description

Divide packed single-precision (32-bit) floating-point elements in “a” by packed elements in “b”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := 32*j
        IF k[j]
                dst[i+31:i] := a[i+31:i] / b[i+31:i]
        ELSE
                dst[i+31:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask3_fmadd_pd#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256d

Param Types:

__m256d a, __m256d b, __m256d c, __mmask8 k

Param ETypes:

FP64 a, FP64 b, FP64 c, MASK k

__m256d _mm256_mask3_fmadd_pd(__m256d a, __m256d b,
                              __m256d c, __mmask8 k)

Intel Description

Multiply packed double-precision (64-bit) floating-point elements in “a” and “b”, add the intermediate result to packed elements in “c”, and store the results in “dst” using writemask “k” (elements are copied from “c” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := (a[i+63:i] * b[i+63:i]) + c[i+63:i]
        ELSE
                dst[i+63:i] := c[i+63:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_fmadd_pd#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256d

Param Types:

__m256d a, __mmask8 k, __m256d b, __m256d c

Param ETypes:

FP64 a, MASK k, FP64 b, FP64 c

__m256d _mm256_mask_fmadd_pd(__m256d a, __mmask8 k,
                             __m256d b, __m256d c)

Intel Description

Multiply packed double-precision (64-bit) floating-point elements in “a” and “b”, add the intermediate result to packed elements in “c”, and store the results in “dst” using writemask “k” (elements are copied from “a” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := (a[i+63:i] * b[i+63:i]) + c[i+63:i]
        ELSE
                dst[i+63:i] := a[i+63:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_fmadd_pd#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256d

Param Types:

__mmask8 k, __m256d a, __m256d b, __m256d c

Param ETypes:

MASK k, FP64 a, FP64 b, FP64 c

__m256d _mm256_maskz_fmadd_pd(__mmask8 k, __m256d a,
                              __m256d b, __m256d c)

Intel Description

Multiply packed double-precision (64-bit) floating-point elements in “a” and “b”, add the intermediate result to packed elements in “c”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := (a[i+63:i] * b[i+63:i]) + c[i+63:i]
        ELSE
                dst[i+63:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask3_fmadd_ps#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256

Param Types:

__m256 a, __m256 b, __m256 c, __mmask8 k

Param ETypes:

FP32 a, FP32 b, FP32 c, MASK k

__m256 _mm256_mask3_fmadd_ps(__m256 a, __m256 b, __m256 c,
                             __mmask8 k)

Intel Description

Multiply packed single-precision (32-bit) floating-point elements in “a” and “b”, add the intermediate result to packed elements in “c”, and store the results in “dst” using writemask “k” (elements are copied from “c” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := (a[i+31:i] * b[i+31:i]) + c[i+31:i]
        ELSE
                dst[i+31:i] := c[i+31:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_fmadd_ps#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256

Param Types:

__m256 a, __mmask8 k, __m256 b, __m256 c

Param ETypes:

FP32 a, MASK k, FP32 b, FP32 c

__m256 _mm256_mask_fmadd_ps(__m256 a, __mmask8 k, __m256 b,
                            __m256 c)

Intel Description

Multiply packed single-precision (32-bit) floating-point elements in “a” and “b”, add the intermediate result to packed elements in “c”, and store the results in “dst” using writemask “k” (elements are copied from “a” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := (a[i+31:i] * b[i+31:i]) + c[i+31:i]
        ELSE
                dst[i+31:i] := a[i+31:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_fmadd_ps#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256

Param Types:

__mmask8 k, __m256 a, __m256 b, __m256 c

Param ETypes:

MASK k, FP32 a, FP32 b, FP32 c

__m256 _mm256_maskz_fmadd_ps(__mmask8 k, __m256 a, __m256 b,
                             __m256 c)

Intel Description

Multiply packed single-precision (32-bit) floating-point elements in “a” and “b”, add the intermediate result to packed elements in “c”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := (a[i+31:i] * b[i+31:i]) + c[i+31:i]
        ELSE
                dst[i+31:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask3_fmaddsub_pd#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256d

Param Types:

__m256d a, __m256d b, __m256d c, __mmask8 k

Param ETypes:

FP64 a, FP64 b, FP64 c, MASK k

__m256d _mm256_mask3_fmaddsub_pd(__m256d a, __m256d b,
                                 __m256d c, __mmask8 k)

Intel Description

Multiply packed double-precision (64-bit) floating-point elements in “a” and “b”, alternatively add and subtract packed elements in “c” to/from the intermediate result, and store the results in “dst” using writemask “k” (elements are copied from “c” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                IF ((j & 1) == 0)
                        dst[i+63:i] := (a[i+63:i] * b[i+63:i]) - c[i+63:i]
                ELSE
                        dst[i+63:i] := (a[i+63:i] * b[i+63:i]) + c[i+63:i]
                FI
        ELSE
                dst[i+63:i] := c[i+63:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_fmaddsub_pd#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256d

Param Types:

__m256d a, __mmask8 k, __m256d b, __m256d c

Param ETypes:

FP64 a, MASK k, FP64 b, FP64 c

__m256d _mm256_mask_fmaddsub_pd(__m256d a, __mmask8 k,
                                __m256d b, __m256d c)

Intel Description

Multiply packed double-precision (64-bit) floating-point elements in “a” and “b”, alternatively add and subtract packed elements in “c” to/from the intermediate result, and store the results in “dst” using writemask “k” (elements are copied from “a” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                IF ((j & 1) == 0)
                        dst[i+63:i] := (a[i+63:i] * b[i+63:i]) - c[i+63:i]
                ELSE
                        dst[i+63:i] := (a[i+63:i] * b[i+63:i]) + c[i+63:i]
                FI
        ELSE
                dst[i+63:i] := a[i+63:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_fmaddsub_pd#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256d

Param Types:

__mmask8 k, __m256d a, __m256d b, __m256d c

Param ETypes:

MASK k, FP64 a, FP64 b, FP64 c

__m256d _mm256_maskz_fmaddsub_pd(__mmask8 k, __m256d a,
                                 __m256d b, __m256d c)

Intel Description

Multiply packed double-precision (64-bit) floating-point elements in “a” and “b”, alternatively add and subtract packed elements in “c” to/from the intermediate result, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                IF ((j & 1) == 0)
                        dst[i+63:i] := (a[i+63:i] * b[i+63:i]) - c[i+63:i]
                ELSE
                        dst[i+63:i] := (a[i+63:i] * b[i+63:i]) + c[i+63:i]
                FI
        ELSE
                dst[i+63:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask3_fmaddsub_ps#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256

Param Types:

__m256 a, __m256 b, __m256 c, __mmask8 k

Param ETypes:

FP32 a, FP32 b, FP32 c, MASK k

__m256 _mm256_mask3_fmaddsub_ps(__m256 a, __m256 b,
                                __m256 c, __mmask8 k)

Intel Description

Multiply packed single-precision (32-bit) floating-point elements in “a” and “b”, alternatively add and subtract packed elements in “c” to/from the intermediate result, and store the results in “dst” using writemask “k” (elements are copied from “c” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                IF ((j & 1) == 0)
                        dst[i+31:i] := (a[i+31:i] * b[i+31:i]) - c[i+31:i]
                ELSE
                        dst[i+31:i] := (a[i+31:i] * b[i+31:i]) + c[i+31:i]
                FI
        ELSE
                dst[i+31:i] := c[i+31:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_fmaddsub_ps#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256

Param Types:

__m256 a, __mmask8 k, __m256 b, __m256 c

Param ETypes:

FP32 a, MASK k, FP32 b, FP32 c

__m256 _mm256_mask_fmaddsub_ps(__m256 a, __mmask8 k,
                               __m256 b, __m256 c)

Intel Description

Multiply packed single-precision (32-bit) floating-point elements in “a” and “b”, alternatively add and subtract packed elements in “c” to/from the intermediate result, and store the results in “dst” using writemask “k” (elements are copied from “a” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                IF ((j & 1) == 0)
                        dst[i+31:i] := (a[i+31:i] * b[i+31:i]) - c[i+31:i]
                ELSE
                        dst[i+31:i] := (a[i+31:i] * b[i+31:i]) + c[i+31:i]
                FI
        ELSE
                dst[i+31:i] := a[i+31:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_fmaddsub_ps#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256

Param Types:

__mmask8 k, __m256 a, __m256 b, __m256 c

Param ETypes:

MASK k, FP32 a, FP32 b, FP32 c

__m256 _mm256_maskz_fmaddsub_ps(__mmask8 k, __m256 a,
                                __m256 b, __m256 c)

Intel Description

Multiply packed single-precision (32-bit) floating-point elements in “a” and “b”, alternatively add and subtract packed elements in “c” to/from the intermediate result, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                IF ((j & 1) == 0)
                        dst[i+31:i] := (a[i+31:i] * b[i+31:i]) - c[i+31:i]
                ELSE
                        dst[i+31:i] := (a[i+31:i] * b[i+31:i]) + c[i+31:i]
                FI
        ELSE
                dst[i+31:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask3_fmsub_pd#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256d

Param Types:

__m256d a, __m256d b, __m256d c, __mmask8 k

Param ETypes:

FP64 a, FP64 b, FP64 c, MASK k

__m256d _mm256_mask3_fmsub_pd(__m256d a, __m256d b,
                              __m256d c, __mmask8 k)

Intel Description

Multiply packed double-precision (64-bit) floating-point elements in “a” and “b”, subtract packed elements in “c” from the intermediate result, and store the results in “dst” using writemask “k” (elements are copied from “c” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := (a[i+63:i] * b[i+63:i]) - c[i+63:i]
        ELSE
                dst[i+63:i] := c[i+63:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_fmsub_pd#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256d

Param Types:

__m256d a, __mmask8 k, __m256d b, __m256d c

Param ETypes:

FP64 a, MASK k, FP64 b, FP64 c

__m256d _mm256_mask_fmsub_pd(__m256d a, __mmask8 k,
                             __m256d b, __m256d c)

Intel Description

Multiply packed double-precision (64-bit) floating-point elements in “a” and “b”, subtract packed elements in “c” from the intermediate result, and store the results in “dst” using writemask “k” (elements are copied from “a” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := (a[i+63:i] * b[i+63:i]) - c[i+63:i]
        ELSE
                dst[i+63:i] := a[i+63:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_fmsub_pd#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256d

Param Types:

__mmask8 k, __m256d a, __m256d b, __m256d c

Param ETypes:

MASK k, FP64 a, FP64 b, FP64 c

__m256d _mm256_maskz_fmsub_pd(__mmask8 k, __m256d a,
                              __m256d b, __m256d c)

Intel Description

Multiply packed double-precision (64-bit) floating-point elements in “a” and “b”, subtract packed elements in “c” from the intermediate result, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := (a[i+63:i] * b[i+63:i]) - c[i+63:i]
        ELSE
                dst[i+63:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask3_fmsub_ps#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256

Param Types:

__m256 a, __m256 b, __m256 c, __mmask8 k

Param ETypes:

FP32 a, FP32 b, FP32 c, MASK k

__m256 _mm256_mask3_fmsub_ps(__m256 a, __m256 b, __m256 c,
                             __mmask8 k)

Intel Description

Multiply packed single-precision (32-bit) floating-point elements in “a” and “b”, subtract packed elements in “c” from the intermediate result, and store the results in “dst” using writemask “k” (elements are copied from “c” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := (a[i+31:i] * b[i+31:i]) - c[i+31:i]
        ELSE
                dst[i+31:i] := c[i+31:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_fmsub_ps#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256

Param Types:

__m256 a, __mmask8 k, __m256 b, __m256 c

Param ETypes:

FP32 a, MASK k, FP32 b, FP32 c

__m256 _mm256_mask_fmsub_ps(__m256 a, __mmask8 k, __m256 b,
                            __m256 c)

Intel Description

Multiply packed single-precision (32-bit) floating-point elements in “a” and “b”, subtract packed elements in “c” from the intermediate result, and store the results in “dst” using writemask “k” (elements are copied from “a” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := (a[i+31:i] * b[i+31:i]) - c[i+31:i]
        ELSE
                dst[i+31:i] := a[i+31:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_fmsub_ps#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256

Param Types:

__mmask8 k, __m256 a, __m256 b, __m256 c

Param ETypes:

MASK k, FP32 a, FP32 b, FP32 c

__m256 _mm256_maskz_fmsub_ps(__mmask8 k, __m256 a, __m256 b,
                             __m256 c)

Intel Description

Multiply packed single-precision (32-bit) floating-point elements in “a” and “b”, subtract packed elements in “c” from the intermediate result, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := (a[i+31:i] * b[i+31:i]) - c[i+31:i]
        ELSE
                dst[i+31:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask3_fmsubadd_pd#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256d

Param Types:

__m256d a, __m256d b, __m256d c, __mmask8 k

Param ETypes:

FP64 a, FP64 b, FP64 c, MASK k

__m256d _mm256_mask3_fmsubadd_pd(__m256d a, __m256d b,
                                 __m256d c, __mmask8 k)

Intel Description

Multiply packed double-precision (64-bit) floating-point elements in “a” and “b”, alternatively subtract and add packed elements in “c” from/to the intermediate result, and store the results in “dst” using writemask “k” (elements are copied from “c” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                IF ((j & 1) == 0)
                        dst[i+63:i] := (a[i+63:i] * b[i+63:i]) + c[i+63:i]
                ELSE
                        dst[i+63:i] := (a[i+63:i] * b[i+63:i]) - c[i+63:i]
                FI
        ELSE
                dst[i+63:i] := c[i+63:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_fmsubadd_pd#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256d

Param Types:

__m256d a, __mmask8 k, __m256d b, __m256d c

Param ETypes:

FP64 a, MASK k, FP64 b, FP64 c

__m256d _mm256_mask_fmsubadd_pd(__m256d a, __mmask8 k,
                                __m256d b, __m256d c)

Intel Description

Multiply packed double-precision (64-bit) floating-point elements in “a” and “b”, alternatively subtract and add packed elements in “c” from/to the intermediate result, and store the results in “dst” using writemask “k” (elements are copied from “a” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                IF ((j & 1) == 0)
                        dst[i+63:i] := (a[i+63:i] * b[i+63:i]) + c[i+63:i]
                ELSE
                        dst[i+63:i] := (a[i+63:i] * b[i+63:i]) - c[i+63:i]
                FI
        ELSE
                dst[i+63:i] := a[i+63:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_fmsubadd_pd#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256d

Param Types:

__mmask8 k, __m256d a, __m256d b, __m256d c

Param ETypes:

MASK k, FP64 a, FP64 b, FP64 c

__m256d _mm256_maskz_fmsubadd_pd(__mmask8 k, __m256d a,
                                 __m256d b, __m256d c)

Intel Description

Multiply packed double-precision (64-bit) floating-point elements in “a” and “b”, alternatively subtract and add packed elements in “c” from/to the intermediate result, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                IF ((j & 1) == 0)
                        dst[i+63:i] := (a[i+63:i] * b[i+63:i]) + c[i+63:i]
                ELSE
                        dst[i+63:i] := (a[i+63:i] * b[i+63:i]) - c[i+63:i]
                FI
        ELSE
                dst[i+63:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask3_fmsubadd_ps#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256

Param Types:

__m256 a, __m256 b, __m256 c, __mmask8 k

Param ETypes:

FP32 a, FP32 b, FP32 c, MASK k

__m256 _mm256_mask3_fmsubadd_ps(__m256 a, __m256 b,
                                __m256 c, __mmask8 k)

Intel Description

Multiply packed single-precision (32-bit) floating-point elements in “a” and “b”, alternatively subtract and add packed elements in “c” from/to the intermediate result, and store the results in “dst” using writemask “k” (elements are copied from “c” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                IF ((j & 1) == 0)
                        dst[i+31:i] := (a[i+31:i] * b[i+31:i]) + c[i+31:i]
                ELSE
                        dst[i+31:i] := (a[i+31:i] * b[i+31:i]) - c[i+31:i]
                FI
        ELSE
                dst[i+31:i] := c[i+31:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_fmsubadd_ps#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256

Param Types:

__m256 a, __mmask8 k, __m256 b, __m256 c

Param ETypes:

FP32 a, MASK k, FP32 b, FP32 c

__m256 _mm256_mask_fmsubadd_ps(__m256 a, __mmask8 k,
                               __m256 b, __m256 c)

Intel Description

Multiply packed single-precision (32-bit) floating-point elements in “a” and “b”, alternatively subtract and add packed elements in “c” from/to the intermediate result, and store the results in “dst” using writemask “k” (elements are copied from “a” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                IF ((j & 1) == 0)
                        dst[i+31:i] := (a[i+31:i] * b[i+31:i]) + c[i+31:i]
                ELSE
                        dst[i+31:i] := (a[i+31:i] * b[i+31:i]) - c[i+31:i]
                FI
        ELSE
                dst[i+31:i] := a[i+31:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_fmsubadd_ps#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256

Param Types:

__mmask8 k, __m256 a, __m256 b, __m256 c

Param ETypes:

MASK k, FP32 a, FP32 b, FP32 c

__m256 _mm256_maskz_fmsubadd_ps(__mmask8 k, __m256 a,
                                __m256 b, __m256 c)

Intel Description

Multiply packed single-precision (32-bit) floating-point elements in “a” and “b”, alternatively subtract and add packed elements in “c” from/to the intermediate result, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                IF ((j & 1) == 0)
                        dst[i+31:i] := (a[i+31:i] * b[i+31:i]) + c[i+31:i]
                ELSE
                        dst[i+31:i] := (a[i+31:i] * b[i+31:i]) - c[i+31:i]
                FI
        ELSE
                dst[i+31:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask3_fnmadd_pd#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256d

Param Types:

__m256d a, __m256d b, __m256d c, __mmask8 k

Param ETypes:

FP64 a, FP64 b, FP64 c, MASK k

__m256d _mm256_mask3_fnmadd_pd(__m256d a, __m256d b,
                               __m256d c, __mmask8 k)

Intel Description

Multiply packed double-precision (64-bit) floating-point elements in “a” and “b”, add the negated intermediate result to packed elements in “c”, and store the results in “dst” using writemask “k” (elements are copied from “c” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := -(a[i+63:i] * b[i+63:i]) + c[i+63:i]
        ELSE
                dst[i+63:i] := c[i+63:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_fnmadd_pd#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256d

Param Types:

__m256d a, __mmask8 k, __m256d b, __m256d c

Param ETypes:

FP64 a, MASK k, FP64 b, FP64 c

__m256d _mm256_mask_fnmadd_pd(__m256d a, __mmask8 k,
                              __m256d b, __m256d c)

Intel Description

Multiply packed double-precision (64-bit) floating-point elements in “a” and “b”, add the negated intermediate result to packed elements in “c”, and store the results in “dst” using writemask “k” (elements are copied from “a” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := -(a[i+63:i] * b[i+63:i]) + c[i+63:i]
        ELSE
                dst[i+63:i] := a[i+63:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_fnmadd_pd#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256d

Param Types:

__mmask8 k, __m256d a, __m256d b, __m256d c

Param ETypes:

MASK k, FP64 a, FP64 b, FP64 c

__m256d _mm256_maskz_fnmadd_pd(__mmask8 k, __m256d a,
                               __m256d b, __m256d c)

Intel Description

Multiply packed double-precision (64-bit) floating-point elements in “a” and “b”, add the negated intermediate result to packed elements in “c”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := -(a[i+63:i] * b[i+63:i]) + c[i+63:i]
        ELSE
                dst[i+63:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask3_fnmadd_ps#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256

Param Types:

__m256 a, __m256 b, __m256 c, __mmask8 k

Param ETypes:

FP32 a, FP32 b, FP32 c, MASK k

__m256 _mm256_mask3_fnmadd_ps(__m256 a, __m256 b, __m256 c,
                              __mmask8 k)

Intel Description

Multiply packed single-precision (32-bit) floating-point elements in “a” and “b”, add the negated intermediate result to packed elements in “c”, and store the results in “dst” using writemask “k” (elements are copied from “c” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := -(a[i+31:i] * b[i+31:i]) + c[i+31:i]
        ELSE
                dst[i+31:i] := c[i+31:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_fnmadd_ps#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256

Param Types:

__m256 a, __mmask8 k, __m256 b, __m256 c

Param ETypes:

FP32 a, MASK k, FP32 b, FP32 c

__m256 _mm256_mask_fnmadd_ps(__m256 a, __mmask8 k, __m256 b,
                             __m256 c)

Intel Description

Multiply packed single-precision (32-bit) floating-point elements in “a” and “b”, add the negated intermediate result to packed elements in “c”, and store the results in “dst” using writemask “k” (elements are copied from “a” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := -(a[i+31:i] * b[i+31:i]) + c[i+31:i]
        ELSE
                dst[i+31:i] := a[i+31:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_fnmadd_ps#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256

Param Types:

__mmask8 k, __m256 a, __m256 b, __m256 c

Param ETypes:

MASK k, FP32 a, FP32 b, FP32 c

__m256 _mm256_maskz_fnmadd_ps(__mmask8 k, __m256 a,
                              __m256 b, __m256 c)

Intel Description

Multiply packed single-precision (32-bit) floating-point elements in “a” and “b”, add the negated intermediate result to packed elements in “c”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := -(a[i+31:i] * b[i+31:i]) + c[i+31:i]
        ELSE
                dst[i+31:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask3_fnmsub_pd#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256d

Param Types:

__m256d a, __m256d b, __m256d c, __mmask8 k

Param ETypes:

FP64 a, FP64 b, FP64 c, MASK k

__m256d _mm256_mask3_fnmsub_pd(__m256d a, __m256d b,
                               __m256d c, __mmask8 k)

Intel Description

Multiply packed double-precision (64-bit) floating-point elements in “a” and “b”, subtract packed elements in “c” from the negated intermediate result, and store the results in “dst” using writemask “k” (elements are copied from “c” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := -(a[i+63:i] * b[i+63:i]) - c[i+63:i]
        ELSE
                dst[i+63:i] := c[i+63:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_fnmsub_pd#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256d

Param Types:

__m256d a, __mmask8 k, __m256d b, __m256d c

Param ETypes:

FP64 a, MASK k, FP64 b, FP64 c

__m256d _mm256_mask_fnmsub_pd(__m256d a, __mmask8 k,
                              __m256d b, __m256d c)

Intel Description

Multiply packed double-precision (64-bit) floating-point elements in “a” and “b”, subtract packed elements in “c” from the negated intermediate result, and store the results in “dst” using writemask “k” (elements are copied from “a” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := -(a[i+63:i] * b[i+63:i]) - c[i+63:i]
        ELSE
                dst[i+63:i] := a[i+63:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_fnmsub_pd#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256d

Param Types:

__mmask8 k, __m256d a, __m256d b, __m256d c

Param ETypes:

MASK k, FP64 a, FP64 b, FP64 c

__m256d _mm256_maskz_fnmsub_pd(__mmask8 k, __m256d a,
                               __m256d b, __m256d c)

Intel Description

Multiply packed double-precision (64-bit) floating-point elements in “a” and “b”, subtract packed elements in “c” from the negated intermediate result, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := -(a[i+63:i] * b[i+63:i]) - c[i+63:i]
        ELSE
                dst[i+63:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask3_fnmsub_ps#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256

Param Types:

__m256 a, __m256 b, __m256 c, __mmask8 k

Param ETypes:

FP32 a, FP32 b, FP32 c, MASK k

__m256 _mm256_mask3_fnmsub_ps(__m256 a, __m256 b, __m256 c,
                              __mmask8 k)

Intel Description

Multiply packed single-precision (32-bit) floating-point elements in “a” and “b”, subtract packed elements in “c” from the negated intermediate result, and store the results in “dst” using writemask “k” (elements are copied from “c” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := -(a[i+31:i] * b[i+31:i]) - c[i+31:i]
        ELSE
                dst[i+31:i] := c[i+31:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_fnmsub_ps#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256

Param Types:

__m256 a, __mmask8 k, __m256 b, __m256 c

Param ETypes:

FP32 a, MASK k, FP32 b, FP32 c

__m256 _mm256_mask_fnmsub_ps(__m256 a, __mmask8 k, __m256 b,
                             __m256 c)

Intel Description

Multiply packed single-precision (32-bit) floating-point elements in “a” and “b”, subtract packed elements in “c” from the negated intermediate result, and store the results in “dst” using writemask “k” (elements are copied from “a” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := -(a[i+31:i] * b[i+31:i]) - c[i+31:i]
        ELSE
                dst[i+31:i] := a[i+31:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_fnmsub_ps#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256

Param Types:

__mmask8 k, __m256 a, __m256 b, __m256 c

Param ETypes:

MASK k, FP32 a, FP32 b, FP32 c

__m256 _mm256_maskz_fnmsub_ps(__mmask8 k, __m256 a,
                              __m256 b, __m256 c)

Intel Description

Multiply packed single-precision (32-bit) floating-point elements in “a” and “b”, subtract packed elements in “c” from the negated intermediate result, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := -(a[i+31:i] * b[i+31:i]) - c[i+31:i]
        ELSE
                dst[i+31:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_max_pd#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256d

Param Types:

__m256d src, __mmask8 k, __m256d a, __m256d b

Param ETypes:

FP64 src, MASK k, FP64 a, FP64 b

__m256d _mm256_mask_max_pd(__m256d src, __mmask8 k,
                           __m256d a, __m256d b)

Intel Description

Compare packed double-precision (64-bit) floating-point elements in “a” and “b”, and store packed maximum values in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set). [max_float_note]

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := MAX(a[i+63:i], b[i+63:i])
        ELSE
                dst[i+63:i] := src[i+63:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_max_pd#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256d

Param Types:

__mmask8 k, __m256d a, __m256d b

Param ETypes:

MASK k, FP64 a, FP64 b

__m256d _mm256_maskz_max_pd(__mmask8 k, __m256d a,
                            __m256d b)

Intel Description

Compare packed double-precision (64-bit) floating-point elements in “a” and “b”, and store packed maximum values in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set). [max_float_note]

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := MAX(a[i+63:i], b[i+63:i])
        ELSE
                dst[i+63:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_max_ps#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256

Param Types:

__m256 src, __mmask8 k, __m256 a, __m256 b

Param ETypes:

FP32 src, MASK k, FP32 a, FP32 b

__m256 _mm256_mask_max_ps(__m256 src, __mmask8 k, __m256 a,
                          __m256 b)

Intel Description

Compare packed single-precision (32-bit) floating-point elements in “a” and “b”, and store packed maximum values in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set). [max_float_note]

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := MAX(a[i+31:i], b[i+31:i])
        ELSE
                dst[i+31:i] := src[i+31:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_max_ps#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256

Param Types:

__mmask8 k, __m256 a, __m256 b

Param ETypes:

MASK k, FP32 a, FP32 b

__m256 _mm256_maskz_max_ps(__mmask8 k, __m256 a, __m256 b);

Intel Description

Compare packed single-precision (32-bit) floating-point elements in “a” and “b”, and store packed maximum values in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set). [max_float_note]

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := MAX(a[i+31:i], b[i+31:i])
        ELSE
                dst[i+31:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_min_pd#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256d

Param Types:

__m256d src, __mmask8 k, __m256d a, __m256d b

Param ETypes:

FP64 src, MASK k, FP64 a, FP64 b

__m256d _mm256_mask_min_pd(__m256d src, __mmask8 k,
                           __m256d a, __m256d b)

Intel Description

Compare packed double-precision (64-bit) floating-point elements in “a” and “b”, and store packed minimum values in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set). [min_float_note]

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := MIN(a[i+63:i], b[i+63:i])
        ELSE
                dst[i+63:i] := src[i+63:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_min_pd#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256d

Param Types:

__mmask8 k, __m256d a, __m256d b

Param ETypes:

MASK k, FP64 a, FP64 b

__m256d _mm256_maskz_min_pd(__mmask8 k, __m256d a,
                            __m256d b)

Intel Description

Compare packed double-precision (64-bit) floating-point elements in “a” and “b”, and store packed minimum values in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set). [min_float_note]

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := MIN(a[i+63:i], b[i+63:i])
        ELSE
                dst[i+63:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_min_ps#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256

Param Types:

__m256 src, __mmask8 k, __m256 a, __m256 b

Param ETypes:

FP32 src, MASK k, FP32 a, FP32 b

__m256 _mm256_mask_min_ps(__m256 src, __mmask8 k, __m256 a,
                          __m256 b)

Intel Description

Compare packed single-precision (32-bit) floating-point elements in “a” and “b”, and store packed minimum values in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set). [min_float_note]

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := MIN(a[i+31:i], b[i+31:i])
        ELSE
                dst[i+31:i] := src[i+31:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_min_ps#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256

Param Types:

__mmask8 k, __m256 a, __m256 b

Param ETypes:

MASK k, FP32 a, FP32 b

__m256 _mm256_maskz_min_ps(__mmask8 k, __m256 a, __m256 b);

Intel Description

Compare packed single-precision (32-bit) floating-point elements in “a” and “b”, and store packed minimum values in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set). [min_float_note]

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := MIN(a[i+31:i], b[i+31:i])
        ELSE
                dst[i+31:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_mul_pd#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256d

Param Types:

__m256d src, __mmask8 k, __m256d a, __m256d b

Param ETypes:

FP64 src, MASK k, FP64 a, FP64 b

__m256d _mm256_mask_mul_pd(__m256d src, __mmask8 k,
                           __m256d a, __m256d b)

Intel Description

Multiply packed double-precision (64-bit) floating-point elements in “a” and “b”, and store the results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := a[i+63:i] * b[i+63:i]
        ELSE
                dst[i+63:i] := src[i+63:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_mul_pd#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256d

Param Types:

__mmask8 k, __m256d a, __m256d b

Param ETypes:

MASK k, FP64 a, FP64 b

__m256d _mm256_maskz_mul_pd(__mmask8 k, __m256d a,
                            __m256d b)

Intel Description

Multiply packed double-precision (64-bit) floating-point elements in “a” and “b”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := a[i+63:i] * b[i+63:i]
        ELSE
                dst[i+63:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_mul_ps#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256

Param Types:

__m256 src, __mmask8 k, __m256 a, __m256 b

Param ETypes:

FP32 src, MASK k, FP32 a, FP32 b

__m256 _mm256_mask_mul_ps(__m256 src, __mmask8 k, __m256 a,
                          __m256 b)

Intel Description

Multiply packed single-precision (32-bit) floating-point elements in “a” and “b”, and store the results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set). RM.

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := a[i+31:i] * b[i+31:i]
        ELSE
                dst[i+31:i] := src[i+31:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_mul_ps#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256

Param Types:

__mmask8 k, __m256 a, __m256 b

Param ETypes:

MASK k, FP32 a, FP32 b

__m256 _mm256_maskz_mul_ps(__mmask8 k, __m256 a, __m256 b);

Intel Description

Multiply packed single-precision (32-bit) floating-point elements in “a” and “b”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := a[i+31:i] * b[i+31:i]
        ELSE
                dst[i+31:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_abs_epi32#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask8 k, __m256i a

Param ETypes:

UI32 src, MASK k, SI32 a

__m256i _mm256_mask_abs_epi32(__m256i src, __mmask8 k,
                              __m256i a)

Intel Description

Compute the absolute value of packed signed 32-bit integers in “a”, and store the unsigned results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := ABS(a[i+31:i])
        ELSE
                dst[i+31:i] := src[i+31:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_abs_epi32#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask8 k, __m256i a

Param ETypes:

MASK k, SI32 a

__m256i _mm256_maskz_abs_epi32(__mmask8 k, __m256i a);

Intel Description

Compute the absolute value of packed signed 32-bit integers in “a”, and store the unsigned results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := ABS(a[i+31:i])
        ELSE
                dst[i+31:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_abs_epi64#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i a

Param ETypes:

SI64 a

__m256i _mm256_abs_epi64(__m256i a);

Intel Description

Compute the absolute value of packed signed 64-bit integers in “a”, and store the unsigned results in “dst”.

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        dst[i+63:i] := ABS(a[i+63:i])
ENDFOR
dst[MAX:256] := 0

_mm256_mask_abs_epi64#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask8 k, __m256i a

Param ETypes:

UI64 src, MASK k, SI64 a

__m256i _mm256_mask_abs_epi64(__m256i src, __mmask8 k,
                              __m256i a)

Intel Description

Compute the absolute value of packed signed 64-bit integers in “a”, and store the unsigned results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := ABS(a[i+63:i])
        ELSE
                dst[i+63:i] := src[i+63:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_abs_epi64#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask8 k, __m256i a

Param ETypes:

MASK k, SI64 a

__m256i _mm256_maskz_abs_epi64(__mmask8 k, __m256i a);

Intel Description

Compute the absolute value of packed signed 64-bit integers in “a”, and store the unsigned results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := ABS(a[i+63:i])
        ELSE
                dst[i+63:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_add_epi32#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask8 k, __m256i a, __m256i b

Param ETypes:

UI32 src, MASK k, UI32 a, UI32 b

__m256i _mm256_mask_add_epi32(__m256i src, __mmask8 k,
                              __m256i a, __m256i b)

Intel Description

Add packed 32-bit integers in “a” and “b”, and store the results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := a[i+31:i] + b[i+31:i]
        ELSE
                dst[i+31:i] := src[i+31:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_add_epi32#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask8 k, __m256i a, __m256i b

Param ETypes:

MASK k, UI32 a, UI32 b

__m256i _mm256_maskz_add_epi32(__mmask8 k, __m256i a,
                               __m256i b)

Intel Description

Add packed 32-bit integers in “a” and “b”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := a[i+31:i] + b[i+31:i]
        ELSE
                dst[i+31:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_add_epi64#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask8 k, __m256i a, __m256i b

Param ETypes:

UI64 src, MASK k, UI64 a, UI64 b

__m256i _mm256_mask_add_epi64(__m256i src, __mmask8 k,
                              __m256i a, __m256i b)

Intel Description

Add packed 64-bit integers in “a” and “b”, and store the results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := a[i+63:i] + b[i+63:i]
        ELSE
                dst[i+63:i] := src[i+63:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_add_epi64#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask8 k, __m256i a, __m256i b

Param ETypes:

MASK k, UI64 a, UI64 b

__m256i _mm256_maskz_add_epi64(__mmask8 k, __m256i a,
                               __m256i b)

Intel Description

Add packed 64-bit integers in “a” and “b”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := a[i+63:i] + b[i+63:i]
        ELSE
                dst[i+63:i] :=0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_max_epi32#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask8 k, __m256i a, __m256i b

Param ETypes:

UI32 src, MASK k, SI32 a, SI32 b

__m256i _mm256_mask_max_epi32(__m256i src, __mmask8 k,
                              __m256i a, __m256i b)

Intel Description

Compare packed signed 32-bit integers in “a” and “b”, and store packed maximum values in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := MAX(a[i+31:i], b[i+31:i])
        ELSE
                dst[i+31:i] := src[i+31:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_max_epi32#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask8 k, __m256i a, __m256i b

Param ETypes:

MASK k, SI32 a, SI32 b

__m256i _mm256_maskz_max_epi32(__mmask8 k, __m256i a,
                               __m256i b)

Intel Description

Compare packed signed 32-bit integers in “a” and “b”, and store packed maximum values in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := MAX(a[i+31:i], b[i+31:i])
        ELSE
                dst[i+31:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_max_epi64#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask8 k, __m256i a, __m256i b

Param ETypes:

UI64 src, MASK k, SI64 a, SI64 b

__m256i _mm256_mask_max_epi64(__m256i src, __mmask8 k,
                              __m256i a, __m256i b)

Intel Description

Compare packed signed 64-bit integers in “a” and “b”, and store packed maximum values in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := MAX(a[i+63:i], b[i+63:i])
        ELSE
                dst[i+63:i] := src[i+63:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_max_epi64#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask8 k, __m256i a, __m256i b

Param ETypes:

MASK k, SI64 a, SI64 b

__m256i _mm256_maskz_max_epi64(__mmask8 k, __m256i a,
                               __m256i b)

Intel Description

Compare packed signed 64-bit integers in “a” and “b”, and store packed maximum values in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := MAX(a[i+63:i], b[i+63:i])
        ELSE
                dst[i+63:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_max_epi64#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i a, __m256i b

Param ETypes:

SI64 a, SI64 b

__m256i _mm256_max_epi64(__m256i a, __m256i b);

Intel Description

Compare packed signed 64-bit integers in “a” and “b”, and store packed maximum values in “dst”.

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        dst[i+63:i] := MAX(a[i+63:i], b[i+63:i])
ENDFOR
dst[MAX:256] := 0

_mm256_mask_max_epu32#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask8 k, __m256i a, __m256i b

Param ETypes:

UI32 src, MASK k, UI32 a, UI32 b

__m256i _mm256_mask_max_epu32(__m256i src, __mmask8 k,
                              __m256i a, __m256i b)

Intel Description

Compare packed unsigned 32-bit integers in “a” and “b”, and store packed maximum values in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := MAX(a[i+31:i], b[i+31:i])
        ELSE
                dst[i+31:i] := src[i+31:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_max_epu32#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask8 k, __m256i a, __m256i b

Param ETypes:

MASK k, UI32 a, UI32 b

__m256i _mm256_maskz_max_epu32(__mmask8 k, __m256i a,
                               __m256i b)

Intel Description

Compare packed unsigned 32-bit integers in “a” and “b”, and store packed maximum values in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := MAX(a[i+31:i], b[i+31:i])
        ELSE
                dst[i+31:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_max_epu64#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask8 k, __m256i a, __m256i b

Param ETypes:

UI64 src, MASK k, UI64 a, UI64 b

__m256i _mm256_mask_max_epu64(__m256i src, __mmask8 k,
                              __m256i a, __m256i b)

Intel Description

Compare packed unsigned 64-bit integers in “a” and “b”, and store packed maximum values in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := MAX(a[i+63:i], b[i+63:i])
        ELSE
                dst[i+63:i] := src[i+63:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_max_epu64#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask8 k, __m256i a, __m256i b

Param ETypes:

MASK k, UI64 a, UI64 b

__m256i _mm256_maskz_max_epu64(__mmask8 k, __m256i a,
                               __m256i b)

Intel Description

Compare packed unsigned 64-bit integers in “a” and “b”, and store packed maximum values in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := MAX(a[i+63:i], b[i+63:i])
        ELSE
                dst[i+63:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_max_epu64#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i a, __m256i b

Param ETypes:

UI64 a, UI64 b

__m256i _mm256_max_epu64(__m256i a, __m256i b);

Intel Description

Compare packed unsigned 64-bit integers in “a” and “b”, and store packed maximum values in “dst”.

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        dst[i+63:i] := MAX(a[i+63:i], b[i+63:i])
ENDFOR
dst[MAX:256] := 0

_mm256_mask_min_epi32#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask8 k, __m256i a, __m256i b

Param ETypes:

UI32 src, MASK k, SI32 a, SI32 b

__m256i _mm256_mask_min_epi32(__m256i src, __mmask8 k,
                              __m256i a, __m256i b)

Intel Description

Compare packed signed 32-bit integers in “a” and “b”, and store packed minimum values in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := MIN(a[i+31:i], b[i+31:i])
        ELSE
                dst[i+31:i] := src[i+31:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_min_epi32#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask8 k, __m256i a, __m256i b

Param ETypes:

MASK k, SI32 a, SI32 b

__m256i _mm256_maskz_min_epi32(__mmask8 k, __m256i a,
                               __m256i b)

Intel Description

Compare packed signed 32-bit integers in “a” and “b”, and store packed minimum values in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := MIN(a[i+31:i], b[i+31:i])
        ELSE
                dst[i+31:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_min_epi64#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask8 k, __m256i a, __m256i b

Param ETypes:

UI64 src, MASK k, SI64 a, SI64 b

__m256i _mm256_mask_min_epi64(__m256i src, __mmask8 k,
                              __m256i a, __m256i b)

Intel Description

Compare packed signed 64-bit integers in “a” and “b”, and store packed minimum values in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := MIN(a[i+63:i], b[i+63:i])
        ELSE
                dst[i+63:i] := src[i+63:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_min_epi64#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask8 k, __m256i a, __m256i b

Param ETypes:

MASK k, SI64 a, SI64 b

__m256i _mm256_maskz_min_epi64(__mmask8 k, __m256i a,
                               __m256i b)

Intel Description

Compare packed signed 64-bit integers in “a” and “b”, and store packed minimum values in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := MIN(a[i+63:i], b[i+63:i])
        ELSE
                dst[i+63:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_min_epi64#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i a, __m256i b

Param ETypes:

SI64 a, SI64 b

__m256i _mm256_min_epi64(__m256i a, __m256i b);

Intel Description

Compare packed signed 64-bit integers in “a” and “b”, and store packed minimum values in “dst”.

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        dst[i+63:i] := MIN(a[i+63:i], b[i+63:i])
ENDFOR
dst[MAX:256] := 0

_mm256_mask_min_epu32#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask8 k, __m256i a, __m256i b

Param ETypes:

UI32 src, MASK k, UI32 a, UI32 b

__m256i _mm256_mask_min_epu32(__m256i src, __mmask8 k,
                              __m256i a, __m256i b)

Intel Description

Compare packed unsigned 32-bit integers in “a” and “b”, and store packed minimum values in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := MIN(a[i+31:i], b[i+31:i])
        ELSE
                dst[i+31:i] := src[i+31:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_min_epu32#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask8 k, __m256i a, __m256i b

Param ETypes:

MASK k, UI32 a, UI32 b

__m256i _mm256_maskz_min_epu32(__mmask8 k, __m256i a,
                               __m256i b)

Intel Description

Compare packed unsigned 32-bit integers in “a” and “b”, and store packed minimum values in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := MIN(a[i+31:i], b[i+31:i])
        ELSE
                dst[i+31:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_min_epu64#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask8 k, __m256i a, __m256i b

Param ETypes:

UI64 src, MASK k, UI64 a, UI64 b

__m256i _mm256_mask_min_epu64(__m256i src, __mmask8 k,
                              __m256i a, __m256i b)

Intel Description

Compare packed unsigned 64-bit integers in “a” and “b”, and store packed minimum values in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := MIN(a[i+63:i], b[i+63:i])
        ELSE
                dst[i+63:i] := src[i+63:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_min_epu64#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask8 k, __m256i a, __m256i b

Param ETypes:

MASK k, UI64 a, UI64 b

__m256i _mm256_maskz_min_epu64(__mmask8 k, __m256i a,
                               __m256i b)

Intel Description

Compare packed unsigned 64-bit integers in “a” and “b”, and store packed minimum values in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := MIN(a[i+63:i], b[i+63:i])
        ELSE
                dst[i+63:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_min_epu64#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i a, __m256i b

Param ETypes:

UI64 a, UI64 b

__m256i _mm256_min_epu64(__m256i a, __m256i b);

Intel Description

Compare packed unsigned 64-bit integers in “a” and “b”, and store packed minimum values in “dst”.

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        dst[i+63:i] := MIN(a[i+63:i], b[i+63:i])
ENDFOR
dst[MAX:256] := 0

_mm256_mask_mul_epi32#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask8 k, __m256i a, __m256i b

Param ETypes:

SI64 src, MASK k, SI32 a, SI32 b

__m256i _mm256_mask_mul_epi32(__m256i src, __mmask8 k,
                              __m256i a, __m256i b)

Intel Description

Multiply the low signed 32-bit integers from each packed 64-bit element in “a” and “b”, and store the signed 64-bit results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := SignExtend64(a[i+31:i]) * SignExtend64(b[i+31:i])
        ELSE
                dst[i+63:i] := src[i+63:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_mul_epi32#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask8 k, __m256i a, __m256i b

Param ETypes:

MASK k, SI32 a, SI32 b

__m256i _mm256_maskz_mul_epi32(__mmask8 k, __m256i a,
                               __m256i b)

Intel Description

Multiply the low signed 32-bit integers from each packed 64-bit element in “a” and “b”, and store the signed 64-bit results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := SignExtend64(a[i+31:i]) * SignExtend64(b[i+31:i])
        ELSE
                dst[i+63:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_mullo_epi32#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask8 k, __m256i a, __m256i b

Param ETypes:

UI32 src, MASK k, UI32 a, UI32 b

__m256i _mm256_mask_mullo_epi32(__m256i src, __mmask8 k,
                                __m256i a, __m256i b)

Intel Description

Multiply the packed 32-bit integers in “a” and “b”, producing intermediate 64-bit integers, and store the low 32 bits of the intermediate integers in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                tmp[63:0] := a[i+31:i] * b[i+31:i]
                dst[i+31:i] := tmp[31:0]
        ELSE
                dst[i+31:i] := src[i+31:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_mullo_epi32#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask8 k, __m256i a, __m256i b

Param ETypes:

MASK k, UI32 a, UI32 b

__m256i _mm256_maskz_mullo_epi32(__mmask8 k, __m256i a,
                                 __m256i b)

Intel Description

Multiply the packed 32-bit integers in “a” and “b”, producing intermediate 64-bit integers, and store the low 32 bits of the intermediate integers in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                tmp[63:0] := a[i+31:i] * b[i+31:i]
                dst[i+31:i] := tmp[31:0]
        ELSE
                dst[i+31:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_mul_epu32#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask8 k, __m256i a, __m256i b

Param ETypes:

UI64 src, MASK k, UI32 a, UI32 b

__m256i _mm256_mask_mul_epu32(__m256i src, __mmask8 k,
                              __m256i a, __m256i b)

Intel Description

Multiply the low unsigned 32-bit integers from each packed 64-bit element in “a” and “b”, and store the unsigned 64-bit results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := a[i+31:i] * b[i+31:i]
        ELSE
                dst[i+63:i] := src[i+63:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_mul_epu32#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask8 k, __m256i a, __m256i b

Param ETypes:

MASK k, UI32 a, UI32 b

__m256i _mm256_maskz_mul_epu32(__mmask8 k, __m256i a,
                               __m256i b)

Intel Description

Multiply the low unsigned 32-bit integers from each packed 64-bit element in “a” and “b”, and store the unsigned 64-bit results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := a[i+31:i] * b[i+31:i]
        ELSE
                dst[i+63:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_sub_epi32#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask8 k, __m256i a, __m256i b

Param ETypes:

UI32 src, MASK k, UI32 a, UI32 b

__m256i _mm256_mask_sub_epi32(__m256i src, __mmask8 k,
                              __m256i a, __m256i b)

Intel Description

Subtract packed 32-bit integers in “b” from packed 32-bit integers in “a”, and store the results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := a[i+31:i] - b[i+31:i]
        ELSE
                dst[i+31:i] := src[i+31:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_sub_epi32#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask8 k, __m256i a, __m256i b

Param ETypes:

MASK k, UI32 a, UI32 b

__m256i _mm256_maskz_sub_epi32(__mmask8 k, __m256i a,
                               __m256i b)

Intel Description

Subtract packed 32-bit integers in “b” from packed 32-bit integers in “a”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := a[i+31:i] - b[i+31:i]
        ELSE
                dst[i+31:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_sub_epi64#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask8 k, __m256i a, __m256i b

Param ETypes:

UI64 src, MASK k, UI64 a, UI64 b

__m256i _mm256_mask_sub_epi64(__m256i src, __mmask8 k,
                              __m256i a, __m256i b)

Intel Description

Subtract packed 64-bit integers in “b” from packed 64-bit integers in “a”, and store the results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := a[i+63:i] - b[i+63:i]
        ELSE
                dst[i+63:i] := src[i+63:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_sub_epi64#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask8 k, __m256i a, __m256i b

Param ETypes:

MASK k, UI64 a, UI64 b

__m256i _mm256_maskz_sub_epi64(__mmask8 k, __m256i a,
                               __m256i b)

Intel Description

Subtract packed 64-bit integers in “b” from packed 64-bit integers in “a”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := a[i+63:i] - b[i+63:i]
        ELSE
                dst[i+63:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_rcp14_pd#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256d

Param Types:

__m256d src, __mmask8 k, __m256d a

Param ETypes:

FP64 src, MASK k, FP64 a

__m256d _mm256_mask_rcp14_pd(__m256d src, __mmask8 k,
                             __m256d a)

Intel Description

Compute the approximate reciprocal of packed double-precision (64-bit) floating-point elements in “a”, and store the results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set). The maximum relative error for this approximation is less than 2^-14.

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := (1.0 / a[i+63:i])
        ELSE
                dst[i+63:i] := src[i+63:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_rcp14_pd#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256d

Param Types:

__mmask8 k, __m256d a

Param ETypes:

MASK k, FP64 a

__m256d _mm256_maskz_rcp14_pd(__mmask8 k, __m256d a);

Intel Description

Compute the approximate reciprocal of packed double-precision (64-bit) floating-point elements in “a”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set). The maximum relative error for this approximation is less than 2^-14.

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := (1.0 / a[i+63:i])
        ELSE
                dst[i+63:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_rcp14_pd#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256d

Param Types:

__m256d a

Param ETypes:

FP64 a

__m256d _mm256_rcp14_pd(__m256d a);

Intel Description

Compute the approximate reciprocal of packed double-precision (64-bit) floating-point elements in “a”, and store the results in “dst”. The maximum relative error for this approximation is less than 2^-14.

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        dst[i+63:i] := (1.0 / a[i+63:i])
ENDFOR
dst[MAX:256] := 0

_mm256_mask_rcp14_ps#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256

Param Types:

__m256 src, __mmask8 k, __m256 a

Param ETypes:

FP32 src, MASK k, FP32 a

__m256 _mm256_mask_rcp14_ps(__m256 src, __mmask8 k,
                            __m256 a)

Intel Description

Compute the approximate reciprocal of packed single-precision (32-bit) floating-point elements in “a”, and store the results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set). The maximum relative error for this approximation is less than 2^-14.

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := (1.0 / a[i+31:i])
        ELSE
                dst[i+31:i] := src[i+31:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_rcp14_ps#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256

Param Types:

__mmask8 k, __m256 a

Param ETypes:

MASK k, FP32 a

__m256 _mm256_maskz_rcp14_ps(__mmask8 k, __m256 a);

Intel Description

Compute the approximate reciprocal of packed single-precision (32-bit) floating-point elements in “a”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set). The maximum relative error for this approximation is less than 2^-14.

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := (1.0 / a[i+31:i])
        ELSE
                dst[i+31:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_rcp14_ps#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256

Param Types:

__m256 a

Param ETypes:

FP32 a

__m256 _mm256_rcp14_ps(__m256 a);

Intel Description

Compute the approximate reciprocal of packed single-precision (32-bit) floating-point elements in “a”, and store the results in “dst”. The maximum relative error for this approximation is less than 2^-14.

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        dst[i+31:i] := (1.0 / a[i+31:i])
ENDFOR
dst[MAX:256] := 0

_mm256_rsqrt14_pd#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256d

Param Types:

__m256d a

Param ETypes:

FP64 a

__m256d _mm256_rsqrt14_pd(__m256d a);

Intel Description

Compute the approximate reciprocal square root of packed double-precision (64-bit) floating-point elements in “a”, and store the results in “dst”. The maximum relative error for this approximation is less than 2^-14.

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        dst[i+63:i] := (1.0 / SQRT(a[i+63:i]))
ENDFOR
dst[MAX:256] := 0

_mm256_mask_rsqrt14_pd#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256d

Param Types:

__m256d src, __mmask8 k, __m256d a

Param ETypes:

FP64 src, MASK k, FP64 a

__m256d _mm256_mask_rsqrt14_pd(__m256d src, __mmask8 k,
                               __m256d a)

Intel Description

Compute the approximate reciprocal square root of packed double-precision (64-bit) floating-point elements in “a”, and store the results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set). The maximum relative error for this approximation is less than 2^-14.

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := (1.0 / SQRT(a[i+63:i]))
        ELSE
                dst[i+63:i] := src[i+63:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_rsqrt14_pd#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256d

Param Types:

__mmask8 k, __m256d a

Param ETypes:

MASK k, FP64 a

__m256d _mm256_maskz_rsqrt14_pd(__mmask8 k, __m256d a);

Intel Description

Compute the approximate reciprocal square root of packed double-precision (64-bit) floating-point elements in “a”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set). The maximum relative error for this approximation is less than 2^-14.

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := (1.0 / SQRT(a[i+63:i]))
        ELSE
                dst[i+63:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_rsqrt14_ps#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256

Param Types:

__m256 a

Param ETypes:

FP32 a

__m256 _mm256_rsqrt14_ps(__m256 a);

Intel Description

Compute the approximate reciprocal square root of packed single-precision (32-bit) floating-point elements in “a”, and store the results in “dst”. The maximum relative error for this approximation is less than 2^-14.

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        dst[i+31:i] := (1.0 / SQRT(a[i+31:i]))
ENDFOR
dst[MAX:256] := 0

_mm256_mask_rsqrt14_ps#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256

Param Types:

__m256 src, __mmask8 k, __m256 a

Param ETypes:

FP32 src, MASK k, FP32 a

__m256 _mm256_mask_rsqrt14_ps(__m256 src, __mmask8 k,
                              __m256 a)

Intel Description

Compute the approximate reciprocal square root of packed single-precision (32-bit) floating-point elements in “a”, and store the results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set). The maximum relative error for this approximation is less than 2^-14.

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := (1.0 / SQRT(a[i+31:i]))
        ELSE
                dst[i+31:i] := src[i+31:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_rsqrt14_ps#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256

Param Types:

__mmask8 k, __m256 a

Param ETypes:

MASK k, FP32 a

__m256 _mm256_maskz_rsqrt14_ps(__mmask8 k, __m256 a);

Intel Description

Compute the approximate reciprocal square root of packed single-precision (32-bit) floating-point elements in “a”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set). The maximum relative error for this approximation is less than 2^-14.

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := (1.0 / SQRT(a[i+31:i]))
        ELSE
                dst[i+31:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_sub_pd#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256d

Param Types:

__m256d src, __mmask8 k, __m256d a, __m256d b

Param ETypes:

FP64 src, MASK k, FP64 a, FP64 b

__m256d _mm256_mask_sub_pd(__m256d src, __mmask8 k,
                           __m256d a, __m256d b)

Intel Description

Subtract packed double-precision (64-bit) floating-point elements in “b” from packed double-precision (64-bit) floating-point elements in “a”, and store the results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := a[i+63:i] - b[i+63:i]
        ELSE
                dst[i+63:i] := src[i+63:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_sub_pd#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256d

Param Types:

__mmask8 k, __m256d a, __m256d b

Param ETypes:

MASK k, FP64 a, FP64 b

__m256d _mm256_maskz_sub_pd(__mmask8 k, __m256d a,
                            __m256d b)

Intel Description

Subtract packed double-precision (64-bit) floating-point elements in “b” from packed double-precision (64-bit) floating-point elements in “a”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                dst[i+63:i] := a[i+63:i] - b[i+63:i]
        ELSE
                dst[i+63:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_sub_ps#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256

Param Types:

__m256 src, __mmask8 k, __m256 a, __m256 b

Param ETypes:

FP32 src, MASK k, FP32 a, FP32 b

__m256 _mm256_mask_sub_ps(__m256 src, __mmask8 k, __m256 a,
                          __m256 b)

Intel Description

Subtract packed single-precision (32-bit) floating-point elements in “b” from packed single-precision (32-bit) floating-point elements in “a”, and store the results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := a[i+31:i] - b[i+31:i]
        ELSE
                dst[i+31:i] := src[i+31:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_sub_ps#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256

Param Types:

__mmask8 k, __m256 a, __m256 b

Param ETypes:

MASK k, FP32 a, FP32 b

__m256 _mm256_maskz_sub_ps(__mmask8 k, __m256 a, __m256 b);

Intel Description

Subtract packed single-precision (32-bit) floating-point elements in “b” from packed single-precision (32-bit) floating-point elements in “a”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := a[i+31:i] - b[i+31:i]
        ELSE
                dst[i+31:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_madd52lo_epu64#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i a, __m256i b, __m256i c

Param ETypes:

UI64 a, UI64 b, UI64 c

__m256i _mm256_madd52lo_epu64(__m256i __X, __m256i __Y,
                              __m256i __Z)

Intel Description

Multiply packed unsigned 52-bit integers in each 64-bit element of “b” and “c” to form a 104-bit intermediate result. Add the low 52-bit unsigned integer from the intermediate result with the corresponding unsigned 64-bit integer in “a”, and store the results in “dst”.

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        tmp[127:0] := ZeroExtend64(b[i+51:i]) * ZeroExtend64(c[i+51:i])
        dst[i+63:i] := a[i+63:i] + ZeroExtend64(tmp[51:0])
ENDFOR
dst[MAX:256] := 0

_mm256_mask_madd52lo_epu64#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i a, __mmask8 k, __m256i b, __m256i c

Param ETypes:

UI64 a, MASK k, UI64 b, UI64 c

__m256i _mm256_mask_madd52lo_epu64(__m256i a, __mmask8 k,
                                   __m256i b, __m256i c)

Intel Description

Multiply packed unsigned 52-bit integers in each 64-bit element of “b” and “c” to form a 104-bit intermediate result. Add the low 52-bit unsigned integer from the intermediate result with the corresponding unsigned 64-bit integer in “a”, and store the results in “dst” using writemask “k” (elements are copied from “a” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                tmp[127:0] := ZeroExtend64(b[i+51:i]) * ZeroExtend64(c[i+51:i])
                dst[i+63:i] := a[i+63:i] + ZeroExtend64(tmp[51:0])
        ELSE
                dst[i+63:i] := a[i+63:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_madd52lo_epu64#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask8 k, __m256i a, __m256i b, __m256i c

Param ETypes:

MASK k, UI64 a, UI64 b, UI64 c

__m256i _mm256_maskz_madd52lo_epu64(__mmask8 k, __m256i a,
                                    __m256i b, __m256i c)

Intel Description

Multiply packed unsigned 52-bit integers in each 64-bit element of “b” and “c” to form a 104-bit intermediate result. Add the low 52-bit unsigned integer from the intermediate result with the corresponding unsigned 64-bit integer in “a”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                tmp[127:0] := ZeroExtend64(b[i+51:i]) * ZeroExtend64(c[i+51:i])
                dst[i+63:i] := a[i+63:i] + ZeroExtend64(tmp[51:0])
        ELSE
                dst[i+63:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_madd52hi_epu64#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i a, __m256i b, __m256i c

Param ETypes:

UI64 a, UI64 b, UI64 c

__m256i _mm256_madd52hi_epu64(__m256i __X, __m256i __Y,
                              __m256i __Z)

Intel Description

Multiply packed unsigned 52-bit integers in each 64-bit element of “b” and “c” to form a 104-bit intermediate result. Add the high 52-bit unsigned integer from the intermediate result with the corresponding unsigned 64-bit integer in “a”, and store the results in “dst”.

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        tmp[127:0] := ZeroExtend64(b[i+51:i]) * ZeroExtend64(c[i+51:i])
        dst[i+63:i] := a[i+63:i] + ZeroExtend64(tmp[103:52])
ENDFOR
dst[MAX:256] := 0

_mm256_mask_madd52hi_epu64#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i a, __mmask8 k, __m256i b, __m256i c

Param ETypes:

UI64 a, MASK k, UI64 b, UI64 c

__m256i _mm256_mask_madd52hi_epu64(__m256i a, __mmask8 k,
                                   __m256i b, __m256i c)

Intel Description

Multiply packed unsigned 52-bit integers in each 64-bit element of “b” and “c” to form a 104-bit intermediate result. Add the high 52-bit unsigned integer from the intermediate result with the corresponding unsigned 64-bit integer in “a”, and store the results in “dst” using writemask “k” (elements are copied from “a” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                tmp[127:0] := ZeroExtend64(b[i+51:i]) * ZeroExtend64(c[i+51:i])
                dst[i+63:i] := a[i+63:i] + ZeroExtend64(tmp[103:52])
        ELSE
                dst[i+63:i] := a[i+63:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_madd52hi_epu64#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask8 k, __m256i a, __m256i b, __m256i c

Param ETypes:

MASK k, UI64 a, UI64 b, UI64 c

__m256i _mm256_maskz_madd52hi_epu64(__mmask8 k, __m256i a,
                                    __m256i b, __m256i c)

Intel Description

Multiply packed unsigned 52-bit integers in each 64-bit element of “b” and “c” to form a 104-bit intermediate result. Add the high 52-bit unsigned integer from the intermediate result with the corresponding unsigned 64-bit integer in “a”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 3
        i := j*64
        IF k[j]
                tmp[127:0] := ZeroExtend64(b[i+51:i]) * ZeroExtend64(c[i+51:i])
                dst[i+63:i] := a[i+63:i] + ZeroExtend64(tmp[103:52])
        ELSE
                dst[i+63:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_dpbf16_ps#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256

Param Types:

__m256 src, __m256bh a, __m256bh b

Param ETypes:

FP32 src, BF16 a, BF16 b

__m256 _mm256_dpbf16_ps(__m256 src, __m256bh a, __m256bh b);

Intel Description

Compute dot-product of BF16 (16-bit) floating-point pairs in “a” and “b”, accumulating the intermediate single-precision (32-bit) floating-point elements with elements in “src”, and store the results in “dst”.

Intel Implementation Psudeo-Code

DEFINE make_fp32(x[15:0]) {
        y.fp32  := 0.0
        y[31:16] := x[15:0]
        RETURN y
}
dst := src
FOR j := 0 to 7
        dst.fp32[j] += make_fp32(a.bf16[2*j+1]) * make_fp32(b.bf16[2*j+1])
        dst.fp32[j] += make_fp32(a.bf16[2*j+0]) * make_fp32(b.bf16[2*j+0])
ENDFOR
dst[MAX:256] := 0

_mm256_mask_dpbf16_ps#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256

Param Types:

__m256 src, __mmask8 k, __m256bh a, __m256bh b

Param ETypes:

FP32 src, MASK k, BF16 a, BF16 b

__m256 _mm256_mask_dpbf16_ps(__m256 src, __mmask8 k,
                             __m256bh a, __m256bh b)

Intel Description

Compute dot-product of BF16 (16-bit) floating-point pairs in “a” and “b”, accumulating the intermediate single-precision (32-bit) floating-point elements with elements in “src”, and store the results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

DEFINE make_fp32(x[15:0]) {
        y.fp32  := 0.0
        y[31:16] := x[15:0]
        RETURN y
}
dst := src
FOR j := 0 to 7
        IF k[j]
                dst.fp32[j] += make_fp32(a.bf16[2*j+1]) * make_fp32(b.bf16[2*j+1])
                dst.fp32[j] += make_fp32(a.bf16[2*j+0]) * make_fp32(b.bf16[2*j+0])
        ELSE
                dst.dword[j] := src.dword[j]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_dpbf16_ps#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256

Param Types:

__mmask8 k, __m256 src, __m256bh a, __m256bh b

Param ETypes:

MASK k, FP32 src, BF16 a, BF16 b

__m256 _mm256_maskz_dpbf16_ps(__mmask8 k, __m256 src,
                              __m256bh a, __m256bh b)

Intel Description

Compute dot-product of BF16 (16-bit) floating-point pairs in “a” and “b”, accumulating the intermediate single-precision (32-bit) floating-point elements with elements in “src”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

DEFINE make_fp32(x[15:0]) {
        y.fp32  := 0.0
        y[31:16] := x[15:0]
        RETURN y
}
dst := src
FOR j := 0 to 7
        IF k[j]
                dst.fp32[j] += make_fp32(a.bf16[2*j+1]) * make_fp32(b.bf16[2*j+1])
                dst.fp32[j] += make_fp32(a.bf16[2*j+0]) * make_fp32(b.bf16[2*j+0])
        ELSE
                dst.dword[j] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_add_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h a, __m256h b

Param ETypes:

FP16 a, FP16 b

__m256h _mm256_add_ph(__m256h a, __m256h b);

Intel Description

Add packed half-precision (16-bit) floating-point elements in “a” and “b”, and store the results in “dst”.

Intel Implementation Psudeo-Code

FOR j := 0 TO 15
        dst.fp16[j] := a.fp16[j] + b.fp16[j]
ENDFOR
dst[MAX:256] := 0

_mm256_mask_add_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h src, __mmask16 k, __m256h a, __m256h b

Param ETypes:

FP16 src, MASK k, FP16 a, FP16 b

__m256h _mm256_mask_add_ph(__m256h src, __mmask16 k,
                           __m256h a, __m256h b)

Intel Description

Add packed half-precision (16-bit) floating-point elements in “a” and “b”, and store the results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 TO 15
        IF k[j]
                dst.fp16[j] := a.fp16[j] + b.fp16[j]
        ELSE
                dst.fp16[j] := src.fp16[j]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_add_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__mmask16 k, __m256h a, __m256h b

Param ETypes:

MASK k, FP16 a, FP16 b

__m256h _mm256_maskz_add_ph(__mmask16 k, __m256h a,
                            __m256h b)

Intel Description

Add packed half-precision (16-bit) floating-point elements in “a” and “b”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 TO 15
        IF k[j]
                dst.fp16[j] := a.fp16[j] + b.fp16[j]
        ELSE
                dst.fp16[j] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_div_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h a, __m256h b

Param ETypes:

FP16 a, FP16 b

__m256h _mm256_div_ph(__m256h a, __m256h b);

Intel Description

Divide packed half-precision (16-bit) floating-point elements in “a” by packed elements in “b”, and store the results in “dst”.

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        dst.fp16[j] := a.fp16[j] / b.fp16[j]
ENDFOR
dst[MAX:256] := 0

_mm256_mask_div_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h src, __mmask16 k, __m256h a, __m256h b

Param ETypes:

FP16 src, MASK k, FP16 a, FP16 b

__m256h _mm256_mask_div_ph(__m256h src, __mmask16 k,
                           __m256h a, __m256h b)

Intel Description

Divide packed half-precision (16-bit) floating-point elements in “a” by packed elements in “b”, and store the results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        IF k[j]
                dst.fp16[j] := a.fp16[j] / b.fp16[j]
        ELSE
                dst.fp16[j] := src.fp16[j]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_div_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__mmask16 k, __m256h a, __m256h b

Param ETypes:

MASK k, FP16 a, FP16 b

__m256h _mm256_maskz_div_ph(__mmask16 k, __m256h a,
                            __m256h b)

Intel Description

Divide packed half-precision (16-bit) floating-point elements in “a” by packed elements in “b”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        IF k[j]
                dst.fp16[j] := a.fp16[j] / b.fp16[j]
        ELSE
                dst.fp16[j] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_fmadd_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h a, __m256h b, __m256h c

Param ETypes:

FP16 a, FP16 b, FP16 c

__m256h _mm256_fmadd_ph(__m256h a, __m256h b, __m256h c);

Intel Description

Multiply packed half-precision (16-bit) floating-point elements in “a” and “b”, add the intermediate result to packed elements in “c”, and store the results in “dst”.

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        dst.fp16[j] := (a.fp16[j] * b.fp16[j]) + c.fp16[j]
ENDFOR
dst[MAX:256] := 0

_mm256_mask_fmadd_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h a, __mmask16 k, __m256h b, __m256h c

Param ETypes:

FP16 a, MASK k, FP16 b, FP16 c

__m256h _mm256_mask_fmadd_ph(__m256h a, __mmask16 k,
                             __m256h b, __m256h c)

Intel Description

Multiply packed half-precision (16-bit) floating-point elements in “a” and “b”, add the intermediate result to packed elements in “c”, and store the results in “dst” using writemask “k” (elements are copied from “a” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        IF k[j]
                dst.fp16[j] := (a.fp16[j] * b.fp16[j]) + c.fp16[j]
        ELSE
                dst.fp16[j] := a.fp16[j]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask3_fmadd_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h a, __m256h b, __m256h c, __mmask16 k

Param ETypes:

FP16 a, FP16 b, FP16 c, MASK k

__m256h _mm256_mask3_fmadd_ph(__m256h a, __m256h b,
                              __m256h c, __mmask16 k)

Intel Description

Multiply packed half-precision (16-bit) floating-point elements in “a” and “b”, add the intermediate result to packed elements in “c”, and store the results in “dst” using writemask “k” (elements are copied from “c” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        IF k[j]
                dst.fp16[j] := (a.fp16[j] * b.fp16[j]) + c.fp16[j]
        ELSE
                dst.fp16[j] := c.fp16[j]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_fmadd_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__mmask16 k, __m256h a, __m256h b, __m256h c

Param ETypes:

MASK k, FP16 a, FP16 b, FP16 c

__m256h _mm256_maskz_fmadd_ph(__mmask16 k, __m256h a,
                              __m256h b, __m256h c)

Intel Description

Multiply packed half-precision (16-bit) floating-point elements in “a” and “b”, add the intermediate result to packed elements in “c”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        IF k[j]
                dst.fp16[j] := (a.fp16[j] * b.fp16[j]) + c.fp16[j]
        ELSE
                dst.fp16[j] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_fnmadd_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h a, __m256h b, __m256h c

Param ETypes:

FP16 a, FP16 b, FP16 c

__m256h _mm256_fnmadd_ph(__m256h a, __m256h b, __m256h c);

Intel Description

Multiply packed half-precision (16-bit) floating-point elements in “a” and “b”, add the negated intermediate result to packed elements in “c”, and store the results in “dst”.

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        dst.fp16[j] := -(a.fp16[j] * b.fp16[j]) + c.fp16[j]
ENDFOR
dst[MAX:256] := 0

_mm256_mask_fnmadd_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h a, __mmask16 k, __m256h b, __m256h c

Param ETypes:

FP16 a, MASK k, FP16 b, FP16 c

__m256h _mm256_mask_fnmadd_ph(__m256h a, __mmask16 k,
                              __m256h b, __m256h c)

Intel Description

Multiply packed half-precision (16-bit) floating-point elements in “a” and “b”, add the negated intermediate result to packed elements in “c”, and store the results in “dst” using writemask “k” (elements are copied from “a” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        IF k[j]
                dst.fp16[j] := -(a.fp16[j] * b.fp16[j]) + c.fp16[j]
        ELSE
                dst.fp16[j] := a.fp16[j]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask3_fnmadd_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h a, __m256h b, __m256h c, __mmask16 k

Param ETypes:

FP16 a, FP16 b, FP16 c, MASK k

__m256h _mm256_mask3_fnmadd_ph(__m256h a, __m256h b,
                               __m256h c, __mmask16 k)

Intel Description

Multiply packed half-precision (16-bit) floating-point elements in “a” and “b”, add the negated intermediate result to packed elements in “c”, and store the results in “dst” using writemask “k” (elements are copied from “c” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        IF k[j]
                dst.fp16[j] := -(a.fp16[j] * b.fp16[j]) + c.fp16[j]
        ELSE
                dst.fp16[j] := c.fp16[j]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_fnmadd_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__mmask16 k, __m256h a, __m256h b, __m256h c

Param ETypes:

MASK k, FP16 a, FP16 b, FP16 c

__m256h _mm256_maskz_fnmadd_ph(__mmask16 k, __m256h a,
                               __m256h b, __m256h c)

Intel Description

Multiply packed half-precision (16-bit) floating-point elements in “a” and “b”, add the negated intermediate result to packed elements in “c”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        IF k[j]
                dst.fp16[j] := -(a.fp16[j] * b.fp16[j]) + c.fp16[j]
        ELSE
                dst.fp16[j] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_fmsub_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h a, __m256h b, __m256h c

Param ETypes:

FP16 a, FP16 b, FP16 c

__m256h _mm256_fmsub_ph(__m256h a, __m256h b, __m256h c);

Intel Description

Multiply packed half-precision (16-bit) floating-point elements in “a” and “b”, subtract packed elements in “c” from the intermediate result, and store the results in “dst”.

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        dst.fp16[j] := (a.fp16[j] * b.fp16[j]) - c.fp16[j]
ENDFOR
dst[MAX:256] := 0

_mm256_mask_fmsub_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h a, __mmask16 k, __m256h b, __m256h c

Param ETypes:

FP16 a, MASK k, FP16 b, FP16 c

__m256h _mm256_mask_fmsub_ph(__m256h a, __mmask16 k,
                             __m256h b, __m256h c)

Intel Description

Multiply packed half-precision (16-bit) floating-point elements in “a” and “b”, subtract packed elements in “c” from the intermediate result, and store the results in “dst” using writemask “k” (elements are copied from “a” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        IF k[j]
                dst.fp16[j] := (a.fp16[j] * b.fp16[j]) - c.fp16[j]
        ELSE
                dst.fp16[j] := a.fp16[j]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask3_fmsub_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h a, __m256h b, __m256h c, __mmask16 k

Param ETypes:

FP16 a, FP16 b, FP16 c, MASK k

__m256h _mm256_mask3_fmsub_ph(__m256h a, __m256h b,
                              __m256h c, __mmask16 k)

Intel Description

Multiply packed half-precision (16-bit) floating-point elements in “a” and “b”, subtract packed elements in “c” from the intermediate result, and store the results in “dst” using writemask “k” (elements are copied from “c” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        IF k[j]
                dst.fp16[j] := (a.fp16[j] * b.fp16[j]) - c.fp16[j]
        ELSE
                dst.fp16[j] := c.fp16[j]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_fmsub_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__mmask16 k, __m256h a, __m256h b, __m256h c

Param ETypes:

MASK k, FP16 a, FP16 b, FP16 c

__m256h _mm256_maskz_fmsub_ph(__mmask16 k, __m256h a,
                              __m256h b, __m256h c)

Intel Description

Multiply packed half-precision (16-bit) floating-point elements in “a” and “b”, subtract packed elements in “c” from the intermediate result, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        IF k[j]
                dst.fp16[j] := (a.fp16[j] * b.fp16[j]) - c.fp16[j]
        ELSE
                dst.fp16[j] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_fnmsub_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h a, __m256h b, __m256h c

Param ETypes:

FP16 a, FP16 b, FP16 c

__m256h _mm256_fnmsub_ph(__m256h a, __m256h b, __m256h c);

Intel Description

Multiply packed half-precision (16-bit) floating-point elements in “a” and “b”, subtract packed elements in “c” from the negated intermediate result, and store the results in “dst”.

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        dst.fp16[j] := -(a.fp16[j] * b.fp16[j]) - c.fp16[j]
ENDFOR
dst[MAX:256] := 0

_mm256_mask_fnmsub_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h a, __mmask16 k, __m256h b, __m256h c

Param ETypes:

FP16 a, MASK k, FP16 b, FP16 c

__m256h _mm256_mask_fnmsub_ph(__m256h a, __mmask16 k,
                              __m256h b, __m256h c)

Intel Description

Multiply packed half-precision (16-bit) floating-point elements in “a” and “b”, subtract packed elements in “c” from the negated intermediate result, and store the results in “dst” using writemask “k” (elements are copied from “a” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        IF k[j]
                dst.fp16[j] := -(a.fp16[j] * b.fp16[j]) - c.fp16[j]
        ELSE
                dst.fp16[j] := a.fp16[j]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask3_fnmsub_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h a, __m256h b, __m256h c, __mmask16 k

Param ETypes:

FP16 a, FP16 b, FP16 c, MASK k

__m256h _mm256_mask3_fnmsub_ph(__m256h a, __m256h b,
                               __m256h c, __mmask16 k)

Intel Description

Multiply packed half-precision (16-bit) floating-point elements in “a” and “b”, subtract packed elements in “c” from the negated intermediate result, and store the results in “dst” using writemask “k” (elements are copied from “c” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        IF k[j]
                dst.fp16[j] := -(a.fp16[j] * b.fp16[j]) - c.fp16[j]
        ELSE
                dst.fp16[j] := c.fp16[j]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_fnmsub_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__mmask16 k, __m256h a, __m256h b, __m256h c

Param ETypes:

MASK k, FP16 a, FP16 b, FP16 c

__m256h _mm256_maskz_fnmsub_ph(__mmask16 k, __m256h a,
                               __m256h b, __m256h c)

Intel Description

Multiply packed half-precision (16-bit) floating-point elements in “a” and “b”, subtract packed elements in “c” from the negated intermediate result, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        IF k[j]
                dst.fp16[j] := -(a.fp16[j] * b.fp16[j]) - c.fp16[j]
        ELSE
                dst.fp16[j] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_fmaddsub_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h a, __m256h b, __m256h c

Param ETypes:

FP16 a, FP16 b, FP16 c

__m256h _mm256_fmaddsub_ph(__m256h a, __m256h b, __m256h c);

Intel Description

Multiply packed half-precision (16-bit) floating-point elements in “a” and “b”, alternatively add and subtract packed elements in “c” to/from the intermediate result, and store the results in “dst”.

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        IF ((j & 1) == 0)
                dst.fp16[j] := (a.fp16[j] * b.fp16[j]) - c.fp16[j]
        ELSE
                dst.fp16[j] := (a.fp16[j] * b.fp16[j]) + c.fp16[j]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_fmaddsub_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h a, __mmask16 k, __m256h b, __m256h c

Param ETypes:

FP16 a, MASK k, FP16 b, FP16 c

__m256h _mm256_mask_fmaddsub_ph(__m256h a, __mmask16 k,
                                __m256h b, __m256h c)

Intel Description

Multiply packed half-precision (16-bit) floating-point elements in “a” and “b”, alternatively add and subtract packed elements in “c” to/from the intermediate result, and store the results in “dst” using writemask “k” (elements are copied from “a” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        IF k[j]
                IF ((j & 1) == 0)
                        dst.fp16[j] := (a.fp16[j] * b.fp16[j]) - c.fp16[j]
                ELSE
                        dst.fp16[j] := (a.fp16[j] * b.fp16[j]) + c.fp16[j]
                FI
        ELSE
                dst.fp16[j] := a.fp16[j]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask3_fmaddsub_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h a, __m256h b, __m256h c, __mmask16 k

Param ETypes:

FP16 a, FP16 b, FP16 c, MASK k

__m256h _mm256_mask3_fmaddsub_ph(__m256h a, __m256h b,
                                 __m256h c, __mmask16 k)

Intel Description

Multiply packed half-precision (16-bit) floating-point elements in “a” and “b”, alternatively add and subtract packed elements in “c” to/from the intermediate result, and store the results in “dst” using writemask “k” (elements are copied from “c” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        IF k[j]
                IF ((j & 1) == 0)
                        dst.fp16[j] := (a.fp16[j] * b.fp16[j]) - c.fp16[j]
                ELSE
                        dst.fp16[j] := (a.fp16[j] * b.fp16[j]) + c.fp16[j]
                FI
        ELSE
                dst.fp16[j] := c.fp16[j]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_fmaddsub_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__mmask16 k, __m256h a, __m256h b, __m256h c

Param ETypes:

MASK k, FP16 a, FP16 b, FP16 c

__m256h _mm256_maskz_fmaddsub_ph(__mmask16 k, __m256h a,
                                 __m256h b, __m256h c)

Intel Description

Multiply packed half-precision (16-bit) floating-point elements in “a” and “b”, alternatively add and subtract packed elements in “c” to/from the intermediate result, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        IF k[j]
                IF ((j & 1) == 0)
                        dst.fp16[j] := (a.fp16[j] * b.fp16[j]) - c.fp16[j]
                ELSE
                        dst.fp16[j] := (a.fp16[j] * b.fp16[j]) + c.fp16[j]
                FI
        ELSE
                dst.fp16[j] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_fmsubadd_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h a, __m256h b, __m256h c

Param ETypes:

FP16 a, FP16 b, FP16 c

__m256h _mm256_fmsubadd_ph(__m256h a, __m256h b, __m256h c);

Intel Description

Multiply packed half-precision (16-bit) floating-point elements in “a” and “b”, alternatively subtract and add packed elements in “c” to/from the intermediate result, and store the results in “dst”.

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        IF ((j & 1) == 0)
                dst.fp16[j] := (a.fp16[j] * b.fp16[j]) + c.fp16[j]
        ELSE
                dst.fp16[j] := (a.fp16[j] * b.fp16[j]) - c.fp16[j]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_fmsubadd_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h a, __mmask16 k, __m256h b, __m256h c

Param ETypes:

FP16 a, MASK k, FP16 b, FP16 c

__m256h _mm256_mask_fmsubadd_ph(__m256h a, __mmask16 k,
                                __m256h b, __m256h c)

Intel Description

Multiply packed half-precision (16-bit) floating-point elements in “a” and “b”, alternatively subtract and add packed elements in “c” to/from the intermediate result, and store the results in “dst” using writemask “k” (elements are copied from “a” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        IF k[j]
                IF ((j & 1) == 0)
                        dst.fp16[j] := (a.fp16[j] * b.fp16[j]) + c.fp16[j]
                ELSE
                        dst.fp16[j] := (a.fp16[j] * b.fp16[j]) - c.fp16[j]
                FI
        ELSE
                dst.fp16[j] := a.fp16[j]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask3_fmsubadd_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h a, __m256h b, __m256h c, __mmask16 k

Param ETypes:

FP16 a, FP16 b, FP16 c, MASK k

__m256h _mm256_mask3_fmsubadd_ph(__m256h a, __m256h b,
                                 __m256h c, __mmask16 k)

Intel Description

Multiply packed half-precision (16-bit) floating-point elements in “a” and “b”, alternatively subtract and add packed elements in “c” to/from the intermediate result, and store the results in “dst” using writemask “k” (elements are copied from “c” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        IF k[j]
                IF ((j & 1) == 0)
                        dst.fp16[j] := (a.fp16[j] * b.fp16[j]) + c.fp16[j]
                ELSE
                        dst.fp16[j] := (a.fp16[j] * b.fp16[j]) - c.fp16[j]
                FI
        ELSE
                dst.fp16[j] := c.fp16[j]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_fmsubadd_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__mmask16 k, __m256h a, __m256h b, __m256h c

Param ETypes:

MASK k, FP16 a, FP16 b, FP16 c

__m256h _mm256_maskz_fmsubadd_ph(__mmask16 k, __m256h a,
                                 __m256h b, __m256h c)

Intel Description

Multiply packed half-precision (16-bit) floating-point elements in “a” and “b”, alternatively subtract and add packed elements in “c” to/from the intermediate result, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        IF k[j]
                IF ((j & 1) == 0)
                        dst.fp16[j] := (a.fp16[j] * b.fp16[j]) + c.fp16[j]
                ELSE
                        dst.fp16[j] := (a.fp16[j] * b.fp16[j]) - c.fp16[j]
                FI
        ELSE
                dst.fp16[j] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_sub_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h a, __m256h b

Param ETypes:

FP16 a, FP16 b

__m256h _mm256_sub_ph(__m256h a, __m256h b);

Intel Description

Subtract packed half-precision (16-bit) floating-point elements in “b” from packed half-precision (16-bit) floating-point elements in “a”, and store the results in “dst”.

Intel Implementation Psudeo-Code

FOR j := 0 TO 15
        dst.fp16[j] := a.fp16[j] - b.fp16[j]
ENDFOR
dst[MAX:256] := 0

_mm256_mask_sub_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h src, __mmask16 k, __m256h a, __m256h b

Param ETypes:

FP16 src, MASK k, FP16 a, FP16 b

__m256h _mm256_mask_sub_ph(__m256h src, __mmask16 k,
                           __m256h a, __m256h b)

Intel Description

Subtract packed half-precision (16-bit) floating-point elements in “b” from packed half-precision (16-bit) floating-point elements in “a”, and store the results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 TO 15
        IF k[j]
                dst.fp16[j] := a.fp16[j] - b.fp16[j]
        ELSE
                dst.fp16[j] := src.fp16[j]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_sub_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__mmask16 k, __m256h a, __m256h b

Param ETypes:

MASK k, FP16 a, FP16 b

__m256h _mm256_maskz_sub_ph(__mmask16 k, __m256h a,
                            __m256h b)

Intel Description

Subtract packed half-precision (16-bit) floating-point elements in “b” from packed half-precision (16-bit) floating-point elements in “a”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 TO 15
        IF k[j]
                dst.fp16[j] := a.fp16[j] - b.fp16[j]
        ELSE
                dst.fp16[j] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mul_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h a, __m256h b

Param ETypes:

FP16 a, FP16 b

__m256h _mm256_mul_ph(__m256h a, __m256h b);

Intel Description

Multiply packed half-precision (16-bit) floating-point elements in “a” and “b”, and store the results in “dst”.

Intel Implementation Psudeo-Code

FOR i := 0 TO 15
        dst.fp16[i] := a.fp16[i] * b.fp16[i]
ENDFOR
dst[MAX:256] := 0

_mm256_mask_mul_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h src, __mmask16 k, __m256h a, __m256h b

Param ETypes:

FP16 src, MASK k, FP16 a, FP16 b

__m256h _mm256_mask_mul_ph(__m256h src, __mmask16 k,
                           __m256h a, __m256h b)

Intel Description

Multiply packed half-precision (16-bit) floating-point elements in “a” and “b”, and store the results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR i := 0 TO 15
        IF k[i]
                dst.fp16[i] := a.fp16[i] * b.fp16[i]
        ELSE
                dst.fp16[i] := src.fp16[i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_mul_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__mmask16 k, __m256h a, __m256h b

Param ETypes:

MASK k, FP16 a, FP16 b

__m256h _mm256_maskz_mul_ph(__mmask16 k, __m256h a,
                            __m256h b)

Intel Description

Multiply packed half-precision (16-bit) floating-point elements in “a” and “b”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR i := 0 TO 15
        IF k[i]
                dst.fp16[i] := a.fp16[i] * b.fp16[i]
        ELSE
                dst.fp16[i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_fmul_pch#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h a, __m256h b

Param ETypes:

FP16 a, FP16 b

__m256h _mm256_fmul_pch(__m256h a, __m256h b);

Intel Description

Multiply packed complex numbers in “a” and “b”, and store the results in “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]”.

Intel Implementation Psudeo-Code

FOR i := 0 to 7
        dst.fp16[2*i+0] := (a.fp16[2*i+0] * b.fp16[2*i+0]) - (a.fp16[2*i+1] * b.fp16[2*i+1])
        dst.fp16[2*i+1] := (a.fp16[2*i+1] * b.fp16[2*i+0]) + (a.fp16[2*i+0] * b.fp16[2*i+1])
ENDFOR
dst[MAX:256] := 0

_mm256_mul_pch#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h a, __m256h b

Param ETypes:

FP16 a, FP16 b

__m256h _mm256_mul_pch(__m256h a, __m256h b);

Intel Description

Multiply packed complex numbers in “a” and “b”, and store the results in “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]”.

Intel Implementation Psudeo-Code

FOR i := 0 to 7
        dst.fp16[2*i+0] := (a.fp16[2*i+0] * b.fp16[2*i+0]) - (a.fp16[2*i+1] * b.fp16[2*i+1])
        dst.fp16[2*i+1] := (a.fp16[2*i+1] * b.fp16[2*i+0]) + (a.fp16[2*i+0] * b.fp16[2*i+1])
ENDFOR
dst[MAX:256] := 0

_mm256_mask_fmul_pch#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h src, __mmask8 k, __m256h a, __m256h b

Param ETypes:

FP16 src, MASK k, FP16 a, FP16 b

__m256h _mm256_mask_fmul_pch(__m256h src, __mmask8 k,
                             __m256h a, __m256h b)

Intel Description

Multiply packed complex numbers in “a” and “b”, and store the results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set). 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]”.

Intel Implementation Psudeo-Code

FOR i := 0 to 7
        IF k[i]
                dst.fp16[2*i+0] := (a.fp16[2*i+0] * b.fp16[2*i+0]) - (a.fp16[2*i+1] * b.fp16[2*i+1])
                dst.fp16[2*i+1] := (a.fp16[2*i+1] * b.fp16[2*i+0]) + (a.fp16[2*i+0] * b.fp16[2*i+1])
        ELSE
                dst.fp16[2*i+0] := src.fp16[2*i+0]
                dst.fp16[2*i+1] := src.fp16[2*i+1]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_mul_pch#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h src, __mmask8 k, __m256h a, __m256h b

Param ETypes:

FP16 src, MASK k, FP16 a, FP16 b

__m256h _mm256_mask_mul_pch(__m256h src, __mmask8 k,
                            __m256h a, __m256h b)

Intel Description

Multiply packed complex numbers in “a” and “b”, and store the results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set). 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]”.

Intel Implementation Psudeo-Code

FOR i := 0 to 7
        IF k[i]
                dst.fp16[2*i+0] := (a.fp16[2*i+0] * b.fp16[2*i+0]) - (a.fp16[2*i+1] * b.fp16[2*i+1])
                dst.fp16[2*i+1] := (a.fp16[2*i+1] * b.fp16[2*i+0]) + (a.fp16[2*i+0] * b.fp16[2*i+1])
        ELSE
                dst.fp16[2*i+0] := src.fp16[2*i+0]
                dst.fp16[2*i+1] := src.fp16[2*i+1]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_fmul_pch#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__mmask8 k, __m256h a, __m256h b

Param ETypes:

MASK k, FP16 a, FP16 b

__m256h _mm256_maskz_fmul_pch(__mmask8 k, __m256h a,
                              __m256h b)

Intel Description

Multiply packed complex numbers in “a” and “b”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set). 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]”.

Intel Implementation Psudeo-Code

FOR i := 0 to 7
        IF k[i]
                dst.fp16[2*i+0] := (a.fp16[2*i+0] * b.fp16[2*i+0]) - (a.fp16[2*i+1] * b.fp16[2*i+1])
                dst.fp16[2*i+1] := (a.fp16[2*i+1] * b.fp16[2*i+0]) + (a.fp16[2*i+0] * b.fp16[2*i+1])
        ELSE
                dst.fp16[2*i+0] := 0
                dst.fp16[2*i+1] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_mul_pch#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__mmask8 k, __m256h a, __m256h b

Param ETypes:

MASK k, FP16 a, FP16 b

__m256h _mm256_maskz_mul_pch(__mmask8 k, __m256h a,
                             __m256h b)

Intel Description

Multiply packed complex numbers in “a” and “b”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set). 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]”.

Intel Implementation Psudeo-Code

FOR i := 0 to 7
        IF k[i]
                dst.fp16[2*i+0] := (a.fp16[2*i+0] * b.fp16[2*i+0]) - (a.fp16[2*i+1] * b.fp16[2*i+1])
                dst.fp16[2*i+1] := (a.fp16[2*i+1] * b.fp16[2*i+0]) + (a.fp16[2*i+0] * b.fp16[2*i+1])
        ELSE
                dst.fp16[2*i+0] := 0
                dst.fp16[2*i+1] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_fcmul_pch#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h a, __m256h b

Param ETypes:

FP16 a, FP16 b

__m256h _mm256_fcmul_pch(__m256h a, __m256h b);

Intel Description

Multiply packed complex numbers in “a” by the complex conjugates of packed complex numbers in “b”, and store the results in “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]”.

Intel Implementation Psudeo-Code

FOR i := 0 to 7
        dst.fp16[2*i+0] := (a.fp16[2*i+0] * b.fp16[2*i+0]) + (a.fp16[2*i+1] * b.fp16[2*i+1])
        dst.fp16[2*i+1] := (a.fp16[2*i+1] * b.fp16[2*i+0]) - (a.fp16[2*i+0] * b.fp16[2*i+1])
ENDFOR
dst[MAX:256] := 0

_mm256_cmul_pch#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h a, __m256h b

Param ETypes:

FP16 a, FP16 b

__m256h _mm256_cmul_pch(__m256h a, __m256h b);

Intel Description

Multiply packed complex numbers in “a” by the complex conjugates of packed complex numbers in “b”, and store the results in “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]”.

Intel Implementation Psudeo-Code

FOR i := 0 to 7
        dst.fp16[2*i+0] := (a.fp16[2*i+0] * b.fp16[2*i+0]) + (a.fp16[2*i+1] * b.fp16[2*i+1])
        dst.fp16[2*i+1] := (a.fp16[2*i+1] * b.fp16[2*i+0]) - (a.fp16[2*i+0] * b.fp16[2*i+1])
ENDFOR
dst[MAX:256] := 0

_mm256_mask_fcmul_pch#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h src, __mmask8 k, __m256h a, __m256h b

Param ETypes:

FP16 src, MASK k, FP16 a, FP16 b

__m256h _mm256_mask_fcmul_pch(__m256h src, __mmask8 k,
                              __m256h a, __m256h b)

Intel Description

Multiply packed complex numbers in “a” by the complex conjugates of packed complex numbers in “b”, and store the results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set). 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]”.

Intel Implementation Psudeo-Code

FOR i := 0 to 7
        IF k[i]
                dst.fp16[2*i+0] := (a.fp16[2*i+0] * b.fp16[2*i+0]) + (a.fp16[2*i+1] * b.fp16[2*i+1])
                dst.fp16[2*i+1] := (a.fp16[2*i+1] * b.fp16[2*i+0]) - (a.fp16[2*i+0] * b.fp16[2*i+1])
        ELSE
                dst.fp16[2*i+0] := src.fp16[2*i+0]
                dst.fp16[2*i+1] := src.fp16[2*i+1]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_cmul_pch#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h src, __mmask8 k, __m256h a, __m256h b

Param ETypes:

FP16 src, MASK k, FP16 a, FP16 b

__m256h _mm256_mask_cmul_pch(__m256h src, __mmask8 k,
                             __m256h a, __m256h b)

Intel Description

Multiply packed complex numbers in “a” by the complex conjugates of packed complex numbers in “b”, and store the results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set). 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]”.

Intel Implementation Psudeo-Code

FOR i := 0 to 7
        IF k[i]
                dst.fp16[2*i+0] := (a.fp16[2*i+0] * b.fp16[2*i+0]) + (a.fp16[2*i+1] * b.fp16[2*i+1])
                dst.fp16[2*i+1] := (a.fp16[2*i+1] * b.fp16[2*i+0]) - (a.fp16[2*i+0] * b.fp16[2*i+1])
        ELSE
                dst.fp16[2*i+0] := src.fp16[2*i+0]
                dst.fp16[2*i+1] := src.fp16[2*i+1]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_fcmul_pch#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__mmask8 k, __m256h a, __m256h b

Param ETypes:

MASK k, FP16 a, FP16 b

__m256h _mm256_maskz_fcmul_pch(__mmask8 k, __m256h a,
                               __m256h b)

Intel Description

Multiply packed complex numbers in “a” by the complex conjugates of packed complex numbers in “b”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set). 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]”.

Intel Implementation Psudeo-Code

FOR i := 0 to 7
        IF k[i]
                dst.fp16[2*i+0] := (a.fp16[2*i+0] * b.fp16[2*i+0]) + (a.fp16[2*i+1] * b.fp16[2*i+1])
                dst.fp16[2*i+1] := (a.fp16[2*i+1] * b.fp16[2*i+0]) - (a.fp16[2*i+0] * b.fp16[2*i+1])
        ELSE
                dst.fp16[2*i+0] := 0
                dst.fp16[2*i+1] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_cmul_pch#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__mmask8 k, __m256h a, __m256h b

Param ETypes:

MASK k, FP16 a, FP16 b

__m256h _mm256_maskz_cmul_pch(__mmask8 k, __m256h a,
                              __m256h b)

Intel Description

Multiply packed complex numbers in “a” by the complex conjugates of packed complex numbers in “b”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set). 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]”.

Intel Implementation Psudeo-Code

FOR i := 0 to 7
        IF k[i]
                dst.fp16[2*i+0] := (a.fp16[2*i+0] * b.fp16[2*i+0]) + (a.fp16[2*i+1] * b.fp16[2*i+1])
                dst.fp16[2*i+1] := (a.fp16[2*i+1] * b.fp16[2*i+0]) - (a.fp16[2*i+0] * b.fp16[2*i+1])
        ELSE
                dst.fp16[2*i+0] := 0
                dst.fp16[2*i+1] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_fmadd_pch#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h a, __m256h b, __m256h c

Param ETypes:

FP16 a, FP16 b, FP16 c

__m256h _mm256_fmadd_pch(__m256h a, __m256h b, __m256h c);

Intel Description

Multiply packed complex numbers in “a” and “b”, accumulate to the corresponding complex numbers in “c”, and store the results in “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]”.

Intel Implementation Psudeo-Code

FOR i := 0 to 7
        dst.fp16[2*i+0] := (a.fp16[2*i+0] * b.fp16[2*i+0]) - (a.fp16[2*i+1] * b.fp16[2*i+1]) + c.fp16[2*i+0]
        dst.fp16[2*i+1] := (a.fp16[2*i+1] * b.fp16[2*i+0]) + (a.fp16[2*i+0] * b.fp16[2*i+1]) + c.fp16[2*i+1]
ENDFOR
dst[MAX:256] := 0

_mm256_mask_fmadd_pch#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h a, __mmask8 k, __m256h b, __m256h c

Param ETypes:

FP16 a, MASK k, FP16 b, FP16 c

__m256h _mm256_mask_fmadd_pch(__m256h a, __mmask8 k,
                              __m256h b, __m256h c)

Intel Description

Multiply packed complex numbers in “a” and “b”, accumulate to the corresponding complex numbers in “c”, and store the results in “dst” using writemask “k” (elements are copied from “a” when the corresponding mask bit is not set). 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]”.

Intel Implementation Psudeo-Code

FOR i := 0 to 7
        IF k[i]
                dst.fp16[2*i+0] := (a.fp16[2*i+0] * b.fp16[2*i+0]) - (a.fp16[2*i+1] * b.fp16[2*i+1]) + c.fp16[2*i+0]
                dst.fp16[2*i+1] := (a.fp16[2*i+1] * b.fp16[2*i+0]) + (a.fp16[2*i+0] * b.fp16[2*i+1]) + c.fp16[2*i+1]
        ELSE
                dst.fp16[2*i+0] := a.fp16[2*i+0]
                dst.fp16[2*i+1] := a.fp16[2*i+1]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask3_fmadd_pch#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h a, __m256h b, __m256h c, __mmask8 k

Param ETypes:

FP16 a, FP16 b, FP16 c, MASK k

__m256h _mm256_mask3_fmadd_pch(__m256h a, __m256h b,
                               __m256h c, __mmask8 k)

Intel Description

Multiply packed complex numbers in “a” and “b”, accumulate to the corresponding complex numbers in “c”, and store the results in “dst” using writemask “k” (elements are copied from “c” when the corresponding mask bit is not set). 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]”.

Intel Implementation Psudeo-Code

FOR i := 0 to 7
        IF k[i]
                dst.fp16[2*i+0] := (a.fp16[2*i+0] * b.fp16[2*i+0]) - (a.fp16[2*i+1] * b.fp16[2*i+1]) + c.fp16[2*i+0]
                dst.fp16[2*i+1] := (a.fp16[2*i+1] * b.fp16[2*i+0]) + (a.fp16[2*i+0] * b.fp16[2*i+1]) + c.fp16[2*i+1]
        ELSE
                dst.fp16[2*i+0] := c.fp16[2*i+0]
                dst.fp16[2*i+1] := c.fp16[2*i+1]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_fmadd_pch#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__mmask8 k, __m256h a, __m256h b, __m256h c

Param ETypes:

MASK k, FP16 a, FP16 b, FP16 c

__m256h _mm256_maskz_fmadd_pch(__mmask8 k, __m256h a,
                               __m256h b, __m256h c)

Intel Description

Multiply packed complex numbers in “a” and “b”, accumulate to the corresponding complex numbers in “c”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set). 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]”.

Intel Implementation Psudeo-Code

FOR i := 0 to 7
        IF k[i]
                dst.fp16[2*i+0] := (a.fp16[2*i+0] * b.fp16[2*i+0]) - (a.fp16[2*i+1] * b.fp16[2*i+1]) + c.fp16[2*i+0]
                dst.fp16[2*i+1] := (a.fp16[2*i+1] * b.fp16[2*i+0]) + (a.fp16[2*i+0] * b.fp16[2*i+1]) + c.fp16[2*i+1]
        ELSE
                dst.fp16[2*i+0] := 0
                dst.fp16[2*i+1] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_fcmadd_pch#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h a, __m256h b, __m256h c

Param ETypes:

FP16 a, FP16 b, FP16 c

__m256h _mm256_fcmadd_pch(__m256h a, __m256h b, __m256h c);

Intel Description

Multiply packed complex numbers in “a” by the complex conjugates of packed complex numbers in “b”, accumulate to the corresponding complex numbers in “c”, and store the results in “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]”.

Intel Implementation Psudeo-Code

FOR i := 0 to 7
        dst.fp16[2*i+0] := (a.fp16[2*i+0] * b.fp16[2*i+0]) + (a.fp16[2*i+1] * b.fp16[2*i+1]) + c.fp16[2*i+0]
        dst.fp16[2*i+1] := (a.fp16[2*i+1] * b.fp16[2*i+0]) - (a.fp16[2*i+0] * b.fp16[2*i+1]) + c.fp16[2*i+1]
ENDFOR
dst[MAX:256] := 0

_mm256_mask_fcmadd_pch#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h a, __mmask8 k, __m256h b, __m256h c

Param ETypes:

FP16 a, MASK k, FP16 b, FP16 c

__m256h _mm256_mask_fcmadd_pch(__m256h a, __mmask8 k,
                               __m256h b, __m256h c)

Intel Description

Multiply packed complex numbers in “a” by the complex conjugates of packed complex numbers in “b”, accumulate to the corresponding complex numbers in “c”, and store the results in “dst” using writemask “k” (elements are copied from “a” when the corresponding mask bit is not set). 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]”.

Intel Implementation Psudeo-Code

FOR i := 0 to 7
        IF k[i]
                dst.fp16[2*i+0] := (a.fp16[2*i+0] * b.fp16[2*i+0]) + (a.fp16[2*i+1] * b.fp16[2*i+1]) + c.fp16[2*i+0]
                dst.fp16[2*i+1] := (a.fp16[2*i+1] * b.fp16[2*i+0]) - (a.fp16[2*i+0] * b.fp16[2*i+1]) + c.fp16[2*i+1]
        ELSE
                dst.fp16[2*i+0] := a.fp16[2*i+0]
                dst.fp16[2*i+1] := a.fp16[2*i+1]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask3_fcmadd_pch#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h a, __m256h b, __m256h c, __mmask8 k

Param ETypes:

FP16 a, FP16 b, FP16 c, MASK k

__m256h _mm256_mask3_fcmadd_pch(__m256h a, __m256h b,
                                __m256h c, __mmask8 k)

Intel Description

Multiply packed complex numbers in “a” by the complex conjugates of packed complex numbers in “b”, accumulate to the corresponding complex numbers in “c”, and store the results in “dst” using writemask “k” (elements are copied from “c” when the corresponding mask bit is not set). 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]”.

Intel Implementation Psudeo-Code

FOR i := 0 to 7
        IF k[i]
                dst.fp16[2*i+0] := (a.fp16[2*i+0] * b.fp16[2*i+0]) + (a.fp16[2*i+1] * b.fp16[2*i+1]) + c.fp16[2*i+0]
                dst.fp16[2*i+1] := (a.fp16[2*i+1] * b.fp16[2*i+0]) - (a.fp16[2*i+0] * b.fp16[2*i+1]) + c.fp16[2*i+1]
        ELSE
                dst.fp16[2*i+0] := c.fp16[2*i+0]
                dst.fp16[2*i+1] := c.fp16[2*i+1]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_fcmadd_pch#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__mmask8 k, __m256h a, __m256h b, __m256h c

Param ETypes:

MASK k, FP16 a, FP16 b, FP16 c

__m256h _mm256_maskz_fcmadd_pch(__mmask8 k, __m256h a,
                                __m256h b, __m256h c)

Intel Description

Multiply packed complex numbers in “a” by the complex conjugates of packed complex numbers in “b”, accumulate to the corresponding complex numbers in “c”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set). 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]”.

Intel Implementation Psudeo-Code

FOR i := 0 to 7
        IF k[i]
                dst.fp16[2*i+0] := (a.fp16[2*i+0] * b.fp16[2*i+0]) + (a.fp16[2*i+1] * b.fp16[2*i+1]) + c.fp16[2*i+0]
                dst.fp16[2*i+1] := (a.fp16[2*i+1] * b.fp16[2*i+0]) - (a.fp16[2*i+0] * b.fp16[2*i+1]) + c.fp16[2*i+1]
        ELSE
                dst.fp16[2*i+0] := 0
                dst.fp16[2*i+1] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_reduce_add_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

_Float16

Param Types:

__m256h a

Param ETypes:

FP16 a

_Float16 _mm256_reduce_add_ph(__m256h a);

Intel Description

Reduce the packed half-precision (16-bit) floating-point elements in “a” by addition. Returns the sum of all elements in “a”.

Intel Implementation Psudeo-Code

tmp := a
FOR i := 0 to 7
        tmp.fp16[i] := tmp.fp16[i] + tmp.fp16[i+8]
ENDFOR
FOR i := 0 to 3
        tmp.fp16[i] := tmp.fp16[i] + tmp.fp16[i+4]
ENDFOR
FOR i := 0 to 1
        tmp.fp16[i] := tmp.fp16[i] + tmp.fp16[i+2]
ENDFOR
dst.fp16[0] := tmp.fp16[0] + tmp.fp16[1]

_mm256_reduce_mul_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

_Float16

Param Types:

__m256h a

Param ETypes:

FP16 a

_Float16 _mm256_reduce_mul_ph(__m256h a);

Intel Description

Reduce the packed half-precision (316-bit) floating-point elements in “a” by multiplication. Returns the product of all elements in “a”.

Intel Implementation Psudeo-Code

tmp := a
FOR i := 0 to 7
        tmp.fp16[i] := tmp.fp16[i] * tmp.fp16[i+8]
ENDFOR
FOR i := 0 to 3
        tmp.fp16[i] := tmp.fp16[i] * tmp.fp16[i+4]
ENDFOR
FOR i := 0 to 1
        tmp.fp16[i] := tmp.fp16[i] * tmp.fp16[i+2]
ENDFOR
dst.fp16[0] := tmp.fp16[0] * tmp.fp16[1]

_mm256_reduce_max_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

_Float16

Param Types:

__m256h a

Param ETypes:

FP16 a

_Float16 _mm256_reduce_max_ph(__m256h a);

Intel Description

Reduce the packed half-precision (16-bit) floating-point elements in “a” by maximum. Returns the maximum of all elements in “a”.

Intel Implementation Psudeo-Code

tmp := a
FOR i := 0 to 7
        tmp.fp16[i] := (tmp.fp16[i] > tmp.fp16[i+8] ? tmp.fp16[i] : tmp.fp16[i+8])
ENDFOR
FOR i := 0 to 3
        tmp.fp16[i] := (tmp.fp16[i] > tmp.fp16[i+4] ? tmp.fp16[i] : tmp.fp16[i+4])
ENDFOR
FOR i := 0 to 1
        tmp.fp16[i] := (tmp.fp16[i] > tmp.fp16[i+2] ? tmp.fp16[i] : tmp.fp16[i+2])
ENDFOR
dst.fp16[0] := (tmp.fp16[0] > tmp.fp16[1] ? tmp.fp16[0] : tmp.fp16[1])

_mm256_reduce_min_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

_Float16

Param Types:

__m256h a

Param ETypes:

FP16 a

_Float16 _mm256_reduce_min_ph(__m256h a);

Intel Description

Reduce the packed half-precision (16-bit) floating-point elements in “a” by minimum. Returns the minimum of all elements in “a”.

Intel Implementation Psudeo-Code

tmp := a
FOR i := 0 to 7
        tmp.fp16[i] := (tmp.fp16[i] < tmp.fp16[i+8] ? tmp.fp16[i] : tmp.fp16[i+8])
ENDFOR
FOR i := 0 to 3
        tmp.fp16[i] := (tmp.fp16[i] < tmp.fp16[i+4] ? tmp.fp16[i] : tmp.fp16[i+4])
ENDFOR
FOR i := 0 to 1
        tmp.fp16[i] := (tmp.fp16[i] < tmp.fp16[i+2] ? tmp.fp16[i] : tmp.fp16[i+2])
ENDFOR
dst.fp16[0] := (tmp.fp16[0] < tmp.fp16[1] ? tmp.fp16[0] : tmp.fp16[1])

_mm256_abs_ph#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h v2

Param ETypes:

FP16 v2

__m256h _mm256_abs_ph(__m256h v2);

Intel Description

Finds the absolute value of each packed half-precision (16-bit) floating-point element in “v2”, storing the results in “dst”.

Intel Implementation Psudeo-Code

FOR j := 0 to 15
        dst.fp16[j] := ABS(v2.fp16[j])
ENDFOR
dst[MAX:256] := 0

_mm256_conj_pch#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h a

Param ETypes:

FP16 a

__m256h _mm256_conj_pch(__m256h a);

Intel Description

Compute the complex conjugates of complex numbers in “a”, and store the results in “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]”.

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        dst[i+31:i] := a[i+31:i] XOR FP32(-0.0)
ENDFOR
dst[MAX:256] := 0

_mm256_mask_conj_pch#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__m256h src, __mmask8 k, __m256h a

Param ETypes:

FP16 src, MASK k, FP16 a

__m256h _mm256_mask_conj_pch(__m256h src, __mmask8 k,
                             __m256h a)

Intel Description

Compute the complex conjugates of complex numbers in “a”, and store the results in “dst” using writemask “k” (elements are copied from “a” when the corresponding mask bit is not set). 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]”.

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := a[i+31:i] XOR FP32(-0.0)
        ELSE
                dst[i+31:i] := src[i+31:i]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_conj_pch#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256h

Param Types:

__mmask8 k, __m256h a

Param ETypes:

MASK k, FP16 a

__m256h _mm256_maskz_conj_pch(__mmask8 k, __m256h a);

Intel Description

Compute the complex conjugates of complex numbers in “a”, and store the results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set). 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]”.

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        i := j*32
        IF k[j]
                dst[i+31:i] := a[i+31:i] XOR FP32(-0.0)
        ELSE
                dst[i+31:i] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_dpwssds_epi32#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask8 k, __m256i src, __m256i a, __m256i b

Param ETypes:

MASK k, SI32 src, SI16 a, SI16 b

__m256i _mm256_maskz_dpwssds_epi32(__mmask8 k, __m256i src,
                                   __m256i a, __m256i b)

Intel Description

Multiply groups of 2 adjacent pairs of signed 16-bit integers in “a” with corresponding 16-bit integers in “b”, producing 2 intermediate signed 32-bit results. Sum these 2 results with the corresponding 32-bit integer in “src” using signed saturation, and store the packed 32-bit results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        IF k[j]
                tmp1.dword := SignExtend32(a.word[2*j]) * SignExtend32(b.word[2*j])
                tmp2.dword := SignExtend32(a.word[2*j+1]) * SignExtend32(b.word[2*j+1])
                dst.dword[j] := Saturate32(src.dword[j] + tmp1 + tmp2)
        ELSE
                dst.dword[j] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_dpwssds_epi32#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask8 k, __m256i a, __m256i b

Param ETypes:

SI32 src, MASK k, SI16 a, SI16 b

__m256i _mm256_mask_dpwssds_epi32(__m256i src, __mmask8 k,
                                  __m256i a, __m256i b)

Intel Description

Multiply groups of 2 adjacent pairs of signed 16-bit integers in “a” with corresponding 16-bit integers in “b”, producing 2 intermediate signed 32-bit results. Sum these 2 results with the corresponding 32-bit integer in “src” using signed saturation, and store the packed 32-bit results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        IF k[j]
                tmp1.dword := SignExtend32(a.word[2*j]) * SignExtend32(b.word[2*j])
                tmp2.dword := SignExtend32(a.word[2*j+1]) * SignExtend32(b.word[2*j+1])
                dst.dword[j] := Saturate32(src.dword[j] + tmp1 + tmp2)
        ELSE
                dst.dword[j] := src.dword[j]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_dpwssds_epi32#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __m256i a, __m256i b

Param ETypes:

SI32 src, SI16 a, SI16 b

__m256i _mm256_dpwssds_epi32(__m256i src, __m256i a,
                             __m256i b)

Intel Description

Multiply groups of 2 adjacent pairs of signed 16-bit integers in “a” with corresponding 16-bit integers in “b”, producing 2 intermediate signed 32-bit results. Sum these 2 results with the corresponding 32-bit integer in “src” using signed saturation, and store the packed 32-bit results in “dst”.

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        tmp1.dword := SignExtend32(a.word[2*j]) * SignExtend32(b.word[2*j])
        tmp2.dword := SignExtend32(a.word[2*j+1]) * SignExtend32(b.word[2*j+1])
        dst.dword[j] := Saturate32(src.dword[j] + tmp1 + tmp2)
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_dpwssd_epi32#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask8 k, __m256i src, __m256i a, __m256i b

Param ETypes:

MASK k, SI32 src, SI16 a, SI16 b

__m256i _mm256_maskz_dpwssd_epi32(__mmask8 k, __m256i src,
                                  __m256i a, __m256i b)

Intel Description

Multiply groups of 2 adjacent pairs of signed 16-bit integers in “a” with corresponding 16-bit integers in “b”, producing 2 intermediate signed 32-bit results. Sum these 2 results with the corresponding 32-bit integer in “src”, and store the packed 32-bit results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        IF k[j]
                tmp1.dword := SignExtend32(a.word[2*j]) * SignExtend32(b.word[2*j])
                tmp2.dword := SignExtend32(a.word[2*j+1]) * SignExtend32(b.word[2*j+1])
                dst.dword[j] := src.dword[j] + tmp1 + tmp2
        ELSE
                dst.dword[j] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_dpwssd_epi32#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask8 k, __m256i a, __m256i b

Param ETypes:

SI32 src, MASK k, SI16 a, SI16 b

__m256i _mm256_mask_dpwssd_epi32(__m256i src, __mmask8 k,
                                 __m256i a, __m256i b)

Intel Description

Multiply groups of 2 adjacent pairs of signed 16-bit integers in “a” with corresponding 16-bit integers in “b”, producing 2 intermediate signed 32-bit results. Sum these 2 results with the corresponding 32-bit integer in “src”, and store the packed 32-bit results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        IF k[j]
                tmp1.dword := SignExtend32(a.word[2*j]) * SignExtend32(b.word[2*j])
                tmp2.dword := SignExtend32(a.word[2*j+1]) * SignExtend32(b.word[2*j+1])
                dst.dword[j] := src.dword[j] + tmp1 + tmp2
        ELSE
                dst.dword[j] := src.dword[j]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_dpwssd_epi32#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __m256i a, __m256i b

Param ETypes:

SI32 src, SI16 a, SI16 b

__m256i _mm256_dpwssd_epi32(__m256i src, __m256i a,
                            __m256i b)

Intel Description

Multiply groups of 2 adjacent pairs of signed 16-bit integers in “a” with corresponding 16-bit integers in “b”, producing 2 intermediate signed 32-bit results. Sum these 2 results with the corresponding 32-bit integer in “src”, and store the packed 32-bit results in “dst”.

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        tmp1.dword := SignExtend32(a.word[2*j]) * SignExtend32(b.word[2*j])
        tmp2.dword := SignExtend32(a.word[2*j+1]) * SignExtend32(b.word[2*j+1])
        dst.dword[j] := src.dword[j] + tmp1 + tmp2
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_dpbusds_epi32#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask8 k, __m256i src, __m256i a, __m256i b

Param ETypes:

MASK k, SI32 src, UI8 a, SI8 b

__m256i _mm256_maskz_dpbusds_epi32(__mmask8 k, __m256i src,
                                   __m256i a, __m256i b)

Intel Description

Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in “a” with corresponding signed 8-bit integers in “b”, producing 4 intermediate signed 16-bit results. Sum these 4 results with the corresponding 32-bit integer in “src” using signed saturation, and store the packed 32-bit results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        IF k[j]
                tmp1.word := Signed(ZeroExtend16(a.byte[4*j]) * SignExtend16(b.byte[4*j]))
                tmp2.word := Signed(ZeroExtend16(a.byte[4*j+1]) * SignExtend16(b.byte[4*j+1]))
                tmp3.word := Signed(ZeroExtend16(a.byte[4*j+2]) * SignExtend16(b.byte[4*j+2]))
                tmp4.word := Signed(ZeroExtend16(a.byte[4*j+3]) * SignExtend16(b.byte[4*j+3]))
                dst.dword[j] := Saturate32(src.dword[j] + tmp1 + tmp2 + tmp3 + tmp4)
        ELSE
                dst.dword[j] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_dpbusds_epi32#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask8 k, __m256i a, __m256i b

Param ETypes:

SI32 src, MASK k, UI8 a, SI8 b

__m256i _mm256_mask_dpbusds_epi32(__m256i src, __mmask8 k,
                                  __m256i a, __m256i b)

Intel Description

Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in “a” with corresponding signed 8-bit integers in “b”, producing 4 intermediate signed 16-bit results. Sum these 4 results with the corresponding 32-bit integer in “src” using signed saturation, and store the packed 32-bit results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        IF k[j]
                tmp1.word := Signed(ZeroExtend16(a.byte[4*j]) * SignExtend16(b.byte[4*j]))
                tmp2.word := Signed(ZeroExtend16(a.byte[4*j+1]) * SignExtend16(b.byte[4*j+1]))
                tmp3.word := Signed(ZeroExtend16(a.byte[4*j+2]) * SignExtend16(b.byte[4*j+2]))
                tmp4.word := Signed(ZeroExtend16(a.byte[4*j+3]) * SignExtend16(b.byte[4*j+3]))
                dst.dword[j] := Saturate32(src.dword[j] + tmp1 + tmp2 + tmp3 + tmp4)
        ELSE
                dst.dword[j] := src.dword[j]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_dpbusds_epi32#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __m256i a, __m256i b

Param ETypes:

SI32 src, UI8 a, SI8 b

__m256i _mm256_dpbusds_epi32(__m256i src, __m256i a,
                             __m256i b)

Intel Description

Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in “a” with corresponding signed 8-bit integers in “b”, producing 4 intermediate signed 16-bit results. Sum these 4 results with the corresponding 32-bit integer in “src” using signed saturation, and store the packed 32-bit results in “dst”.

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        tmp1.word := Signed(ZeroExtend16(a.byte[4*j]) * SignExtend16(b.byte[4*j]))
        tmp2.word := Signed(ZeroExtend16(a.byte[4*j+1]) * SignExtend16(b.byte[4*j+1]))
        tmp3.word := Signed(ZeroExtend16(a.byte[4*j+2]) * SignExtend16(b.byte[4*j+2]))
        tmp4.word := Signed(ZeroExtend16(a.byte[4*j+3]) * SignExtend16(b.byte[4*j+3]))
        dst.dword[j] := Saturate32(src.dword[j] + tmp1 + tmp2 + tmp3 + tmp4)
ENDFOR
dst[MAX:256] := 0

_mm256_maskz_dpbusd_epi32#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__mmask8 k, __m256i src, __m256i a, __m256i b

Param ETypes:

MASK k, SI32 src, UI8 a, SI8 b

__m256i _mm256_maskz_dpbusd_epi32(__mmask8 k, __m256i src,
                                  __m256i a, __m256i b)

Intel Description

Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in “a” with corresponding signed 8-bit integers in “b”, producing 4 intermediate signed 16-bit results. Sum these 4 results with the corresponding 32-bit integer in “src”, and store the packed 32-bit results in “dst” using zeromask “k” (elements are zeroed out when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        IF k[j]
                tmp1.word := Signed(ZeroExtend16(a.byte[4*j]) * SignExtend16(b.byte[4*j]))
                tmp2.word := Signed(ZeroExtend16(a.byte[4*j+1]) * SignExtend16(b.byte[4*j+1]))
                tmp3.word := Signed(ZeroExtend16(a.byte[4*j+2]) * SignExtend16(b.byte[4*j+2]))
                tmp4.word := Signed(ZeroExtend16(a.byte[4*j+3]) * SignExtend16(b.byte[4*j+3]))
                dst.dword[j] := src.dword[j] + tmp1 + tmp2 + tmp3 + tmp4
        ELSE
                dst.dword[j] := 0
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_mask_dpbusd_epi32#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __mmask8 k, __m256i a, __m256i b

Param ETypes:

SI32 src, MASK k, UI8 a, SI8 b

__m256i _mm256_mask_dpbusd_epi32(__m256i src, __mmask8 k,
                                 __m256i a, __m256i b)

Intel Description

Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in “a” with corresponding signed 8-bit integers in “b”, producing 4 intermediate signed 16-bit results. Sum these 4 results with the corresponding 32-bit integer in “src”, and store the packed 32-bit results in “dst” using writemask “k” (elements are copied from “src” when the corresponding mask bit is not set).

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        IF k[j]
                tmp1.word := Signed(ZeroExtend16(a.byte[4*j]) * SignExtend16(b.byte[4*j]))
                tmp2.word := Signed(ZeroExtend16(a.byte[4*j+1]) * SignExtend16(b.byte[4*j+1]))
                tmp3.word := Signed(ZeroExtend16(a.byte[4*j+2]) * SignExtend16(b.byte[4*j+2]))
                tmp4.word := Signed(ZeroExtend16(a.byte[4*j+3]) * SignExtend16(b.byte[4*j+3]))
                dst.dword[j] := src.dword[j] + tmp1 + tmp2 + tmp3 + tmp4
        ELSE
                dst.dword[j] := src.dword[j]
        FI
ENDFOR
dst[MAX:256] := 0

_mm256_dpbusd_epi32#

Tech:

AVX-512

Category:

Arithmetic

Header:

immintrin.h

Searchable:

AVX-512-Arithmetic-YMM

Register:

YMM 256 bit

Return Type:

__m256i

Param Types:

__m256i src, __m256i a, __m256i b

Param ETypes:

SI32 src, UI8 a, SI8 b

__m256i _mm256_dpbusd_epi32(__m256i src, __m256i a,
                            __m256i b)

Intel Description

Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in “a” with corresponding signed 8-bit integers in “b”, producing 4 intermediate signed 16-bit results. Sum these 4 results with the corresponding 32-bit integer in “src”, and store the packed 32-bit results in “dst”.

Intel Implementation Psudeo-Code

FOR j := 0 to 7
        tmp1.word := Signed(ZeroExtend16(a.byte[4*j]) * SignExtend16(b.byte[4*j]))
        tmp2.word := Signed(ZeroExtend16(a.byte[4*j+1]) * SignExtend16(b.byte[4*j+1]))
        tmp3.word := Signed(ZeroExtend16(a.byte[4*j+2]) * SignExtend16(b.byte[4*j+2]))
        tmp4.word := Signed(ZeroExtend16(a.byte[4*j+3]) * SignExtend16(b.byte[4*j+3]))
        dst.dword[j] := src.dword[j] + tmp1 + tmp2 + tmp3 + tmp4
ENDFOR
dst[MAX:256] := 0