clang  12.0.0git
xsaveintrin.h
Go to the documentation of this file.
1 /*===---- xsaveintrin.h - XSAVE intrinsic ----------------------------------===
2  *
3  * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4  * See https://llvm.org/LICENSE.txt for license information.
5  * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6  *
7  *===-----------------------------------------------------------------------===
8  */
9 
10 #ifndef __IMMINTRIN_H
11 #error "Never use <xsaveintrin.h> directly; include <immintrin.h> instead."
12 #endif
13 
14 #ifndef __XSAVEINTRIN_H
15 #define __XSAVEINTRIN_H
16 
17 #ifdef _MSC_VER
18 #define _XCR_XFEATURE_ENABLED_MASK 0
19 #endif
20 
21 /* Define the default attributes for the functions in this file. */
22 #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("xsave")))
23 
24 static __inline__ void __DEFAULT_FN_ATTRS
25 _xsave(void *__p, unsigned long long __m) {
26  __builtin_ia32_xsave(__p, __m);
27 }
28 
29 static __inline__ void __DEFAULT_FN_ATTRS
30 _xrstor(void *__p, unsigned long long __m) {
31  __builtin_ia32_xrstor(__p, __m);
32 }
33 
34 #ifndef _MSC_VER
35 #define _xgetbv(A) __builtin_ia32_xgetbv((long long)(A))
36 #define _xsetbv(A, B) __builtin_ia32_xsetbv((unsigned int)(A), (unsigned long long)(B))
37 #else
38 #ifdef __cplusplus
39 extern "C" {
40 #endif
41 unsigned __int64 __cdecl _xgetbv(unsigned int);
42 void __cdecl _xsetbv(unsigned int, unsigned __int64);
43 #ifdef __cplusplus
44 }
45 #endif
46 #endif /* _MSC_VER */
47 
48 #ifdef __x86_64__
49 static __inline__ void __DEFAULT_FN_ATTRS
50 _xsave64(void *__p, unsigned long long __m) {
51  __builtin_ia32_xsave64(__p, __m);
52 }
53 
54 static __inline__ void __DEFAULT_FN_ATTRS
55 _xrstor64(void *__p, unsigned long long __m) {
56  __builtin_ia32_xrstor64(__p, __m);
57 }
58 
59 #endif
60 
61 #undef __DEFAULT_FN_ATTRS
62 
63 #endif
static __inline__ void __DEFAULT_FN_ATTRS _xrstor(void *__p, unsigned long long __m)
Definition: xsaveintrin.h:30
static __inline unsigned char unsigned int unsigned int unsigned int * __p
Definition: adxintrin.h:24
#define _xgetbv(A)
Definition: xsaveintrin.h:35
#define _xsetbv(A, B)
Definition: xsaveintrin.h:36
static __inline__ void __DEFAULT_FN_ATTRS _xsave(void *__p, unsigned long long __m)
Definition: xsaveintrin.h:25
#define __DEFAULT_FN_ATTRS
Definition: xsaveintrin.h:22