Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Blame | Last modification | View Log | Download | RSS feed

  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.