diff options
author | Michael Zolotukhin <michael.v.zolotukhin@intel.com> | 2012-08-09 14:35:02 +0000 |
---|---|---|
committer | Kirill Yukhin <kyukhin@gcc.gnu.org> | 2012-08-09 14:35:02 +0000 |
commit | 9319fa21f4ee4dcff6b5ccc609eb28e303639529 (patch) | |
tree | 8c10fb5e8e2bdfc976dd237694c4a3132810f2f9 /gcc | |
parent | 0c02ab396ed1385ee0fc14c534fcfe36dbe11675 (diff) | |
download | gcc-9319fa21f4ee4dcff6b5ccc609eb28e303639529.zip gcc-9319fa21f4ee4dcff6b5ccc609eb28e303639529.tar.gz gcc-9319fa21f4ee4dcff6b5ccc609eb28e303639529.tar.bz2 |
adxintrin.h: Remove guarding __ADX__ check.
Changelog
* config/i386/adxintrin.h: Remove guarding __ADX__ check.
* config/i386/x86intrin.h: Likewise.
* config/i386/i386.c (ix86_init_mmx_sse_builtins): Remove
OPTION_MASK_ISA_ADX from needed options for
__builtin_ia32_addcarryx_u32 and __builtin_ia32_addcarryx_u64.
(ix86_expand_builtin): Use add<mode>3_carry in expanding of
IX86_BUILTIN_ADDCARRYX32 and IX86_BUILTIN_ADDCARRYX64.
testsuite/Changelog
* gcc.target/i386/adx-addxcarry32-3.c: New.
* gcc.target/i386/adx-addxcarry64-3.c: New.
From-SVN: r190254
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/config/i386/adxintrin.h | 4 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 8 | ||||
-rw-r--r-- | gcc/config/i386/x86intrin.h | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/adx-addcarryx32-3.c | 15 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/adx-addcarryx64-3.c | 15 |
7 files changed, 49 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 618cba0..db6dbd5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2012-08-09 Michael Zolotukhin <michael.v.zolotukhin@intel.com> + + * config/i386/adxintrin.h: Remove guarding __ADX__ check. + * config/i386/x86intrin.h: Likewise. + * config/i386/i386.c (ix86_init_mmx_sse_builtins): Remove + OPTION_MASK_ISA_ADX from needed options for + __builtin_ia32_addcarryx_u32 and __builtin_ia32_addcarryx_u64. + (ix86_expand_builtin): Use add<mode>3_carry in expanding of + IX86_BUILTIN_ADDCARRYX32 and IX86_BUILTIN_ADDCARRYX64. + 2012-08-09 Andrey Belevantsev <abel@ispras.ru> PR rtl-optimization/53701 diff --git a/gcc/config/i386/adxintrin.h b/gcc/config/i386/adxintrin.h index 2e2a18b..a68566d 100644 --- a/gcc/config/i386/adxintrin.h +++ b/gcc/config/i386/adxintrin.h @@ -25,10 +25,6 @@ # error "Never use <adxintrin.h> directly; include <x86intrin.h> instead." #endif -#ifndef __ADX__ -# error "Flag-preserving add-carry instructions not enabled" -#endif /* __ADX__ */ - #ifndef _ADXINTRIN_H_INCLUDED #define _ADXINTRIN_H_INCLUDED diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 17d4446..7a9e134 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -27968,9 +27968,9 @@ ix86_init_mmx_sse_builtins (void) INT_FTYPE_PULONGLONG, IX86_BUILTIN_RDSEED64_STEP); /* ADCX */ - def_builtin (OPTION_MASK_ISA_ADX, "__builtin_ia32_addcarryx_u32", + def_builtin (0, "__builtin_ia32_addcarryx_u32", UCHAR_FTYPE_UCHAR_UINT_UINT_PUNSIGNED, IX86_BUILTIN_ADDCARRYX32); - def_builtin (OPTION_MASK_ISA_ADX && OPTION_MASK_ISA_64BIT, + def_builtin (OPTION_MASK_ISA_64BIT, "__builtin_ia32_addcarryx_u64", UCHAR_FTYPE_UCHAR_ULONGLONG_ULONGLONG_PULONGLONG, IX86_BUILTIN_ADDCARRYX64); @@ -30343,12 +30343,12 @@ rdseed_step: return target; case IX86_BUILTIN_ADDCARRYX32: - icode = CODE_FOR_adcxsi3; + icode = TARGET_ADX ? CODE_FOR_adcxsi3 : CODE_FOR_addsi3_carry; mode0 = SImode; goto addcarryx; case IX86_BUILTIN_ADDCARRYX64: - icode = CODE_FOR_adcxdi3; + icode = TARGET_ADX ? CODE_FOR_adcxdi3 : CODE_FOR_adddi3_carry; mode0 = DImode; addcarryx: diff --git a/gcc/config/i386/x86intrin.h b/gcc/config/i386/x86intrin.h index dc5c58e..fae6491 100644 --- a/gcc/config/i386/x86intrin.h +++ b/gcc/config/i386/x86intrin.h @@ -105,8 +105,6 @@ #include <prfchwintrin.h> #endif -#ifdef __ADX__ #include <adxintrin.h> -#endif #endif /* _X86INTRIN_H_INCLUDED */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 1ac24cd..021ce85 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-08-09 Michael Zolotukhin <michael.v.zolotukhin@intel.com> + + * gcc.target/i386/adx-addxcarry32-3.c: New. + * gcc.target/i386/adx-addxcarry64-3.c: New. + 2012-08-09 Andrey Belevantsev <abel@ispras.ru> PR rtl-optimization/53701 diff --git a/gcc/testsuite/gcc.target/i386/adx-addcarryx32-3.c b/gcc/testsuite/gcc.target/i386/adx-addcarryx32-3.c new file mode 100644 index 0000000..0ed33a9 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/adx-addcarryx32-3.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-options "-mno-adx -O2" } */ +/* { dg-final { scan-assembler "adcl" } } */ + +#include <x86intrin.h> + +volatile unsigned char c; +volatile unsigned int x, y; +unsigned int *sum; + +void extern +adx_test (void) +{ + c = _addcarryx_u32 (c, x, y, sum); +} diff --git a/gcc/testsuite/gcc.target/i386/adx-addcarryx64-3.c b/gcc/testsuite/gcc.target/i386/adx-addcarryx64-3.c new file mode 100644 index 0000000..4bbf74b --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/adx-addcarryx64-3.c @@ -0,0 +1,15 @@ +/* { dg-do compile { target { ! ia32 } } } */ +/* { dg-options "-mno-adx -O2" } */ +/* { dg-final { scan-assembler "adcq" } } */ + +#include <x86intrin.h> + +volatile unsigned char c; +volatile unsigned long long x, y; +unsigned long long *sum; + +void extern +adx_test (void) +{ + c = _addcarryx_u64 (c, x, y, sum); +} |