# Set Intrinsics

Intel® Streaming SIMD Extensions 2 (Intel® SSE2) intrinsics for floating-point set operations are listed in this topic. The prototypes for Intel® SSE2 intrinsics are in the emmintrin.h header file.

To use these intrinsics, include the immintrin.h file as follows:

    #include <immintrin.h>

The load and set operations are similar in that both initialize `__m128d` data. However, the set operations take a double argument and are intended for initialization with constants, while the load operations take a double pointer argument and are intended to mimic the instructions for loading data from memory.

Some of the these intrinsics are composite intrinsics because they require more than one instruction to implement them.

The results of each intrinsic operation are placed in a register. The information about what is placed in each register appears in the tables below, in the detailed explanation for each intrinsic. For each intrinsic, the resulting register is represented by R0 and R1, where R0 and R1 each represent one piece of the result register.

Intrinsic Name | Operation | Corresponding Intel® SSE2 Instruction
--- | --- | ---
_mm_set_sd | Sets lower DP FP value to w and upper to zero | Composite
_mm_set1_pd | Sets two DP FP values to w | Composite
_mm_set_pd | Sets lower DP FP to x and upper to w | Composite
_mm_setr_pd | Sets lower DP FP to w and upper to x | Composite
_mm_setzero_pd | Sets two DP FP values to zero | XORPD
_mm_move_sd | Sets lower DP FP value to the lower DP FP value of b | MOVSD

## _mm_set_sd

__m128d _mm_set_sd(double w);

Sets the lower DP FP value to w and sets the upper DP FP value to zero.

R0 | R1
--- | ---
w | 0.0

## _mm_set1_pd

__m128d _mm_set1_pd(double w);

Sets the two DP FP values to w.

R0 | R1
--- | ---
w | w

## _mm_set_pd

__m128d _mm_set_pd(double w, double x);

Sets the lower DP FP value to x and sets the upper DP FP value to w.

R0 | R1
--- | ---
x | w

## _mm_setr_pd

__m128d _mm_setr_pd(double w, double x);

Sets the lower DP FP value to w and sets the upper DP FP value to x. r0 := w r1 := x

R0 | R1
--- | ---
w | x

## _mm_setzero_pd

__m128d _mm_setzero_pd(void);

Sets the two DP FP values to zero.

R0 | R1
--- | ---
0.0 | 0.0

## _mm_move_sd

__m128d _mm_move_sd( __m128d a, __m128d b);

Sets the lower DP FP value to the lower DP FP value of b. The upper DP FP value is passed through from a.

R0 | R1
--- | ---
b0 | a1

Parent topic: Floating-point Intrinsics