@@ -91,6 +91,26 @@ pi_result redefinedEnqueueWriteHostPipe(pi_queue, pi_program, const char *,
91
91
return PI_SUCCESS;
92
92
}
93
93
94
+ pi_result after_piDeviceGetInfo (pi_device device, pi_device_info param_name,
95
+ size_t param_value_size, void *param_value,
96
+ size_t *param_value_size_ret) {
97
+ constexpr char MockSupportedExtensions[] =
98
+ " cl_khr_fp64 cl_khr_fp16 cl_khr_il_program cl_intel_program_scope_host_pipe" ;
99
+ switch (param_name) {
100
+ case PI_DEVICE_INFO_EXTENSIONS: {
101
+ if (param_value) {
102
+ assert (param_value_size >= sizeof (MockSupportedExtensions));
103
+ std::memcpy (param_value, MockSupportedExtensions,
104
+ sizeof (MockSupportedExtensions));
105
+ }
106
+ if (param_value_size_ret)
107
+ *param_value_size_ret = sizeof (MockSupportedExtensions);
108
+ return PI_SUCCESS;
109
+ }
110
+ }
111
+ return PI_SUCCESS;
112
+ }
113
+
94
114
void preparePiMock (unittest::PiMock &Mock) {
95
115
Mock.redefine <detail::PiApiKind::piextEnqueueReadHostPipe>(
96
116
redefinedEnqueueReadHostPipe);
@@ -120,32 +140,20 @@ class PipeTest : public ::testing::Test {
120
140
};
121
141
122
142
TEST_F (PipeTest, Basic) {
143
+ // Fake extension
144
+ Mock.redefineAfter <sycl::detail::PiApiKind::piDeviceGetInfo>(after_piDeviceGetInfo);
123
145
124
146
// Device registration
125
147
static sycl::unittest::PiImage Img = generateDefaultImage ();
126
148
static sycl::unittest::PiImageArray<1 > ImgArray{&Img};
127
149
128
- // Get the hostpipe
129
- const void *HostPipePtr = Pipe::get_host_ptr ();
130
- detail::HostPipeMapEntry *HostPipeEntry =
131
- detail::ProgramManager::getInstance ().getHostPipeEntry (HostPipePtr);
132
- const std::string PipeName = HostPipeEntry->MUniqueId ;
133
-
134
- // Testing read
150
+ // Testing read
135
151
int HostPipeReadData;
136
- void *DataPtrRead = &HostPipeReadData;
137
- event ERead = q.submit ([=](handler &CGH) {
138
- CGH.ext_intel_read_host_pipe (PipeName, DataPtrRead, sizeof (int ), true /* blocking */ );
139
- });
140
- ERead.wait ();
152
+ HostPipeReadData = Pipe::read (q);
141
153
assert (HostPipeReadData == PipeReadVal);
142
154
143
155
// Testing write
144
156
int HostPipeWriteData = 9 ;
145
- void *DataPtrWrite = &HostPipeWriteData;
146
- event EWrite = q.submit ([=](handler &CGH) {
147
- CGH.ext_intel_write_host_pipe (PipeName, DataPtrWrite, sizeof (int ), true /* blocking */ );
148
- });
149
- EWrite.wait ();
157
+ Pipe::write (q,HostPipeWriteData);
150
158
assert (PipeWriteVal == 9 );
151
159
}
0 commit comments