x86: extend vect-args testcase to AVX flavors
diff mbox

Message ID 5451FBE302000078000435BD@mail.emea.novell.com
State New
Headers show

Commit Message

Jan Beulich Oct. 30, 2014, 7:50 a.m. UTC
gcc/testsuite:
2014-10-30  Jan Beulich  <jbeulich@suse.com>

	* gcc.target/i386/i386.exp: Extend option set to test
	vect-args.c with to include -mavx, -mavx2, and -mavx512f.
	* gcc.target/i386/vect-args.c: Add AVX* modes and tests.
x86: extend vect-args testcase to AVX flavors

gcc/testsuite:
2014-10-30  Jan Beulich  <jbeulich@suse.com>

	* gcc.target/i386/i386.exp: Extend option set to test
	vect-args.c with to include -mavx, -mavx2, and -mavx512f.
	* gcc.target/i386/vect-args.c: Add AVX* modes and tests.

--- a/gcc/testsuite/gcc.target/i386/i386.exp
+++ b/gcc/testsuite/gcc.target/i386/i386.exp
@@ -318,9 +318,9 @@ clearcap-init
 
 global runtests
 # Special case compilation of vect-args.c so we don't have to
-# replicate it 10 times.
+# replicate it 16 times.
 if [runtest_file_p $runtests $srcdir/$subdir/vect-args.c] {
-  foreach type { "" -mmmx -m3dnow -msse -msse2 } {
+  foreach type { "" -mmmx -m3dnow -msse -msse2 -mavx -mavx2 -mavx512f } {
     foreach level { "" -O } {
       set flags "$type $level"
       verbose -log "Testing vect-args, $flags" 1
--- a/gcc/testsuite/gcc.target/i386/vect-args.c
+++ b/gcc/testsuite/gcc.target/i386/vect-args.c
@@ -1,6 +1,22 @@
 /* { dg-do compile } */
 /* { dg-options "-w -Wno-psabi" } */
 
+/* AVX512F and AVX512BW modes.  */
+typedef unsigned char V64QImode __attribute__((vector_size(64)));
+typedef unsigned short V32HImode __attribute__((vector_size(64)));
+typedef unsigned int V16SImode __attribute__((vector_size(64)));
+typedef unsigned long long V8DImode __attribute__((vector_size(64)));
+typedef float V16SFmode __attribute__((vector_size(64)));
+typedef double V8DFmode __attribute__((vector_size(64)));
+
+/* AVX and AVX2 modes.  */
+typedef unsigned char V32QImode __attribute__((vector_size(32)));
+typedef unsigned short V16HImode __attribute__((vector_size(32)));
+typedef unsigned int V8SImode __attribute__((vector_size(32)));
+typedef unsigned long long V4DImode __attribute__((vector_size(32)));
+typedef float V8SFmode __attribute__((vector_size(32)));
+typedef double V4DFmode __attribute__((vector_size(32)));
+
 /* SSE1 and SSE2 modes.  */
 typedef unsigned char V16QImode __attribute__((vector_size(16)));
 typedef unsigned short V8HImode __attribute__((vector_size(16)));
@@ -21,12 +37,27 @@ extern TYPE data_##TYPE;				\
 void r_##TYPE (TYPE x) { data_##TYPE = x; }		\
 void s_##TYPE (void) { r_##TYPE (data_##TYPE); }
 
+TEST(V64QImode)
+TEST(V32HImode)
+TEST(V16SImode)
+TEST(V8DImode)
+TEST(V16SFmode)
+TEST(V8DFmode)
+
+TEST(V32QImode)
+TEST(V16HImode)
+TEST(V8SImode)
+TEST(V4DImode)
+TEST(V8SFmode)
+TEST(V4DFmode)
+
 TEST(V16QImode)
 TEST(V8HImode)
 TEST(V4SImode)
 TEST(V2DImode)
 TEST(V4SFmode)
 TEST(V2DFmode)
+
 TEST(V8QImode)
 TEST(V4HImode)
 TEST(V2SImode)

Comments

Uros Bizjak Oct. 30, 2014, 8:32 a.m. UTC | #1
On Thu, Oct 30, 2014 at 8:50 AM, Jan Beulich <JBeulich@suse.com> wrote:
> gcc/testsuite:
> 2014-10-30  Jan Beulich  <jbeulich@suse.com>
>
>         * gcc.target/i386/i386.exp: Extend option set to test
>         vect-args.c with to include -mavx, -mavx2, and -mavx512f.
>         * gcc.target/i386/vect-args.c: Add AVX* modes and tests.

OK, but let's also wait for Kirill's opinion.

Thanks,
Uros.

> --- a/gcc/testsuite/gcc.target/i386/i386.exp
> +++ b/gcc/testsuite/gcc.target/i386/i386.exp
> @@ -318,9 +318,9 @@ clearcap-init
>
>  global runtests
>  # Special case compilation of vect-args.c so we don't have to
> -# replicate it 10 times.
> +# replicate it 16 times.
>  if [runtest_file_p $runtests $srcdir/$subdir/vect-args.c] {
> -  foreach type { "" -mmmx -m3dnow -msse -msse2 } {
> +  foreach type { "" -mmmx -m3dnow -msse -msse2 -mavx -mavx2 -mavx512f } {
>      foreach level { "" -O } {
>        set flags "$type $level"
>        verbose -log "Testing vect-args, $flags" 1
> --- a/gcc/testsuite/gcc.target/i386/vect-args.c
> +++ b/gcc/testsuite/gcc.target/i386/vect-args.c
> @@ -1,6 +1,22 @@
>  /* { dg-do compile } */
>  /* { dg-options "-w -Wno-psabi" } */
>
> +/* AVX512F and AVX512BW modes.  */
> +typedef unsigned char V64QImode __attribute__((vector_size(64)));
> +typedef unsigned short V32HImode __attribute__((vector_size(64)));
> +typedef unsigned int V16SImode __attribute__((vector_size(64)));
> +typedef unsigned long long V8DImode __attribute__((vector_size(64)));
> +typedef float V16SFmode __attribute__((vector_size(64)));
> +typedef double V8DFmode __attribute__((vector_size(64)));
> +
> +/* AVX and AVX2 modes.  */
> +typedef unsigned char V32QImode __attribute__((vector_size(32)));
> +typedef unsigned short V16HImode __attribute__((vector_size(32)));
> +typedef unsigned int V8SImode __attribute__((vector_size(32)));
> +typedef unsigned long long V4DImode __attribute__((vector_size(32)));
> +typedef float V8SFmode __attribute__((vector_size(32)));
> +typedef double V4DFmode __attribute__((vector_size(32)));
> +
>  /* SSE1 and SSE2 modes.  */
>  typedef unsigned char V16QImode __attribute__((vector_size(16)));
>  typedef unsigned short V8HImode __attribute__((vector_size(16)));
> @@ -21,12 +37,27 @@ extern TYPE data_##TYPE;                            \
>  void r_##TYPE (TYPE x) { data_##TYPE = x; }            \
>  void s_##TYPE (void) { r_##TYPE (data_##TYPE); }
>
> +TEST(V64QImode)
> +TEST(V32HImode)
> +TEST(V16SImode)
> +TEST(V8DImode)
> +TEST(V16SFmode)
> +TEST(V8DFmode)
> +
> +TEST(V32QImode)
> +TEST(V16HImode)
> +TEST(V8SImode)
> +TEST(V4DImode)
> +TEST(V8SFmode)
> +TEST(V4DFmode)
> +
>  TEST(V16QImode)
>  TEST(V8HImode)
>  TEST(V4SImode)
>  TEST(V2DImode)
>  TEST(V4SFmode)
>  TEST(V2DFmode)
> +
>  TEST(V8QImode)
>  TEST(V4HImode)
>  TEST(V2SImode)
>
>
>
Kirill Yukhin Oct. 31, 2014, 4:42 p.m. UTC | #2
On 30 Oct 09:32, Uros Bizjak wrote:
> On Thu, Oct 30, 2014 at 8:50 AM, Jan Beulich <JBeulich@suse.com> wrote:
> > gcc/testsuite:
> > 2014-10-30  Jan Beulich  <jbeulich@suse.com>
> >
> >         * gcc.target/i386/i386.exp: Extend option set to test
> >         vect-args.c with to include -mavx, -mavx2, and -mavx512f.
> >         * gcc.target/i386/vect-args.c: Add AVX* modes and tests.
> 
> OK, but let's also wait for Kirill's opinion.
I like the change.

--
Thanks, K
> 
> Thanks,
> Uros.
> 
> > --- a/gcc/testsuite/gcc.target/i386/i386.exp
> > +++ b/gcc/testsuite/gcc.target/i386/i386.exp
> > @@ -318,9 +318,9 @@ clearcap-init
> >
> >  global runtests
> >  # Special case compilation of vect-args.c so we don't have to
> > -# replicate it 10 times.
> > +# replicate it 16 times.
> >  if [runtest_file_p $runtests $srcdir/$subdir/vect-args.c] {
> > -  foreach type { "" -mmmx -m3dnow -msse -msse2 } {
> > +  foreach type { "" -mmmx -m3dnow -msse -msse2 -mavx -mavx2 -mavx512f } {
> >      foreach level { "" -O } {
> >        set flags "$type $level"
> >        verbose -log "Testing vect-args, $flags" 1
> > --- a/gcc/testsuite/gcc.target/i386/vect-args.c
> > +++ b/gcc/testsuite/gcc.target/i386/vect-args.c
> > @@ -1,6 +1,22 @@
> >  /* { dg-do compile } */
> >  /* { dg-options "-w -Wno-psabi" } */
> >
> > +/* AVX512F and AVX512BW modes.  */
> > +typedef unsigned char V64QImode __attribute__((vector_size(64)));
> > +typedef unsigned short V32HImode __attribute__((vector_size(64)));
> > +typedef unsigned int V16SImode __attribute__((vector_size(64)));
> > +typedef unsigned long long V8DImode __attribute__((vector_size(64)));
> > +typedef float V16SFmode __attribute__((vector_size(64)));
> > +typedef double V8DFmode __attribute__((vector_size(64)));
> > +
> > +/* AVX and AVX2 modes.  */
> > +typedef unsigned char V32QImode __attribute__((vector_size(32)));
> > +typedef unsigned short V16HImode __attribute__((vector_size(32)));
> > +typedef unsigned int V8SImode __attribute__((vector_size(32)));
> > +typedef unsigned long long V4DImode __attribute__((vector_size(32)));
> > +typedef float V8SFmode __attribute__((vector_size(32)));
> > +typedef double V4DFmode __attribute__((vector_size(32)));
> > +
> >  /* SSE1 and SSE2 modes.  */
> >  typedef unsigned char V16QImode __attribute__((vector_size(16)));
> >  typedef unsigned short V8HImode __attribute__((vector_size(16)));
> > @@ -21,12 +37,27 @@ extern TYPE data_##TYPE;                            \
> >  void r_##TYPE (TYPE x) { data_##TYPE = x; }            \
> >  void s_##TYPE (void) { r_##TYPE (data_##TYPE); }
> >
> > +TEST(V64QImode)
> > +TEST(V32HImode)
> > +TEST(V16SImode)
> > +TEST(V8DImode)
> > +TEST(V16SFmode)
> > +TEST(V8DFmode)
> > +
> > +TEST(V32QImode)
> > +TEST(V16HImode)
> > +TEST(V8SImode)
> > +TEST(V4DImode)
> > +TEST(V8SFmode)
> > +TEST(V4DFmode)
> > +
> >  TEST(V16QImode)
> >  TEST(V8HImode)
> >  TEST(V4SImode)
> >  TEST(V2DImode)
> >  TEST(V4SFmode)
> >  TEST(V2DFmode)
> > +
> >  TEST(V8QImode)
> >  TEST(V4HImode)
> >  TEST(V2SImode)
> >
> >
> >

Patch
diff mbox

--- a/gcc/testsuite/gcc.target/i386/i386.exp
+++ b/gcc/testsuite/gcc.target/i386/i386.exp
@@ -318,9 +318,9 @@  clearcap-init
 
 global runtests
 # Special case compilation of vect-args.c so we don't have to
-# replicate it 10 times.
+# replicate it 16 times.
 if [runtest_file_p $runtests $srcdir/$subdir/vect-args.c] {
-  foreach type { "" -mmmx -m3dnow -msse -msse2 } {
+  foreach type { "" -mmmx -m3dnow -msse -msse2 -mavx -mavx2 -mavx512f } {
     foreach level { "" -O } {
       set flags "$type $level"
       verbose -log "Testing vect-args, $flags" 1
--- a/gcc/testsuite/gcc.target/i386/vect-args.c
+++ b/gcc/testsuite/gcc.target/i386/vect-args.c
@@ -1,6 +1,22 @@ 
 /* { dg-do compile } */
 /* { dg-options "-w -Wno-psabi" } */
 
+/* AVX512F and AVX512BW modes.  */
+typedef unsigned char V64QImode __attribute__((vector_size(64)));
+typedef unsigned short V32HImode __attribute__((vector_size(64)));
+typedef unsigned int V16SImode __attribute__((vector_size(64)));
+typedef unsigned long long V8DImode __attribute__((vector_size(64)));
+typedef float V16SFmode __attribute__((vector_size(64)));
+typedef double V8DFmode __attribute__((vector_size(64)));
+
+/* AVX and AVX2 modes.  */
+typedef unsigned char V32QImode __attribute__((vector_size(32)));
+typedef unsigned short V16HImode __attribute__((vector_size(32)));
+typedef unsigned int V8SImode __attribute__((vector_size(32)));
+typedef unsigned long long V4DImode __attribute__((vector_size(32)));
+typedef float V8SFmode __attribute__((vector_size(32)));
+typedef double V4DFmode __attribute__((vector_size(32)));
+
 /* SSE1 and SSE2 modes.  */
 typedef unsigned char V16QImode __attribute__((vector_size(16)));
 typedef unsigned short V8HImode __attribute__((vector_size(16)));
@@ -21,12 +37,27 @@  extern TYPE data_##TYPE;				\
 void r_##TYPE (TYPE x) { data_##TYPE = x; }		\
 void s_##TYPE (void) { r_##TYPE (data_##TYPE); }
 
+TEST(V64QImode)
+TEST(V32HImode)
+TEST(V16SImode)
+TEST(V8DImode)
+TEST(V16SFmode)
+TEST(V8DFmode)
+
+TEST(V32QImode)
+TEST(V16HImode)
+TEST(V8SImode)
+TEST(V4DImode)
+TEST(V8SFmode)
+TEST(V4DFmode)
+
 TEST(V16QImode)
 TEST(V8HImode)
 TEST(V4SImode)
 TEST(V2DImode)
 TEST(V4SFmode)
 TEST(V2DFmode)
+
 TEST(V8QImode)
 TEST(V4HImode)
 TEST(V2SImode)