DPC++ Runtime
Runtime libraries for oneAPI DPC++
properties.hpp
Go to the documentation of this file.
1 //==--- properties.hpp - SYCL properties associated with latency_control ---==//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #pragma once
10 
13 
14 namespace sycl {
16 namespace ext::intel::experimental {
17 
19  none, // default
20  exact,
21  max,
22  min
23 };
24 
26  template <int Anchor>
27  using value_t =
29  std::integral_constant<int, Anchor>>;
30 };
31 
33  template <int Target, latency_control_type Type, int Cycle>
35  latency_constraint_key, std::integral_constant<int, Target>,
36  std::integral_constant<latency_control_type, Type>,
37  std::integral_constant<int, Cycle>>;
38 };
39 
40 template <int Anchor>
42 template <int Target, latency_control_type Type, int Cycle>
45 
46 } // namespace ext::intel::experimental
47 
48 namespace ext::oneapi::experimental {
49 
50 template <int Target, intel::experimental::latency_control_type Type, int Cycle>
52  intel::experimental::latency_constraint_key,
53  std::integral_constant<int, Target>,
54  std::integral_constant<intel::experimental::latency_control_type, Type>,
55  std::integral_constant<int, Cycle>> {
57  static constexpr int target = Target;
58  static constexpr intel::experimental::latency_control_type type = Type;
59  static constexpr int cycle = Cycle;
60 };
61 
62 template <>
63 struct is_property_key<intel::experimental::latency_anchor_id_key>
64  : std::true_type {};
65 template <>
66 struct is_property_key<intel::experimental::latency_constraint_key>
67  : std::true_type {};
68 
69 namespace detail {
70 
71 template <> struct PropertyToKind<intel::experimental::latency_anchor_id_key> {
72  static constexpr PropKind Kind = PropKind::LatencyAnchorID;
73 };
74 template <> struct PropertyToKind<intel::experimental::latency_constraint_key> {
75  static constexpr PropKind Kind = PropKind::LatencyConstraint;
76 };
77 
78 template <>
79 struct IsCompileTimeProperty<intel::experimental::latency_anchor_id_key>
80  : std::true_type {};
81 template <>
82 struct IsCompileTimeProperty<intel::experimental::latency_constraint_key>
83  : std::true_type {};
84 
85 } // namespace detail
86 } // namespace ext::oneapi::experimental
87 } // __SYCL_INLINE_VER_NAMESPACE(_V1)
88 } // namespace sycl
sycl::_V1::ext::oneapi::experimental::detail::PropKind
PropKind
Definition: property.hpp:165
__SYCL_INLINE_VER_NAMESPACE
#define __SYCL_INLINE_VER_NAMESPACE(X)
Definition: defines_elementary.hpp:11
sycl::_V1::ext::oneapi::experimental::detail::IsCompileTimeProperty
Definition: property.hpp:216
sycl
---— Error handling, matching OpenCL plugin semantics.
Definition: access.hpp:14
max
simd< _Tp, _Abi > max(const simd< _Tp, _Abi > &, const simd< _Tp, _Abi > &) noexcept
sycl::_V1::ext::intel::experimental::latency_constraint_key
Definition: properties.hpp:32
sycl::_V1::ext::intel::experimental::latency_anchor_id
constexpr latency_anchor_id_key::value_t< Anchor > latency_anchor_id
Definition: properties.hpp:41
property_value.hpp
sycl::_V1::access::target
target
Definition: access.hpp:18
sycl::_V1::ext::oneapi::experimental::detail::LatencyAnchorID
@ LatencyAnchorID
Definition: property.hpp:170
sycl::_V1::ext::intel::experimental::latency_control_type
latency_control_type
Definition: properties.hpp:18
property.hpp
sycl::_V1::ext::oneapi::experimental::detail::PropertyToKind
Definition: property.hpp:204
sycl::_V1::ext::oneapi::experimental::detail::LatencyConstraint
@ LatencyConstraint
Definition: property.hpp:171
sycl::_V1::ext::oneapi::experimental::property_value
Definition: property_utils.hpp:22
sycl::_V1::ext::intel::experimental::latency_constraint
constexpr latency_constraint_key::value_t< Target, Type, Cycle > latency_constraint
Definition: properties.hpp:44
sycl::_V1::ext::intel::experimental::latency_anchor_id_key
Definition: properties.hpp:25
sycl::_V1::ext::oneapi::experimental::is_property_key
Definition: property.hpp:228
sycl::_V1::ext::intel::experimental::latency_control_type::exact
@ exact
min
simd< _Tp, _Abi > min(const simd< _Tp, _Abi > &, const simd< _Tp, _Abi > &) noexcept