Andrew Pinski <[email protected]> writes:
> All of the data intrinsics don't read/write memory nor they are fp related.
> So adding the attributes will improve the code generation slightly.
>
> Built and tested for aarch64-linux-gnu
>
> gcc/ChangeLog:
>
> * config/aarch64/aarch64-builtins.cc (aarch64_init_data_intrinsics):
> Call
> aarch64_get_attributes and update calls to aarch64_general_add_builtin.
>
> Signed-off-by: Andrew Pinski <[email protected]>
OK, thanks.
Richard
> ---
> gcc/config/aarch64/aarch64-builtins.cc | 14 ++++++++------
> 1 file changed, 8 insertions(+), 6 deletions(-)
>
> diff --git a/gcc/config/aarch64/aarch64-builtins.cc
> b/gcc/config/aarch64/aarch64-builtins.cc
> index 9705f2de090..bc1719adbaa 100644
> --- a/gcc/config/aarch64/aarch64-builtins.cc
> +++ b/gcc/config/aarch64/aarch64-builtins.cc
> @@ -2162,6 +2162,8 @@ aarch64_init_ls64_builtins (void)
> static void
> aarch64_init_data_intrinsics (void)
> {
> + /* These intrinsics are not fp nor they read/write memory. */
> + tree attrs = aarch64_get_attributes (FLAG_NONE, SImode);
> tree uint32_fntype = build_function_type_list (uint32_type_node,
> uint32_type_node, NULL_TREE);
> tree ulong_fntype = build_function_type_list (long_unsigned_type_node,
> @@ -2171,22 +2173,22 @@ aarch64_init_data_intrinsics (void)
> uint64_type_node, NULL_TREE);
> aarch64_builtin_decls[AARCH64_REV16]
> = aarch64_general_add_builtin ("__builtin_aarch64_rev16", uint32_fntype,
> - AARCH64_REV16);
> + AARCH64_REV16, attrs);
> aarch64_builtin_decls[AARCH64_REV16L]
> = aarch64_general_add_builtin ("__builtin_aarch64_rev16l", ulong_fntype,
> - AARCH64_REV16L);
> + AARCH64_REV16L, attrs);
> aarch64_builtin_decls[AARCH64_REV16LL]
> = aarch64_general_add_builtin ("__builtin_aarch64_rev16ll",
> uint64_fntype,
> - AARCH64_REV16LL);
> + AARCH64_REV16LL, attrs);
> aarch64_builtin_decls[AARCH64_RBIT]
> = aarch64_general_add_builtin ("__builtin_aarch64_rbit", uint32_fntype,
> - AARCH64_RBIT);
> + AARCH64_RBIT, attrs);
> aarch64_builtin_decls[AARCH64_RBITL]
> = aarch64_general_add_builtin ("__builtin_aarch64_rbitl", ulong_fntype,
> - AARCH64_RBITL);
> + AARCH64_RBITL, attrs);
> aarch64_builtin_decls[AARCH64_RBITLL]
> = aarch64_general_add_builtin ("__builtin_aarch64_rbitll", uint64_fntype,
> - AARCH64_RBITLL);
> + AARCH64_RBITLL, attrs);
> }
>
> /* Implement #pragma GCC aarch64 "arm_acle.h". */