x86: extend vect-args testcase to AVX flavors
authorJan Beulich <jbeulich@suse.com>
Mon, 3 Nov 2014 09:18:51 +0000 (09:18 +0000)
committerJan Beulich <jbeulich@gcc.gnu.org>
Mon, 3 Nov 2014 09:18:51 +0000 (09:18 +0000)
gcc/testsuite:
2014-11-03  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.

From-SVN: r217032

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/i386.exp
gcc/testsuite/gcc.target/i386/vect-args.c

index 62a1c887c469c7a14ed6635c1851ee210c92c150..06e9bee3b44ee7026d24b3f49cedf521a93e349e 100644 (file)
@@ -1,3 +1,9 @@
+2014-11-03  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.
+
 2014-11-03  Uros Bizjak  <ubizjak@gmail.com>
 
        * gcc.c-torture/execute/20010129-1.c: Compile with -mtune=i686
index 18b82b63962937a1ea2c09b4934a00bfe5bb0e06..493a1f425e5378539ac059ef0260bc3d32d95684 100644 (file)
@@ -361,9 +361,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
index fc458896ea1ad43fe4be78372e3530a2cfda39e6..02cf3f55eeb1555a37a7e7213e9eadecec1bb6a4 100644 (file)
@@ -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)