1*ce5652c7SZhangyin //===----------------------------------------------------------------------===//
2*ce5652c7SZhangyin //
3*ce5652c7SZhangyin // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*ce5652c7SZhangyin // See https://llvm.org/LICENSE.txt for license information.
5*ce5652c7SZhangyin // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*ce5652c7SZhangyin //
7*ce5652c7SZhangyin //===----------------------------------------------------------------------===//
8*ce5652c7SZhangyin
9*ce5652c7SZhangyin // UNSUPPORTED: c++03, c++11, c++14
10*ce5652c7SZhangyin
11*ce5652c7SZhangyin // Test the alias.
12*ce5652c7SZhangyin // template <class T, class Abi> class simd {
13*ce5652c7SZhangyin // public:
14*ce5652c7SZhangyin // using value_type = T;
15*ce5652c7SZhangyin // using mask_type = simd_mask<T, Abi>;
16*ce5652c7SZhangyin // using abi_type = Abi;
17*ce5652c7SZhangyin // };
18*ce5652c7SZhangyin
19*ce5652c7SZhangyin #include "../test_utils.h"
20*ce5652c7SZhangyin #include <experimental/simd>
21*ce5652c7SZhangyin
22*ce5652c7SZhangyin namespace ex = std::experimental::parallelism_v2;
23*ce5652c7SZhangyin
24*ce5652c7SZhangyin template <class T, std::size_t>
25*ce5652c7SZhangyin struct CheckSimdAlias {
26*ce5652c7SZhangyin template <class SimdAbi>
operator ()CheckSimdAlias27*ce5652c7SZhangyin void operator()() {
28*ce5652c7SZhangyin static_assert(std::is_same_v<typename ex::simd<T, SimdAbi>::value_type, T>);
29*ce5652c7SZhangyin static_assert(std::is_same_v<typename ex::simd<T, SimdAbi>::mask_type, ex::simd_mask<T, SimdAbi>>);
30*ce5652c7SZhangyin static_assert(std::is_same_v<typename ex::simd<T, SimdAbi>::abi_type, SimdAbi>);
31*ce5652c7SZhangyin }
32*ce5652c7SZhangyin };
33*ce5652c7SZhangyin
main(int,char **)34*ce5652c7SZhangyin int main(int, char**) {
35*ce5652c7SZhangyin test_all_simd_abi<CheckSimdAlias>();
36*ce5652c7SZhangyin return 0;
37*ce5652c7SZhangyin }
38