diff options
author | H.J. Lu <hongjiu.lu@intel.com> | 2015-07-03 12:25:10 +0000 |
---|---|---|
committer | H.J. Lu <hjl@gcc.gnu.org> | 2015-07-03 05:25:10 -0700 |
commit | 2fd98c0acf6ab7725349d26a342003b1bd07e8a0 (patch) | |
tree | 147a61707a10286355e9bdd23ff95d246142337c /gcc | |
parent | 07cdc2b892ca3969fd5d8c6a281cf77f559cea43 (diff) | |
download | gcc-2fd98c0acf6ab7725349d26a342003b1bd07e8a0.zip gcc-2fd98c0acf6ab7725349d26a342003b1bd07e8a0.tar.gz gcc-2fd98c0acf6ab7725349d26a342003b1bd07e8a0.tar.bz2 |
Add IA MCU support to x86intrin.h
x86intrin.h has useful intrinsics for instructions for IA MCU. This
patch adds __iamcu__ check to x86intrin.h and ia32intrin.h.
gcc/
PR target/66746.
* config/i386/ia32intrin.h (__crc32b): Don't define if __iamcu__
is defined.
(__crc32w): Likewise.
(__crc32d): Likewise.
(__rdpmc): Likewise.
(__rdtscp): Likewise.
(_rdpmc): Likewise.
(_rdtscp): Likewise.
* config/i386/x86intrin.h: Only include ia32intrin.h if __iamcu__
is defined.
gcc/testsuite/
PR target/66746.
* gcc.target/i386/pr66746.c: New file.
From-SVN: r225376
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 14 | ||||
-rw-r--r-- | gcc/config/i386/ia32intrin.h | 16 | ||||
-rw-r--r-- | gcc/config/i386/x86intrin.h | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 |
4 files changed, 39 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 821ffbc..0335921 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,17 @@ +2015-07-03 H.J. Lu <hongjiu.lu@intel.com> + + PR target/66746. + * config/i386/ia32intrin.h (__crc32b): Don't define if __iamcu__ + is defined. + (__crc32w): Likewise. + (__crc32d): Likewise. + (__rdpmc): Likewise. + (__rdtscp): Likewise. + (_rdpmc): Likewise. + (_rdtscp): Likewise. + * config/i386/x86intrin.h: Only include ia32intrin.h if __iamcu__ + is defined. + 2015-07-03 Richard Biener <rguenther@suse.de> * fold-const.c (fold_mathfn_compare): Remove. diff --git a/gcc/config/i386/ia32intrin.h b/gcc/config/i386/ia32intrin.h index 1f728c8..b8d1c31 100644 --- a/gcc/config/i386/ia32intrin.h +++ b/gcc/config/i386/ia32intrin.h @@ -49,6 +49,8 @@ __bswapd (int __X) return __builtin_bswap32 (__X); } +#ifndef __iamcu__ + #ifndef __SSE4_2__ #pragma GCC push_options #pragma GCC target("sse4.2") @@ -82,6 +84,8 @@ __crc32d (unsigned int __C, unsigned int __V) #pragma GCC pop_options #endif /* __DISABLE_SSE4_2__ */ +#endif /* __iamcu__ */ + /* 32bit popcnt */ extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__)) @@ -90,6 +94,8 @@ __popcntd (unsigned int __X) return __builtin_popcount (__X); } +#ifndef __iamcu__ + /* rdpmc */ extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__)) @@ -98,6 +104,8 @@ __rdpmc (int __S) return __builtin_ia32_rdpmc (__S); } +#endif /* __iamcu__ */ + /* rdtsc */ extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__)) @@ -106,6 +114,8 @@ __rdtsc (void) return __builtin_ia32_rdtsc (); } +#ifndef __iamcu__ + /* rdtscp */ extern __inline unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__)) @@ -114,6 +124,8 @@ __rdtscp (unsigned int *__A) return __builtin_ia32_rdtscp (__A); } +#endif /* __iamcu__ */ + /* 8bit rol */ extern __inline unsigned char __attribute__((__gnu_inline__, __always_inline__, __artificial__)) @@ -290,9 +302,11 @@ __writeeflags (unsigned int X) #define _bit_scan_reverse(a) __bsrd(a) #define _bswap(a) __bswapd(a) #define _popcnt32(a) __popcntd(a) +#ifndef __iamcu__ #define _rdpmc(a) __rdpmc(a) -#define _rdtsc() __rdtsc() #define _rdtscp(a) __rdtscp(a) +#endif /* __iamcu__ */ +#define _rdtsc() __rdtsc() #define _rotwl(a,b) __rolw((a), (b)) #define _rotwr(a,b) __rorw((a), (b)) #define _rotl(a,b) __rold((a), (b)) diff --git a/gcc/config/i386/x86intrin.h b/gcc/config/i386/x86intrin.h index 6f7b1f6..be0a1a1 100644 --- a/gcc/config/i386/x86intrin.h +++ b/gcc/config/i386/x86intrin.h @@ -26,6 +26,8 @@ #include <ia32intrin.h> +#ifndef __iamcu__ + #include <mmintrin.h> #include <xmmintrin.h> @@ -86,4 +88,7 @@ #include <xsavecintrin.h> #include <mwaitxintrin.h> + +#endif /* __iamcu__ */ + #endif /* _X86INTRIN_H_INCLUDED */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index aede20a..05344971 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2015-07-03 H.J. Lu <hongjiu.lu@intel.com> + + PR target/66746. + * gcc.target/i386/pr66746.c: New file. + 2015-07-03 Christophe Lyon <christophe.lyon@linaro.org> * gcc.target/aarch64/advsimd-intrinsics/vget_lane.c: New testcase. |