|
8 | 8 |
|
9 | 9 | #pragma once |
10 | 10 |
|
| 11 | +#include <sycl/ext/intel/experimental/maximum_registers_properties.hpp> |
11 | 12 | #include <sycl/ext/oneapi/free_function_kernel_properties.hpp> |
12 | 13 | #include <sycl/ext/oneapi/properties.hpp> |
13 | 14 | #include <sycl/ext/oneapi/properties/property.hpp> |
@@ -53,17 +54,54 @@ struct PropertyMetaInfo< |
53 | 54 | static constexpr unsigned int value = 0; |
54 | 55 | }; |
55 | 56 |
|
| 57 | +// grf_size, grf_size_automatic, maximum_registers, and |
| 58 | +// maximum_registers_automatic are all mutually exclusive. |
56 | 59 | template <typename Properties> |
57 | 60 | struct ConflictingProperties<sycl::ext::intel::experimental::grf_size_key, |
58 | 61 | Properties> |
59 | | - : std::bool_constant<Properties::template has_property< |
60 | | - sycl::ext::intel::experimental::grf_size_automatic_key>()> {}; |
| 62 | + : std::bool_constant< |
| 63 | + Properties::template has_property< |
| 64 | + sycl::ext::intel::experimental::grf_size_automatic_key>() || |
| 65 | + Properties::template has_property< |
| 66 | + sycl::ext::intel::experimental::maximum_registers_key>() || |
| 67 | + Properties::template has_property< |
| 68 | + sycl::ext::intel::experimental:: |
| 69 | + maximum_registers_automatic_key>()> {}; |
61 | 70 |
|
62 | 71 | template <typename Properties> |
63 | 72 | struct ConflictingProperties< |
64 | 73 | sycl::ext::intel::experimental::grf_size_automatic_key, Properties> |
65 | | - : std::bool_constant<Properties::template has_property< |
66 | | - sycl::ext::intel::experimental::grf_size_key>()> {}; |
| 74 | + : std::bool_constant< |
| 75 | + Properties::template has_property< |
| 76 | + sycl::ext::intel::experimental::grf_size_key>() || |
| 77 | + Properties::template has_property< |
| 78 | + sycl::ext::intel::experimental::maximum_registers_key>() || |
| 79 | + Properties::template has_property< |
| 80 | + sycl::ext::intel::experimental:: |
| 81 | + maximum_registers_automatic_key>()> {}; |
| 82 | + |
| 83 | +template <typename Properties> |
| 84 | +struct ConflictingProperties< |
| 85 | + sycl::ext::intel::experimental::maximum_registers_key, Properties> |
| 86 | + : std::bool_constant< |
| 87 | + Properties::template has_property< |
| 88 | + sycl::ext::intel::experimental::grf_size_key>() || |
| 89 | + Properties::template has_property< |
| 90 | + sycl::ext::intel::experimental::grf_size_automatic_key>() || |
| 91 | + Properties::template has_property< |
| 92 | + sycl::ext::intel::experimental:: |
| 93 | + maximum_registers_automatic_key>()> {}; |
| 94 | + |
| 95 | +template <typename Properties> |
| 96 | +struct ConflictingProperties< |
| 97 | + sycl::ext::intel::experimental::maximum_registers_automatic_key, Properties> |
| 98 | + : std::bool_constant< |
| 99 | + Properties::template has_property< |
| 100 | + sycl::ext::intel::experimental::grf_size_key>() || |
| 101 | + Properties::template has_property< |
| 102 | + sycl::ext::intel::experimental::grf_size_automatic_key>() || |
| 103 | + Properties::template has_property< |
| 104 | + sycl::ext::intel::experimental::maximum_registers_key>()> {}; |
67 | 105 |
|
68 | 106 | } // namespace ext::oneapi::experimental::detail |
69 | 107 | } // namespace _V1 |
|
0 commit comments