[libclc] [libclc] Implement integer __clc_abs using __builtin_elementwise_abs (PR #164957)
Wenju He via cfe-commits
cfe-commits at lists.llvm.org
Fri Oct 24 04:12:17 PDT 2025
https://github.com/wenju-he updated https://github.com/llvm/llvm-project/pull/164957
>From 39fa5d234da4c1bdab76770a76636193ab25fbf6 Mon Sep 17 00:00:00 2001
From: Wenju He <wenju.he at intel.com>
Date: Fri, 24 Oct 2025 13:05:01 +0200
Subject: [PATCH 1/2] [libclc] Simplify integer __clc_abs implementation
Previous implementation was cmp, select and @llvm.smax sequence in LLVM IR.
---
libclc/clc/lib/generic/integer/clc_abs.inc | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/libclc/clc/lib/generic/integer/clc_abs.inc b/libclc/clc/lib/generic/integer/clc_abs.inc
index 26ec0b24ffb96..222b14fbe7b28 100644
--- a/libclc/clc/lib/generic/integer/clc_abs.inc
+++ b/libclc/clc/lib/generic/integer/clc_abs.inc
@@ -6,7 +6,16 @@
//
//===----------------------------------------------------------------------===//
+#ifdef __CLC_GEN_S
+
+_CLC_OVERLOAD _CLC_DEF __CLC_U_GENTYPE __clc_abs(__CLC_GENTYPE x) {
+ return __builtin_astype(__builtin_elementwise_abs(x), __CLC_U_GENTYPE);
+}
+
+#else
+
_CLC_OVERLOAD _CLC_DEF __CLC_U_GENTYPE __clc_abs(__CLC_GENTYPE x) {
- return __builtin_astype((__CLC_GENTYPE)(x > (__CLC_GENTYPE)(0) ? x : -x),
- __CLC_U_GENTYPE);
+ return x;
}
+
+#endif
>From 205433c8fe10c1cec1ee7b0872398785979af894 Mon Sep 17 00:00:00 2001
From: Wenju He <wenju.he at intel.com>
Date: Fri, 24 Oct 2025 13:12:06 +0200
Subject: [PATCH 2/2] clang-format
---
libclc/clc/lib/generic/integer/clc_abs.inc | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/libclc/clc/lib/generic/integer/clc_abs.inc b/libclc/clc/lib/generic/integer/clc_abs.inc
index 222b14fbe7b28..81e92461bab9e 100644
--- a/libclc/clc/lib/generic/integer/clc_abs.inc
+++ b/libclc/clc/lib/generic/integer/clc_abs.inc
@@ -14,8 +14,6 @@ _CLC_OVERLOAD _CLC_DEF __CLC_U_GENTYPE __clc_abs(__CLC_GENTYPE x) {
#else
-_CLC_OVERLOAD _CLC_DEF __CLC_U_GENTYPE __clc_abs(__CLC_GENTYPE x) {
- return x;
-}
+_CLC_OVERLOAD _CLC_DEF __CLC_U_GENTYPE __clc_abs(__CLC_GENTYPE x) { return x; }
#endif
More information about the cfe-commits
mailing list