DPC++ Runtime
Runtime libraries for oneAPI DPC++
defines.hpp
Go to the documentation of this file.
1
//==---------- defines.hpp ----- Preprocessor directives -------------------==//
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
11
#include <
sycl/detail/defines_elementary.hpp
>
// for __SYCL_ID_QUERIES_FIT_...
12
13
#if __SYCL_ID_QUERIES_FIT_IN_INT__ && __has_builtin(__builtin_assume)
14
#include <climits>
15
#define __SYCL_ASSUME_INT(x) __builtin_assume((x) <= INT_MAX)
16
#else
17
#define __SYCL_ASSUME_INT(x)
18
#if __SYCL_ID_QUERIES_FIT_IN_INT__ && !__has_builtin(__builtin_assume)
19
#warning "No assumptions will be emitted due to no __builtin_assume available"
20
#endif
21
#endif
22
23
// FIXME Check for __SYCL_DEVICE_ONLY__ can be removed if implementation of
24
// __has_attribute is fixed to consider LangOpts when generating attributes in
25
// tablegen.
26
#if __has_attribute(sycl_special_class) && (defined __SYCL_DEVICE_ONLY__)
27
#define __SYCL_SPECIAL_CLASS __attribute__((sycl_special_class))
28
#else
29
#define __SYCL_SPECIAL_CLASS
30
#endif
31
32
// FIXME Check for __SYCL_DEVICE_ONLY__ can be removed if implementation of
33
// __has_attribute is fixed to consider LangOpts when generating attributes in
34
// tablegen.
35
#if __has_cpp_attribute(__sycl_detail__::sycl_type) && \
36
(defined __SYCL_DEVICE_ONLY__)
37
#define __SYCL_TYPE(x) [[__sycl_detail__::sycl_type(x)]]
38
#else
39
#define __SYCL_TYPE(x)
40
#endif
41
42
#if __has_cpp_attribute(clang::builtin_alias)
43
#define __SYCL_BUILTIN_ALIAS(x) [[clang::builtin_alias(x)]]
44
#else
45
#define __SYCL_BUILTIN_ALIAS(x)
46
#endif
defines_elementary.hpp
include
sycl
detail
defines.hpp
Generated by
1.9.1