From 3856d6ea8c4bcda394f94a4b439baef84876cc6e Mon Sep 17 00:00:00 2001 From: Alexander Batashev Date: Tue, 2 Jun 2020 10:45:06 +0300 Subject: [PATCH] [SYCL][NFC] Improve ABI testing for accessors --- sycl/test/abi/layout_accessors.cpp | 113 +++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 sycl/test/abi/layout_accessors.cpp diff --git a/sycl/test/abi/layout_accessors.cpp b/sycl/test/abi/layout_accessors.cpp new file mode 100644 index 0000000000000..bde079ac8f614 --- /dev/null +++ b/sycl/test/abi/layout_accessors.cpp @@ -0,0 +1,113 @@ +// RUN: %clangxx -fsycl -c -fno-color-diagnostics -Xclang -fdump-record-layouts %s | FileCheck %s +// REQUIRES: linux + +#include + +using namespace cl::sycl; + +//----------------------------------------------------------------------------// +// Host buffer accessor. +//----------------------------------------------------------------------------// + +void hostAcc(accessor Acc) { + (void)Acc.get_size(); +} + +// CHECK: 0 | class cl::sycl::accessor +// CHECK-NEXT: 0 | class cl::sycl::detail::AccessorBaseHost (base) +// CHECK-NEXT: 0 | class std::shared_ptr impl +// CHECK-NEXT: 0 | class std::__shared_ptr (base) +// CHECK-NEXT: 0 | class std::__shared_ptr_access (base) (empty) +// CHECK-NEXT: 0 | std::__shared_ptr::element_type * _M_ptr +// CHECK-NEXT: 8 | class std::__shared_count<__gnu_cxx::_S_atomic> _M_refcount +// CHECK-NEXT: 8 | _Sp_counted_base<(enum __gnu_cxx::_Lock_policy)2U> * _M_pi +// CHECK-NEXT: 0 | class cl::sycl::detail::accessor_common (base) (empty) +// CHECK-NEXT: 16 | char [16] padding +// CHECK-NEXT: [sizeof=32, dsize=32, align=8, +// CHECK-NEXT: nvsize=32, nvalign=8] + +//----------------------------------------------------------------------------// +// Global buffer accessor. +//----------------------------------------------------------------------------// + +void hostAcc(accessor Acc) { + (void)Acc.get_size(); +} + +// CHECK: 0 | class cl::sycl::accessor +// CHECK-NEXT: 0 | class cl::sycl::detail::AccessorBaseHost (base) +// CHECK-NEXT: 0 | class std::shared_ptr impl +// CHECK-NEXT: 0 | class std::__shared_ptr (base) +// CHECK-NEXT: 0 | class std::__shared_ptr_access (base) (empty) +// CHECK-NEXT: 0 | std::__shared_ptr::element_type * _M_ptr +// CHECK-NEXT: 8 | class std::__shared_count<__gnu_cxx::_S_atomic> _M_refcount +// CHECK-NEXT: 8 | _Sp_counted_base<(enum __gnu_cxx::_Lock_policy)2U> * _M_pi +// CHECK-NEXT: 0 | class cl::sycl::detail::accessor_common (base) (empty) +// CHECK-NEXT: 16 | char [16] padding +// CHECK-NEXT: [sizeof=32, dsize=32, align=8, +// CHECK-NEXT: nvsize=32, nvalign=8] + +//----------------------------------------------------------------------------// +// Local accessor. +//----------------------------------------------------------------------------// + +void hostAcc(accessor Acc) { + (void)Acc.get_size(); +} + +// CHECK: 0 | class cl::sycl::accessor +// CHECK-NEXT: 0 | class cl::sycl::detail::LocalAccessorBaseHost (base) +// CHECK-NEXT: 0 | class std::shared_ptr impl +// CHECK-NEXT: 0 | class std::__shared_ptr (base) +// CHECK-NEXT: 0 | class std::__shared_ptr_access (base) (empty) +// CHECK-NEXT: 0 | std::__shared_ptr::element_type * _M_ptr +// CHECK-NEXT: 8 | class std::__shared_count<__gnu_cxx::_S_atomic> _M_refcount +// CHECK-NEXT: 8 | _Sp_counted_base<(enum __gnu_cxx::_Lock_policy)2U> * _M_pi +// CHECK-NEXT: 0 | class cl::sycl::detail::accessor_common (base) (empty) +// CHECK-NEXT: 16 | char [16] padding +// CHECK-NEXT: [sizeof=32, dsize=32, align=8, +// CHECK-NEXT: nvsize=32, nvalign=8] + +//----------------------------------------------------------------------------// +// Host image accessor. +//----------------------------------------------------------------------------// + +void hostAcc(accessor Acc) { + (void)Acc.get_count(); +} +// CHECK: 0 | class cl::sycl::accessor, 1, cl::sycl::access::mode::read_write, cl::sycl::access::target::host_image, cl::sycl::access::placeholder::false_t> +// CHECK-NEXT: 0 | class cl::sycl::detail::image_accessor, 1, cl::sycl::access::mode::read_write, cl::sycl::access::target::host_image, cl::sycl::access::placeholder::false_t> (base) +// CHECK-NEXT: 0 | class cl::sycl::detail::AccessorBaseHost (base) +// CHECK-NEXT: 0 | class std::shared_ptr impl +// CHECK-NEXT: 0 | class std::__shared_ptr (base) +// CHECK-NEXT: 0 | class std::__shared_ptr_access (base) (empty) +// CHECK-NEXT: 0 | std::__shared_ptr::element_type * _M_ptr +// CHECK-NEXT: 8 | class std::__shared_count<__gnu_cxx::_S_atomic> _M_refcount +// CHECK-NEXT: 8 | _Sp_counted_base<(enum __gnu_cxx::_Lock_policy)2U> * _M_pi +// CHECK-NEXT: 16 | size_t MImageCount +// CHECK-NEXT: 24 | enum cl::sycl::image_channel_order MImgChannelOrder +// CHECK-NEXT: 28 | enum cl::sycl::image_channel_type MImgChannelType +// CHECK-NEXT: [sizeof=32, dsize=32, align=8, +// CHECK-NEXT: nvsize=32, nvalign=8] + +//----------------------------------------------------------------------------// +// Image accessor. +//----------------------------------------------------------------------------// + +void hostAcc(accessor Acc) { + (void)Acc.get_count(); +} +// CHECK: 0 | class cl::sycl::accessor, 1, cl::sycl::access::mode::read, cl::sycl::access::target::image, cl::sycl::access::placeholder::false_t> +// CHECK-NEXT: 0 | class cl::sycl::detail::image_accessor, 1, cl::sycl::access::mode::read, cl::sycl::access::target::image, cl::sycl::access::placeholder::false_t> (base) +// CHECK-NEXT: 0 | class cl::sycl::detail::AccessorBaseHost (base) +// CHECK-NEXT: 0 | class std::shared_ptr impl +// CHECK-NEXT: 0 | class std::__shared_ptr (base) +// CHECK-NEXT: 0 | class std::__shared_ptr_access (base) (empty) +// CHECK-NEXT: 0 | std::__shared_ptr::element_type * _M_ptr +// CHECK-NEXT: 8 | class std::__shared_count<__gnu_cxx::_S_atomic> _M_refcount +// CHECK-NEXT: 8 | _Sp_counted_base<(enum __gnu_cxx::_Lock_policy)2U> * _M_pi +// CHECK-NEXT: 16 | size_t MImageCount +// CHECK-NEXT: 24 | enum cl::sycl::image_channel_order MImgChannelOrder +// CHECK-NEXT: 28 | enum cl::sycl::image_channel_type MImgChannelType +// CHECK-NEXT: [sizeof=32, dsize=32, align=8, +// CHECK-NEXT: nvsize=32, nvalign=8]