From c12fa33ae810b47cc31d4b4b3065a4d531c0e859 Mon Sep 17 00:00:00 2001 From: emichulo Date: Fri, 7 Aug 2026 10:23:19 +0300 Subject: [PATCH 1/3] adding noexcept to all functions, including operators --- sycl/include/sycl/id.hpp | 71 +++++++++++++++++++++------------------- 1 file changed, 37 insertions(+), 34 deletions(-) diff --git a/sycl/include/sycl/id.hpp b/sycl/include/sycl/id.hpp index 018ccc5b2a638..d3b4cf243aad8 100644 --- a/sycl/include/sycl/id.hpp +++ b/sycl/include/sycl/id.hpp @@ -11,7 +11,7 @@ #include // for array #include // for __SYCL_ASSUME_ID_RANGE #include // for __SYCL_DEPRECATED, __SYCL_A... -#include // for range +#include // for range #include // for size_t #include // for enable_if_t, conditional_t @@ -56,45 +56,46 @@ template class id : public detail::array { #endif // __SYCL_DISABLE_ID_TO_INT_CONV__ public: - id() = default; + id() noexcept = default; /* The following constructor is only available in the id struct * specialization where: Dimensions==1 */ - template id(ParamTy dim0) : base(dim0) {} + template + id(ParamTy dim0) noexcept : base(dim0) {} template - id(ParamTy> &range_size) + id(ParamTy> &range_size) noexcept : base(range_size.get(0)) {} template - id(ParamTy> &item) + id(ParamTy> &item) noexcept : base(item.get_id(0)) {} /* The following constructor is only available in the id struct * specialization where: Dimensions==2 */ template - id(ParamTy dim0, size_t dim1) : base(dim0, dim1) {} + id(ParamTy dim0, size_t dim1) noexcept : base(dim0, dim1) {} template - id(ParamTy> &range_size) + id(ParamTy> &range_size) noexcept : base(range_size.get(0), range_size.get(1)) {} template - id(ParamTy> &item) + id(ParamTy> &item) noexcept : base(item.get_id(0), item.get_id(1)) {} /* The following constructor is only available in the id struct * specialization where: Dimensions==3 */ template - id(ParamTy dim0, size_t dim1, size_t dim2) + id(ParamTy dim0, size_t dim1, size_t dim2) noexcept : base(dim0, dim1, dim2) {} template - id(ParamTy> &range_size) + id(ParamTy> &range_size) noexcept : base(range_size.get(0), range_size.get(1), range_size.get(2)) {} template - id(ParamTy> &item) + id(ParamTy> &item) noexcept : base(item.get_id(0), item.get_id(1), item.get_id(2)) {} #ifndef __SYCL_DISABLE_ID_TO_INT_CONV__ @@ -103,7 +104,8 @@ template class id : public detail::array { * conversion: * int a = id<1>(value); */ - __SYCL_ALWAYS_INLINE operator EnableIfT<(Dimensions == 1), size_t>() const { + __SYCL_ALWAYS_INLINE + operator EnableIfT<(Dimensions == 1), size_t>() const noexcept { size_t Result = this->common_array[0]; __SYCL_ASSUME_ID_RANGE(Result); return Result; @@ -115,7 +117,7 @@ template class id : public detail::array { using detail::array::operator==; // Needed for clang in C++20 mode as the above operator== would be ambigious // between regular/reversed call for "Id == Id" case. - bool operator==(const id &rhs) const { + bool operator==(const id &rhs) const noexcept { return this->detail::array::operator==(rhs); } #if __cpp_impl_three_way_comparison < 201907 @@ -129,14 +131,14 @@ template class id : public detail::array { * will be "id op size_t"*/ #define __SYCL_GEN_OPT(op) \ template \ - EnableIfIntegral operator op(const T &rhs) const { \ + EnableIfIntegral operator op(const T & rhs) const noexcept { \ if (this->common_array[0] != rhs) \ return false op true; \ return true op true; \ } \ template \ - friend EnableIfIntegral operator op(const T &lhs, \ - const id &rhs) { \ + friend EnableIfIntegral operator op( \ + const T & lhs, const id &rhs) noexcept { \ if (lhs != rhs.common_array[0]) \ return false op true; \ return true op true; \ @@ -152,7 +154,7 @@ template class id : public detail::array { // OP is: +, -, *, /, %, <<, >>, &, |, ^, &&, ||, <, >, <=, >= #define __SYCL_GEN_OPT_BASE(op) \ friend id operator op(const id &lhs, \ - const id &rhs) { \ + const id &rhs) noexcept { \ id result; \ for (int i = 0; i < Dimensions; ++i) { \ result.common_array[i] = lhs.common_array[i] op rhs.common_array[i]; \ @@ -166,7 +168,7 @@ template class id : public detail::array { __SYCL_GEN_OPT_BASE(op) \ template \ friend EnableIfIntegral> operator op( \ - const id &lhs, const T &rhs) { \ + const id &lhs, const T & rhs) noexcept { \ id result; \ for (int i = 0; i < Dimensions; ++i) { \ result.common_array[i] = lhs.common_array[i] op rhs; \ @@ -175,7 +177,7 @@ template class id : public detail::array { } \ template \ friend EnableIfIntegral> operator op( \ - const T &lhs, const id &rhs) { \ + const T & lhs, const id &rhs) noexcept { \ id result; \ for (int i = 0; i < Dimensions; ++i) { \ result.common_array[i] = lhs op rhs.common_array[i]; \ @@ -186,15 +188,15 @@ template class id : public detail::array { #define __SYCL_GEN_OPT(op) \ __SYCL_GEN_OPT_BASE(op) \ friend id operator op(const id &lhs, \ - const size_t &rhs) { \ + const size_t & rhs) noexcept { \ id result; \ for (int i = 0; i < Dimensions; ++i) { \ result.common_array[i] = lhs.common_array[i] op rhs; \ } \ return result; \ } \ - friend id operator op(const size_t &lhs, \ - const id &rhs) { \ + friend id operator op(const size_t & lhs, \ + const id &rhs) noexcept { \ id result; \ for (int i = 0; i < Dimensions; ++i) { \ result.common_array[i] = lhs op rhs.common_array[i]; \ @@ -226,13 +228,14 @@ template class id : public detail::array { // OP is: +=, -=, *=, /=, %=, <<=, >>=, &=, |=, ^= #define __SYCL_GEN_OPT(op) \ friend id &operator op(id &lhs, \ - const id &rhs) { \ + const id &rhs) noexcept { \ for (int i = 0; i < Dimensions; ++i) { \ lhs.common_array[i] op rhs.common_array[i]; \ } \ return lhs; \ } \ - friend id &operator op(id &lhs, const size_t &rhs) { \ + friend id &operator op(id &lhs, \ + const size_t & rhs) noexcept { \ for (int i = 0; i < Dimensions; ++i) { \ lhs.common_array[i] op rhs; \ } \ @@ -254,7 +257,7 @@ template class id : public detail::array { // OP is unary +, - #define __SYCL_GEN_OPT(op) \ - friend id operator op(const id &rhs) { \ + friend id operator op(const id &rhs) noexcept { \ id result; \ for (int i = 0; i < Dimensions; ++i) { \ result.common_array[i] = (op rhs.common_array[i]); \ @@ -269,7 +272,7 @@ template class id : public detail::array { // OP is prefix ++, -- #define __SYCL_GEN_OPT(op) \ - friend id &operator op(id &rhs) { \ + friend id &operator op(id &rhs) noexcept { \ for (int i = 0; i < Dimensions; ++i) { \ op rhs.common_array[i]; \ } \ @@ -283,7 +286,7 @@ template class id : public detail::array { // OP is postfix ++, -- #define __SYCL_GEN_OPT(op) \ - friend id operator op(id &lhs, int) { \ + friend id operator op(id &lhs, int) noexcept { \ id old_lhs; \ for (int i = 0; i < Dimensions; ++i) { \ old_lhs.common_array[i] = lhs.common_array[i]; \ @@ -301,24 +304,24 @@ template class id : public detail::array { namespace detail { template size_t getOffsetForId(range Range, id Id, - id Offset) { + id Offset) noexcept { size_t offset = 0; for (int i = 0; i < Dimensions; ++i) offset = offset * Range[i] + Offset[i] + Id[i]; return offset; } -inline id<1> getDelinearizedId(const range<1> &, size_t Index) { +inline id<1> getDelinearizedId(const range<1> &, size_t Index) noexcept { return {Index}; } -inline id<2> getDelinearizedId(const range<2> &Range, size_t Index) { +inline id<2> getDelinearizedId(const range<2> &Range, size_t Index) noexcept { size_t X = Index % Range[1]; size_t Y = Index / Range[1]; return {Y, X}; } -inline id<3> getDelinearizedId(const range<3> &Range, size_t Index) { +inline id<3> getDelinearizedId(const range<3> &Range, size_t Index) noexcept { size_t D1D2 = Range[1] * Range[2]; size_t Z = Index / D1D2; size_t ZRest = Index % D1D2; @@ -331,9 +334,9 @@ inline id<3> getDelinearizedId(const range<3> &Range, size_t Index) { // C++ feature test macros are supported by all supported compilers // with the exception of MSVC 1914. It doesn't support deduction guides. #ifdef __cpp_deduction_guides -id(size_t)->id<1>; -id(size_t, size_t)->id<2>; -id(size_t, size_t, size_t)->id<3>; +id(size_t) -> id<1>; +id(size_t, size_t) -> id<2>; +id(size_t, size_t, size_t) -> id<3>; #endif } // namespace _V1 } // namespace sycl From bc146c8c767aebe3fc1eb54f51d21a4b9923c417 Mon Sep 17 00:00:00 2001 From: emichulo Date: Fri, 7 Aug 2026 10:48:58 +0300 Subject: [PATCH 2/3] fix: correct formatting --- sycl/include/sycl/id.hpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/sycl/include/sycl/id.hpp b/sycl/include/sycl/id.hpp index d3b4cf243aad8..e48dffa86b281 100644 --- a/sycl/include/sycl/id.hpp +++ b/sycl/include/sycl/id.hpp @@ -14,7 +14,7 @@ #include // for range #include // for size_t -#include // for enable_if_t, conditional_t +#include // for enable_if_t, conditional_t namespace sycl { inline namespace _V1 { @@ -131,14 +131,14 @@ template class id : public detail::array { * will be "id op size_t"*/ #define __SYCL_GEN_OPT(op) \ template \ - EnableIfIntegral operator op(const T & rhs) const noexcept { \ + EnableIfIntegral operator op(const T &rhs) const noexcept { \ if (this->common_array[0] != rhs) \ return false op true; \ return true op true; \ } \ template \ friend EnableIfIntegral operator op( \ - const T & lhs, const id &rhs) noexcept { \ + const T &lhs, const id &rhs) noexcept { \ if (lhs != rhs.common_array[0]) \ return false op true; \ return true op true; \ @@ -168,7 +168,7 @@ template class id : public detail::array { __SYCL_GEN_OPT_BASE(op) \ template \ friend EnableIfIntegral> operator op( \ - const id &lhs, const T & rhs) noexcept { \ + const id &lhs, const T &rhs) noexcept { \ id result; \ for (int i = 0; i < Dimensions; ++i) { \ result.common_array[i] = lhs.common_array[i] op rhs; \ @@ -177,7 +177,7 @@ template class id : public detail::array { } \ template \ friend EnableIfIntegral> operator op( \ - const T & lhs, const id &rhs) noexcept { \ + const T &lhs, const id &rhs) noexcept { \ id result; \ for (int i = 0; i < Dimensions; ++i) { \ result.common_array[i] = lhs op rhs.common_array[i]; \ @@ -188,14 +188,14 @@ template class id : public detail::array { #define __SYCL_GEN_OPT(op) \ __SYCL_GEN_OPT_BASE(op) \ friend id operator op(const id &lhs, \ - const size_t & rhs) noexcept { \ + const size_t &rhs) noexcept { \ id result; \ for (int i = 0; i < Dimensions; ++i) { \ result.common_array[i] = lhs.common_array[i] op rhs; \ } \ return result; \ } \ - friend id operator op(const size_t & lhs, \ + friend id operator op(const size_t &lhs, \ const id &rhs) noexcept { \ id result; \ for (int i = 0; i < Dimensions; ++i) { \ @@ -235,7 +235,7 @@ template class id : public detail::array { return lhs; \ } \ friend id &operator op(id &lhs, \ - const size_t & rhs) noexcept { \ + const size_t &rhs) noexcept { \ for (int i = 0; i < Dimensions; ++i) { \ lhs.common_array[i] op rhs; \ } \ @@ -334,9 +334,9 @@ inline id<3> getDelinearizedId(const range<3> &Range, size_t Index) noexcept { // C++ feature test macros are supported by all supported compilers // with the exception of MSVC 1914. It doesn't support deduction guides. #ifdef __cpp_deduction_guides -id(size_t) -> id<1>; -id(size_t, size_t) -> id<2>; -id(size_t, size_t, size_t) -> id<3>; +id(size_t)->id<1>; +id(size_t, size_t)->id<2>; +id(size_t, size_t, size_t)->id<3>; #endif } // namespace _V1 } // namespace sycl From 187d29aeba41916299b2b7c7477797fa16d81534 Mon Sep 17 00:00:00 2001 From: Emi Date: Wed, 12 Aug 2026 00:10:42 +0300 Subject: [PATCH 3/3] Fix formatting according to project standards --- sycl/include/sycl/id.hpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sycl/include/sycl/id.hpp b/sycl/include/sycl/id.hpp index e48dffa86b281..4d891459c5b78 100644 --- a/sycl/include/sycl/id.hpp +++ b/sycl/include/sycl/id.hpp @@ -14,7 +14,7 @@ #include // for range #include // for size_t -#include // for enable_if_t, conditional_t +#include // for enable_if_t, conditional_t namespace sycl { inline namespace _V1 { @@ -334,9 +334,9 @@ inline id<3> getDelinearizedId(const range<3> &Range, size_t Index) noexcept { // C++ feature test macros are supported by all supported compilers // with the exception of MSVC 1914. It doesn't support deduction guides. #ifdef __cpp_deduction_guides -id(size_t)->id<1>; -id(size_t, size_t)->id<2>; -id(size_t, size_t, size_t)->id<3>; +id(size_t) -> id<1>; +id(size_t, size_t) -> id<2>; +id(size_t, size_t, size_t) -> id<3>; #endif } // namespace _V1 } // namespace sycl