# Intrinsics for Set Operations

The prototypes for Intel® Advanced Vector Extensions 512 (Intel® AVX-512) intrinsics are located in the zmmintrin.h header file.
To use these intrinsics, include the immintrin.h file as follows:

    #include <immintrin.h>

## Setting Vectors of Undefined Value

Intrinsic Name | Operation | Corresponding Intel® AVX-512 Instruction
--- | --- | ---
`_mm512_undefined` | Returns vector of type `__m512i` with undefined elements. | None.
`_mm512_undefined_epi32` | Returns vector of type `__m512i` with undefined elements. | None.
`_mm512_undefined_pd` | Returns vector of type `__m512d` with undefined elements. | None.
`_mm512_undefined_ps` | Returns vector of type `__m512` with undefined elements. | None.
`_mm512_set1_pd` | Broadcast float64 element to all destination elements. | None.
`_mm512_set1_ps` | Broadcast float32 element to all destination elements. | None.
`_mm512_set4_pd` | Broadcast float64 element to destination elements with repeated four element sequence. | None.
`_mm512_set4_ps` | Broadcast float32 element to destination elements with repeated four element sequence. | None.
`_mm512_set_pd` | Broadcast packed float64 elements with supplied values. | None.
`_mm512_set_ps` | Broadcast packed float32 elements with supplied values. | None.
`_mm512_setr4_pd` | Broadcast packed float64 elements with the repeated four element sequence in reverse order. | None.
`_mm512_setr4_ps` | Broadcast packed float32 elements with the repeated four element sequence in reverse order. | None.
`_mm512_setr_pd` | Broadcast packed float64 elements with supplied values in reverse order. | None.
`_mm512_setr_ps` | Broadcast packed float32 elements with supplied values in reverse order. | None.
`_mm512_setzero_pd` | Returns vector of type `__m512d` with all elements set to zero. | `VXORPD`
`_mm512_setzero_ps` | Returns vector of type `__m512` with all elements set to zero. | `VXORPS`
`_mm512_undefined_pd` | Returns vector of type `__m512d` with undefined elements. | None.
`_mm512_undefined_ps` | Returns vector of type `__m512` with undefined elements. | None.
`_mm512_set1_epi8` | Broadcast 8-bit integer a to all destination elements. | `VPBROADCASTB`
`_mm512_set1_epi32`, `_mm512_mask_set1_epi32`, `_mm512_maskz_set1_epi32` | Broadcast a single int32 element to all destination elements. | `VPBROADCASTD`
`_mm512_set1_epi64`, `_mm512_mask_set1_epi64`, `_mm512_maskz_set1_epi64` | Broadcast a single int64 element to all destination elements. | `VPBROADCASTQ`
`_mm512_set1_epi16` | Broadcast a single int16 element to all destination elements | `VPBROADCASTW`
`_mm512_set4_epi32` | Broadcast packed int32 elements with repeated four element sequence. | None.
`_mm512_set4_epi64` | Broadcast packed int64 elements in with repeated four element sequence. | None.
`_mm512_set_epi32` | Broadcast packed int32 elements with supplied values. | None.
`_mm512_set_epi64` | Broadcast packed int64 elements with supplied values. | None.
`_mm512_setr4_epi32` | Broadcast packed int32 elements with repeated four element sequence in reverse order. | None.
`_mm512_setr4_epi64` | Broadcast packed int64 elements with repeated four element sequence in reverse order. | None.
`_mm512_setr_epi32` | Broadcast packed int32 elements with supplied values in reverse order. | None.
`_mm512_setr_epi64` | Broadcast packed int64 elements with supplied values in reverse order. | None.
`_mm512_setzero_epi32` `_mm512_setzero_si512` | Returns vector of type `__m512i` with all elements set to zero. | `VPXOR`

variable | definition
--- | ---
k | writemask used as a selector
a | first source vector element
e | elements for set operation
a, b, c, d | elements for set operation

_mm512_set1_pd

    extern __m512d __cdecl _mm512_set1_pd(double a);

Broadcasts float64 value a to all destination elements.

_mm512_set1_ps

    extern __m512 __cdecl _mm512_set1_ps(float a);

Broadcasts float32 value a to all destination elements.

_mm512_set4_pd

    extern __m512d __cdecl _mm512_set4_pd(double d, double c, double b, double a);

Sets packed float64 elements in destination with the repeated four element sequence (dcba dcba).

_mm512_set4_ps

    extern __m512 __cdecl _mm512_set4_ps(float d, float c, float b, float a);

Sets packed float32 elements in destination with the repeated four element sequence. (dcba dcba dcba dcba).

_mm512_set_pd

    extern __m512 __cdecl _mm512_set_pd(float e7, float e6, float e5, float e4, float e3, float e2, float e1, float e0);

Sets packed float64 elements in destination with supplied values.

_mm512_set_ps

    extern __m512 __cdecl _mm512_set_ps(float e15, float e14, float e13, float e12, float e11, float e10, float e9, float e8, float e7, float e6, float e5, float e4, float e3, float e2, float e1, float e0);

Sets packed float32 elements in destination with supplied values.

_mm512_setr4_pd

    extern __m512d __cdecl _mm512_setr4_pd(double a, double b, double c, double d);

Broadcast packed float64 elements in destination with the repeated four element sequence in reverse order.

_mm512_setr4_ps

    extern __m512 __cdecl _mm512_setr4_ps(float a, float b, float c, float d);

Sets packed float32 elements in destination with the repeated four element sequence in reverse order.

