31 #include <type_traits>
112 static std::shared_ptr<std::vector<ExtendedMemberT>>
114 return std::const_pointer_cast<std::vector<ExtendedMemberT>>(
115 std::static_pointer_cast<const std::vector<ExtendedMemberT>>(SPtr));
127 unsigned char Version) {
133 unsigned int Mask = -1;
170 CodeplayInteropTask = 13,
171 CodeplayHostTask = 14,
175 CG(
CGTYPE Type, std::vector<std::vector<char>> ArgsStorage,
176 std::vector<detail::AccessorImplPtr> AccStorage,
177 std::vector<std::shared_ptr<const void>> SharedPtrStorage,
178 std::vector<Requirement *> Requirements,
180 : MType(Type), MArgsStorage(std::move(ArgsStorage)),
181 MAccStorage(std::move(AccStorage)),
182 MSharedPtrStorage(std::move(SharedPtrStorage)),
183 MRequirements(std::move(Requirements)), MEvents(std::move(Events)) {
187 if (loc.functionName())
188 MFunctionName = loc.functionName();
190 MFileName = loc.fileName();
191 MLine = loc.lineNumber();
192 MColumn = loc.columnNumber();
195 CG(
CG &&CommandGroup) =
default;
205 MSharedPtrStorage.empty())
213 virtual ~
CG() =
default;
220 std::vector<std::vector<char>> MArgsStorage;
222 std::vector<detail::AccessorImplPtr> MAccStorage;
224 std::vector<std::shared_ptr<const void>> MSharedPtrStorage;
250 std::vector<std::shared_ptr<detail::stream_impl>>
MStreams;
254 std::shared_ptr<detail::kernel_impl> SyclKernel,
255 std::vector<std::vector<char>> ArgsStorage,
256 std::vector<detail::AccessorImplPtr> AccStorage,
257 std::vector<std::shared_ptr<const void>> SharedPtrStorage,
258 std::vector<Requirement *> Requirements,
259 std::vector<detail::EventImplPtr> Events,
260 std::vector<ArgDesc> Args, std::string KernelName,
262 std::vector<std::shared_ptr<detail::stream_impl>> Streams,
263 std::vector<std::shared_ptr<const void>> AuxiliaryResources,
265 :
CG(Type, std::move(ArgsStorage), std::move(AccStorage),
266 std::move(SharedPtrStorage), std::move(Requirements),
267 std::move(Events), std::move(loc)),
268 MNDRDesc(std::move(NDRDesc)), MHostKernel(std::move(HKernel)),
269 MSyclKernel(std::move(SyclKernel)), MArgs(std::move(Args)),
270 MKernelName(std::move(KernelName)), MOSModuleHandle(
OSModuleHandle),
271 MStreams(std::move(Streams)),
272 MAuxiliaryResources(std::move(AuxiliaryResources)) {
273 assert((getType() == RunOnHostIntel || getType() == Kernel) &&
274 "Wrong type of exec kernel CG.");
279 std::vector<std::shared_ptr<detail::stream_impl>>
getStreams()
const {
284 return MAuxiliaryResources;
288 const std::shared_ptr<std::vector<ExtendedMemberT>> &ExtendedMembers =
289 getExtendedMembers();
290 if (!ExtendedMembers)
293 if (ExtendedMembersType::HANDLER_KERNEL_BUNDLE == EMember.MType)
294 return std::static_pointer_cast<detail::kernel_bundle_impl>(
313 std::vector<std::vector<char>> ArgsStorage,
314 std::vector<detail::AccessorImplPtr> AccStorage,
315 std::vector<std::shared_ptr<const void>> SharedPtrStorage,
316 std::vector<Requirement *> Requirements,
317 std::vector<detail::EventImplPtr> Events,
319 :
CG(CopyType, std::move(ArgsStorage), std::move(AccStorage),
320 std::move(SharedPtrStorage), std::move(Requirements),
321 std::move(Events), std::move(loc)),
322 MSrc(Src), MDst(Dst) {}
333 CGFill(std::vector<char> Pattern,
void *Ptr,
334 std::vector<std::vector<char>> ArgsStorage,
335 std::vector<detail::AccessorImplPtr> AccStorage,
336 std::vector<std::shared_ptr<const void>> SharedPtrStorage,
337 std::vector<Requirement *> Requirements,
338 std::vector<detail::EventImplPtr> Events,
340 :
CG(Fill, std::move(ArgsStorage), std::move(AccStorage),
341 std::move(SharedPtrStorage), std::move(Requirements),
342 std::move(Events), std::move(loc)),
343 MPattern(std::move(Pattern)), MPtr((
Requirement *)Ptr) {}
353 std::vector<detail::AccessorImplPtr> AccStorage,
354 std::vector<std::shared_ptr<const void>> SharedPtrStorage,
355 std::vector<Requirement *> Requirements,
356 std::vector<detail::EventImplPtr> Events,
358 :
CG(UpdateHost, std::move(ArgsStorage), std::move(AccStorage),
359 std::move(SharedPtrStorage), std::move(Requirements),
360 std::move(Events), std::move(loc)),
374 std::vector<std::vector<char>> ArgsStorage,
375 std::vector<detail::AccessorImplPtr> AccStorage,
376 std::vector<std::shared_ptr<const void>> SharedPtrStorage,
377 std::vector<Requirement *> Requirements,
378 std::vector<detail::EventImplPtr> Events,
380 :
CG(CopyUSM, std::move(ArgsStorage), std::move(AccStorage),
381 std::move(SharedPtrStorage), std::move(Requirements),
382 std::move(Events), std::move(loc)),
383 MSrc(Src), MDst(Dst), MLength(Length) {}
392 std::vector<char> MPattern;
397 CGFillUSM(std::vector<char> Pattern,
void *DstPtr,
size_t Length,
398 std::vector<std::vector<char>> ArgsStorage,
399 std::vector<detail::AccessorImplPtr> AccStorage,
400 std::vector<std::shared_ptr<const void>> SharedPtrStorage,
401 std::vector<Requirement *> Requirements,
402 std::vector<detail::EventImplPtr> Events,
404 :
CG(FillUSM, std::move(ArgsStorage), std::move(AccStorage),
405 std::move(SharedPtrStorage), std::move(Requirements),
406 std::move(Events), std::move(loc)),
407 MPattern(std::move(Pattern)), MDst(DstPtr), MLength(Length) {}
420 std::vector<std::vector<char>> ArgsStorage,
421 std::vector<detail::AccessorImplPtr> AccStorage,
422 std::vector<std::shared_ptr<const void>> SharedPtrStorage,
423 std::vector<Requirement *> Requirements,
424 std::vector<detail::EventImplPtr> Events,
426 :
CG(PrefetchUSM, std::move(ArgsStorage), std::move(AccStorage),
427 std::move(SharedPtrStorage), std::move(Requirements),
428 std::move(Events), std::move(loc)),
429 MDst(DstPtr), MLength(Length) {}
441 std::vector<std::vector<char>> ArgsStorage,
442 std::vector<detail::AccessorImplPtr> AccStorage,
443 std::vector<std::shared_ptr<const void>> SharedPtrStorage,
444 std::vector<Requirement *> Requirements,
445 std::vector<detail::EventImplPtr> Events,
CGTYPE Type,
447 :
CG(Type, std::move(ArgsStorage), std::move(AccStorage),
448 std::move(SharedPtrStorage), std::move(Requirements),
449 std::move(Events), std::move(loc)),
450 MDst(DstPtr), MLength(Length) {}
455 auto ExtendedMembers = getExtendedMembers();
456 if (!ExtendedMembers)
459 if ((ExtendedMembersType::HANDLER_MEM_ADVICE == EM.MType) && EM.MData)
460 return *std::static_pointer_cast<pi_mem_advice>(EM.MData);
470 std::vector<std::vector<char>> ArgsStorage,
471 std::vector<detail::AccessorImplPtr> AccStorage,
472 std::vector<std::shared_ptr<const void>> SharedPtrStorage,
473 std::vector<Requirement *> Requirements,
474 std::vector<detail::EventImplPtr> Events,
CGTYPE Type,
476 :
CG(Type, std::move(ArgsStorage), std::move(AccStorage),
477 std::move(SharedPtrStorage), std::move(Requirements),
478 std::move(Events), std::move(loc)),
486 std::shared_ptr<detail::queue_impl>
MQueue;
492 std::shared_ptr<detail::queue_impl> Queue,
493 std::shared_ptr<detail::context_impl> Context,
494 std::vector<ArgDesc> Args,
495 std::vector<std::vector<char>> ArgsStorage,
496 std::vector<detail::AccessorImplPtr> AccStorage,
497 std::vector<std::shared_ptr<const void>> SharedPtrStorage,
498 std::vector<Requirement *> Requirements,
499 std::vector<detail::EventImplPtr> Events,
CGTYPE Type,
501 :
CG(Type, std::move(ArgsStorage), std::move(AccStorage),
502 std::move(SharedPtrStorage), std::move(Requirements),
503 std::move(Events), std::move(loc)),
504 MHostTask(std::move(
HostTask)), MQueue(Queue), MContext(Context),
505 MArgs(std::move(Args)) {}
512 CGBarrier(std::vector<detail::EventImplPtr> EventsWaitWithBarrier,
513 std::vector<std::vector<char>> ArgsStorage,
514 std::vector<detail::AccessorImplPtr> AccStorage,
515 std::vector<std::shared_ptr<const void>> SharedPtrStorage,
516 std::vector<Requirement *> Requirements,
517 std::vector<detail::EventImplPtr> Events,
CGTYPE Type,
519 :
CG(Type, std::move(ArgsStorage), std::move(AccStorage),
520 std::move(SharedPtrStorage), std::move(Requirements),
521 std::move(Events), std::move(loc)),
522 MEventsWaitWithBarrier(std::move(EventsWaitWithBarrier)) {}