]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
libstdc++: Use a PCH to speed up check-simd
authorMatthias Kretz <m.kretz@gsi.de>
Thu, 2 Feb 2023 11:26:35 +0000 (12:26 +0100)
committerMatthias Kretz <m.kretz@gsi.de>
Thu, 16 Feb 2023 14:58:33 +0000 (15:58 +0100)
Signed-off-by: Matthias Kretz <m.kretz@gsi.de>
libstdc++-v3/ChangeLog:

* testsuite/experimental/simd/generate_makefile.sh: Generate and
pre-compile pch.h, which includes all headers that do not depend
on command-line macros.
* testsuite/experimental/simd/tests/bits/main.h: New file.
(iterate_abis, main): Moved from verify.h.
* testsuite/experimental/simd/tests/bits/verify.h
(iterate_abis, main): Moved to main.h.
* testsuite/experimental/simd/tests/bits/conversions.h: Add
include guard.
(genHalfBits): Simplify.
* testsuite/experimental/simd/tests/bits/make_vec.h: Add include
guard.
(make_alternating_mask): Moved from mask_loadstore.
* testsuite/experimental/simd/tests/bits/mathreference.h: Add
include guard.
* testsuite/experimental/simd/tests/bits/test_values.h: Ditto.
* testsuite/experimental/simd/tests/mask_loadstore.cc
(make_mask, make_alternating_mask): Removed.
* testsuite/experimental/simd/tests/mask_reductions.cc: Ditto.
* testsuite/experimental/simd/tests/operators.cc (genHalfBits):
Removed.
* testsuite/experimental/simd/tests/abs.cc: Only include
bits/main.h.
Ditto.
* testsuite/experimental/simd/tests/algorithms.cc: Ditto.
* testsuite/experimental/simd/tests/broadcast.cc: Ditto.
* testsuite/experimental/simd/tests/casts.cc: Ditto.
* testsuite/experimental/simd/tests/fpclassify.cc: Ditto.
* testsuite/experimental/simd/tests/frexp.cc: Ditto.
* testsuite/experimental/simd/tests/generator.cc: Ditto.
* testsuite/experimental/simd/tests/hypot3_fma.cc: Ditto.
* testsuite/experimental/simd/tests/integer_operators.cc: Ditto.
* testsuite/experimental/simd/tests/ldexp_scalbn_scalbln_modf.cc:
* testsuite/experimental/simd/tests/loadstore.cc: Ditto.
* testsuite/experimental/simd/tests/logarithm.cc: Ditto.
* testsuite/experimental/simd/tests/mask_broadcast.cc: Ditto.
* testsuite/experimental/simd/tests/mask_conversions.cc: Ditto.
* testsuite/experimental/simd/tests/mask_implicit_cvt.cc: Ditto.
* testsuite/experimental/simd/tests/mask_operator_cvt.cc: Ditto.
* testsuite/experimental/simd/tests/mask_operators.cc: Ditto.
* testsuite/experimental/simd/tests/math_1arg.cc: Ditto.
* testsuite/experimental/simd/tests/math_2arg.cc: Ditto.
* testsuite/experimental/simd/tests/operator_cvt.cc: Ditto.
* testsuite/experimental/simd/tests/reductions.cc: Ditto.
* testsuite/experimental/simd/tests/remqo.cc: Ditto.
* testsuite/experimental/simd/tests/simd.cc: Ditto.
* testsuite/experimental/simd/tests/sincos.cc: Ditto.
* testsuite/experimental/simd/tests/split_concat.cc: Ditto.
* testsuite/experimental/simd/tests/splits.cc: Ditto.
* testsuite/experimental/simd/tests/trigonometric.cc: Ditto.
* testsuite/experimental/simd/tests/trunc_ceil_floor.cc: Ditto.
* testsuite/experimental/simd/tests/where.cc: Ditto.

