[AArch64] Fold max and min reduction builtins to tree.
authorJames Greenhalgh <james.greenhalgh@arm.com>
Wed, 1 May 2013 15:18:18 +0000 (15:18 +0000)
committerJames Greenhalgh <jgreenhalgh@gcc.gnu.org>
Wed, 1 May 2013 15:18:18 +0000 (15:18 +0000)
gcc/
* config/aarch64/aarch64-builtins
(aarch64_gimple_fold_builtin): Fold reduc_<su><maxmin>_ builtins.

From-SVN: r198498

gcc/ChangeLog
gcc/config/aarch64/aarch64-builtins.c

index ea469b8a33e05373235484ac33c7c91bcb11e371..0b07091d0c66f6a2230059ea93307e7a19b29452 100644 (file)
@@ -1,3 +1,8 @@
+2013-05-01  James Greenhalgh  <james.greenhalgh@arm.com>
+
+       * config/aarch64/aarch64-builtins
+       (aarch64_gimple_fold_builtin): Fold reduc_<su><maxmin>_ builtins.
+
 2013-05-01  James Greenhalgh  <james.greenhalgh@arm.com>
 
        * config/aarch64/aarch64-simd-builtins.def
index 3016f256869a232ef4fcb18f8d55e49c569b692b..8eb32c65d353133fac44209b9b46cd7ff35b966f 100644 (file)
@@ -1372,6 +1372,21 @@ aarch64_gimple_fold_builtin (gimple_stmt_iterator *gsi)
                                                args[0],
                                                NULL_TREE);
                break;
+             BUILTIN_VDQIF (UNOP, reduc_smax_, 10)
+               new_stmt = gimple_build_assign_with_ops (
+                                               REDUC_MAX_EXPR,
+                                               gimple_call_lhs (stmt),
+                                               args[0],
+                                               NULL_TREE);
+               break;
+             BUILTIN_VDQIF (UNOP, reduc_smin_, 10)
+               new_stmt = gimple_build_assign_with_ops (
+                                               REDUC_MIN_EXPR,
+                                               gimple_call_lhs (stmt),
+                                               args[0],
+                                               NULL_TREE);
+               break;
+
            default:
              break;
            }