Skip to content

Commit 74833b2

Browse files
[NFC][SYCL] Switch to std::enable_if (#7628)
1 parent 94894ee commit 74833b2

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

57 files changed

+1126
-1181
lines changed

libdevice/cmake/modules/SYCLLibdevice.cmake

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,15 @@ set(compile_opts
3232
-sycl-std=2020
3333
)
3434

35+
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
36+
# If we use non-system GCC, need to pass its location when using
37+
# freshly built clang. The system one might be very old.
38+
get_filename_component(gcc_bin_dir ${CMAKE_CXX_COMPILER} DIRECTORY)
39+
get_filename_component(gcc_install_dir ${gcc_bin_dir} DIRECTORY)
40+
list(APPEND compile_opts
41+
"--gcc-toolchain=${gcc_install_dir}")
42+
endif()
43+
3544
if ("NVPTX" IN_LIST LLVM_TARGETS_TO_BUILD)
3645
string(APPEND sycl_targets_opt ",nvptx64-nvidia-cuda")
3746
list(APPEND compile_opts

sycl/include/CL/__spirv/spirv_ops.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -338,23 +338,23 @@ extern SYCL_EXTERNAL TempRetT __spirv_ImageSampleExplicitLod(SampledType,
338338
// of atomic min/max based on the type
339339
#define __SPIRV_ATOMIC_MINMAX(AS, Op) \
340340
template <typename T> \
341-
typename sycl::detail::enable_if_t< \
341+
typename std::enable_if_t< \
342342
std::is_integral<T>::value && std::is_signed<T>::value, T> \
343343
__spirv_Atomic##Op(AS T *Ptr, __spv::Scope::Flag Memory, \
344344
__spv::MemorySemanticsMask::Flag Semantics, \
345345
T Value) { \
346346
return __spirv_AtomicS##Op(Ptr, Memory, Semantics, Value); \
347347
} \
348348
template <typename T> \
349-
typename sycl::detail::enable_if_t< \
349+
typename std::enable_if_t< \
350350
std::is_integral<T>::value && !std::is_signed<T>::value, T> \
351351
__spirv_Atomic##Op(AS T *Ptr, __spv::Scope::Flag Memory, \
352352
__spv::MemorySemanticsMask::Flag Semantics, \
353353
T Value) { \
354354
return __spirv_AtomicU##Op(Ptr, Memory, Semantics, Value); \
355355
} \
356356
template <typename T> \
357-
typename sycl::detail::enable_if_t<std::is_floating_point<T>::value, T> \
357+
typename std::enable_if_t<std::is_floating_point<T>::value, T> \
358358
__spirv_Atomic##Op(AS T *Ptr, __spv::Scope::Flag Memory, \
359359
__spv::MemorySemanticsMask::Flag Semantics, \
360360
T Value) { \

sycl/include/sycl/accessor.hpp

Lines changed: 102 additions & 106 deletions
Large diffs are not rendered by default.

sycl/include/sycl/atomic.hpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ class __SYCL2020_DEPRECATED(
210210
#ifdef __ENABLE_USM_ADDR_SPACE__
211211
// Create atomic in global_space with one from ext_intel_global_device_space
212212
template <access::address_space _Space = addressSpace,
213-
typename = typename detail::enable_if_t<
213+
typename = typename std::enable_if_t<
214214
_Space == addressSpace &&
215215
addressSpace == access::address_space::global_space>>
216216
atomic(const atomic<T, access::address_space::ext_intel_global_device_space>
@@ -219,7 +219,7 @@ class __SYCL2020_DEPRECATED(
219219
}
220220

221221
template <access::address_space _Space = addressSpace,
222-
typename = typename detail::enable_if_t<
222+
typename = typename std::enable_if_t<
223223
_Space == addressSpace &&
224224
addressSpace == access::address_space::global_space>>
225225
atomic(
@@ -235,13 +235,13 @@ class __SYCL2020_DEPRECATED(
235235

236236
#ifdef __SYCL_DEVICE_ONLY__
237237
template <typename T2 = T>
238-
detail::enable_if_t<!std::is_same<cl_float, T2>::value, T>
238+
std::enable_if_t<!std::is_same<cl_float, T2>::value, T>
239239
load(memory_order Order = memory_order::relaxed) const {
240240
return __spirv_AtomicLoad(Ptr, SpirvScope,
241241
detail::getSPIRVMemorySemanticsMask(Order));
242242
}
243243
template <typename T2 = T>
244-
detail::enable_if_t<std::is_same<cl_float, T2>::value, T>
244+
std::enable_if_t<std::is_same<cl_float, T2>::value, T>
245245
load(memory_order Order = memory_order::relaxed) const {
246246
auto *TmpPtr = reinterpret_cast<typename multi_ptr<
247247
cl_int, addressSpace, access::decorated::yes>::pointer>(Ptr);

sycl/include/sycl/atomic_ref.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ inline constexpr memory_order getLoadOrder(memory_order order) {
8989
template <typename T, typename = void> struct bit_equal;
9090

9191
template <typename T>
92-
struct bit_equal<T, typename detail::enable_if_t<std::is_integral<T>::value>> {
92+
struct bit_equal<T, typename std::enable_if_t<std::is_integral<T>::value>> {
9393
bool operator()(const T &lhs, const T &rhs) { return lhs == rhs; }
9494
};
9595

@@ -266,7 +266,7 @@ class atomic_ref_impl
266266
template <typename T, memory_order DefaultOrder, memory_scope DefaultScope,
267267
access::address_space AddressSpace>
268268
class atomic_ref_impl<T, DefaultOrder, DefaultScope, AddressSpace,
269-
typename detail::enable_if_t<std::is_integral<T>::value>>
269+
typename std::enable_if_t<std::is_integral<T>::value>>
270270
: public atomic_ref_base<T, DefaultOrder, DefaultScope, AddressSpace> {
271271

272272
public:
@@ -414,7 +414,7 @@ template <typename T, memory_order DefaultOrder, memory_scope DefaultScope,
414414
access::address_space AddressSpace>
415415
class atomic_ref_impl<
416416
T, DefaultOrder, DefaultScope, AddressSpace,
417-
typename detail::enable_if_t<std::is_floating_point<T>::value>>
417+
typename std::enable_if_t<std::is_floating_point<T>::value>>
418418
: public atomic_ref_base<T, DefaultOrder, DefaultScope, AddressSpace> {
419419

420420
public:

sycl/include/sycl/backend/opencl.hpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,32 +33,32 @@ __SYCL_EXPORT bool has_extension(const sycl::device &SyclDevice,
3333
const std::string &Extension);
3434

3535
// Construction of SYCL platform.
36-
template <typename T, typename detail::enable_if_t<
36+
template <typename T, typename std::enable_if_t<
3737
std::is_same<T, platform>::value> * = nullptr>
3838
__SYCL_DEPRECATED("Use SYCL 2020 sycl::make_platform free function")
3939
T make(typename detail::interop<backend::opencl, T>::type Interop) {
4040
return make_platform(detail::pi::cast<pi_native_handle>(Interop));
4141
}
4242

4343
// Construction of SYCL device.
44-
template <typename T, typename detail::enable_if_t<
45-
std::is_same<T, device>::value> * = nullptr>
44+
template <typename T,
45+
typename std::enable_if_t<std::is_same<T, device>::value> * = nullptr>
4646
__SYCL_DEPRECATED("Use SYCL 2020 sycl::make_device free function")
4747
T make(typename detail::interop<backend::opencl, T>::type Interop) {
4848
return make_device(detail::pi::cast<pi_native_handle>(Interop));
4949
}
5050

5151
// Construction of SYCL context.
52-
template <typename T, typename detail::enable_if_t<
53-
std::is_same<T, context>::value> * = nullptr>
52+
template <typename T, typename std::enable_if_t<std::is_same<T, context>::value>
53+
* = nullptr>
5454
__SYCL_DEPRECATED("Use SYCL 2020 sycl::make_context free function")
5555
T make(typename detail::interop<backend::opencl, T>::type Interop) {
5656
return make_context(detail::pi::cast<pi_native_handle>(Interop));
5757
}
5858

5959
// Construction of SYCL queue.
60-
template <typename T, typename detail::enable_if_t<
61-
std::is_same<T, queue>::value> * = nullptr>
60+
template <typename T,
61+
typename std::enable_if_t<std::is_same<T, queue>::value> * = nullptr>
6262
__SYCL_DEPRECATED("Use SYCL 2020 sycl::make_queue free function")
6363
T make(const context &Context,
6464
typename detail::interop<backend::opencl, T>::type Interop) {

sycl/include/sycl/buffer.hpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,8 @@ class __SYCL_EXPORT buffer_plain {
140140
/// \ingroup sycl_api
141141
template <typename T, int dimensions = 1,
142142
typename AllocatorT = buffer_allocator<std::remove_const_t<T>>,
143-
typename __Enabled = typename detail::enable_if_t<(dimensions > 0) &&
144-
(dimensions <= 3)>>
143+
typename __Enabled =
144+
typename std::enable_if_t<(dimensions > 0) && (dimensions <= 3)>>
145145
class buffer : public detail::buffer_plain,
146146
public detail::OwnerLessBase<buffer<T, dimensions, AllocatorT>> {
147147
// TODO check is_device_copyable<T>::value after converting sycl::vec into a
@@ -155,21 +155,21 @@ class buffer : public detail::buffer_plain,
155155
using const_reference = const value_type &;
156156
using allocator_type = AllocatorT;
157157
template <int dims>
158-
using EnableIfOneDimension = typename detail::enable_if_t<1 == dims>;
158+
using EnableIfOneDimension = typename std::enable_if_t<1 == dims>;
159159
// using same requirement for contiguous container as std::span
160160
template <class Container>
161161
using EnableIfContiguous =
162-
detail::void_t<detail::enable_if_t<std::is_convertible<
162+
detail::void_t<std::enable_if_t<std::is_convertible<
163163
detail::remove_pointer_t<
164164
decltype(std::declval<Container>().data())> (*)[],
165165
const T (*)[]>::value>,
166166
decltype(std::declval<Container>().size())>;
167167
template <class It>
168-
using EnableIfItInputIterator = detail::enable_if_t<
168+
using EnableIfItInputIterator = std::enable_if_t<
169169
std::is_convertible<typename std::iterator_traits<It>::iterator_category,
170170
std::input_iterator_tag>::value>;
171171
template <typename ItA, typename ItB>
172-
using EnableIfSameNonConstIterators = typename detail::enable_if_t<
172+
using EnableIfSameNonConstIterators = typename std::enable_if_t<
173173
std::is_same<ItA, ItB>::value && !std::is_const<ItA>::value, ItA>;
174174

175175
std::array<size_t, 3> rangeToArray(range<3> &r) { return {r[0], r[1], r[2]}; }
@@ -579,7 +579,7 @@ class buffer : public detail::buffer_plain,
579579
}
580580

581581
template <template <typename WeakT> class WeakPtrT, typename WeakT>
582-
detail::enable_if_t<
582+
std::enable_if_t<
583583
std::is_convertible<WeakPtrT<WeakT>, std::weak_ptr<WeakT>>::value>
584584
set_final_data_internal(WeakPtrT<WeakT> FinalData) {
585585
std::weak_ptr<WeakT> TempFinalData(FinalData);

0 commit comments

Comments
 (0)