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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> PR target/35453 * config/i386/smmintrin.h (SIDD_XXX): Renamed to ... (_SIDD_XXX): This. gcc/testsuite/ 2008-03-03 H.J. Lu <[EMAIL PROTECTED]> 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);