aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJames Greenhalgh <james.greenhalgh@arm.com>2013-05-01 15:18:18 +0000
committerJames Greenhalgh <jgreenhalgh@gcc.gnu.org>2013-05-01 15:18:18 +0000
commit1598945b00376f5b61959f34fad3a9ac29633272 (patch)
treee0597e0e6d1e3c8d58aeb010ae5a1dfd54006ecc /gcc
parent998eaf975b729d18892843568bffa4dae1d80938 (diff)
downloadgcc-1598945b00376f5b61959f34fad3a9ac29633272.zip
gcc-1598945b00376f5b61959f34fad3a9ac29633272.tar.gz
gcc-1598945b00376f5b61959f34fad3a9ac29633272.tar.bz2
[AArch64] Fold max and min reduction builtins to tree.
gcc/ * config/aarch64/aarch64-builtins (aarch64_gimple_fold_builtin): Fold reduc_<su><maxmin>_ builtins. From-SVN: r198498
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/aarch64/aarch64-builtins.c15
2 files changed, 20 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ea469b8..0b07091 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
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
(reduc_smax_): New.
(reduc_smin_): Likewise.
diff --git a/gcc/config/aarch64/aarch64-builtins.c b/gcc/config/aarch64/aarch64-builtins.c
index 3016f25..8eb32c6 100644
--- a/gcc/config/aarch64/aarch64-builtins.c
+++ b/gcc/config/aarch64/aarch64-builtins.c
@@ -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;
}