39 files changed:
libstdc++-v3/testsuite/experimental/simd/generate_makefile.sh
libstdc++-v3/testsuite/experimental/simd/tests/abs.cc
libstdc++-v3/testsuite/experimental/simd/tests/algorithms.cc
libstdc++-v3/testsuite/experimental/simd/tests/bits/conversions.h
libstdc++-v3/testsuite/experimental/simd/tests/bits/main.h [new file with mode: 0644]
libstdc++-v3/testsuite/experimental/simd/tests/bits/make_vec.h
libstdc++-v3/testsuite/experimental/simd/tests/bits/mathreference.h
libstdc++-v3/testsuite/experimental/simd/tests/bits/test_values.h
libstdc++-v3/testsuite/experimental/simd/tests/bits/verify.h
libstdc++-v3/testsuite/experimental/simd/tests/broadcast.cc
libstdc++-v3/testsuite/experimental/simd/tests/casts.cc
libstdc++-v3/testsuite/experimental/simd/tests/fpclassify.cc
libstdc++-v3/testsuite/experimental/simd/tests/frexp.cc
libstdc++-v3/testsuite/experimental/simd/tests/generator.cc
libstdc++-v3/testsuite/experimental/simd/tests/hypot3_fma.cc
libstdc++-v3/testsuite/experimental/simd/tests/integer_operators.cc
libstdc++-v3/testsuite/experimental/simd/tests/ldexp_scalbn_scalbln_modf.cc
libstdc++-v3/testsuite/experimental/simd/tests/loadstore.cc
libstdc++-v3/testsuite/experimental/simd/tests/logarithm.cc
libstdc++-v3/testsuite/experimental/simd/tests/mask_broadcast.cc
libstdc++-v3/testsuite/experimental/simd/tests/mask_conversions.cc
libstdc++-v3/testsuite/experimental/simd/tests/mask_implicit_cvt.cc
libstdc++-v3/testsuite/experimental/simd/tests/mask_loadstore.cc
libstdc++-v3/testsuite/experimental/simd/tests/mask_operator_cvt.cc
libstdc++-v3/testsuite/experimental/simd/tests/mask_operators.cc
libstdc++-v3/testsuite/experimental/simd/tests/mask_reductions.cc
libstdc++-v3/testsuite/experimental/simd/tests/math_1arg.cc
libstdc++-v3/testsuite/experimental/simd/tests/math_2arg.cc
libstdc++-v3/testsuite/experimental/simd/tests/operator_cvt.cc
libstdc++-v3/testsuite/experimental/simd/tests/operators.cc
libstdc++-v3/testsuite/experimental/simd/tests/reductions.cc
libstdc++-v3/testsuite/experimental/simd/tests/remqo.cc
libstdc++-v3/testsuite/experimental/simd/tests/simd.cc
libstdc++-v3/testsuite/experimental/simd/tests/sincos.cc
libstdc++-v3/testsuite/experimental/simd/tests/split_concat.cc
libstdc++-v3/testsuite/experimental/simd/tests/splits.cc
libstdc++-v3/testsuite/experimental/simd/tests/trigonometric.cc
libstdc++-v3/testsuite/experimental/simd/tests/trunc_ceil_floor.cc
libstdc++-v3/testsuite/experimental/simd/tests/where.cc

