STLdoc
STLdocumentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
nmmintrin.h
Go to the documentation of this file.
1 /***
2 *** Copyright (C) 1985-2015 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  * nmmintrin.h
13  *
14  * Principal header file for Intel(R) Core(TM) 2 Duo processor
15  * SSE4.2 intrinsics.
16  */
17 
18 #pragma once
19 
20 #if !defined(_M_IX86) && !defined(_M_X64)
21 #error This header is specific to X86 and X64 targets
22 #endif
23 
24 #ifndef _INCLUDED_NMM
25 #define _INCLUDED_NMM
26 #ifndef __midl
27 
28 #if defined (_M_CEE_PURE)
29  #error ERROR: EMM intrinsics not supported in the pure mode!
30 #else /* defined (_M_CEE_PURE) */
31 
32 #include <smmintrin.h>
33 
34 
35 #if __cplusplus
36 extern "C" {
37 #endif /* __cplusplus */
38 
39 /*
40  * These defines are used to determine the kind of units to be compared
41  */
42 #define _SIDD_UBYTE_OPS 0x00
43 #define _SIDD_UWORD_OPS 0x01
44 #define _SIDD_SBYTE_OPS 0x02
45 #define _SIDD_SWORD_OPS 0x03
46 
47 
48 /*
49  * These defines are used to determine the comparison operation
50  */
51 #define _SIDD_CMP_EQUAL_ANY 0x00
52 #define _SIDD_CMP_RANGES 0x04
53 #define _SIDD_CMP_EQUAL_EACH 0x08
54 #define _SIDD_CMP_EQUAL_ORDERED 0x0C
55 
56 
57 /*
58  * These defines are used to determine the polarity
59  */
60 #define _SIDD_POSITIVE_POLARITY 0x00
61 #define _SIDD_NEGATIVE_POLARITY 0x10
62 #define _SIDD_MASKED_POSITIVE_POLARITY 0x20
63 #define _SIDD_MASKED_NEGATIVE_POLARITY 0x30
64 
65 
66 /*
67  * These defines are used in _mm_cmpXstri()
68  */
69 #define _SIDD_LEAST_SIGNIFICANT 0x00
70 #define _SIDD_MOST_SIGNIFICANT 0x40
71 
72 /*
73  * These defines are used _mm_cmpXstrm()
74  */
75 #define _SIDD_BIT_MASK 0x00
76 #define _SIDD_UNIT_MASK 0x40
77 
78 
79 /*
80  * Intrinsics for text/string processing.
81  */
82 
83  extern __m128i _mm_cmpistrm (__m128i /* a */, __m128i /* b */, const int /* mode */);
84  extern int _mm_cmpistri (__m128i /* a */, __m128i /* b */, const int /* mode */);
85 
86  extern __m128i _mm_cmpestrm (__m128i /* a */, int /* la */, __m128i /* b */, int /* lb */, const int /* mode */);
87  extern int _mm_cmpestri (__m128i /* a */, int /* la */, __m128i /* b */, int /* lb */, const int /* mode */);
88 
89 /*
90  * Intrinsics for text/string processing and reading values of EFlags.
91  */
92 
93  extern int _mm_cmpistrz (__m128i /* a */, __m128i /* b */, const int /* mode */);
94  extern int _mm_cmpistrc (__m128i /* a */, __m128i /* b */, const int /* mode */);
95  extern int _mm_cmpistrs (__m128i /* a */, __m128i /* b */, const int /* mode */);
96  extern int _mm_cmpistro (__m128i /* a */, __m128i /* b */, const int /* mode */);
97  extern int _mm_cmpistra (__m128i /* a */, __m128i /* b */, const int /* mode */);
98 
99  extern int _mm_cmpestrz (__m128i /* a */, int /* la */, __m128i /* b */, int /* lb */, const int /* mode */);
100  extern int _mm_cmpestrc (__m128i /* a */, int /* la */, __m128i /* b */, int /* lb */, const int /* mode */);
101  extern int _mm_cmpestrs (__m128i /* a */, int /* la */, __m128i /* b */, int /* lb */, const int /* mode */);
102  extern int _mm_cmpestro (__m128i /* a */, int /* la */, __m128i /* b */, int /* lb */, const int /* mode */);
103  extern int _mm_cmpestra (__m128i /* a */, int /* la */, __m128i /* b */, int /* lb */, const int /* mode */);
104 
105 /*
106  * Packed integer 64-bit comparison, zeroing or filling with ones
107  * corresponding parts of result
108  */
109 
110  extern __m128i _mm_cmpgt_epi64(__m128i /* val1 */, __m128i /* val2 */);
111 
112 /*
113  * Calculate a number of bits set to 1
114  */
115 
116  extern int _mm_popcnt_u32(unsigned int /* v */);
117 
118 #if defined (_M_X64)
119  extern __int64 _mm_popcnt_u64(unsigned __int64 /* v */);
120 #endif /* defined (_M_X64) */
121 
122 /*
123  * Accumulate CRC32 (polynomial 0x11EDC6F41) value
124  */
125 
126  extern unsigned int _mm_crc32_u8 (unsigned int /* crc */, unsigned char /* v */);
127  extern unsigned int _mm_crc32_u16(unsigned int /* crc */, unsigned short /* v */);
128  extern unsigned int _mm_crc32_u32(unsigned int /* crc */, unsigned int /* v */);
129 
130 #if defined (_M_X64)
131  extern unsigned __int64 _mm_crc32_u64(unsigned __int64 /* crc */, unsigned __int64 /* v */);
132 #endif /* defined (_M_X64) */
133 
134 #if defined __cplusplus
135 }; /* End "C" */
136 #endif /* defined __cplusplus */
137 
138 #endif /* defined (_M_CEE_PURE) */
139 #endif /* __midl */
140 #endif /* _INCLUDED_NMM */
int _mm_cmpestrc(__m128i, int, __m128i, int, const int)
int _mm_cmpestrz(__m128i, int, __m128i, int, const int)
int _mm_cmpestrs(__m128i, int, __m128i, int, const int)
unsigned int _mm_crc32_u32(unsigned int, unsigned int)
int _mm_popcnt_u32(unsigned int)
int _mm_cmpistrs(__m128i, __m128i, const int)
int _mm_cmpestri(__m128i, int, __m128i, int, const int)
int _mm_cmpistro(__m128i, __m128i, const int)
unsigned int _mm_crc32_u16(unsigned int, unsigned short)
int _mm_cmpistra(__m128i, __m128i, const int)
int _mm_cmpistrc(__m128i, __m128i, const int)
__m128i _mm_cmpistrm(__m128i, __m128i, const int)
__m128i _mm_cmpestrm(__m128i, int, __m128i, int, const int)
__m128i
Definition: emmintrin.h:53
int _mm_cmpistri(__m128i, __m128i, const int)
int _mm_cmpestro(__m128i, int, __m128i, int, const int)
int _mm_cmpistrz(__m128i, __m128i, const int)
unsigned int _mm_crc32_u8(unsigned int, unsigned char)
__m128i _mm_cmpgt_epi64(__m128i, __m128i)
int _mm_cmpestra(__m128i, int, __m128i, int, const int)