clang 20.0.0git
cetintrin.h
Go to the documentation of this file.
1/*===---- cetintrin.h - CET 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 <cetintrin.h> directly; include <immintrin.h> instead."
12#endif
13
14#ifndef __CETINTRIN_H
15#define __CETINTRIN_H
16
17/* Define the default attributes for the functions in this file. */
18#define __DEFAULT_FN_ATTRS \
19 __attribute__((__always_inline__, __nodebug__, __target__("shstk")))
20
21static __inline__ void __DEFAULT_FN_ATTRS _incsspd(int __a) {
22 __builtin_ia32_incsspd((unsigned int)__a);
23}
24
25#ifdef __x86_64__
26static __inline__ void __DEFAULT_FN_ATTRS _incsspq(unsigned long long __a) {
27 __builtin_ia32_incsspq(__a);
28}
29#endif /* __x86_64__ */
30
31#ifdef __x86_64__
32static __inline__ void __DEFAULT_FN_ATTRS _inc_ssp(unsigned int __a) {
33 __builtin_ia32_incsspq(__a);
34}
35#else /* __x86_64__ */
36static __inline__ void __DEFAULT_FN_ATTRS _inc_ssp(unsigned int __a) {
37 __builtin_ia32_incsspd(__a);
38}
39#endif /* __x86_64__ */
40
41static __inline__ unsigned int __DEFAULT_FN_ATTRS _rdsspd(unsigned int __a) {
42 return __builtin_ia32_rdsspd(__a);
43}
44
45static __inline__ unsigned int __DEFAULT_FN_ATTRS _rdsspd_i32(void) {
46#pragma clang diagnostic push
47#pragma clang diagnostic ignored "-Wuninitialized"
48 unsigned int t;
49 return __builtin_ia32_rdsspd(t);
50#pragma clang diagnostic pop
51}
52
53#ifdef __x86_64__
54static __inline__ unsigned long long __DEFAULT_FN_ATTRS _rdsspq(unsigned long long __a) {
55 return __builtin_ia32_rdsspq(__a);
56}
57
58static __inline__ unsigned long long __DEFAULT_FN_ATTRS _rdsspq_i64(void) {
59#pragma clang diagnostic push
60#pragma clang diagnostic ignored "-Wuninitialized"
61 unsigned long long t;
62 return __builtin_ia32_rdsspq(t);
63#pragma clang diagnostic pop
64}
65#endif /* __x86_64__ */
66
67#ifdef __x86_64__
68static __inline__ unsigned long long __DEFAULT_FN_ATTRS _get_ssp(void) {
69 return __builtin_ia32_rdsspq(0);
70}
71#else /* __x86_64__ */
72static __inline__ unsigned int __DEFAULT_FN_ATTRS _get_ssp(void) {
73 return __builtin_ia32_rdsspd(0);
74}
75#endif /* __x86_64__ */
76
77static __inline__ void __DEFAULT_FN_ATTRS _saveprevssp(void) {
78 __builtin_ia32_saveprevssp();
79}
80
81static __inline__ void __DEFAULT_FN_ATTRS _rstorssp(void * __p) {
82 __builtin_ia32_rstorssp(__p);
83}
84
85static __inline__ void __DEFAULT_FN_ATTRS _wrssd(unsigned int __a, void * __p) {
86 __builtin_ia32_wrssd(__a, __p);
87}
88
89#ifdef __x86_64__
90static __inline__ void __DEFAULT_FN_ATTRS _wrssq(unsigned long long __a, void * __p) {
91 __builtin_ia32_wrssq(__a, __p);
92}
93#endif /* __x86_64__ */
94
95static __inline__ void __DEFAULT_FN_ATTRS _wrussd(unsigned int __a, void * __p) {
96 __builtin_ia32_wrussd(__a, __p);
97}
98
99#ifdef __x86_64__
100static __inline__ void __DEFAULT_FN_ATTRS _wrussq(unsigned long long __a, void * __p) {
101 __builtin_ia32_wrussq(__a, __p);
102}
103#endif /* __x86_64__ */
104
105static __inline__ void __DEFAULT_FN_ATTRS _setssbsy(void) {
106 __builtin_ia32_setssbsy();
107}
108
109static __inline__ void __DEFAULT_FN_ATTRS _clrssbsy(void * __p) {
110 __builtin_ia32_clrssbsy(__p);
111}
112
113#undef __DEFAULT_FN_ATTRS
114
115#endif /* __CETINTRIN_H */
static __inline__ uint32_t volatile uint32_t * __p
Definition: arm_acle.h:88
static __inline__ unsigned int __DEFAULT_FN_ATTRS _get_ssp(void)
Definition: cetintrin.h:72
static __inline__ void __DEFAULT_FN_ATTRS _wrussd(unsigned int __a, void *__p)
Definition: cetintrin.h:95
static __inline__ void __DEFAULT_FN_ATTRS _clrssbsy(void *__p)
Definition: cetintrin.h:109
static __inline__ void __DEFAULT_FN_ATTRS _inc_ssp(unsigned int __a)
Definition: cetintrin.h:36
#define __DEFAULT_FN_ATTRS
Definition: cetintrin.h:18
static __inline__ void __DEFAULT_FN_ATTRS _rstorssp(void *__p)
Definition: cetintrin.h:81
static __inline__ unsigned int __DEFAULT_FN_ATTRS _rdsspd_i32(void)
Definition: cetintrin.h:45
static __inline__ void __DEFAULT_FN_ATTRS _wrssd(unsigned int __a, void *__p)
Definition: cetintrin.h:85
static __inline__ unsigned int __DEFAULT_FN_ATTRS _rdsspd(unsigned int __a)
Definition: cetintrin.h:41
static __inline__ void __DEFAULT_FN_ATTRS _setssbsy(void)
Definition: cetintrin.h:105
static __inline__ void __DEFAULT_FN_ATTRS _saveprevssp(void)
Definition: cetintrin.h:77
static __inline__ void __DEFAULT_FN_ATTRS _incsspd(int __a)
Definition: cetintrin.h:21
static __inline__ void int __a
Definition: emmintrin.h:4064