Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
14 pmbaty 1
/*===---- fxsrintrin.h - FXSR 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 <fxsrintrin.h> directly; include <immintrin.h> instead."
12
#endif
13
 
14
#ifndef __FXSRINTRIN_H
15
#define __FXSRINTRIN_H
16
 
17
#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__,  __target__("fxsr")))
18
 
19
/// Saves the XMM, MMX, MXCSR and x87 FPU registers into a 512-byte
20
///    memory region pointed to by the input parameter \a __p.
21
///
22
/// \headerfile <x86intrin.h>
23
///
24
/// This intrinsic corresponds to the <c> FXSAVE </c> instruction.
25
///
26
/// \param __p
27
///    A pointer to a 512-byte memory region. The beginning of this memory
28
///    region should be aligned on a 16-byte boundary.
29
static __inline__ void __DEFAULT_FN_ATTRS
30
_fxsave(void *__p)
31
{
32
  __builtin_ia32_fxsave(__p);
33
}
34
 
35
/// Restores the XMM, MMX, MXCSR and x87 FPU registers from the 512-byte
36
///    memory region pointed to by the input parameter \a __p. The contents of
37
///    this memory region should have been written to by a previous \c _fxsave
38
///    or \c _fxsave64 intrinsic.
39
///
40
/// \headerfile <x86intrin.h>
41
///
42
/// This intrinsic corresponds to the <c> FXRSTOR </c> instruction.
43
///
44
/// \param __p
45
///    A pointer to a 512-byte memory region. The beginning of this memory
46
///    region should be aligned on a 16-byte boundary.
47
static __inline__ void __DEFAULT_FN_ATTRS
48
_fxrstor(void *__p)
49
{
50
  __builtin_ia32_fxrstor(__p);
51
}
52
 
53
#ifdef __x86_64__
54
/// Saves the XMM, MMX, MXCSR and x87 FPU registers into a 512-byte
55
///    memory region pointed to by the input parameter \a __p.
56
///
57
/// \headerfile <x86intrin.h>
58
///
59
/// This intrinsic corresponds to the <c> FXSAVE64 </c> instruction.
60
///
61
/// \param __p
62
///    A pointer to a 512-byte memory region. The beginning of this memory
63
///    region should be aligned on a 16-byte boundary.
64
static __inline__ void __DEFAULT_FN_ATTRS
65
_fxsave64(void *__p)
66
{
67
  __builtin_ia32_fxsave64(__p);
68
}
69
 
70
/// Restores the XMM, MMX, MXCSR and x87 FPU registers from the 512-byte
71
///    memory region pointed to by the input parameter \a __p. The contents of
72
///    this memory region should have been written to by a previous \c _fxsave
73
///    or \c _fxsave64 intrinsic.
74
///
75
/// \headerfile <x86intrin.h>
76
///
77
/// This intrinsic corresponds to the <c> FXRSTOR64 </c> instruction.
78
///
79
/// \param __p
80
///    A pointer to a 512-byte memory region. The beginning of this memory
81
///    region should be aligned on a 16-byte boundary.
82
static __inline__ void __DEFAULT_FN_ATTRS
83
_fxrstor64(void *__p)
84
{
85
  __builtin_ia32_fxrstor64(__p);
86
}
87
#endif
88
 
89
#undef __DEFAULT_FN_ATTRS
90
 
91
#endif