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;
 }


        
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to