Skip to content

Commit c01d882

Browse files
authored
[SYCL] Support target::host_task specialised accessor constructor using mode_target Tag. (#8735)
- Support target::host_task specialised accessor constructor using mode_target Tag. - Add minimal test.
1 parent 7cfb162 commit c01d882

File tree

2 files changed

+63
-0
lines changed

2 files changed

+63
-0
lines changed

sycl/include/sycl/accessor.hpp

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -399,6 +399,28 @@ constexpr access::mode deduceAccessMode() {
399399
return access::mode::read;
400400
}
401401

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+
402424
return access::mode::read_write;
403425
}
404426

@@ -414,6 +436,28 @@ constexpr access::target deduceAccessTarget(access::target defaultTarget) {
414436
return access::target::constant_buffer;
415437
}
416438

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+
417461
return defaultTarget;
418462
}
419463

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
// RUN: %clangxx -fsycl -fsycl-targets=%sycl_triple %s -fsyntax-only
2+
3+
#include <sycl/sycl.hpp>
4+
5+
constexpr static int size = 1;
6+
7+
void test_accessor_tag_ctor(sycl::handler &cgh,
8+
sycl::buffer<int, size> &buffer) {
9+
auto read_only_dev_acc = sycl::accessor(buffer, cgh, sycl::read_only);
10+
auto write_only_dev_acc = sycl::accessor(buffer, cgh, sycl::write_only);
11+
auto read_write_dev_acc = sycl::accessor(buffer, cgh, sycl::read_write);
12+
auto read_only_host_acc =
13+
sycl::accessor(buffer, cgh, sycl::read_only_host_task);
14+
auto write_only_host_acc =
15+
sycl::accessor(buffer, cgh, sycl::write_only_host_task);
16+
auto read_write_host_acc =
17+
sycl::accessor(buffer, cgh, sycl::read_write_host_task);
18+
auto read_write_const_acc = sycl::accessor(buffer, cgh, sycl::read_constant);
19+
}

0 commit comments

Comments
 (0)