1*a284d0ccSZhangyin //===----------------------------------------------------------------------===//
2*a284d0ccSZhangyin //
3*a284d0ccSZhangyin // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*a284d0ccSZhangyin // See https://llvm.org/LICENSE.txt for license information.
5*a284d0ccSZhangyin // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*a284d0ccSZhangyin //
7*a284d0ccSZhangyin //===----------------------------------------------------------------------===//
8*a284d0ccSZhangyin
9*a284d0ccSZhangyin // UNSUPPORTED: c++03, c++11, c++14
10*a284d0ccSZhangyin
11*a284d0ccSZhangyin // <experimental/simd>
12*a284d0ccSZhangyin //
13*a284d0ccSZhangyin // [simd.traits]
14*a284d0ccSZhangyin // template <class T, class U = typename T::value_type> struct memory_alignment;
15*a284d0ccSZhangyin // template <class T, class U = typename T::value_type>
16*a284d0ccSZhangyin // inline constexpr std::size_t memory_alignment_v = memory_alignment<T, U>::value;
17*a284d0ccSZhangyin
18*a284d0ccSZhangyin #include <experimental/simd>
19*a284d0ccSZhangyin
20*a284d0ccSZhangyin namespace ex = std::experimental::parallelism_v2;
21*a284d0ccSZhangyin
main(int,char **)22*a284d0ccSZhangyin int main(int, char**) {
23*a284d0ccSZhangyin (void)ex::memory_alignment<ex::native_simd<bool>, bool>::value;
24*a284d0ccSZhangyin // expected-error-re@* {{no member named 'value' in {{.*}}}}
25*a284d0ccSZhangyin (void)ex::memory_alignment<int, int>::value;
26*a284d0ccSZhangyin // expected-error-re@* {{no member named 'value' in {{.*}}}}
27*a284d0ccSZhangyin (void)ex::memory_alignment<ex::native_simd_mask<int>, int>::value;
28*a284d0ccSZhangyin // expected-error-re@* {{no member named 'value' in {{.*}}}}
29*a284d0ccSZhangyin (void)ex::memory_alignment<ex::native_simd<int>, bool>::value;
30*a284d0ccSZhangyin // expected-error-re@* {{no member named 'value' in {{.*}}}}
31*a284d0ccSZhangyin
32*a284d0ccSZhangyin (void)ex::memory_alignment_v<ex::native_simd<bool>, bool>;
33*a284d0ccSZhangyin // expected-error-re@* {{no member named 'value' in {{.*}}}}
34*a284d0ccSZhangyin (void)ex::memory_alignment_v<int, int>;
35*a284d0ccSZhangyin // expected-error-re@* {{no member named 'value' in {{.*}}}}
36*a284d0ccSZhangyin (void)ex::memory_alignment_v<ex::native_simd_mask<int>, int>;
37*a284d0ccSZhangyin // expected-error-re@* {{no member named 'value' in {{.*}}}}
38*a284d0ccSZhangyin (void)ex::memory_alignment_v<ex::native_simd<int>, bool>;
39*a284d0ccSZhangyin // expected-error-re@* {{no member named 'value' in {{.*}}}}
40*a284d0ccSZhangyin
41*a284d0ccSZhangyin return 0;
42*a284d0ccSZhangyin }
43