9 #if defined(_M_IX86) || defined(_M_X64)
10 //#include <immintrin.h>
11 //#include <ammintrin.h>
12 #endif /* _M_IX86 || _M_X64 */
15 //#include <mm3dnow.h>
19 //#include <arm_neon.h>
20 //#include <armintr.h>
23 #if defined(__cplusplus)
27 void* _AddressOfReturnAddress(void);
28 unsigned char _BitScanForward(unsigned long * _Index
, unsigned long _Mask
);
29 unsigned char _BitScanReverse(unsigned long * _Index
, unsigned long _Mask
);
30 long _InterlockedAnd(_Interlocked_operand_
long volatile * _Value
, long _Mask
);
31 short _InterlockedAnd16(_Interlocked_operand_
short volatile * _Value
, short _Mask
);
32 char _InterlockedAnd8(_Interlocked_operand_
char volatile * _Value
, char _Mask
);
33 long __cdecl
_InterlockedCompareExchange(_Interlocked_operand_
long volatile * _Destination
, long _Exchange
, long _Comparand
);
34 short _InterlockedCompareExchange16(_Interlocked_operand_
short volatile * _Destination
, short _Exchange
, short _Comparand
);
35 __int64
_InterlockedCompareExchange64(_Interlocked_operand_ __int64
volatile * _Destination
, __int64 _Exchange
, __int64 _Comparand
);
36 char _InterlockedCompareExchange8(_Interlocked_operand_
char volatile * _Destination
, char _Exchange
, char _Comparand
);
37 void * _InterlockedCompareExchangePointer(_Interlocked_operand_
void * volatile * _Destination
, void * _Exchange
, void * _Comparand
);
38 long __cdecl
_InterlockedDecrement(_Interlocked_operand_
long volatile * _Addend
);
39 short _InterlockedDecrement16(_Interlocked_operand_
short volatile * _Addend
);
40 long __cdecl
_InterlockedExchange(_Interlocked_operand_
long volatile * _Target
, long _Value
);
41 short _InterlockedExchange16(_Interlocked_operand_
short volatile * _Target
, short _Value
);
42 char _InterlockedExchange8(_Interlocked_operand_
char volatile * _Target
, char _Value
);
43 long __cdecl
_InterlockedExchangeAdd(_Interlocked_operand_
long volatile * _Addend
, long _Value
);
44 short _InterlockedExchangeAdd16(_Interlocked_operand_
short volatile * _Addend
, short _Value
);
45 char _InterlockedExchangeAdd8(_Interlocked_operand_
char volatile * _Addend
, char _Value
);
46 void * _InterlockedExchangePointer(_Interlocked_operand_
void * volatile * _Target
, void * _Value
);
47 long __cdecl
_InterlockedIncrement(_Interlocked_operand_
long volatile * _Addend
);
48 short _InterlockedIncrement16(_Interlocked_operand_
short volatile * _Addend
);
49 long _InterlockedOr(_Interlocked_operand_
long volatile * _Value
, long _Mask
);
50 short _InterlockedOr16(_Interlocked_operand_
short volatile * _Value
, short _Mask
);
51 char _InterlockedOr8(_Interlocked_operand_
char volatile * _Value
, char _Mask
);
52 long _InterlockedXor(_Interlocked_operand_
long volatile * _Value
, long _Mask
);
53 short _InterlockedXor16(_Interlocked_operand_
short volatile * _Value
, short _Mask
);
54 char _InterlockedXor8(_Interlocked_operand_
char volatile * _Value
, char _Mask
);
55 void _ReadBarrier(void);
56 void _ReadWriteBarrier(void);
57 void * _ReturnAddress(void);
58 void _WriteBarrier(void);
59 void __code_seg(const char *);
60 void __cdecl
__debugbreak(void);
61 __declspec(noreturn
) void __fastfail(unsigned int);
63 __int64 __cdecl
_abs64(__int64
);
64 unsigned char _bittest(long const *, long);
65 unsigned char _bittestandcomplement(long *, long);
66 unsigned char _bittestandreset(long *, long);
67 unsigned char _bittestandset(long *, long);
68 _Check_return_
unsigned __int64 __cdecl
_byteswap_uint64(_In_
unsigned __int64
);
69 _Check_return_
unsigned long __cdecl
_byteswap_ulong(_In_
unsigned long);
70 _Check_return_
unsigned short __cdecl
_byteswap_ushort(_In_
unsigned short);
71 void __cdecl
_disable(void);
72 void __cdecl
_enable(void);
73 unsigned char _interlockedbittestandreset(long volatile *, long);
74 unsigned char _interlockedbittestandset(long volatile *, long);
75 _Check_return_
unsigned long __cdecl
_lrotl(_In_
unsigned long, _In_
int);
76 _Check_return_
unsigned long __cdecl
_lrotr(_In_
unsigned long, _In_
int);
77 _Check_return_
unsigned int __cdecl
_rotl(_In_
unsigned int _Value
, _In_
int _Shift
);
78 unsigned short _rotl16(unsigned short _Value
, unsigned char _Shift
);
79 _Check_return_
unsigned __int64 __cdecl
_rotl64(_In_
unsigned __int64 _Value
, _In_
int _Shift
);
80 unsigned char _rotl8(unsigned char _Value
, unsigned char _Shift
);
81 _Check_return_
unsigned int __cdecl
_rotr(_In_
unsigned int _Value
, _In_
int _Shift
);
82 unsigned short _rotr16(unsigned short _Value
, unsigned char _Shift
);
83 _Check_return_
unsigned __int64 __cdecl
_rotr64(_In_
unsigned __int64 _Value
, _In_
int _Shift
);
84 unsigned char _rotr8(unsigned char _Value
, unsigned char _Shift
);
86 #if defined(_M_IX86) || defined(_M_X64)
88 void __cpuid(int[4], int);
89 void __cpuidex(int[4], int, int);
90 __int64
__emul(int, int);
91 unsigned __int64
__emulu(unsigned int, unsigned int);
92 unsigned int __getcallerseflags(void);
94 unsigned char __inbyte(unsigned short);
95 void __inbytestring(unsigned short, unsigned char *, unsigned long);
96 unsigned long __indword(unsigned short);
97 void __indwordstring(unsigned short, unsigned long *, unsigned long);
99 void __invlpg(void *);
100 unsigned short __inword(unsigned short);
101 void __inwordstring(unsigned short, unsigned short *, unsigned long);
103 unsigned __int64
__ll_lshift(unsigned __int64
, int);
104 __int64
__ll_rshift(__int64
, int);
105 unsigned int __lzcnt(unsigned int);
106 unsigned short __lzcnt16(unsigned short);
107 void __movsb(unsigned char *, unsigned char const *, size_t);
108 void __movsd(unsigned long *, unsigned long const *, size_t);
109 void __movsw(unsigned short *, unsigned short const *, size_t);
110 void __nvreg_restore_fence(void);
111 void __nvreg_save_fence(void);
112 void __outbyte(unsigned short, unsigned char);
113 void __outbytestring(unsigned short, unsigned char *, unsigned long);
114 void __outdword(unsigned short, unsigned long);
115 void __outdwordstring(unsigned short, unsigned long *, unsigned long);
116 void __outword(unsigned short, unsigned short);
117 void __outwordstring(unsigned short, unsigned short *, unsigned long);
118 unsigned int __popcnt(unsigned int);
119 unsigned short __popcnt16(unsigned short);
120 unsigned __int64
__rdtsc(void);
121 unsigned __int64
__rdtscp(unsigned int *);
122 unsigned __int64
__readmsr(unsigned long);
123 unsigned __int64
__readpmc(unsigned long);
124 unsigned long __segmentlimit(unsigned long);
126 void __stosb(unsigned char *, unsigned char, size_t);
127 void __stosd(unsigned long *, unsigned long, size_t);
128 void __stosw(unsigned short *, unsigned short, size_t);
129 void __svm_clgi(void);
130 void __svm_invlpga(void *, int);
131 void __svm_skinit(int);
132 void __svm_stgi(void);
133 void __svm_vmload(size_t);
134 void __svm_vmrun(size_t);
135 void __svm_vmsave(size_t);
137 unsigned __int64
__ull_rshift(unsigned __int64
, int);
138 void __vmx_off(void);
139 void __vmx_vmptrst(unsigned __int64
*);
141 void __writemsr(unsigned long, unsigned __int64
);
142 int __cdecl
_inp(unsigned short);
143 unsigned long __cdecl
_inpd(unsigned short);
144 unsigned short __cdecl
_inpw(unsigned short);
145 void _m_prefetch(void *);
146 void _m_prefetchw(volatile const void *);
148 void _mm_mfence(void);
149 void _mm_lfence(void);
150 void _mm_sfence(void);
151 void _mm_pause(void);
154 __m128i
_mm_abs_epi16(__m128i
);
155 __m128i
_mm_abs_epi32(__m128i
);
156 __m128i
_mm_abs_epi8(__m128i
);
157 __m64
_mm_abs_pi16(__m64
);
158 __m64
_mm_abs_pi32(__m64
);
159 __m64
_mm_abs_pi8(__m64
);
160 __m128i
_mm_add_epi16(__m128i
, __m128i
);
161 __m128i
_mm_add_epi32(__m128i
, __m128i
);
162 __m128i
_mm_add_epi64(__m128i
, __m128i
);
163 __m128i
_mm_add_epi8(__m128i
, __m128i
);
164 __m128d
_mm_add_pd(__m128d
, __m128d
);
165 __m128
_mm_add_ps(__m128
, __m128
);
166 __m128d
_mm_add_sd(__m128d
, __m128d
);
167 __m128
_mm_add_ss(__m128
, __m128
);
168 __m128i
_mm_adds_epi16(__m128i
, __m128i
);
169 __m128i
_mm_adds_epi8(__m128i
, __m128i
);
170 __m128i
_mm_adds_epu16(__m128i
, __m128i
);
171 __m128i
_mm_adds_epu8(__m128i
, __m128i
);
172 __m128d
_mm_addsub_pd(__m128d
, __m128d
);
173 __m128
_mm_addsub_ps(__m128
, __m128
);
174 __m128i
_mm_alignr_epi8(__m128i
, __m128i
, int);
175 __m64
_mm_alignr_pi8(__m64
, __m64
, int);
176 __m128d
_mm_and_pd(__m128d
, __m128d
);
177 __m128
_mm_and_ps(__m128
, __m128
);
178 __m128i
_mm_and_si128(__m128i
, __m128i
);
179 __m128d
_mm_andnot_pd(__m128d
, __m128d
);
180 __m128
_mm_andnot_ps(__m128
, __m128
);
181 __m128i
_mm_andnot_si128(__m128i
, __m128i
);
182 __m128i
_mm_avg_epu16(__m128i
, __m128i
);
183 __m128i
_mm_avg_epu8(__m128i
, __m128i
);
184 __m128i
_mm_blend_epi16(__m128i
, __m128i
, int);
185 __m128d
_mm_blend_pd(__m128d
, __m128d
, int);
186 __m128
_mm_blend_ps(__m128
, __m128
, int);
187 __m128i
_mm_blendv_epi8(__m128i
, __m128i
, __m128i
);
188 __m128d
_mm_blendv_pd(__m128d
, __m128d
, __m128d
);
189 __m128
_mm_blendv_ps(__m128
, __m128
, __m128
);
190 void _mm_clflush(void const *);
191 __m128i
_mm_cmpeq_epi16(__m128i
, __m128i
);
192 __m128i
_mm_cmpeq_epi32(__m128i
, __m128i
);
193 __m128i
_mm_cmpeq_epi64(__m128i
, __m128i
);
194 __m128i
_mm_cmpeq_epi8(__m128i
, __m128i
);
195 __m128d
_mm_cmpeq_pd(__m128d
, __m128d
);
196 __m128
_mm_cmpeq_ps(__m128
, __m128
);
197 __m128d
_mm_cmpeq_sd(__m128d
, __m128d
);
198 __m128
_mm_cmpeq_ss(__m128
, __m128
);
199 int _mm_cmpestra(__m128i
, int, __m128i
, int, int);
200 int _mm_cmpestrc(__m128i
, int, __m128i
, int, int);
201 int _mm_cmpestri(__m128i
, int, __m128i
, int, int);
202 __m128i
_mm_cmpestrm(__m128i
, int, __m128i
, int, int);
203 int _mm_cmpestro(__m128i
, int, __m128i
, int, int);
204 int _mm_cmpestrs(__m128i
, int, __m128i
, int, int);
205 int _mm_cmpestrz(__m128i
, int, __m128i
, int, int);
206 __m128d
_mm_cmpge_pd(__m128d
, __m128d
);
207 __m128
_mm_cmpge_ps(__m128
, __m128
);
208 __m128d
_mm_cmpge_sd(__m128d
, __m128d
);
209 __m128
_mm_cmpge_ss(__m128
, __m128
);
210 __m128i
_mm_cmpgt_epi16(__m128i
, __m128i
);
211 __m128i
_mm_cmpgt_epi32(__m128i
, __m128i
);
212 __m128i
_mm_cmpgt_epi64(__m128i
, __m128i
);
213 __m128i
_mm_cmpgt_epi8(__m128i
, __m128i
);
214 __m128d
_mm_cmpgt_pd(__m128d
, __m128d
);
215 __m128
_mm_cmpgt_ps(__m128
, __m128
);
216 __m128d
_mm_cmpgt_sd(__m128d
, __m128d
);
217 __m128
_mm_cmpgt_ss(__m128
, __m128
);
218 int _mm_cmpistra(__m128i
, __m128i
, int);
219 int _mm_cmpistrc(__m128i
, __m128i
, int);
220 int _mm_cmpistri(__m128i
, __m128i
, int);
221 __m128i
_mm_cmpistrm(__m128i
, __m128i
, int);
222 int _mm_cmpistro(__m128i
, __m128i
, int);
223 int _mm_cmpistrs(__m128i
, __m128i
, int);
224 int _mm_cmpistrz(__m128i
, __m128i
, int);
225 __m128d
_mm_cmple_pd(__m128d
, __m128d
);
226 __m128
_mm_cmple_ps(__m128
, __m128
);
227 __m128d
_mm_cmple_sd(__m128d
, __m128d
);
228 __m128
_mm_cmple_ss(__m128
, __m128
);
229 __m128i
_mm_cmplt_epi16(__m128i
, __m128i
);
230 __m128i
_mm_cmplt_epi32(__m128i
, __m128i
);
231 __m128i
_mm_cmplt_epi8(__m128i
, __m128i
);
232 __m128d
_mm_cmplt_pd(__m128d
, __m128d
);
233 __m128
_mm_cmplt_ps(__m128
, __m128
);
234 __m128d
_mm_cmplt_sd(__m128d
, __m128d
);
235 __m128
_mm_cmplt_ss(__m128
, __m128
);
236 __m128d
_mm_cmpneq_pd(__m128d
, __m128d
);
237 __m128
_mm_cmpneq_ps(__m128
, __m128
);
238 __m128d
_mm_cmpneq_sd(__m128d
, __m128d
);
239 __m128
_mm_cmpneq_ss(__m128
, __m128
);
240 __m128d
_mm_cmpnge_pd(__m128d
, __m128d
);
241 __m128
_mm_cmpnge_ps(__m128
, __m128
);
242 __m128d
_mm_cmpnge_sd(__m128d
, __m128d
);
243 __m128
_mm_cmpnge_ss(__m128
, __m128
);
244 __m128d
_mm_cmpngt_pd(__m128d
, __m128d
);
245 __m128
_mm_cmpngt_ps(__m128
, __m128
);
246 __m128d
_mm_cmpngt_sd(__m128d
, __m128d
);
247 __m128
_mm_cmpngt_ss(__m128
, __m128
);
248 __m128d
_mm_cmpnle_pd(__m128d
, __m128d
);
249 __m128
_mm_cmpnle_ps(__m128
, __m128
);
250 __m128d
_mm_cmpnle_sd(__m128d
, __m128d
);
251 __m128
_mm_cmpnle_ss(__m128
, __m128
);
252 __m128d
_mm_cmpnlt_pd(__m128d
, __m128d
);
253 __m128
_mm_cmpnlt_ps(__m128
, __m128
);
254 __m128d
_mm_cmpnlt_sd(__m128d
, __m128d
);
255 __m128
_mm_cmpnlt_ss(__m128
, __m128
);
256 __m128d
_mm_cmpord_pd(__m128d
, __m128d
);
257 __m128
_mm_cmpord_ps(__m128
, __m128
);
258 __m128d
_mm_cmpord_sd(__m128d
, __m128d
);
259 __m128
_mm_cmpord_ss(__m128
, __m128
);
260 __m128d
_mm_cmpunord_pd(__m128d
, __m128d
);
261 __m128
_mm_cmpunord_ps(__m128
, __m128
);
262 __m128d
_mm_cmpunord_sd(__m128d
, __m128d
);
263 __m128
_mm_cmpunord_ss(__m128
, __m128
);
264 int _mm_comieq_sd(__m128d
, __m128d
);
265 int _mm_comieq_ss(__m128
, __m128
);
266 int _mm_comige_sd(__m128d
, __m128d
);
267 int _mm_comige_ss(__m128
, __m128
);
268 int _mm_comigt_sd(__m128d
, __m128d
);
269 int _mm_comigt_ss(__m128
, __m128
);
270 int _mm_comile_sd(__m128d
, __m128d
);
271 int _mm_comile_ss(__m128
, __m128
);
272 int _mm_comilt_sd(__m128d
, __m128d
);
273 int _mm_comilt_ss(__m128
, __m128
);
274 int _mm_comineq_sd(__m128d
, __m128d
);
275 int _mm_comineq_ss(__m128
, __m128
);
276 unsigned int _mm_crc32_u16(unsigned int, unsigned short);
277 unsigned int _mm_crc32_u32(unsigned int, unsigned int);
278 unsigned int _mm_crc32_u8(unsigned int, unsigned char);
279 __m128
_mm_cvt_si2ss(__m128
, int);
280 int _mm_cvt_ss2si(__m128
);
281 __m128i
_mm_cvtepi16_epi32(__m128i
);
282 __m128i
_mm_cvtepi16_epi64(__m128i
);
283 __m128i
_mm_cvtepi32_epi64(__m128i
);
284 __m128d
_mm_cvtepi32_pd(__m128i
);
285 __m128
_mm_cvtepi32_ps(__m128i
);
286 __m128i
_mm_cvtepi8_epi16(__m128i
);
287 __m128i
_mm_cvtepi8_epi32(__m128i
);
288 __m128i
_mm_cvtepi8_epi64(__m128i
);
289 __m128i
_mm_cvtepu16_epi32(__m128i
);
290 __m128i
_mm_cvtepu16_epi64(__m128i
);
291 __m128i
_mm_cvtepu32_epi64(__m128i
);
292 __m128i
_mm_cvtepu8_epi16(__m128i
);
293 __m128i
_mm_cvtepu8_epi32(__m128i
);
294 __m128i
_mm_cvtepu8_epi64(__m128i
);
295 __m128i
_mm_cvtpd_epi32(__m128d
);
296 __m128
_mm_cvtpd_ps(__m128d
);
297 __m128i
_mm_cvtps_epi32(__m128
);
298 __m128d
_mm_cvtps_pd(__m128
);
299 int _mm_cvtsd_si32(__m128d
);
300 __m128
_mm_cvtsd_ss(__m128
, __m128d
);
301 int _mm_cvtsi128_si32(__m128i
);
302 __m128d
_mm_cvtsi32_sd(__m128d
, int);
303 __m128i
_mm_cvtsi32_si128(int);
304 __m128d
_mm_cvtss_sd(__m128d
, __m128
);
305 int _mm_cvtt_ss2si(__m128
);
306 __m128i
_mm_cvttpd_epi32(__m128d
);
307 __m128i
_mm_cvttps_epi32(__m128
);
308 int _mm_cvttsd_si32(__m128d
);
309 __m128d
_mm_div_pd(__m128d
, __m128d
);
310 __m128
_mm_div_ps(__m128
, __m128
);
311 __m128d
_mm_div_sd(__m128d
, __m128d
);
312 __m128
_mm_div_ss(__m128
, __m128
);
313 __m128d
_mm_dp_pd(__m128d
, __m128d
, int);
314 __m128
_mm_dp_ps(__m128
, __m128
, int);
315 int _mm_extract_epi16(__m128i
, int);
316 int _mm_extract_epi32(__m128i
, int);
317 int _mm_extract_epi8(__m128i
, int);
318 int _mm_extract_ps(__m128
, int);
319 __m128i
_mm_extract_si64(__m128i
, __m128i
);
320 __m128i
_mm_extracti_si64(__m128i
, int, int);
321 unsigned int _mm_getcsr(void);
322 __m128i
_mm_hadd_epi16(__m128i
, __m128i
);
323 __m128i
_mm_hadd_epi32(__m128i
, __m128i
);
324 __m128d
_mm_hadd_pd(__m128d
, __m128d
);
325 __m64
_mm_hadd_pi16(__m64
, __m64
);
326 __m64
_mm_hadd_pi32(__m64
, __m64
);
327 __m128
_mm_hadd_ps(__m128
, __m128
);
328 __m128i
_mm_hadds_epi16(__m128i
, __m128i
);
329 __m64
_mm_hadds_pi16(__m64
, __m64
);
330 __m128i
_mm_hsub_epi16(__m128i
, __m128i
);
331 __m128i
_mm_hsub_epi32(__m128i
, __m128i
);
332 __m128d
_mm_hsub_pd(__m128d
, __m128d
);
333 __m64
_mm_hsub_pi16(__m64
, __m64
);
334 __m64
_mm_hsub_pi32(__m64
, __m64
);
335 __m128
_mm_hsub_ps(__m128
, __m128
);
336 __m128i
_mm_hsubs_epi16(__m128i
, __m128i
);
337 __m64
_mm_hsubs_pi16(__m64
, __m64
);
338 __m128i
_mm_insert_epi16(__m128i
, int, int);
339 __m128i
_mm_insert_epi32(__m128i
, int, int);
340 __m128i
_mm_insert_epi8(__m128i
, int, int);
341 __m128
_mm_insert_ps(__m128
, __m128
, int);
342 __m128i
_mm_insert_si64(__m128i
, __m128i
);
343 __m128i
_mm_inserti_si64(__m128i
, __m128i
, int, int);
344 __m128i
_mm_lddqu_si128(__m128i
const *);
345 __m128d
_mm_load1_pd(double const *);
346 __m128d
_mm_load_pd(double const *);
347 __m128
_mm_load_ps(float const *);
348 __m128
_mm_load_ps1(float const *);
349 __m128d
_mm_load_sd(double const *);
350 __m128i
_mm_load_si128(__m128i
const *);
351 __m128
_mm_load_ss(float const *);
352 __m128d
_mm_loaddup_pd(double const *);
353 __m128d
_mm_loadh_pd(__m128d
, double const *);
354 __m128
_mm_loadh_pi(__m128
, __m64
const *);
355 __m128i
_mm_loadl_epi64(__m128i
const *);
356 __m128d
_mm_loadl_pd(__m128d
, double const *);
357 __m128
_mm_loadl_pi(__m128
, __m64
const *);
358 __m128d
_mm_loadr_pd(double const *);
359 __m128
_mm_loadr_ps(float const *);
360 __m128d
_mm_loadu_pd(double const *);
361 __m128
_mm_loadu_ps(float const *);
362 __m128i
_mm_loadu_si128(__m128i
const *);
363 __m128i
_mm_madd_epi16(__m128i
, __m128i
);
364 __m128i
_mm_maddubs_epi16(__m128i
, __m128i
);
365 __m64
_mm_maddubs_pi16(__m64
, __m64
);
366 void _mm_maskmoveu_si128(__m128i
, __m128i
, _Out_writes_bytes_(16) char *);
367 __m128i
_mm_max_epi16(__m128i
, __m128i
);
368 __m128i
_mm_max_epi32(__m128i
, __m128i
);
369 __m128i
_mm_max_epi8(__m128i
, __m128i
);
370 __m128i
_mm_max_epu16(__m128i
, __m128i
);
371 __m128i
_mm_max_epu32(__m128i
, __m128i
);
372 __m128i
_mm_max_epu8(__m128i
, __m128i
);
373 __m128d
_mm_max_pd(__m128d
, __m128d
);
374 __m128
_mm_max_ps(__m128
, __m128
);
375 __m128d
_mm_max_sd(__m128d
, __m128d
);
376 __m128
_mm_max_ss(__m128
, __m128
);
377 __m128i
_mm_min_epi16(__m128i
, __m128i
);
378 __m128i
_mm_min_epi32(__m128i
, __m128i
);
379 __m128i
_mm_min_epi8(__m128i
, __m128i
);
380 __m128i
_mm_min_epu16(__m128i
, __m128i
);
381 __m128i
_mm_min_epu32(__m128i
, __m128i
);
382 __m128i
_mm_min_epu8(__m128i
, __m128i
);
383 __m128d
_mm_min_pd(__m128d
, __m128d
);
384 __m128
_mm_min_ps(__m128
, __m128
);
385 __m128d
_mm_min_sd(__m128d
, __m128d
);
386 __m128
_mm_min_ss(__m128
, __m128
);
387 __m128i
_mm_minpos_epu16(__m128i
);
388 void _mm_monitor(void const *, unsigned int, unsigned int);
389 __m128i
_mm_move_epi64(__m128i
);
390 __m128d
_mm_move_sd(__m128d
, __m128d
);
391 __m128
_mm_move_ss(__m128
, __m128
);
392 __m128d
_mm_movedup_pd(__m128d
);
393 __m128
_mm_movehdup_ps(__m128
);
394 __m128
_mm_movehl_ps(__m128
, __m128
);
395 __m128
_mm_moveldup_ps(__m128
);
396 __m128
_mm_movelh_ps(__m128
, __m128
);
397 int _mm_movemask_epi8(__m128i
);
398 int _mm_movemask_pd(__m128d
);
399 int _mm_movemask_ps(__m128
);
400 __m64
_mm_movepi64_pi64(__m128i
);
401 __m128i
_mm_movpi64_epi64(__m64
);
402 __m128i
_mm_mpsadbw_epu8(__m128i
, __m128i
, int);
403 __m128i
_mm_mul_epi32(__m128i
, __m128i
);
404 __m128i
_mm_mul_epu32(__m128i
, __m128i
);
405 __m128d
_mm_mul_pd(__m128d
, __m128d
);
406 __m128
_mm_mul_ps(__m128
, __m128
);
407 __m128d
_mm_mul_sd(__m128d
, __m128d
);
408 __m128
_mm_mul_ss(__m128
, __m128
);
409 __m128i
_mm_mulhi_epi16(__m128i
, __m128i
);
410 __m128i
_mm_mulhi_epu16(__m128i
, __m128i
);
411 __m128i
_mm_mulhrs_epi16(__m128i
, __m128i
);
412 __m64
_mm_mulhrs_pi16(__m64
, __m64
);
413 __m128i
_mm_mullo_epi16(__m128i
, __m128i
);
414 __m128i
_mm_mullo_epi32(__m128i
, __m128i
);
415 void _mm_mwait(unsigned int, unsigned int);
416 __m128d
_mm_or_pd(__m128d
, __m128d
);
417 __m128
_mm_or_ps(__m128
, __m128
);
418 __m128i
_mm_or_si128(__m128i
, __m128i
);
419 __m128i
_mm_packs_epi16(__m128i
, __m128i
);
420 __m128i
_mm_packs_epi32(__m128i
, __m128i
);
421 __m128i
_mm_packus_epi16(__m128i
, __m128i
);
422 __m128i
_mm_packus_epi32(__m128i
, __m128i
);
423 int _mm_popcnt_u32(unsigned int);
424 void _mm_prefetch(_In_
char const *, _In_
int);
425 __m128
_mm_rcp_ps(__m128
);
426 __m128
_mm_rcp_ss(__m128
);
427 __m128d
_mm_round_pd(__m128d
, int);
428 __m128
_mm_round_ps(__m128
, int);
429 __m128d
_mm_round_sd(__m128d
, __m128d
, int);
430 __m128
_mm_round_ss(__m128
, __m128
, int);
431 __m128
_mm_rsqrt_ps(__m128
);
432 __m128
_mm_rsqrt_ss(__m128
);
433 __m128i
_mm_sad_epu8(__m128i
, __m128i
);
434 __m128i
_mm_set1_epi16(short);
435 __m128i
_mm_set1_epi32(int);
436 __m128i
_mm_set1_epi8(char);
437 __m128d
_mm_set1_pd(double);
438 __m128i
_mm_set_epi16(short, short, short, short, short, short, short, short);
439 __m128i
_mm_set_epi32(int, int, int, int);
440 __m128i
_mm_set_epi8(char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char);
441 __m128d
_mm_set_pd(double, double);
442 __m128
_mm_set_ps(float, float, float, float);
443 __m128
_mm_set_ps1(float);
444 __m128d
_mm_set_sd(double);
445 __m128
_mm_set_ss(float);
446 void _mm_setcsr(unsigned int);
447 __m128i
_mm_setl_epi64(__m128i
);
448 __m128i
_mm_setr_epi16(short, short, short, short, short, short, short, short);
449 __m128i
_mm_setr_epi32(int, int, int, int);
450 __m128i
_mm_setr_epi8(char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char);
451 __m128d
_mm_setr_pd(double, double);
452 __m128
_mm_setr_ps(float, float, float, float);
453 __m128d
_mm_setzero_pd(void);
454 __m128
_mm_setzero_ps(void);
455 __m128i
_mm_setzero_si128(void);
456 __m128i
_mm_shuffle_epi32(__m128i
, int);
457 __m128i
_mm_shuffle_epi8(__m128i
, __m128i
);
458 __m128d
_mm_shuffle_pd(__m128d
, __m128d
, int);
459 __m64
_mm_shuffle_pi8(__m64
, __m64
);
460 __m128
_mm_shuffle_ps(__m128
, __m128
, unsigned int);
461 __m128i
_mm_shufflehi_epi16(__m128i
, int);
462 __m128i
_mm_shufflelo_epi16(__m128i
, int);
463 __m128i
_mm_sign_epi16(__m128i
, __m128i
);
464 __m128i
_mm_sign_epi32(__m128i
, __m128i
);
465 __m128i
_mm_sign_epi8(__m128i
, __m128i
);
466 __m64
_mm_sign_pi16(__m64
, __m64
);
467 __m64
_mm_sign_pi32(__m64
, __m64
);
468 __m64
_mm_sign_pi8(__m64
, __m64
);
469 __m128i
_mm_sll_epi16(__m128i
, __m128i
);
470 __m128i
_mm_sll_epi32(__m128i
, __m128i
);
471 __m128i
_mm_sll_epi64(__m128i
, __m128i
);
472 __m128i
_mm_slli_epi16(__m128i
, int);
473 __m128i
_mm_slli_epi32(__m128i
, int);
474 __m128i
_mm_slli_epi64(__m128i
, int);
475 __m128i
_mm_slli_si128(__m128i
, int);
476 __m128d
_mm_sqrt_pd(__m128d
);
477 __m128
_mm_sqrt_ps(__m128
);
478 __m128d
_mm_sqrt_sd(__m128d
, __m128d
);
479 __m128
_mm_sqrt_ss(__m128
);
480 __m128i
_mm_sra_epi16(__m128i
, __m128i
);
481 __m128i
_mm_sra_epi32(__m128i
, __m128i
);
482 __m128i
_mm_srai_epi16(__m128i
, int);
483 __m128i
_mm_srai_epi32(__m128i
, int);
484 __m128i
_mm_srl_epi16(__m128i
, __m128i
);
485 __m128i
_mm_srl_epi32(__m128i
, __m128i
);
486 __m128i
_mm_srl_epi64(__m128i
, __m128i
);
487 __m128i
_mm_srli_epi16(__m128i
, int);
488 __m128i
_mm_srli_epi32(__m128i
, int);
489 __m128i
_mm_srli_epi64(__m128i
, int);
490 __m128i
_mm_srli_si128(__m128i
, int);
491 void _mm_store1_pd(double *, __m128d
);
492 void _mm_store_pd(double *, __m128d
);
493 void _mm_store_ps(float *, __m128
);
494 void _mm_store_ps1(float *, __m128
);
495 void _mm_store_sd(double *, __m128d
);
496 void _mm_store_si128(__m128i
*, __m128i
);
497 void _mm_store_ss(float *, __m128
);
498 void _mm_storeh_pd(double *, __m128d
);
499 void _mm_storeh_pi(__m64
*, __m128
);
500 void _mm_storel_epi64(__m128i
*, __m128i
);
501 void _mm_storel_pd(double *, __m128d
);
502 void _mm_storel_pi(__m64
*, __m128
);
503 void _mm_storer_pd(double *, __m128d
);
504 void _mm_storer_ps(float *, __m128
);
505 void _mm_storeu_pd(double *, __m128d
);
506 void _mm_storeu_ps(float *, __m128
);
507 void _mm_storeu_si128(__m128i
*, __m128i
);
508 __m128i
_mm_stream_load_si128(__m128i
*);
509 void _mm_stream_pd(double *, __m128d
);
510 void _mm_stream_ps(float *, __m128
);
511 void _mm_stream_sd(double *, __m128d
);
512 void _mm_stream_si128(__m128i
*, __m128i
);
513 void _mm_stream_si32(int *, int);
514 void _mm_stream_ss(float *, __m128
);
515 __m128i
_mm_sub_epi16(__m128i
, __m128i
);
516 __m128i
_mm_sub_epi32(__m128i
, __m128i
);
517 __m128i
_mm_sub_epi64(__m128i
, __m128i
);
518 __m128i
_mm_sub_epi8(__m128i
, __m128i
);
519 __m128d
_mm_sub_pd(__m128d
, __m128d
);
520 __m128
_mm_sub_ps(__m128
, __m128
);
521 __m128d
_mm_sub_sd(__m128d
, __m128d
);
522 __m128
_mm_sub_ss(__m128
, __m128
);
523 __m128i
_mm_subs_epi16(__m128i
, __m128i
);
524 __m128i
_mm_subs_epi8(__m128i
, __m128i
);
525 __m128i
_mm_subs_epu16(__m128i
, __m128i
);
526 __m128i
_mm_subs_epu8(__m128i
, __m128i
);
527 int _mm_testc_si128(__m128i
, __m128i
);
528 int _mm_testnzc_si128(__m128i
, __m128i
);
529 int _mm_testz_si128(__m128i
, __m128i
);
530 int _mm_ucomieq_sd(__m128d
, __m128d
);
531 int _mm_ucomieq_ss(__m128
, __m128
);
532 int _mm_ucomige_sd(__m128d
, __m128d
);
533 int _mm_ucomige_ss(__m128
, __m128
);
534 int _mm_ucomigt_sd(__m128d
, __m128d
);
535 int _mm_ucomigt_ss(__m128
, __m128
);
536 int _mm_ucomile_sd(__m128d
, __m128d
);
537 int _mm_ucomile_ss(__m128
, __m128
);
538 int _mm_ucomilt_sd(__m128d
, __m128d
);
539 int _mm_ucomilt_ss(__m128
, __m128
);
540 int _mm_ucomineq_sd(__m128d
, __m128d
);
541 int _mm_ucomineq_ss(__m128
, __m128
);
542 __m128i
_mm_unpackhi_epi16(__m128i
, __m128i
);
543 __m128i
_mm_unpackhi_epi32(__m128i
, __m128i
);
544 __m128i
_mm_unpackhi_epi64(__m128i
, __m128i
);
545 __m128i
_mm_unpackhi_epi8(__m128i
, __m128i
);
546 __m128d
_mm_unpackhi_pd(__m128d
, __m128d
);
547 __m128
_mm_unpackhi_ps(__m128
, __m128
);
548 __m128i
_mm_unpacklo_epi16(__m128i
, __m128i
);
549 __m128i
_mm_unpacklo_epi32(__m128i
, __m128i
);
550 __m128i
_mm_unpacklo_epi64(__m128i
, __m128i
);
551 __m128i
_mm_unpacklo_epi8(__m128i
, __m128i
);
552 __m128d
_mm_unpacklo_pd(__m128d
, __m128d
);
553 __m128
_mm_unpacklo_ps(__m128
, __m128
);
554 __m128d
_mm_xor_pd(__m128d
, __m128d
);
555 __m128
_mm_xor_ps(__m128
, __m128
);
556 __m128i
_mm_xor_si128(__m128i
, __m128i
);
559 int __cdecl
_outp(unsigned short, int);
560 unsigned long __cdecl
_outpd(unsigned short, unsigned long);
561 unsigned short __cdecl
_outpw(unsigned short, unsigned short);
562 int __cdecl
inp(unsigned short);
563 unsigned long __cdecl
inpd(unsigned short);
564 unsigned short __cdecl
inpw(unsigned short);
565 int __cdecl
outp(unsigned short, int);
566 unsigned long __cdecl
outpd(unsigned short, unsigned long);
567 unsigned short __cdecl
outpw(unsigned short, unsigned short);
569 #endif /* _M_IX86 || _M_X64 */
573 long _InterlockedAddLargeStatistic(_Interlocked_operand_ __int64
volatile * _Addend
, long _Value
);
574 void __addfsbyte(unsigned long, unsigned char);
575 void __addfsdword(unsigned long, unsigned long);
576 void __addfsword(unsigned long, unsigned short);
577 void __incfsbyte(unsigned long);
578 void __incfsdword(unsigned long);
579 void __incfsword(unsigned long);
580 unsigned long __readcr0(void);
581 unsigned long __readcr2(void);
582 unsigned long __readcr3(void);
583 unsigned long __readcr4(void);
584 unsigned long __readcr8(void);
585 unsigned int __readdr(unsigned int);
586 unsigned int __readeflags(void);
587 unsigned char __readfsbyte(unsigned long);
588 unsigned long __readfsdword(unsigned long);
589 unsigned short __readfsword(unsigned long);
590 void __writecr0(unsigned int);
591 void __writecr3(unsigned int);
592 void __writecr4(unsigned int);
593 void __writecr8(unsigned int);
594 void __writedr(unsigned int, unsigned int);
595 void __writeeflags(unsigned int);
596 void __writefsbyte(unsigned long, unsigned char);
597 void __writefsdword(unsigned long, unsigned long);
598 void __writefsword(unsigned long, unsigned short);
603 __m64
_m_from_float(float);
604 __m64
_m_from_int(int);
605 void _m_maskmovq(__m64
, __m64
, _Out_writes_bytes_(8) char *);
606 __m64
_m_packssdw(__m64
, __m64
);
607 __m64
_m_packsswb(__m64
, __m64
);
608 __m64
_m_packuswb(__m64
, __m64
);
609 __m64
_m_paddb(__m64
, __m64
);
610 __m64
_m_paddd(__m64
, __m64
);
611 __m64
_m_paddsb(__m64
, __m64
);
612 __m64
_m_paddsw(__m64
, __m64
);
613 __m64
_m_paddusb(__m64
, __m64
);
614 __m64
_m_paddusw(__m64
, __m64
);
615 __m64
_m_paddw(__m64
, __m64
);
616 __m64
_m_pand(__m64
, __m64
);
617 __m64
_m_pandn(__m64
, __m64
);
618 __m64
_m_pavgb(__m64
, __m64
);
619 __m64
_m_pavgusb(__m64
, __m64
);
620 __m64
_m_pavgw(__m64
, __m64
);
621 __m64
_m_pcmpeqb(__m64
, __m64
);
622 __m64
_m_pcmpeqd(__m64
, __m64
);
623 __m64
_m_pcmpeqw(__m64
, __m64
);
624 __m64
_m_pcmpgtb(__m64
, __m64
);
625 __m64
_m_pcmpgtd(__m64
, __m64
);
626 __m64
_m_pcmpgtw(__m64
, __m64
);
627 int _m_pextrw(__m64
, int);
628 __m64
_m_pf2id(__m64
);
629 __m64
_m_pf2iw(__m64
);
630 __m64
_m_pfacc(__m64
, __m64
);
631 __m64
_m_pfadd(__m64
, __m64
);
632 __m64
_m_pfcmpeq(__m64
, __m64
);
633 __m64
_m_pfcmpge(__m64
, __m64
);
634 __m64
_m_pfcmpgt(__m64
, __m64
);
635 __m64
_m_pfmax(__m64
, __m64
);
636 __m64
_m_pfmin(__m64
, __m64
);
637 __m64
_m_pfmul(__m64
, __m64
);
638 __m64
_m_pfnacc(__m64
, __m64
);
639 __m64
_m_pfpnacc(__m64
, __m64
);
640 __m64
_m_pfrcp(__m64
);
641 __m64
_m_pfrcpit1(__m64
, __m64
);
642 __m64
_m_pfrcpit2(__m64
, __m64
);
643 __m64
_m_pfrsqit1(__m64
, __m64
);
644 __m64
_m_pfrsqrt(__m64
);
645 __m64
_m_pfsub(__m64
, __m64
);
646 __m64
_m_pfsubr(__m64
, __m64
);
647 __m64
_m_pi2fd(__m64
);
648 __m64
_m_pi2fw(__m64
);
649 __m64
_m_pinsrw(__m64
, int, int);
650 __m64
_m_pmaddwd(__m64
, __m64
);
651 __m64
_m_pmaxsw(__m64
, __m64
);
652 __m64
_m_pmaxub(__m64
, __m64
);
653 __m64
_m_pminsw(__m64
, __m64
);
654 __m64
_m_pminub(__m64
, __m64
);
655 int _m_pmovmskb(__m64
);
656 __m64
_m_pmulhrw(__m64
, __m64
);
657 __m64
_m_pmulhuw(__m64
, __m64
);
658 __m64
_m_pmulhw(__m64
, __m64
);
659 __m64
_m_pmullw(__m64
, __m64
);
660 __m64
_m_por(__m64
, __m64
);
661 __m64
_m_psadbw(__m64
, __m64
);
662 __m64
_m_pshufw(__m64
, int);
663 __m64
_m_pslld(__m64
, __m64
);
664 __m64
_m_pslldi(__m64
, int);
665 __m64
_m_psllq(__m64
, __m64
);
666 __m64
_m_psllqi(__m64
, int);
667 __m64
_m_psllw(__m64
, __m64
);
668 __m64
_m_psllwi(__m64
, int);
669 __m64
_m_psrad(__m64
, __m64
);
670 __m64
_m_psradi(__m64
, int);
671 __m64
_m_psraw(__m64
, __m64
);
672 __m64
_m_psrawi(__m64
, int);
673 __m64
_m_psrld(__m64
, __m64
);
674 __m64
_m_psrldi(__m64
, int);
675 __m64
_m_psrlq(__m64
, __m64
);
676 __m64
_m_psrlqi(__m64
, int);
677 __m64
_m_psrlw(__m64
, __m64
);
678 __m64
_m_psrlwi(__m64
, int);
679 __m64
_m_psubb(__m64
, __m64
);
680 __m64
_m_psubd(__m64
, __m64
);
681 __m64
_m_psubsb(__m64
, __m64
);
682 __m64
_m_psubsw(__m64
, __m64
);
683 __m64
_m_psubusb(__m64
, __m64
);
684 __m64
_m_psubusw(__m64
, __m64
);
685 __m64
_m_psubw(__m64
, __m64
);
686 __m64
_m_pswapd(__m64
);
687 __m64
_m_punpckhbw(__m64
, __m64
);
688 __m64
_m_punpckhdq(__m64
, __m64
);
689 __m64
_m_punpckhwd(__m64
, __m64
);
690 __m64
_m_punpcklbw(__m64
, __m64
);
691 __m64
_m_punpckldq(__m64
, __m64
);
692 __m64
_m_punpcklwd(__m64
, __m64
);
693 __m64
_m_pxor(__m64
, __m64
);
694 float _m_to_float(__m64
);
695 int _m_to_int(__m64
);
696 __m64
_mm_add_si64(__m64
, __m64
);
697 __m128
_mm_cvt_pi2ps(__m128
, __m64
);
698 __m64
_mm_cvt_ps2pi(__m128
);
699 __m64
_mm_cvtpd_pi32(__m128d
);
700 __m128d
_mm_cvtpi32_pd(__m64
);
701 __m64
_mm_cvtt_ps2pi(__m128
);
702 __m64
_mm_cvttpd_pi32(__m128d
);
703 __m64
_mm_mul_su32(__m64
, __m64
);
704 __m128i
_mm_set1_epi64(__m64
);
705 __m64
_mm_set1_pi16(short);
706 __m64
_mm_set1_pi32(int);
707 __m64
_mm_set1_pi8(char);
708 __m128i
_mm_set_epi64(__m64
, __m64
);
709 __m64
_mm_set_pi16(short, short, short, short);
710 __m64
_mm_set_pi32(int, int);
711 __m64
_mm_set_pi8(char, char, char, char, char, char, char, char);
712 __m128i
_mm_setr_epi64(__m64
, __m64
);
713 __m64
_mm_setr_pi16(short, short, short, short);
714 __m64
_mm_setr_pi32(int, int);
715 __m64
_mm_setr_pi8(char, char, char, char, char, char, char, char);
716 __m64
_mm_setzero_si64(void);
717 void _mm_stream_pi(__m64
*, __m64
);
718 __m64
_mm_sub_si64(__m64
, __m64
);
725 unsigned char _BitScanForward64(unsigned long * _Index
, unsigned __int64 _Mask
);
726 unsigned char _BitScanReverse64(unsigned long * _Index
, unsigned __int64 _Mask
);
727 short _InterlockedAnd16_np(short volatile * _Value
, short _Mask
);
728 __int64
_InterlockedAnd64_np(__int64
volatile * _Value
, __int64 _Mask
);
729 char _InterlockedAnd8_np(char volatile * _Value
, char _Mask
);
730 long _InterlockedAnd_np(long volatile * _Value
, long _Mask
);
731 unsigned char _InterlockedCompareExchange128(_Interlocked_operand_ __int64
volatile * _Destination
, __int64 _ExchangeHigh
, __int64 _ExchangeLow
, __int64
* _ComparandResult
);
732 unsigned char _InterlockedCompareExchange128_np(__int64
volatile * _Destination
, __int64 _ExchangeHigh
, __int64 _ExchangeLow
, __int64
* _ComparandResult
);
733 short _InterlockedCompareExchange16_np(short volatile * _Destination
, short _Exchange
, short _Comparand
);
734 __int64
_InterlockedCompareExchange64_np(__int64
volatile * _Destination
, __int64 _Exchange
, __int64 _Comparand
);
735 void * _InterlockedCompareExchangePointer_np(void * volatile * _Destination
, void * _Exchange
, void * _Comparand
);
736 long _InterlockedCompareExchange_np(long volatile * _Destination
, long _Exchange
, long _Comparand
);
737 short _InterlockedOr16_np(short volatile * _Value
, short _Mask
);
738 __int64
_InterlockedOr64_np(__int64
volatile * _Value
, __int64 _Mask
);
739 char _InterlockedOr8_np(char volatile * _Value
, char _Mask
);
740 long _InterlockedOr_np(long volatile * _Value
, long _Mask
);
741 short _InterlockedXor16_np(short volatile * _Value
, short _Mask
);
742 __int64
_InterlockedXor64_np(__int64
volatile * _Value
, __int64 _Mask
);
743 char _InterlockedXor8_np(char volatile * _Value
, char _Mask
);
744 long _InterlockedXor_np(long volatile * _Value
, long _Mask
);
745 void __addgsbyte(unsigned long, unsigned char);
746 void __addgsdword(unsigned long, unsigned long);
747 void __addgsqword(unsigned long, unsigned __int64
);
748 void __addgsword(unsigned long, unsigned short);
749 void __faststorefence(void);
750 void __incgsbyte(unsigned long);
751 void __incgsdword(unsigned long);
752 void __incgsqword(unsigned long);
753 void __incgsword(unsigned long);
754 unsigned __int64
__lzcnt64(unsigned __int64
);
755 void __movsq(unsigned long long *, unsigned long long const *, size_t);
756 __int64
__mulh(__int64
, __int64
);
757 unsigned __int64
__popcnt64(unsigned __int64
);
758 unsigned __int64
__readcr0(void);
759 unsigned __int64
__readcr2(void);
760 unsigned __int64
__readcr3(void);
761 unsigned __int64
__readcr4(void);
762 unsigned __int64
__readcr8(void);
763 unsigned __int64
__readdr(unsigned int);
764 unsigned __int64
__readeflags(void);
765 unsigned char __readgsbyte(unsigned long);
766 unsigned long __readgsdword(unsigned long);
767 unsigned __int64
__readgsqword(unsigned long);
768 unsigned short __readgsword(unsigned long);
769 unsigned __int64
__shiftleft128(unsigned __int64 _LowPart
, unsigned __int64 _HighPart
, unsigned char _Shift
);
770 unsigned __int64
__shiftright128(unsigned __int64 _LowPart
, unsigned __int64 _HighPart
, unsigned char _Shift
);
771 void __stosq(unsigned __int64
*, unsigned __int64
, size_t);
772 unsigned __int64
__umulh(unsigned __int64
, unsigned __int64
);
773 unsigned char __vmx_on(unsigned __int64
*);
774 unsigned char __vmx_vmclear(unsigned __int64
*);
775 unsigned char __vmx_vmlaunch(void);
776 unsigned char __vmx_vmptrld(unsigned __int64
*);
777 unsigned char __vmx_vmread(size_t, size_t *);
778 unsigned char __vmx_vmresume(void);
779 unsigned char __vmx_vmwrite(size_t, size_t);
780 void __writecr0(unsigned __int64
);
781 void __writecr3(unsigned __int64
);
782 void __writecr4(unsigned __int64
);
783 void __writecr8(unsigned __int64
);
784 void __writedr(unsigned int, unsigned __int64
);
785 void __writeeflags(unsigned __int64
);
786 void __writegsbyte(unsigned long, unsigned char);
787 void __writegsdword(unsigned long, unsigned long);
788 void __writegsqword(unsigned long, unsigned __int64
);
789 void __writegsword(unsigned long, unsigned short);
790 unsigned char _bittest64(__int64
const *, __int64
);
791 unsigned char _bittestandcomplement64(__int64
*, __int64
);
792 unsigned char _bittestandreset64(__int64
*, __int64
);
793 unsigned char _bittestandset64(__int64
*, __int64
);
794 unsigned char _interlockedbittestandreset64(__int64
volatile *, __int64
);
795 unsigned char _interlockedbittestandset64(__int64
volatile *, __int64
);
796 unsigned __int64
_mm_crc32_u64(unsigned __int64
, unsigned __int64
);
798 __int64
_mm_cvtsd_si64(__m128d
);
799 __int64
_mm_cvtsd_si64x(__m128d
);
800 __int64
_mm_cvtsi128_si64(__m128i
);
801 __int64
_mm_cvtsi128_si64x(__m128i
);
802 __m128d
_mm_cvtsi64_sd(__m128d
, __int64
);
803 __m128i
_mm_cvtsi64_si128(__int64
);
804 __m128
_mm_cvtsi64_ss(__m128
, __int64
);
805 __m128d
_mm_cvtsi64x_sd(__m128d
, __int64
);
806 __m128i
_mm_cvtsi64x_si128(__int64
);
807 __m128
_mm_cvtsi64x_ss(__m128
, __int64
);
808 __int64
_mm_cvtss_si64(__m128
);
809 __int64
_mm_cvtss_si64x(__m128
);
810 __int64
_mm_cvttsd_si64(__m128d
);
811 __int64
_mm_cvttsd_si64x(__m128d
);
812 __int64
_mm_cvttss_si64(__m128
);
813 __int64
_mm_cvttss_si64x(__m128
);
814 __int64
_mm_extract_epi64(__m128i
, int);
815 __m128i
_mm_insert_epi64(__m128i
, __int64
, int);
816 __int64
_mm_popcnt_u64(unsigned __int64
);
817 __m128i
_mm_set1_epi64x(__int64
);
818 __m128i
_mm_set_epi64x(__int64
, __int64
);
819 void _mm_stream_si64x(__int64
*, __int64
);
820 __int64
_mul128(__int64 _Multiplier
, __int64 _Multiplicand
, __int64
* _HighProduct
);
821 unsigned __int64
_umul128(unsigned __int64 _Multiplier
, unsigned __int64 _Multiplicand
, unsigned __int64
* _HighProduct
);
825 #if defined(_M_ARM) || defined(_M_X64)
827 __int64
_InterlockedAnd64(_Interlocked_operand_ __int64
volatile * _Value
, __int64 _Mask
);
828 __int64
_InterlockedDecrement64(_Interlocked_operand_ __int64
volatile * _Addend
);
829 __int64
_InterlockedExchange64(_Interlocked_operand_ __int64
volatile * _Target
, __int64 _Value
);
830 __int64
_InterlockedExchangeAdd64(_Interlocked_operand_ __int64
volatile * _Addend
, __int64 _Value
);
831 __int64
_InterlockedIncrement64(_Interlocked_operand_ __int64
volatile * _Addend
);
832 __int64
_InterlockedOr64(_Interlocked_operand_ __int64
volatile * _Value
, __int64 _Mask
);
833 __int64
_InterlockedXor64(_Interlocked_operand_ __int64
volatile * _Value
, __int64 _Mask
);
835 #endif /* _M_ARM || _M_X64 */
839 int _AddSatInt(int, int);
840 double _CopyDoubleFromInt64(__int64
);
841 float _CopyFloatFromInt32(__int32
);
842 __int32
_CopyInt32FromFloat(float);
843 __int64
_CopyInt64FromDouble(double);
844 unsigned int _CountLeadingOnes(unsigned long);
845 unsigned int _CountLeadingOnes64(unsigned __int64
);
846 unsigned int _CountLeadingSigns(long);
847 unsigned int _CountLeadingSigns64(__int64
);
848 unsigned int _CountLeadingZeros(unsigned long);
849 unsigned int _CountLeadingZeros64(unsigned __int64
);
850 unsigned int _CountOneBits(unsigned long);
851 unsigned int _CountOneBits64(unsigned __int64
);
852 int _DAddSatInt(int, int);
853 int _DSubSatInt(int, int);
854 long _InterlockedAdd(_Interlocked_operand_
long volatile * _Addend
, long _Value
);
855 __int64
_InterlockedAdd64(_Interlocked_operand_ __int64
volatile * _Addend
, __int64 _Value
);
856 __int64
_InterlockedAdd64_acq(__int64
volatile * _Addend
, __int64 _Value
);
857 __int64
_InterlockedAdd64_nf(__int64
volatile * _Addend
, __int64 _Value
);
858 __int64
_InterlockedAdd64_rel(__int64
volatile * _Addend
, __int64 _Value
);
859 long _InterlockedAdd_acq(long volatile * _Addend
, long _Value
);
860 long _InterlockedAdd_nf(long volatile * _Addend
, long _Value
);
861 long _InterlockedAdd_rel(long volatile * _Addend
, long _Value
);
862 short _InterlockedAnd16_acq(short volatile * _Value
, short _Mask
);
863 short _InterlockedAnd16_nf(short volatile * _Value
, short _Mask
);
864 short _InterlockedAnd16_rel(short volatile * _Value
, short _Mask
);
865 __int64
_InterlockedAnd64_acq(__int64
volatile * _Value
, __int64 _Mask
);
866 __int64
_InterlockedAnd64_nf(__int64
volatile * _Value
, __int64 _Mask
);
867 __int64
_InterlockedAnd64_rel(__int64
volatile * _Value
, __int64 _Mask
);
868 char _InterlockedAnd8_acq(char volatile * _Value
, char _Mask
);
869 char _InterlockedAnd8_nf(char volatile * _Value
, char _Mask
);
870 char _InterlockedAnd8_rel(char volatile * _Value
, char _Mask
);
871 long _InterlockedAnd_acq(long volatile * _Value
, long _Mask
);
872 long _InterlockedAnd_nf(long volatile * _Value
, long _Mask
);
873 long _InterlockedAnd_rel(long volatile * _Value
, long _Mask
);
874 short _InterlockedCompareExchange16_acq(short volatile * _Destination
, short _Exchange
, short _Comparand
);
875 short _InterlockedCompareExchange16_nf(short volatile * _Destination
, short _Exchange
, short _Comparand
);
876 short _InterlockedCompareExchange16_rel(short volatile * _Destination
, short _Exchange
, short _Comparand
);
877 __int64
_InterlockedCompareExchange64_acq(__int64
volatile * _Destination
, __int64 _Exchange
, __int64 _Comparand
);
878 __int64
_InterlockedCompareExchange64_nf(__int64
volatile * _Destination
, __int64 _Exchange
, __int64 _Comparand
);
879 __int64
_InterlockedCompareExchange64_rel(__int64
volatile * _Destination
, __int64 _Exchange
, __int64 _Comparand
);
880 char _InterlockedCompareExchange8_acq(char volatile * _Destination
, char _Exchange
, char _Comparand
);
881 char _InterlockedCompareExchange8_nf(char volatile * _Destination
, char _Exchange
, char _Comparand
);
882 char _InterlockedCompareExchange8_rel(char volatile * _Destination
, char _Exchange
, char _Comparand
);
883 void * _InterlockedCompareExchangePointer_acq(void * volatile * _Destination
, void * _Exchange
, void * _Comparand
);
884 void * _InterlockedCompareExchangePointer_nf(void * volatile * _Destination
, void * _Exchange
, void * _Comparand
);
885 void * _InterlockedCompareExchangePointer_rel(void * volatile * _Destination
, void * _Exchange
, void * _Comparand
);
886 long _InterlockedCompareExchange_acq(long volatile * _Destination
, long _Exchange
, long _Comparand
);
887 long _InterlockedCompareExchange_nf(long volatile * _Destination
, long _Exchange
, long _Comparand
);
888 long _InterlockedCompareExchange_rel(long volatile * _Destination
, long _Exchange
, long _Comparand
);
889 short _InterlockedDecrement16_acq(short volatile * _Addend
);
890 short _InterlockedDecrement16_nf(short volatile * _Addend
);
891 short _InterlockedDecrement16_rel(short volatile * _Addend
);
892 __int64
_InterlockedDecrement64_acq(__int64
volatile * _Addend
);
893 __int64
_InterlockedDecrement64_nf(__int64
volatile * _Addend
);
894 __int64
_InterlockedDecrement64_rel(__int64
volatile * _Addend
);
895 long _InterlockedDecrement_acq(long volatile * _Addend
);
896 long _InterlockedDecrement_nf(long volatile * _Addend
);
897 long _InterlockedDecrement_rel(long volatile * _Addend
);
898 short _InterlockedExchange16_acq(short volatile * _Target
, short _Value
);
899 short _InterlockedExchange16_nf(short volatile * _Target
, short _Value
);
900 __int64
_InterlockedExchange64_acq(__int64
volatile * _Target
, __int64 _Value
);
901 __int64
_InterlockedExchange64_nf(__int64
volatile * _Target
, __int64 _Value
);
902 char _InterlockedExchange8_acq(char volatile * _Target
, char _Value
);
903 char _InterlockedExchange8_nf(char volatile * _Target
, char _Value
);
904 short _InterlockedExchangeAdd16_acq(short volatile * _Addend
, short _Value
);
905 short _InterlockedExchangeAdd16_nf(short volatile * _Addend
, short _Value
);
906 short _InterlockedExchangeAdd16_rel(short volatile * _Addend
, short _Value
);
907 __int64
_InterlockedExchangeAdd64_acq(__int64
volatile * _Addend
, __int64 _Value
);
908 __int64
_InterlockedExchangeAdd64_nf(__int64
volatile * _Addend
, __int64 _Value
);
909 __int64
_InterlockedExchangeAdd64_rel(__int64
volatile * _Addend
, __int64 _Value
);
910 char _InterlockedExchangeAdd8_acq(char volatile * _Addend
, char _Value
);
911 char _InterlockedExchangeAdd8_nf(char volatile * _Addend
, char _Value
);
912 char _InterlockedExchangeAdd8_rel(char volatile * _Addend
, char _Value
);
913 long _InterlockedExchangeAdd_acq(long volatile * _Addend
, long _Value
);
914 long _InterlockedExchangeAdd_nf(long volatile * _Addend
, long _Value
);
915 long _InterlockedExchangeAdd_rel(long volatile * _Addend
, long _Value
);
916 void * _InterlockedExchangePointer_acq(void * volatile * _Target
, void * _Value
);
917 void * _InterlockedExchangePointer_nf(void * volatile * _Target
, void * _Value
);
918 long _InterlockedExchange_acq(long volatile * _Target
, long _Value
);
919 long _InterlockedExchange_nf(long volatile * _Target
, long _Value
);
920 short _InterlockedIncrement16_acq(short volatile * _Addend
);
921 short _InterlockedIncrement16_nf(short volatile * _Addend
);
922 short _InterlockedIncrement16_rel(short volatile * _Addend
);
923 __int64
_InterlockedIncrement64_acq(__int64
volatile * _Addend
);
924 __int64
_InterlockedIncrement64_nf(__int64
volatile * _Addend
);
925 __int64
_InterlockedIncrement64_rel(__int64
volatile * _Addend
);
926 long _InterlockedIncrement_acq(long volatile * _Addend
);
927 long _InterlockedIncrement_nf(long volatile * _Addend
);
928 long _InterlockedIncrement_rel(long volatile * _Addend
);
929 short _InterlockedOr16_acq(short volatile * _Value
, short _Mask
);
930 short _InterlockedOr16_nf(short volatile * _Value
, short _Mask
);
931 short _InterlockedOr16_rel(short volatile * _Value
, short _Mask
);
932 __int64
_InterlockedOr64_acq(__int64
volatile * _Value
, __int64 _Mask
);
933 __int64
_InterlockedOr64_nf(__int64
volatile * _Value
, __int64 _Mask
);
934 __int64
_InterlockedOr64_rel(__int64
volatile * _Value
, __int64 _Mask
);
935 char _InterlockedOr8_acq(char volatile * _Value
, char _Mask
);
936 char _InterlockedOr8_nf(char volatile * _Value
, char _Mask
);
937 char _InterlockedOr8_rel(char volatile * _Value
, char _Mask
);
938 long _InterlockedOr_acq(long volatile * _Value
, long _Mask
);
939 long _InterlockedOr_nf(long volatile * _Value
, long _Mask
);
940 long _InterlockedOr_rel(long volatile * _Value
, long _Mask
);
941 short _InterlockedXor16_acq(short volatile * _Value
, short _Mask
);
942 short _InterlockedXor16_nf(short volatile * _Value
, short _Mask
);
943 short _InterlockedXor16_rel(short volatile * _Value
, short _Mask
);
944 __int64
_InterlockedXor64_acq(__int64
volatile * _Value
, __int64 _Mask
);
945 __int64
_InterlockedXor64_nf(__int64
volatile * _Value
, __int64 _Mask
);
946 __int64
_InterlockedXor64_rel(_Interlocked_operand_ __int64
volatile * _Value
, __int64 _Mask
);
947 char _InterlockedXor8_acq(char volatile * _Value
, char _Mask
);
948 char _InterlockedXor8_nf(char volatile * _Value
, char _Mask
);
949 char _InterlockedXor8_rel(char volatile * _Value
, char _Mask
);
950 long _InterlockedXor_acq(long volatile * _Value
, long _Mask
);
951 long _InterlockedXor_nf(long volatile * _Value
, long _Mask
);
952 long _InterlockedXor_rel(long volatile * _Value
, long _Mask
);
953 #if _MSC_FULL_VER >= 170040825
954 unsigned int _MoveFromCoprocessor(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int);
955 unsigned int _MoveFromCoprocessor2(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int);
957 int _MoveFromCoprocessor(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int);
958 int _MoveFromCoprocessor2(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int);
960 unsigned __int64
_MoveFromCoprocessor64(unsigned int, unsigned int, unsigned int);
961 void _MoveToCoprocessor(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int);
962 void _MoveToCoprocessor2(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int);
963 void _MoveToCoprocessor64(unsigned __int64
, unsigned int, unsigned int, unsigned int);
964 long _MulHigh(long, long);
965 unsigned long _MulUnsignedHigh(unsigned long, unsigned long);
966 int _ReadStatusReg(int);
967 int _SubSatInt(int, int);
968 void _WriteStatusReg(int, int, int);
969 void __emit(unsigned __int32
);
970 __int64
__ldrexd(__int64
volatile *);
971 void __cdecl
__prefetch(const void *);
972 unsigned __int64
__rdpmccntr64(void);
974 void __static_assert(int, const char *);
975 unsigned int __swi(unsigned int, ...);
976 unsigned int __hvc(unsigned int, ...);
977 int __trap(int, ...);
978 __int16
__iso_volatile_load16(const volatile __int16
*);
979 __int32
__iso_volatile_load32(const volatile __int32
*);
980 __int64
__iso_volatile_load64(const volatile __int64
*);
981 __int8
__iso_volatile_load8(const volatile __int8
*);
982 void __iso_volatile_store16(volatile __int16
*, __int16
);
983 void __iso_volatile_store32(volatile __int32
*, __int32
);
984 void __iso_volatile_store64(volatile __int64
*, __int64
);
985 void __iso_volatile_store8(volatile __int8
*, __int8
);
989 unsigned char _interlockedbittestandreset_acq(long volatile *, long);
990 unsigned char _interlockedbittestandreset_nf(long volatile *, long);
991 unsigned char _interlockedbittestandreset_rel(long volatile *, long);
992 unsigned char _interlockedbittestandset_acq(long volatile *, long);
993 unsigned char _interlockedbittestandset_nf(long volatile *, long);
994 unsigned char _interlockedbittestandset_rel(long volatile *, long);
995 int _isunordered(double, double);
996 int _isunorderedf(float, float);
1000 #if defined(_M_CEE_PURE)
1002 long _InterlockedCompareExchange(_Interlocked_operand_
long volatile * _Destination
, long _Exchange
, long _Comparand
);
1003 long _InterlockedDecrement(_Interlocked_operand_
long volatile * _Addend
);
1004 long _InterlockedIncrement(_Interlocked_operand_
long volatile * _Addend
);
1006 #endif /* _M_CEE_PURE */
1008 #if defined(__cplusplus)
1010 #endif /* __cplusplus */
1013 #if defined(__GNUC__) && defined(_WIN32) // We can't use __MINGW32__ here
1014 # include "mingw32/intrin.h"
1015 #elif defined(_MSC_VER)
1016 # include "msc/intrin.h"
1018 # error Please implement intrinsics for your target compiler