Warning: This file is not a C or C++ file. It does not have highlighting.
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 |
64 |
Warning: This file is not a C or C++ file. It does not have highlighting.