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