@@ -24,38 +24,19 @@ namespace ext {
2424namespace oneapi {
2525namespace experimental {
2626namespace cuda {
27-
2827namespace detail {
29- using ldg_vector_types = sycl::detail::type_list<
30- sycl::vec<char , 2 >, sycl::vec<char , 3 >, sycl::vec<char , 4 >,
31- sycl::vec<signed char , 2 >, sycl::vec<signed char , 3 >,
32- sycl::vec<signed char , 4 >, sycl::vec<short , 2 >, sycl::vec<short , 3 >,
33- sycl::vec<short , 4 >, sycl::vec<int , 2 >, sycl::vec<int , 3 >,
34- sycl::vec<int , 4 >, sycl::vec<long , 2 >, sycl::vec<long , 3 >,
35- sycl::vec<long , 4 >, sycl::vec<long long , 2 >, sycl::vec<long long , 3 >,
36- sycl::vec<long long , 4 >, sycl::vec<unsigned char , 2 >,
37- sycl::vec<unsigned char , 3 >, sycl::vec<unsigned char , 4 >,
38- sycl::vec<unsigned short , 2 >, sycl::vec<unsigned short , 3 >,
39- sycl::vec<unsigned short , 4 >, sycl::vec<unsigned int , 2 >,
40- sycl::vec<unsigned int , 3 >, sycl::vec<unsigned int , 4 >,
41- sycl::vec<unsigned long , 2 >, sycl::vec<unsigned long , 3 >,
42- sycl::vec<unsigned long , 4 >, sycl::vec<unsigned long long , 2 >,
43- sycl::vec<unsigned long long , 3 >, sycl::vec<unsigned long long , 4 >,
44- sycl::vec<half, 2 >, sycl::vec<half, 3 >, sycl::vec<half, 4 >,
45- sycl::vec<float , 2 >, sycl::vec<float , 3 >, sycl::vec<float , 4 >,
46- sycl::vec<double , 2 >, sycl::vec<double , 3 >, sycl::vec<double , 4 >>;
47-
48- using ldg_types =
49- sycl::detail::tl_append<ldg_vector_types,
50- sycl::detail::gtl::scalar_floating_list,
51- sycl::detail::gtl::scalar_signed_integer_list,
52- sycl::detail::gtl::scalar_unsigned_integer_list>;
53- } // namespace detail
28+ using namespace sycl ::detail;
29+ }
5430
5531template <typename T>
5632inline __SYCL_ALWAYS_INLINE std::enable_if_t <
57- sycl::detail::is_contained<
58- T, sycl::ext::oneapi::experimental::cuda::detail::ldg_types>::value,
33+ detail::check_type_in_v<detail::element_type_t <T>, char , signed char , short ,
34+ int , long , long long , unsigned char , unsigned short ,
35+ unsigned int , unsigned long , unsigned long long ,
36+ half, float , double > &&
37+ (std::is_same_v<detail::element_type_t <T>, T> ||
38+ (detail::is_vec_v<T> && detail::num_elements_v<T> >= 2 &&
39+ detail::num_elements_v<T> <= 4 )),
5940 T>
6041ldg (const T *ptr) {
6142#if defined(__SYCL_DEVICE_ONLY__)
0 commit comments