public inbox for glibc-cvs@sourceware.org
help / color / mirror / Atom feed
From: Adhemerval Zanella <azanella@sourceware.org>
To: glibc-cvs@sourceware.org
Subject: [glibc/azanella/clang] x86_64: Disable libmvec tests if compiler does not issue them with openmp
Date: Fri, 28 Oct 2022 17:43:26 +0000 (GMT)	[thread overview]
Message-ID: <20221028174326.E3C0A385803D@sourceware.org> (raw)

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=0108c4fcc299af5f44771320877a872b70cfe9f9

commit 0108c4fcc299af5f44771320877a872b70cfe9f9
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Thu Jun 9 09:51:46 2022 -0300

    x86_64: Disable libmvec tests if compiler does not issue them with openmp

Diff:
---
 sysdeps/x86_64/fpu/Makeconfig   |  2 ++
 sysdeps/x86_64/fpu/configure    | 61 +++++++++++++++++++++++++++++++++++++++++
 sysdeps/x86_64/fpu/configure.ac | 30 ++++++++++++++++++++
 3 files changed, 93 insertions(+)

diff --git a/sysdeps/x86_64/fpu/Makeconfig b/sysdeps/x86_64/fpu/Makeconfig
index 5c03b1dbb8..e01a39d35e 100644
--- a/sysdeps/x86_64/fpu/Makeconfig
+++ b/sysdeps/x86_64/fpu/Makeconfig
@@ -93,6 +93,7 @@ bench-libmvec-float = \
   $(addsuffix f, $(addprefix float-vlen8-avx2-, $(libmvec-bench-funcs))) \
   $(addsuffix f, $(addprefix float-vlen16-, $(libmvec-bench-funcs))) \
 
+ifeq ($(build-mathvec-pragma-simd-omp),yes)
 # The base libmvec ABI tests.
 libmvec-abi-func-tests = \
   $(addprefix test-double-libmvec-,$(libmvec-funcs)) \
@@ -109,6 +110,7 @@ libmvec-abi-func-avx2-tests = \
 # The AVX512F libmvec ABI tests.
 libmvec-abi-func-avx512f-tests = \
   $(addsuffix -avx512f,$(libmvec-abi-func-tests))
+endif
 
 $(common-objpfx)libmvec.mk: $(common-objpfx)config.make
 	(echo "ifeq (\$$(subdir)\$$(build-mathvec),mathyes)"; \
diff --git a/sysdeps/x86_64/fpu/configure b/sysdeps/x86_64/fpu/configure
new file mode 100644
index 0000000000..b7ba29c4b2
--- /dev/null
+++ b/sysdeps/x86_64/fpu/configure
@@ -0,0 +1,61 @@
+# This file is generated from configure.ac by Autoconf.  DO NOT EDIT!
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler supports libmvec calls through fopenmp" >&5
+$as_echo_n "checking whether compiler supports libmvec calls through fopenmp... " >&6; }
+if ${libc_cv_libmvec_pragma_omp_simd_support+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat > conftest.c <<EOF
+__attribute__ ((__simd__)) float sinf (float);
+void
+foo (float *x)
+{
+  #pragma omp simd
+  for (int i = 0; i < 256; i++)
+    x[i] = sinf (x[i]);
+}
+EOF
+libc_cv_libmvec_pragma_omp_simd_support=no
+# Check regardless of the ABI used
+if { ac_try='${CC-cc} $CFLAGS -fno-inline -fopenmp -Wno-unknown-pragmas -S conftest.c -o conftest.s 1>&5'
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }
+  then
+  if { ac_try='grep '_ZGVbN4v_sinf' conftest.s >/dev/null'
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; } \
+     || { ac_try='grep '_ZGVcN8v_sinf' conftest.s >/dev/null'
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; } \
+     || { ac_try='grep '_ZGVdN8v_sinf' conftest.s >/dev/null'
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; } \
+     || { ac_try='grep '_ZGVeN16v_sinf' conftest.s >/dev/null'
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }
+  then
+    libc_cv_libmvec_pragma_omp_simd_support=yes
+  fi
+fi
+rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_libmvec_pragma_omp_simd_support" >&5
+$as_echo "$libc_cv_libmvec_pragma_omp_simd_support" >&6; }
+config_vars="$config_vars
+build-mathvec-pragma-simd-omp = $libc_cv_libmvec_pragma_omp_simd_support"
diff --git a/sysdeps/x86_64/fpu/configure.ac b/sysdeps/x86_64/fpu/configure.ac
new file mode 100644
index 0000000000..1bc5af4ebe
--- /dev/null
+++ b/sysdeps/x86_64/fpu/configure.ac
@@ -0,0 +1,30 @@
+GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
+
+AC_CACHE_CHECK([whether compiler supports libmvec calls through fopenmp],
+	       libc_cv_libmvec_pragma_omp_simd_support, [
+dnl
+cat > conftest.c <<EOF
+__attribute__ ((__simd__)) float sinf (float);
+void
+foo (float *x)
+{
+  #pragma omp simd
+  for (int i = 0; i < 256; i++)
+    x[[i]] = sinf (x[[i]]);
+}
+EOF
+libc_cv_libmvec_pragma_omp_simd_support=no
+# Check regardless of the ABI used
+if AC_TRY_COMMAND([${CC-cc} $CFLAGS -fno-inline -fopenmp -Wno-unknown-pragmas -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD])
+  then
+  if AC_TRY_COMMAND([grep '_ZGVbN4v_sinf' conftest.s >/dev/null]) \
+     || AC_TRY_COMMAND([grep '_ZGVcN8v_sinf' conftest.s >/dev/null]) \
+     || AC_TRY_COMMAND([grep '_ZGVdN8v_sinf' conftest.s >/dev/null]) \
+     || AC_TRY_COMMAND([grep '_ZGVeN16v_sinf' conftest.s >/dev/null])
+  then
+    libc_cv_libmvec_pragma_omp_simd_support=yes
+  fi
+fi
+rm -f conftest*])
+LIBC_CONFIG_VAR([build-mathvec-pragma-simd-omp],
+		[$libc_cv_libmvec_pragma_omp_simd_support])

             reply	other threads:[~2022-10-28 17:43 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-28 17:43 Adhemerval Zanella [this message]
  -- strict thread matches above, loose matches on Subject: below --
2023-08-30 12:38 Adhemerval Zanella
2023-02-09 19:50 Adhemerval Zanella
2022-10-04 13:01 Adhemerval Zanella
2022-06-09 21:27 Adhemerval Zanella
2022-06-09 13:23 Adhemerval Zanella

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20221028174326.E3C0A385803D@sourceware.org \
    --to=azanella@sourceware.org \
    --cc=glibc-cvs@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).