index ce5162a6cebc4cc686b8c12c453832f65e6752fe..9fb33e4cbd23b8d9e0d45a91f86e27c63b003c57 100755 (executable)
@@ -75,6 +75,7 @@ while [ $# -gt 0 ]; do
 done
 
 mkdir -p "$dst"
+pch="$dst/pch.h"
 dst="$dst/Makefile"
 if [ -f "$dst" ]; then
   echo "Error: $dst already exists. Aborting." 1>&2
@@ -84,9 +85,23 @@ fi
 CXX="$1"
 shift
 
+cat >> "$pch" <<EOF
+#ifndef SIMD_PCH_
+#define SIMD_PCH_
+#include "${srcdir}/bits/verify.h"
+#include "${srcdir}/bits/make_vec.h"
+#include "${srcdir}/bits/mathreference.h"
+#include "${srcdir}/bits/metahelpers.h"
+#include "${srcdir}/bits/simd_view.h"
+#include "${srcdir}/bits/test_values.h"
+#include "${srcdir}/bits/ulp.h"
+#include "${srcdir}/bits/conversions.h"
+#endif  // SIMD_PCH_
+EOF
+
 echo "TESTFLAGS ?=" > "$dst"
 echo "test_flags := $testflags \$(TESTFLAGS)" >> "$dst"
-echo CXXFLAGS = "$@" "\$(test_flags)" >> "$dst"
+echo CXXFLAGS = "$@" -include pch.h "\$(test_flags)" >> "$dst"
 [ -n "$sim" ] && echo "export GCC_TEST_SIMULATOR = $sim" >> "$dst"
 cat >> "$dst" <<EOF
 srcdir = ${srcdir}
@@ -94,9 +109,14 @@ CXX = ${CXX}
 DRIVER = ${driver}
 DRIVEROPTS ?=
 driveroptions := \$(DRIVEROPTS)
+PCH_DEPS := \$(shell \$(CXX) \$(CXXFLAGS) -M pch.h | sed -e 's/^.*://' -e 's/\\\\//g')
 
 all: simd_testsuite.sum
 
+pch.h.gch: \$(PCH_DEPS)
+       @echo "Preparing pre-compiled header"
+       @\$(CXX) \$(CXXFLAGS) -c \$< -o \$@
+
 simd_testsuite.sum: .progress .progress_total simd_testsuite.log
        @printf "\n\t\t=== simd_testsuite \$(test_flags) Summary ===\n\n"\\
        "# of expected passes:\t\t\$(shell grep -c '^PASS:' \$@)\n"\\
@@ -247,7 +267,7 @@ EOF
 EOF
     for i in $(seq 0 9); do
       cat <<EOF
-%-$type-$i.log: \$(srcdir)/%.cc
+%-$type-$i.log: pch.h.gch \$(srcdir)/%.cc
        @\$(DRIVER) \$(driveroptions) -t "$t" -a $i -n \$* \$(CXX) \$(CXXFLAGS)
 
 EOF
index 2a0716e164348041ea173fabbcbfc4bd148635f7..53cc66855dd8cea76a2cd487ece177ae3b414ed8 100644 (file)
 // <http://www.gnu.org/licenses/>.
 
 // expensive: * [1-9] * *
-#include "bits/verify.h"
-#include "bits/metahelpers.h"
+#include "bits/main.h"
 #include <cmath>    // abs & sqrt
 #include <cstdlib>  // integer abs
-#include "bits/test_values.h"
 
 template <typename V>
   void
index dac0981622ed9e054a5fe5f0e63e6197924f5be9..6242eb89337705ef6c15affd06196c0954ccd790 100644 (file)
@@ -16,8 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // expensive: * [1-9] * *
-#include "bits/verify.h"
-#include "bits/metahelpers.h"
+#include "bits/main.h"
 
 template <typename V>
   void
index 2b12de6b4b260143b3697b2b6ca463144f567cb0..7bd70cea53bb560596f43721a999e7eddbbdf311 100644 (file)
@@ -15,6 +15,8 @@
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
+#ifndef SIMD_TESTS_BITS_CONVERSIONS_H_
+#define SIMD_TESTS_BITS_CONVERSIONS_H_
 #include <array>
 
 // is_conversion_undefined
@@ -86,22 +88,12 @@ template <typename To, typename T, typename A>
 template <class T>
   constexpr T
   genHalfBits()
-  { return std::__finite_max_v<T> >> (std::__digits_v<T> / 2); }
-
-template <>
-  constexpr long double
-  genHalfBits<long double>()
-  { return 0; }
-
-template <>
-  constexpr double
-  genHalfBits<double>()
-  { return 0; }
-
-template <>
-  constexpr float
-  genHalfBits<float>()
-  { return 0; }
+  {
+    if constexpr (std::is_floating_point_v<T>)
+      return 0;
+    else
+      return std::__finite_max_v<T> >> (std::__digits_v<T> / 2);
+  }
 
 template <class U, class T, class UU>
   constexpr U
@@ -182,3 +174,4 @@ template <class T, class U>
     operator[](size_t i) const
     { return cvt_input_data<U, T>[i]; }
   };
+#endif  // SIMD_TESTS_BITS_CONVERSIONS_H_
diff --git a/libstdc++-v3/testsuite/experimental/simd/tests/bits/main.h b/libstdc++-v3/testsuite/experimental/simd/tests/bits/main.h
new file mode 100644 (file)
index 0000000..270b433
--- /dev/null
@@ -0,0 +1,87 @@
+// Copyright (C) 2020-2023 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3.  If not see
+// <http://www.gnu.org/licenses/>.
+
+#ifndef TESTS_BITS_MAIN_H_
+#define TESTS_BITS_MAIN_H_
+
+#include "verify.h"
+
+template <class T>
+  void
+  iterate_abis()
+  {
+    using namespace std::experimental::parallelism_v2;
+#ifndef EXTENDEDTESTS
+    invoke_test<simd<T, simd_abi::scalar>>(int());
+    invoke_test<simd<T, simd_abi::_VecBuiltin<16>>>(int());
+    invoke_test<simd<T, simd_abi::_VecBltnBtmsk<64>>>(int());
+#elif EXTENDEDTESTS == 0
+    invoke_test<simd<T, simd_abi::_VecBuiltin<8>>>(int());
+    invoke_test<simd<T, simd_abi::_VecBuiltin<12>>>(int());
+    invoke_test<simd<T, simd_abi::_VecBuiltin<24>>>(int());
+    invoke_test<simd<T, simd_abi::_VecBuiltin<32>>>(int());
+    invoke_test<simd<T, simd_abi::_VecBltnBtmsk<56>>>(int());
+#elif EXTENDEDTESTS == 1
+    invoke_test<simd<T, simd_abi::fixed_size<8>>>(int());
+    invoke_test<simd<T, simd_abi::fixed_size<16>>>(int());
+    invoke_test<simd<T, simd_abi::fixed_size<24>>>(int());
+    invoke_test<simd<T, simd_abi::fixed_size<32>>>(int());
+#elif EXTENDEDTESTS == 2
+    invoke_test<simd<T, simd_abi::fixed_size<1>>>(int());
+    invoke_test<simd<T, simd_abi::fixed_size<9>>>(int());
+    invoke_test<simd<T, simd_abi::fixed_size<17>>>(int());
+    invoke_test<simd<T, simd_abi::fixed_size<25>>>(int());
+#elif EXTENDEDTESTS == 3
+    invoke_test<simd<T, simd_abi::fixed_size<2>>>(int());
+    invoke_test<simd<T, simd_abi::fixed_size<10>>>(int());
+    invoke_test<simd<T, simd_abi::fixed_size<18>>>(int());
+    invoke_test<simd<T, simd_abi::fixed_size<26>>>(int());
+#elif EXTENDEDTESTS == 4
+    invoke_test<simd<T, simd_abi::fixed_size<3>>>(int());
+    invoke_test<simd<T, simd_abi::fixed_size<19>>>(int());
+    invoke_test<simd<T, simd_abi::fixed_size<11>>>(int());
+    invoke_test<simd<T, simd_abi::fixed_size<27>>>(int());
+#elif EXTENDEDTESTS == 5
+    invoke_test<simd<T, simd_abi::fixed_size<4>>>(int());
+    invoke_test<simd<T, simd_abi::fixed_size<12>>>(int());
+    invoke_test<simd<T, simd_abi::fixed_size<20>>>(int());
+    invoke_test<simd<T, simd_abi::fixed_size<28>>>(int());
+#elif EXTENDEDTESTS == 6
+    invoke_test<simd<T, simd_abi::fixed_size<5>>>(int());
+    invoke_test<simd<T, simd_abi::fixed_size<13>>>(int());
+    invoke_test<simd<T, simd_abi::fixed_size<21>>>(int());
+    invoke_test<simd<T, simd_abi::fixed_size<29>>>(int());
+#elif EXTENDEDTESTS == 7
+    invoke_test<simd<T, simd_abi::fixed_size<6>>>(int());
+    invoke_test<simd<T, simd_abi::fixed_size<14>>>(int());
+    invoke_test<simd<T, simd_abi::fixed_size<22>>>(int());
+    invoke_test<simd<T, simd_abi::fixed_size<30>>>(int());
+#elif EXTENDEDTESTS == 8
+    invoke_test<simd<T, simd_abi::fixed_size<7>>>(int());
+    invoke_test<simd<T, simd_abi::fixed_size<15>>>(int());
+    invoke_test<simd<T, simd_abi::fixed_size<23>>>(int());
+    invoke_test<simd<T, simd_abi::fixed_size<31>>>(int());
+#endif
+  }
+
+int main()
+{
+  iterate_abis<_GLIBCXX_SIMD_TESTTYPE>();
+  return 0;
+}
+
+#endif  // TESTS_BITS_MAIN_H_
index 82e63d18ad1c8572ebc63fc2e25b7e14b05424ce..3744965f439c55673177050dda27d8d5ea0f8cd5 100644 (file)
@@ -15,6 +15,8 @@
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
+#ifndef SIMD_TESTS_BITS_MAKE_VEC_H_
+#define SIMD_TESTS_BITS_MAKE_VEC_H_
 #include <experimental/simd>
 
 template <class M>
@@ -36,6 +38,13 @@ template <class M>
       }
   }
 
+template <class M>
+  M
+  make_alternating_mask()
+  {
+    return make_mask<M>({false, true});
+  }
+
 template <class V>
   inline V
   make_vec(const std::initializer_list<typename V::value_type> &init,
@@ -57,3 +66,4 @@ template <class V>
        base += inc;
       }
   }
+#endif  // SIMD_TESTS_BITS_MAKE_VEC_H_
index 1553aa7bb51b565ddefdfc6c0d04416049cc090c..87c4df7b176ee5b8fa0ee2fa0c86774902559b41 100644 (file)
@@ -15,6 +15,8 @@
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
+#ifndef SIMD_TESTS_BITS_MATHREFERENCE_H_
+#define SIMD_TESTS_BITS_MATHREFERENCE_H_
 #include <tuple>
 #include <utility>
 #include <cstdio>
@@ -158,3 +160,4 @@ template <class Fun, class T, class Ref = testdatatype_for_function_t<Fun, T>>
       }
     return data;
   }
+#endif  // SIMD_TESTS_BITS_MATHREFERENCE_H_
index ccbe19de4b0e2100e816d9ec4380a6e1a84df207..c3bd082f709069335a1c8da0499c0b7b150ff44d 100644 (file)
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
+#ifndef SIMD_TESTS_BITS_TEST_VALUES_H_
+#define SIMD_TESTS_BITS_TEST_VALUES_H_
+
+#include "verify.h"
+
 #include <experimental/simd>
 #include <initializer_list>
 #include <random>
@@ -381,3 +386,4 @@ template <class V>
 #endif
 
 #define MAKE_TESTER(name_) MAKE_TESTER_2(name_, std::name_)
+#endif  // SIMD_TESTS_BITS_TEST_VALUES_H_
index e60ff93d2e6de89ac2805ebb08e990d6b485d648..2ab3ad3fa8c0b719cbae598087be91d2ac4fd533 100644 (file)
@@ -286,68 +286,4 @@ template <typename V, typename = decltype(V())>
     __builtin_fprintf(stderr, "PASS: %s\n", __PRETTY_FUNCTION__);
   }
 
-template <class T>
-  void
-  iterate_abis()
-  {
-    using namespace std::experimental::parallelism_v2;
-#ifndef EXTENDEDTESTS
-    invoke_test<simd<T, simd_abi::scalar>>(int());
-    invoke_test<simd<T, simd_abi::_VecBuiltin<16>>>(int());
-    invoke_test<simd<T, simd_abi::_VecBltnBtmsk<64>>>(int());
-#elif EXTENDEDTESTS == 0
-    invoke_test<simd<T, simd_abi::_VecBuiltin<8>>>(int());
-    invoke_test<simd<T, simd_abi::_VecBuiltin<12>>>(int());
-    invoke_test<simd<T, simd_abi::_VecBuiltin<24>>>(int());
-    invoke_test<simd<T, simd_abi::_VecBuiltin<32>>>(int());
-    invoke_test<simd<T, simd_abi::_VecBltnBtmsk<56>>>(int());
-#elif EXTENDEDTESTS == 1
-    invoke_test<simd<T, simd_abi::fixed_size<8>>>(int());
-    invoke_test<simd<T, simd_abi::fixed_size<16>>>(int());
-    invoke_test<simd<T, simd_abi::fixed_size<24>>>(int());
-    invoke_test<simd<T, simd_abi::fixed_size<32>>>(int());
-#elif EXTENDEDTESTS == 2
-    invoke_test<simd<T, simd_abi::fixed_size<1>>>(int());
-    invoke_test<simd<T, simd_abi::fixed_size<9>>>(int());
-    invoke_test<simd<T, simd_abi::fixed_size<17>>>(int());
-    invoke_test<simd<T, simd_abi::fixed_size<25>>>(int());
-#elif EXTENDEDTESTS == 3
-    invoke_test<simd<T, simd_abi::fixed_size<2>>>(int());
-    invoke_test<simd<T, simd_abi::fixed_size<10>>>(int());
-    invoke_test<simd<T, simd_abi::fixed_size<18>>>(int());
-    invoke_test<simd<T, simd_abi::fixed_size<26>>>(int());
-#elif EXTENDEDTESTS == 4
-    invoke_test<simd<T, simd_abi::fixed_size<3>>>(int());
-    invoke_test<simd<T, simd_abi::fixed_size<19>>>(int());
-    invoke_test<simd<T, simd_abi::fixed_size<11>>>(int());
-    invoke_test<simd<T, simd_abi::fixed_size<27>>>(int());
-#elif EXTENDEDTESTS == 5
-    invoke_test<simd<T, simd_abi::fixed_size<4>>>(int());
-    invoke_test<simd<T, simd_abi::fixed_size<12>>>(int());
-    invoke_test<simd<T, simd_abi::fixed_size<20>>>(int());
-    invoke_test<simd<T, simd_abi::fixed_size<28>>>(int());
-#elif EXTENDEDTESTS == 6
-    invoke_test<simd<T, simd_abi::fixed_size<5>>>(int());
-    invoke_test<simd<T, simd_abi::fixed_size<13>>>(int());
-    invoke_test<simd<T, simd_abi::fixed_size<21>>>(int());
-    invoke_test<simd<T, simd_abi::fixed_size<29>>>(int());
-#elif EXTENDEDTESTS == 7
-    invoke_test<simd<T, simd_abi::fixed_size<6>>>(int());
-    invoke_test<simd<T, simd_abi::fixed_size<14>>>(int());
-    invoke_test<simd<T, simd_abi::fixed_size<22>>>(int());
-    invoke_test<simd<T, simd_abi::fixed_size<30>>>(int());
-#elif EXTENDEDTESTS == 8
-    invoke_test<simd<T, simd_abi::fixed_size<7>>>(int());
-    invoke_test<simd<T, simd_abi::fixed_size<15>>>(int());
-    invoke_test<simd<T, simd_abi::fixed_size<23>>>(int());
-    invoke_test<simd<T, simd_abi::fixed_size<31>>>(int());
-#endif
-  }
-
-int main()
-{
-  iterate_abis<_GLIBCXX_SIMD_TESTTYPE>();
-  return 0;
-}
-
 #endif  // TESTS_BITS_VERIFY_H_
index 7e06c6632d805b25d3984f5af01418f51f95d7ea..6265e31b079633c1a3b6b93c998c7e4f3fa3f4f8 100644 (file)
@@ -16,8 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // expensive: * [1-9] * *
-#include "bits/verify.h"
-#include "bits/metahelpers.h"
+#include "bits/main.h"
 
 enum unscoped_enum
 { foo };
index 022a583c3319eee538e1cc00e415be706a22d817..8e8d828c7569bf6f786d02a9c08193c8d41025b2 100644 (file)
@@ -16,9 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // expensive: * [1-9] * *
-#include "bits/verify.h"
-#include "bits/metahelpers.h"
-#include "bits/conversions.h"
+#include "bits/main.h"
 
 using std::experimental::simd_cast;
 using std::experimental::static_simd_cast;
index 453f17f256ef82de475772caa827427522b5aa5c..00c608f953044d29f87e9b974b44ff83d187a846 100644 (file)
@@ -17,9 +17,7 @@
 
 // only: float|double|ldouble * * *
 // expensive: * [1-9] * *
-#include "bits/verify.h"
-#include "bits/metahelpers.h"
-#include "bits/test_values.h"
+#include "bits/main.h"
 #include <cfenv>
 
 template <typename F>
index 5e04f4f2927d9f5053ef264906ca39352819300e..f6a47cedd13cf6ad32d461bc05ba26c6fa2d9604 100644 (file)
@@ -17,9 +17,7 @@
 
 // only: float|double|ldouble * * *
 // expensive: * [1-9] * *
-#include "bits/verify.h"
-#include "bits/metahelpers.h"
-#include "bits/test_values.h"
+#include "bits/main.h"
 
 template <typename V>
   void
index b582c04067bec14b6a36fd019bb807f33f13f602..001625cfd26b7fa8b100a22db08683ababfc41a9 100644 (file)
@@ -16,8 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // expensive: * [1-9] * *
-#include "bits/verify.h"
-#include "bits/metahelpers.h"
+#include "bits/main.h"
 
 template <class V>
   struct call_generator
index b5e3749ebc4efcc1c8e138d6ef7e7777a16e30e0..6f0d75ac0076def9b190a3d1fa7552f16b887dbd 100644 (file)
@@ -18,9 +18,7 @@
 // only: float|double|ldouble * * *
 // skip: ldouble * powerpc64* *
 // expensive: * [1-9] * *
-#include "bits/verify.h"
-#include "bits/metahelpers.h"
-#include "bits/test_values.h"
+#include "bits/main.h"
 
 // 3-arg std::hypot needs to be fixed, this is a better reference:
 template <typename T>
index e3718ce40a3747c6222e0c59dd018dbbac7ff099..7a2bc085e498b04edeae86e16817d28f66cf1bb8 100644 (file)
@@ -16,9 +16,8 @@
 // <http://www.gnu.org/licenses/>.
 
 // expensive: * [1-9] * *
-#include "bits/verify.h"
-#include "bits/make_vec.h"
-#include "bits/metahelpers.h"
+// timeout-factor: 2
+#include "bits/main.h"
 
 template <typename T, T Begin, T End, T Stride = 1, typename F>
   void
index 1943c36007705d31b89e6e981d9373d23444046b..0fb1338fc04ec44fd155bb1939e3392bdbe9290c 100644 (file)
@@ -17,9 +17,7 @@
 
 // only: float|double|ldouble * * *
 // expensive: * [1-9] * *
-#include "bits/verify.h"
-#include "bits/metahelpers.h"
-#include "bits/test_values.h"
+#include "bits/main.h"
 
 template <typename V>
   void
index f354eff91395e4b7781d1de6fd8a3aa366515661..f7933007cc72bdfd5b0522bc4c90185356936732 100644 (file)
@@ -17,9 +17,7 @@
 
 // expensive: * [1-9] * *
 // timeout-factor: 2
-#include "bits/verify.h"
-#include "bits/make_vec.h"
-#include "bits/conversions.h"
+#include "bits/main.h"
 
 template <typename V, typename U>
   void
index d7f4297c0941e00e8a81c9caab3f7a7482bb6614..31ad1499e00a455f160d86c76bc1b8ca220e224b 100644 (file)
 
 // only: float|double|ldouble * * *
 // expensive: * [1-9] * *
-#include "bits/verify.h"
-#include "bits/metahelpers.h"
-#include "bits/mathreference.h"
-#include "bits/test_values.h"
+#include "bits/main.h"
 
 template <typename V>
   void
index 0ed56e2d2ee5dac7ae2d52f24b0e4ab5475c7dcf..2f6013687754272815a09d3751672a9af9473b90 100644 (file)
@@ -16,8 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // expensive: * [1-9] * *
-#include "bits/verify.h"
-#include "bits/metahelpers.h"
+#include "bits/main.h"
 
 template <typename V>
   void
index 13afd69348e58b97d1922a12761ddb8d79de929f..8cdd7b74b44d94f4b998fa5a9283139905f5bee4 100644 (file)
@@ -16,7 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // expensive: * [1-9] * *
-#include "bits/verify.h"
+#include "bits/main.h"
 
 namespace stdx = std::experimental;
 
index 0003db3114d58888c9db67d87c3769f21cdceae5..a7b6c92e2a0a0763e2dc5550e80342b395cb6d0a 100644 (file)
@@ -16,8 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // expensive: * [1-9] * *
-#include "bits/verify.h"
-#include "bits/metahelpers.h"
+#include "bits/main.h"
 
 template <class M, class M2>
   constexpr bool assign_should_work
index b9f3cef021de729ef278498a26f8be8f83d69d29..d8e58a0032b5eba54bf2b1b7721a30c34b29091b 100644 (file)
 // <http://www.gnu.org/licenses/>.
 
 // expensive: * [1-9] * *
-#include "bits/verify.h"
-
-// simd_mask generator functions
-template <class M>
-  M
-  make_mask(const std::initializer_list<bool>& init)
-  {
-    std::size_t i = 0;
-    M r = {};
-    for (;;)
-      {
-       for (bool x : init)
-         {
-           r[i] = x;
-           if (++i == M::size())
-             {
-               return r;
-             }
-         }
-      }
-  }
-
-template <class M>
-  M
-  make_alternating_mask()
-  {
-    return make_mask<M>({false, true});
-  }
+#include "bits/main.h"
 
 template <typename V>
   void
index b91832a431c016ff5defdfe211a8cb40fb9f1cc5..1c7ccab583657402e5e95ab24ceeef0759f8253d 100644 (file)
@@ -16,8 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // expensive: * [1-9] * *
-#include "bits/verify.h"
-#include "bits/metahelpers.h"
+#include "bits/main.h"
 
 using schar = signed char;
 using uchar = unsigned char;
index b42520202a0b2a8f7cacd384998d620ca32205ef..70b82a514bb948258c73ae54f9dbb0352a0addc8 100644 (file)
@@ -16,8 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // expensive: * [1-9] * *
-#include "bits/verify.h"
-#include "bits/metahelpers.h"
+#include "bits/main.h"
 
 template <typename V>
   void
index b863f2d5c0cdb4c3c52bfcfb693ad4bf25f5a57d..1e9ffb7aca54212697e5895deadaa8c0784e37e7 100644 (file)
 // <http://www.gnu.org/licenses/>.
 
 // expensive: * [1-9] * *
-#include "bits/verify.h"
-#include "bits/metahelpers.h"
-
-// simd_mask generator functions
-template <class M>
-  M
-  make_mask(const std::initializer_list<bool>& init)
-  {
-    std::size_t i = 0;
-    M r = {};
-    for (;;)
-      {
-       for (bool x : init)
-         {
-           r[i] = x;
-           if (++i == M::size())
-             {
-               return r;
-             }
-         }
-      }
-  }
-
-template <class M>
-  M
-  make_alternating_mask()
-  {
-    return make_mask<M>({false, true});
-  }
+#include "bits/main.h"
 
 template <typename V>
   void
index db401c124f2bdde3ad2f838114862e3298b6561a..50a740dec81b47bd6316e5c9af0e841f8ff6bc00 100644 (file)
@@ -17,8 +17,7 @@
 
 // only: float|double|ldouble * * *
 // expensive: * [1-9] * *
-#include "bits/verify.h"
-#include "bits/test_values.h"
+#include "bits/main.h"
 
 template <typename V>
   void
index 08b36c60331fa240a93b909b6c4ed463153c7752..1abf18128fb5e5a7b660d9d0e9fab64935fa8fea 100644 (file)
@@ -17,9 +17,7 @@
 
 // only: float|double|ldouble * * *
 // expensive: * [1-9] * *
-#include "bits/verify.h"
-#include "bits/metahelpers.h"
-#include "bits/test_values.h"
+#include "bits/main.h"
 
 template <typename V>
   void
index 921917e4d886de9d08b28dec39c8f820a532984f..c1acfdf10e0809d0bb1a2f615b308be3ab929061 100644 (file)
@@ -16,8 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // expensive: * [1-9] * *
-#include "bits/verify.h"
-#include "bits/metahelpers.h"
+#include "bits/main.h"
 
 // type with sizeof(char) but different signedness
 using xchar = std::conditional_t<std::is_unsigned_v<char>, schar, uchar>;
index 6d482201fab2592a69ed649ab65bb4fc9b1baa5e..c4d91fa5d2b2d8a872e4e73716c282cc9ae6d536 100644 (file)
 // <http://www.gnu.org/licenses/>.
 
 // expensive: * [1-9] * *
-#include "bits/verify.h"
-#include "bits/make_vec.h"
-#include "bits/test_values.h"
-
-template <class T>
-  constexpr T
-  genHalfBits()
-  {
-    if constexpr (std::is_floating_point_v<T>)
-      return 0;
-    else
-      return std::__finite_max_v<T> >> (std::__digits_v<T> / 2);
-  }
+#include "bits/main.h"
 
 template <typename V>
   void
index 62072e721557b0a75d6bd22001bbc30ab2f25abc..0c4c79feb20f880ed7d8b1150cb4e51b5e437e78 100644 (file)
@@ -16,9 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // expensive: * [1-9] * *
-#include "bits/verify.h"
-#include "bits/metahelpers.h"
-#include "bits/test_values.h"
+#include "bits/main.h"
 #include <random>
 
 template <typename V>
index 8c76f66b8426de26e6d91566affa0651f4e9689a..bc9f94d82654aa670c8d7426cc129bd3b4e1b484 100644 (file)
@@ -17,9 +17,7 @@
 
 // only: float|double|ldouble * * *
 // expensive: * [1-9] * *
-#include "bits/verify.h"
-#include "bits/metahelpers.h"
-#include "bits/test_values.h"
+#include "bits/main.h"
 
 template <typename V>
   void
index 14fc71ac1a4e0ef8d8f5ba1ae9e166a07d6c75cf..b729c97bec90bbb94cf3cf73de9a90765a43dbd5 100644 (file)
@@ -16,7 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // expensive: * [1-9] * *
-#include "bits/verify.h"
+#include "bits/main.h"
 
 template <typename V>
   void
index 16637f50cfcf92db1ea37e0c474f5806917901bf..2e81a8e5585a08c78bf91c88898746eb76bcabd7 100644 (file)
 // only: float|double|ldouble * * *
 // xfail: run * * * *
 // expensive: * [1-9] * *
-#include "bits/verify.h"
-#include "bits/metahelpers.h"
-#include "bits/mathreference.h"
-#include "bits/simd_view.h"
-#include "bits/test_values.h"
+#include "bits/main.h"
 
 template <typename V>
   void
index 85ca7ae819985892c6e924449ae5e57d2a9689e4..102229b70f10755bb336fc065b7c540338d2767a 100644 (file)
@@ -16,9 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // expensive: * [1-9] * *
-#include "bits/verify.h"
-#include "bits/metahelpers.h"
-#include "bits/conversions.h"
+#include "bits/main.h"
 
 using std::experimental::simd_cast;
 
index 94c82ecc3c3eb11ba5dafdb99f8e521d85c0f332..f87bce8a7dcbdfe461b0a5e7f7f9fd4a9af540be 100644 (file)
@@ -16,7 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // expensive: * [1-9] * *
-#include "bits/verify.h"
+#include "bits/main.h"
 
 template <typename V>
   void
index 8e16ce4a1cf86626eaec82ee6bccf73efd8001fc..a678ff48feecfb7328f8a420fbcb6a01cd6c917d 100644 (file)
@@ -17,9 +17,7 @@
 
 // only: float|double|ldouble * * *
 // expensive: * [1-9] * *
-#include "bits/verify.h"
-#include "bits/metahelpers.h"
-#include "bits/test_values.h"
+#include "bits/main.h"
 
 template <typename V>
   void
index 51575df48cbc4bec3b6d22fc81e48977048debbf..ecbc14816002f88ded0ddbb8d759611f69f0d294 100644 (file)
@@ -17,8 +17,7 @@
 
 // only: float|double|ldouble * * *
 // expensive: * [1-9] * *
-#include "bits/test_values.h"
-#include "bits/verify.h"
+#include "bits/main.h"
 
 template <typename V>
   void
index 79cc949c64eeb7a0ad88bfd6de78d818aa2f3575..b6f6d333191675571a86908a5eebcbc065fcb1e4 100644 (file)
@@ -16,9 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // expensive: * [1-9] * *
-#include "bits/verify.h"
-#include "bits/make_vec.h"
-#include "bits/metahelpers.h"
+#include "bits/main.h"
 
 template <class V>
   struct Convertible