From 33bb80bc7a6e67be90cf9b5e8d0f679e5e3acbaf Mon Sep 17 00:00:00 2001 From: Simon Pilgrim Date: Fri, 21 Aug 2020 10:02:37 +0100 Subject: [PATCH] [X86] ia32intrin.h - pull out common attributes into defines. NFCI. Matches what we do in most other x86 headers --- clang/lib/Headers/ia32intrin.h | 63 +++++++++++++++++++++++------------------- 1 file changed, 35 insertions(+), 28 deletions(-) diff --git a/clang/lib/Headers/ia32intrin.h b/clang/lib/Headers/ia32intrin.h index 79b7f06..b481251 100644 --- a/clang/lib/Headers/ia32intrin.h +++ b/clang/lib/Headers/ia32intrin.h @@ -14,6 +14,10 @@ #ifndef __IA32INTRIN_H #define __IA32INTRIN_H +/* Define the default attributes for the functions in this file. */ +#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__)) +#define __DEFAULT_FN_ATTRS_SSE42 __attribute__((__always_inline__, __nodebug__, __target__("sse4.2"))) + /** Find the first set bit starting from the lsb. Result is undefined if * input is 0. * @@ -26,7 +30,7 @@ * A 32-bit integer operand. * \returns A 32-bit integer containing the bit number. */ -static __inline__ int __attribute__((__always_inline__, __nodebug__)) +static __inline__ int __DEFAULT_FN_ATTRS __bsfd(int __A) { return __builtin_ctz(__A); } @@ -43,7 +47,7 @@ __bsfd(int __A) { * A 32-bit integer operand. * \returns A 32-bit integer containing the bit number. */ -static __inline__ int __attribute__((__always_inline__, __nodebug__)) +static __inline__ int __DEFAULT_FN_ATTRS __bsrd(int __A) { return 31 - __builtin_clz(__A); } @@ -59,12 +63,12 @@ __bsrd(int __A) { * A 32-bit integer operand. * \returns A 32-bit integer containing the swapped bytes. */ -static __inline__ int __attribute__((__always_inline__, __nodebug__)) +static __inline__ int __DEFAULT_FN_ATTRS __bswapd(int __A) { return __builtin_bswap32(__A); } -static __inline__ int __attribute__((__always_inline__, __nodebug__)) +static __inline__ int __DEFAULT_FN_ATTRS _bswap(int __A) { return __builtin_bswap32(__A); } @@ -85,7 +89,7 @@ _bswap(int __A) { * A 64-bit integer operand. * \returns A 32-bit integer containing the bit number. */ -static __inline__ int __attribute__((__always_inline__, __nodebug__)) +static __inline__ int __DEFAULT_FN_ATTRS __bsfq(long long __A) { return __builtin_ctzll(__A); } @@ -102,7 +106,7 @@ __bsfq(long long __A) { * A 64-bit integer operand. * \returns A 32-bit integer containing the bit number. */ -static __inline__ int __attribute__((__always_inline__, __nodebug__)) +static __inline__ int __DEFAULT_FN_ATTRS __bsrq(long long __A) { return 63 - __builtin_clzll(__A); } @@ -118,7 +122,7 @@ __bsrq(long long __A) { * A 64-bit integer operand. * \returns A 64-bit integer containing the swapped bytes. */ -static __inline__ long long __attribute__((__always_inline__, __nodebug__)) +static __inline__ long long __DEFAULT_FN_ATTRS __bswapq(long long __A) { return __builtin_bswap64(__A); } @@ -138,7 +142,7 @@ __bswapq(long long __A) { * \returns A 32-bit integer containing the number of bits with value 1 in the * source operand. */ -static __inline__ int __attribute__((__always_inline__, __nodebug__)) +static __inline__ int __DEFAULT_FN_ATTRS __popcntd(unsigned int __A) { return __builtin_popcount(__A); @@ -159,7 +163,7 @@ __popcntd(unsigned int __A) * \returns A 64-bit integer containing the number of bits with value 1 in the * source operand. */ -static __inline__ long long __attribute__((__always_inline__, __nodebug__)) +static __inline__ long long __DEFAULT_FN_ATTRS __popcntq(unsigned long long __A) { return __builtin_popcountll(__A); @@ -169,26 +173,26 @@ __popcntq(unsigned long long __A) #endif /* __x86_64__ */ #ifdef __x86_64__ -static __inline__ unsigned long long __attribute__((__always_inline__, __nodebug__)) +static __inline__ unsigned long long __DEFAULT_FN_ATTRS __readeflags(void) { return __builtin_ia32_readeflags_u64(); } -static __inline__ void __attribute__((__always_inline__, __nodebug__)) +static __inline__ void __DEFAULT_FN_ATTRS __writeeflags(unsigned long long __f) { __builtin_ia32_writeeflags_u64(__f); } #else /* !__x86_64__ */ -static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__)) +static __inline__ unsigned int __DEFAULT_FN_ATTRS __readeflags(void) { return __builtin_ia32_readeflags_u32(); } -static __inline__ void __attribute__((__always_inline__, __nodebug__)) +static __inline__ void __DEFAULT_FN_ATTRS __writeeflags(unsigned int __f) { __builtin_ia32_writeeflags_u32(__f); @@ -278,7 +282,7 @@ _castu64_f64(unsigned long long __A) { * \returns The result of adding operand \a __C to the CRC-32C checksum of * operand \a __D. */ -static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__, __target__("sse4.2"))) +static __inline__ unsigned int __DEFAULT_FN_ATTRS_SSE42 __crc32b(unsigned int __C, unsigned char __D) { return __builtin_ia32_crc32qi(__C, __D); @@ -299,7 +303,7 @@ __crc32b(unsigned int __C, unsigned char __D) * \returns The result of adding operand \a __C to the CRC-32C checksum of * operand \a __D. */ -static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__, __target__("sse4.2"))) +static __inline__ unsigned int __DEFAULT_FN_ATTRS_SSE42 __crc32w(unsigned int __C, unsigned short __D) { return __builtin_ia32_crc32hi(__C, __D); @@ -320,7 +324,7 @@ __crc32w(unsigned int __C, unsigned short __D) * \returns The result of adding operand \a __C to the CRC-32C checksum of * operand \a __D. */ -static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__, __target__("sse4.2"))) +static __inline__ unsigned int __DEFAULT_FN_ATTRS_SSE42 __crc32d(unsigned int __C, unsigned int __D) { return __builtin_ia32_crc32si(__C, __D); @@ -342,20 +346,20 @@ __crc32d(unsigned int __C, unsigned int __D) * \returns The result of adding operand \a __C to the CRC-32C checksum of * operand \a __D. */ -static __inline__ unsigned long long __attribute__((__always_inline__, __nodebug__, __target__("sse4.2"))) +static __inline__ unsigned long long __DEFAULT_FN_ATTRS_SSE42 __crc32q(unsigned long long __C, unsigned long long __D) { return __builtin_ia32_crc32di(__C, __D); } #endif /* __x86_64__ */ -static __inline__ unsigned long long __attribute__((__always_inline__, __nodebug__)) +static __inline__ unsigned long long __DEFAULT_FN_ATTRS __rdpmc(int __A) { return __builtin_ia32_rdpmc(__A); } /* __rdtscp */ -static __inline__ unsigned long long __attribute__((__always_inline__, __nodebug__)) +static __inline__ unsigned long long __DEFAULT_FN_ATTRS __rdtscp(unsigned int *__A) { return __builtin_ia32_rdtscp(__A); } @@ -364,48 +368,48 @@ __rdtscp(unsigned int *__A) { #define _rdpmc(A) __rdpmc(A) -static __inline__ void __attribute__((__always_inline__, __nodebug__)) +static __inline__ void __DEFAULT_FN_ATTRS _wbinvd(void) { __builtin_ia32_wbinvd(); } -static __inline__ unsigned char __attribute__((__always_inline__, __nodebug__)) +static __inline__ unsigned char __DEFAULT_FN_ATTRS __rolb(unsigned char __X, int __C) { return __builtin_rotateleft8(__X, __C); } -static __inline__ unsigned char __attribute__((__always_inline__, __nodebug__)) +static __inline__ unsigned char __DEFAULT_FN_ATTRS __rorb(unsigned char __X, int __C) { return __builtin_rotateright8(__X, __C); } -static __inline__ unsigned short __attribute__((__always_inline__, __nodebug__)) +static __inline__ unsigned short __DEFAULT_FN_ATTRS __rolw(unsigned short __X, int __C) { return __builtin_rotateleft16(__X, __C); } -static __inline__ unsigned short __attribute__((__always_inline__, __nodebug__)) +static __inline__ unsigned short __DEFAULT_FN_ATTRS __rorw(unsigned short __X, int __C) { return __builtin_rotateright16(__X, __C); } -static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__)) +static __inline__ unsigned int __DEFAULT_FN_ATTRS __rold(unsigned int __X, int __C) { return __builtin_rotateleft32(__X, __C); } -static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__)) +static __inline__ unsigned int __DEFAULT_FN_ATTRS __rord(unsigned int __X, int __C) { return __builtin_rotateright32(__X, __C); } #ifdef __x86_64__ -static __inline__ unsigned long long __attribute__((__always_inline__, __nodebug__)) +static __inline__ unsigned long long __DEFAULT_FN_ATTRS __rolq(unsigned long long __X, int __C) { return __builtin_rotateleft64(__X, __C); } -static __inline__ unsigned long long __attribute__((__always_inline__, __nodebug__)) +static __inline__ unsigned long long __DEFAULT_FN_ATTRS __rorq(unsigned long long __X, int __C) { return __builtin_rotateright64(__X, __C); } @@ -429,4 +433,7 @@ __rorq(unsigned long long __X, int __C) { #define _rotwl(a,b) __rolw((a), (b)) #define _rotwr(a,b) __rorw((a), (b)) +#undef __DEFAULT_FN_ATTRS +#undef __DEFAULT_FN_ATTRS_SSE42 + #endif /* __IA32INTRIN_H */ -- 2.7.4