This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[4.3/4.4]: PATCH: PR target/35453: nmmintrin.h defines macros SIDD_XXX
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- To: "Richard Guenther" <rguenther at suse dot de>
- Cc: gcc at gcc dot gnu dot org, gcc-patches <gcc-patches at gcc dot gnu dot org>
- Date: Tue, 4 Mar 2008 10:21:44 -0800
- Subject: [4.3/4.4]: PATCH: PR target/35453: nmmintrin.h defines macros SIDD_XXX
Hi,
Here is the patch for both gcc 4.3 and 4.4. OK for 4.3/4.4? Tested on Linux/ia32
and Linux/ia64 with gcc 4.3/4.4.
Thanks.
H.J.
On Tue, Mar 4, 2008 at 1:19 AM, Richard Guenther <rguenther@suse.de> wrote:
> On Mon, 3 Mar 2008, H.J. Lu wrote:
>
> > Hi,
> >
> > I'd like to fix
> >
> > http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35453
> >
> > for gcc 4.3. Defines SIDD_XXX in SSE4 header file is a bad idea. SSE 4
> > header file
> > in icc will also be fixed.
>
> Works for me.
>
> Richard.
>
gcc/
2008-03-03 H.J. Lu <hongjiu.lu@intel.com>
PR target/35453
* config/i386/smmintrin.h (SIDD_XXX): Renamed to ...
(_SIDD_XXX): This.
gcc/testsuite/
2008-03-03 H.J. Lu <hongjiu.lu@intel.com>
PR target/35453
* gcc.target/i386/sse4_2-pcmpestri-1.c: Replace SIDD_XXX with
_SIDD_XXX.
* gcc.target/i386/sse4_2-pcmpestri-2.c: Likewise.
* gcc.target/i386/sse4_2-pcmpestrm-1.c: Likewise.
* gcc.target/i386/sse4_2-pcmpestrm-2.c: Likewise.
* gcc.target/i386/sse4_2-pcmpistri-1.c: Likewise.
* gcc.target/i386/sse4_2-pcmpistri-2.c: Likewise.
* gcc.target/i386/sse4_2-pcmpistrm-1.c: Likewise.
* gcc.target/i386/sse4_2-pcmpistrm-2.c: Likewise.
* gcc.target/i386/sse4_2-pcmpstr.h: Likewise.
--- gcc/config/i386/smmintrin.h.sidd 2007-12-15 15:49:23.000000000 -0800
+++ gcc/config/i386/smmintrin.h 2008-03-03 20:22:22.000000000 -0800
@@ -470,30 +470,30 @@ _mm_stream_load_si128 (__m128i *__X)
#ifdef __SSE4_2__
/* These macros specify the source data format. */
-#define SIDD_UBYTE_OPS 0x00
-#define SIDD_UWORD_OPS 0x01
-#define SIDD_SBYTE_OPS 0x02
-#define SIDD_SWORD_OPS 0x03
+#define _SIDD_UBYTE_OPS 0x00
+#define _SIDD_UWORD_OPS 0x01
+#define _SIDD_SBYTE_OPS 0x02
+#define _SIDD_SWORD_OPS 0x03
/* These macros specify the comparison operation. */
-#define SIDD_CMP_EQUAL_ANY 0x00
-#define SIDD_CMP_RANGES 0x04
-#define SIDD_CMP_EQUAL_EACH 0x08
-#define SIDD_CMP_EQUAL_ORDERED 0x0c
+#define _SIDD_CMP_EQUAL_ANY 0x00
+#define _SIDD_CMP_RANGES 0x04
+#define _SIDD_CMP_EQUAL_EACH 0x08
+#define _SIDD_CMP_EQUAL_ORDERED 0x0c
/* These macros specify the the polarity. */
-#define SIDD_POSITIVE_POLARITY 0x00
-#define SIDD_NEGATIVE_POLARITY 0x10
-#define SIDD_MASKED_POSITIVE_POLARITY 0x20
-#define SIDD_MASKED_NEGATIVE_POLARITY 0x30
+#define _SIDD_POSITIVE_POLARITY 0x00
+#define _SIDD_NEGATIVE_POLARITY 0x10
+#define _SIDD_MASKED_POSITIVE_POLARITY 0x20
+#define _SIDD_MASKED_NEGATIVE_POLARITY 0x30
/* These macros specify the output selection in _mm_cmpXstri (). */
-#define SIDD_LEAST_SIGNIFICANT 0x00
-#define SIDD_MOST_SIGNIFICANT 0x40
+#define _SIDD_LEAST_SIGNIFICANT 0x00
+#define _SIDD_MOST_SIGNIFICANT 0x40
/* These macros specify the output selection in _mm_cmpXstrm (). */
-#define SIDD_BIT_MASK 0x00
-#define SIDD_UNIT_MASK 0x40
+#define _SIDD_BIT_MASK 0x00
+#define _SIDD_UNIT_MASK 0x40
/* Intrinsics for text/string processing. */
--- gcc/testsuite/gcc.target/i386/sse4_2-pcmpestri-1.c.sidd 2007-08-23 09:44:31.000000000 -0700
+++ gcc/testsuite/gcc.target/i386/sse4_2-pcmpestri-1.c 2008-03-03 20:23:20.000000000 -0800
@@ -8,15 +8,15 @@
#define NUM 1024
#define IMM_VAL0 \
- (SIDD_SBYTE_OPS | SIDD_CMP_RANGES | SIDD_MASKED_POSITIVE_POLARITY)
+ (_SIDD_SBYTE_OPS | _SIDD_CMP_RANGES | _SIDD_MASKED_POSITIVE_POLARITY)
#define IMM_VAL1 \
- (SIDD_UBYTE_OPS | SIDD_CMP_EQUAL_EACH | SIDD_NEGATIVE_POLARITY \
- | SIDD_MOST_SIGNIFICANT)
+ (_SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_EACH | _SIDD_NEGATIVE_POLARITY \
+ | _SIDD_MOST_SIGNIFICANT)
#define IMM_VAL2 \
- (SIDD_UWORD_OPS | SIDD_CMP_EQUAL_ANY | SIDD_MASKED_NEGATIVE_POLARITY)
+ (_SIDD_UWORD_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_MASKED_NEGATIVE_POLARITY)
#define IMM_VAL3 \
- (SIDD_SWORD_OPS | SIDD_CMP_EQUAL_ORDERED \
- | SIDD_MASKED_NEGATIVE_POLARITY | SIDD_LEAST_SIGNIFICANT)
+ (_SIDD_SWORD_OPS | _SIDD_CMP_EQUAL_ORDERED \
+ | _SIDD_MASKED_NEGATIVE_POLARITY | _SIDD_LEAST_SIGNIFICANT)
static void
--- gcc/testsuite/gcc.target/i386/sse4_2-pcmpestri-2.c.sidd 2007-08-23 09:44:31.000000000 -0700
+++ gcc/testsuite/gcc.target/i386/sse4_2-pcmpestri-2.c 2008-03-03 20:23:25.000000000 -0800
@@ -8,15 +8,15 @@
#define NUM 1024
#define IMM_VAL0 \
- (SIDD_SBYTE_OPS | SIDD_CMP_RANGES | SIDD_MASKED_POSITIVE_POLARITY)
+ (_SIDD_SBYTE_OPS | _SIDD_CMP_RANGES | _SIDD_MASKED_POSITIVE_POLARITY)
#define IMM_VAL1 \
- (SIDD_UBYTE_OPS | SIDD_CMP_EQUAL_EACH | SIDD_NEGATIVE_POLARITY \
- | SIDD_MOST_SIGNIFICANT)
+ (_SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_EACH | _SIDD_NEGATIVE_POLARITY \
+ | _SIDD_MOST_SIGNIFICANT)
#define IMM_VAL2 \
- (SIDD_UWORD_OPS | SIDD_CMP_EQUAL_ANY | SIDD_MASKED_NEGATIVE_POLARITY)
+ (_SIDD_UWORD_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_MASKED_NEGATIVE_POLARITY)
#define IMM_VAL3 \
- (SIDD_SWORD_OPS | SIDD_CMP_EQUAL_ORDERED \
- | SIDD_MASKED_NEGATIVE_POLARITY | SIDD_LEAST_SIGNIFICANT)
+ (_SIDD_SWORD_OPS | _SIDD_CMP_EQUAL_ORDERED \
+ | _SIDD_MASKED_NEGATIVE_POLARITY | _SIDD_LEAST_SIGNIFICANT)
static void
--- gcc/testsuite/gcc.target/i386/sse4_2-pcmpestrm-1.c.sidd 2007-08-23 09:44:31.000000000 -0700
+++ gcc/testsuite/gcc.target/i386/sse4_2-pcmpestrm-1.c 2008-03-03 20:23:28.000000000 -0800
@@ -8,15 +8,15 @@
#define NUM 1024
#define IMM_VAL0 \
- (SIDD_SBYTE_OPS | SIDD_CMP_RANGES | SIDD_MASKED_POSITIVE_POLARITY)
+ (_SIDD_SBYTE_OPS | _SIDD_CMP_RANGES | _SIDD_MASKED_POSITIVE_POLARITY)
#define IMM_VAL1 \
- (SIDD_UBYTE_OPS | SIDD_CMP_EQUAL_EACH | SIDD_NEGATIVE_POLARITY \
- | SIDD_BIT_MASK)
+ (_SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_EACH | _SIDD_NEGATIVE_POLARITY \
+ | _SIDD_BIT_MASK)
#define IMM_VAL2 \
- (SIDD_UWORD_OPS | SIDD_CMP_EQUAL_ANY | SIDD_MASKED_NEGATIVE_POLARITY)
+ (_SIDD_UWORD_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_MASKED_NEGATIVE_POLARITY)
#define IMM_VAL3 \
- (SIDD_SWORD_OPS | SIDD_CMP_EQUAL_ORDERED \
- | SIDD_MASKED_NEGATIVE_POLARITY | SIDD_UNIT_MASK)
+ (_SIDD_SWORD_OPS | _SIDD_CMP_EQUAL_ORDERED \
+ | _SIDD_MASKED_NEGATIVE_POLARITY | _SIDD_UNIT_MASK)
static void
--- gcc/testsuite/gcc.target/i386/sse4_2-pcmpestrm-2.c.sidd 2007-08-23 09:44:31.000000000 -0700
+++ gcc/testsuite/gcc.target/i386/sse4_2-pcmpestrm-2.c 2008-03-03 20:23:32.000000000 -0800
@@ -8,15 +8,15 @@
#define NUM 1024
#define IMM_VAL0 \
- (SIDD_SBYTE_OPS | SIDD_CMP_RANGES | SIDD_MASKED_POSITIVE_POLARITY)
+ (_SIDD_SBYTE_OPS | _SIDD_CMP_RANGES | _SIDD_MASKED_POSITIVE_POLARITY)
#define IMM_VAL1 \
- (SIDD_UBYTE_OPS | SIDD_CMP_EQUAL_EACH | SIDD_NEGATIVE_POLARITY \
- | SIDD_BIT_MASK)
+ (_SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_EACH | _SIDD_NEGATIVE_POLARITY \
+ | _SIDD_BIT_MASK)
#define IMM_VAL2 \
- (SIDD_UWORD_OPS | SIDD_CMP_EQUAL_ANY | SIDD_NEGATIVE_POLARITY)
+ (_SIDD_UWORD_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_NEGATIVE_POLARITY)
#define IMM_VAL3 \
- (SIDD_SWORD_OPS | SIDD_CMP_EQUAL_ORDERED \
- | SIDD_MASKED_NEGATIVE_POLARITY | SIDD_UNIT_MASK)
+ (_SIDD_SWORD_OPS | _SIDD_CMP_EQUAL_ORDERED \
+ | _SIDD_MASKED_NEGATIVE_POLARITY | _SIDD_UNIT_MASK)
static void
sse4_2_test (void)
--- gcc/testsuite/gcc.target/i386/sse4_2-pcmpistri-1.c.sidd 2007-08-23 09:44:31.000000000 -0700
+++ gcc/testsuite/gcc.target/i386/sse4_2-pcmpistri-1.c 2008-03-03 20:23:40.000000000 -0800
@@ -8,15 +8,15 @@
#define NUM 1024
#define IMM_VAL0 \
- (SIDD_SBYTE_OPS | SIDD_CMP_RANGES | SIDD_MASKED_POSITIVE_POLARITY)
+ (_SIDD_SBYTE_OPS | _SIDD_CMP_RANGES | _SIDD_MASKED_POSITIVE_POLARITY)
#define IMM_VAL1 \
- (SIDD_UBYTE_OPS | SIDD_CMP_EQUAL_EACH | SIDD_NEGATIVE_POLARITY \
- | SIDD_MOST_SIGNIFICANT)
+ (_SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_EACH | _SIDD_NEGATIVE_POLARITY \
+ | _SIDD_MOST_SIGNIFICANT)
#define IMM_VAL2 \
- (SIDD_UWORD_OPS | SIDD_CMP_EQUAL_ANY | SIDD_MASKED_NEGATIVE_POLARITY)
+ (_SIDD_UWORD_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_MASKED_NEGATIVE_POLARITY)
#define IMM_VAL3 \
- (SIDD_SWORD_OPS | SIDD_CMP_EQUAL_ORDERED \
- | SIDD_MASKED_NEGATIVE_POLARITY | SIDD_MOST_SIGNIFICANT)
+ (_SIDD_SWORD_OPS | _SIDD_CMP_EQUAL_ORDERED \
+ | _SIDD_MASKED_NEGATIVE_POLARITY | _SIDD_MOST_SIGNIFICANT)
static void
--- gcc/testsuite/gcc.target/i386/sse4_2-pcmpistri-2.c.sidd 2007-08-23 09:44:31.000000000 -0700
+++ gcc/testsuite/gcc.target/i386/sse4_2-pcmpistri-2.c 2008-03-03 20:23:43.000000000 -0800
@@ -8,15 +8,15 @@
#define NUM 1024
#define IMM_VAL0 \
- (SIDD_SBYTE_OPS | SIDD_CMP_RANGES | SIDD_MASKED_POSITIVE_POLARITY)
+ (_SIDD_SBYTE_OPS | _SIDD_CMP_RANGES | _SIDD_MASKED_POSITIVE_POLARITY)
#define IMM_VAL1 \
- (SIDD_UBYTE_OPS | SIDD_CMP_EQUAL_EACH | SIDD_NEGATIVE_POLARITY \
- | SIDD_MOST_SIGNIFICANT)
+ (_SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_EACH | _SIDD_NEGATIVE_POLARITY \
+ | _SIDD_MOST_SIGNIFICANT)
#define IMM_VAL2 \
- (SIDD_UWORD_OPS | SIDD_CMP_EQUAL_ANY | SIDD_MASKED_NEGATIVE_POLARITY)
+ (_SIDD_UWORD_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_MASKED_NEGATIVE_POLARITY)
#define IMM_VAL3 \
- (SIDD_SWORD_OPS | SIDD_CMP_EQUAL_ORDERED \
- | SIDD_MASKED_NEGATIVE_POLARITY | SIDD_MOST_SIGNIFICANT)
+ (_SIDD_SWORD_OPS | _SIDD_CMP_EQUAL_ORDERED \
+ | _SIDD_MASKED_NEGATIVE_POLARITY | _SIDD_MOST_SIGNIFICANT)
static void
--- gcc/testsuite/gcc.target/i386/sse4_2-pcmpistrm-1.c.sidd 2007-08-23 09:44:31.000000000 -0700
+++ gcc/testsuite/gcc.target/i386/sse4_2-pcmpistrm-1.c 2008-03-03 20:23:47.000000000 -0800
@@ -8,15 +8,15 @@
#define NUM 1024
#define IMM_VAL0 \
- (SIDD_SBYTE_OPS | SIDD_CMP_RANGES | SIDD_MASKED_POSITIVE_POLARITY)
+ (_SIDD_SBYTE_OPS | _SIDD_CMP_RANGES | _SIDD_MASKED_POSITIVE_POLARITY)
#define IMM_VAL1 \
- (SIDD_UBYTE_OPS | SIDD_CMP_EQUAL_EACH | SIDD_NEGATIVE_POLARITY \
- | SIDD_BIT_MASK)
+ (_SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_EACH | _SIDD_NEGATIVE_POLARITY \
+ | _SIDD_BIT_MASK)
#define IMM_VAL2 \
- (SIDD_UWORD_OPS | SIDD_CMP_EQUAL_ANY | SIDD_MASKED_NEGATIVE_POLARITY)
+ (_SIDD_UWORD_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_MASKED_NEGATIVE_POLARITY)
#define IMM_VAL3 \
- (SIDD_SWORD_OPS | SIDD_CMP_EQUAL_ORDERED \
- | SIDD_MASKED_NEGATIVE_POLARITY | SIDD_UNIT_MASK)
+ (_SIDD_SWORD_OPS | _SIDD_CMP_EQUAL_ORDERED \
+ | _SIDD_MASKED_NEGATIVE_POLARITY | _SIDD_UNIT_MASK)
static void
--- gcc/testsuite/gcc.target/i386/sse4_2-pcmpistrm-2.c.sidd 2007-08-23 09:44:31.000000000 -0700
+++ gcc/testsuite/gcc.target/i386/sse4_2-pcmpistrm-2.c 2008-03-03 20:23:52.000000000 -0800
@@ -8,15 +8,15 @@
#define NUM 1024
#define IMM_VAL0 \
- (SIDD_SBYTE_OPS | SIDD_CMP_RANGES | SIDD_MASKED_POSITIVE_POLARITY)
+ (_SIDD_SBYTE_OPS | _SIDD_CMP_RANGES | _SIDD_MASKED_POSITIVE_POLARITY)
#define IMM_VAL1 \
- (SIDD_UBYTE_OPS | SIDD_CMP_EQUAL_EACH | SIDD_NEGATIVE_POLARITY \
- | SIDD_BIT_MASK)
+ (_SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_EACH | _SIDD_NEGATIVE_POLARITY \
+ | _SIDD_BIT_MASK)
#define IMM_VAL2 \
- (SIDD_UWORD_OPS | SIDD_CMP_EQUAL_ANY | SIDD_MASKED_NEGATIVE_POLARITY)
+ (_SIDD_UWORD_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_MASKED_NEGATIVE_POLARITY)
#define IMM_VAL3 \
- (SIDD_SWORD_OPS | SIDD_CMP_EQUAL_ORDERED \
- | SIDD_POSITIVE_POLARITY | SIDD_UNIT_MASK)
+ (_SIDD_SWORD_OPS | _SIDD_CMP_EQUAL_ORDERED \
+ | _SIDD_POSITIVE_POLARITY | _SIDD_UNIT_MASK)
static void
sse4_2_test (void)
--- gcc/testsuite/gcc.target/i386/sse4_2-pcmpstr.h.sidd 2008-03-04 07:07:40.000000000 -0800
+++ gcc/testsuite/gcc.target/i386/sse4_2-pcmpstr.h 2008-03-04 07:05:53.000000000 -0800
@@ -42,14 +42,14 @@ override_invalid (unsigned char res[16][
else if (i >= la)
switch ((mode & 0x0C))
{
- case SIDD_CMP_EQUAL_ANY:
- case SIDD_CMP_RANGES:
+ case _SIDD_CMP_EQUAL_ANY:
+ case _SIDD_CMP_RANGES:
res[j][i] = 0;
break;
- case SIDD_CMP_EQUAL_EACH:
+ case _SIDD_CMP_EQUAL_EACH:
res[j][i] = (j >= lb) ? 1: 0;
break;
- case SIDD_CMP_EQUAL_ORDERED:
+ case _SIDD_CMP_EQUAL_ORDERED:
res[j][i] = 1;
break;
}
@@ -73,8 +73,8 @@ calc_matrix (__m128i a, int la, __m128i
switch ((mode & 3))
{
- case SIDD_UBYTE_OPS:
- if ((mode & 0x0C) == SIDD_CMP_RANGES)
+ case _SIDD_UBYTE_OPS:
+ if ((mode & 0x0C) == _SIDD_CMP_RANGES)
{
PCMPSTR_RNG (d.uc, s.uc, res);
}
@@ -83,8 +83,8 @@ calc_matrix (__m128i a, int la, __m128i
PCMPSTR_EQ (d.uc, s.uc, res);
}
break;
- case SIDD_UWORD_OPS:
- if ((mode & 0x0C) == SIDD_CMP_RANGES)
+ case _SIDD_UWORD_OPS:
+ if ((mode & 0x0C) == _SIDD_CMP_RANGES)
{
PCMPSTR_RNG (d.us, s.us, res);
}
@@ -93,8 +93,8 @@ calc_matrix (__m128i a, int la, __m128i
PCMPSTR_EQ (d.us, s.us, res);
}
break;
- case SIDD_SBYTE_OPS:
- if ((mode & 0x0C) == SIDD_CMP_RANGES)
+ case _SIDD_SBYTE_OPS:
+ if ((mode & 0x0C) == _SIDD_CMP_RANGES)
{
PCMPSTR_RNG (d.sc, s.sc, res);
}
@@ -103,8 +103,8 @@ calc_matrix (__m128i a, int la, __m128i
PCMPSTR_EQ (d.sc, s.sc, res);
}
break;
- case SIDD_SWORD_OPS:
- if ((mode & 0x0C) == SIDD_CMP_RANGES)
+ case _SIDD_SWORD_OPS:
+ if ((mode & 0x0C) == _SIDD_CMP_RANGES)
{
PCMPSTR_RNG (d.ss, s.ss, res);
}
@@ -144,27 +144,27 @@ calc_res (__m128i a, int la, __m128i b,
switch ((mode & 0x0C))
{
- case SIDD_CMP_EQUAL_ANY:
+ case _SIDD_CMP_EQUAL_ANY:
for (i = 0; i < dim; i++)
for (j = 0; j < dim; j++)
if (mtx[i][j])
res |= (1 << i);
break;
- case SIDD_CMP_RANGES:
+ case _SIDD_CMP_RANGES:
for (i = 0; i < dim; i += 2)
for(j = 0; j < dim; j++)
if (mtx[j][i] && mtx[j][i+1])
res |= (1 << j);
break;
- case SIDD_CMP_EQUAL_EACH:
+ case _SIDD_CMP_EQUAL_EACH:
for(i = 0; i < dim; i++)
if (mtx[i][i])
res |= (1 << i);
break;
- case SIDD_CMP_EQUAL_ORDERED:
+ case _SIDD_CMP_EQUAL_ORDERED:
for(i = 0; i < dim; i++)
{
unsigned char val = 1;
@@ -182,15 +182,15 @@ calc_res (__m128i a, int la, __m128i b,
switch ((mode & 0x30))
{
- case SIDD_POSITIVE_POLARITY:
- case SIDD_MASKED_POSITIVE_POLARITY:
+ case _SIDD_POSITIVE_POLARITY:
+ case _SIDD_MASKED_POSITIVE_POLARITY:
break;
- case SIDD_NEGATIVE_POLARITY:
+ case _SIDD_NEGATIVE_POLARITY:
res ^= -1;
break;
- case SIDD_MASKED_NEGATIVE_POLARITY:
+ case _SIDD_MASKED_NEGATIVE_POLARITY:
for (i = 0; i < lb; i++)
if (res & (1 << i))
res &= ~(1 << i);