Commit d508e6f8 by H.J. Lu Committed by H.J. Lu

struct-layout-1_generate.c (vector_types): Add v32qi, v16hi, v8si, v4di, v8sf,…

struct-layout-1_generate.c (vector_types): Add v32qi, v16hi, v8si, v4di, v8sf, v4df, u32qi, u16hi, u8si, u4di, u8sf and u4df.

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

	* gcc.dg/compat/struct-layout-1_generate.c (vector_types): Add
	v32qi, v16hi, v8si, v4di, v8sf, v4df, u32qi, u16hi, u8si, u4di,
	u8sf and u4df.

	* gcc.dg/compat/union-m128-1_main.c: Run only on x86.  Remove
	__x86_64__ check.  Include "cpuid.h".
	(main): Check SSE2 at runtime.

	* gcc.dg/compat/union-m128-1_x.c: Compile with -msse2.  Remove
	__x86_64__ check.
	* gcc.dg/compat/union-m128-1_y.c: Likewise.

	* gcc.dg/compat/vector-1_x.c: Add 32byte vector tests.
	* gcc.dg/compat/vector-1_y.c: Likewise.
	* gcc.dg/compat/vector-2_x.c: Likewise.
	* gcc.dg/compat/vector-2_y.c: Likewise.

	* gcc.dg/compat/vector-1a_main.c: New.
	* gcc.dg/compat/vector-1a_x.c: Likewise.
	* gcc.dg/compat/vector-1a_y.c: Likewise.
	* gcc.dg/compat/vector-2a_main.c: Likewise.
	* gcc.dg/compat/vector-2a_x.c: Likewise.
	* gcc.dg/compat/vector-2a_y.c: Likewise.

	* gcc.dg/compat/vector-defs.h (v32qi): New.
	(v16hi): Likewise.
	(v8si): Likewise.
	(v4di): Likewise.
	(v8sf): Likewise.
	(v4df): Likewise.
	(u32qi): Likewise.
	(u16hi): Likewise.
	(u8si): Likewise.
	(u4di): Likewise.
	(u8sf): Likewise.
	(u4df): Likewise.

	* lib/compat.exp (compat-get-options-main): Support dg-skip-if.

