Skip to content

Commit a8482b1

Browse files
committed
[SYCL] Enable -fdeclare-spirv-builtins for SYCL device compilation mode
For device compilation, SPIR-V builtins are now looked up by the device compiler. They now longer need to be forward declared. Signed-off-by: Victor Lomuller <[email protected]>
1 parent 3ee80a5 commit a8482b1

File tree

9 files changed

+62
-476
lines changed

9 files changed

+62
-476
lines changed

clang/lib/Driver/ToolChains/Clang.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4086,6 +4086,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
40864086
// We want to compile sycl kernels.
40874087
CmdArgs.push_back("-fsycl");
40884088
CmdArgs.push_back("-fsycl-is-device");
4089+
CmdArgs.push_back("-fdeclare-spirv-builtins");
40894090
// Pass the triple of host when doing SYCL
40904091
auto AuxT = llvm::Triple(llvm::sys::getProcessTriple());
40914092
std::string NormalizedTriple = AuxT.normalize();

libdevice/device_math.h

Lines changed: 0 additions & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -11,114 +11,6 @@
1111

1212
#include "device.h"
1313

14-
DEVICE_EXTERNAL double __spirv_ocl_log(double);
15-
DEVICE_EXTERNAL double __spirv_ocl_sin(double);
16-
DEVICE_EXTERNAL double __spirv_ocl_cos(double);
17-
DEVICE_EXTERNAL double __spirv_ocl_sinh(double);
18-
DEVICE_EXTERNAL double __spirv_ocl_cosh(double);
19-
DEVICE_EXTERNAL double __spirv_ocl_tanh(double);
20-
DEVICE_EXTERNAL double __spirv_ocl_exp(double);
21-
DEVICE_EXTERNAL double __spirv_ocl_sqrt(double);
22-
DEVICE_EXTERNAL bool __spirv_IsInf(double);
23-
DEVICE_EXTERNAL bool __spirv_IsFinite(double);
24-
DEVICE_EXTERNAL bool __spirv_IsNan(double);
25-
DEVICE_EXTERNAL bool __spirv_IsNormal(double);
26-
DEVICE_EXTERNAL bool __spirv_SignBitSet(double);
27-
DEVICE_EXTERNAL double __spirv_ocl_hypot(double, double);
28-
DEVICE_EXTERNAL double __spirv_ocl_atan2(double, double);
29-
DEVICE_EXTERNAL double __spirv_ocl_pow(double, double);
30-
DEVICE_EXTERNAL double __spirv_ocl_ldexp(double, int);
31-
DEVICE_EXTERNAL double __spirv_ocl_copysign(double, double);
32-
DEVICE_EXTERNAL double __spirv_ocl_fmax(double, double);
33-
DEVICE_EXTERNAL double __spirv_ocl_fabs(double);
34-
DEVICE_EXTERNAL double __spirv_ocl_tan(double);
35-
DEVICE_EXTERNAL double __spirv_ocl_acos(double);
36-
DEVICE_EXTERNAL double __spirv_ocl_asin(double);
37-
DEVICE_EXTERNAL double __spirv_ocl_atan(double);
38-
DEVICE_EXTERNAL double __spirv_ocl_atan2(double, double);
39-
DEVICE_EXTERNAL double __spirv_ocl_cosh(double);
40-
DEVICE_EXTERNAL double __spirv_ocl_sinh(double);
41-
DEVICE_EXTERNAL double __spirv_ocl_tanh(double);
42-
DEVICE_EXTERNAL double __spirv_ocl_acosh(double);
43-
DEVICE_EXTERNAL double __spirv_ocl_asinh(double);
44-
DEVICE_EXTERNAL double __spirv_ocl_atanh(double);
45-
DEVICE_EXTERNAL double __spirv_ocl_frexp(double, int *);
46-
DEVICE_EXTERNAL double __spirv_ocl_log10(double);
47-
DEVICE_EXTERNAL double __spirv_ocl_modf(double, double *);
48-
DEVICE_EXTERNAL double __spirv_ocl_exp2(double);
49-
DEVICE_EXTERNAL double __spirv_ocl_expm1(double);
50-
DEVICE_EXTERNAL int __spirv_ocl_ilogb(double);
51-
DEVICE_EXTERNAL double __spriv_ocl_log1p(double);
52-
DEVICE_EXTERNAL double __spirv_ocl_log2(double);
53-
DEVICE_EXTERNAL double __spirv_ocl_logb(double);
54-
DEVICE_EXTERNAL double __spirv_ocl_sqrt(double);
55-
DEVICE_EXTERNAL double __spirv_ocl_cbrt(double);
56-
DEVICE_EXTERNAL double __spirv_ocl_hypot(double);
57-
DEVICE_EXTERNAL double __spirv_ocl_erf(double);
58-
DEVICE_EXTERNAL double __spirv_ocl_erfc(double);
59-
DEVICE_EXTERNAL double __spirv_ocl_tgamma(double);
60-
DEVICE_EXTERNAL double __spirv_ocl_lgamma(double);
61-
DEVICE_EXTERNAL double __spirv_ocl_fmod(double, double);
62-
DEVICE_EXTERNAL double __spirv_ocl_remainder(double, double);
63-
DEVICE_EXTERNAL double __spirv_ocl_remquo(double, double, int *);
64-
DEVICE_EXTERNAL double __spirv_ocl_nextafter(double, double);
65-
DEVICE_EXTERNAL double __spirv_ocl_fdim(double, double);
66-
DEVICE_EXTERNAL double __spirv_ocl_fma(double, double, double);
67-
68-
DEVICE_EXTERNAL float __spirv_ocl_log(float);
69-
DEVICE_EXTERNAL float __spirv_ocl_logb(float);
70-
DEVICE_EXTERNAL float __spirv_ocl_sin(float);
71-
DEVICE_EXTERNAL float __spirv_ocl_cos(float);
72-
DEVICE_EXTERNAL float __spirv_ocl_sinh(float);
73-
DEVICE_EXTERNAL float __spirv_ocl_cosh(float);
74-
DEVICE_EXTERNAL float __spirv_ocl_tanh(float);
75-
DEVICE_EXTERNAL float __spirv_ocl_exp(float);
76-
DEVICE_EXTERNAL float __spirv_ocl_sqrt(float);
77-
DEVICE_EXTERNAL bool __spirv_IsInf(float);
78-
DEVICE_EXTERNAL bool __spirv_IsFinite(float);
79-
DEVICE_EXTERNAL bool __spirv_IsNan(float);
80-
DEVICE_EXTERNAL bool __spirv_IsNormal(double);
81-
DEVICE_EXTERNAL bool __spirv_SignBitSet(float);
82-
DEVICE_EXTERNAL float __spirv_ocl_hypot(float, float);
83-
DEVICE_EXTERNAL float __spirv_ocl_atan2(float, float);
84-
DEVICE_EXTERNAL float __spirv_ocl_pow(float, float);
85-
DEVICE_EXTERNAL float __spirv_ocl_ldexp(float, int);
86-
DEVICE_EXTERNAL float __spirv_ocl_copysign(float, float);
87-
DEVICE_EXTERNAL float __spirv_ocl_fmax(float, float);
88-
DEVICE_EXTERNAL float __spirv_ocl_fabs(float);
89-
DEVICE_EXTERNAL float __spirv_ocl_tan(float);
90-
DEVICE_EXTERNAL float __spirv_ocl_acos(float);
91-
DEVICE_EXTERNAL float __spirv_ocl_asin(float);
92-
DEVICE_EXTERNAL float __spirv_ocl_atan(float);
93-
DEVICE_EXTERNAL float __spirv_ocl_atan2(float, float);
94-
DEVICE_EXTERNAL float __spirv_ocl_cosh(float);
95-
DEVICE_EXTERNAL float __spirv_ocl_sinh(float);
96-
DEVICE_EXTERNAL float __spirv_ocl_tanh(float);
97-
DEVICE_EXTERNAL float __spirv_ocl_acosh(float);
98-
DEVICE_EXTERNAL float __spirv_ocl_asinh(float);
99-
DEVICE_EXTERNAL float __spirv_ocl_atanh(float);
100-
DEVICE_EXTERNAL float __spirv_ocl_frexp(float, int *);
101-
DEVICE_EXTERNAL float __spirv_ocl_log10(float);
102-
DEVICE_EXTERNAL float __spirv_ocl_modf(float, float *);
103-
DEVICE_EXTERNAL float __spirv_ocl_exp2(float);
104-
DEVICE_EXTERNAL float __spirv_ocl_expm1(float);
105-
DEVICE_EXTERNAL int __spirv_ocl_ilogb(float);
106-
DEVICE_EXTERNAL float __spirv_ocl_log1p(float);
107-
DEVICE_EXTERNAL float __spirv_ocl_log2(float);
108-
DEVICE_EXTERNAL float __spirv_ocl_sqrt(float);
109-
DEVICE_EXTERNAL float __spirv_ocl_cbrt(float);
110-
DEVICE_EXTERNAL float __spirv_ocl_hypot(float);
111-
DEVICE_EXTERNAL float __spirv_ocl_erf(float);
112-
DEVICE_EXTERNAL float __spirv_ocl_erfc(float);
113-
DEVICE_EXTERNAL float __spirv_ocl_tgamma(float);
114-
DEVICE_EXTERNAL float __spirv_ocl_lgamma(float);
115-
DEVICE_EXTERNAL float __spirv_ocl_fmod(float, float);
116-
DEVICE_EXTERNAL float __spirv_ocl_remainder(float, float);
117-
DEVICE_EXTERNAL float __spirv_ocl_remquo(float, float, int *);
118-
DEVICE_EXTERNAL float __spirv_ocl_nextafter(float, float);
119-
DEVICE_EXTERNAL float __spirv_ocl_fdim(float, float);
120-
DEVICE_EXTERNAL float __spirv_ocl_fma(float, float, float);
121-
12214
DEVICE_EXTERN_C
12315
double __devicelib_log(double x);
12416

0 commit comments

Comments
 (0)