14 #include <initializer_list>
17 #include <type_traits>
20 inline namespace _V1 {
24 template <
typename R,
typename T>
static void assign(R &r,
const T x) {
26 r.template swizzle<Num>() =
x.value[Num];
29 template <
typename R,
typename T,
typename ET>
30 static void init(R &r,
const T x) {
31 Assigner<Num - 1>::template init<R, T, ET>(
r,
x);
32 ET v =
x.template swizzle<Num>();
38 template <
typename R,
typename T>
static void assign(R &r,
const T x) {
39 r.template swizzle<0>() =
x.value[0];
41 template <
typename R,
typename T,
typename ET>
42 static void init(R &r,
const T x) {
43 ET v =
x.template swizzle<0>();
49 static_assert(((N == 2) || (N == 3) || (N == 4) || (N == 8) || (N == 16)),
54 #ifdef __SYCL_DEVICE_ONLY__
63 Boolean(std::initializer_list<element_type> l) {
64 for (
size_t I = 0; I < N; ++I) {
65 value[I] = *(l.begin() + I) ? -1 : 0;
70 for (
size_t I = 0; I < N; ++I) {
71 value[I] = rhs.value[I];
75 template <
typename T>
Boolean(
const T rhs) {
76 static_assert(is_vgeninteger_v<T>,
"Invalid constructor");
77 Assigner<N - 1>::template init<Boolean<N>, T,
typename T::element_type>(
81 #ifdef __SYCL_DEVICE_ONLY__
85 for (
size_t I = 0; I < N; ++I) {
90 operator vector_t()
const {
return value; }
93 template <
typename T>
operator T()
const {
94 static_assert(is_vgeninteger_v<T>,
"Invalid conversion");
__attribute__((destructor(110))) static void syclUnload()
constexpr bool msbIsSet(const T x)
static void assign(R &r, const T x)
static void init(R &r, const T x)
static void init(R &r, const T x)
static void assign(R &r, const T x)
Boolean(const Boolean &rhs)
Boolean(std::initializer_list< element_type > l)