Commit 287a7d41 by H.J. Lu Committed by H.J. Lu

re PR target/35189 (-mno-sse4.2 turns off SSE4a)

gcc/

2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/35189
	* config/i386/i386.c (OPTION_MASK_ISA_MMX_SET): New.
	(OPTION_MASK_ISA_3DNOW_SET): Likewise.
	(OPTION_MASK_ISA_SSE_SET): Likewise.
	(OPTION_MASK_ISA_SSE2_SET): Likewise.
	(OPTION_MASK_ISA_SSE3_SET): Likewise.
	(OPTION_MASK_ISA_SSSE3_SET): Likewise.
	(OPTION_MASK_ISA_SSE4_1_SET): Likewise.
	(OPTION_MASK_ISA_SSE4_2_SET): Likewise.
	(OPTION_MASK_ISA_SSE4_SET): Likewise.
	(OPTION_MASK_ISA_SSE4A_SET): Likewise.
	(OPTION_MASK_ISA_SSE5_SET): Likewise.
	(OPTION_MASK_ISA_3DNOW_A_UNSET): Likewise.
	(OPTION_MASK_ISA_MMX_UNSET): Updated.
	(OPTION_MASK_ISA_3DNOW_UNSET): Updated.
	(OPTION_MASK_ISA_SSE_UNSET): Likewise.
	(OPTION_MASK_ISA_SSE3_UNSET): Likewise.
	(OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
	(OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
	(OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
	(OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
	(OPTION_MASK_ISA_SSE5_UNSET): Likewise.
	(OPTION_MASK_ISA_SSE4): Removed.
	(ix86_handle_option): Turn on bits in ix86_isa_flags and
	ix86_isa_flags_explicit with OPTION_MASK_ISA_XXX_SET for
	-mXXX.
	(override_options): Don't turn on implied SSE/MMX bits in
	ix86_isa_flags.

gcc/testsuite/

2008-02-18  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/35189
	* gcc.target/i386/isa-1.c: New.
	* gcc.target/i386/isa-2.c: Likewise.
	* gcc.target/i386/isa-3.c: Likewise.
	* gcc.target/i386/isa-4.c: Likewise.
	* gcc.target/i386/isa-5.c: Likewise.
	* gcc.target/i386/isa-6.c: Likewise.
	* gcc.target/i386/isa-7.c: Likewise.
	* gcc.target/i386/isa-8.c: Likewise.
	* gcc.target/i386/isa-9.c: Likewise.
	* gcc.target/i386/isa-10.c: Likewise.
	* gcc.target/i386/isa-11.c: Likewise.
	* gcc.target/i386/isa-12.c: Likewise.
	* gcc.target/i386/isa-13.c: Likewise.
	* gcc.target/i386/isa-14.c: Likewise.

From-SVN: r132403
parent 2c9e3dda
2008-02-18 H.J. Lu <hongjiu.lu@intel.com> 2008-02-18 H.J. Lu <hongjiu.lu@intel.com>
PR target/35189
* config/i386/i386.c (OPTION_MASK_ISA_MMX_SET): New.
(OPTION_MASK_ISA_3DNOW_SET): Likewise.
(OPTION_MASK_ISA_SSE_SET): Likewise.
(OPTION_MASK_ISA_SSE2_SET): Likewise.
(OPTION_MASK_ISA_SSE3_SET): Likewise.
(OPTION_MASK_ISA_SSSE3_SET): Likewise.
(OPTION_MASK_ISA_SSE4_1_SET): Likewise.
(OPTION_MASK_ISA_SSE4_2_SET): Likewise.
(OPTION_MASK_ISA_SSE4_SET): Likewise.
(OPTION_MASK_ISA_SSE4A_SET): Likewise.
(OPTION_MASK_ISA_SSE5_SET): Likewise.
(OPTION_MASK_ISA_3DNOW_A_UNSET): Likewise.
(OPTION_MASK_ISA_MMX_UNSET): Updated.
(OPTION_MASK_ISA_3DNOW_UNSET): Updated.
(OPTION_MASK_ISA_SSE_UNSET): Likewise.
(OPTION_MASK_ISA_SSE3_UNSET): Likewise.
(OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
(OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
(OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
(OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
(OPTION_MASK_ISA_SSE5_UNSET): Likewise.
(OPTION_MASK_ISA_SSE4): Removed.
(ix86_handle_option): Turn on bits in ix86_isa_flags and
ix86_isa_flags_explicit with OPTION_MASK_ISA_XXX_SET for
-mXXX.
(override_options): Don't turn on implied SSE/MMX bits in
ix86_isa_flags.
2008-02-18 H.J. Lu <hongjiu.lu@intel.com>
* config/i386/i386-modes.def: Use 4 byte alignment on DI for * config/i386/i386-modes.def: Use 4 byte alignment on DI for
32bit host. 32bit host.
......
...@@ -1768,35 +1768,65 @@ int ix86_isa_flags = TARGET_64BIT_DEFAULT | TARGET_SUBTARGET_ISA_DEFAULT; ...@@ -1768,35 +1768,65 @@ int ix86_isa_flags = TARGET_64BIT_DEFAULT | TARGET_SUBTARGET_ISA_DEFAULT;
was set or cleared on the command line. */ was set or cleared on the command line. */
static int ix86_isa_flags_explicit; static int ix86_isa_flags_explicit;
/* Define a set of ISAs which aren't available for a given ISA. MMX /* Define a set of ISAs which are available when a given ISA is
and SSE ISAs are handled separately. */ enabled. MMX and SSE ISAs are handled separately. */
#define OPTION_MASK_ISA_MMX_SET OPTION_MASK_ISA_MMX
#define OPTION_MASK_ISA_3DNOW_SET \
(OPTION_MASK_ISA_3DNOW | OPTION_MASK_ISA_MMX_SET)
#define OPTION_MASK_ISA_SSE_SET OPTION_MASK_ISA_SSE
#define OPTION_MASK_ISA_SSE2_SET \
(OPTION_MASK_ISA_SSE2 | OPTION_MASK_ISA_SSE_SET)
#define OPTION_MASK_ISA_SSE3_SET \
(OPTION_MASK_ISA_SSE3 | OPTION_MASK_ISA_SSE2_SET)
#define OPTION_MASK_ISA_SSSE3_SET \
(OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_SSE3_SET)
#define OPTION_MASK_ISA_SSE4_1_SET \
(OPTION_MASK_ISA_SSE4_1 | OPTION_MASK_ISA_SSSE3_SET)
#define OPTION_MASK_ISA_SSE4_2_SET \
(OPTION_MASK_ISA_SSE4_2 | OPTION_MASK_ISA_SSE4_1_SET)
/* SSE4 includes both SSE4.1 and SSE4.2. -msse4 should be the same
as -msse4.2. */
#define OPTION_MASK_ISA_SSE4_SET OPTION_MASK_ISA_SSE4_2_SET
#define OPTION_MASK_ISA_SSE4A_SET \
(OPTION_MASK_ISA_SSE4A | OPTION_MASK_ISA_SSE3_SET)
#define OPTION_MASK_ISA_SSE5_SET \
(OPTION_MASK_ISA_SSE5 | OPTION_MASK_ISA_SSE4A_SET)
/* Define a set of ISAs which aren't available when a given ISA is
disabled. MMX and SSE ISAs are handled separately. */
#define OPTION_MASK_ISA_MMX_UNSET \ #define OPTION_MASK_ISA_MMX_UNSET \
(OPTION_MASK_ISA_3DNOW | OPTION_MASK_ISA_3DNOW_UNSET) (OPTION_MASK_ISA_MMX | OPTION_MASK_ISA_3DNOW_UNSET)
#define OPTION_MASK_ISA_3DNOW_UNSET OPTION_MASK_ISA_3DNOW_A #define OPTION_MASK_ISA_3DNOW_UNSET \
(OPTION_MASK_ISA_3DNOW | OPTION_MASK_ISA_3DNOW_A_UNSET)
#define OPTION_MASK_ISA_3DNOW_A_UNSET OPTION_MASK_ISA_3DNOW_A
#define OPTION_MASK_ISA_SSE_UNSET \ #define OPTION_MASK_ISA_SSE_UNSET \
(OPTION_MASK_ISA_SSE2 | OPTION_MASK_ISA_SSE2_UNSET) (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_SSE2_UNSET)
#define OPTION_MASK_ISA_SSE2_UNSET \ #define OPTION_MASK_ISA_SSE2_UNSET \
(OPTION_MASK_ISA_SSE3 | OPTION_MASK_ISA_SSE3_UNSET) (OPTION_MASK_ISA_SSE2 | OPTION_MASK_ISA_SSE3_UNSET)
#define OPTION_MASK_ISA_SSE3_UNSET \ #define OPTION_MASK_ISA_SSE3_UNSET \
(OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_SSSE3_UNSET) (OPTION_MASK_ISA_SSE3 \
| OPTION_MASK_ISA_SSSE3_UNSET \
| OPTION_MASK_ISA_SSE4A_UNSET )
#define OPTION_MASK_ISA_SSSE3_UNSET \ #define OPTION_MASK_ISA_SSSE3_UNSET \
(OPTION_MASK_ISA_SSE4_1 | OPTION_MASK_ISA_SSE4_1_UNSET) (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_SSE4_1_UNSET)
#define OPTION_MASK_ISA_SSE4_1_UNSET \ #define OPTION_MASK_ISA_SSE4_1_UNSET \
(OPTION_MASK_ISA_SSE4_2 | OPTION_MASK_ISA_SSE4_2_UNSET) (OPTION_MASK_ISA_SSE4_1 | OPTION_MASK_ISA_SSE4_2_UNSET)
#define OPTION_MASK_ISA_SSE4_2_UNSET OPTION_MASK_ISA_SSE4A #define OPTION_MASK_ISA_SSE4_2_UNSET OPTION_MASK_ISA_SSE4_2
/* SSE4 includes both SSE4.1 and SSE4.2. -msse4 should be the same /* SSE4 includes both SSE4.1 and SSE4.2. -mno-sse4 should the same
as -msse4.1 -msse4.2. -mno-sse4 should the same as -mno-sse4.1. */ as -mno-sse4.1. */
#define OPTION_MASK_ISA_SSE4 \
(OPTION_MASK_ISA_SSE4_1 | OPTION_MASK_ISA_SSE4_2)
#define OPTION_MASK_ISA_SSE4_UNSET OPTION_MASK_ISA_SSE4_1_UNSET #define OPTION_MASK_ISA_SSE4_UNSET OPTION_MASK_ISA_SSE4_1_UNSET
#define OPTION_MASK_ISA_SSE4A_UNSET OPTION_MASK_ISA_SSE4 #define OPTION_MASK_ISA_SSE4A_UNSET \
(OPTION_MASK_ISA_SSE4A | OPTION_MASK_ISA_SSE5_UNSET)
#define OPTION_MASK_ISA_SSE5_UNSET \ #define OPTION_MASK_ISA_SSE5_UNSET OPTION_MASK_ISA_SSE5
(OPTION_MASK_ISA_3DNOW | OPTION_MASK_ISA_3DNOW_UNSET)
/* Vectorization library interface and handlers. */ /* Vectorization library interface and handlers. */
tree (*ix86_veclib_handler)(enum built_in_function, tree, tree) = NULL; tree (*ix86_veclib_handler)(enum built_in_function, tree, tree) = NULL;
...@@ -1810,8 +1840,12 @@ ix86_handle_option (size_t code, const char *arg ATTRIBUTE_UNUSED, int value) ...@@ -1810,8 +1840,12 @@ ix86_handle_option (size_t code, const char *arg ATTRIBUTE_UNUSED, int value)
switch (code) switch (code)
{ {
case OPT_mmmx: case OPT_mmmx:
ix86_isa_flags_explicit |= OPTION_MASK_ISA_MMX; if (value)
if (!value) {
ix86_isa_flags |= OPTION_MASK_ISA_MMX_SET;
ix86_isa_flags_explicit |= OPTION_MASK_ISA_MMX_SET;
}
else
{ {
ix86_isa_flags &= ~OPTION_MASK_ISA_MMX_UNSET; ix86_isa_flags &= ~OPTION_MASK_ISA_MMX_UNSET;
ix86_isa_flags_explicit |= OPTION_MASK_ISA_MMX_UNSET; ix86_isa_flags_explicit |= OPTION_MASK_ISA_MMX_UNSET;
...@@ -1819,8 +1853,12 @@ ix86_handle_option (size_t code, const char *arg ATTRIBUTE_UNUSED, int value) ...@@ -1819,8 +1853,12 @@ ix86_handle_option (size_t code, const char *arg ATTRIBUTE_UNUSED, int value)
return true; return true;
case OPT_m3dnow: case OPT_m3dnow:
ix86_isa_flags_explicit |= OPTION_MASK_ISA_3DNOW; if (value)
if (!value) {
ix86_isa_flags |= OPTION_MASK_ISA_3DNOW_SET;
ix86_isa_flags_explicit |= OPTION_MASK_ISA_3DNOW_SET;
}
else
{ {
ix86_isa_flags &= ~OPTION_MASK_ISA_3DNOW_UNSET; ix86_isa_flags &= ~OPTION_MASK_ISA_3DNOW_UNSET;
ix86_isa_flags_explicit |= OPTION_MASK_ISA_3DNOW_UNSET; ix86_isa_flags_explicit |= OPTION_MASK_ISA_3DNOW_UNSET;
...@@ -1831,8 +1869,12 @@ ix86_handle_option (size_t code, const char *arg ATTRIBUTE_UNUSED, int value) ...@@ -1831,8 +1869,12 @@ ix86_handle_option (size_t code, const char *arg ATTRIBUTE_UNUSED, int value)
return false; return false;
case OPT_msse: case OPT_msse:
ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE; if (value)
if (!value) {
ix86_isa_flags |= OPTION_MASK_ISA_SSE_SET;
ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE_SET;
}
else
{ {
ix86_isa_flags &= ~OPTION_MASK_ISA_SSE_UNSET; ix86_isa_flags &= ~OPTION_MASK_ISA_SSE_UNSET;
ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE_UNSET; ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE_UNSET;
...@@ -1840,8 +1882,12 @@ ix86_handle_option (size_t code, const char *arg ATTRIBUTE_UNUSED, int value) ...@@ -1840,8 +1882,12 @@ ix86_handle_option (size_t code, const char *arg ATTRIBUTE_UNUSED, int value)
return true; return true;
case OPT_msse2: case OPT_msse2:
ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE2; if (value)
if (!value) {
ix86_isa_flags |= OPTION_MASK_ISA_SSE2_SET;
ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE2_SET;
}
else
{ {
ix86_isa_flags &= ~OPTION_MASK_ISA_SSE2_UNSET; ix86_isa_flags &= ~OPTION_MASK_ISA_SSE2_UNSET;
ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE2_UNSET; ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE2_UNSET;
...@@ -1849,8 +1895,12 @@ ix86_handle_option (size_t code, const char *arg ATTRIBUTE_UNUSED, int value) ...@@ -1849,8 +1895,12 @@ ix86_handle_option (size_t code, const char *arg ATTRIBUTE_UNUSED, int value)
return true; return true;
case OPT_msse3: case OPT_msse3:
ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE3; if (value)
if (!value) {
ix86_isa_flags |= OPTION_MASK_ISA_SSE3_SET;
ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE3_SET;
}
else
{ {
ix86_isa_flags &= ~OPTION_MASK_ISA_SSE3_UNSET; ix86_isa_flags &= ~OPTION_MASK_ISA_SSE3_UNSET;
ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE3_UNSET; ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE3_UNSET;
...@@ -1858,8 +1908,12 @@ ix86_handle_option (size_t code, const char *arg ATTRIBUTE_UNUSED, int value) ...@@ -1858,8 +1908,12 @@ ix86_handle_option (size_t code, const char *arg ATTRIBUTE_UNUSED, int value)
return true; return true;
case OPT_mssse3: case OPT_mssse3:
ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSSE3; if (value)
if (!value) {
ix86_isa_flags |= OPTION_MASK_ISA_SSSE3_SET;
ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSSE3_SET;
}
else
{ {
ix86_isa_flags &= ~OPTION_MASK_ISA_SSSE3_UNSET; ix86_isa_flags &= ~OPTION_MASK_ISA_SSSE3_UNSET;
ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSSE3_UNSET; ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSSE3_UNSET;
...@@ -1867,8 +1921,12 @@ ix86_handle_option (size_t code, const char *arg ATTRIBUTE_UNUSED, int value) ...@@ -1867,8 +1921,12 @@ ix86_handle_option (size_t code, const char *arg ATTRIBUTE_UNUSED, int value)
return true; return true;
case OPT_msse4_1: case OPT_msse4_1:
ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_1; if (value)
if (!value) {
ix86_isa_flags |= OPTION_MASK_ISA_SSE4_1_SET;
ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_1_SET;
}
else
{ {
ix86_isa_flags &= ~OPTION_MASK_ISA_SSE4_1_UNSET; ix86_isa_flags &= ~OPTION_MASK_ISA_SSE4_1_UNSET;
ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_1_UNSET; ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_1_UNSET;
...@@ -1876,8 +1934,12 @@ ix86_handle_option (size_t code, const char *arg ATTRIBUTE_UNUSED, int value) ...@@ -1876,8 +1934,12 @@ ix86_handle_option (size_t code, const char *arg ATTRIBUTE_UNUSED, int value)
return true; return true;
case OPT_msse4_2: case OPT_msse4_2:
ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_2; if (value)
if (!value) {
ix86_isa_flags |= OPTION_MASK_ISA_SSE4_2_SET;
ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_2_SET;
}
else
{ {
ix86_isa_flags &= ~OPTION_MASK_ISA_SSE4_2_UNSET; ix86_isa_flags &= ~OPTION_MASK_ISA_SSE4_2_UNSET;
ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_2_UNSET; ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_2_UNSET;
...@@ -1885,8 +1947,8 @@ ix86_handle_option (size_t code, const char *arg ATTRIBUTE_UNUSED, int value) ...@@ -1885,8 +1947,8 @@ ix86_handle_option (size_t code, const char *arg ATTRIBUTE_UNUSED, int value)
return true; return true;
case OPT_msse4: case OPT_msse4:
ix86_isa_flags |= OPTION_MASK_ISA_SSE4; ix86_isa_flags |= OPTION_MASK_ISA_SSE4_SET;
ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4; ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_SET;
return true; return true;
case OPT_mno_sse4: case OPT_mno_sse4:
...@@ -1895,8 +1957,12 @@ ix86_handle_option (size_t code, const char *arg ATTRIBUTE_UNUSED, int value) ...@@ -1895,8 +1957,12 @@ ix86_handle_option (size_t code, const char *arg ATTRIBUTE_UNUSED, int value)
return true; return true;
case OPT_msse4a: case OPT_msse4a:
ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4A; if (value)
if (!value) {
ix86_isa_flags |= OPTION_MASK_ISA_SSE4A_SET;
ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4A_SET;
}
else
{ {
ix86_isa_flags &= ~OPTION_MASK_ISA_SSE4A_UNSET; ix86_isa_flags &= ~OPTION_MASK_ISA_SSE4A_UNSET;
ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4A_UNSET; ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4A_UNSET;
...@@ -1904,8 +1970,12 @@ ix86_handle_option (size_t code, const char *arg ATTRIBUTE_UNUSED, int value) ...@@ -1904,8 +1970,12 @@ ix86_handle_option (size_t code, const char *arg ATTRIBUTE_UNUSED, int value)
return true; return true;
case OPT_msse5: case OPT_msse5:
ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE5; if (value)
if (!value) {
ix86_isa_flags |= OPTION_MASK_ISA_SSE5_SET;
ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE5_SET;
}
else
{ {
ix86_isa_flags &= ~OPTION_MASK_ISA_SSE5_UNSET; ix86_isa_flags &= ~OPTION_MASK_ISA_SSE5_UNSET;
ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE5_UNSET; ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE5_UNSET;
...@@ -2530,34 +2600,6 @@ override_options (void) ...@@ -2530,34 +2600,6 @@ override_options (void)
if (!TARGET_80387) if (!TARGET_80387)
target_flags |= MASK_NO_FANCY_MATH_387; target_flags |= MASK_NO_FANCY_MATH_387;
/* Turn on SSE4A bultins for -msse5. */
if (TARGET_SSE5)
ix86_isa_flags |= OPTION_MASK_ISA_SSE4A;
/* Turn on SSE4.1 builtins for -msse4.2. */
if (TARGET_SSE4_2)
ix86_isa_flags |= OPTION_MASK_ISA_SSE4_1;
/* Turn on SSSE3 builtins for -msse4.1. */
if (TARGET_SSE4_1)
ix86_isa_flags |= OPTION_MASK_ISA_SSSE3;
/* Turn on SSE3 builtins for -mssse3. */
if (TARGET_SSSE3)
ix86_isa_flags |= OPTION_MASK_ISA_SSE3;
/* Turn on SSE3 builtins for -msse4a. */
if (TARGET_SSE4A)
ix86_isa_flags |= OPTION_MASK_ISA_SSE3;
/* Turn on SSE2 builtins for -msse3. */
if (TARGET_SSE3)
ix86_isa_flags |= OPTION_MASK_ISA_SSE2;
/* Turn on SSE builtins for -msse2. */
if (TARGET_SSE2)
ix86_isa_flags |= OPTION_MASK_ISA_SSE;
/* Turn on MMX builtins for -msse. */ /* Turn on MMX builtins for -msse. */
if (TARGET_SSE) if (TARGET_SSE)
{ {
...@@ -2565,10 +2607,6 @@ override_options (void) ...@@ -2565,10 +2607,6 @@ override_options (void)
x86_prefetch_sse = true; x86_prefetch_sse = true;
} }
/* Turn on MMX builtins for 3Dnow. */
if (TARGET_3DNOW)
ix86_isa_flags |= OPTION_MASK_ISA_MMX;
/* Turn on popcnt instruction for -msse4.2 or -mabm. */ /* Turn on popcnt instruction for -msse4.2 or -mabm. */
if (TARGET_SSE4_2 || TARGET_ABM) if (TARGET_SSE4_2 || TARGET_ABM)
x86_popcnt = true; x86_popcnt = true;
......
2008-02-18 H.J. Lu <hongjiu.lu@intel.com>
PR target/35189
* gcc.target/i386/isa-1.c: New.
* gcc.target/i386/isa-2.c: Likewise.
* gcc.target/i386/isa-3.c: Likewise.
* gcc.target/i386/isa-4.c: Likewise.
* gcc.target/i386/isa-5.c: Likewise.
* gcc.target/i386/isa-6.c: Likewise.
* gcc.target/i386/isa-7.c: Likewise.
* gcc.target/i386/isa-8.c: Likewise.
* gcc.target/i386/isa-9.c: Likewise.
* gcc.target/i386/isa-10.c: Likewise.
* gcc.target/i386/isa-11.c: Likewise.
* gcc.target/i386/isa-12.c: Likewise.
* gcc.target/i386/isa-13.c: Likewise.
* gcc.target/i386/isa-14.c: Likewise.
2008-02-18 Joey Ye <joey.ye@intel.com> 2008-02-18 Joey Ye <joey.ye@intel.com>
H.J. Lu <hongjiu.lu@intel.com> H.J. Lu <hongjiu.lu@intel.com>
/* { dg-do run } */
/* { dg-options "-msse4" } */
extern void abort (void);
int
main ()
{
#if !defined __SSE__
abort ();
#endif
#if !defined __SSE2__
abort ();
#endif
#if !defined __SSE3__
abort ();
#endif
#if !defined __SSSE3__
abort ();
#endif
#if !defined __SSE4_1__
abort ();
#endif
#if !defined __SSE4_2__
abort ();
#endif
#if defined __SSE4A__
abort ();
#endif
#if defined __SSE5__
abort ();
#endif
return 0;
}
/* { dg-do run } */
/* { dg-options "-msse5 -mno-sse4" } */
extern void abort (void);
int
main ()
{
#if !defined __SSE__
abort ();
#endif
#if !defined __SSE2__
abort ();
#endif
#if !defined __SSE3__
abort ();
#endif
#if defined __SSSE3__
abort ();
#endif
#if defined __SSE4_1__
abort ();
#endif
#if defined __SSE4_2__
abort ();
#endif
#if !defined __SSE4A__
abort ();
#endif
#if !defined __SSE5__
abort ();
#endif
return 0;
}
/* { dg-do run } */
/* { dg-options "-msse5 -mno-ssse3" } */
extern void abort (void);
int
main ()
{
#if !defined __SSE__
abort ();
#endif
#if !defined __SSE2__
abort ();
#endif
#if !defined __SSE3__
abort ();
#endif
#if defined __SSSE3__
abort ();
#endif
#if defined __SSE4_1__
abort ();
#endif
#if defined __SSE4_2__
abort ();
#endif
#if !defined __SSE4A__
abort ();
#endif
#if !defined __SSE5__
abort ();
#endif
return 0;
}
/* { dg-do run } */
/* { dg-options "-msse5 -mno-sse3" } */
extern void abort (void);
int
main ()
{
#if !defined __SSE__
abort ();
#endif
#if !defined __SSE2__
abort ();
#endif
#if defined __SSE3__
abort ();
#endif
#if defined __SSSE3__
abort ();
#endif
#if defined __SSE4_1__
abort ();
#endif
#if defined __SSE4_2__
abort ();
#endif
#if defined __SSE4A__
abort ();
#endif
#if defined __SSE5__
abort ();
#endif
return 0;
}
/* { dg-do run } */
/* { dg-options "-msse5 -mno-sse2" } */
extern void abort (void);
int
main ()
{
#if !defined __SSE__
abort ();
#endif
#if defined __SSE2__
abort ();
#endif
#if defined __SSE3__
abort ();
#endif
#if defined __SSSE3__
abort ();
#endif
#if defined __SSE4_1__
abort ();
#endif
#if defined __SSE4_2__
abort ();
#endif
#if defined __SSE4A__
abort ();
#endif
#if defined __SSE5__
abort ();
#endif
return 0;
}
/* { dg-do run } */
/* { dg-options "-msse5 -mno-sse" } */
extern void abort (void);
int
main ()
{
#if defined __SSE__
abort ();
#endif
#if defined __SSE2__
abort ();
#endif
#if defined __SSE3__
abort ();
#endif
#if defined __SSSE3__
abort ();
#endif
#if defined __SSE4_1__
abort ();
#endif
#if defined __SSE4_2__
abort ();
#endif
#if defined __SSE4A__
abort ();
#endif
#if defined __SSE5__
abort ();
#endif
return 0;
}
/* { dg-do run } */
/* { dg-options "-msse4 -msse5" } */
extern void abort (void);
int
main ()
{
#if !defined __SSE__
abort ();
#endif
#if !defined __SSE2__
abort ();
#endif
#if !defined __SSE3__
abort ();
#endif
#if !defined __SSSE3__
abort ();
#endif
#if !defined __SSE4_1__
abort ();
#endif
#if !defined __SSE4_2__
abort ();
#endif
#if !defined __SSE4A__
abort ();
#endif
#if !defined __SSE5__
abort ();
#endif
return 0;
}
/* { dg-do run } */
/* { dg-options "-msse4 -msse5 -msse4a" } */
extern void abort (void);
int
main ()
{
#if !defined __SSE__
abort ();
#endif
#if !defined __SSE2__
abort ();
#endif
#if !defined __SSE3__
abort ();
#endif
#if !defined __SSSE3__
abort ();
#endif
#if !defined __SSE4_1__
abort ();
#endif
#if !defined __SSE4_2__
abort ();
#endif
#if !defined __SSE4A__
abort ();
#endif
#if !defined __SSE5__
abort ();
#endif
return 0;
}
/* { dg-do run } */
/* { dg-options "-march=core2 -msse5 -mno-sse4" } */
extern void abort (void);
int
main ()
{
#if !defined __SSE__
abort ();
#endif
#if !defined __SSE2__
abort ();
#endif
#if !defined __SSE3__
abort ();
#endif
#if !defined __SSSE3__
abort ();
#endif
#if defined __SSE4_1__
abort ();
#endif
#if defined __SSE4_2__
abort ();
#endif
#if !defined __SSE4A__
abort ();
#endif
#if !defined __SSE5__
abort ();
#endif
return 0;
}
/* { dg-do run } */
/* { dg-options "-march=core2 -msse4a -mno-sse4" } */
extern void abort (void);
int
main ()
{
#if !defined __SSE__
abort ();
#endif
#if !defined __SSE2__
abort ();
#endif
#if !defined __SSE3__
abort ();
#endif
#if !defined __SSSE3__
abort ();
#endif
#if defined __SSE4_1__
abort ();
#endif
#if defined __SSE4_2__
abort ();
#endif
#if !defined __SSE4A__
abort ();
#endif
#if defined __SSE5__
abort ();
#endif
return 0;
}
/* { dg-do run } */
/* { dg-options "-march=amdfam10 -mno-sse4" } */
extern void abort (void);
int
main ()
{
#if !defined __SSE__
abort ();
#endif
#if !defined __SSE2__
abort ();
#endif
#if !defined __SSE3__
abort ();
#endif
#if defined __SSSE3__
abort ();
#endif
#if defined __SSE4_1__
abort ();
#endif
#if defined __SSE4_2__
abort ();
#endif
#if !defined __SSE4A__
abort ();
#endif
#if defined __SSE5__
abort ();
#endif
return 0;
}
/* { dg-do run } */
/* { dg-options "-march=amdfam10 -msse5 -mno-sse4" } */
extern void abort (void);
int
main ()
{
#if !defined __SSE__
abort ();
#endif
#if !defined __SSE2__
abort ();
#endif
#if !defined __SSE3__
abort ();
#endif
#if defined __SSSE3__
abort ();
#endif
#if defined __SSE4_1__
abort ();
#endif
#if defined __SSE4_2__
abort ();
#endif
#if !defined __SSE4A__
abort ();
#endif
#if !defined __SSE5__
abort ();
#endif
return 0;
}
/* { dg-do run } */
/* { dg-options "-march=amdfam10 -msse5 -mno-sse4a" } */
extern void abort (void);
int
main ()
{
#if !defined __SSE__
abort ();
#endif
#if !defined __SSE2__
abort ();
#endif
#if !defined __SSE3__
abort ();
#endif
#if defined __SSSE3__
abort ();
#endif
#if defined __SSE4_1__
abort ();
#endif
#if defined __SSE4_2__
abort ();
#endif
#if defined __SSE4A__
abort ();
#endif
#if defined __SSE5__
abort ();
#endif
return 0;
}
/* { dg-do run } */
/* { dg-options "-march=amdfam10 -mno-sse5" } */
extern void abort (void);
int
main ()
{
#if !defined __SSE__
abort ();
#endif
#if !defined __SSE2__
abort ();
#endif
#if !defined __SSE3__
abort ();
#endif
#if defined __SSSE3__
abort ();
#endif
#if defined __SSE4_1__
abort ();
#endif
#if defined __SSE4_2__
abort ();
#endif
#if !defined __SSE4A__
abort ();
#endif
#if defined __SSE5__
abort ();
#endif
return 0;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment