1 // Copyright (C) 2020-2023 Free Software Foundation, Inc.
2 //
3 // This file is part of the GNU ISO C++ Library. This library is free
4 // software; you can redistribute it and/or modify it under the
5 // terms of the GNU General Public License as published by the
6 // Free Software Foundation; either version 3, or (at your option)
7 // any later version.
8 //
9 // This library is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU General Public License for more details.
13 //
14 // You should have received a copy of the GNU General Public License along
15 // with this library; see the file COPYING3. If not see
16 // <http://www.gnu.org/licenses/>.
17
18 #ifndef TESTS_BITS_MAIN_H_
19 #define TESTS_BITS_MAIN_H_
20
21 #include "verify.h"
22
23 template <class T>
24 void
25 iterate_abis()
26 {
27 using namespace std::experimental::parallelism_v2;
28 #ifndef EXTENDEDTESTS
29 invoke_test<simd<T, simd_abi::scalar>>(int());
30 invoke_test<simd<T, simd_abi::_VecBuiltin<16>>>(int());
31 invoke_test<simd<T, simd_abi::_VecBltnBtmsk<64>>>(int());
32 #elif EXTENDEDTESTS == 0
33 invoke_test<simd<T, simd_abi::_VecBuiltin<8>>>(int());
34 invoke_test<simd<T, simd_abi::_VecBuiltin<12>>>(int());
35 invoke_test<simd<T, simd_abi::_VecBuiltin<24>>>(int());
36 invoke_test<simd<T, simd_abi::_VecBuiltin<32>>>(int());
37 invoke_test<simd<T, simd_abi::_VecBltnBtmsk<56>>>(int());
38 #elif EXTENDEDTESTS == 1
39 invoke_test<simd<T, simd_abi::fixed_size<8>>>(int());
40 invoke_test<simd<T, simd_abi::fixed_size<16>>>(int());
41 invoke_test<simd<T, simd_abi::fixed_size<24>>>(int());
42 invoke_test<simd<T, simd_abi::fixed_size<32>>>(int());
43 #elif EXTENDEDTESTS == 2
44 invoke_test<simd<T, simd_abi::fixed_size<1>>>(int());
45 invoke_test<simd<T, simd_abi::fixed_size<9>>>(int());
46 invoke_test<simd<T, simd_abi::fixed_size<17>>>(int());
47 invoke_test<simd<T, simd_abi::fixed_size<25>>>(int());
48 #elif EXTENDEDTESTS == 3
49 invoke_test<simd<T, simd_abi::fixed_size<2>>>(int());
50 invoke_test<simd<T, simd_abi::fixed_size<10>>>(int());
51 invoke_test<simd<T, simd_abi::fixed_size<18>>>(int());
52 invoke_test<simd<T, simd_abi::fixed_size<26>>>(int());
53 #elif EXTENDEDTESTS == 4
54 invoke_test<simd<T, simd_abi::fixed_size<3>>>(int());
55 invoke_test<simd<T, simd_abi::fixed_size<19>>>(int());
56 invoke_test<simd<T, simd_abi::fixed_size<11>>>(int());
57 invoke_test<simd<T, simd_abi::fixed_size<27>>>(int());
58 #elif EXTENDEDTESTS == 5
59 invoke_test<simd<T, simd_abi::fixed_size<4>>>(int());
60 invoke_test<simd<T, simd_abi::fixed_size<12>>>(int());
61 invoke_test<simd<T, simd_abi::fixed_size<20>>>(int());
62 invoke_test<simd<T, simd_abi::fixed_size<28>>>(int());
63 #elif EXTENDEDTESTS == 6
64 invoke_test<simd<T, simd_abi::fixed_size<5>>>(int());
65 invoke_test<simd<T, simd_abi::fixed_size<13>>>(int());
66 invoke_test<simd<T, simd_abi::fixed_size<21>>>(int());
67 invoke_test<simd<T, simd_abi::fixed_size<29>>>(int());
68 #elif EXTENDEDTESTS == 7
69 invoke_test<simd<T, simd_abi::fixed_size<6>>>(int());
70 invoke_test<simd<T, simd_abi::fixed_size<14>>>(int());
71 invoke_test<simd<T, simd_abi::fixed_size<22>>>(int());
72 invoke_test<simd<T, simd_abi::fixed_size<30>>>(int());
73 #elif EXTENDEDTESTS == 8
74 invoke_test<simd<T, simd_abi::fixed_size<7>>>(int());
75 invoke_test<simd<T, simd_abi::fixed_size<15>>>(int());
76 invoke_test<simd<T, simd_abi::fixed_size<23>>>(int());
77 invoke_test<simd<T, simd_abi::fixed_size<31>>>(int());
78 #endif
79 }
80
81 int main()
82 {
83 iterate_abis<_GLIBCXX_SIMD_TESTTYPE>();
84 return 0;
85 }
86
87 #endif // TESTS_BITS_MAIN_H_