1*0e30dd44SZhangyin //===----------------------------------------------------------------------===//
2*0e30dd44SZhangyin //
3*0e30dd44SZhangyin // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*0e30dd44SZhangyin // See https://llvm.org/LICENSE.txt for license information.
5*0e30dd44SZhangyin // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*0e30dd44SZhangyin //
7*0e30dd44SZhangyin //===----------------------------------------------------------------------===//
8*0e30dd44SZhangyin
9*0e30dd44SZhangyin // UNSUPPORTED: c++03, c++11, c++14
10*0e30dd44SZhangyin
11*0e30dd44SZhangyin // <experimental/simd>
12*0e30dd44SZhangyin //
13*0e30dd44SZhangyin // [simd.traits]
14*0e30dd44SZhangyin // template <class T> struct ex::is_simd_mask;
15*0e30dd44SZhangyin // template <class T> inline constexpr bool ex::is_simd_mask_v = ex::is_simd_mask<T>::value;
16*0e30dd44SZhangyin
17*0e30dd44SZhangyin #include "../test_utils.h"
18*0e30dd44SZhangyin
19*0e30dd44SZhangyin namespace ex = std::experimental::parallelism_v2;
20*0e30dd44SZhangyin
21*0e30dd44SZhangyin template <class T, std::size_t>
22*0e30dd44SZhangyin struct CheckIsSimdMask {
23*0e30dd44SZhangyin template <class SimdAbi>
operator ()CheckIsSimdMask24*0e30dd44SZhangyin void operator()() {
25*0e30dd44SZhangyin static_assert(ex::is_simd_mask<ex::simd_mask<T, SimdAbi>>::value);
26*0e30dd44SZhangyin
27*0e30dd44SZhangyin static_assert(!ex::is_simd_mask<T>::value);
28*0e30dd44SZhangyin static_assert(!ex::is_simd_mask<ex::simd<T, SimdAbi>>::value);
29*0e30dd44SZhangyin
30*0e30dd44SZhangyin static_assert(ex::is_simd_mask_v<ex::simd_mask<T, SimdAbi>>);
31*0e30dd44SZhangyin
32*0e30dd44SZhangyin static_assert(!ex::is_simd_mask_v<T>);
33*0e30dd44SZhangyin static_assert(!ex::is_simd_mask_v<ex::simd<T, SimdAbi>>);
34*0e30dd44SZhangyin }
35*0e30dd44SZhangyin };
36*0e30dd44SZhangyin
main(int,char **)37*0e30dd44SZhangyin int main(int, char**) {
38*0e30dd44SZhangyin test_all_simd_abi<CheckIsSimdMask>();
39*0e30dd44SZhangyin return 0;
40*0e30dd44SZhangyin }
41