aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMichael Zolotukhin <michael.v.zolotukhin@intel.com>2012-08-09 14:35:02 +0000
committerKirill Yukhin <kyukhin@gcc.gnu.org>2012-08-09 14:35:02 +0000
commit9319fa21f4ee4dcff6b5ccc609eb28e303639529 (patch)
tree8c10fb5e8e2bdfc976dd237694c4a3132810f2f9 /gcc
parent0c02ab396ed1385ee0fc14c534fcfe36dbe11675 (diff)
downloadgcc-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/ChangeLog10
-rw-r--r--gcc/config/i386/adxintrin.h4
-rw-r--r--gcc/config/i386/i386.c8
-rw-r--r--gcc/config/i386/x86intrin.h2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.target/i386/adx-addcarryx32-3.c15
-rw-r--r--gcc/testsuite/gcc.target/i386/adx-addcarryx64-3.c15
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);
+}