aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2024-02-14 21:09:35 +0100
committerUros Bizjak <ubizjak@gmail.com>2024-02-14 21:10:31 +0100
commit430c772be3382134886db33133ed466c02efc71c (patch)
tree074ef20e9c20acd7b8b2fa54538a34a35dc97822
parent67ce5c97167a60cb845b9f3f55186c00fc5df078 (diff)
downloadgcc-430c772be3382134886db33133ed466c02efc71c.zip
gcc-430c772be3382134886db33133ed466c02efc71c.tar.gz
gcc-430c772be3382134886db33133ed466c02efc71c.tar.bz2
testsuite: Fix a couple of x86 issues in gcc.dg/vect testsuite
A compile-time test can use -march=skylake-avx512 for all x86 targets, but a runtime test needs to check avx512f effective target if the instructions can be assembled. The runtime test also needs to check if the target machine supports instruction set we have been compiled for. The testsuite uses check_vect infrastructure, but handling of AVX512F+ ISAs was missing there. Add detection of __AVX512F__ and __AVX512VL__, which is enough to handle all currently mentioned target processors in the gcc.dg/vect testsuite. gcc/testsuite/ChangeLog: * gcc.dg/vect/pr113576.c (dg-additional-options): Use -march=skylake-avx512 for avx512f effective target. * gcc.dg/vect/pr98308.c (dg-additional-options): Use -march=skylake-avx512 for all x86 targets. * gcc.dg/vect/tree-vect.h (check_vect): Handle __AVX512F__ and __AVX512VL__.
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr113576.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr98308.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/tree-vect.h6
3 files changed, 7 insertions, 3 deletions
diff --git a/gcc/testsuite/gcc.dg/vect/pr113576.c b/gcc/testsuite/gcc.dg/vect/pr113576.c
index decb7ab..b6edde6 100644
--- a/gcc/testsuite/gcc.dg/vect/pr113576.c
+++ b/gcc/testsuite/gcc.dg/vect/pr113576.c
@@ -1,6 +1,6 @@
/* { dg-do run } */
/* { dg-options "-O3" } */
-/* { dg-additional-options "-march=skylake-avx512" { target { x86_64-*-* i?86-*-* } } } */
+/* { dg-additional-options "-march=skylake-avx512" { target avx512f } } */
#include "tree-vect.h"
diff --git a/gcc/testsuite/gcc.dg/vect/pr98308.c b/gcc/testsuite/gcc.dg/vect/pr98308.c
index aeec977..d744312 100644
--- a/gcc/testsuite/gcc.dg/vect/pr98308.c
+++ b/gcc/testsuite/gcc.dg/vect/pr98308.c
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-additional-options "-O3" } */
-/* { dg-additional-options "-march=skylake-avx512" { target avx512f } } */
+/* { dg-additional-options "-march=skylake-avx512" { target x86_64-*-* i?86-*-* } } */
/* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
extern unsigned long long int arr_86[];
diff --git a/gcc/testsuite/gcc.dg/vect/tree-vect.h b/gcc/testsuite/gcc.dg/vect/tree-vect.h
index c4b8144..1e4b56e 100644
--- a/gcc/testsuite/gcc.dg/vect/tree-vect.h
+++ b/gcc/testsuite/gcc.dg/vect/tree-vect.h
@@ -38,7 +38,11 @@ check_vect (void)
/* Determine what instruction set we've been compiled for, and detect
that we're running with it. This allows us to at least do a compile
check for, e.g. SSE4.1 when the machine only supports SSE2. */
-# if defined(__AVX2__)
+# if defined(__AVX512VL__)
+ want_level = 7, want_b = bit_AVX512VL;
+# elif defined(__AVX512F__)
+ want_level = 7, want_b = bit_AVX512F;
+# elif defined(__AVX2__)
want_level = 7, want_b = bit_AVX2;
# elif defined(__AVX__)
want_level = 1, want_c = bit_AVX;