root / lab4 / .minix-src / include / clang-3.6 / adxintrin.h @ 13
History | View | Annotate | Download (3.1 KB)
1 |
/*===---- adxintrin.h - ADX intrinsics -------------------------------------===
|
---|---|
2 |
*
|
3 |
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
4 |
* of this software and associated documentation files (the "Software"), to deal
|
5 |
* in the Software without restriction, including without limitation the rights
|
6 |
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7 |
* copies of the Software, and to permit persons to whom the Software is
|
8 |
* furnished to do so, subject to the following conditions:
|
9 |
*
|
10 |
* The above copyright notice and this permission notice shall be included in
|
11 |
* all copies or substantial portions of the Software.
|
12 |
*
|
13 |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14 |
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15 |
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16 |
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17 |
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18 |
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19 |
* THE SOFTWARE.
|
20 |
*
|
21 |
*===-----------------------------------------------------------------------===
|
22 |
*/
|
23 |
|
24 |
#ifndef __IMMINTRIN_H
|
25 |
#error "Never use <adxintrin.h> directly; include <immintrin.h> instead." |
26 |
#endif
|
27 |
|
28 |
#ifndef __ADXINTRIN_H
|
29 |
#define __ADXINTRIN_H
|
30 |
|
31 |
/* Intrinsics that are available only if __ADX__ defined */
|
32 |
#ifdef __ADX__
|
33 |
static __inline unsigned char __attribute__((__always_inline__, __nodebug__)) |
34 |
_addcarryx_u32(unsigned char __cf, unsigned int __x, unsigned int __y, |
35 |
unsigned int *__p) |
36 |
{ |
37 |
return __builtin_ia32_addcarryx_u32(__cf, __x, __y, __p);
|
38 |
} |
39 |
|
40 |
#ifdef __x86_64__
|
41 |
static __inline unsigned char __attribute__((__always_inline__, __nodebug__)) |
42 |
_addcarryx_u64(unsigned char __cf, unsigned long long __x, |
43 |
unsigned long long __y, unsigned long long *__p) |
44 |
{ |
45 |
return __builtin_ia32_addcarryx_u64(__cf, __x, __y, __p);
|
46 |
} |
47 |
#endif
|
48 |
#endif
|
49 |
|
50 |
/* Intrinsics that are also available if __ADX__ undefined */
|
51 |
static __inline unsigned char __attribute__((__always_inline__, __nodebug__)) |
52 |
_addcarry_u32(unsigned char __cf, unsigned int __x, unsigned int __y, |
53 |
unsigned int *__p) |
54 |
{ |
55 |
return __builtin_ia32_addcarry_u32(__cf, __x, __y, __p);
|
56 |
} |
57 |
|
58 |
#ifdef __x86_64__
|
59 |
static __inline unsigned char __attribute__((__always_inline__, __nodebug__)) |
60 |
_addcarry_u64(unsigned char __cf, unsigned long long __x, |
61 |
unsigned long long __y, unsigned long long *__p) |
62 |
{ |
63 |
return __builtin_ia32_addcarry_u64(__cf, __x, __y, __p);
|
64 |
} |
65 |
#endif
|
66 |
|
67 |
static __inline unsigned char __attribute__((__always_inline__, __nodebug__)) |
68 |
_subborrow_u32(unsigned char __cf, unsigned int __x, unsigned int __y, |
69 |
unsigned int *__p) |
70 |
{ |
71 |
return __builtin_ia32_subborrow_u32(__cf, __x, __y, __p);
|
72 |
} |
73 |
|
74 |
#ifdef __x86_64__
|
75 |
static __inline unsigned char __attribute__((__always_inline__, __nodebug__)) |
76 |
_subborrow_u64(unsigned char __cf, unsigned long long __x, |
77 |
unsigned long long __y, unsigned long long *__p) |
78 |
{ |
79 |
return __builtin_ia32_subborrow_u64(__cf, __x, __y, __p);
|
80 |
} |
81 |
#endif
|
82 |
|
83 |
#endif /* __ADXINTRIN_H */ |