Commit e993fea1 by James Greenhalgh Committed by James Greenhalgh

[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
parent e8e9e1cd
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> 2013-11-26 Richard Biener <rguenther@suse.de>
PR tree-optimization/59287 PR tree-optimization/59287
...@@ -320,7 +320,7 @@ static aarch64_simd_builtin_datum aarch64_simd_builtin_data[] = { ...@@ -320,7 +320,7 @@ static aarch64_simd_builtin_datum aarch64_simd_builtin_data[] = {
#undef VAR1 #undef VAR1
#define VAR1(T, N, MAP, A) \ #define VAR1(T, N, MAP, A) \
AARCH64_SIMD_BUILTIN_##N##A, AARCH64_SIMD_BUILTIN_##T##_##N##A,
enum aarch64_builtins enum aarch64_builtins
{ {
...@@ -897,11 +897,11 @@ aarch64_builtin_vectorized_function (tree fndecl, tree type_out, tree type_in) ...@@ -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_CHECK_BUILTIN_MODE(C, N) 1
#define AARCH64_FIND_FRINT_VARIANT(N) \ #define AARCH64_FIND_FRINT_VARIANT(N) \
(AARCH64_CHECK_BUILTIN_MODE (2, D) \ (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_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_CHECK_BUILTIN_MODE (2, S) \
? aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_##N##v2sf] \ ? aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_UNOP_##N##v2sf] \
: NULL_TREE))) : NULL_TREE)))
if (DECL_BUILT_IN_CLASS (fndecl) == BUILT_IN_NORMAL) 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) ...@@ -937,7 +937,7 @@ aarch64_builtin_vectorized_function (tree fndecl, tree type_out, tree type_in)
case BUILT_IN_CLZ: case BUILT_IN_CLZ:
{ {
if (AARCH64_CHECK_BUILTIN_MODE (4, S)) 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; return NULL_TREE;
} }
#undef AARCH64_CHECK_BUILTIN_MODE #undef AARCH64_CHECK_BUILTIN_MODE
...@@ -947,47 +947,47 @@ aarch64_builtin_vectorized_function (tree fndecl, tree type_out, tree type_in) ...@@ -947,47 +947,47 @@ aarch64_builtin_vectorized_function (tree fndecl, tree type_out, tree type_in)
case BUILT_IN_LFLOOR: case BUILT_IN_LFLOOR:
case BUILT_IN_IFLOORF: case BUILT_IN_IFLOORF:
{ {
tree new_tree = NULL_TREE; enum aarch64_builtins builtin;
if (AARCH64_CHECK_BUILTIN_MODE (2, D)) if (AARCH64_CHECK_BUILTIN_MODE (2, D))
new_tree = builtin = AARCH64_SIMD_BUILTIN_UNOP_lfloorv2dfv2di;
aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_lfloorv2dfv2di];
else if (AARCH64_CHECK_BUILTIN_MODE (4, S)) else if (AARCH64_CHECK_BUILTIN_MODE (4, S))
new_tree = builtin = AARCH64_SIMD_BUILTIN_UNOP_lfloorv4sfv4si;
aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_lfloorv4sfv4si];
else if (AARCH64_CHECK_BUILTIN_MODE (2, S)) else if (AARCH64_CHECK_BUILTIN_MODE (2, S))
new_tree = builtin = AARCH64_SIMD_BUILTIN_UNOP_lfloorv2sfv2si;
aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_lfloorv2sfv2si]; else
return new_tree; return NULL_TREE;
return aarch64_builtin_decls[builtin];
} }
case BUILT_IN_LCEIL: case BUILT_IN_LCEIL:
case BUILT_IN_ICEILF: case BUILT_IN_ICEILF:
{ {
tree new_tree = NULL_TREE; enum aarch64_builtins builtin;
if (AARCH64_CHECK_BUILTIN_MODE (2, D)) if (AARCH64_CHECK_BUILTIN_MODE (2, D))
new_tree = builtin = AARCH64_SIMD_BUILTIN_UNOP_lceilv2dfv2di;
aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_lceilv2dfv2di];
else if (AARCH64_CHECK_BUILTIN_MODE (4, S)) else if (AARCH64_CHECK_BUILTIN_MODE (4, S))
new_tree = builtin = AARCH64_SIMD_BUILTIN_UNOP_lceilv4sfv4si;
aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_lceilv4sfv4si];
else if (AARCH64_CHECK_BUILTIN_MODE (2, S)) else if (AARCH64_CHECK_BUILTIN_MODE (2, S))
new_tree = builtin = AARCH64_SIMD_BUILTIN_UNOP_lceilv2sfv2si;
aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_lceilv2sfv2si]; else
return new_tree; return NULL_TREE;
return aarch64_builtin_decls[builtin];
} }
case BUILT_IN_LROUND: case BUILT_IN_LROUND:
case BUILT_IN_IROUNDF: case BUILT_IN_IROUNDF:
{ {
tree new_tree = NULL_TREE; enum aarch64_builtins builtin;
if (AARCH64_CHECK_BUILTIN_MODE (2, D)) if (AARCH64_CHECK_BUILTIN_MODE (2, D))
new_tree = builtin = AARCH64_SIMD_BUILTIN_UNOP_lroundv2dfv2di;
aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_lroundv2dfv2di];
else if (AARCH64_CHECK_BUILTIN_MODE (4, S)) else if (AARCH64_CHECK_BUILTIN_MODE (4, S))
new_tree = builtin = AARCH64_SIMD_BUILTIN_UNOP_lroundv4sfv4si;
aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_lroundv4sfv4si];
else if (AARCH64_CHECK_BUILTIN_MODE (2, S)) else if (AARCH64_CHECK_BUILTIN_MODE (2, S))
new_tree = builtin = AARCH64_SIMD_BUILTIN_UNOP_lroundv2sfv2si;
aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_lroundv2sfv2si]; else
return new_tree; return NULL_TREE;
return aarch64_builtin_decls[builtin];
} }
default: default:
...@@ -1000,7 +1000,7 @@ aarch64_builtin_vectorized_function (tree fndecl, tree type_out, tree type_in) ...@@ -1000,7 +1000,7 @@ aarch64_builtin_vectorized_function (tree fndecl, tree type_out, tree type_in)
#undef VAR1 #undef VAR1
#define VAR1(T, N, MAP, A) \ #define VAR1(T, N, MAP, A) \
case AARCH64_SIMD_BUILTIN_##N##A: case AARCH64_SIMD_BUILTIN_##T##_##N##A:
tree tree
aarch64_fold_builtin (tree fndecl, int n_args ATTRIBUTE_UNUSED, tree *args, aarch64_fold_builtin (tree fndecl, int n_args ATTRIBUTE_UNUSED, tree *args,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment