aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJames Greenhalgh <james.greenhalgh@arm.com>2013-11-26 09:59:10 +0000
committerJames Greenhalgh <jgreenhalgh@gcc.gnu.org>2013-11-26 09:59:10 +0000
commite993fea1ac45e88f113a598956224527bcb41753 (patch)
tree513fa4aa69483de9f770507ecee6f352c7f310e4 /gcc
parente8e9e1cda43a2b56618172896acb62103cd6bab8 (diff)
downloadgcc-e993fea1ac45e88f113a598956224527bcb41753.zip
gcc-e993fea1ac45e88f113a598956224527bcb41753.tar.gz
gcc-e993fea1ac45e88f113a598956224527bcb41753.tar.bz2
[AArch64] [1/4 Fix vtbx1] Allow signed and unsigned versions of intrinsics
to coexist. gcc/ * config/aarch64/aarch64-builtins.c (VAR1): Use new naming scheme for aarch64_builtins. (aarch64_builtin_vectorized_function): Use new aarch64_builtins names. From-SVN: r205383
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/aarch64/aarch64-builtins.c60
2 files changed, 37 insertions, 30 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9a820b5..30f8513 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2013-11-26 James Greenhalgh <james.greenhalgh@arm.com>
+
+ * config/aarch64/aarch64-builtins.c
+ (VAR1): Use new naming scheme for aarch64_builtins.
+ (aarch64_builtin_vectorized_function): Use new
+ aarch64_builtins names.
+
2013-11-26 Richard Biener <rguenther@suse.de>
PR tree-optimization/59287
diff --git a/gcc/config/aarch64/aarch64-builtins.c b/gcc/config/aarch64/aarch64-builtins.c
index f4d23e7..d804dc9 100644
--- a/gcc/config/aarch64/aarch64-builtins.c
+++ b/gcc/config/aarch64/aarch64-builtins.c
@@ -320,7 +320,7 @@ static aarch64_simd_builtin_datum aarch64_simd_builtin_data[] = {
#undef VAR1
#define VAR1(T, N, MAP, A) \
- AARCH64_SIMD_BUILTIN_##N##A,
+ AARCH64_SIMD_BUILTIN_##T##_##N##A,
enum aarch64_builtins
{
@@ -897,11 +897,11 @@ aarch64_builtin_vectorized_function (tree fndecl, tree type_out, tree type_in)
#define AARCH64_CHECK_BUILTIN_MODE(C, N) 1
#define AARCH64_FIND_FRINT_VARIANT(N) \
(AARCH64_CHECK_BUILTIN_MODE (2, D) \
- ? aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_##N##v2df] \
+ ? aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_UNOP_##N##v2df] \
: (AARCH64_CHECK_BUILTIN_MODE (4, S) \
- ? aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_##N##v4sf] \
+ ? aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_UNOP_##N##v4sf] \
: (AARCH64_CHECK_BUILTIN_MODE (2, S) \
- ? aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_##N##v2sf] \
+ ? aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_UNOP_##N##v2sf] \
: NULL_TREE)))
if (DECL_BUILT_IN_CLASS (fndecl) == BUILT_IN_NORMAL)
{
@@ -937,7 +937,7 @@ aarch64_builtin_vectorized_function (tree fndecl, tree type_out, tree type_in)
case BUILT_IN_CLZ:
{
if (AARCH64_CHECK_BUILTIN_MODE (4, S))
- return aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_clzv4si];
+ return aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_UNOP_clzv4si];
return NULL_TREE;
}
#undef AARCH64_CHECK_BUILTIN_MODE
@@ -947,47 +947,47 @@ aarch64_builtin_vectorized_function (tree fndecl, tree type_out, tree type_in)
case BUILT_IN_LFLOOR:
case BUILT_IN_IFLOORF:
{
- tree new_tree = NULL_TREE;
+ enum aarch64_builtins builtin;
if (AARCH64_CHECK_BUILTIN_MODE (2, D))
- new_tree =
- aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_lfloorv2dfv2di];
+ builtin = AARCH64_SIMD_BUILTIN_UNOP_lfloorv2dfv2di;
else if (AARCH64_CHECK_BUILTIN_MODE (4, S))
- new_tree =
- aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_lfloorv4sfv4si];
+ builtin = AARCH64_SIMD_BUILTIN_UNOP_lfloorv4sfv4si;
else if (AARCH64_CHECK_BUILTIN_MODE (2, S))
- new_tree =
- aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_lfloorv2sfv2si];
- return new_tree;
+ builtin = AARCH64_SIMD_BUILTIN_UNOP_lfloorv2sfv2si;
+ else
+ return NULL_TREE;
+
+ return aarch64_builtin_decls[builtin];
}
case BUILT_IN_LCEIL:
case BUILT_IN_ICEILF:
{
- tree new_tree = NULL_TREE;
+ enum aarch64_builtins builtin;
if (AARCH64_CHECK_BUILTIN_MODE (2, D))
- new_tree =
- aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_lceilv2dfv2di];
+ builtin = AARCH64_SIMD_BUILTIN_UNOP_lceilv2dfv2di;
else if (AARCH64_CHECK_BUILTIN_MODE (4, S))
- new_tree =
- aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_lceilv4sfv4si];
+ builtin = AARCH64_SIMD_BUILTIN_UNOP_lceilv4sfv4si;
else if (AARCH64_CHECK_BUILTIN_MODE (2, S))
- new_tree =
- aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_lceilv2sfv2si];
- return new_tree;
+ builtin = AARCH64_SIMD_BUILTIN_UNOP_lceilv2sfv2si;
+ else
+ return NULL_TREE;
+
+ return aarch64_builtin_decls[builtin];
}
case BUILT_IN_LROUND:
case BUILT_IN_IROUNDF:
{
- tree new_tree = NULL_TREE;
+ enum aarch64_builtins builtin;
if (AARCH64_CHECK_BUILTIN_MODE (2, D))
- new_tree =
- aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_lroundv2dfv2di];
+ builtin = AARCH64_SIMD_BUILTIN_UNOP_lroundv2dfv2di;
else if (AARCH64_CHECK_BUILTIN_MODE (4, S))
- new_tree =
- aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_lroundv4sfv4si];
+ builtin = AARCH64_SIMD_BUILTIN_UNOP_lroundv4sfv4si;
else if (AARCH64_CHECK_BUILTIN_MODE (2, S))
- new_tree =
- aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_lroundv2sfv2si];
- return new_tree;
+ builtin = AARCH64_SIMD_BUILTIN_UNOP_lroundv2sfv2si;
+ else
+ return NULL_TREE;
+
+ return aarch64_builtin_decls[builtin];
}
default:
@@ -1000,7 +1000,7 @@ aarch64_builtin_vectorized_function (tree fndecl, tree type_out, tree type_in)
#undef VAR1
#define VAR1(T, N, MAP, A) \
- case AARCH64_SIMD_BUILTIN_##N##A:
+ case AARCH64_SIMD_BUILTIN_##T##_##N##A:
tree
aarch64_fold_builtin (tree fndecl, int n_args ATTRIBUTE_UNUSED, tree *args,