Skip to content

Commit 3bfa66d

Browse files
[NFCI][SYCL] Remove vec/swizzle's getNumElements (#16472)
`public` `size()` can be used instead.
1 parent b1ad5f9 commit 3bfa66d

File tree

1 file changed

+47
-51
lines changed

1 file changed

+47
-51
lines changed

sycl/include/sycl/vector.hpp

Lines changed: 47 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -180,8 +180,6 @@ class __SYCL_EBO vec
180180
private:
181181
#endif // __SYCL_DEVICE_ONLY__
182182

183-
static constexpr int getNumElements() { return NumElements; }
184-
185183
// SizeChecker is needed for vec(const argTN &... args) ctor to validate args.
186184
template <int Counter, int MaxValue, class...>
187185
struct SizeChecker : std::conditional_t<Counter == MaxValue, std::true_type,
@@ -548,6 +546,27 @@ class SwizzleOp : public detail::NamedSwizzlesMixinBoth<
548546
OperationCurrentT, Indexes...>,
549547
sizeof...(Indexes)> {
550548
using DataT = typename VecT::element_type;
549+
550+
public:
551+
using element_type = DataT;
552+
using value_type = DataT;
553+
554+
__SYCL2020_DEPRECATED("get_count() is deprecated, please use size() instead")
555+
size_t get_count() const { return size(); }
556+
static constexpr size_t size() noexcept { return sizeof...(Indexes); }
557+
558+
template <int Num = size()>
559+
__SYCL2020_DEPRECATED(
560+
"get_size() is deprecated, please use byte_size() instead")
561+
size_t get_size() const {
562+
return byte_size<Num>();
563+
}
564+
565+
template <int Num = size()> size_t byte_size() const noexcept {
566+
return sizeof(DataT) * (Num == 3 ? 4 : Num);
567+
}
568+
569+
private:
551570
// Certain operators return a vector with a different element type. Also, the
552571
// left and right operand types may differ. CommonDataT selects a result type
553572
// based on these types to ensure that the result value can be represented.
@@ -579,7 +598,6 @@ class SwizzleOp : public detail::NamedSwizzlesMixinBoth<
579598
using CommonDataT = std::conditional_t<
580599
sizeof(DataT) >= sizeof(std::common_type_t<OpLeftDataT, OpRightDataT>),
581600
DataT, std::common_type_t<OpLeftDataT, OpRightDataT>>;
582-
static constexpr int getNumElements() { return sizeof...(Indexes); }
583601

584602
using rel_t = detail::rel_t<DataT>;
585603
using vec_t = vec<DataT, sizeof...(Indexes)>;
@@ -594,7 +612,7 @@ class SwizzleOp : public detail::NamedSwizzlesMixinBoth<
594612

595613
template <typename OperationRightT_,
596614
template <typename> class OperationCurrentT_, int... Idx_>
597-
using NewRelOp = SwizzleOp<vec<rel_t, VecT::getNumElements()>,
615+
using NewRelOp = SwizzleOp<vec<rel_t, VecT::size()>,
598616
SwizzleOp<VecT, OperationLeftT, OperationRightT,
599617
OperationCurrentT, Indexes...>,
600618
OperationRightT_, OperationCurrentT_, Idx_...>;
@@ -607,12 +625,12 @@ class SwizzleOp : public detail::NamedSwizzlesMixinBoth<
607625
OperationCurrentT_, Idx_...>;
608626

609627
template <int IdxNum, typename T = void>
610-
using EnableIfOneIndex = typename std::enable_if_t<
611-
1 == IdxNum && SwizzleOp::getNumElements() == IdxNum, T>;
628+
using EnableIfOneIndex =
629+
typename std::enable_if_t<1 == IdxNum && SwizzleOp::size() == IdxNum, T>;
612630

613631
template <int IdxNum, typename T = void>
614-
using EnableIfMultipleIndexes = typename std::enable_if_t<
615-
1 != IdxNum && SwizzleOp::getNumElements() == IdxNum, T>;
632+
using EnableIfMultipleIndexes =
633+
typename std::enable_if_t<1 != IdxNum && SwizzleOp::size() == IdxNum, T>;
616634

617635
template <typename T>
618636
using EnableIfScalarType =
@@ -633,40 +651,22 @@ class SwizzleOp : public detail::NamedSwizzlesMixinBoth<
633651
SwizzleOp<const VecT, GetOp<DataT>, GetOp<DataT>, GetOp, Indices...>;
634652

635653
public:
636-
using element_type = DataT;
637-
using value_type = DataT;
638-
639654
#ifdef __SYCL_DEVICE_ONLY__
640655
using vector_t = typename vec_t::vector_t;
641656
#endif // __SYCL_DEVICE_ONLY__
642657

643658
const DataT &operator[](int i) const {
644-
std::array<int, getNumElements()> Idxs{Indexes...};
659+
std::array<int, size()> Idxs{Indexes...};
645660
return (*m_Vector)[Idxs[i]];
646661
}
647662

648663
template <typename _T = VecT>
649664
std::enable_if_t<!std::is_const_v<_T>, DataT> &operator[](int i) {
650-
std::array<int, getNumElements()> Idxs{Indexes...};
665+
std::array<int, size()> Idxs{Indexes...};
651666
return (*m_Vector)[Idxs[i]];
652667
}
653668

654-
__SYCL2020_DEPRECATED("get_count() is deprecated, please use size() instead")
655-
size_t get_count() const { return size(); }
656-
static constexpr size_t size() noexcept { return getNumElements(); }
657-
658-
template <int Num = getNumElements()>
659-
__SYCL2020_DEPRECATED(
660-
"get_size() is deprecated, please use byte_size() instead")
661-
size_t get_size() const {
662-
return byte_size<Num>();
663-
}
664-
665-
template <int Num = getNumElements()> size_t byte_size() const noexcept {
666-
return sizeof(DataT) * (Num == 3 ? 4 : Num);
667-
}
668-
669-
template <typename T, int IdxNum = getNumElements(),
669+
template <typename T, int IdxNum = size(),
670670
typename = EnableIfOneIndex<IdxNum>,
671671
typename = EnableIfScalarType<T>>
672672
operator T() const {
@@ -870,8 +870,7 @@ class SwizzleOp : public detail::NamedSwizzlesMixinBoth<
870870
__SYCL_RELLOGOP(||, (!detail::is_byte_v<T> && !detail::is_vgenfloat_v<T>))
871871
#undef __SYCL_RELLOGOP
872872

873-
template <int IdxNum = getNumElements(),
874-
typename = EnableIfMultipleIndexes<IdxNum>>
873+
template <int IdxNum = size(), typename = EnableIfMultipleIndexes<IdxNum>>
875874
SwizzleOp &operator=(const vec<DataT, IdxNum> &Rhs) {
876875
std::array<int, IdxNum> Idxs{Indexes...};
877876
for (size_t I = 0; I < Idxs.size(); ++I) {
@@ -880,15 +879,14 @@ class SwizzleOp : public detail::NamedSwizzlesMixinBoth<
880879
return *this;
881880
}
882881

883-
template <int IdxNum = getNumElements(), typename = EnableIfOneIndex<IdxNum>>
882+
template <int IdxNum = size(), typename = EnableIfOneIndex<IdxNum>>
884883
SwizzleOp &operator=(const DataT &Rhs) {
885884
std::array<int, IdxNum> Idxs{Indexes...};
886885
(*m_Vector)[Idxs[0]] = Rhs;
887886
return *this;
888887
}
889888

890-
template <int IdxNum = getNumElements(),
891-
EnableIfMultipleIndexes<IdxNum, bool> = true>
889+
template <int IdxNum = size(), EnableIfMultipleIndexes<IdxNum, bool> = true>
892890
SwizzleOp &operator=(const DataT &Rhs) {
893891
std::array<int, IdxNum> Idxs{Indexes...};
894892
for (auto Idx : Idxs) {
@@ -897,7 +895,7 @@ class SwizzleOp : public detail::NamedSwizzlesMixinBoth<
897895
return *this;
898896
}
899897

900-
template <int IdxNum = getNumElements(), typename = EnableIfOneIndex<IdxNum>>
898+
template <int IdxNum = size(), typename = EnableIfOneIndex<IdxNum>>
901899
SwizzleOp &operator=(DataT &&Rhs) {
902900
std::array<int, IdxNum> Idxs{Indexes...};
903901
(*m_Vector)[Idxs[0]] = Rhs;
@@ -1046,24 +1044,22 @@ class SwizzleOp : public detail::NamedSwizzlesMixinBoth<
10461044
return NewLHOp<RhsOperation, LShift, Indexes...>(m_Vector, *this, Rhs);
10471045
}
10481046

1049-
template <
1050-
typename T1, typename T2, typename T3, template <typename> class T4,
1051-
int... T5,
1052-
typename = typename std::enable_if_t<sizeof...(T5) == getNumElements()>>
1047+
template <typename T1, typename T2, typename T3, template <typename> class T4,
1048+
int... T5,
1049+
typename = typename std::enable_if_t<sizeof...(T5) == size()>>
10531050
SwizzleOp &operator=(const SwizzleOp<T1, T2, T3, T4, T5...> &Rhs) {
1054-
std::array<int, getNumElements()> Idxs{Indexes...};
1051+
std::array<int, size()> Idxs{Indexes...};
10551052
for (size_t I = 0; I < Idxs.size(); ++I) {
10561053
(*m_Vector)[Idxs[I]] = Rhs.getValue(I);
10571054
}
10581055
return *this;
10591056
}
10601057

1061-
template <
1062-
typename T1, typename T2, typename T3, template <typename> class T4,
1063-
int... T5,
1064-
typename = typename std::enable_if_t<sizeof...(T5) == getNumElements()>>
1058+
template <typename T1, typename T2, typename T3, template <typename> class T4,
1059+
int... T5,
1060+
typename = typename std::enable_if_t<sizeof...(T5) == size()>>
10651061
SwizzleOp &operator=(SwizzleOp<T1, T2, T3, T4, T5...> &&Rhs) {
1066-
std::array<int, getNumElements()> Idxs{Indexes...};
1062+
std::array<int, size()> Idxs{Indexes...};
10671063
for (size_t I = 0; I < Idxs.size(); ++I) {
10681064
(*m_Vector)[Idxs[I]] = Rhs.getValue(I);
10691065
}
@@ -1212,7 +1208,7 @@ class SwizzleOp : public detail::NamedSwizzlesMixinBoth<
12121208
vec<convertT, sizeof...(Indexes)> convert() const {
12131209
// First materialize the swizzle to vec_t and then apply convert() to it.
12141210
vec_t Tmp;
1215-
std::array<int, getNumElements()> Idxs{Indexes...};
1211+
std::array<int, size()> Idxs{Indexes...};
12161212
for (size_t I = 0; I < Idxs.size(); ++I) {
12171213
Tmp[I] = (*m_Vector)[Idxs[I]];
12181214
}
@@ -1251,21 +1247,21 @@ class SwizzleOp : public detail::NamedSwizzlesMixinBoth<
12511247
// or reading values from actual vector. Perform implicit type conversion when
12521248
// the number of elements == 1
12531249

1254-
template <int IdxNum = getNumElements()>
1250+
template <int IdxNum = size()>
12551251
CommonDataT getValue(EnableIfOneIndex<IdxNum, size_t> Index) const {
12561252
if (std::is_same_v<OperationCurrentT<DataT>, GetOp<DataT>>) {
1257-
std::array<int, getNumElements()> Idxs{Indexes...};
1253+
std::array<int, size()> Idxs{Indexes...};
12581254
return (*m_Vector)[Idxs[Index]];
12591255
}
12601256
auto Op = OperationCurrentT<CommonDataT>();
12611257
return Op(m_LeftOperation.getValue(Index),
12621258
m_RightOperation.getValue(Index));
12631259
}
12641260

1265-
template <int IdxNum = getNumElements()>
1261+
template <int IdxNum = size()>
12661262
DataT getValue(EnableIfMultipleIndexes<IdxNum, size_t> Index) const {
12671263
if (std::is_same_v<OperationCurrentT<DataT>, GetOp<DataT>>) {
1268-
std::array<int, getNumElements()> Idxs{Indexes...};
1264+
std::array<int, size()> Idxs{Indexes...};
12691265
return (*m_Vector)[Idxs[Index]];
12701266
}
12711267
auto Op = OperationCurrentT<DataT>();
@@ -1276,7 +1272,7 @@ class SwizzleOp : public detail::NamedSwizzlesMixinBoth<
12761272
template <template <typename> class Operation, typename RhsOperation>
12771273
void operatorHelper(const RhsOperation &Rhs) const {
12781274
Operation<DataT> Op;
1279-
std::array<int, getNumElements()> Idxs{Indexes...};
1275+
std::array<int, size()> Idxs{Indexes...};
12801276
for (size_t I = 0; I < Idxs.size(); ++I) {
12811277
DataT Res = Op((*m_Vector)[Idxs[I]], Rhs.getValue(I));
12821278
(*m_Vector)[Idxs[I]] = Res;

0 commit comments

Comments
 (0)