@@ -25,26 +25,11 @@ class __SYCL2020_DEPRECATED("spelling is now: no_init") noinit
25
25
26
26
} // namespace property
27
27
28
- #if __cplusplus >= 201703L
29
-
30
28
__SYCL_INLINE_CONSTEXPR property::no_init no_init;
31
29
32
30
__SYCL2020_DEPRECATED (" spelling is now: no_init" )
33
31
__SYCL_INLINE_CONSTEXPR property::noinit noinit;
34
32
35
- #else
36
-
37
- namespace {
38
-
39
- constexpr const auto &no_init =
40
- sycl::detail::InlineVariableHelper<property::no_init>::value;
41
-
42
- constexpr const auto &noinit __SYCL2020_DEPRECATED (" spelling is now: no_init" ) =
43
- sycl::detail::InlineVariableHelper<property::noinit>::value;
44
- } // namespace
45
-
46
- #endif
47
-
48
33
namespace ext {
49
34
namespace intel {
50
35
namespace property {
@@ -62,10 +47,9 @@ struct __SYCL_TYPE(buffer_location) buffer_location {
62
47
};
63
48
};
64
49
} // namespace property
65
- # if __cplusplus >= 201703L
50
+
66
51
template <int A>
67
52
inline constexpr property::buffer_location::instance<A> buffer_location{};
68
- #endif
69
53
} // namespace intel
70
54
} // namespace ext
71
55
@@ -94,13 +78,9 @@ struct __SYCL_TYPE(no_alias) no_alias {
94
78
};
95
79
} // namespace property
96
80
97
- #if __cplusplus >= 201703L
98
-
99
81
inline constexpr property::no_offset::instance<> no_offset;
100
82
inline constexpr property::no_alias::instance<> no_alias;
101
83
102
- #endif
103
-
104
84
template <>
105
85
struct is_compile_time_property <ext::oneapi::property::no_offset>
106
86
: std::true_type {};
@@ -121,6 +101,22 @@ class accessor;
121
101
template <typename DataT, int Dimensions, access::mode AccessMode>
122
102
class host_accessor ;
123
103
104
+ namespace detail {
105
+ namespace acc_properties {
106
+ template <typename T> struct is_accessor : std::false_type {};
107
+ template <typename DataT, int Dimensions, access::mode AccessMode,
108
+ access::target AccessTarget, access::placeholder IsPlaceholder,
109
+ typename PropertyListT>
110
+ struct is_accessor <accessor<DataT, Dimensions, AccessMode, AccessTarget,
111
+ IsPlaceholder, PropertyListT>> : std::true_type {};
112
+
113
+ template <typename T> struct is_host_accessor : std::false_type {};
114
+ template <typename DataT, int Dimensions, access::mode AccessMode>
115
+ struct is_host_accessor <host_accessor<DataT, Dimensions, AccessMode>>
116
+ : std::true_type {};
117
+ } // namespace acc_properties
118
+ } // namespace detail
119
+
124
120
// Accessor property trait specializations
125
121
template <>
126
122
struct is_property <ext::oneapi::property::no_offset> : std::true_type {};
@@ -129,50 +125,27 @@ struct is_property<ext::oneapi::property::no_alias> : std::true_type {};
129
125
template <>
130
126
struct is_property <ext::intel::property::buffer_location> : std::true_type {};
131
127
132
- template <typename DataT, int Dimensions, access::mode AccessMode,
133
- access::target AccessTarget, access::placeholder IsPlaceholder,
134
- typename PropertyListT>
135
- struct is_property_of <property::noinit,
136
- accessor<DataT, Dimensions, AccessMode, AccessTarget,
137
- IsPlaceholder, PropertyListT>> : std::true_type {
138
- };
139
- template <typename DataT, int Dimensions, access::mode AccessMode,
140
- access::target AccessTarget, access::placeholder IsPlaceholder,
141
- typename PropertyListT>
142
- struct is_property_of <property::no_init,
143
- accessor<DataT, Dimensions, AccessMode, AccessTarget,
144
- IsPlaceholder, PropertyListT>> : std::true_type {
145
- };
146
- template <typename DataT, int Dimensions, access::mode AccessMode,
147
- access::target AccessTarget, access::placeholder IsPlaceholder,
148
- typename PropertyListT>
149
- struct is_property_of <ext::oneapi::property::no_offset,
150
- accessor<DataT, Dimensions, AccessMode, AccessTarget,
151
- IsPlaceholder, PropertyListT>> : std::true_type {
152
- };
153
- template <typename DataT, int Dimensions, access::mode AccessMode,
154
- access::target AccessTarget, access::placeholder IsPlaceholder,
155
- typename PropertyListT>
156
- struct is_property_of <ext::oneapi::property::no_alias,
157
- accessor<DataT, Dimensions, AccessMode, AccessTarget,
158
- IsPlaceholder, PropertyListT>> : std::true_type {
159
- };
160
- template <typename DataT, int Dimensions, access::mode AccessMode,
161
- access::target AccessTarget, access::placeholder IsPlaceholder,
162
- typename PropertyListT>
163
- struct is_property_of <ext::intel::property::buffer_location,
164
- accessor<DataT, Dimensions, AccessMode, AccessTarget,
165
- IsPlaceholder, PropertyListT>> : std::true_type {
166
- };
128
+ template <typename T>
129
+ struct is_property_of <property::noinit, T>
130
+ : std::bool_constant<detail::acc_properties::is_accessor<T>::value ||
131
+ detail::acc_properties::is_host_accessor<T>::value> {};
167
132
168
- template <typename DataT, int Dimensions, access::mode AccessMode>
169
- struct is_property_of <property::noinit,
170
- host_accessor<DataT, Dimensions, AccessMode>>
171
- : std::true_type {};
172
- template <typename DataT, int Dimensions, access::mode AccessMode>
173
- struct is_property_of <property::no_init,
174
- host_accessor<DataT, Dimensions, AccessMode>>
175
- : std::true_type {};
133
+ template <typename T>
134
+ struct is_property_of <property::no_init, T>
135
+ : std::bool_constant<detail::acc_properties::is_accessor<T>::value ||
136
+ detail::acc_properties::is_host_accessor<T>::value> {};
137
+
138
+ template <typename T>
139
+ struct is_property_of <ext::oneapi::property::no_offset, T>
140
+ : std::bool_constant<detail::acc_properties::is_accessor<T>::value> {};
141
+
142
+ template <typename T>
143
+ struct is_property_of <ext::oneapi::property::no_alias, T>
144
+ : std::bool_constant<detail::acc_properties::is_accessor<T>::value> {};
145
+
146
+ template <typename T>
147
+ struct is_property_of <ext::intel::property::buffer_location, T>
148
+ : std::bool_constant<detail::acc_properties::is_accessor<T>::value> {};
176
149
177
150
namespace detail {
178
151
template <int I>
0 commit comments