Skip to content

Commit 7d6ede4

Browse files
authored
[SYCL-PTX] Add bindings with libdevice for math and relational (#2013)
Bind the following builtins to libdevice functions: - atan2 - copysign - cospi - fdim - fma - frexp - hypot - ilogb - ldexp - log - log10 - log1p - log2 - logb - modf - native_cos - native_log - native_log10 - native_log2 - native_powr - native_rsqrt - native_sin - native_sqrt - native_tan - nextafter - pow - remainer - round - rsqrt - sin - sincos - sinh - sinpi - tan - tanh - tgamma - trunc - isfinite - isinf - isnan Signed-off-by: Victor Lomuller <[email protected]>
1 parent 3911a8e commit 7d6ede4

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+1446
-60
lines changed

libclc/generic/include/clcmacro.h

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -134,14 +134,14 @@
134134
ADDR_SPACE, ARG2_TYPE) \
135135
DECLSPEC RET_TYPE##2 FUNCTION(ARG1_TYPE##2 x, ADDR_SPACE ARG2_TYPE##2 * y) { \
136136
return (RET_TYPE##2)( \
137-
FUNCTION(x.x, (ARG2_TYPE *)y), \
137+
FUNCTION(x.x, (ADDR_SPACE ARG2_TYPE *)y), \
138138
FUNCTION(x.y, \
139139
(ADDR_SPACE ARG2_TYPE *)((ADDR_SPACE ARG2_TYPE *)y + 1))); \
140140
} \
141141
\
142142
DECLSPEC RET_TYPE##3 FUNCTION(ARG1_TYPE##3 x, ADDR_SPACE ARG2_TYPE##3 * y) { \
143143
return (RET_TYPE##3)( \
144-
FUNCTION(x.x, (ARG2_TYPE *)y), \
144+
FUNCTION(x.x, (ADDR_SPACE ARG2_TYPE *)y), \
145145
FUNCTION(x.y, \
146146
(ADDR_SPACE ARG2_TYPE *)((ADDR_SPACE ARG2_TYPE *)y + 1)), \
147147
FUNCTION(x.z, \
@@ -150,26 +150,35 @@
150150
\
151151
DECLSPEC RET_TYPE##4 FUNCTION(ARG1_TYPE##4 x, ADDR_SPACE ARG2_TYPE##4 * y) { \
152152
return (RET_TYPE##4)( \
153-
FUNCTION(x.lo, (ARG2_TYPE##2 *)y), \
153+
FUNCTION(x.lo, (ADDR_SPACE ARG2_TYPE##2 *)y), \
154154
FUNCTION(x.hi, \
155155
(ADDR_SPACE ARG2_TYPE##2 *)((ADDR_SPACE ARG2_TYPE *)y + 2))); \
156156
} \
157157
\
158158
DECLSPEC RET_TYPE##8 FUNCTION(ARG1_TYPE##8 x, ADDR_SPACE ARG2_TYPE##8 * y) { \
159159
return (RET_TYPE##8)( \
160-
FUNCTION(x.lo, (ARG2_TYPE##4 *)y), \
160+
FUNCTION(x.lo, (ADDR_SPACE ARG2_TYPE##4 *)y), \
161161
FUNCTION(x.hi, \
162162
(ADDR_SPACE ARG2_TYPE##4 *)((ADDR_SPACE ARG2_TYPE *)y + 4))); \
163163
} \
164164
\
165165
DECLSPEC RET_TYPE##16 FUNCTION(ARG1_TYPE##16 x, \
166166
ADDR_SPACE ARG2_TYPE##16 * y) { \
167167
return (RET_TYPE##16)( \
168-
FUNCTION(x.lo, (ARG2_TYPE##8 *)y), \
168+
FUNCTION(x.lo, (ADDR_SPACE ARG2_TYPE##8 *)y), \
169169
FUNCTION(x.hi, \
170170
(ADDR_SPACE ARG2_TYPE##8 *)((ADDR_SPACE ARG2_TYPE *)y + 8))); \
171171
}
172172

173+
#define _CLC_DEFINE_TERNARY_BUILTIN(RET_TYPE, FUNCTION, BUILTIN, ARG1_TYPE, \
174+
ARG2_TYPE, ARG3_TYPE) \
175+
_CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG1_TYPE x, ARG2_TYPE y, \
176+
ARG3_TYPE z) { \
177+
return BUILTIN(x, y, z); \
178+
} \
179+
_CLC_TERNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, RET_TYPE, FUNCTION, \
180+
ARG1_TYPE, ARG2_TYPE, ARG3_TYPE)
181+
173182
#define _CLC_DEFINE_BINARY_BUILTIN(RET_TYPE, FUNCTION, BUILTIN, ARG1_TYPE, \
174183
ARG2_TYPE) \
175184
_CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG1_TYPE x, ARG2_TYPE y) { \

0 commit comments

Comments
 (0)