blob: 75a916e2a0112af45af5969b450945df6ba9b0d7 [file] [log] [blame]
# Math functions not yet available in the libc project, or those not yet tuned
# for GPU workloads are provided as wrappers over vendor libraries. If we find
# them ahead of time we will import them statically. Otherwise, we will keep
# them as external references and expect them to be resolved by the user when
# they compile. In the future,we will use implementations from the 'libc'
# project and not provide these wrappers.
add_subdirectory(vendor)
# For the GPU we want to be able to optionally depend on the vendor libraries
# until we have a suitable replacement inside `libc`.
# TODO: We should have an option to enable or disable these on a per-function
# basis.
option(LIBC_GPU_VENDOR_MATH "Use vendor wrappers for GPU math" ON)
function(add_math_entrypoint_gpu_object name)
get_fq_target_name("vendor.${name}" fq_vendor_specific_target_name)
if(TARGET ${fq_vendor_specific_target_name} AND ${LIBC_GPU_VENDOR_MATH})
return()
endif()
add_entrypoint_object(
${name}
${ARGN}
)
endfunction()
add_math_entrypoint_gpu_object(
ceil
SRCS
ceil.cpp
HDRS
../ceil.h
COMPILE_OPTIONS
-O2
)
add_math_entrypoint_gpu_object(
ceilf
SRCS
ceilf.cpp
HDRS
../ceilf.h
COMPILE_OPTIONS
-O2
)
add_math_entrypoint_gpu_object(
copysign
SRCS
copysign.cpp
HDRS
../copysign.h
COMPILE_OPTIONS
-O2
)
add_math_entrypoint_gpu_object(
copysignf
SRCS
copysignf.cpp
HDRS
../copysignf.h
COMPILE_OPTIONS
-O2
)
add_math_entrypoint_gpu_object(
fabs
SRCS
fabs.cpp
HDRS
../fabs.h
COMPILE_OPTIONS
-O2
)
add_math_entrypoint_gpu_object(
fabsf
SRCS
fabsf.cpp
HDRS
../fabsf.h
COMPILE_OPTIONS
-O2
)
add_math_entrypoint_gpu_object(
floor
SRCS
floor.cpp
HDRS
../floor.h
COMPILE_OPTIONS
-O2
)
add_math_entrypoint_gpu_object(
floorf
SRCS
floorf.cpp
HDRS
../floorf.h
COMPILE_OPTIONS
-O2
)
add_math_entrypoint_gpu_object(
fma
SRCS
fma.cpp
HDRS
../fma.h
COMPILE_OPTIONS
-O2
)
add_math_entrypoint_gpu_object(
fmaf
SRCS
fmaf.cpp
HDRS
../fmaf.h
COMPILE_OPTIONS
-O2
)
add_math_entrypoint_gpu_object(
fmax
SRCS
fmax.cpp
HDRS
../fmax.h
COMPILE_OPTIONS
-O2
)
add_math_entrypoint_gpu_object(
fmaxf
SRCS
fmaxf.cpp
HDRS
../fmaxf.h
COMPILE_OPTIONS
-O2
)
add_math_entrypoint_gpu_object(
fmin
SRCS
fmin.cpp
HDRS
../fmin.h
COMPILE_OPTIONS
-O2
)
add_math_entrypoint_gpu_object(
fminf
SRCS
fminf.cpp
HDRS
../fminf.h
COMPILE_OPTIONS
-O2
)
add_math_entrypoint_gpu_object(
fmod
SRCS
fmod.cpp
HDRS
../fmod.h
COMPILE_OPTIONS
-O2
)
add_math_entrypoint_gpu_object(
fmodf
SRCS
fmodf.cpp
HDRS
../fmodf.h
COMPILE_OPTIONS
-O2
)
add_math_entrypoint_gpu_object(
lround
SRCS
lround.cpp
HDRS
../lround.h
COMPILE_OPTIONS
-O2
)
add_math_entrypoint_gpu_object(
lroundf
SRCS
lroundf.cpp
HDRS
../lroundf.h
COMPILE_OPTIONS
-O2
)
add_math_entrypoint_gpu_object(
llround
SRCS
llround.cpp
HDRS
../llround.h
COMPILE_OPTIONS
-O2
)
add_math_entrypoint_gpu_object(
llroundf
SRCS
llroundf.cpp
HDRS
../llroundf.h
COMPILE_OPTIONS
-O2
)
add_math_entrypoint_gpu_object(
modf
SRCS
modf.cpp
HDRS
../modf.h
COMPILE_OPTIONS
-O2
)
add_math_entrypoint_gpu_object(
modff
SRCS
modff.cpp
HDRS
../modff.h
COMPILE_OPTIONS
-O2
)
add_math_entrypoint_gpu_object(
nearbyint
SRCS
nearbyint.cpp
HDRS
../nearbyint.h
COMPILE_OPTIONS
-O2
)
add_math_entrypoint_gpu_object(
nearbyintf
SRCS
nearbyintf.cpp
HDRS
../nearbyintf.h
COMPILE_OPTIONS
-O2
)
add_math_entrypoint_gpu_object(
remainder
SRCS
remainder.cpp
HDRS
../remainder.h
COMPILE_OPTIONS
-O2
)
add_math_entrypoint_gpu_object(
remainderf
SRCS
remainderf.cpp
HDRS
../remainderf.h
COMPILE_OPTIONS
-O2
)
add_math_entrypoint_gpu_object(
rint
SRCS
rint.cpp
HDRS
../rint.h
COMPILE_OPTIONS
-O2
)
add_math_entrypoint_gpu_object(
rintf
SRCS
rintf.cpp
HDRS
../rintf.h
COMPILE_OPTIONS
-O2
)
add_math_entrypoint_gpu_object(
round
SRCS
round.cpp
HDRS
../round.h
COMPILE_OPTIONS
-O2
)
add_math_entrypoint_gpu_object(
sinh
SRCS
sinh.cpp
HDRS
../sinh.h
COMPILE_OPTIONS
-O2
)
add_math_entrypoint_gpu_object(
sqrt
SRCS
sqrt.cpp
HDRS
../sqrt.h
COMPILE_OPTIONS
-O2
)
add_math_entrypoint_gpu_object(
sqrtf
SRCS
sqrtf.cpp
HDRS
../sqrtf.h
COMPILE_OPTIONS
-O2
)
add_math_entrypoint_gpu_object(
tan
SRCS
tan.cpp
HDRS
../tan.h
COMPILE_OPTIONS
-O2
)
add_math_entrypoint_gpu_object(
tanh
SRCS
tanh.cpp
HDRS
../tanh.h
COMPILE_OPTIONS
-O2
)
add_math_entrypoint_gpu_object(
trunc
SRCS
trunc.cpp
HDRS
../trunc.h
COMPILE_OPTIONS
-O2
)
add_math_entrypoint_gpu_object(
truncf
SRCS
truncf.cpp
HDRS
../truncf.h
COMPILE_OPTIONS
-O2
)