STLdoc
STLdocumentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
pmmintrin.h
Go to the documentation of this file.
1 /***
2 ***
3 *** Copyright (C) 1985-2015 Intel Corporation. All rights reserved.
4 ***
5 *** The information and source code contained herein is the exclusive
6 *** property of Intel Corporation and may not be disclosed, examined
7 *** or reproduced in whole or in part except as expressly provided
8 *** by the accompanying LICENSE AGREEMENT
9 ***
10 ****/
11 /*
12  * pmmintrin.h
13  *
14  * Principal header file for Intel(R) Pentium(R) 4 processor SSE3 intrinsics
15  */
16 
17 #pragma once
18 
19 #if !defined(_M_IX86) && !defined(_M_X64)
20 #error This header is specific to X86 and X64 targets
21 #endif
22 
23 #ifndef _INCLUDED_PMM
24 #define _INCLUDED_PMM
25 #ifndef __midl
26 
27 #if defined (_M_CEE_PURE)
28  #error ERROR: EMM intrinsics not supported in the pure mode!
29 #else /* defined (_M_CEE_PURE) */
30 
31 /*
32  * We need emmintrin.h for the basic type declarations.
33  */
34 #include <emmintrin.h>
35 
36  /*****************************************************/
37  /* MACROS FOR USE WITH INTRINSICS */
38  /*****************************************************/
39 
40 /*
41  * MACRO functions for setting and reading the DAZ bit in the MXCSR
42  */
43 #define _MM_DENORMALS_ZERO_MASK 0x0040
44 #define _MM_DENORMALS_ZERO_ON 0x0040
45 #define _MM_DENORMALS_ZERO_OFF 0x0000
46 
47 #define _MM_SET_DENORMALS_ZERO_MODE(mode) \
48  _mm_setcsr((_mm_getcsr() & ~_MM_DENORMALS_ZERO_MASK) | (mode))
49 #define _MM_GET_DENORMALS_ZERO_MODE() \
50  (_mm_getcsr() & _MM_DENORMALS_ZERO_MASK)
51 
52 
53  /*****************************************************/
54  /* INTRINSICS FUNCTION PROTOTYPES START HERE */
55  /*****************************************************/
56 
57 #if defined __cplusplus
58 extern "C" { /* Begin "C" */
59  /* Intrinsics use C name-mangling. */
60 #endif /* defined __cplusplus */
61 
62 /*
63  * New Single precision vector instructions.
64  */
65 
66 extern __m128 _mm_addsub_ps(__m128 /* a */, __m128 /* b */);
67 extern __m128 _mm_hadd_ps(__m128 /* a */, __m128 /* b */);
68 extern __m128 _mm_hsub_ps(__m128 /* a */, __m128 /* b */);
69 extern __m128 _mm_movehdup_ps(__m128 /* a */);
70 extern __m128 _mm_moveldup_ps(__m128 /* a */);
71 
72 /*
73  * New double precision vector instructions.
74  */
75 
76 extern __m128d _mm_addsub_pd(__m128d /* a */, __m128d /* b */);
77 extern __m128d _mm_hadd_pd(__m128d /* a */, __m128d /* b */);
78 extern __m128d _mm_hsub_pd(__m128d /* a */, __m128d /* b */);
79 extern __m128d _mm_loaddup_pd(double const * /* dp */);
80 extern __m128d _mm_movedup_pd(__m128d /* a */);
81 
82 /*
83  * New unaligned integer vector load instruction.
84  */
85 extern __m128i _mm_lddqu_si128(__m128i const * /* p */);
86 
87 /*
88  * Miscellaneous new instructions.
89  */
90 /*
91  * For _mm_monitor p goes in eax, extensions goes in ecx, hints goes in edx.
92  */
93 extern void _mm_monitor(void const * /* p */, unsigned /* extensions */, unsigned /* hints */);
94 
95 /*
96  * For _mm_mwait, extensions goes in ecx, hints goes in eax.
97  */
98 extern void _mm_mwait(unsigned /* extensions */, unsigned /* hints */);
99 
100 #if defined __cplusplus
101 }; /* End "C" */
102 #endif /* defined __cplusplus */
103 
104 #endif /* defined (_M_CEE_PURE) */
105 #endif /* __midl */
106 #endif /* _INCLUDED_PMM */
__m128i _mm_lddqu_si128(__m128i const *)
__m128d
Definition: emmintrin.h:57
__m128 _mm_movehdup_ps(__m128)
__m128d _mm_hsub_pd(__m128d, __m128d)
__m128d _mm_loaddup_pd(double const *)
__m128d _mm_hadd_pd(__m128d, __m128d)
__m128 _mm_addsub_ps(__m128, __m128)
__m128d _mm_movedup_pd(__m128d)
__m128 _mm_moveldup_ps(__m128)
void _mm_mwait(unsigned, unsigned)
__m128 _mm_hadd_ps(__m128, __m128)
__m128i
Definition: emmintrin.h:53
__m128d _mm_addsub_pd(__m128d, __m128d)
__m128
Definition: xmmintrin.h:75
void _mm_monitor(void const *, unsigned, unsigned)
__m128 _mm_hsub_ps(__m128, __m128)