[libclc] a372eca - libclc: Improve minmag and maxmag (#186092)
via cfe-commits
cfe-commits at lists.llvm.org
Thu Mar 12 04:24:11 PDT 2026
Author: Matt Arsenault
Date: 2026-03-12T12:24:07+01:00
New Revision: a372eca60df1648bc53f58822de148ddffa04bb3
URL: https://github.com/llvm/llvm-project/commit/a372eca60df1648bc53f58822de148ddffa04bb3
DIFF: https://github.com/llvm/llvm-project/commit/a372eca60df1648bc53f58822de148ddffa04bb3.diff
LOG: libclc: Improve minmag and maxmag (#186092)
Gives slightly better codegen.
Added:
Modified:
libclc/clc/lib/generic/math/clc_maxmag.cl
libclc/clc/lib/generic/math/clc_maxmag.inc
libclc/clc/lib/generic/math/clc_minmag.cl
libclc/clc/lib/generic/math/clc_minmag.inc
Removed:
################################################################################
diff --git a/libclc/clc/lib/generic/math/clc_maxmag.cl b/libclc/clc/lib/generic/math/clc_maxmag.cl
index e34fd5613c3f2..fd457db0c5097 100644
--- a/libclc/clc/lib/generic/math/clc_maxmag.cl
+++ b/libclc/clc/lib/generic/math/clc_maxmag.cl
@@ -6,14 +6,8 @@
//
//===----------------------------------------------------------------------===//
-#include <clc/clc_convert.h>
-#include <clc/internal/clc.h>
-#include <clc/math/clc_fabs.h>
-#include <clc/math/clc_fmax.h>
-#include <clc/relational/clc_isequal.h>
-#include <clc/relational/clc_isgreater.h>
-#include <clc/relational/clc_isnan.h>
-#include <clc/relational/clc_select.h>
+#include "clc/math/clc_fabs.h"
+#include "clc/math/clc_fmax.h"
#define __CLC_BODY <clc_maxmag.inc>
#include <clc/math/gentype.inc>
diff --git a/libclc/clc/lib/generic/math/clc_maxmag.inc b/libclc/clc/lib/generic/math/clc_maxmag.inc
index 0c346eeac8ae2..f8520efbbea0f 100644
--- a/libclc/clc/lib/generic/math/clc_maxmag.inc
+++ b/libclc/clc/lib/generic/math/clc_maxmag.inc
@@ -8,11 +8,8 @@
_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE __clc_maxmag(__CLC_GENTYPE x,
__CLC_GENTYPE y) {
- const __CLC_GENTYPE res = __clc_select(
- y, x,
- __CLC_CONVERT_BIT_INTN(__clc_isgreater(__clc_fabs(x), __clc_fabs(y))));
- return __clc_select(
- res, __clc_fmax(x, y),
- __CLC_CONVERT_BIT_INTN(__clc_isnan(x) || __clc_isnan(y) ||
- __clc_isequal(__clc_fabs(x), __clc_fabs(y))));
+ __CLC_GENTYPE ax = __clc_fabs(x);
+ __CLC_GENTYPE ay = __clc_fabs(y);
+ __CLC_GENTYPE ret = ax > ay ? x : __clc_fmax(x, y);
+ return ay > ax ? y : ret;
}
diff --git a/libclc/clc/lib/generic/math/clc_minmag.cl b/libclc/clc/lib/generic/math/clc_minmag.cl
index 8529beb8d83f0..b0d7a92729299 100644
--- a/libclc/clc/lib/generic/math/clc_minmag.cl
+++ b/libclc/clc/lib/generic/math/clc_minmag.cl
@@ -6,14 +6,8 @@
//
//===----------------------------------------------------------------------===//
-#include <clc/clc_convert.h>
-#include <clc/internal/clc.h>
-#include <clc/math/clc_fabs.h>
-#include <clc/math/clc_fmin.h>
-#include <clc/relational/clc_isequal.h>
-#include <clc/relational/clc_isless.h>
-#include <clc/relational/clc_isnan.h>
-#include <clc/relational/clc_select.h>
+#include "clc/math/clc_fabs.h"
+#include "clc/math/clc_fmin.h"
#define __CLC_BODY <clc_minmag.inc>
#include <clc/math/gentype.inc>
diff --git a/libclc/clc/lib/generic/math/clc_minmag.inc b/libclc/clc/lib/generic/math/clc_minmag.inc
index 2b9236fedfeb2..9419d5cdd2e51 100644
--- a/libclc/clc/lib/generic/math/clc_minmag.inc
+++ b/libclc/clc/lib/generic/math/clc_minmag.inc
@@ -8,10 +8,8 @@
_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE __clc_minmag(__CLC_GENTYPE x,
__CLC_GENTYPE y) {
- const __CLC_GENTYPE res = __clc_select(
- y, x, __CLC_CONVERT_BIT_INTN(__clc_isless(__clc_fabs(x), __clc_fabs(y))));
- return __clc_select(
- res, __clc_fmin(x, y),
- __CLC_CONVERT_BIT_INTN(__clc_isnan(x) || __clc_isnan(y) ||
- __clc_isequal(__clc_fabs(x), __clc_fabs(y))));
+ __CLC_GENTYPE ax = __clc_fabs(x);
+ __CLC_GENTYPE ay = __clc_fabs(y);
+ __CLC_GENTYPE ret = ax < ay ? x : __clc_fmin(x, y);
+ return ay < ax ? y : ret;
}
More information about the cfe-commits
mailing list