]>
git.ipfire.org Git - thirdparty/gcc.git/blob - libstdc++-v3/testsuite/experimental/simd/tests/mask_operator_cvt.cc
1 // Copyright (C) 2020 Free Software Foundation, Inc.
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)
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.
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/>.
18 #include "bits/verify.h"
19 #include "bits/metahelpers.h"
21 using schar
= signed char;
22 using uchar
= unsigned char;
23 using ushort
= unsigned short;
24 using uint
= unsigned int;
25 using ulong
= unsigned long;
26 using llong
= long long;
27 using ullong
= unsigned long long;
28 using ldouble
= long double;
29 using wchar
= wchar_t;
30 using char16
= char16_t
;
31 using char32
= char32_t
;
33 template <typename M0
, typename M1
>
35 bit_and_is_illformed()
37 return is_substitution_failure
<M0
, M1
, std::bit_and
<>>;
40 template <typename M0
, typename M1
>
44 COMPARE((bit_and_is_illformed
<M0
, M1
>()), !(std::is_same_v
<M0
, M1
>) );
51 using M
= typename
V::mask_type
;
52 // binary ops without conversions work
53 COMPARE(typeid(M() & M()), typeid(M
));
55 // nothing else works: no implicit conv. or ambiguous
56 using std::experimental::fixed_size_simd_mask
;
57 using std::experimental::native_simd_mask
;
58 using std::experimental::simd_mask
;
59 test_binary_op_cvt
<M
, bool>();
61 test_binary_op_cvt
<M
, simd_mask
<ldouble
>>();
62 test_binary_op_cvt
<M
, simd_mask
<double>>();
63 test_binary_op_cvt
<M
, simd_mask
<float>>();
64 test_binary_op_cvt
<M
, simd_mask
<ullong
>>();
65 test_binary_op_cvt
<M
, simd_mask
<llong
>>();
66 test_binary_op_cvt
<M
, simd_mask
<ulong
>>();
67 test_binary_op_cvt
<M
, simd_mask
<long>>();
68 test_binary_op_cvt
<M
, simd_mask
<uint
>>();
69 test_binary_op_cvt
<M
, simd_mask
<int>>();
70 test_binary_op_cvt
<M
, simd_mask
<ushort
>>();
71 test_binary_op_cvt
<M
, simd_mask
<short>>();
72 test_binary_op_cvt
<M
, simd_mask
<uchar
>>();
73 test_binary_op_cvt
<M
, simd_mask
<schar
>>();
74 test_binary_op_cvt
<M
, simd_mask
<wchar
>>();
75 test_binary_op_cvt
<M
, simd_mask
<char16
>>();
76 test_binary_op_cvt
<M
, simd_mask
<char32
>>();
78 test_binary_op_cvt
<M
, native_simd_mask
<ldouble
>>();
79 test_binary_op_cvt
<M
, native_simd_mask
<double>>();
80 test_binary_op_cvt
<M
, native_simd_mask
<float>>();
81 test_binary_op_cvt
<M
, native_simd_mask
<ullong
>>();
82 test_binary_op_cvt
<M
, native_simd_mask
<llong
>>();
83 test_binary_op_cvt
<M
, native_simd_mask
<ulong
>>();
84 test_binary_op_cvt
<M
, native_simd_mask
<long>>();
85 test_binary_op_cvt
<M
, native_simd_mask
<uint
>>();
86 test_binary_op_cvt
<M
, native_simd_mask
<int>>();
87 test_binary_op_cvt
<M
, native_simd_mask
<ushort
>>();
88 test_binary_op_cvt
<M
, native_simd_mask
<short>>();
89 test_binary_op_cvt
<M
, native_simd_mask
<uchar
>>();
90 test_binary_op_cvt
<M
, native_simd_mask
<schar
>>();
91 test_binary_op_cvt
<M
, native_simd_mask
<wchar
>>();
92 test_binary_op_cvt
<M
, native_simd_mask
<char16
>>();
93 test_binary_op_cvt
<M
, native_simd_mask
<char32
>>();
95 test_binary_op_cvt
<M
, fixed_size_simd_mask
<ldouble
, 2>>();
96 test_binary_op_cvt
<M
, fixed_size_simd_mask
<double, 2>>();
97 test_binary_op_cvt
<M
, fixed_size_simd_mask
<float, 2>>();
98 test_binary_op_cvt
<M
, fixed_size_simd_mask
<ullong
, 2>>();
99 test_binary_op_cvt
<M
, fixed_size_simd_mask
<llong
, 2>>();
100 test_binary_op_cvt
<M
, fixed_size_simd_mask
<ulong
, 2>>();
101 test_binary_op_cvt
<M
, fixed_size_simd_mask
<long, 2>>();
102 test_binary_op_cvt
<M
, fixed_size_simd_mask
<uint
, 2>>();
103 test_binary_op_cvt
<M
, fixed_size_simd_mask
<int, 2>>();
104 test_binary_op_cvt
<M
, fixed_size_simd_mask
<ushort
, 2>>();
105 test_binary_op_cvt
<M
, fixed_size_simd_mask
<short, 2>>();
106 test_binary_op_cvt
<M
, fixed_size_simd_mask
<uchar
, 2>>();
107 test_binary_op_cvt
<M
, fixed_size_simd_mask
<schar
, 2>>();
108 test_binary_op_cvt
<M
, fixed_size_simd_mask
<wchar
, 2>>();
109 test_binary_op_cvt
<M
, fixed_size_simd_mask
<char16
, 2>>();
110 test_binary_op_cvt
<M
, fixed_size_simd_mask
<char32
, 2>>();