16 inline namespace _V1 {
17 namespace ext::oneapi::experimental {
45 x86_64 = 0x9900000000000000,
207 #ifndef __SYCL_TARGET_INTEL_X86_64__
208 #define __SYCL_TARGET_INTEL_X86_64__ 0
210 #ifndef __SYCL_TARGET_INTEL_GPU_BDW__
211 #define __SYCL_TARGET_INTEL_GPU_BDW__ 0
213 #ifndef __SYCL_TARGET_INTEL_GPU_SKL__
214 #define __SYCL_TARGET_INTEL_GPU_SKL__ 0
216 #ifndef __SYCL_TARGET_INTEL_GPU_KBL__
217 #define __SYCL_TARGET_INTEL_GPU_KBL__ 0
219 #ifndef __SYCL_TARGET_INTEL_GPU_CFL__
220 #define __SYCL_TARGET_INTEL_GPU_CFL__ 0
222 #ifndef __SYCL_TARGET_INTEL_GPU_APL__
223 #define __SYCL_TARGET_INTEL_GPU_APL__ 0
225 #ifndef __SYCL_TARGET_INTEL_GPU_GLK__
226 #define __SYCL_TARGET_INTEL_GPU_GLK__ 0
228 #ifndef __SYCL_TARGET_INTEL_GPU_WHL__
229 #define __SYCL_TARGET_INTEL_GPU_WHL__ 0
231 #ifndef __SYCL_TARGET_INTEL_GPU_AML__
232 #define __SYCL_TARGET_INTEL_GPU_AML__ 0
234 #ifndef __SYCL_TARGET_INTEL_GPU_CML__
235 #define __SYCL_TARGET_INTEL_GPU_CML__ 0
237 #ifndef __SYCL_TARGET_INTEL_GPU_ICLLP__
238 #define __SYCL_TARGET_INTEL_GPU_ICLLP__ 0
240 #ifndef __SYCL_TARGET_INTEL_GPU_EHL__
241 #define __SYCL_TARGET_INTEL_GPU_EHL__ 0
243 #ifndef __SYCL_TARGET_INTEL_GPU_TGLLP__
244 #define __SYCL_TARGET_INTEL_GPU_TGLLP__ 0
246 #ifndef __SYCL_TARGET_INTEL_GPU_RKL__
247 #define __SYCL_TARGET_INTEL_GPU_RKL__ 0
249 #ifndef __SYCL_TARGET_INTEL_GPU_ADL_S__
250 #define __SYCL_TARGET_INTEL_GPU_ADL_S__ 0
252 #ifndef __SYCL_TARGET_INTEL_GPU_ADL_P__
253 #define __SYCL_TARGET_INTEL_GPU_ADL_P__ 0
255 #ifndef __SYCL_TARGET_INTEL_GPU_ADL_N__
256 #define __SYCL_TARGET_INTEL_GPU_ADL_N__ 0
258 #ifndef __SYCL_TARGET_INTEL_GPU_DG1__
259 #define __SYCL_TARGET_INTEL_GPU_DG1__ 0
261 #ifndef __SYCL_TARGET_INTEL_GPU_ACM_G10__
262 #define __SYCL_TARGET_INTEL_GPU_ACM_G10__ 0
264 #ifndef __SYCL_TARGET_INTEL_GPU_ACM_G11__
265 #define __SYCL_TARGET_INTEL_GPU_ACM_G11__ 0
267 #ifndef __SYCL_TARGET_INTEL_GPU_ACM_G12__
268 #define __SYCL_TARGET_INTEL_GPU_ACM_G12__ 0
270 #ifndef __SYCL_TARGET_INTEL_GPU_PVC__
271 #define __SYCL_TARGET_INTEL_GPU_PVC__ 0
273 #ifndef __SYCL_TARGET_INTEL_GPU_PVC_VG__
274 #define __SYCL_TARGET_INTEL_GPU_PVC_VG__ 0
276 #ifndef __SYCL_TARGET_NVIDIA_GPU_SM50__
277 #define __SYCL_TARGET_NVIDIA_GPU_SM50__ 0
279 #ifndef __SYCL_TARGET_NVIDIA_GPU_SM52__
280 #define __SYCL_TARGET_NVIDIA_GPU_SM52__ 0
282 #ifndef __SYCL_TARGET_NVIDIA_GPU_SM53__
283 #define __SYCL_TARGET_NVIDIA_GPU_SM53__ 0
285 #ifndef __SYCL_TARGET_NVIDIA_GPU_SM60__
286 #define __SYCL_TARGET_NVIDIA_GPU_SM60__ 0
288 #ifndef __SYCL_TARGET_NVIDIA_GPU_SM61__
289 #define __SYCL_TARGET_NVIDIA_GPU_SM61__ 0
291 #ifndef __SYCL_TARGET_NVIDIA_GPU_SM62__
292 #define __SYCL_TARGET_NVIDIA_GPU_SM62__ 0
294 #ifndef __SYCL_TARGET_NVIDIA_GPU_SM70__
295 #define __SYCL_TARGET_NVIDIA_GPU_SM70__ 0
297 #ifndef __SYCL_TARGET_NVIDIA_GPU_SM72__
298 #define __SYCL_TARGET_NVIDIA_GPU_SM72__ 0
300 #ifndef __SYCL_TARGET_NVIDIA_GPU_SM75__
301 #define __SYCL_TARGET_NVIDIA_GPU_SM75__ 0
303 #ifndef __SYCL_TARGET_NVIDIA_GPU_SM80__
304 #define __SYCL_TARGET_NVIDIA_GPU_SM80__ 0
306 #ifndef __SYCL_TARGET_NVIDIA_GPU_SM86__
307 #define __SYCL_TARGET_NVIDIA_GPU_SM86__ 0
309 #ifndef __SYCL_TARGET_NVIDIA_GPU_SM87__
310 #define __SYCL_TARGET_NVIDIA_GPU_SM87__ 0
312 #ifndef __SYCL_TARGET_NVIDIA_GPU_SM89__
313 #define __SYCL_TARGET_NVIDIA_GPU_SM89__ 0
315 #ifndef __SYCL_TARGET_NVIDIA_GPU_SM90__
316 #define __SYCL_TARGET_NVIDIA_GPU_SM90__ 0
318 #ifndef __SYCL_TARGET_AMD_GPU_GFX700__
319 #define __SYCL_TARGET_AMD_GPU_GFX700__ 0
321 #ifndef __SYCL_TARGET_AMD_GPU_GFX701__
322 #define __SYCL_TARGET_AMD_GPU_GFX701__ 0
324 #ifndef __SYCL_TARGET_AMD_GPU_GFX702__
325 #define __SYCL_TARGET_AMD_GPU_GFX702__ 0
327 #ifndef __SYCL_TARGET_AMD_GPU_GFX801__
328 #define __SYCL_TARGET_AMD_GPU_GFX801__ 0
330 #ifndef __SYCL_TARGET_AMD_GPU_GFX802__
331 #define __SYCL_TARGET_AMD_GPU_GFX802__ 0
333 #ifndef __SYCL_TARGET_AMD_GPU_GFX803__
334 #define __SYCL_TARGET_AMD_GPU_GFX803__ 0
336 #ifndef __SYCL_TARGET_AMD_GPU_GFX805__
337 #define __SYCL_TARGET_AMD_GPU_GFX805__ 0
339 #ifndef __SYCL_TARGET_AMD_GPU_GFX810__
340 #define __SYCL_TARGET_AMD_GPU_GFX810__ 0
342 #ifndef __SYCL_TARGET_AMD_GPU_GFX900__
343 #define __SYCL_TARGET_AMD_GPU_GFX900__ 0
345 #ifndef __SYCL_TARGET_AMD_GPU_GFX902__
346 #define __SYCL_TARGET_AMD_GPU_GFX902__ 0
348 #ifndef __SYCL_TARGET_AMD_GPU_GFX904__
349 #define __SYCL_TARGET_AMD_GPU_GFX904__ 0
351 #ifndef __SYCL_TARGET_AMD_GPU_GFX906__
352 #define __SYCL_TARGET_AMD_GPU_GFX906__ 0
354 #ifndef __SYCL_TARGET_AMD_GPU_GFX908__
355 #define __SYCL_TARGET_AMD_GPU_GFX908__ 0
357 #ifndef __SYCL_TARGET_AMD_GPU_GFX909__
358 #define __SYCL_TARGET_AMD_GPU_GFX909__ 0
360 #ifndef __SYCL_TARGET_AMD_GPU_GFX90A__
361 #define __SYCL_TARGET_AMD_GPU_GFX90A__ 0
363 #ifndef __SYCL_TARGET_AMD_GPU_GFX90C__
364 #define __SYCL_TARGET_AMD_GPU_GFX90C__ 0
366 #ifndef __SYCL_TARGET_AMD_GPU_GFX940__
367 #define __SYCL_TARGET_AMD_GPU_GFX940__ 0
369 #ifndef __SYCL_TARGET_AMD_GPU_GFX941__
370 #define __SYCL_TARGET_AMD_GPU_GFX941__ 0
372 #ifndef __SYCL_TARGET_AMD_GPU_GFX942__
373 #define __SYCL_TARGET_AMD_GPU_GFX942__ 0
375 #ifndef __SYCL_TARGET_AMD_GPU_GFX1010__
376 #define __SYCL_TARGET_AMD_GPU_GFX1010__ 0
378 #ifndef __SYCL_TARGET_AMD_GPU_GFX1011__
379 #define __SYCL_TARGET_AMD_GPU_GFX1011__ 0
381 #ifndef __SYCL_TARGET_AMD_GPU_GFX1012__
382 #define __SYCL_TARGET_AMD_GPU_GFX1012__ 0
384 #ifndef __SYCL_TARGET_AMD_GPU_GFX1013__
385 #define __SYCL_TARGET_AMD_GPU_GFX1013__ 0
387 #ifndef __SYCL_TARGET_AMD_GPU_GFX1030__
388 #define __SYCL_TARGET_AMD_GPU_GFX1030__ 0
390 #ifndef __SYCL_TARGET_AMD_GPU_GFX1031__
391 #define __SYCL_TARGET_AMD_GPU_GFX1031__ 0
393 #ifndef __SYCL_TARGET_AMD_GPU_GFX1032__
394 #define __SYCL_TARGET_AMD_GPU_GFX1032__ 0
396 #ifndef __SYCL_TARGET_AMD_GPU_GFX1033__
397 #define __SYCL_TARGET_AMD_GPU_GFX1033__ 0
399 #ifndef __SYCL_TARGET_AMD_GPU_GFX1034__
400 #define __SYCL_TARGET_AMD_GPU_GFX1034__ 0
402 #ifndef __SYCL_TARGET_AMD_GPU_GFX1035__
403 #define __SYCL_TARGET_AMD_GPU_GFX1035__ 0
405 #ifndef __SYCL_TARGET_AMD_GPU_GFX1036__
406 #define __SYCL_TARGET_AMD_GPU_GFX1036__ 0
408 #ifndef __SYCL_TARGET_AMD_GPU_GFX1100__
409 #define __SYCL_TARGET_AMD_GPU_GFX1100__ 0
411 #ifndef __SYCL_TARGET_AMD_GPU_GFX1101__
412 #define __SYCL_TARGET_AMD_GPU_GFX1101__ 0
414 #ifndef __SYCL_TARGET_AMD_GPU_GFX1102__
415 #define __SYCL_TARGET_AMD_GPU_GFX1102__ 0
417 #ifndef __SYCL_TARGET_AMD_GPU_GFX1103__
418 #define __SYCL_TARGET_AMD_GPU_GFX1103__ 0
420 #ifndef __SYCL_TARGET_AMD_GPU_GFX1150__
421 #define __SYCL_TARGET_AMD_GPU_GFX1150__ 0
423 #ifndef __SYCL_TARGET_AMD_GPU_GFX1151__
424 #define __SYCL_TARGET_AMD_GPU_GFX1151__ 0
426 #ifndef __SYCL_TARGET_AMD_GPU_GFX1200__
427 #define __SYCL_TARGET_AMD_GPU_GFX1200__ 0
429 #ifndef __SYCL_TARGET_AMD_GPU_GFX1201__
430 #define __SYCL_TARGET_AMD_GPU_GFX1201__ 0
515 constexpr
static std::optional<ext::oneapi::experimental::architecture>
519 #if __SYCL_TARGET_INTEL_X86_64__
522 #if __SYCL_TARGET_INTEL_GPU_BDW__
525 #if __SYCL_TARGET_INTEL_GPU_SKL__
528 #if __SYCL_TARGET_INTEL_GPU_KBL__
531 #if __SYCL_TARGET_INTEL_GPU_CFL__
534 #if __SYCL_TARGET_INTEL_GPU_APL__
537 #if __SYCL_TARGET_INTEL_GPU_GLK__
540 #if __SYCL_TARGET_INTEL_GPU_WHL__
543 #if __SYCL_TARGET_INTEL_GPU_AML__
546 #if __SYCL_TARGET_INTEL_GPU_CML__
549 #if __SYCL_TARGET_INTEL_GPU_ICLLP__
552 #if __SYCL_TARGET_INTEL_GPU_EHL__
555 #if __SYCL_TARGET_INTEL_GPU_TGLLP__
558 #if __SYCL_TARGET_INTEL_GPU_RKL__
561 #if __SYCL_TARGET_INTEL_GPU_ADL_S__
564 #if __SYCL_TARGET_INTEL_GPU_ADL_P__
567 #if __SYCL_TARGET_INTEL_GPU_ADL_P__
570 #if __SYCL_TARGET_INTEL_GPU_ADL_N__
573 #if __SYCL_TARGET_INTEL_GPU_DG1__
576 #if __SYCL_TARGET_INTEL_GPU_ACM_G10__
579 #if __SYCL_TARGET_INTEL_GPU_ACM_G11__
582 #if __SYCL_TARGET_INTEL_GPU_ACM_G12__
585 #if __SYCL_TARGET_INTEL_GPU_PVC__
588 #if __SYCL_TARGET_INTEL_GPU_PVC_VG__
591 #if __SYCL_TARGET_NVIDIA_GPU_SM50__
594 #if __SYCL_TARGET_NVIDIA_GPU_SM52__
597 #if __SYCL_TARGET_NVIDIA_GPU_SM53__
600 #if __SYCL_TARGET_NVIDIA_GPU_SM60__
603 #if __SYCL_TARGET_NVIDIA_GPU_SM61__
606 #if __SYCL_TARGET_NVIDIA_GPU_SM62__
609 #if __SYCL_TARGET_NVIDIA_GPU_SM70__
612 #if __SYCL_TARGET_NVIDIA_GPU_SM72__
615 #if __SYCL_TARGET_NVIDIA_GPU_SM75__
618 #if __SYCL_TARGET_NVIDIA_GPU_SM80__
621 #if __SYCL_TARGET_NVIDIA_GPU_SM86__
624 #if __SYCL_TARGET_NVIDIA_GPU_SM87__
627 #if __SYCL_TARGET_NVIDIA_GPU_SM89__
630 #if __SYCL_TARGET_NVIDIA_GPU_SM90__
633 #if __SYCL_TARGET_AMD_GPU_GFX700__
636 #if __SYCL_TARGET_AMD_GPU_GFX701__
639 #if __SYCL_TARGET_AMD_GPU_GFX702__
642 #if __SYCL_TARGET_AMD_GPU_GFX801__
645 #if __SYCL_TARGET_AMD_GPU_GFX802__
648 #if __SYCL_TARGET_AMD_GPU_GFX803__
651 #if __SYCL_TARGET_AMD_GPU_GFX805__
654 #if __SYCL_TARGET_AMD_GPU_GFX810__
657 #if __SYCL_TARGET_AMD_GPU_GFX900__
660 #if __SYCL_TARGET_AMD_GPU_GFX902__
663 #if __SYCL_TARGET_AMD_GPU_GFX904__
666 #if __SYCL_TARGET_AMD_GPU_GFX906__
669 #if __SYCL_TARGET_AMD_GPU_GFX908__
672 #if __SYCL_TARGET_AMD_GPU_GFX909__
675 #if __SYCL_TARGET_AMD_GPU_GFX90a__
678 #if __SYCL_TARGET_AMD_GPU_GFX90c__
681 #if __SYCL_TARGET_AMD_GPU_GFX940__
684 #if __SYCL_TARGET_AMD_GPU_GFX941__
687 #if __SYCL_TARGET_AMD_GPU_GFX942__
690 #if __SYCL_TARGET_AMD_GPU_GFX1010__
693 #if __SYCL_TARGET_AMD_GPU_GFX1011__
696 #if __SYCL_TARGET_AMD_GPU_GFX1012__
699 #if __SYCL_TARGET_AMD_GPU_GFX1030__
702 #if __SYCL_TARGET_AMD_GPU_GFX1031__
705 #if __SYCL_TARGET_AMD_GPU_GFX1032__
708 #if __SYCL_TARGET_AMD_GPU_GFX1033__
711 #if __SYCL_TARGET_AMD_GPU_GFX1034__
714 #if __SYCL_TARGET_AMD_GPU_GFX1035__
717 #if __SYCL_TARGET_AMD_GPU_GFX1036__
720 #if __SYCL_TARGET_AMD_GPU_GFX1100__
723 #if __SYCL_TARGET_AMD_GPU_GFX1101__
726 #if __SYCL_TARGET_AMD_GPU_GFX1102__
729 #if __SYCL_TARGET_AMD_GPU_GFX1103__
732 #if __SYCL_TARGET_AMD_GPU_GFX1150__
735 #if __SYCL_TARGET_AMD_GPU_GFX1151__
738 #if __SYCL_TARGET_AMD_GPU_GFX1200__
741 #if __SYCL_TARGET_AMD_GPU_GFX1201__
748 constexpr
static bool
750 constexpr std::optional<ext::oneapi::experimental::architecture>
752 if (current_arch.has_value())
753 return arch == *current_arch;
771 static constexpr std::optional<ext::oneapi::experimental::architecture>
784 static constexpr std::optional<ext::oneapi::experimental::architecture>
797 template <ext::oneapi::experimental::arch_category Category>
799 constexpr std::optional<ext::oneapi::experimental::architecture>
801 constexpr std::optional<ext::oneapi::experimental::architecture>
803 constexpr std::optional<ext::oneapi::experimental::architecture>
806 if (category_min_arch.has_value() && category_max_arch.has_value() &&
807 current_arch.has_value())
808 if ((*category_min_arch <= *current_arch) &&
809 (*current_arch <= *category_max_arch))
817 return (device_architecture_is_in_category_aot<Categories>() || ...);
820 constexpr
static std::optional<ext::oneapi::experimental::arch_category>
822 auto arch_is_in_segment =
825 if ((
min <= arch) && (arch <=
max))
843 template <ext::oneapi::experimental::architecture Arch,
typename Compare>
845 constexpr std::optional<ext::oneapi::experimental::arch_category>
847 constexpr std::optional<ext::oneapi::experimental::architecture>
850 if (input_arch_category.has_value() && current_arch.has_value()) {
851 std::optional<ext::oneapi::experimental::arch_category>
853 if (current_arch_category.has_value() &&
854 (*input_arch_category == *current_arch_category))
855 return comp(*current_arch, Arch);
887 if constexpr (MakeCall && device_architecture_is<Archs...>()) {
902 if constexpr (MakeCall &&
903 device_architecture_is_in_categories<Categories...>()) {
916 template <ext::oneapi::experimental::architecture Arch,
typename T>
918 if constexpr (MakeCall &&
919 sycl::detail::device_architecture_comparison_aot<Arch>(
922 return sycl::detail::if_architecture_helper<false>{};
925 return sycl::detail::if_architecture_helper<MakeCall>{};
934 template <ext::oneapi::experimental::architecture Arch,
typename T>
936 if constexpr (MakeCall &&
937 sycl::detail::device_architecture_comparison_aot<Arch>(
940 return sycl::detail::if_architecture_helper<false>{};
943 return sycl::detail::if_architecture_helper<MakeCall>{};
951 template <ext::oneapi::experimental::architecture Arch,
typename T>
953 if constexpr (MakeCall &&
954 sycl::detail::device_architecture_comparison_aot<Arch>(
957 return sycl::detail::if_architecture_helper<false>{};
960 return sycl::detail::if_architecture_helper<MakeCall>{};
969 template <ext::oneapi::experimental::architecture Arch,
typename T>
971 if constexpr (MakeCall &&
972 sycl::detail::device_architecture_comparison_aot<Arch>(
975 return sycl::detail::if_architecture_helper<false>{};
978 return sycl::detail::if_architecture_helper<MakeCall>{};
990 if constexpr (MakeCall &&
991 sycl::detail::device_architecture_comparison_aot<Arch1>(
993 sycl::detail::device_architecture_comparison_aot<Arch2>(
996 return sycl::detail::if_architecture_helper<false>{};
999 return sycl::detail::if_architecture_helper<MakeCall>{};
1004 if constexpr (MakeCall) {
1011 namespace ext::oneapi::experimental {
1020 template <
typename T,
typename... Condition>
1021 #ifdef __SYCL_DEVICE_ONLY__
1022 [[__sycl_detail__::add_ir_attributes_function(
1023 "sycl-call-if-on-device-conditionally",
true)]]
1069 template <
int I1,
int I2,
int I3,
int... Is>
1070 static auto append(std::integer_sequence<int, Is...>) {
1071 return std::integer_sequence<int, I1, I2, I3, Is...>{};
1074 static constexpr
int arch =
static_cast<int>(Arch);
1076 decltype(append<ConditionOr, ConditionArchitecture, arch>(
rest{}));
1080 static constexpr
int arch =
static_cast<int>(Arch);
1081 using seq = std::integer_sequence<int, ConditionArchitecture, arch>;
1088 template <
int I,
int... Is>
1089 static auto append(std::integer_sequence<int, Is...>) {
1090 return std::integer_sequence<int, I, Is...>{};
1093 using seq = decltype(append<ConditionNot>(
rest{}));
1100 template <
int I,
int... I1s,
int... I2s>
1101 static auto append(std::integer_sequence<int, I1s...>,
1102 std::integer_sequence<int, I2s...>) {
1103 return std::integer_sequence<int, I, I1s..., I2s...>{};
1114 template <
int I,
int... I1s,
int... I2s>
1115 static auto append(std::integer_sequence<int, I1s...>,
1116 std::integer_sequence<int, I2s...>) {
1117 return std::integer_sequence<int, I, I1s..., I2s...>{};
1127 template <
typename T,
int... Is>
1129 std::integer_sequence<int, Is...>) {
1137 typename = std::enable_if<std::is_invocable_v<T>>>
1139 using make_call_if =
1146 using cond =
typename make_call_if::seq;
1152 using cond =
typename MakeCallIf::seq;
1159 #ifdef SYCL_EXT_ONEAPI_DEVICE_ARCHITECTURE_NEW_DESIGN_IMPL
1162 using make_call_if = detail::ConditionAnyArchitectureBuilder<Archs...>;
1163 using make_else_call_if = detail::ConditionNotBuilder<make_call_if>;
1165 using cond =
typename make_call_if::seq;
1167 return detail::if_architecture_is_helper<make_else_call_if>{};
1175 static_assert(sycl::detail::allowable_aot_mode<Archs...>(),
1176 "The if_architecture_is function may only be used when AOT "
1177 "compiling with '-fsycl-targets=spir64_x86_64' or "
1178 "'-fsycl-targets=*_gpu_*'");
1179 if constexpr (sycl::detail::device_architecture_is<Archs...>()) {
1181 return sycl::detail::if_architecture_helper<false>{};
1184 return sycl::detail::if_architecture_helper<true>{};
1197 return sycl::detail::if_architecture_helper<false>{};
1200 return sycl::detail::if_architecture_helper<true>{};
1207 template <architecture Arch,
typename T>
1209 if constexpr (sycl::detail::device_architecture_comparison_aot<Arch>(
1212 return sycl::detail::if_architecture_helper<false>{};
1215 return sycl::detail::if_architecture_helper<true>{};
1222 template <architecture Arch,
typename T>
1224 if constexpr (sycl::detail::device_architecture_comparison_aot<Arch>(
1227 return sycl::detail::if_architecture_helper<false>{};
1230 return sycl::detail::if_architecture_helper<true>{};
1237 template <architecture Arch,
typename T>
1239 if constexpr (sycl::detail::device_architecture_comparison_aot<Arch>(
1242 return sycl::detail::if_architecture_helper<false>{};
1245 return sycl::detail::if_architecture_helper<true>{};
1252 template <architecture Arch,
typename T>
1254 if constexpr (sycl::detail::device_architecture_comparison_aot<Arch>(
1257 return sycl::detail::if_architecture_helper<false>{};
1260 return sycl::detail::if_architecture_helper<true>{};
1268 template <architecture Arch1, architecture Arch2,
typename T>
1270 if constexpr (sycl::detail::device_architecture_comparison_aot<Arch1>(
1272 sycl::detail::device_architecture_comparison_aot<Arch2>(
1275 return sycl::detail::if_architecture_helper<false>{};
1278 return sycl::detail::if_architecture_helper<true>{};
constexpr auto else_if_architecture_is_lt(T fn)
The condition is true only if the object F comes from a previous call whose associated condition is f...
constexpr auto else_if_architecture_is_gt(T fn)
The condition is true only if the object F comes from a previous call whose associated condition is f...
constexpr auto else_if_architecture_is_le(T fn)
The condition is true only if the object F comes from a previous call whose associated condition is f...
constexpr void otherwise(T fn)
constexpr auto else_if_architecture_is(T fn)
The condition is true only if the object F comes from a previous call whose associated condition is f...
constexpr auto else_if_architecture_is_between(T fn)
The condition is true only if the object F comes from a previous call whose associated condition is f...
constexpr auto else_if_architecture_is_ge(T fn)
The condition is true only if the object F comes from a previous call whose associated condition is f...
auto else_if_architecture_is(T fn)
#define __SYCL_TARGET_INTEL_X86_64__
#define __SYCL_TARGET_INTEL_GPU_PVC_VG__
#define __SYCL_TARGET_AMD_GPU_GFX1102__
#define __SYCL_TARGET_AMD_GPU_GFX803__
#define __SYCL_TARGET_INTEL_GPU_GLK__
#define __SYCL_TARGET_AMD_GPU_GFX810__
#define __SYCL_TARGET_NVIDIA_GPU_SM61__
#define __SYCL_TARGET_INTEL_GPU_WHL__
#define __SYCL_TARGET_AMD_GPU_GFX802__
#define __SYCL_TARGET_AMD_GPU_GFX1100__
#define __SYCL_TARGET_NVIDIA_GPU_SM53__
#define __SYCL_TARGET_AMD_GPU_GFX90C__
#define __SYCL_TARGET_INTEL_GPU_CFL__
#define __SYCL_TARGET_AMD_GPU_GFX908__
#define __SYCL_TARGET_AMD_GPU_GFX90A__
#define __SYCL_TARGET_AMD_GPU_GFX1010__
#define __SYCL_TARGET_INTEL_GPU_DG1__
#define __SYCL_TARGET_AMD_GPU_GFX1031__
#define __SYCL_TARGET_AMD_GPU_GFX902__
#define __SYCL_TARGET_AMD_GPU_GFX1103__
#define __SYCL_TARGET_NVIDIA_GPU_SM89__
#define __SYCL_TARGET_INTEL_GPU_ACM_G11__
#define __SYCL_TARGET_INTEL_GPU_ACM_G10__
#define __SYCL_TARGET_INTEL_GPU_PVC__
#define __SYCL_TARGET_AMD_GPU_GFX1033__
#define __SYCL_TARGET_AMD_GPU_GFX805__
#define __SYCL_TARGET_AMD_GPU_GFX1201__
#define __SYCL_TARGET_AMD_GPU_GFX1035__
#define __SYCL_TARGET_AMD_GPU_GFX942__
#define __SYCL_TARGET_AMD_GPU_GFX1200__
#define __SYCL_TARGET_AMD_GPU_GFX1012__
#define __SYCL_TARGET_INTEL_GPU_KBL__
#define __SYCL_TARGET_AMD_GPU_GFX1151__
#define __SYCL_TARGET_AMD_GPU_GFX1101__
#define __SYCL_TARGET_INTEL_GPU_SKL__
#define __SYCL_TARGET_NVIDIA_GPU_SM50__
#define __SYCL_TARGET_AMD_GPU_GFX1011__
#define __SYCL_TARGET_AMD_GPU_GFX1030__
#define __SYCL_TARGET_AMD_GPU_GFX900__
#define __SYCL_TARGET_INTEL_GPU_ADL_S__
#define __SYCL_TARGET_INTEL_GPU_ADL_N__
#define __SYCL_TARGET_INTEL_GPU_EHL__
#define __SYCL_TARGET_AMD_GPU_GFX904__
#define __SYCL_TARGET_NVIDIA_GPU_SM52__
#define __SYCL_TARGET_AMD_GPU_GFX941__
#define __SYCL_TARGET_AMD_GPU_GFX1036__
#define __SYCL_TARGET_INTEL_GPU_ADL_P__
#define __SYCL_TARGET_AMD_GPU_GFX801__
#define __SYCL_TARGET_NVIDIA_GPU_SM80__
#define __SYCL_TARGET_INTEL_GPU_TGLLP__
#define __SYCL_TARGET_INTEL_GPU_RKL__
#define __SYCL_TARGET_NVIDIA_GPU_SM90__
#define __SYCL_TARGET_INTEL_GPU_AML__
#define __SYCL_TARGET_INTEL_GPU_ICLLP__
#define __SYCL_TARGET_NVIDIA_GPU_SM72__
#define __SYCL_TARGET_AMD_GPU_GFX906__
#define __SYCL_TARGET_INTEL_GPU_BDW__
#define __SYCL_TARGET_NVIDIA_GPU_SM86__
#define __SYCL_TARGET_AMD_GPU_GFX702__
#define __SYCL_TARGET_NVIDIA_GPU_SM60__
#define __SYCL_TARGET_INTEL_GPU_ACM_G12__
#define __SYCL_TARGET_AMD_GPU_GFX1013__
#define __SYCL_TARGET_AMD_GPU_GFX940__
#define __SYCL_TARGET_AMD_GPU_GFX1150__
#define __SYCL_TARGET_NVIDIA_GPU_SM62__
#define __SYCL_TARGET_INTEL_GPU_APL__
#define __SYCL_TARGET_AMD_GPU_GFX701__
#define __SYCL_TARGET_AMD_GPU_GFX1034__
#define __SYCL_TARGET_INTEL_GPU_CML__
#define __SYCL_TARGET_NVIDIA_GPU_SM70__
#define __SYCL_TARGET_AMD_GPU_GFX700__
#define __SYCL_TARGET_AMD_GPU_GFX1032__
#define __SYCL_TARGET_AMD_GPU_GFX909__
#define __SYCL_TARGET_NVIDIA_GPU_SM87__
#define __SYCL_TARGET_NVIDIA_GPU_SM75__
constexpr static bool allowable_aot_mode()
constexpr auto device_arch_compare_op_lt
static constexpr ext::oneapi::experimental::architecture min_amd_gpu_architecture
static constexpr std::optional< ext::oneapi::experimental::architecture > get_category_min_architecture(ext::oneapi::experimental::arch_category Category)
constexpr static bool device_architecture_comparison_aot(Compare comp)
constexpr static bool device_architecture_is_in_category_aot()
static constexpr ext::oneapi::experimental::architecture max_amd_gpu_architecture
static constexpr ext::oneapi::experimental::architecture min_intel_gpu_architecture
constexpr static bool device_architecture_is_in_categories()
static constexpr ext::oneapi::experimental::architecture min_nvidia_gpu_architecture
constexpr auto device_arch_compare_op_gt
constexpr static std::optional< ext::oneapi::experimental::arch_category > get_device_architecture_category(ext::oneapi::experimental::architecture arch)
constexpr static bool device_architecture_is()
constexpr static bool is_aot_for_architecture(ext::oneapi::experimental::architecture arch)
constexpr static std::optional< ext::oneapi::experimental::architecture > get_current_architecture_aot()
static constexpr std::optional< ext::oneapi::experimental::architecture > get_category_max_architecture(ext::oneapi::experimental::arch_category Category)
static constexpr ext::oneapi::experimental::architecture max_nvidia_gpu_architecture
constexpr auto device_arch_compare_op_ge
constexpr auto device_arch_compare_op_le
static constexpr bool is_allowable_aot_mode
static constexpr ext::oneapi::experimental::architecture max_intel_gpu_architecture
static constexpr int ConditionAnd
void call_if_on_device_conditionally(T fn, Condition...)
static constexpr int ConditionArchitecture
static constexpr int ConditionOr
static constexpr int ConditionNot
void call_if_on_device_conditionally_helper(T fn, std::integer_sequence< int, Is... >)
static constexpr int ConditionAspect
constexpr static auto if_architecture_is_lt(T fn)
The condition is true only if the device which executes the if_architecture_is_lt function has an arc...
constexpr static auto if_architecture_is(T fn)
The condition is true only if the device which executes the if_architecture_is function has any one o...
constexpr static auto if_architecture_is_between(T fn)
The condition is true only if the device which executes the if_architecture_is_between function has a...
constexpr static auto if_architecture_is_le(T fn)
The condition is true only if the device which executes the if_architecture_is_le function has an arc...
constexpr static auto if_architecture_is_ge(T fn)
The condition is true only if the device which executes the if_architecture_is_ge function has an arc...
constexpr static auto if_architecture_is_gt(T fn)
The condition is true only if the device which executes the if_architecture_is_gt function has an arc...
decltype(append< ConditionAnd >(rest1{}, rest2{})) seq
static auto append(std::integer_sequence< int, I1s... >, std::integer_sequence< int, I2s... >)
static auto append(std::integer_sequence< int, Is... >)
typename ConditionAnyArchitectureBuilder< Archs... >::seq rest
decltype(append< ConditionOr, ConditionArchitecture, arch >(rest{})) seq
std::integer_sequence< int, ConditionArchitecture, arch > seq
static auto append(std::integer_sequence< int, Is... >)
decltype(append< ConditionNot >(rest{})) seq
decltype(append< ConditionOr >(rest1{}, rest2{})) seq
static auto append(std::integer_sequence< int, I1s... >, std::integer_sequence< int, I2s... >)