Intel® C++ Compiler Classic Developer Guide and Reference

ID 767249
Date 7/13/2023
Public
Document Table of Contents

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