Skip to content

Commit 47c19c9

Browse files
[NFC][SYCL] Add sycl/detail/fwd/accessor.hpp helper (#20067)
Similar to #20049
1 parent 61c6543 commit 47c19c9

File tree

13 files changed

+66
-90
lines changed

13 files changed

+66
-90
lines changed

sycl/include/sycl/accessor.hpp

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -221,13 +221,6 @@ namespace ext::intel::esimd::detail {
221221
class AccessorPrivateProxy;
222222
} // namespace ext::intel::esimd::detail
223223

224-
template <typename DataT, int Dimensions = 1,
225-
access::mode AccessMode = access::mode::read_write,
226-
access::target AccessTarget = access::target::device,
227-
access::placeholder IsPlaceholder = access::placeholder::false_t,
228-
typename PropertyListT = ext::oneapi::accessor_property_list<>>
229-
class accessor;
230-
231224
namespace ext::oneapi::experimental {
232225
template <typename, int> class dynamic_local_accessor;
233226
}
@@ -616,9 +609,11 @@ class __SYCL_EXPORT LocalAccessorBaseHost {
616609
/// \sa buffer
617610
///
618611
/// \ingroup sycl_api_acc
619-
template <typename DataT, int Dimensions, access::mode AccessMode,
620-
access::target AccessTarget, access::placeholder IsPlaceholder,
621-
typename PropertyListT>
612+
template <typename DataT, int Dimensions = 1,
613+
access::mode AccessMode = access::mode::read_write,
614+
access::target AccessTarget = access::target::device,
615+
access::placeholder IsPlaceholder = access::placeholder::false_t,
616+
typename PropertyListT = ext::oneapi::accessor_property_list<>>
622617
class __SYCL_EBO __SYCL_SPECIAL_CLASS __SYCL_TYPE(accessor) accessor :
623618
#ifndef __SYCL_DEVICE_ONLY__
624619
public detail::AccessorBaseHost,

sycl/include/sycl/buffer.hpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
#include <sycl/detail/common.hpp>
1515
#include <sycl/detail/defines_elementary.hpp>
1616
#include <sycl/detail/export.hpp>
17+
#include <sycl/detail/fwd/accessor.hpp>
1718
#include <sycl/detail/helpers.hpp>
1819
#include <sycl/detail/iostream_proxy.hpp>
1920
#include <sycl/detail/is_device_copyable.hpp>
@@ -51,9 +52,6 @@ template <int dimensions> class range;
5152
template <typename DataT>
5253
using buffer_allocator = detail::sycl_memory_object_allocator<DataT>;
5354

54-
template <typename DataT, int Dimensions, access::mode AccessMode>
55-
class host_accessor;
56-
5755
template <typename T, int Dimensions, typename AllocatorT, typename Enable>
5856
class buffer;
5957

sycl/include/sycl/detail/accessor_iterator.hpp

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010

1111
#include <sycl/access/access.hpp> // for mode, placeholder, target
1212
#include <sycl/buffer.hpp> // for range
13-
#include <sycl/id.hpp> // for id
13+
#include <sycl/detail/fwd/accessor.hpp>
14+
#include <sycl/id.hpp>
1415

1516
#include <cstddef> // for size_t
1617
#include <iterator> // for random_access_iterator_tag
@@ -37,14 +38,7 @@
3738

3839
namespace sycl {
3940
inline namespace _V1 {
40-
41-
template <typename AccessorDataT, int AccessorDimensions,
42-
access::mode AccessMode, access::target AccessTarget,
43-
access::placeholder IsPlaceholder, typename PropertyListT>
44-
class accessor;
45-
4641
namespace detail {
47-
4842
template <typename DataT, int Dimensions> class accessor_iterator {
4943
public:
5044
using difference_type = std::ptrdiff_t;
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
//===----------------------------------------------------------------------===//
2+
//
3+
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4+
// See https://llvm.org/LICENSE.txt for license information.
5+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6+
//
7+
//===----------------------------------------------------------------------===//
8+
9+
#pragma once
10+
11+
#include <sycl/access/access.hpp>
12+
#include <sycl/detail/defines.hpp>
13+
14+
namespace sycl {
15+
inline namespace _V1 {
16+
17+
template <typename DataT, int Dimensions, access::mode AccessMode,
18+
access::target AccessTarget, access::placeholder IsPlaceholder,
19+
typename PropertyListT>
20+
class accessor;
21+
template <typename DataT, int Dimensions, access::mode AccessMode>
22+
class host_accessor;
23+
template <typename DataT, int Dimensions>
24+
class __SYCL_EBO
25+
__SYCL_SPECIAL_CLASS __SYCL_TYPE(local_accessor) local_accessor;
26+
27+
namespace detail {
28+
template <typename DataT, int Dimensions, access::mode AccessMode,
29+
access::target AccessTarget, access::placeholder IsPlaceholder>
30+
class image_accessor;
31+
}
32+
33+
template <typename DataT, int Dimensions, access_mode AccessMode,
34+
image_target AccessTarget>
35+
class unsampled_image_accessor;
36+
template <typename DataT, int Dimensions, image_target AccessTarget>
37+
class sampled_image_accessor;
38+
template <typename DataT, int Dimensions, access_mode AccessMode>
39+
class host_unsampled_image_accessor;
40+
template <typename DataT, int Dimensions> class host_sampled_image_accessor;
41+
} // namespace _V1
42+
} // namespace sycl

sycl/include/sycl/ext/oneapi/accessor_property_list.hpp

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,13 @@
88

99
#pragma once
1010

11-
#include <sycl/access/access.hpp> // for mode, placeholder, target
12-
#include <sycl/detail/defines.hpp> // for __SYCL_TYPE
11+
#include <sycl/access/access.hpp> // for mode, placeholder, target
12+
#include <sycl/detail/defines.hpp> // for __SYCL_TYPE
13+
#include <sycl/detail/fwd/accessor.hpp>
1314
#include <sycl/detail/property_helper.hpp> // for DataLessPropKind, Prop...
1415
#include <sycl/detail/property_list_base.hpp> // for PropertyListBase
1516
#include <sycl/exception.hpp>
16-
#include <sycl/property_list.hpp> // for property_list
17+
#include <sycl/property_list.hpp> // for property_list
1718

1819
#include <bitset> // for bitset
1920
#include <memory> // for shared_ptr
@@ -22,11 +23,6 @@
2223

2324
namespace sycl {
2425
inline namespace _V1 {
25-
// Forward declaration
26-
template <typename DataT, int Dimensions, access::mode AccessMode,
27-
access::target AccessTarget, access::placeholder IsPlaceholder,
28-
typename PropertyListT>
29-
class accessor;
3026
namespace detail {
3127
// This helper template must be specialized for nested instance template
3228
// of each compile-time-constant property.

sycl/include/sycl/handler.hpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -208,9 +208,6 @@ class queue_impl;
208208
class stream_impl;
209209
class event_impl;
210210
class context_impl;
211-
template <typename DataT, int Dimensions, access::mode AccessMode,
212-
access::target AccessTarget, access::placeholder IsPlaceholder>
213-
class image_accessor;
214211
class HandlerAccess;
215212
class HostTask;
216213

sycl/include/sycl/image.hpp

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -413,25 +413,8 @@ class unsampled_image_common : public image_common<Dimensions, AllocatorT> {
413413
});
414414
}
415415
};
416-
417-
template <typename DataT, int Dims, access::mode AccMode,
418-
access::target AccTarget, access::placeholder IsPlaceholder>
419-
class image_accessor;
420-
421416
} // namespace detail
422417

423-
template <typename DataT, int Dimensions, access_mode AccessMode,
424-
image_target AccessTarget>
425-
class unsampled_image_accessor;
426-
427-
template <typename DataT, int Dimensions, access_mode AccessMode>
428-
class host_unsampled_image_accessor;
429-
430-
template <typename DataT, int Dimensions, image_target AccessTarget>
431-
class sampled_image_accessor;
432-
433-
template <typename DataT, int Dimensions> class host_sampled_image_accessor;
434-
435418
/// Defines a shared image data.
436419
///
437420
/// Images can be 1-, 2-, and 3-dimensional. They have to be accessed using the

sycl/include/sycl/multi_ptr.hpp

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include <sycl/aliases.hpp> // for half
1313
#include <sycl/detail/address_space_cast.hpp>
1414
#include <sycl/detail/defines_elementary.hpp> // for __SYCL2020_DEPRECATED
15+
#include <sycl/detail/fwd/accessor.hpp>
1516
#include <sycl/detail/fwd/multi_ptr.hpp>
1617
#include <sycl/detail/type_traits.hpp> // for const_if_const_AS
1718
#include <sycl/half_type.hpp> // for BIsRepresentationT
@@ -66,13 +67,6 @@ struct LegacyReferenceTypes<ElementType,
6667
};
6768
} // namespace detail
6869

69-
// Forward declarations
70-
template <typename dataT, int dimensions, access::mode accessMode,
71-
access::target accessTarget, access::placeholder isPlaceholder,
72-
typename PropertyListT>
73-
class accessor;
74-
template <typename dataT, int dimensions> class local_accessor;
75-
7670
/// Provides constructors for address space qualified and non address space
7771
/// qualified pointers to allow interoperability between plain C++ and OpenCL C.
7872
///

sycl/include/sycl/properties/accessor_properties.hpp

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include <sycl/detail/common.hpp>
1313
#include <sycl/detail/defines.hpp>
1414
#include <sycl/detail/defines_elementary.hpp>
15+
#include <sycl/detail/fwd/accessor.hpp>
1516
#include <sycl/detail/property_helper.hpp>
1617
#include <sycl/ext/oneapi/accessor_property_list.hpp>
1718
#include <sycl/properties/property_traits.hpp>
@@ -91,28 +92,6 @@ struct is_compile_time_property<sycl::ext::intel::property::buffer_location>
9192
: std::true_type {};
9293
} // namespace ext::oneapi
9394

94-
// Forward declaration
95-
template <typename DataT, int Dimensions, access::mode AccessMode,
96-
access::target AccessTarget, access::placeholder IsPlaceholder,
97-
typename PropertyListT>
98-
class accessor;
99-
template <typename DataT, int Dimensions, access::mode AccessMode>
100-
class host_accessor;
101-
template <typename DataT, int Dimensions>
102-
class __SYCL_EBO
103-
__SYCL_SPECIAL_CLASS __SYCL_TYPE(local_accessor) local_accessor;
104-
template <typename DataT, int Dimensions, access::mode AccessMode,
105-
access::target AccessTarget, access::placeholder IsPlaceholder>
106-
class image_accessor;
107-
template <typename DataT, int Dimensions, access_mode AccessMode,
108-
image_target AccessTarget>
109-
class unsampled_image_accessor;
110-
template <typename DataT, int Dimensions, image_target AccessTarget>
111-
class sampled_image_accessor;
112-
template <typename DataT, int Dimensions, access_mode AccessMode>
113-
class host_unsampled_image_accessor;
114-
template <typename DataT, int Dimensions> class host_sampled_image_accessor;
115-
11695
namespace detail::acc_properties {
11796
template <typename T> struct is_accessor : std::false_type {};
11897
template <typename DataT, int Dimensions, access::mode AccessMode,

sycl/include/sycl/sampler.hpp

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,10 @@
88

99
#pragma once
1010

11-
#include <sycl/access/access.hpp> // for mode, placeholder, target
12-
#include <sycl/detail/defines.hpp> // for __SYCL_SPECIAL_CLASS, __SYCL_TYPE
13-
#include <sycl/detail/export.hpp> // for __SYCL_EXPORT
11+
#include <sycl/access/access.hpp> // for mode, placeholder, target
12+
#include <sycl/detail/defines.hpp> // for __SYCL_SPECIAL_CLASS, __SYCL_TYPE
13+
#include <sycl/detail/export.hpp> // for __SYCL_EXPORT
14+
#include <sycl/detail/fwd/accessor.hpp>
1415
#include <sycl/detail/impl_utils.hpp> // for getSyclObjImpl
1516
#include <sycl/property_list.hpp> // for property_list
1617

@@ -39,12 +40,6 @@ enum class coordinate_normalization_mode : unsigned int {
3940
unnormalized = 0
4041
};
4142

42-
namespace detail {
43-
template <typename DataT, int Dimensions, access::mode AccessMode,
44-
access::target AccessTarget, access::placeholder IsPlaceholder>
45-
class image_accessor;
46-
}
47-
4843
namespace detail {
4944
#ifdef __SYCL_DEVICE_ONLY__
5045
class __SYCL_EXPORT sampler_impl {

0 commit comments

Comments
 (0)