@@ -180,8 +180,6 @@ class __SYCL_EBO vec
180
180
private:
181
181
#endif // __SYCL_DEVICE_ONLY__
182
182
183
- static constexpr int getNumElements () { return NumElements; }
184
-
185
183
// SizeChecker is needed for vec(const argTN &... args) ctor to validate args.
186
184
template <int Counter, int MaxValue, class ...>
187
185
struct SizeChecker : std::conditional_t <Counter == MaxValue, std::true_type,
@@ -548,6 +546,27 @@ class SwizzleOp : public detail::NamedSwizzlesMixinBoth<
548
546
OperationCurrentT, Indexes...>,
549
547
sizeof ...(Indexes)> {
550
548
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:
551
570
// Certain operators return a vector with a different element type. Also, the
552
571
// left and right operand types may differ. CommonDataT selects a result type
553
572
// based on these types to ensure that the result value can be represented.
@@ -579,7 +598,6 @@ class SwizzleOp : public detail::NamedSwizzlesMixinBoth<
579
598
using CommonDataT = std::conditional_t <
580
599
sizeof (DataT) >= sizeof (std::common_type_t <OpLeftDataT, OpRightDataT>),
581
600
DataT, std::common_type_t <OpLeftDataT, OpRightDataT>>;
582
- static constexpr int getNumElements () { return sizeof ...(Indexes); }
583
601
584
602
using rel_t = detail::rel_t <DataT>;
585
603
using vec_t = vec<DataT, sizeof ...(Indexes)>;
@@ -594,7 +612,7 @@ class SwizzleOp : public detail::NamedSwizzlesMixinBoth<
594
612
595
613
template <typename OperationRightT_,
596
614
template <typename > class OperationCurrentT_ , int ... Idx_>
597
- using NewRelOp = SwizzleOp<vec<rel_t , VecT::getNumElements ()>,
615
+ using NewRelOp = SwizzleOp<vec<rel_t , VecT::size ()>,
598
616
SwizzleOp<VecT, OperationLeftT, OperationRightT,
599
617
OperationCurrentT, Indexes...>,
600
618
OperationRightT_, OperationCurrentT_, Idx_...>;
@@ -607,12 +625,12 @@ class SwizzleOp : public detail::NamedSwizzlesMixinBoth<
607
625
OperationCurrentT_, Idx_...>;
608
626
609
627
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>;
612
630
613
631
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>;
616
634
617
635
template <typename T>
618
636
using EnableIfScalarType =
@@ -633,40 +651,22 @@ class SwizzleOp : public detail::NamedSwizzlesMixinBoth<
633
651
SwizzleOp<const VecT, GetOp<DataT>, GetOp<DataT>, GetOp, Indices...>;
634
652
635
653
public:
636
- using element_type = DataT;
637
- using value_type = DataT;
638
-
639
654
#ifdef __SYCL_DEVICE_ONLY__
640
655
using vector_t = typename vec_t ::vector_t ;
641
656
#endif // __SYCL_DEVICE_ONLY__
642
657
643
658
const DataT &operator [](int i) const {
644
- std::array<int , getNumElements ()> Idxs{Indexes...};
659
+ std::array<int , size ()> Idxs{Indexes...};
645
660
return (*m_Vector)[Idxs[i]];
646
661
}
647
662
648
663
template <typename _T = VecT>
649
664
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...};
651
666
return (*m_Vector)[Idxs[i]];
652
667
}
653
668
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(),
670
670
typename = EnableIfOneIndex<IdxNum>,
671
671
typename = EnableIfScalarType<T>>
672
672
operator T () const {
@@ -870,8 +870,7 @@ class SwizzleOp : public detail::NamedSwizzlesMixinBoth<
870
870
__SYCL_RELLOGOP (||, (!detail::is_byte_v<T> && !detail::is_vgenfloat_v<T>))
871
871
#undef __SYCL_RELLOGOP
872
872
873
- template <int IdxNum = getNumElements(),
874
- typename = EnableIfMultipleIndexes<IdxNum>>
873
+ template <int IdxNum = size(), typename = EnableIfMultipleIndexes<IdxNum>>
875
874
SwizzleOp &operator =(const vec<DataT, IdxNum> &Rhs) {
876
875
std::array<int , IdxNum> Idxs{Indexes...};
877
876
for (size_t I = 0 ; I < Idxs.size (); ++I) {
@@ -880,15 +879,14 @@ class SwizzleOp : public detail::NamedSwizzlesMixinBoth<
880
879
return *this ;
881
880
}
882
881
883
- template <int IdxNum = getNumElements (), typename = EnableIfOneIndex<IdxNum>>
882
+ template <int IdxNum = size (), typename = EnableIfOneIndex<IdxNum>>
884
883
SwizzleOp &operator =(const DataT &Rhs) {
885
884
std::array<int , IdxNum> Idxs{Indexes...};
886
885
(*m_Vector)[Idxs[0 ]] = Rhs;
887
886
return *this ;
888
887
}
889
888
890
- template <int IdxNum = getNumElements(),
891
- EnableIfMultipleIndexes<IdxNum, bool > = true >
889
+ template <int IdxNum = size(), EnableIfMultipleIndexes<IdxNum, bool > = true >
892
890
SwizzleOp &operator =(const DataT &Rhs) {
893
891
std::array<int , IdxNum> Idxs{Indexes...};
894
892
for (auto Idx : Idxs) {
@@ -897,7 +895,7 @@ class SwizzleOp : public detail::NamedSwizzlesMixinBoth<
897
895
return *this ;
898
896
}
899
897
900
- template <int IdxNum = getNumElements (), typename = EnableIfOneIndex<IdxNum>>
898
+ template <int IdxNum = size (), typename = EnableIfOneIndex<IdxNum>>
901
899
SwizzleOp &operator =(DataT &&Rhs) {
902
900
std::array<int , IdxNum> Idxs{Indexes...};
903
901
(*m_Vector)[Idxs[0 ]] = Rhs;
@@ -1046,24 +1044,22 @@ class SwizzleOp : public detail::NamedSwizzlesMixinBoth<
1046
1044
return NewLHOp<RhsOperation, LShift, Indexes...>(m_Vector, *this , Rhs);
1047
1045
}
1048
1046
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()>>
1053
1050
SwizzleOp &operator =(const SwizzleOp<T1, T2, T3, T4, T5...> &Rhs) {
1054
- std::array<int , getNumElements ()> Idxs{Indexes...};
1051
+ std::array<int , size ()> Idxs{Indexes...};
1055
1052
for (size_t I = 0 ; I < Idxs.size (); ++I) {
1056
1053
(*m_Vector)[Idxs[I]] = Rhs.getValue (I);
1057
1054
}
1058
1055
return *this ;
1059
1056
}
1060
1057
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()>>
1065
1061
SwizzleOp &operator =(SwizzleOp<T1, T2, T3, T4, T5...> &&Rhs) {
1066
- std::array<int , getNumElements ()> Idxs{Indexes...};
1062
+ std::array<int , size ()> Idxs{Indexes...};
1067
1063
for (size_t I = 0 ; I < Idxs.size (); ++I) {
1068
1064
(*m_Vector)[Idxs[I]] = Rhs.getValue (I);
1069
1065
}
@@ -1212,7 +1208,7 @@ class SwizzleOp : public detail::NamedSwizzlesMixinBoth<
1212
1208
vec<convertT, sizeof ...(Indexes)> convert () const {
1213
1209
// First materialize the swizzle to vec_t and then apply convert() to it.
1214
1210
vec_t Tmp;
1215
- std::array<int , getNumElements ()> Idxs{Indexes...};
1211
+ std::array<int , size ()> Idxs{Indexes...};
1216
1212
for (size_t I = 0 ; I < Idxs.size (); ++I) {
1217
1213
Tmp[I] = (*m_Vector)[Idxs[I]];
1218
1214
}
@@ -1251,21 +1247,21 @@ class SwizzleOp : public detail::NamedSwizzlesMixinBoth<
1251
1247
// or reading values from actual vector. Perform implicit type conversion when
1252
1248
// the number of elements == 1
1253
1249
1254
- template <int IdxNum = getNumElements ()>
1250
+ template <int IdxNum = size ()>
1255
1251
CommonDataT getValue (EnableIfOneIndex<IdxNum, size_t > Index) const {
1256
1252
if (std::is_same_v<OperationCurrentT<DataT>, GetOp<DataT>>) {
1257
- std::array<int , getNumElements ()> Idxs{Indexes...};
1253
+ std::array<int , size ()> Idxs{Indexes...};
1258
1254
return (*m_Vector)[Idxs[Index]];
1259
1255
}
1260
1256
auto Op = OperationCurrentT<CommonDataT>();
1261
1257
return Op (m_LeftOperation.getValue (Index),
1262
1258
m_RightOperation.getValue (Index));
1263
1259
}
1264
1260
1265
- template <int IdxNum = getNumElements ()>
1261
+ template <int IdxNum = size ()>
1266
1262
DataT getValue (EnableIfMultipleIndexes<IdxNum, size_t > Index) const {
1267
1263
if (std::is_same_v<OperationCurrentT<DataT>, GetOp<DataT>>) {
1268
- std::array<int , getNumElements ()> Idxs{Indexes...};
1264
+ std::array<int , size ()> Idxs{Indexes...};
1269
1265
return (*m_Vector)[Idxs[Index]];
1270
1266
}
1271
1267
auto Op = OperationCurrentT<DataT>();
@@ -1276,7 +1272,7 @@ class SwizzleOp : public detail::NamedSwizzlesMixinBoth<
1276
1272
template <template <typename > class Operation , typename RhsOperation>
1277
1273
void operatorHelper (const RhsOperation &Rhs) const {
1278
1274
Operation<DataT> Op;
1279
- std::array<int , getNumElements ()> Idxs{Indexes...};
1275
+ std::array<int , size ()> Idxs{Indexes...};
1280
1276
for (size_t I = 0 ; I < Idxs.size (); ++I) {
1281
1277
DataT Res = Op ((*m_Vector)[Idxs[I]], Rhs.getValue (I));
1282
1278
(*m_Vector)[Idxs[I]] = Res;
0 commit comments