clang 20.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
24static __inline__ void __DEFAULT_FN_ATTRS
25_xsave(void *__p, unsigned long long __m) {
26 __builtin_ia32_xsave(__p, __m);
27}
28
29static __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
39extern "C" {
40#endif
41unsigned __int64 __cdecl _xgetbv(unsigned int);
42void __cdecl _xsetbv(unsigned int, unsigned __int64);
43#ifdef __cplusplus
44}
45#endif
46#endif /* _MSC_VER */
47
48#ifdef __x86_64__
49static __inline__ void __DEFAULT_FN_ATTRS
50_xsave64(void *__p, unsigned long long __m) {
51 __builtin_ia32_xsave64(__p, __m);
52}
53
54static __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__ uint32_t volatile uint32_t * __p
Definition: arm_acle.h:88
static __inline__ void __DEFAULT_FN_ATTRS _xrstor(void *__p, unsigned long long __m)
Definition: xsaveintrin.h:30
#define _xsetbv(A, B)
Definition: xsaveintrin.h:36
#define __DEFAULT_FN_ATTRS
Definition: xsaveintrin.h:22
#define _xgetbv(A)
Definition: xsaveintrin.h:35
static __inline__ void __DEFAULT_FN_ATTRS _xsave(void *__p, unsigned long long __m)
Definition: xsaveintrin.h:25