STLdoc
STLdocumentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
mmintrin.h
Go to the documentation of this file.
1 /***
2 *** Copyright (C) 1985-1999 Intel Corporation. All rights reserved.
3 ***
4 *** The information and source code contained herein is the exclusive
5 *** property of Intel Corporation and may not be disclosed, examined
6 *** or reproduced in whole or in part without explicit written authorization
7 *** from the company.
8 ***
9 ****/
10 
11 /*
12  * Definitions and declarations for use with compiler intrinsics.
13  */
14 
15 #ifndef _MMINTRIN_H_INCLUDED
16 #define _MMINTRIN_H_INCLUDED
17 #ifndef __midl
18 
19 #include <crtdefs.h>
20 
21 #if defined (_M_CEE_PURE)
22  #error ERROR: MM intrinsics not supported in the pure mode!
23 #else /* defined (_M_CEE_PURE) */
24 
25 #if defined __cplusplus
26 extern "C" { /* Begin "C" */
27 /* Intrinsics use C name-mangling.
28  */
29 #endif /* defined __cplusplus */
30 
31 typedef union __declspec(intrin_type) _CRT_ALIGN(8) __m64
32 {
33  unsigned __int64 m64_u64;
34  float m64_f32[2];
35  __int8 m64_i8[8];
36  __int16 m64_i16[4];
37  __int32 m64_i32[2];
38  __int64 m64_i64;
39  unsigned __int8 m64_u8[8];
40  unsigned __int16 m64_u16[4];
41  unsigned __int32 m64_u32[2];
43 
44 /* General support intrinsics */
45 void _m_empty(void);
46 __m64 _m_from_int(int _I);
47 int _m_to_int(__m64 _M);
48 __m64 _m_packsswb(__m64 _MM1, __m64 _MM2);
49 __m64 _m_packssdw(__m64 _MM1, __m64 _MM2);
50 __m64 _m_packuswb(__m64 _MM1, __m64 _MM2);
51 __m64 _m_punpckhbw(__m64 _MM1, __m64 _MM2);
52 __m64 _m_punpckhwd(__m64 _MM1, __m64 _MM2);
53 __m64 _m_punpckhdq(__m64 _MM1, __m64 _MM2);
54 __m64 _m_punpcklbw(__m64 _MM1, __m64 _MM2);
55 __m64 _m_punpcklwd(__m64 _MM1, __m64 _MM2);
56 __m64 _m_punpckldq(__m64 _MM1, __m64 _MM2);
57 
58 /* Packed arithmetic intrinsics */
59 __m64 _m_paddb(__m64 _MM1, __m64 _MM2);
60 __m64 _m_paddw(__m64 _MM1, __m64 _MM2);
61 __m64 _m_paddd(__m64 _MM1, __m64 _MM2);
62 __m64 _m_paddsb(__m64 _MM1, __m64 _MM2);
63 __m64 _m_paddsw(__m64 _MM1, __m64 _MM2);
64 __m64 _m_paddusb(__m64 _MM1, __m64 _MM2);
65 __m64 _m_paddusw(__m64 _MM1, __m64 _MM2);
66 __m64 _m_psubb(__m64 _MM1, __m64 _MM2);
67 __m64 _m_psubw(__m64 _MM1, __m64 _MM2);
68 __m64 _m_psubd(__m64 _MM1, __m64 _MM2);
69 __m64 _m_psubsb(__m64 _MM1, __m64 _MM2);
70 __m64 _m_psubsw(__m64 _MM1, __m64 _MM2);
71 __m64 _m_psubusb(__m64 _MM1, __m64 _MM2);
72 __m64 _m_psubusw(__m64 _MM1, __m64 _MM2);
73 __m64 _m_pmaddwd(__m64 _MM1, __m64 _MM2);
74 __m64 _m_pmulhw(__m64 _MM1, __m64 _MM2);
75 __m64 _m_pmullw(__m64 _MM1, __m64 _MM2);
76 
77 /* Shift intrinsics */
79 __m64 _m_psllwi(__m64 _M, int _Count);
81 __m64 _m_pslldi(__m64 _M, int _Count);
83 __m64 _m_psllqi(__m64 _M, int _Count);
85 __m64 _m_psrawi(__m64 _M, int _Count);
87 __m64 _m_psradi(__m64 _M, int _Count);
89 __m64 _m_psrlwi(__m64 _M, int _Count);
91 __m64 _m_psrldi(__m64 _M, int _Count);
93 __m64 _m_psrlqi(__m64 _M, int _Count);
94 
95 /* Logical intrinsics */
96 __m64 _m_pand(__m64 _MM1, __m64 _MM2);
97 __m64 _m_pandn(__m64 _MM1, __m64 _MM2);
98 __m64 _m_por(__m64 _MM1, __m64 _MM2);
99 __m64 _m_pxor(__m64 _MM1, __m64 _MM2);
100 
101 /* Comparison intrinsics */
102 __m64 _m_pcmpeqb(__m64 _MM1, __m64 _MM2);
103 __m64 _m_pcmpeqw(__m64 _MM1, __m64 _MM2);
104 __m64 _m_pcmpeqd(__m64 _MM1, __m64 _MM2);
105 __m64 _m_pcmpgtb(__m64 _MM1, __m64 _MM2);
106 __m64 _m_pcmpgtw(__m64 _MM1, __m64 _MM2);
107 __m64 _m_pcmpgtd(__m64 _MM1, __m64 _MM2);
108 
109 /* Utility intrinsics */
110 __m64 _mm_setzero_si64(void);
111 __m64 _mm_set_pi32(int _I1, int _I0);
112 __m64 _mm_set_pi16(short _S3, short _S2, short _S1, short _S0);
113 __m64 _mm_set_pi8(char _B7, char _B6, char _B5, char _B4,
114  char _B3, char _B2, char _B1, char _B0);
115 __m64 _mm_set1_pi32(int _I);
116 __m64 _mm_set1_pi16(short _S);
117 __m64 _mm_set1_pi8(char _B);
118 __m64 _mm_setr_pi32(int _I1, int _I0);
119 __m64 _mm_setr_pi16(short _S3, short _S2, short _S1, short _S0);
120 __m64 _mm_setr_pi8(char _B7, char _B6, char _B5, char _B4,
121  char _B3, char _B2, char _B1, char _B0);
122 
123 /* Alternate intrinsic name definitions */
124 #define _mm_empty _m_empty
125 #define _mm_cvtsi32_si64 _m_from_int
126 #define _mm_cvtsi64_si32 _m_to_int
127 #define _mm_packs_pi16 _m_packsswb
128 #define _mm_packs_pi32 _m_packssdw
129 #define _mm_packs_pu16 _m_packuswb
130 #define _mm_unpackhi_pi8 _m_punpckhbw
131 #define _mm_unpackhi_pi16 _m_punpckhwd
132 #define _mm_unpackhi_pi32 _m_punpckhdq
133 #define _mm_unpacklo_pi8 _m_punpcklbw
134 #define _mm_unpacklo_pi16 _m_punpcklwd
135 #define _mm_unpacklo_pi32 _m_punpckldq
136 #define _mm_add_pi8 _m_paddb
137 #define _mm_add_pi16 _m_paddw
138 #define _mm_add_pi32 _m_paddd
139 #define _mm_adds_pi8 _m_paddsb
140 #define _mm_adds_pi16 _m_paddsw
141 #define _mm_adds_pu8 _m_paddusb
142 #define _mm_adds_pu16 _m_paddusw
143 #define _mm_sub_pi8 _m_psubb
144 #define _mm_sub_pi16 _m_psubw
145 #define _mm_sub_pi32 _m_psubd
146 #define _mm_subs_pi8 _m_psubsb
147 #define _mm_subs_pi16 _m_psubsw
148 #define _mm_subs_pu8 _m_psubusb
149 #define _mm_subs_pu16 _m_psubusw
150 #define _mm_madd_pi16 _m_pmaddwd
151 #define _mm_mulhi_pi16 _m_pmulhw
152 #define _mm_mullo_pi16 _m_pmullw
153 #define _mm_sll_pi16 _m_psllw
154 #define _mm_slli_pi16 _m_psllwi
155 #define _mm_sll_pi32 _m_pslld
156 #define _mm_slli_pi32 _m_pslldi
157 #define _mm_sll_si64 _m_psllq
158 #define _mm_slli_si64 _m_psllqi
159 #define _mm_sra_pi16 _m_psraw
160 #define _mm_srai_pi16 _m_psrawi
161 #define _mm_sra_pi32 _m_psrad
162 #define _mm_srai_pi32 _m_psradi
163 #define _mm_srl_pi16 _m_psrlw
164 #define _mm_srli_pi16 _m_psrlwi
165 #define _mm_srl_pi32 _m_psrld
166 #define _mm_srli_pi32 _m_psrldi
167 #define _mm_srl_si64 _m_psrlq
168 #define _mm_srli_si64 _m_psrlqi
169 #define _mm_and_si64 _m_pand
170 #define _mm_andnot_si64 _m_pandn
171 #define _mm_or_si64 _m_por
172 #define _mm_xor_si64 _m_pxor
173 #define _mm_cmpeq_pi8 _m_pcmpeqb
174 #define _mm_cmpeq_pi16 _m_pcmpeqw
175 #define _mm_cmpeq_pi32 _m_pcmpeqd
176 #define _mm_cmpgt_pi8 _m_pcmpgtb
177 #define _mm_cmpgt_pi16 _m_pcmpgtw
178 #define _mm_cmpgt_pi32 _m_pcmpgtd
179 
180 
181 #if defined __cplusplus
182 }; /* End "C" */
183 #endif /* defined __cplusplus */
184 
185 #endif /* defined (_M_CEE_PURE) */
186 #endif /* __midl */
187 #endif /* _MMINTRIN_H_INCLUDED */
188 
__m64 _m_pslld(__m64 _M, __m64 _Count)
__m64 _m_punpckhwd(__m64 _MM1, __m64 _MM2)
__m64 _m_pslldi(__m64 _M, int _Count)
__m64 _m_paddb(__m64 _MM1, __m64 _MM2)
__m64 _mm_set_pi16(short _S3, short _S2, short _S1, short _S0)
__m64 _mm_set1_pi16(short _S)
__m64 _mm_setr_pi16(short _S3, short _S2, short _S1, short _S0)
__m64 _m_pmullw(__m64 _MM1, __m64 _MM2)
__m64 _m_punpckhdq(__m64 _MM1, __m64 _MM2)
__m64 _m_punpcklbw(__m64 _MM1, __m64 _MM2)
__m64 _m_psrlwi(__m64 _M, int _Count)
__m64 _m_psubw(__m64 _MM1, __m64 _MM2)
__m64 _m_pand(__m64 _MM1, __m64 _MM2)
__m64 _m_psllw(__m64 _M, __m64 _Count)
__m64 _mm_set1_pi8(char _B)
__m64 _m_psrad(__m64 _M, __m64 _Count)
void _m_empty(void)
__m64 _m_psubusb(__m64 _MM1, __m64 _MM2)
__m64 _mm_set_pi32(int _I1, int _I0)
__m64 _m_psubsb(__m64 _MM1, __m64 _MM2)
__m64 _m_psrlw(__m64 _M, __m64 _Count)
__m64 _m_punpckhbw(__m64 _MM1, __m64 _MM2)
__m64 _m_psrldi(__m64 _M, int _Count)
__m64 _m_psrawi(__m64 _M, int _Count)
__m64 _m_pcmpeqw(__m64 _MM1, __m64 _MM2)
__m64 _mm_set_pi8(char _B7, char _B6, char _B5, char _B4, char _B3, char _B2, char _B1, char _B0)
__m64 _m_psubusw(__m64 _MM1, __m64 _MM2)
__m64 _m_psraw(__m64 _M, __m64 _Count)
__m64 _m_packsswb(__m64 _MM1, __m64 _MM2)
__m64 _m_paddusw(__m64 _MM1, __m64 _MM2)
__m64 _m_psllwi(__m64 _M, int _Count)
__m64 _mm_setr_pi32(int _I1, int _I0)
__m64 _m_por(__m64 _MM1, __m64 _MM2)
__m64 _m_pmaddwd(__m64 _MM1, __m64 _MM2)
__m64 _m_pandn(__m64 _MM1, __m64 _MM2)
__m64 _m_punpckldq(__m64 _MM1, __m64 _MM2)
__m64 _m_paddsw(__m64 _MM1, __m64 _MM2)
__m64 _m_punpcklwd(__m64 _MM1, __m64 _MM2)
__m64 _m_psrld(__m64 _M, __m64 _Count)
__m64
Definition: mmintrin.h:42
__m64 _m_pmulhw(__m64 _MM1, __m64 _MM2)
int _m_to_int(__m64 _M)
__m64 _m_psubb(__m64 _MM1, __m64 _MM2)
__m64 _m_psllq(__m64 _M, __m64 _Count)
__m64 _m_psrlq(__m64 _M, __m64 _Count)
#define _CRT_ALIGN(x)
Definition: crtdefs.h:604
__m64 _mm_set1_pi32(int _I)
__m64 _m_from_int(int _I)
__m64 _mm_setr_pi8(char _B7, char _B6, char _B5, char _B4, char _B3, char _B2, char _B1, char _B0)
__m64 _m_pcmpgtw(__m64 _MM1, __m64 _MM2)
__m64 _m_paddw(__m64 _MM1, __m64 _MM2)
__m64 _mm_setzero_si64(void)
__m64 _m_pcmpgtb(__m64 _MM1, __m64 _MM2)
_Diff _Count
Definition: algorithm:1941
__m64 _m_pcmpeqb(__m64 _MM1, __m64 _MM2)
__m64 _m_paddusb(__m64 _MM1, __m64 _MM2)
__m64 _m_packuswb(__m64 _MM1, __m64 _MM2)
__m64 _m_pcmpeqd(__m64 _MM1, __m64 _MM2)
__m64 _m_paddd(__m64 _MM1, __m64 _MM2)
__m64 _m_psrlqi(__m64 _M, int _Count)
__m64 _m_paddsb(__m64 _MM1, __m64 _MM2)
__m64 _m_psubsw(__m64 _MM1, __m64 _MM2)
__m64 _m_psradi(__m64 _M, int _Count)
__m64 _m_pxor(__m64 _MM1, __m64 _MM2)
__m64 _m_psubd(__m64 _MM1, __m64 _MM2)
__m64 _m_pcmpgtd(__m64 _MM1, __m64 _MM2)
__m64 _m_psllqi(__m64 _M, int _Count)
__m64 _m_packssdw(__m64 _MM1, __m64 _MM2)