diff options
author | Kirill Yukhin <kirill.yukhin@intel.com> | 2012-07-30 13:40:25 +0000 |
---|---|---|
committer | Kirill Yukhin <kyukhin@gcc.gnu.org> | 2012-07-30 13:40:25 +0000 |
commit | 4c340b5dfa736102f1fc50f3a4f2ba685708c7ff (patch) | |
tree | 04e7ea9f770791813a992b8c189720b259018848 /gcc/testsuite/gcc.target | |
parent | 39c58b3afac8967ed1ff8022a6fc25e2585b6966 (diff) | |
download | gcc-4c340b5dfa736102f1fc50f3a4f2ba685708c7ff.zip gcc-4c340b5dfa736102f1fc50f3a4f2ba685708c7ff.tar.gz gcc-4c340b5dfa736102f1fc50f3a4f2ba685708c7ff.tar.bz2 |
i386-common.c (OPTION_MASK_ISA_RDSEED_SET): New.
/
* common/config/i386/i386-common.c (OPTION_MASK_ISA_RDSEED_SET): New.
(OPTION_MASK_ISA_RDSEED_UNSET): Likewise.
(ix86_handle_option): Handle mrdseed option.
* config.gcc (i[34567]86-*-*): Add rdseedintrin.h.
(x86_64-*-*): Likewise.
* config/i386/prfchwintrin.h: New header.
* config/i386/cpuid.h (bit_RDSEED): New.
* config/i386/driver-i386.c (host_detect_local_cpu): Detect
RDSEED support.
* config/i386/i386-c.c: Define __RDSEED__ if needed.
* config/i386/i386.c (ix86_target_string): Define
-mrdseed option.
(PTA_RDSEED): New.
(ix86_option_override_internal): Handle new option.
(ix86_valid_target_attribute_inner_p): Add OPT_mrdseed.
(ix86_builtins): Add enum entries for RDSEED* builtins.
(ix86_init_mmx_sse_builtins): Define new builtins.
(ix86_expand_builtin): Expand RDSEED* builtins.
* config/i386/i386.h (TARGET_RDSEED): New.
* config/i386/i386.md (rdseed<mode>_1): New.
* config/i386/i386.opt (mrdseed): New.
* config/i386/x86intrin.h: Include rdseedintrin.h.
testsuite/
* gcc.target/i386/rdseed16-1.c: New.
* gcc.target/i386/rdseed32-1.c: Ditto
* gcc.target/i386/rdseed64-1.c: Ditto
* gcc.target/i386/sse-12.c: Add -mrdseed.
* gcc.target/i386/sse-13.c: Ditto.
* gcc.target/i386/sse-14.c: Ditto.
* g++.dg/other/i386-2.C: Ditto.
* g++.dg/other/i386-3.C: Ditto.
Co-Authored-By: Michael Zolotukhin <michael.v.zolotukhin@intel.com>
From-SVN: r189973
Diffstat (limited to 'gcc/testsuite/gcc.target')
-rw-r--r-- | gcc/testsuite/gcc.target/i386/rdseed16-1.c | 13 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/rdseed32-1.c | 13 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/rdseed64-1.c | 13 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/sse-12.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/sse-13.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/sse-14.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/sse-22.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/sse-23.c | 2 |
8 files changed, 45 insertions, 6 deletions
diff --git a/gcc/testsuite/gcc.target/i386/rdseed16-1.c b/gcc/testsuite/gcc.target/i386/rdseed16-1.c new file mode 100644 index 0000000..fe637f1 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/rdseed16-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-mrdseed -O2" } */ +/* { dg-final { scan-assembler "rdseed\[ \\t\]+" } } */ + +#include <x86intrin.h> + +void extern +rdseed_test (unsigned short *p) +{ + volatile int r; + r = _rdseed16_step (p); +} + diff --git a/gcc/testsuite/gcc.target/i386/rdseed32-1.c b/gcc/testsuite/gcc.target/i386/rdseed32-1.c new file mode 100644 index 0000000..646dff2 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/rdseed32-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-mrdseed -O2" } */ +/* { dg-final { scan-assembler "rdseed\[ \\t\]+" } } */ + +#include <x86intrin.h> + +void extern +rdseed_test (unsigned int *p) +{ + volatile int r; + r = _rdseed32_step (p); +} + diff --git a/gcc/testsuite/gcc.target/i386/rdseed64-1.c b/gcc/testsuite/gcc.target/i386/rdseed64-1.c new file mode 100644 index 0000000..bdacd7a --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/rdseed64-1.c @@ -0,0 +1,13 @@ +/* { dg-do compile { target { ! ia32 } } } */ +/* { dg-options "-mrdseed -O2" } */ +/* { dg-final { scan-assembler "rdseed\[ \\t\]+" } } */ + +#include <x86intrin.h> + +void extern +rdseed_test (unsigned long long *p) +{ + volatile int r; + r = _rdseed64_step (p); +} + diff --git a/gcc/testsuite/gcc.target/i386/sse-12.c b/gcc/testsuite/gcc.target/i386/sse-12.c index 19e0071..cb3ab18 100644 --- a/gcc/testsuite/gcc.target/i386/sse-12.c +++ b/gcc/testsuite/gcc.target/i386/sse-12.c @@ -3,7 +3,7 @@ popcntintrin.h and mm_malloc.h are usable with -O -std=c89 -pedantic-errors. */ /* { dg-do compile } */ -/* { dg-options "-O -std=c89 -pedantic-errors -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mprfchw" } */ +/* { dg-options "-O -std=c89 -pedantic-errors -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw" } */ #include <x86intrin.h> diff --git a/gcc/testsuite/gcc.target/i386/sse-13.c b/gcc/testsuite/gcc.target/i386/sse-13.c index 7a2bdb3..fe2bf46 100644 --- a/gcc/testsuite/gcc.target/i386/sse-13.c +++ b/gcc/testsuite/gcc.target/i386/sse-13.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O2 -Werror-implicit-function-declaration -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mprfchw" } */ +/* { dg-options "-O2 -Werror-implicit-function-declaration -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw" } */ #include <mm_malloc.h> diff --git a/gcc/testsuite/gcc.target/i386/sse-14.c b/gcc/testsuite/gcc.target/i386/sse-14.c index 8b19a88..8877e31 100644 --- a/gcc/testsuite/gcc.target/i386/sse-14.c +++ b/gcc/testsuite/gcc.target/i386/sse-14.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O0 -Werror-implicit-function-declaration -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mprfchw" } */ +/* { dg-options "-O0 -Werror-implicit-function-declaration -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw" } */ #include <mm_malloc.h> diff --git a/gcc/testsuite/gcc.target/i386/sse-22.c b/gcc/testsuite/gcc.target/i386/sse-22.c index 99dddfd..ec5ccb8 100644 --- a/gcc/testsuite/gcc.target/i386/sse-22.c +++ b/gcc/testsuite/gcc.target/i386/sse-22.c @@ -50,7 +50,7 @@ #ifndef DIFFERENT_PRAGMAS -#pragma GCC target ("sse4a,3dnow,avx,avx2,fma4,xop,aes,pclmul,popcnt,abm,lzcnt,bmi,bmi2,tbm,lwp,fsgsbase,rdrnd,f16c,rtm,prfchw") +#pragma GCC target ("sse4a,3dnow,avx,avx2,fma4,xop,aes,pclmul,popcnt,abm,lzcnt,bmi,bmi2,tbm,lwp,fsgsbase,rdrnd,f16c,rtm,rdseed,prfchw") #endif /* Following intrinsics require immediate arguments. They @@ -264,7 +264,7 @@ test_2 (_mm_clmulepi64_si128, __m128i, __m128i, __m128i, 1) /* x86intrin.h (FMA4/XOP/LWP/BMI/BMI2/TBM/LZCNT/FMA). */ #ifdef DIFFERENT_PRAGMAS -#pragma GCC target ("fma4,xop,lwp,bmi,bmi2,tbm,lzcnt,fma,prfchw") +#pragma GCC target ("fma4,xop,lwp,bmi,bmi2,tbm,lzcnt,fma,rdseed,prfchw") #endif #include <x86intrin.h> /* xopintrin.h */ diff --git a/gcc/testsuite/gcc.target/i386/sse-23.c b/gcc/testsuite/gcc.target/i386/sse-23.c index a06ee5e..3b26d99 100644 --- a/gcc/testsuite/gcc.target/i386/sse-23.c +++ b/gcc/testsuite/gcc.target/i386/sse-23.c @@ -183,7 +183,7 @@ /* rtmintrin.h */ #define __builtin_ia32_xabort(M) __builtin_ia32_xabort(1) -#pragma GCC target ("sse4a,3dnow,avx,avx2,fma4,xop,aes,pclmul,popcnt,abm,lzcnt,bmi,bmi2,tbm,lwp,fsgsbase,rdrnd,f16c,fma,rtm,prfchw") +#pragma GCC target ("sse4a,3dnow,avx,avx2,fma4,xop,aes,pclmul,popcnt,abm,lzcnt,bmi,bmi2,tbm,lwp,fsgsbase,rdrnd,f16c,fma,rtm,rdseed,prfchw") #include <wmmintrin.h> #include <smmintrin.h> #include <mm3dnow.h> |