]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Revert "Match: Simplify branch form 3 of unsigned SAT_ADD into branchless"
authorPan Li <pan2.li@intel.com>
Tue, 12 Nov 2024 23:30:19 +0000 (07:30 +0800)
committerPan Li <pan2.li@intel.com>
Tue, 12 Nov 2024 23:30:19 +0000 (07:30 +0800)
This reverts commit df4af89bc3eabbeaccb16539aa1082cb9863e187.

gcc/match.pd
gcc/testsuite/gcc.dg/tree-ssa/sat_u_add-simplify-1-u16.c [deleted file]
gcc/testsuite/gcc.dg/tree-ssa/sat_u_add-simplify-1-u32.c [deleted file]
gcc/testsuite/gcc.dg/tree-ssa/sat_u_add-simplify-1-u64.c [deleted file]
gcc/testsuite/gcc.dg/tree-ssa/sat_u_add-simplify-1-u8.c [deleted file]

index fc33b9ac3b1b33d5f488f57b49c6cf90f6a530a4..9d86d0fe395a26599a2aae0a2f8fa721a32f4c10 100644 (file)
@@ -3146,13 +3146,10 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
 (match (unsigned_integer_sat_add @0 @1)
  (bit_ior:c (usadd_left_part_2 @0 @1) (usadd_right_part_2 @0 @1)))
 
-/* Simplify SAT_U_ADD to the cheap form
-   From: SAT_U_ADD = (X + Y) >= x ? (X + Y) : -1.
-   To:   SAT_U_ADD = (X + Y) | - ((X + Y) < X).  */
-(simplify (cond (ge (plus:c@2 @0 @1) @0) @2 integer_minus_onep)
- (if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
-      && types_match (type, @0, @1))
-  (bit_ior @2 (negate (convert (lt @2 @0))))))
+/* Unsigned saturation add, case 3 (branch with ge):
+   SAT_U_ADD = (X + Y) >= x ? (X + Y) : -1.  */
+(match (unsigned_integer_sat_add @0 @1)
+ (cond^ (ge (usadd_left_part_1@2 @0 @1) @0) @2 integer_minus_onep))
 
 /* Unsigned saturation add, case 4 (branch with lt):
    SAT_U_ADD = (X + Y) < x ? -1 : (X + Y).  */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/sat_u_add-simplify-1-u16.c b/gcc/testsuite/gcc.dg/tree-ssa/sat_u_add-simplify-1-u16.c
deleted file mode 100644 (file)
index 7617fba..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-gimple-details" } */
-
-#include <stdint.h>
-
-#define T uint16_t
-
-T sat_add_u_1 (T x, T y)
-{
-  return (T)(x + y) >= x ? (x + y) : -1;
-}
-
-/* { dg-final { scan-tree-dump-not " if " "gimple" } } */
-/* { dg-final { scan-tree-dump-not " else " "gimple" } } */
-/* { dg-final { scan-tree-dump-not " goto " "gimple" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/sat_u_add-simplify-1-u32.c b/gcc/testsuite/gcc.dg/tree-ssa/sat_u_add-simplify-1-u32.c
deleted file mode 100644 (file)
index efea85b..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-gimple-details" } */
-
-#include <stdint.h>
-
-#define T uint32_t
-
-T sat_add_u_1 (T x, T y)
-{
-  return (T)(x + y) >= x ? (x + y) : -1;
-}
-
-/* { dg-final { scan-tree-dump-not " if " "gimple" } } */
-/* { dg-final { scan-tree-dump-not " else " "gimple" } } */
-/* { dg-final { scan-tree-dump-not " goto " "gimple" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/sat_u_add-simplify-1-u64.c b/gcc/testsuite/gcc.dg/tree-ssa/sat_u_add-simplify-1-u64.c
deleted file mode 100644 (file)
index b7b55d7..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-gimple-details" } */
-
-#include <stdint.h>
-
-#define T uint64_t
-
-T sat_add_u_1 (T x, T y)
-{
-  return (T)(x + y) >= x ? (x + y) : -1;
-}
-
-/* { dg-final { scan-tree-dump-not " if " "gimple" } } */
-/* { dg-final { scan-tree-dump-not " else " "gimple" } } */
-/* { dg-final { scan-tree-dump-not " goto " "gimple" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/sat_u_add-simplify-1-u8.c b/gcc/testsuite/gcc.dg/tree-ssa/sat_u_add-simplify-1-u8.c
deleted file mode 100644 (file)
index 77e9af3..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-/* { dg-do compile } */
-/* { dg-options "-O2 -fdump-tree-gimple-details" } */
-
-#include <stdint.h>
-
-#define T uint8_t
-
-T sat_add_u_1 (T x, T y)
-{
-  return (T)(x + y) >= x ? (x + y) : -1;
-}
-
-/* { dg-final { scan-tree-dump-not " if " "gimple" } } */
-/* { dg-final { scan-tree-dump-not " else " "gimple" } } */
-/* { dg-final { scan-tree-dump-not " goto " "gimple" } } */