1 /*===---- xsaveintrin.h - XSAVE intrinsic ----------------------------------===
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
7 *===-----------------------------------------------------------------------===
11 #error "Never use <xsaveintrin.h> directly; include <immintrin.h> instead."
14 #ifndef __XSAVEINTRIN_H
15 #define __XSAVEINTRIN_H
18 #define _XCR_XFEATURE_ENABLED_MASK 0
21 /* Define the default attributes for the functions in this file. */
22 #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("xsave")))
24 static __inline__
void __DEFAULT_FN_ATTRS
25 _xsave(void *__p
, unsigned long long __m
) {
26 __builtin_ia32_xsave(__p
, __m
);
29 static __inline__
void __DEFAULT_FN_ATTRS
30 _xrstor(void *__p
, unsigned long long __m
) {
31 __builtin_ia32_xrstor(__p
, __m
);
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))
41 unsigned __int64 __cdecl
_xgetbv(unsigned int);
42 void __cdecl
_xsetbv(unsigned int, unsigned __int64
);
49 static __inline__
void __DEFAULT_FN_ATTRS
50 _xsave64(void *__p
, unsigned long long __m
) {
51 __builtin_ia32_xsave64(__p
, __m
);
54 static __inline__
void __DEFAULT_FN_ATTRS
55 _xrstor64(void *__p
, unsigned long long __m
) {
56 __builtin_ia32_xrstor64(__p
, __m
);
61 #undef __DEFAULT_FN_ATTRS