1 //===----------------------------------------------------------------------===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is dual licensed under the MIT and the University of Illinois Open 6 // Source Licenses. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 // UNSUPPORTED: c++98, c++03, c++11, c++14 11 12 // <experimental/simd> 13 // 14 // [simd.traits] 15 // template <class T> struct is_simd_flag_type; 16 // template <class T> inline constexpr bool ex::is_simd_flag_type_v = 17 // ex::is_simd_flag_type<T>::value; 18 19 #include <cstdint> 20 #include <experimental/simd> 21 #include "test_macros.h" 22 23 namespace ex = std::experimental::parallelism_v2; 24 25 struct UserType {}; 26 27 static_assert(ex::is_simd_flag_type<ex::element_aligned_tag>::value, ""); 28 static_assert(ex::is_simd_flag_type<ex::vector_aligned_tag>::value, ""); 29 static_assert(ex::is_simd_flag_type<ex::overaligned_tag<16>>::value, ""); 30 static_assert(ex::is_simd_flag_type<ex::overaligned_tag<32>>::value, ""); 31 32 static_assert(!ex::is_simd_flag_type<void>::value, ""); 33 static_assert(!ex::is_simd_flag_type<int>::value, ""); 34 static_assert(!ex::is_simd_flag_type<float>::value, ""); 35 static_assert(!ex::is_simd_flag_type<UserType>::value, ""); 36 static_assert(!ex::is_simd_flag_type<ex::simd<int8_t>>::value, ""); 37 static_assert(!ex::is_simd_flag_type<ex::simd_mask<int8_t>>::value, ""); 38 39 static_assert(ex::is_simd_flag_type_v<ex::element_aligned_tag>, ""); 40 static_assert(ex::is_simd_flag_type_v<ex::vector_aligned_tag>, ""); 41 static_assert(ex::is_simd_flag_type_v<ex::overaligned_tag<16>>, ""); 42 static_assert(ex::is_simd_flag_type_v<ex::overaligned_tag<32>>, ""); 43 44 static_assert(!ex::is_simd_flag_type_v<void>, ""); 45 static_assert(!ex::is_simd_flag_type_v<int>, ""); 46 static_assert(!ex::is_simd_flag_type_v<float>, ""); 47 static_assert(!ex::is_simd_flag_type_v<UserType>, ""); 48 static_assert(!ex::is_simd_flag_type_v<ex::simd<int8_t>>, ""); 49 static_assert(!ex::is_simd_flag_type_v<ex::simd_mask<int8_t>>, ""); 50 51 int main() {} 52