[libclc] [libclc] Move logb/ilogb to CLC library; optimize (PR #128028)

Fraser Cormack via cfe-commits cfe-commits at lists.llvm.org
Tue Feb 25 02:57:53 PST 2025


================
@@ -0,0 +1,73 @@
+#if __CLC_FPSIZE == 32
+
+_CLC_OVERLOAD _CLC_DEF __CLC_INTN __clc_ilogb(__CLC_GENTYPE x) {
+  __CLC_UINTN ux = __CLC_AS_UINTN(x);
----------------
frasercrmck wrote:

Yeah, I'm not sure using `frexp` is currently better given that there's no native path for it. We talked about allowing that in [the frexp PR](https://github.com/llvm/llvm-project/pull/127836#pullrequestreview-2628596638).

But yeah even in that case, if we use the builtin/intrinsic for `frexp` it's not necessarily the case that it's faster than this implementation for `ilogb`. So I think the logb/ilogb-specific utility function would be the way to go.

I don't think we've got canonical examples of target-specific code paths for utility functions in libclc. We could do it with the `SOURCES` system, or [preprocessor defines](https://github.com/llvm/llvm-project/blob/main/libclc/clc/include/clc/math/math.h#L41-L48) or some other system. I'm not yet sure.

https://github.com/llvm/llvm-project/pull/128028


More information about the cfe-commits mailing list