aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Greenhalgh <james.greenhalgh@arm.com>2013-04-29 11:02:15 +0000
committerJames Greenhalgh <jgreenhalgh@gcc.gnu.org>2013-04-29 11:02:15 +0000
commit0386b123a240b8dbdbdd7243d533c33a8a47a82f (patch)
tree813d148b51581709d4ff07555fc46189236f9e01
parent00fcb892ccf023d378e45b71b93b62c8e5399b60 (diff)
downloadgcc-0386b123a240b8dbdbdd7243d533c33a8a47a82f.zip
gcc-0386b123a240b8dbdbdd7243d533c33a8a47a82f.tar.gz
gcc-0386b123a240b8dbdbdd7243d533c33a8a47a82f.tar.bz2
[AArch64] Vectorize over more math.h functions.
gcc/ * config/aarch64/aarch64-builtins.c (aarch64_builtin_vectorized_function): Vectorize over ifloorf, iceilf, lround, iroundf. From-SVN: r198402
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/aarch64/aarch64-builtins.c18
2 files changed, 24 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2ee4a0c..bef76a8 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2013-04-29 James Greenhalgh <james.greenhalgh@arm.com>
+
+ * config/aarch64/aarch64-builtins.c
+ (aarch64_builtin_vectorized_function): Vectorize over ifloorf,
+ iceilf, lround, iroundf.
+
2013-04-29 Uros Bizjak <ubizjak@gmail.com>
PR target/54349
diff --git a/gcc/config/aarch64/aarch64-builtins.c b/gcc/config/aarch64/aarch64-builtins.c
index d2e5136..53d2c6a 100644
--- a/gcc/config/aarch64/aarch64-builtins.c
+++ b/gcc/config/aarch64/aarch64-builtins.c
@@ -1245,6 +1245,7 @@ aarch64_builtin_vectorized_function (tree fndecl, tree type_out, tree type_in)
(out_mode == N##Imode && out_n == C \
&& in_mode == N##Fmode && in_n == C)
case BUILT_IN_LFLOOR:
+ case BUILT_IN_IFLOORF:
{
tree new_tree = NULL_TREE;
if (AARCH64_CHECK_BUILTIN_MODE (2, D))
@@ -1259,6 +1260,7 @@ aarch64_builtin_vectorized_function (tree fndecl, tree type_out, tree type_in)
return new_tree;
}
case BUILT_IN_LCEIL:
+ case BUILT_IN_ICEILF:
{
tree new_tree = NULL_TREE;
if (AARCH64_CHECK_BUILTIN_MODE (2, D))
@@ -1272,6 +1274,22 @@ aarch64_builtin_vectorized_function (tree fndecl, tree type_out, tree type_in)
aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_lceilv2sfv2si];
return new_tree;
}
+ case BUILT_IN_LROUND:
+ case BUILT_IN_IROUNDF:
+ {
+ tree new_tree = NULL_TREE;
+ if (AARCH64_CHECK_BUILTIN_MODE (2, D))
+ new_tree =
+ aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_lroundv2dfv2di];
+ else if (AARCH64_CHECK_BUILTIN_MODE (4, S))
+ new_tree =
+ aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_lroundv4sfv4si];
+ else if (AARCH64_CHECK_BUILTIN_MODE (2, S))
+ new_tree =
+ aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_lroundv2sfv2si];
+ return new_tree;
+ }
+
default:
return NULL_TREE;
}