brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.3 KiB · a68df5b Raw
116 lines · c
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-exception6 *7 *===-----------------------------------------------------------------------===8 */9 10#ifndef __IMMINTRIN_H11#error "Never use <cetintrin.h> directly; include <immintrin.h> instead."12#endif13 14#ifndef __CETINTRIN_H15#define __CETINTRIN_H16 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 push47#pragma clang diagnostic ignored "-Wuninitialized"48  unsigned int t;49  return __builtin_ia32_rdsspd(t);50#pragma clang diagnostic pop51}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 push60#pragma clang diagnostic ignored "-Wuninitialized"61  unsigned long long t;62  return __builtin_ia32_rdsspq(t);63#pragma clang diagnostic pop64}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_ATTRS114 115#endif /* __CETINTRIN_H */116