From-SVN: r137611
parent 5510cef5
2008-07-07 H.J. Lu <hongjiu.lu@intel.com>
* gcc.dg/compat/struct-layout-1_generate.c (vector_types): Add
v32qi, v16hi, v8si, v4di, v8sf, v4df, u32qi, u16hi, u8si, u4di,
u8sf and u4df.
* gcc.dg/compat/union-m128-1_main.c: Run only on x86. Remove
__x86_64__ check. Include "cpuid.h".
(main): Check SSE2 at runtime.
* gcc.dg/compat/union-m128-1_x.c: Compile with -msse2. Remove
__x86_64__ check.
* gcc.dg/compat/union-m128-1_y.c: Likewise.
* gcc.dg/compat/vector-1_x.c: Add 32byte vector tests.
* gcc.dg/compat/vector-1_y.c: Likewise.
* gcc.dg/compat/vector-2_x.c: Likewise.
* gcc.dg/compat/vector-2_y.c: Likewise.
* gcc.dg/compat/vector-1a_main.c: New.
* gcc.dg/compat/vector-1a_x.c: Likewise.
* gcc.dg/compat/vector-1a_y.c: Likewise.
* gcc.dg/compat/vector-2a_main.c: Likewise.
* gcc.dg/compat/vector-2a_x.c: Likewise.
* gcc.dg/compat/vector-2a_y.c: Likewise.
* gcc.dg/compat/vector-defs.h (v32qi): New.
(v16hi): Likewise.
(v8si): Likewise.
(v4di): Likewise.
(v8sf): Likewise.
(v4df): Likewise.
(u32qi): Likewise.
(u16hi): Likewise.
(u8si): Likewise.
(u4di): Likewise.
(u8sf): Likewise.
(u4df): Likewise.
* lib/compat.exp (compat-get-options-main): Support dg-skip-if.
2008-07-07 Andy Hutchinson <hutchinsonandy@aim.com>
* gcc.c-torture/compile/20080625-1.c: Skip for AVR target.
......
......@@ -186,30 +186,42 @@ struct types vector_types[] = {
/* vector-defs.h typedefs */
{ "v8qi", TYPE_OTHER, 0, 0 },
{ "v16qi", TYPE_OTHER, 0, 0 },
{ "v32qi", TYPE_OTHER, 0, 0 },
{ "v2hi", TYPE_OTHER, 0, 0 },
{ "v4hi", TYPE_OTHER, 0, 0 },
{ "v8hi", TYPE_OTHER, 0, 0 },
{ "v16hi", TYPE_OTHER, 0, 0 },
{ "v2si", TYPE_OTHER, 0, 0 },
{ "v4si", TYPE_OTHER, 0, 0 },
{ "v8si", TYPE_OTHER, 0, 0 },
{ "v1di", TYPE_OTHER, 0, 0 },
{ "v2di", TYPE_OTHER, 0, 0 },
{ "v4di", TYPE_OTHER, 0, 0 },
{ "v2sf", TYPE_OTHER, 0, 0 },
{ "v4sf", TYPE_OTHER, 0, 0 },
{ "v8sf", TYPE_OTHER, 0, 0 },
{ "v16sf", TYPE_OTHER, 0, 0 },
{ "v2df", TYPE_OTHER, 0, 0 },
{ "v4df", TYPE_OTHER, 0, 0 },
{ "u8qi", TYPE_OTHER, 0, 0 },
{ "u16qi", TYPE_OTHER, 0, 0 },
{ "u32qi", TYPE_OTHER, 0, 0 },
{ "u2hi", TYPE_OTHER, 0, 0 },
{ "u4hi", TYPE_OTHER, 0, 0 },
{ "u8hi", TYPE_OTHER, 0, 0 },
{ "u16hi", TYPE_OTHER, 0, 0 },
{ "u2si", TYPE_OTHER, 0, 0 },
{ "u4si", TYPE_OTHER, 0, 0 },
{ "u8si", TYPE_OTHER, 0, 0 },
{ "u1di", TYPE_OTHER, 0, 0 },
{ "u2di", TYPE_OTHER, 0, 0 },
{ "u4di", TYPE_OTHER, 0, 0 },
{ "u2sf", TYPE_OTHER, 0, 0 },
{ "u4sf", TYPE_OTHER, 0, 0 },
{ "u8sf", TYPE_OTHER, 0, 0 },
{ "u16sf", TYPE_OTHER, 0, 0 },
{ "u2df", TYPE_OTHER, 0, 0 },
{ "u4df", TYPE_OTHER, 0, 0 },
{ "__m64", TYPE_OTHER, 0, 0 },
{ "__m128", TYPE_OTHER, 0, 0 }
#define NVTYPES2 (sizeof (vector_types) / sizeof (vector_types[0]))
......
/* { dg-skip-if "test SSE2 support" { ! { i?86-*-* x86_64-*-* } } } */
/* { dg-options "-O" } */
#ifdef __x86_64__
#include "cpuid.h"
/* Test function argument passing. PR target/15301. */
extern void union_m128_1_x (void);
......@@ -9,13 +11,14 @@ extern void exit (int);
int
main ()
{
union_m128_1_x ();
unsigned int eax, ebx, ecx, edx;
if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx))
return 0;
/* Run SSE vector test only if host has SSE2 support. */
if (edx & bit_SSE2)
union_m128_1_x ();
exit (0);
}
#else
int
main ()
{
return 0;
}
#endif
/* { dg-options "-O" } */
/* { dg-options "-O -msse2" } */
#ifdef __x86_64__
#include "union-m128-1.h"
SS_union_mi128 un;
......@@ -23,7 +22,3 @@ union_m128_1_x ()
foo(un);
foo(st);
}
#else
int dummy_x;
#endif
/* { dg-options "-O" } */
/* { dg-options "-O -msse2" } */
#ifdef __x86_64__
#include <stdlib.h>
#include "union-m128-1.h"
......@@ -26,7 +25,3 @@ foo (SS_struct_mi128 st)
|| x.u [1] != 0xfedcba9876543210LL)
abort ();
}
#else
int dummy_y;
#endif
......@@ -8,13 +8,17 @@
SETUP (8, qi);
SETUP (16, qi);
SETUP (32, qi);
SETUP (2, hi);
SETUP (4, hi);
SETUP (8, hi);
SETUP (16, hi);
SETUP (2, si);
SETUP (4, si);
SETUP (8, si);
SETUP (1, di);
SETUP (2, di);
SETUP (4, di);
#endif
......@@ -26,13 +30,17 @@ vector_1_x (void)
CHECK (8, qi);
CHECK (16, qi);
CHECK (32, qi);
CHECK (2, hi);
CHECK (4, hi);
CHECK (8, hi);
CHECK (16, hi);
CHECK (2, si);
CHECK (4, si);
CHECK (8, si);
CHECK (1, di);
CHECK (2, di);
CHECK (4, di);
DEBUG_FINI
......
......@@ -8,12 +8,16 @@
TEST (8, qi, 101)
TEST (16, qi, 101)
TEST (32, qi, 90)
TEST (2, hi, 201)
TEST (4, hi, 202)
TEST (8, hi, 203)
TEST (16, hi, 203)
TEST (2, si, 301)
TEST (4, si, 302)
TEST (8, si, 303)
TEST (1, di, 401)
TEST (2, di, 402)
TEST (4, di, 403)
#endif
/* { dg-skip-if "test SSE2 vector" { ! { i?86-*-* x86_64-*-* } } } */
/* Test compatibility of vector types: layout between separately-compiled
modules, parameter passing, and function return. This test uses
vectors of integer values. */
#include "cpuid.h"
extern void vector_1_x (void);
extern void exit (int);
int fails;
int
main ()
{
unsigned int eax, ebx, ecx, edx;
if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx))
return 0;
/* Run SSE vector test only if host has SSE2 support. */
if (edx & bit_SSE2)
vector_1_x ();
exit (0);
}
/* { dg-options "-w -mno-mmx -msse2" } */
#include "vector-1_x.c"
/* { dg-options "-w -mno-mmx -msse2" } */
#include "vector-1_y.c"
......@@ -10,7 +10,9 @@
SETUP (2, sf);
SETUP (4, sf);
SETUP (16, sf);
SETUP (8, sf);
SETUP (2, df);
SETUP (4, df);
#endif
......@@ -22,7 +24,9 @@ vector_2_x (void)
CHECK (2, sf);
CHECK (4, sf);
CHECK (8, sf);
CHECK (16, sf);
CHECK (4, df);
CHECK (2, df);
DEBUG_FINI
......
......@@ -9,7 +9,9 @@
TEST (2, sf, 301.0)
TEST (4, sf, 302.0)
TEST (8, sf, 303.0)
TEST (16, sf, 304.0)
TEST (2, df, 402.0)
TEST (4, df, 402.0)
#endif
/* { dg-skip-if "test SSE2 support" { ! { i?86-*-* x86_64-*-* } } } */
/* Test compatibility of vector types: layout between separately-compiled
modules, parameter passing, and function return. This test uses
vectors of floating points values. */
#include "cpuid.h"
extern void vector_2_x (void);
extern void exit (int);
int fails;
int
main ()
{
unsigned int eax, ebx, ecx, edx;
if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx))
return 0;
/* Run SSE vector test only if host has SSE2 support. */
if (edx & bit_SSE2)
vector_2_x ();
exit (0);
}
/* { dg-options "-w -mno-mmx -msse2" } */
#include "vector-2_x.c"
/* { dg-options "-w -mno-mmx -msse2" } */
#include "vector-2_y.c"
......@@ -56,6 +56,20 @@ typedef float __attribute__((mode(V2DF))) v2df;
#endif
typedef qi __attribute__((vector_size (32))) v32qi;
typedef hi __attribute__((vector_size (32))) v16hi;
typedef si __attribute__((vector_size (32))) v8si;
typedef di __attribute__((vector_size (32))) v4di;
typedef sf __attribute__((vector_size (32))) v8sf;
typedef df __attribute__((vector_size (32))) v4df;
typedef union U32QI { v32qi v; qi a[32]; } u32qi;
typedef union U16HI { v16hi v; hi a[16]; } u16hi;
typedef union U8SI { v8si v; si a[8]; } u8si;
typedef union U4DI { v4di v; di a[4]; } u4di;
typedef union U8SF { v8sf v; sf a[8]; } u8sf;
typedef union U4DF { v4df v; df a[4]; } u4df;
typedef union U8QI { v8qi v; qi a[8]; } u8qi;
typedef union U16QI { v16qi v; qi a[16]; } u16qi;
......
......@@ -156,6 +156,8 @@ proc compat-run { testname objlist dest optall optfile optstr } {
proc compat-get-options-main { src } {
# dg-options sets a variable called dg-extra-tool-flags.
set dg-extra-tool-flags ""
# dg-options sets a variable called tool_flags.
set tool_flags ""
# dg-require-* sets dg-do-what.
upvar dg-do-what dg-do-what
......@@ -164,6 +166,7 @@ proc compat-get-options-main { src } {
foreach op $tmp {
set cmd [lindex $op 0]
if { ![string compare "dg-options" $cmd] \
|| [string match "dg-skip-if" $cmd] \
|| [string match "dg-require-*" $cmd] } {
set status [catch "$op" errmsg]
if { $status != 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