@@ -399,6 +399,28 @@ constexpr access::mode deduceAccessMode() {
399
399
return access::mode::read;
400
400
}
401
401
402
+ if constexpr (std::is_same<
403
+ MayBeTag1,
404
+ mode_target_tag_t <access::mode::read,
405
+ access::target::host_task>>::value ||
406
+ std::is_same<
407
+ MayBeTag2,
408
+ mode_target_tag_t <access::mode::read,
409
+ access::target::host_task>>::value) {
410
+ return access::mode::read;
411
+ }
412
+
413
+ if constexpr (std::is_same<
414
+ MayBeTag1,
415
+ mode_target_tag_t <access::mode::write,
416
+ access::target::host_task>>::value ||
417
+ std::is_same<
418
+ MayBeTag2,
419
+ mode_target_tag_t <access::mode::write,
420
+ access::target::host_task>>::value) {
421
+ return access::mode::write;
422
+ }
423
+
402
424
return access::mode::read_write;
403
425
}
404
426
@@ -414,6 +436,28 @@ constexpr access::target deduceAccessTarget(access::target defaultTarget) {
414
436
return access::target::constant_buffer;
415
437
}
416
438
439
+ if constexpr (
440
+ std::is_same<MayBeTag1,
441
+ mode_target_tag_t <access::mode::read,
442
+ access::target::host_task>>::value ||
443
+ std::is_same<MayBeTag2,
444
+ mode_target_tag_t <access::mode::read,
445
+ access::target::host_task>>::value ||
446
+ std::is_same<MayBeTag1,
447
+ mode_target_tag_t <access::mode::write,
448
+ access::target::host_task>>::value ||
449
+ std::is_same<MayBeTag2,
450
+ mode_target_tag_t <access::mode::write,
451
+ access::target::host_task>>::value ||
452
+ std::is_same<MayBeTag1,
453
+ mode_target_tag_t <access::mode::read_write,
454
+ access::target::host_task>>::value ||
455
+ std::is_same<MayBeTag2,
456
+ mode_target_tag_t <access::mode::read_write,
457
+ access::target::host_task>>::value) {
458
+ return access::target::host_task;
459
+ }
460
+
417
461
return defaultTarget;
418
462
}
419
463
0 commit comments