187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar/*===---- xsaveintrin.h - XSAVE intrinsic ------------------------------------===
287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar *
387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar * Permission is hereby granted, free of charge, to any person obtaining a copy
487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar * of this software and associated documentation files (the "Software"), to deal
587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar * in the Software without restriction, including without limitation the rights
687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar * copies of the Software, and to permit persons to whom the Software is
887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar * furnished to do so, subject to the following conditions:
987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar *
1087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar * The above copyright notice and this permission notice shall be included in
1187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar * all copies or substantial portions of the Software.
1287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar *
1387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
1987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar * THE SOFTWARE.
2087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar *
2187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar *===-----------------------------------------------------------------------===
2287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar */
2387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
2487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#ifndef __IMMINTRIN_H
2587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#error "Never use <xsaveintrin.h> directly; include <immintrin.h> instead."
2687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#endif
2787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
2887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#ifndef __XSAVEINTRIN_H
2987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#define __XSAVEINTRIN_H
3087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
3187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar/* Define the default attributes for the functions in this file. */
3287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__,  __target__("xsave")))
3387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
3487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarstatic __inline__ void __DEFAULT_FN_ATTRS
3587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar_xsave(void *__p, unsigned long long __m) {
3687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  return __builtin_ia32_xsave(__p, __m);
3787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar}
3887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
3987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarstatic __inline__ void __DEFAULT_FN_ATTRS
4087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar_xrstor(void *__p, unsigned long long __m) {
4187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  return __builtin_ia32_xrstor(__p, __m);
4287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar}
4387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
4487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#ifdef __x86_64__
4587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarstatic __inline__ void __DEFAULT_FN_ATTRS
4687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar_xsave64(void *__p, unsigned long long __m) {
4787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  return __builtin_ia32_xsave64(__p, __m);
4887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar}
4987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
5087d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarstatic __inline__ void __DEFAULT_FN_ATTRS
5187d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar_xrstor64(void *__p, unsigned long long __m) {
5287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar  return __builtin_ia32_xrstor64(__p, __m);
5387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar}
5487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#endif
5587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
5687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#undef __DEFAULT_FN_ATTRS
5787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar
5887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar#endif
59