public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH] MATCH: add abs support for half float
@ 2024-07-14  8:11 Kugan Vivekanandarajah
  2024-07-14 19:30 ` Andrew Pinski
  0 siblings, 1 reply; 35+ messages in thread
From: Kugan Vivekanandarajah @ 2024-07-14  8:11 UTC (permalink / raw)
  To: gcc-patches; +Cc: richard.guenther

[-- Attachment #1: Type: text/plain, Size: 392 bytes --]

This patch extends abs detection in matched for half float.

Bootstrapped and regression test on aarch64-linux-gnu. Is this OK for trunk?

gcc/ChangeLog:

* match.pd: Add pattern to convert (type)A >=/> 0 ? A : -A into abs (A) for half float.

gcc/testsuite/ChangeLog:

* gcc.dg/tree-ssa/absfloat16.c: New test.

Signed-off-by: Kugan Vivekanandarajah <kvivekananda@nvidia.com>


[-- Attachment #2: 0001-abs-for-half-float.patch --]
[-- Type: application/octet-stream, Size: 1647 bytes --]

From e9e7578e81c8a14131e39c8f36b5a74fd535a654 Mon Sep 17 00:00:00 2001
From: Kugan <kvivekanada@nvidia.com>
Date: Tue, 9 Jul 2024 09:04:26 +0530
Subject: [PATCH] abs for half float

---
 gcc/match.pd                               | 12 ++++++++++++
 gcc/testsuite/gcc.dg/tree-ssa/absfloat16.c | 12 ++++++++++++
 2 files changed, 24 insertions(+)
 create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/absfloat16.c

diff --git a/gcc/match.pd b/gcc/match.pd
index 5cfe81e80b3..83d86581f2a 100644
--- a/gcc/match.pd
+++ b/gcc/match.pd
@@ -6121,6 +6121,18 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
        (negate (abs @0)))))
  )
 
+ /* (type)A >=/> 0 ? A : -A    same as abs (A) */
+ (for cmp (ge gt)
+  (simplify
+   (cnd (cmp (convert?@0 @1) zerop) @2 (negate @2))
+    (if (!HONOR_SIGNED_ZEROS (TREE_TYPE(@1))
+         && (TYPE_PRECISION (TREE_TYPE(@1))
+            <= TYPE_PRECISION (TREE_TYPE(@0)))
+        && bitwise_equal_p (@1, @2))
+     (if (TYPE_UNSIGNED (type))
+      (absu:type @1)
+      (abs @1)))))
+
  /* (A - B) == 0 ? (A - B) : (B - A)    same as (B - A) */
  (for cmp (eq uneq)
   (simplify
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/absfloat16.c b/gcc/testsuite/gcc.dg/tree-ssa/absfloat16.c
new file mode 100644
index 00000000000..ee8b1db9225
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/absfloat16.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-options "-Ofast -fdump-tree-optimized" } */
+/* { dg-final { scan-tree-dump-times " = ABS_EXPR <x_\[0-9]*\\\(D\\\)>;" 1 "optimized" } } */
+
+_Float16  absfloat16(_Float16 x) {
+    if (x < 0.0f) {
+        return -x;
+    } else {
+        return x;
+    }
+}
+
-- 
2.43.2


^ permalink raw reply	[flat|nested] 35+ messages in thread

end of thread, other threads:[~2024-09-25 13:08 UTC | newest]

Thread overview: 35+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-07-14  8:11 [PATCH] MATCH: add abs support for half float Kugan Vivekanandarajah
2024-07-14 19:30 ` Andrew Pinski
2024-07-23  0:26   ` Kugan Vivekanandarajah
2024-07-23  0:34     ` Andrew Pinski
2024-07-23  8:27       ` Kugan Vivekanandarajah
2024-07-23 13:56         ` Richard Biener
2024-07-25  2:41           ` Kugan Vivekanandarajah
2024-07-25 12:18             ` Richard Biener
2024-07-29  7:57               ` Kugan Vivekanandarajah
2024-07-29  8:11                 ` Andrew Pinski
2024-07-29  8:47                   ` Richard Biener
2024-08-01  3:31                     ` Kugan Vivekanandarajah
2024-08-01 12:46                       ` Richard Biener
2024-08-02  9:20                         ` Kugan Vivekanandarajah
2024-08-02 10:36                           ` Richard Biener
2024-08-09  0:39                             ` Kugan Vivekanandarajah
2024-08-20  8:09                               ` Richard Biener
2024-08-21 10:08                                 ` Kugan Vivekanandarajah
2024-08-22 12:34                                   ` Richard Biener
2024-08-27  6:23                                     ` Kugan Vivekanandarajah
2024-08-27  9:05                                       ` Richard Biener
2024-08-28  3:54                                         ` Kugan Vivekanandarajah
2024-08-28  4:23                                           ` Andrew Pinski
2024-09-01 23:27                                             ` Kugan Vivekanandarajah
2024-09-01 23:47                                               ` Andrew Pinski
2024-09-05  1:19                                                 ` Kugan Vivekanandarajah
2024-09-10 11:33                                                   ` Richard Biener
2024-09-17  8:31                                                     ` Kugan Vivekanandarajah
2024-09-17  9:36                                                       ` Richard Biener
2024-09-20  8:23                                                         ` Kugan Vivekanandarajah
2024-09-20 10:11                                                           ` Richard Biener
2024-09-23  8:52                                                             ` Kugan Vivekanandarajah
2024-09-24  8:16                                                               ` Richard Biener
2024-09-25 10:12                                                                 ` Kugan Vivekanandarajah
2024-09-25 13:07                                                                   ` Richard Biener

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).