18 inline namespace _V1 {
19 namespace ext::intel {
21 template <
class _name,
class _dataT,
int32_t _min_capacity = 0>
class pipe {
28 static _dataT
read(
bool &_Success) {
29 #ifdef __SYCL_DEVICE_ONLY__
30 __ocl_RPipeTy<_dataT> _RPipe =
31 __spirv_CreatePipeFromPipeStorage_read<_dataT>(&m_Storage);
33 _Success = !
static_cast<bool>(
34 __spirv_ReadPipe(_RPipe, &TempData, m_Size, m_Alignment));
40 "Device-side API are not supported on a host device. Please use "
41 "host-side API instead.");
47 static void write(
const _dataT &_Data,
bool &_Success) {
48 #ifdef __SYCL_DEVICE_ONLY__
49 __ocl_WPipeTy<_dataT> _WPipe =
50 __spirv_CreatePipeFromPipeStorage_write<_dataT>(&m_Storage);
51 _Success = !
static_cast<bool>(
52 __spirv_WritePipe(_WPipe, &_Data, m_Size, m_Alignment));
58 "Device-side API are not supported on a host device. Please use "
59 "host-side API instead.");
67 #ifdef __SYCL_DEVICE_ONLY__
68 __ocl_RPipeTy<_dataT> _RPipe =
69 __spirv_CreatePipeFromPipeStorage_read<_dataT>(&m_Storage);
71 __spirv_ReadPipeBlockingINTEL(_RPipe, &TempData, m_Size, m_Alignment);
76 "Device-side API are not supported on a host device. Please use "
77 "host-side API instead..");
83 static void write(
const _dataT &_Data) {
84 #ifdef __SYCL_DEVICE_ONLY__
85 __ocl_WPipeTy<_dataT> _WPipe =
86 __spirv_CreatePipeFromPipeStorage_write<_dataT>(&m_Storage);
87 __spirv_WritePipeBlockingINTEL(_WPipe, &_Data, m_Size, m_Alignment);
92 "Device-side API are not supported on a host device. Please use "
93 "host-side API instead.");
98 static constexpr int32_t m_Size =
sizeof(_dataT);
99 static constexpr int32_t m_Alignment =
alignof(_dataT);
100 #ifdef __SYCL_DEVICE_ONLY__
101 static constexpr
struct ConstantPipeStorage m_Storage = {m_Size, m_Alignment,
126 template <
class _name,
class _dataT,
size_t _min_capacity = 0>
134 static _dataT
read(
bool &_Success) {
135 #ifdef __SYCL_DEVICE_ONLY__
136 __ocl_RPipeTy<_dataT> _RPipe =
137 __spirv_CreatePipeFromPipeStorage_read<_dataT>(&m_Storage);
139 _Success = !
static_cast<bool>(
140 __spirv_ReadPipe(_RPipe, &TempData, m_Size, m_Alignment));
146 "Device-side API are not supported on a host device. Please use "
147 "host-side API instead.");
155 #ifdef __SYCL_DEVICE_ONLY__
156 __ocl_RPipeTy<_dataT> _RPipe =
157 __spirv_CreatePipeFromPipeStorage_read<_dataT>(&m_Storage);
159 __spirv_ReadPipeBlockingINTEL(_RPipe, &TempData, m_Size, m_Alignment);
164 "Device-side API are not supported on a host device. Please use "
165 "host-side API instead.");
170 static constexpr int32_t m_Size =
sizeof(_dataT);
171 static constexpr int32_t m_Alignment =
alignof(_dataT);
172 static constexpr int32_t ID = _name::id;
173 #ifdef __SYCL_DEVICE_ONLY__
174 static constexpr ConstantPipeStorage m_Storage
179 template <
class _name,
class _dataT,
size_t _min_capacity = 0>
187 static void write(
const _dataT &_Data,
bool &_Success) {
188 #ifdef __SYCL_DEVICE_ONLY__
189 __ocl_WPipeTy<_dataT> _WPipe =
190 __spirv_CreatePipeFromPipeStorage_write<_dataT>(&m_Storage);
191 _Success = !
static_cast<bool>(
192 __spirv_WritePipe(_WPipe, &_Data, m_Size, m_Alignment));
198 "Device-side API are not supported on a host device. Please use "
199 "host-side API instead.");
206 static void write(
const _dataT &_Data) {
207 #ifdef __SYCL_DEVICE_ONLY__
208 __ocl_WPipeTy<_dataT> _WPipe =
209 __spirv_CreatePipeFromPipeStorage_write<_dataT>(&m_Storage);
210 __spirv_WritePipeBlockingINTEL(_WPipe, &_Data, m_Size, m_Alignment);
215 "Device-side API are not supported on a host device. Please use "
216 "host-side API instead.");
221 static constexpr int32_t m_Size =
sizeof(_dataT);
222 static constexpr int32_t m_Alignment =
alignof(_dataT);
223 static constexpr int32_t ID = _name::id;
224 #ifdef __SYCL_DEVICE_ONLY__
225 static constexpr ConstantPipeStorage m_Storage
static constexpr int32_t min_capacity
static _dataT read(bool &_Success)
static constexpr int32_t min_capacity
static void write(const _dataT &_Data)
static void write(const _dataT &_Data, bool &_Success)
static void write(const _dataT &_Data)
static _dataT read(bool &_Success)
static void write(const _dataT &_Data, bool &_Success)
static constexpr int32_t min_capacity
__attribute__((always_inline)) auto invoke_simd(sycl
The invoke_simd free function invokes a SIMD function using all work-items in a sub_group.
std::error_code make_error_code(sycl::errc E) noexcept
Constructs an error code using e and sycl_category()