Author: Matt Arsenault Date: 2026-03-11T09:56:49+01:00 New Revision: d780072691899a39f692a5324c279aa4fc338a22
URL: https://github.com/llvm/llvm-project/commit/d780072691899a39f692a5324c279aa4fc338a22 DIFF: https://github.com/llvm/llvm-project/commit/d780072691899a39f692a5324c279aa4fc338a22.diff LOG: libclc: Add fast version utility functions for div, sqrt and reciprocal (#185823) Added: libclc/clc/include/clc/math/clc_div_fast.h libclc/clc/include/clc/math/clc_recip_fast.h libclc/clc/include/clc/math/clc_sqrt_fast.h libclc/clc/lib/generic/math/clc_div_fast.cl libclc/clc/lib/generic/math/clc_div_fast.inc libclc/clc/lib/generic/math/clc_recip_fast.cl libclc/clc/lib/generic/math/clc_recip_fast.inc libclc/clc/lib/generic/math/clc_sqrt_fast.cl Modified: libclc/clc/lib/generic/CMakeLists.txt Removed: ################################################################################ diff --git a/libclc/clc/include/clc/math/clc_div_fast.h b/libclc/clc/include/clc/math/clc_div_fast.h new file mode 100644 index 0000000000000..357bac4adc3d9 --- /dev/null +++ b/libclc/clc/include/clc/math/clc_div_fast.h @@ -0,0 +1,19 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef __CLC_MATH_CLC_DIV_FAST_H__ +#define __CLC_MATH_CLC_DIV_FAST_H__ + +#define __CLC_FUNCTION __clc_div_fast +#define __CLC_BODY <clc/shared/binary_decl.inc> + +#include <clc/math/gentype.inc> + +#undef __CLC_FUNCTION + +#endif // __CLC_MATH_CLC_DIV_FAST_H__ diff --git a/libclc/clc/include/clc/math/clc_recip_fast.h b/libclc/clc/include/clc/math/clc_recip_fast.h new file mode 100644 index 0000000000000..82890d606249a --- /dev/null +++ b/libclc/clc/include/clc/math/clc_recip_fast.h @@ -0,0 +1,19 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef __CLC_MATH_CLC_RECIP_FAST_H__ +#define __CLC_MATH_CLC_RECIP_FAST_H__ + +#define __CLC_FUNCTION __clc_recip_fast +#define __CLC_BODY <clc/shared/unary_decl.inc> + +#include <clc/math/gentype.inc> + +#undef __CLC_FUNCTION + +#endif // __CLC_MATH_CLC_RECIP_FAST_H__ diff --git a/libclc/clc/include/clc/math/clc_sqrt_fast.h b/libclc/clc/include/clc/math/clc_sqrt_fast.h new file mode 100644 index 0000000000000..3d0f501979320 --- /dev/null +++ b/libclc/clc/include/clc/math/clc_sqrt_fast.h @@ -0,0 +1,19 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef __CLC_MATH_CLC_SQRT_FAST_H__ +#define __CLC_MATH_CLC_SQRT_FAST_H__ + +#define __CLC_FUNCTION __clc_sqrt_fast +#define __CLC_BODY <clc/shared/unary_decl.inc> + +#include <clc/math/gentype.inc> + +#undef __CLC_FUNCTION + +#endif // __CLC_MATH_CLC_SQRT_FAST_H__ diff --git a/libclc/clc/lib/generic/CMakeLists.txt b/libclc/clc/lib/generic/CMakeLists.txt index e2a551a03dca8..7d7286de11f85 100644 --- a/libclc/clc/lib/generic/CMakeLists.txt +++ b/libclc/clc/lib/generic/CMakeLists.txt @@ -73,6 +73,7 @@ libclc_configure_source_list(CLC_GENERIC_SOURCES math/clc_cosh.cl math/clc_cospi.cl math/clc_div_cr.cl + math/clc_div_fast.cl math/clc_ep_log.cl math/clc_erf.cl math/clc_erfc.cl @@ -137,6 +138,7 @@ libclc_configure_source_list(CLC_GENERIC_SOURCES math/clc_pow.cl math/clc_pown.cl math/clc_powr.cl + math/clc_recip_fast.cl math/clc_remainder.cl math/clc_remquo.cl math/clc_rint.cl @@ -150,6 +152,7 @@ libclc_configure_source_list(CLC_GENERIC_SOURCES math/clc_sinpi.cl math/clc_sqrt.cl math/clc_sqrt_cr.cl + math/clc_sqrt_fast.cl math/clc_tables.cl math/clc_tan.cl math/clc_tanh.cl @@ -207,7 +210,9 @@ libclc_configure_source_options(${CMAKE_CURRENT_SOURCE_DIR} -fapprox-func math/clc_native_sin.cl math/clc_native_sqrt.cl math/clc_native_tan.cl -) + math/clc_div_fast.cl + math/clc_recip_fast.cl + math/clc_sqrt_fast.cl) libclc_configure_source_options(${CMAKE_CURRENT_SOURCE_DIR} -cl-fp32-correctly-rounded-divide-sqrt math/clc_div_cr.cl diff --git a/libclc/clc/lib/generic/math/clc_div_fast.cl b/libclc/clc/lib/generic/math/clc_div_fast.cl new file mode 100644 index 0000000000000..b5c477cfcb7c3 --- /dev/null +++ b/libclc/clc/lib/generic/math/clc_div_fast.cl @@ -0,0 +1,13 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include "clc/math/clc_div_fast.h" + +#define __CLC_FUNCTION __clc_div_fast +#define __CLC_BODY <clc_div_fast.inc> +#include <clc/math/gentype.inc> diff --git a/libclc/clc/lib/generic/math/clc_div_fast.inc b/libclc/clc/lib/generic/math/clc_div_fast.inc new file mode 100644 index 0000000000000..c44fea15a0b20 --- /dev/null +++ b/libclc/clc/lib/generic/math/clc_div_fast.inc @@ -0,0 +1,12 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE __clc_div_fast(__CLC_GENTYPE x, + __CLC_GENTYPE y) { + return x / y; +} diff --git a/libclc/clc/lib/generic/math/clc_recip_fast.cl b/libclc/clc/lib/generic/math/clc_recip_fast.cl new file mode 100644 index 0000000000000..779acf8078881 --- /dev/null +++ b/libclc/clc/lib/generic/math/clc_recip_fast.cl @@ -0,0 +1,14 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include <clc/internal/clc.h> + +#define __CLC_FUNCTION __clc_recip_fast +#define __CLC_BODY <clc_recip_fast.inc> + +#include <clc/math/gentype.inc> diff --git a/libclc/clc/lib/generic/math/clc_recip_fast.inc b/libclc/clc/lib/generic/math/clc_recip_fast.inc new file mode 100644 index 0000000000000..dfe0f7dadd323 --- /dev/null +++ b/libclc/clc/lib/generic/math/clc_recip_fast.inc @@ -0,0 +1,11 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE __clc_recip_fast(__CLC_GENTYPE x) { + return ((__CLC_GENTYPE)1.0) / x; +} diff --git a/libclc/clc/lib/generic/math/clc_sqrt_fast.cl b/libclc/clc/lib/generic/math/clc_sqrt_fast.cl new file mode 100644 index 0000000000000..89a478ac80908 --- /dev/null +++ b/libclc/clc/lib/generic/math/clc_sqrt_fast.cl @@ -0,0 +1,15 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include <clc/internal/clc.h> + +#define __CLC_FUNCTION __clc_sqrt_fast +#define __CLC_IMPL_FUNCTION(x) __builtin_elementwise_sqrt +#define __CLC_BODY <clc/shared/unary_def.inc> + +#include <clc/math/gentype.inc> _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
