https://github.com/wenju-he created https://github.com/llvm/llvm-project/pull/149269
The pragma adds `arcp` flag to `fdiv` instruction in these functions. The flag can provide better performance. >From 9ac644cb8ed43ac28e0ee715f0a0e6bed4df470a Mon Sep 17 00:00:00 2001 From: Wenju He <wenju...@intel.com> Date: Thu, 17 Jul 2025 10:02:20 +0200 Subject: [PATCH] [libclc] Enable `clang fp reciprocal` in clc_native_divide/recip/rsqrt/tan The pragma adds `arcp` flag to `fdiv` instruction in these functions. The flag can provide better performance. --- libclc/clc/lib/generic/math/clc_native_divide.inc | 1 + libclc/clc/lib/generic/math/clc_native_recip.inc | 1 + libclc/clc/lib/generic/math/clc_native_rsqrt.inc | 1 + libclc/clc/lib/generic/math/clc_native_tan.inc | 1 + 4 files changed, 4 insertions(+) diff --git a/libclc/clc/lib/generic/math/clc_native_divide.inc b/libclc/clc/lib/generic/math/clc_native_divide.inc index fdf1794812c5a..684b521802043 100644 --- a/libclc/clc/lib/generic/math/clc_native_divide.inc +++ b/libclc/clc/lib/generic/math/clc_native_divide.inc @@ -8,5 +8,6 @@ _CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE __clc_native_divide(__CLC_GENTYPE x, __CLC_GENTYPE y) { +#pragma clang fp reciprocal(on) return x / y; } diff --git a/libclc/clc/lib/generic/math/clc_native_recip.inc b/libclc/clc/lib/generic/math/clc_native_recip.inc index 57eb35a9522f8..ff8d0b81c8b20 100644 --- a/libclc/clc/lib/generic/math/clc_native_recip.inc +++ b/libclc/clc/lib/generic/math/clc_native_recip.inc @@ -7,5 +7,6 @@ //===----------------------------------------------------------------------===// _CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE __clc_native_recip(__CLC_GENTYPE val) { +#pragma clang fp reciprocal(on) return 1.0f / val; } diff --git a/libclc/clc/lib/generic/math/clc_native_rsqrt.inc b/libclc/clc/lib/generic/math/clc_native_rsqrt.inc index 7a3b0b2af2721..ecf5898165c63 100644 --- a/libclc/clc/lib/generic/math/clc_native_rsqrt.inc +++ b/libclc/clc/lib/generic/math/clc_native_rsqrt.inc @@ -7,5 +7,6 @@ //===----------------------------------------------------------------------===// _CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE __clc_native_rsqrt(__CLC_GENTYPE val) { +#pragma clang fp reciprocal(on) return 1.0f / __clc_native_sqrt(val); } diff --git a/libclc/clc/lib/generic/math/clc_native_tan.inc b/libclc/clc/lib/generic/math/clc_native_tan.inc index f61a78968a754..30ea5bfc35c95 100644 --- a/libclc/clc/lib/generic/math/clc_native_tan.inc +++ b/libclc/clc/lib/generic/math/clc_native_tan.inc @@ -7,5 +7,6 @@ //===----------------------------------------------------------------------===// _CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE __clc_native_tan(__CLC_GENTYPE val) { +#pragma clang fp reciprocal(on) return __clc_native_sin(val) / __clc_native_cos(val); } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits