1- // RUN: %clangxx -fsycl -fsyntax-only %s -fpreview-breaking-changes
21// RUN: %clangxx -fsycl -fsyntax-only %s
2+ // RUN: %clangxx -fsycl -fsyntax-only %s -D__SYCL_USE_LIBSYCL8_VEC_IMPL=1
33
44#include < sycl/sycl.hpp>
55
@@ -14,69 +14,65 @@ using sw_float_2 = decltype(std::declval<vec<float, 4>>().swizzle<1, 2>());
1414using sw_double_1 = decltype (std::declval<vec<double , 4 >>().swizzle<1 >());
1515using sw_double_2 = decltype (std::declval<vec<double , 4 >>().swizzle<1 , 2 >());
1616
17- #if __INTEL_PREVIEW_BREAKING_CHANGES
18- #define EXCEPT_IN_PREVIEW !
17+ #if defined(__SYCL_USE_LIBSYCL8_VEC_IMPL) && (__SYCL_USE_LIBSYCL8_VEC_IMPL)
18+ #define EXCEPT_IF_NEW_VEC_IMPL
1919#else
20- #define EXCEPT_IN_PREVIEW
20+ #define EXCEPT_IF_NEW_VEC_IMPL !
2121#endif
2222
2323// clang-format off
24+ static_assert ( std::is_assignable_v<vec<half, 1 >, half>);
25+ static_assert ( std::is_assignable_v<vec<half, 1 >, float >);
26+ static_assert ( std::is_assignable_v<vec<half, 1 >, double >);
27+ static_assert ( std::is_assignable_v<vec<half, 1 >, vec<half, 1 >>);
28+ static_assert (EXCEPT_IF_NEW_VEC_IMPL std::is_assignable_v<vec<half, 1 >, vec<float , 1 >>);
29+ static_assert (EXCEPT_IF_NEW_VEC_IMPL std::is_assignable_v<vec<half, 1 >, vec<double , 1 >>);
30+ static_assert ( std::is_assignable_v<vec<half, 1 >, sw_half_1>);
31+ static_assert (EXCEPT_IF_NEW_VEC_IMPL std::is_assignable_v<vec<half, 1 >, sw_float_1>);
32+ static_assert (EXCEPT_IF_NEW_VEC_IMPL std::is_assignable_v<vec<half, 1 >, sw_double_1>);
33+ static_assert ( !std::is_assignable_v<vec<half, 1 >, sw_half_2>);
34+ static_assert ( !std::is_assignable_v<vec<half, 1 >, sw_float_2>);
35+ static_assert ( !std::is_assignable_v<vec<half, 1 >, sw_double_2>);
2436
25- // IN_PREVIEW_ONLY condition<>
26- // EXCEPT_IN_PREVIEW condition<>
37+ static_assert ( std::is_assignable_v<vec<half, 2 >, half>);
38+ static_assert ( std::is_assignable_v<vec<half, 2 >, float >);
39+ static_assert ( std::is_assignable_v<vec<half, 2 >, double >);
40+ static_assert ( std::is_assignable_v<vec<half, 2 >, vec<half, 1 >>);
41+ static_assert ( !std::is_assignable_v<vec<half, 2 >, vec<float , 1 >>);
42+ static_assert ( !std::is_assignable_v<vec<half, 2 >, vec<double , 1 >>);
43+ static_assert ( std::is_assignable_v<vec<half, 2 >, sw_half_1>);
44+ static_assert (EXCEPT_IF_NEW_VEC_IMPL std::is_assignable_v<vec<half, 2 >, sw_float_1>);
45+ static_assert (EXCEPT_IF_NEW_VEC_IMPL std::is_assignable_v<vec<half, 2 >, sw_double_1>);
46+ static_assert ( std::is_assignable_v<vec<half, 2 >, sw_half_2>);
47+ static_assert ( !std::is_assignable_v<vec<half, 2 >, sw_float_2>);
48+ static_assert ( !std::is_assignable_v<vec<half, 2 >, sw_double_2>);
2749
28- static_assert ( std::is_assignable_v<vec<half , 1 >, half>);
29- static_assert ( std::is_assignable_v<vec<half , 1 >, float >);
30- static_assert ( std::is_assignable_v<vec<half , 1 >, double >);
31- static_assert ( std::is_assignable_v<vec<half , 1 >, vec<half, 1 >>);
32- static_assert (EXCEPT_IN_PREVIEW std::is_assignable_v<vec<half , 1 >, vec<float , 1 >>);
33- static_assert (EXCEPT_IN_PREVIEW std::is_assignable_v<vec<half , 1 >, vec<double , 1 >>);
34- static_assert ( std::is_assignable_v<vec<half , 1 >, sw_half_1>);
35- static_assert (EXCEPT_IN_PREVIEW std::is_assignable_v<vec<half , 1 >, sw_float_1>);
36- static_assert (EXCEPT_IN_PREVIEW std::is_assignable_v<vec<half , 1 >, sw_double_1>);
37- static_assert ( !std::is_assignable_v<vec<half , 1 >, sw_half_2>);
38- static_assert ( !std::is_assignable_v<vec<half , 1 >, sw_float_2>);
39- static_assert ( !std::is_assignable_v<vec<half , 1 >, sw_double_2>);
50+ static_assert ( std::is_assignable_v<vec<float , 1 >, half>);
51+ static_assert ( std::is_assignable_v<vec<float , 1 >, float >);
52+ static_assert ( std::is_assignable_v<vec<float , 1 >, double >);
53+ static_assert (EXCEPT_IF_NEW_VEC_IMPL std::is_assignable_v<vec<float , 1 >, vec<half, 1 >>);
54+ static_assert ( std::is_assignable_v<vec<float , 1 >, vec<float , 1 >>);
55+ static_assert ( std::is_assignable_v<vec<float , 1 >, vec<double , 1 >>);
56+ static_assert (EXCEPT_IF_NEW_VEC_IMPL std::is_assignable_v<vec<float , 1 >, sw_half_1>);
57+ static_assert ( std::is_assignable_v<vec<float , 1 >, sw_float_1>);
58+ static_assert ( std::is_assignable_v<vec<float , 1 >, sw_double_1>);
59+ static_assert ( !std::is_assignable_v<vec<float , 1 >, sw_half_2>);
60+ static_assert ( !std::is_assignable_v<vec<float , 1 >, sw_float_2>);
61+ static_assert ( !std::is_assignable_v<vec<float , 1 >, sw_double_2>);
4062
41- static_assert ( std::is_assignable_v<vec<half, 2 >, half>);
42- static_assert ( std::is_assignable_v<vec<half, 2 >, float >);
43- static_assert ( std::is_assignable_v<vec<half, 2 >, double >);
44- static_assert ( std::is_assignable_v<vec<half, 2 >, vec<half, 1 >>);
45- static_assert ( !std::is_assignable_v<vec<half, 2 >, vec<float , 1 >>);
46- static_assert ( !std::is_assignable_v<vec<half, 2 >, vec<double , 1 >>);
47- static_assert ( std::is_assignable_v<vec<half, 2 >, sw_half_1>);
48- static_assert (EXCEPT_IN_PREVIEW std::is_assignable_v<vec<half, 2 >, sw_float_1>);
49- static_assert (EXCEPT_IN_PREVIEW std::is_assignable_v<vec<half, 2 >, sw_double_1>);
50- static_assert ( std::is_assignable_v<vec<half, 2 >, sw_half_2>);
51- static_assert ( !std::is_assignable_v<vec<half, 2 >, sw_float_2>);
52- static_assert ( !std::is_assignable_v<vec<half, 2 >, sw_double_2>);
53-
54- static_assert ( std::is_assignable_v<vec<float , 1 >, half>);
55- static_assert ( std::is_assignable_v<vec<float , 1 >, float >);
56- static_assert ( std::is_assignable_v<vec<float , 1 >, double >);
57- static_assert (EXCEPT_IN_PREVIEW std::is_assignable_v<vec<float , 1 >, vec<half, 1 >>);
58- static_assert ( std::is_assignable_v<vec<float , 1 >, vec<float , 1 >>);
59- static_assert ( std::is_assignable_v<vec<float , 1 >, vec<double , 1 >>);
60- static_assert (EXCEPT_IN_PREVIEW std::is_assignable_v<vec<float , 1 >, sw_half_1>);
61- static_assert ( std::is_assignable_v<vec<float , 1 >, sw_float_1>);
62- static_assert ( std::is_assignable_v<vec<float , 1 >, sw_double_1>);
63- static_assert ( !std::is_assignable_v<vec<float , 1 >, sw_half_2>);
64- static_assert ( !std::is_assignable_v<vec<float , 1 >, sw_float_2>);
65- static_assert ( !std::is_assignable_v<vec<float , 1 >, sw_double_2>);
66-
67- static_assert ( std::is_assignable_v<vec<float , 2 >, half>);
68- static_assert ( std::is_assignable_v<vec<float , 2 >, float >);
69- static_assert ( std::is_assignable_v<vec<float , 2 >, double >);
63+ static_assert ( std::is_assignable_v<vec<float , 2 >, half>);
64+ static_assert ( std::is_assignable_v<vec<float , 2 >, float >);
65+ static_assert ( std::is_assignable_v<vec<float , 2 >, double >);
7066#if __SYCL_DEVICE_ONLY__
71- static_assert (EXCEPT_IN_PREVIEW std::is_assignable_v<vec<float , 2 >, vec<half, 1 >>);
67+ static_assert (EXCEPT_IF_NEW_VEC_IMPL std::is_assignable_v<vec<float , 2 >, vec<half, 1 >>);
7268#else
73- static_assert ( !std::is_assignable_v<vec<float , 2 >, vec<half, 1 >>);
69+ static_assert ( !std::is_assignable_v<vec<float , 2 >, vec<half, 1 >>);
7470#endif
75- static_assert ( std::is_assignable_v<vec<float , 2 >, vec<float , 1 >>);
76- static_assert ( std::is_assignable_v<vec<float , 2 >, vec<double , 1 >>);
77- static_assert (EXCEPT_IN_PREVIEW std::is_assignable_v<vec<float , 2 >, sw_half_1>);
78- static_assert ( std::is_assignable_v<vec<float , 2 >, sw_float_1>);
79- static_assert ( std::is_assignable_v<vec<float , 2 >, sw_double_1>);
80- static_assert ( !std::is_assignable_v<vec<float , 2 >, sw_half_2>);
81- static_assert ( std::is_assignable_v<vec<float , 2 >, sw_float_2>);
82- static_assert ( !std::is_assignable_v<vec<float , 2 >, sw_double_2>);
71+ static_assert ( std::is_assignable_v<vec<float , 2 >, vec<float , 1 >>);
72+ static_assert ( std::is_assignable_v<vec<float , 2 >, vec<double , 1 >>);
73+ static_assert (EXCEPT_IF_NEW_VEC_IMPL std::is_assignable_v<vec<float , 2 >, sw_half_1>);
74+ static_assert ( std::is_assignable_v<vec<float , 2 >, sw_float_1>);
75+ static_assert ( std::is_assignable_v<vec<float , 2 >, sw_double_1>);
76+ static_assert ( !std::is_assignable_v<vec<float , 2 >, sw_half_2>);
77+ static_assert ( std::is_assignable_v<vec<float , 2 >, sw_float_2>);
78+ static_assert ( !std::is_assignable_v<vec<float , 2 >, sw_double_2>);
0 commit comments