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-2005 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 *** cvs_id[] = "$Id: pmmintrin.h,v 1.5 2005/01/03 22:55:01 hhle Exp $";
11 ***
12 ****/
13 /*
14  * pmmintrin.h
15  *
16  * Principal header file for Intel(R) Pentium(R) 4 processor SSE3 intrinsics
17  */
18 
19 #pragma once
20 #ifndef __midl
21 #ifndef _INCLUDED_PMM
22 #define _INCLUDED_PMM
23 
24 #if defined (_M_CEE_PURE)
25  #error ERROR: EMM intrinsics not supported in the pure mode!
26 #else /* defined (_M_CEE_PURE) */
27 
28 /*
29  * We need emmintrin.h for the basic type declarations.
30  */
31 #include <emmintrin.h>
32 
33  /*****************************************************/
34  /* MACROS FOR USE WITH INTRINSICS */
35  /*****************************************************/
36 
37 /*
38  * MACRO functions for setting and reading the DAZ bit in the MXCSR
39  */
40 #define _MM_DENORMALS_ZERO_MASK 0x0040
41 #define _MM_DENORMALS_ZERO_ON 0x0040
42 #define _MM_DENORMALS_ZERO_OFF 0x0000
43 
44 #define _MM_SET_DENORMALS_ZERO_MODE(mode) \
45  _mm_setcsr((_mm_getcsr() & ~_MM_DENORMALS_ZERO_MASK) | (mode))
46 #define _MM_GET_DENORMALS_ZERO_MODE() \
47  (_mm_getcsr() & _MM_DENORMALS_ZERO_MASK)
48 
49 
50  /*****************************************************/
51  /* INTRINSICS FUNCTION PROTOTYPES START HERE */
52  /*****************************************************/
53 
54 #if defined __cplusplus
55 extern "C" { /* Begin "C" */
56  /* Intrinsics use C name-mangling. */
57 #endif /* defined __cplusplus */
58 
59 /*
60  * New Single precision vector instructions.
61  */
62 
63 extern __m128 _mm_addsub_ps(__m128 a, __m128 b);
64 extern __m128 _mm_hadd_ps(__m128 a, __m128 b);
65 extern __m128 _mm_hsub_ps(__m128 a, __m128 b);
66 extern __m128 _mm_movehdup_ps(__m128 a);
67 extern __m128 _mm_moveldup_ps(__m128 a);
68 
69 /*
70  * New double precision vector instructions.
71  */
72 
74 extern __m128d _mm_hadd_pd(__m128d a, __m128d b);
75 extern __m128d _mm_hsub_pd(__m128d a, __m128d b);
76 extern __m128d _mm_loaddup_pd(double const * dp);
78 
79 /*
80  * New unaligned integer vector load instruction.
81  */
82 extern __m128i _mm_lddqu_si128(__m128i const *p);
83 
84 /*
85  * Miscellaneous new instructions.
86  */
87 /*
88  * For _mm_monitor p goes in eax, extensions goes in ecx, hints goes in edx.
89  */
90 extern void _mm_monitor(void const *p, unsigned extensions, unsigned hints);
91 
92 /*
93  * For _mm_mwait, extensions goes in ecx, hints goes in eax.
94  */
95 extern void _mm_mwait(unsigned extensions, unsigned hints);
96 
97 #if defined __cplusplus
98 }; /* End "C" */
99 #endif /* defined __cplusplus */
100 
101 #endif /* defined (_M_CEE_PURE) */
102 
103 #endif /* _INCLUDED_PMM */
104 #endif /* __midl */
__m128d
Definition: emmintrin.h:48
__m128 _mm_addsub_ps(__m128 a, __m128 b)
__m128 _mm_hsub_ps(__m128 a, __m128 b)
__m128d _mm_movedup_pd(__m128d a)
void _mm_monitor(void const *p, unsigned extensions, unsigned hints)
void _mm_mwait(unsigned extensions, unsigned hints)
__m128 _mm_hadd_ps(__m128 a, __m128 b)
__m128d _mm_loaddup_pd(double const *dp)
__m128d _mm_hadd_pd(__m128d a, __m128d b)
__m128i
Definition: emmintrin.h:44
__m128
Definition: xmmintrin.h:70
__m128 _mm_movehdup_ps(__m128 a)
__m128 _mm_moveldup_ps(__m128 a)
__m128d _mm_hsub_pd(__m128d a, __m128d b)
__m128i _mm_lddqu_si128(__m128i const *p)
__m128d _mm_addsub_pd(__m128d a, __m128d b)