clang  6.0.0svn
Macros | Functions
ammintrin.h File Reference
#include <pmmintrin.h>
Include dependency graph for ammintrin.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define __DEFAULT_FN_ATTRS   __attribute__((__always_inline__, __nodebug__, __target__("sse4a")))
 
#define _mm_extracti_si64(x, len, idx)
 Extracts the specified bits from the lower 64 bits of the 128-bit integer vector operand at the index idx and of the length len. More...
 
#define _mm_inserti_si64(x, y, len, idx)
 Inserts bits of a specified length from the source integer vector y into the lower 64 bits of the destination integer vector x at the index idx and of the length len. More...
 

Functions

static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_extract_si64 (__m128i __x, __m128i __y)
 Extracts the specified bits from the lower 64 bits of the 128-bit integer vector operand at the index and of the length specified by __y. More...
 
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_insert_si64 (__m128i __x, __m128i __y)
 Inserts bits of a specified length from the source integer vector __y into the lower 64 bits of the destination integer vector __x at the index and of the length specified by __y. More...
 
static __inline__ void __DEFAULT_FN_ATTRS _mm_stream_sd (double *__p, __m128d __a)
 Stores a 64-bit double-precision value in a 64-bit memory location. More...
 
static __inline__ void __DEFAULT_FN_ATTRS _mm_stream_ss (float *__p, __m128 __a)
 Stores a 32-bit single-precision floating-point value in a 32-bit memory location. More...
 

Macro Definition Documentation

◆ __DEFAULT_FN_ATTRS

#define __DEFAULT_FN_ATTRS   __attribute__((__always_inline__, __nodebug__, __target__("sse4a")))

Definition at line 30 of file ammintrin.h.

Referenced by _mm_insert_si64(), and _mm_stream_sd().

◆ _mm_extracti_si64

#define _mm_extracti_si64 (   x,
  len,
  idx 
)
Value:
((__m128i)__builtin_ia32_extrqi((__v2di)(__m128i)(x), \
(char)(len), (char)(idx)))

Extracts the specified bits from the lower 64 bits of the 128-bit integer vector operand at the index idx and of the length len.

__m128i _mm_extracti_si64(__m128i x, const int len, const int idx);

This intrinsic corresponds to the EXTRQ instruction.

Parameters
xThe value from which bits are extracted.
lenBits [5:0] specify the length; the other bits are ignored. If bits [5:0] are zero, the length is interpreted as 64.
idxBits [5:0] specify the index of the least significant bit; the other bits are ignored. If the sum of the index and length is greater than 64, the result is undefined. If the length and index are both zero, bits [63:0] of parameter x are extracted. If the length is zero but the index is non-zero, the result is undefined.
Returns
A 128-bit integer vector whose lower 64 bits contain the bits extracted from the source operand.

Definition at line 56 of file ammintrin.h.

◆ _mm_inserti_si64

#define _mm_inserti_si64 (   x,
  y,
  len,
  idx 
)
Value:
((__m128i)__builtin_ia32_insertqi((__v2di)(__m128i)(x), \
(__v2di)(__m128i)(y), \
(char)(len), (char)(idx)))

Inserts bits of a specified length from the source integer vector y into the lower 64 bits of the destination integer vector x at the index idx and of the length len.

__m128i _mm_inserti_si64(__m128i x, __m128i y, const int len,
const int idx);

This intrinsic corresponds to the INSERTQ instruction.

Parameters
xThe destination operand where bits will be inserted. The inserted bits are defined by the length len and by the index idx specifying the least significant bit.
yThe source operand containing the bits to be extracted. The extracted bits are the least significant bits of operand y of length len.
lenBits [5:0] specify the length; the other bits are ignored. If bits [5:0] are zero, the length is interpreted as 64.
idxBits [5:0] specify the index of the least significant bit; the other bits are ignored. If the sum of the index and length is greater than 64, the result is undefined. If the length and index are both zero, bits [63:0] of parameter y are inserted into parameter x. If the length is zero but the index is non-zero, the result is undefined.
Returns
A 128-bit integer vector containing the original lower 64-bits of destination operand x with the specified bitfields replaced by the lower bits of source operand y. The upper 64 bits of the return value are undefined.

Definition at line 118 of file ammintrin.h.

Function Documentation

◆ _mm_extract_si64()

static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_extract_si64 ( __m128i  __x,
__m128i  __y 
)
static

Extracts the specified bits from the lower 64 bits of the 128-bit integer vector operand at the index and of the length specified by __y.

This intrinsic corresponds to the EXTRQ instruction.

Parameters
__xThe value from which bits are extracted.
__ySpecifies the index of the least significant bit at [13:8] and the length at [5:0]; all other bits are ignored. If bits [5:0] are zero, the length is interpreted as 64. If the sum of the index and length is greater than 64, the result is undefined. If the length and index are both zero, bits [63:0] of parameter __x are extracted. If the length is zero but the index is non-zero, the result is undefined.
Returns
A 128-bit vector whose lower 64 bits contain the bits extracted from the source operand.

Definition at line 80 of file ammintrin.h.

◆ _mm_insert_si64()

static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_insert_si64 ( __m128i  __x,
__m128i  __y 
)
static

Inserts bits of a specified length from the source integer vector __y into the lower 64 bits of the destination integer vector __x at the index and of the length specified by __y.

This intrinsic corresponds to the INSERTQ instruction.

Parameters
__xThe destination operand where bits will be inserted. The inserted bits are defined by the length and by the index of the least significant bit specified by operand __y.
__yThe source operand containing the bits to be extracted. The extracted bits are the least significant bits of operand __y with length specified by bits [69:64]. These are inserted into the destination at the index specified by bits [77:72]; all other bits are ignored. If bits [69:64] are zero, the length is interpreted as 64. If the sum of the index and length is greater than 64, the result is undefined. If the length and index are both zero, bits [63:0] of parameter __y are inserted into parameter __x. If the length is zero but the index is non-zero, the result is undefined.
Returns
A 128-bit integer vector containing the original lower 64-bits of destination operand __x with the specified bitfields replaced by the lower bits of source operand __y. The upper 64 bits of the return value are undefined.

Definition at line 150 of file ammintrin.h.

References __DEFAULT_FN_ATTRS.

◆ _mm_stream_sd()

static __inline__ void __DEFAULT_FN_ATTRS _mm_stream_sd ( double *  __p,
__m128d  __a 
)
static

Stores a 64-bit double-precision value in a 64-bit memory location.

To minimize caching, the data is flagged as non-temporal (unlikely to be used again soon).

This intrinsic corresponds to the MOVNTSD instruction.

Parameters
__pThe 64-bit memory location used to store the register value.
__aThe 64-bit double-precision floating-point register value to be stored.

Definition at line 168 of file ammintrin.h.

References __DEFAULT_FN_ATTRS.

◆ _mm_stream_ss()

static __inline__ void __DEFAULT_FN_ATTRS _mm_stream_ss ( float *  __p,
__m128  __a 
)
static

Stores a 32-bit single-precision floating-point value in a 32-bit memory location.

To minimize caching, the data is flagged as non-temporal (unlikely to be used again soon).

This intrinsic corresponds to the MOVNTSS instruction.

Parameters
__pThe 32-bit memory location used to store the register value.
__aThe 32-bit single-precision floating-point register value to be stored.

Definition at line 186 of file ammintrin.h.