Skip to content

Commit ca87015

Browse files
GagaLPPeterTh
authored andcommitted
Change return type of 1D-element named swizzles
1 parent fb67598 commit ca87015

2 files changed

Lines changed: 19 additions & 8 deletions

File tree

include/simsycl/sycl/vec.hh

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -299,10 +299,10 @@ class swizzled_vec {
299299
}
300300

301301
#define SIMSYCL_DETAIL_DEFINE_1D_SWIZZLE(req, comp) \
302-
auto comp() const \
302+
ReferenceDataT &comp() const \
303303
requires(req && num_elements > sycl::elem::comp) \
304304
{ \
305-
return detail::swizzled_vec<ReferenceDataT, indices[sycl::elem::comp]>(m_elems); \
305+
return m_elems[indices[sycl::elem::comp]]; \
306306
}
307307

308308
#define SIMSYCL_DETAIL_DEFINE_2D_SWIZZLE(req, comp1, comp2) \
@@ -607,15 +607,15 @@ class alignas(detail::vec_alignment_v<DataT, NumElements>) vec {
607607
}
608608

609609
#define SIMSYCL_DETAIL_DEFINE_1D_SWIZZLE(req, comp) \
610-
auto comp() \
610+
DataT &comp() \
611611
requires(req && num_elements > elem::comp) \
612612
{ \
613-
return detail::swizzled_vec<DataT, elem::comp>(m_elems); \
613+
return m_elems[elem::comp]; \
614614
} \
615-
auto comp() const \
615+
const DataT &comp() const \
616616
requires(req && num_elements > elem::comp) \
617617
{ \
618-
return detail::swizzled_vec<const DataT, elem::comp>(m_elems); \
618+
return m_elems[elem::comp]; \
619619
}
620620

621621
#define SIMSYCL_DETAIL_DEFINE_2D_SWIZZLE(req, comp1, comp2) \

test/vec_tests.cc

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,17 @@ TEST_CASE("Vector swizzled access is available", "[vec][swizzle]") {
158158
vi.even() = {11, 12};
159159
CHECK(check_bool_vec(vi == sycl::vec<int, 4>{11, 9, 12, 10}));
160160
}
161+
162+
SECTION("1D swizzled vec return type") {
163+
sycl::vec<uint8_t, 4> v4{255};
164+
CHECK(std::is_same_v<decltype(v4.x()), uint8_t &>);
165+
CHECK(std::is_same_v<decltype(v4.y()), uint8_t &>);
166+
CHECK(std::is_same_v<decltype(v4.z()), uint8_t &>);
167+
CHECK(std::is_same_v<decltype(v4.w()), uint8_t &>);
168+
169+
int i = (v4.x() + 1);
170+
CHECK(i == 256);
171+
}
161172
}
162173

163174
TEST_CASE("Operations on swizzled vectors work as expected", "[vec][swizzle]") {
@@ -208,7 +219,7 @@ TEST_CASE("Operations on swizzled vectors work as expected", "[vec][swizzle]") {
208219
CHECK(check_bool_vec(sycl::vec<int, 2>{0, 0} < vi.xy()));
209220

210221
CHECK(check_bool_vec(vi.zw() < 10));
211-
CHECK(check_bool_vec(vi.z() == 3));
212-
CHECK(check_bool_vec(4 == vi.a()));
222+
CHECK((vi.z() == 3));
223+
CHECK((4 == vi.a()));
213224
}
214225
}

0 commit comments

Comments
 (0)