_mm512_setr_pd

    extern __m512d __cdecl _mm512_setr_pd(double e0, double e1, double e2, double e3, double e4, double e5, double e6, double e7);

Sets packed float64 elements in destination with supplied values in reverse order.

_mm512_setr_ps

    extern __m512 __cdecl _mm512_setr_ps(float e0, float e1, float e2, float e3, float e4, float e5, float e6, float e7, float e8, float e9, float e10, float e11, float e12, float e13, float e14, float e15);

Sets packed float32 elements in destination with supplied values in reverse order.

_mm512_setzero_pd

    extern __m512 __cdecl _mm512_setzero_pd(void);

Returns vector of type `__m512d` with all elements set to zero.

_mm512_setzero_ps

    extern __m512 __cdecl _mm512_setzero_ps(void);

Returns vector of type `__m512` with all elements set to zero.

_mm512_undefined_pd

    extern __m512 __cdecl _mm512_undefined_pd(void)

Returns vector of type `__m512d` with undefined elements.

_mm512_undefined_ps

    extern __m512 __cdecl _mm512_undefined_ps(void)

Returns vector of type `__m512` with undefined elements.

_mm512_set1_epi16

    extern __m512i __cdecl _mm512_set1_epi16(short a);

Broadcast int16 a to all destination elements.

_mm512_set1_epi8

    extern __m512i __cdecl _mm512_set1_epi8(char a);

Broadcasts int8 a to all destination elements.

_mm512_set1_epi32

    extern __m512i __cdecl _mm512_set1_epi32(int a);

Broadcasts int32 a to all destination elements.

_mm512_mask_set1_epi32

    extern __m512i __cdecl _mm512_mask_set1_epi32(__m512i src, __mmask16 k, int a);

Broadcasts int32 a to all destination elements using writemask k (elements are copied from src when the corresponding mask bit is not set).

_mm512_maskz_set1_epi32

    extern __m512i __cdecl _mm512_maskz_set1_epi32(__mmask16 k, int a);

Broadcasts int32 a to all destination elements using zeromask k (elements are zeroed out when the corresponding mask bit is not set).

_mm512_set1_epi64

    extern __m512i __cdecl _mm512_set1_epi64(__int64 a);

Broadcasts int64 a to all destination elements.

_mm512_mask_set1_epi64

    extern __m512i __cdecl _mm512_mask_set1_epi64(__m512i src, __mmask8 k, __int64 a);

Broadcasts int64 a to all destination elements using writemask k (elements are copied from src when the corresponding mask bit is not set).

_mm512_maskz_set1_epi64

    extern __m512i __cdecl _mm512_maskz_set1_epi64(__mmask8 k, __int64 a);

Broadcasts int64 a to all destination elements using zeromask k (elements are zeroed out when the corresponding mask bit is not set).

_mm512_set4_epi32

    extern __m512i __cdecl _mm512_set4_epi32(int d, int c, int b, int a);

Sets packed int32 in destination with the repeated four element sequence.

_mm512_set4_epi64

    extern __m512i __cdecl _mm512_set4_epi64(__int64 d, __int64 c, __int64 b, __int64 a);

Sets packed int64 in destination with the repeated four element sequence.

_mm512_set_epi32

    extern __m512i __cdecl _mm512_set_epi32(int e15, int e14, int e13, int e12, int e11, int e10, int e9, int e8, int e7, int e6, int e5, int e4, int e3, int e2, int e1, int e0);

Sets packed int32 in destination with supplied values.

_mm512_set_epi64

    extern __m512i __cdecl _mm512_set_epi64(__int64 e7, __int64 e6, __int64 e5, __int64 e4, __int64 e3, __int64 e2, __int64 e1, __int64 e0);

Sets packed int64 in destination with supplied values.

_mm512_setr4_epi32

    extern __m512i __cdecl _mm512_setr4_epi32(int a, int b, int c, int d);

Sets packed int32 in destination with the repeated four element sequence in reverse order.

_mm512_setr4_epi64

    extern __m512i __cdecl _mm512_setr4_epi64(__int64 a, __int64 b, __int64 c, __int64 d);

Sets packed int64 in destination with the repeated four element sequence in reverse order.

_mm512_setr_epi32

    extern __m512i __cdecl _mm512_setr4_epi32(int a, int b, int c, int d);

Sets packed int32 in destination with supplied values in reverse order.

_mm512_setr_epi64

    extern __m512i __cdecl _mm512_setr_epi64(__int64 e0, __int64 e1, __int64 e2, __int64 e3, __int64 e4, __int64 e5, __int64 e6, __int64 e7);

Sets packed int64 in destination with supplied values in reverse order.

_mm512_setzero_epi32

    extern __m512 __cdecl _mm512_setzero(void);

Returns vector of type `__m512i` with all elements set to zero.

_mm512_setzero_si512

    extern __m512 __cdecl _mm512_setzero(void);

Returns vector of type `__m512i` with all elements set to zero.

_mm512_undefined_epi32

    extern __m512 __cdecl _mm512_undefined_epi32(void);

Returns vector of type `__m512i` with undefined elements.

_mm512_setzero

    extern __m512 __cdecl _mm512_setzero(void);

Returns vector of type `__m512` with all elements set to zero.

_mm512_undefined

    extern __m512 __cdecl _mm512_undefined(void);

Returns vector of type `__m512` with undefined elements.

Parent topic: Intrinsics for Intel® Advanced Vector Extensions 512 (Intel® AVX-512) Instructions