[4/6] rs6000: Remove rs6000-builtin.def and associated data and functions
Commit Message
Hi!
The old rs6000-builtin.def file is no longer needed. Remove it and the code
that depends on it.
Bootstrapped and tested on powerpc64le-linux-gnu with no regressions. Is this
okay for trunk?
Thanks!
Bill
2021-12-02 Bill Schmidt <wschmidt@linux.ibm.com>
gcc/
* config/rs6000/rs6000-builtin.def: Delete.
* config/rs6000/rs6000-call.c (builtin_compatibility): Delete.
(builtin_description): Delete.
(builtin_hash_struct): Delete.
(builtin_hasher): Delete.
(builtin_hash_table): Delete.
(builtin_hasher::hash): Delete.
(builtin_hasher::equal): Delete.
(rs6000_builtin_info_type): Delete.
(rs6000_builtin_info): Delete.
(bdesc_compat): Delete.
(bdesc_3arg): Delete.
(bdesc_4arg): Delete.
(bdesc_dst): Delete.
(bdesc_2arg): Delete.
(bdesc_altivec_preds): Delete.
(bdesc_abs): Delete.
(bdesc_1arg): Delete.
(bdesc_0arg): Delete.
(bdesc_htm): Delete.
(bdesc_mma): Delete.
(rs6000_overloaded_builtin_p): Delete.
(rs6000_overloaded_builtin_name): Delete.
(htm_spr_num): Delete.
(rs6000_builtin_is_supported_p): Delete.
(rs6000_gimple_fold_mma_builtin): Delete.
(gt-rs6000-call.h): Remove include directive.
* config/rs6000/rs6000-protos.h (rs6000_overloaded_builtin_p): Delete.
(rs6000_builtin_is_supported_p): Delete.
(rs6000_overloaded_builtin_name): Delete.
* config/rs6000/rs6000.c (rs6000_builtin_decls): Delete.
(rs6000_debug_reg_global): Remove reference to RS6000_BUILTIN_COUNT.
* config/rs6000/rs6000.h (rs6000_builtins): Delete.
(altivec_builtin_types): Delete.
(rs6000_builtin_decls): Delete.
* config/rs6000/t-rs6000 (TM_H): Don't add rs6000-builtin.def.
---
gcc/config/rs6000/rs6000-builtin.def | 3350 --------------------------
gcc/config/rs6000/rs6000-call.c | 712 ------
gcc/config/rs6000/rs6000-protos.h | 3 -
gcc/config/rs6000/rs6000.c | 3 -
gcc/config/rs6000/rs6000.h | 57 -
gcc/config/rs6000/t-rs6000 | 1 -
6 files changed, 4126 deletions(-)
delete mode 100644 gcc/config/rs6000/rs6000-builtin.def
Comments
Ping. Thanks!
Bill
On 12/6/21 2:49 PM, Bill Schmidt via Gcc-patches wrote:
> Hi!
>
> The old rs6000-builtin.def file is no longer needed. Remove it and the code
> that depends on it.
>
> Bootstrapped and tested on powerpc64le-linux-gnu with no regressions. Is this
> okay for trunk?
>
> Thanks!
> Bill
>
> 2021-12-02 Bill Schmidt <wschmidt@linux.ibm.com>
>
> gcc/
> * config/rs6000/rs6000-builtin.def: Delete.
> * config/rs6000/rs6000-call.c (builtin_compatibility): Delete.
> (builtin_description): Delete.
> (builtin_hash_struct): Delete.
> (builtin_hasher): Delete.
> (builtin_hash_table): Delete.
> (builtin_hasher::hash): Delete.
> (builtin_hasher::equal): Delete.
> (rs6000_builtin_info_type): Delete.
> (rs6000_builtin_info): Delete.
> (bdesc_compat): Delete.
> (bdesc_3arg): Delete.
> (bdesc_4arg): Delete.
> (bdesc_dst): Delete.
> (bdesc_2arg): Delete.
> (bdesc_altivec_preds): Delete.
> (bdesc_abs): Delete.
> (bdesc_1arg): Delete.
> (bdesc_0arg): Delete.
> (bdesc_htm): Delete.
> (bdesc_mma): Delete.
> (rs6000_overloaded_builtin_p): Delete.
> (rs6000_overloaded_builtin_name): Delete.
> (htm_spr_num): Delete.
> (rs6000_builtin_is_supported_p): Delete.
> (rs6000_gimple_fold_mma_builtin): Delete.
> (gt-rs6000-call.h): Remove include directive.
> * config/rs6000/rs6000-protos.h (rs6000_overloaded_builtin_p): Delete.
> (rs6000_builtin_is_supported_p): Delete.
> (rs6000_overloaded_builtin_name): Delete.
> * config/rs6000/rs6000.c (rs6000_builtin_decls): Delete.
> (rs6000_debug_reg_global): Remove reference to RS6000_BUILTIN_COUNT.
> * config/rs6000/rs6000.h (rs6000_builtins): Delete.
> (altivec_builtin_types): Delete.
> (rs6000_builtin_decls): Delete.
> * config/rs6000/t-rs6000 (TM_H): Don't add rs6000-builtin.def.
> ---
> gcc/config/rs6000/rs6000-builtin.def | 3350 --------------------------
> gcc/config/rs6000/rs6000-call.c | 712 ------
> gcc/config/rs6000/rs6000-protos.h | 3 -
> gcc/config/rs6000/rs6000.c | 3 -
> gcc/config/rs6000/rs6000.h | 57 -
> gcc/config/rs6000/t-rs6000 | 1 -
> 6 files changed, 4126 deletions(-)
> delete mode 100644 gcc/config/rs6000/rs6000-builtin.def
>
> diff --git a/gcc/config/rs6000/rs6000-builtin.def b/gcc/config/rs6000/rs6000-builtin.def
> deleted file mode 100644
> index 9dbf16f48c4..00000000000
> diff --git a/gcc/config/rs6000/rs6000-call.c b/gcc/config/rs6000/rs6000-call.c
> index 86054f75756..a5ee06c991f 100644
> --- a/gcc/config/rs6000/rs6000-call.c
> +++ b/gcc/config/rs6000/rs6000-call.c
> @@ -89,20 +89,6 @@
> #define TARGET_NO_PROTOTYPE 0
> #endif
>
> -struct builtin_compatibility
> -{
> - const enum rs6000_builtins code;
> - const char *const name;
> -};
> -
> -struct builtin_description
> -{
> - const HOST_WIDE_INT mask;
> - const enum insn_code icode;
> - const char *const name;
> - const enum rs6000_builtins code;
> -};
> -
> /* Used by __builtin_cpu_is(), mapping from PLATFORM names to values. */
> static const struct
> {
> @@ -184,127 +170,6 @@ static const struct
>
> static rtx rs6000_expand_new_builtin (tree, rtx, rtx, machine_mode, int);
> static bool rs6000_gimple_fold_new_builtin (gimple_stmt_iterator *gsi);
> -
> -
> -/* Hash table to keep track of the argument types for builtin functions. */
> -
> -struct GTY((for_user)) builtin_hash_struct
> -{
> - tree type;
> - machine_mode mode[4]; /* return value + 3 arguments. */
> - unsigned char uns_p[4]; /* and whether the types are unsigned. */
> -};
> -
> -struct builtin_hasher : ggc_ptr_hash<builtin_hash_struct>
> -{
> - static hashval_t hash (builtin_hash_struct *);
> - static bool equal (builtin_hash_struct *, builtin_hash_struct *);
> -};
> -
> -static GTY (()) hash_table<builtin_hasher> *builtin_hash_table;
> -
> -/* Hash function for builtin functions with up to 3 arguments and a return
> - type. */
> -hashval_t
> -builtin_hasher::hash (builtin_hash_struct *bh)
> -{
> - unsigned ret = 0;
> - int i;
> -
> - for (i = 0; i < 4; i++)
> - {
> - ret = (ret * (unsigned)MAX_MACHINE_MODE) + ((unsigned)bh->mode[i]);
> - ret = (ret * 2) + bh->uns_p[i];
> - }
> -
> - return ret;
> -}
> -
> -/* Compare builtin hash entries H1 and H2 for equivalence. */
> -bool
> -builtin_hasher::equal (builtin_hash_struct *p1, builtin_hash_struct *p2)
> -{
> - return ((p1->mode[0] == p2->mode[0])
> - && (p1->mode[1] == p2->mode[1])
> - && (p1->mode[2] == p2->mode[2])
> - && (p1->mode[3] == p2->mode[3])
> - && (p1->uns_p[0] == p2->uns_p[0])
> - && (p1->uns_p[1] == p2->uns_p[1])
> - && (p1->uns_p[2] == p2->uns_p[2])
> - && (p1->uns_p[3] == p2->uns_p[3]));
> -}
> -
> -
> -/* Table that classifies rs6000 builtin functions (pure, const, etc.). */
> -#undef RS6000_BUILTIN_0
> -#undef RS6000_BUILTIN_1
> -#undef RS6000_BUILTIN_2
> -#undef RS6000_BUILTIN_3
> -#undef RS6000_BUILTIN_4
> -#undef RS6000_BUILTIN_A
> -#undef RS6000_BUILTIN_D
> -#undef RS6000_BUILTIN_H
> -#undef RS6000_BUILTIN_M
> -#undef RS6000_BUILTIN_P
> -#undef RS6000_BUILTIN_X
> -
> -#define RS6000_BUILTIN_0(ENUM, NAME, MASK, ATTR, ICODE) \
> - { NAME, ICODE, MASK, ATTR },
> -
> -#define RS6000_BUILTIN_1(ENUM, NAME, MASK, ATTR, ICODE) \
> - { NAME, ICODE, MASK, ATTR },
> -
> -#define RS6000_BUILTIN_2(ENUM, NAME, MASK, ATTR, ICODE) \
> - { NAME, ICODE, MASK, ATTR },
> -
> -#define RS6000_BUILTIN_3(ENUM, NAME, MASK, ATTR, ICODE) \
> - { NAME, ICODE, MASK, ATTR },
> -
> -#define RS6000_BUILTIN_4(ENUM, NAME, MASK, ATTR, ICODE) \
> - { NAME, ICODE, MASK, ATTR },
> -
> -#define RS6000_BUILTIN_A(ENUM, NAME, MASK, ATTR, ICODE) \
> - { NAME, ICODE, MASK, ATTR },
> -
> -#define RS6000_BUILTIN_D(ENUM, NAME, MASK, ATTR, ICODE) \
> - { NAME, ICODE, MASK, ATTR },
> -
> -#define RS6000_BUILTIN_H(ENUM, NAME, MASK, ATTR, ICODE) \
> - { NAME, ICODE, MASK, ATTR },
> -
> -#define RS6000_BUILTIN_M(ENUM, NAME, MASK, ATTR, ICODE) \
> - { NAME, ICODE, MASK, ATTR },
> -
> -#define RS6000_BUILTIN_P(ENUM, NAME, MASK, ATTR, ICODE) \
> - { NAME, ICODE, MASK, ATTR },
> -
> -#define RS6000_BUILTIN_X(ENUM, NAME, MASK, ATTR, ICODE) \
> - { NAME, ICODE, MASK, ATTR },
> -
> -struct rs6000_builtin_info_type {
> - const char *name;
> - const enum insn_code icode;
> - const HOST_WIDE_INT mask;
> - const unsigned attr;
> -};
> -
> -static const struct rs6000_builtin_info_type rs6000_builtin_info[] =
> -{
> -#include "rs6000-builtin.def"
> -};
> -
> -#undef RS6000_BUILTIN_0
> -#undef RS6000_BUILTIN_1
> -#undef RS6000_BUILTIN_2
> -#undef RS6000_BUILTIN_3
> -#undef RS6000_BUILTIN_4
> -#undef RS6000_BUILTIN_A
> -#undef RS6000_BUILTIN_D
> -#undef RS6000_BUILTIN_H
> -#undef RS6000_BUILTIN_M
> -#undef RS6000_BUILTIN_P
> -#undef RS6000_BUILTIN_X
> -
>
> /* Nonzero if we can use a floating-point register to pass this arg. */
> #define USE_FP_FOR_ARG_P(CUM,MODE) \
> @@ -3130,367 +2995,6 @@ const char *rs6000_type_string (tree type_node)
> return "unknown";
> }
>
> -static const struct builtin_compatibility bdesc_compat[] =
> -{
> -#define RS6000_BUILTIN_COMPAT
> -#include "rs6000-builtin.def"
> -};
> -#undef RS6000_BUILTIN_COMPAT
> -
> -/* Simple ternary operations: VECd = foo (VECa, VECb, VECc). */
> -
> -#undef RS6000_BUILTIN_0
> -#undef RS6000_BUILTIN_1
> -#undef RS6000_BUILTIN_2
> -#undef RS6000_BUILTIN_3
> -#undef RS6000_BUILTIN_4
> -#undef RS6000_BUILTIN_A
> -#undef RS6000_BUILTIN_D
> -#undef RS6000_BUILTIN_H
> -#undef RS6000_BUILTIN_M
> -#undef RS6000_BUILTIN_P
> -#undef RS6000_BUILTIN_X
> -
> -#define RS6000_BUILTIN_0(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_1(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_2(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_3(ENUM, NAME, MASK, ATTR, ICODE) \
> - { MASK, ICODE, NAME, ENUM },
> -
> -#define RS6000_BUILTIN_4(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_A(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_D(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_H(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_M(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_P(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_X(ENUM, NAME, MASK, ATTR, ICODE)
> -
> -static const struct builtin_description bdesc_3arg[] =
> -{
> -#include "rs6000-builtin.def"
> -};
> -
> -/* Simple quaternary operations: VECd = foo (VECa, VECb, VECc, VECd). */
> -
> -#undef RS6000_BUILTIN_0
> -#undef RS6000_BUILTIN_1
> -#undef RS6000_BUILTIN_2
> -#undef RS6000_BUILTIN_3
> -#undef RS6000_BUILTIN_4
> -#undef RS6000_BUILTIN_A
> -#undef RS6000_BUILTIN_D
> -#undef RS6000_BUILTIN_H
> -#undef RS6000_BUILTIN_M
> -#undef RS6000_BUILTIN_P
> -#undef RS6000_BUILTIN_X
> -
> -#define RS6000_BUILTIN_0(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_1(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_2(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_3(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_4(ENUM, NAME, MASK, ATTR, ICODE) \
> - { MASK, ICODE, NAME, ENUM },
> -
> -#define RS6000_BUILTIN_A(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_D(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_H(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_M(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_P(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_X(ENUM, NAME, MASK, ATTR, ICODE)
> -
> -static const struct builtin_description bdesc_4arg[] =
> -{
> -#include "rs6000-builtin.def"
> -};
> -
> -/* DST operations: void foo (void *, const int, const char). */
> -
> -#undef RS6000_BUILTIN_0
> -#undef RS6000_BUILTIN_1
> -#undef RS6000_BUILTIN_2
> -#undef RS6000_BUILTIN_3
> -#undef RS6000_BUILTIN_4
> -#undef RS6000_BUILTIN_A
> -#undef RS6000_BUILTIN_D
> -#undef RS6000_BUILTIN_H
> -#undef RS6000_BUILTIN_M
> -#undef RS6000_BUILTIN_P
> -#undef RS6000_BUILTIN_X
> -
> -#define RS6000_BUILTIN_0(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_1(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_2(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_3(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_4(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_A(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_D(ENUM, NAME, MASK, ATTR, ICODE) \
> - { MASK, ICODE, NAME, ENUM },
> -
> -#define RS6000_BUILTIN_H(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_M(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_P(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_X(ENUM, NAME, MASK, ATTR, ICODE)
> -
> -static const struct builtin_description bdesc_dst[] =
> -{
> -#include "rs6000-builtin.def"
> -};
> -
> -/* Simple binary operations: VECc = foo (VECa, VECb). */
> -
> -#undef RS6000_BUILTIN_0
> -#undef RS6000_BUILTIN_1
> -#undef RS6000_BUILTIN_2
> -#undef RS6000_BUILTIN_3
> -#undef RS6000_BUILTIN_4
> -#undef RS6000_BUILTIN_A
> -#undef RS6000_BUILTIN_D
> -#undef RS6000_BUILTIN_H
> -#undef RS6000_BUILTIN_M
> -#undef RS6000_BUILTIN_P
> -#undef RS6000_BUILTIN_X
> -
> -#define RS6000_BUILTIN_0(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_1(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_2(ENUM, NAME, MASK, ATTR, ICODE) \
> - { MASK, ICODE, NAME, ENUM },
> -
> -#define RS6000_BUILTIN_3(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_4(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_A(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_D(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_H(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_M(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_P(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_X(ENUM, NAME, MASK, ATTR, ICODE)
> -
> -static const struct builtin_description bdesc_2arg[] =
> -{
> -#include "rs6000-builtin.def"
> -};
> -
> -#undef RS6000_BUILTIN_0
> -#undef RS6000_BUILTIN_1
> -#undef RS6000_BUILTIN_2
> -#undef RS6000_BUILTIN_3
> -#undef RS6000_BUILTIN_4
> -#undef RS6000_BUILTIN_A
> -#undef RS6000_BUILTIN_D
> -#undef RS6000_BUILTIN_H
> -#undef RS6000_BUILTIN_M
> -#undef RS6000_BUILTIN_P
> -#undef RS6000_BUILTIN_X
> -
> -#define RS6000_BUILTIN_0(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_1(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_2(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_3(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_4(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_A(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_D(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_H(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_M(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_P(ENUM, NAME, MASK, ATTR, ICODE) \
> - { MASK, ICODE, NAME, ENUM },
> -
> -#define RS6000_BUILTIN_X(ENUM, NAME, MASK, ATTR, ICODE)
> -
> -/* AltiVec predicates. */
> -
> -static const struct builtin_description bdesc_altivec_preds[] =
> -{
> -#include "rs6000-builtin.def"
> -};
> -
> -/* ABS* operations. */
> -
> -#undef RS6000_BUILTIN_0
> -#undef RS6000_BUILTIN_1
> -#undef RS6000_BUILTIN_2
> -#undef RS6000_BUILTIN_3
> -#undef RS6000_BUILTIN_4
> -#undef RS6000_BUILTIN_A
> -#undef RS6000_BUILTIN_D
> -#undef RS6000_BUILTIN_H
> -#undef RS6000_BUILTIN_M
> -#undef RS6000_BUILTIN_P
> -#undef RS6000_BUILTIN_X
> -
> -#define RS6000_BUILTIN_0(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_1(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_2(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_3(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_4(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_A(ENUM, NAME, MASK, ATTR, ICODE) \
> - { MASK, ICODE, NAME, ENUM },
> -
> -#define RS6000_BUILTIN_D(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_H(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_M(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_P(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_X(ENUM, NAME, MASK, ATTR, ICODE)
> -
> -static const struct builtin_description bdesc_abs[] =
> -{
> -#include "rs6000-builtin.def"
> -};
> -
> -/* Simple unary operations: VECb = foo (unsigned literal) or VECb =
> - foo (VECa). */
> -
> -#undef RS6000_BUILTIN_0
> -#undef RS6000_BUILTIN_1
> -#undef RS6000_BUILTIN_2
> -#undef RS6000_BUILTIN_3
> -#undef RS6000_BUILTIN_4
> -#undef RS6000_BUILTIN_A
> -#undef RS6000_BUILTIN_D
> -#undef RS6000_BUILTIN_H
> -#undef RS6000_BUILTIN_M
> -#undef RS6000_BUILTIN_P
> -#undef RS6000_BUILTIN_X
> -
> -#define RS6000_BUILTIN_0(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_1(ENUM, NAME, MASK, ATTR, ICODE) \
> - { MASK, ICODE, NAME, ENUM },
> -
> -#define RS6000_BUILTIN_2(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_3(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_4(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_A(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_D(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_H(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_M(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_P(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_X(ENUM, NAME, MASK, ATTR, ICODE)
> -
> -static const struct builtin_description bdesc_1arg[] =
> -{
> -#include "rs6000-builtin.def"
> -};
> -
> -/* Simple no-argument operations: result = __builtin_darn_32 () */
> -
> -#undef RS6000_BUILTIN_0
> -#undef RS6000_BUILTIN_1
> -#undef RS6000_BUILTIN_2
> -#undef RS6000_BUILTIN_3
> -#undef RS6000_BUILTIN_4
> -#undef RS6000_BUILTIN_A
> -#undef RS6000_BUILTIN_D
> -#undef RS6000_BUILTIN_H
> -#undef RS6000_BUILTIN_M
> -#undef RS6000_BUILTIN_P
> -#undef RS6000_BUILTIN_X
> -
> -#define RS6000_BUILTIN_0(ENUM, NAME, MASK, ATTR, ICODE) \
> - { MASK, ICODE, NAME, ENUM },
> -
> -#define RS6000_BUILTIN_1(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_2(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_3(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_4(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_A(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_D(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_H(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_M(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_P(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_X(ENUM, NAME, MASK, ATTR, ICODE)
> -
> -static const struct builtin_description bdesc_0arg[] =
> -{
> -#include "rs6000-builtin.def"
> -};
> -
> -/* HTM builtins. */
> -#undef RS6000_BUILTIN_0
> -#undef RS6000_BUILTIN_1
> -#undef RS6000_BUILTIN_2
> -#undef RS6000_BUILTIN_3
> -#undef RS6000_BUILTIN_4
> -#undef RS6000_BUILTIN_A
> -#undef RS6000_BUILTIN_D
> -#undef RS6000_BUILTIN_H
> -#undef RS6000_BUILTIN_M
> -#undef RS6000_BUILTIN_P
> -#undef RS6000_BUILTIN_X
> -
> -#define RS6000_BUILTIN_0(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_1(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_2(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_3(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_4(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_A(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_D(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_H(ENUM, NAME, MASK, ATTR, ICODE) \
> - { MASK, ICODE, NAME, ENUM },
> -
> -#define RS6000_BUILTIN_M(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_P(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_X(ENUM, NAME, MASK, ATTR, ICODE)
> -
> -static const struct builtin_description bdesc_htm[] =
> -{
> -#include "rs6000-builtin.def"
> -};
> -
> -/* MMA builtins. */
> -#undef RS6000_BUILTIN_0
> -#undef RS6000_BUILTIN_1
> -#undef RS6000_BUILTIN_2
> -#undef RS6000_BUILTIN_3
> -#undef RS6000_BUILTIN_4
> -#undef RS6000_BUILTIN_A
> -#undef RS6000_BUILTIN_D
> -#undef RS6000_BUILTIN_H
> -#undef RS6000_BUILTIN_M
> -#undef RS6000_BUILTIN_P
> -#undef RS6000_BUILTIN_X
> -
> -#define RS6000_BUILTIN_0(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_1(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_2(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_3(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_4(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_A(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_D(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_H(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_M(ENUM, NAME, MASK, ATTR, ICODE) \
> - { MASK, ICODE, NAME, ENUM },
> -
> -#define RS6000_BUILTIN_P(ENUM, NAME, MASK, ATTR, ICODE)
> -#define RS6000_BUILTIN_X(ENUM, NAME, MASK, ATTR, ICODE)
> -
> -static const struct builtin_description bdesc_mma[] =
> -{
> -#include "rs6000-builtin.def"
> -};
> -
> -#undef RS6000_BUILTIN_0
> -#undef RS6000_BUILTIN_1
> -#undef RS6000_BUILTIN_2
> -#undef RS6000_BUILTIN_3
> -#undef RS6000_BUILTIN_4
> -#undef RS6000_BUILTIN_A
> -#undef RS6000_BUILTIN_D
> -#undef RS6000_BUILTIN_H
> -#undef RS6000_BUILTIN_M
> -#undef RS6000_BUILTIN_P
> -#undef RS6000_BUILTIN_X
> -
> -/* Return true if a builtin function is overloaded. */
> -bool
> -rs6000_overloaded_builtin_p (enum rs6000_builtins fncode)
> -{
> - return (rs6000_builtin_info[(int)fncode].attr & RS6000_BTC_OVERLOADED) != 0;
> -}
> -
> -const char *
> -rs6000_overloaded_builtin_name (enum rs6000_builtins fncode)
> -{
> - return rs6000_builtin_info[(int)fncode].name;
> -}
> -
> static rtx
> altivec_expand_predicate_builtin (enum insn_code icode, tree exp, rtx target)
> {
> @@ -3611,24 +3115,6 @@ swap_endian_selector_for_mode (machine_mode mode)
> gen_rtvec_v (16, perm)));
> }
>
> -/* Return the appropriate SPR number associated with the given builtin. */
> -static inline HOST_WIDE_INT
> -htm_spr_num (enum rs6000_builtins code)
> -{
> - if (code == HTM_BUILTIN_GET_TFHAR
> - || code == HTM_BUILTIN_SET_TFHAR)
> - return TFHAR_SPR;
> - else if (code == HTM_BUILTIN_GET_TFIAR
> - || code == HTM_BUILTIN_SET_TFIAR)
> - return TFIAR_SPR;
> - else if (code == HTM_BUILTIN_GET_TEXASR
> - || code == HTM_BUILTIN_SET_TEXASR)
> - return TEXASR_SPR;
> - gcc_assert (code == HTM_BUILTIN_GET_TEXASRU
> - || code == HTM_BUILTIN_SET_TEXASRU);
> - return TEXASRU_SPR;
> -}
> -
> /* Return the correct ICODE value depending on whether we are
> setting or reading the HTM SPRs. */
> static inline enum insn_code
> @@ -3768,18 +3254,6 @@ altivec_expand_vec_ext_builtin (tree exp, rtx target)
> return target;
> }
>
> -/* Check whether a builtin function is supported in this target
> - configuration. */
> -bool
> -rs6000_builtin_is_supported_p (enum rs6000_builtins fncode)
> -{
> - HOST_WIDE_INT fnmask = rs6000_builtin_info[fncode].mask;
> - if ((fnmask & rs6000_builtin_mask) != fnmask)
> - return false;
> - else
> - return true;
> -}
> -
> /* Raise an error message for a builtin function that is called without the
> appropriate target options being set. */
>
> @@ -4005,190 +3479,6 @@ fold_mergeeo_helper (gimple_stmt_iterator *gsi, gimple *stmt, int use_odd)
> gsi_replace (gsi, g, true);
> }
>
> -/* Expand the MMA built-ins early, so that we can convert the pass-by-reference
> - __vector_quad arguments into pass-by-value arguments, leading to more
> - efficient code generation. */
> -
> -bool
> -rs6000_gimple_fold_mma_builtin (gimple_stmt_iterator *gsi)
> -{
> - gimple *stmt = gsi_stmt (*gsi);
> - tree fndecl = gimple_call_fndecl (stmt);
> - enum rs6000_builtins fncode
> - = (enum rs6000_builtins) DECL_MD_FUNCTION_CODE (fndecl);
> - unsigned attr = rs6000_builtin_info[fncode].attr;
> -
> - if ((attr & RS6000_BTC_GIMPLE) == 0)
> - return false;
> -
> - unsigned nopnds = (attr & RS6000_BTC_OPND_MASK);
> - gimple_seq new_seq = NULL;
> - gimple *new_call;
> - tree new_decl;
> -
> - if (fncode == MMA_BUILTIN_DISASSEMBLE_ACC
> - || fncode == VSX_BUILTIN_DISASSEMBLE_PAIR)
> - {
> - /* This is an MMA disassemble built-in function. */
> - push_gimplify_context (true);
> - unsigned nvec = (fncode == MMA_BUILTIN_DISASSEMBLE_ACC) ? 4 : 2;
> - tree dst_ptr = gimple_call_arg (stmt, 0);
> - tree src_ptr = gimple_call_arg (stmt, 1);
> - tree src_type = TREE_TYPE (src_ptr);
> - tree src = create_tmp_reg_or_ssa_name (TREE_TYPE (src_type));
> - gimplify_assign (src, build_simple_mem_ref (src_ptr), &new_seq);
> -
> - /* If we are not disassembling an accumulator/pair or our destination is
> - another accumulator/pair, then just copy the entire thing as is. */
> - if ((fncode == MMA_BUILTIN_DISASSEMBLE_ACC
> - && TREE_TYPE (TREE_TYPE (dst_ptr)) == vector_quad_type_node)
> - || (fncode == VSX_BUILTIN_DISASSEMBLE_PAIR
> - && TREE_TYPE (TREE_TYPE (dst_ptr)) == vector_pair_type_node))
> - {
> - tree dst = build_simple_mem_ref (build1 (VIEW_CONVERT_EXPR,
> - src_type, dst_ptr));
> - gimplify_assign (dst, src, &new_seq);
> - pop_gimplify_context (NULL);
> - gsi_replace_with_seq (gsi, new_seq, true);
> - return true;
> - }
> -
> - /* If we're disassembling an accumulator into a different type, we need
> - to emit a xxmfacc instruction now, since we cannot do it later. */
> - if (fncode == MMA_BUILTIN_DISASSEMBLE_ACC)
> - {
> - new_decl = rs6000_builtin_decls[MMA_BUILTIN_XXMFACC_INTERNAL];
> - new_call = gimple_build_call (new_decl, 1, src);
> - src = create_tmp_reg_or_ssa_name (vector_quad_type_node);
> - gimple_call_set_lhs (new_call, src);
> - gimple_seq_add_stmt (&new_seq, new_call);
> - }
> -
> - /* Copy the accumulator/pair vector by vector. */
> - new_decl = rs6000_builtin_decls[fncode + 1];
> - tree dst_type = build_pointer_type_for_mode (unsigned_V16QI_type_node,
> - ptr_mode, true);
> - tree dst_base = build1 (VIEW_CONVERT_EXPR, dst_type, dst_ptr);
> - for (unsigned i = 0; i < nvec; i++)
> - {
> - unsigned index = WORDS_BIG_ENDIAN ? i : nvec - 1 - i;
> - tree dst = build2 (MEM_REF, unsigned_V16QI_type_node, dst_base,
> - build_int_cst (dst_type, index * 16));
> - tree dstssa = create_tmp_reg_or_ssa_name (unsigned_V16QI_type_node);
> - new_call = gimple_build_call (new_decl, 2, src,
> - build_int_cstu (uint16_type_node, i));
> - gimple_call_set_lhs (new_call, dstssa);
> - gimple_seq_add_stmt (&new_seq, new_call);
> - gimplify_assign (dst, dstssa, &new_seq);
> - }
> - pop_gimplify_context (NULL);
> - gsi_replace_with_seq (gsi, new_seq, true);
> - return true;
> - }
> - else if (fncode == VSX_BUILTIN_LXVP)
> - {
> - push_gimplify_context (true);
> - tree offset = gimple_call_arg (stmt, 0);
> - tree ptr = gimple_call_arg (stmt, 1);
> - tree lhs = gimple_call_lhs (stmt);
> - if (TREE_TYPE (TREE_TYPE (ptr)) != vector_pair_type_node)
> - ptr = build1 (VIEW_CONVERT_EXPR,
> - build_pointer_type (vector_pair_type_node), ptr);
> - tree mem = build_simple_mem_ref (build2 (POINTER_PLUS_EXPR,
> - TREE_TYPE (ptr), ptr, offset));
> - gimplify_assign (lhs, mem, &new_seq);
> - pop_gimplify_context (NULL);
> - gsi_replace_with_seq (gsi, new_seq, true);
> - return true;
> - }
> - else if (fncode == VSX_BUILTIN_STXVP)
> - {
> - push_gimplify_context (true);
> - tree src = gimple_call_arg (stmt, 0);
> - tree offset = gimple_call_arg (stmt, 1);
> - tree ptr = gimple_call_arg (stmt, 2);
> - if (TREE_TYPE (TREE_TYPE (ptr)) != vector_pair_type_node)
> - ptr = build1 (VIEW_CONVERT_EXPR,
> - build_pointer_type (vector_pair_type_node), ptr);
> - tree mem = build_simple_mem_ref (build2 (POINTER_PLUS_EXPR,
> - TREE_TYPE (ptr), ptr, offset));
> - gimplify_assign (mem, src, &new_seq);
> - pop_gimplify_context (NULL);
> - gsi_replace_with_seq (gsi, new_seq, true);
> - return true;
> - }
> -
> - /* Convert this built-in into an internal version that uses pass-by-value
> - arguments. The internal built-in follows immediately after this one. */
> - new_decl = rs6000_builtin_decls[fncode + 1];
> - tree lhs, op[MAX_MMA_OPERANDS];
> - tree acc = gimple_call_arg (stmt, 0);
> - push_gimplify_context (true);
> -
> - if ((attr & RS6000_BTC_QUAD) != 0)
> - {
> - /* This built-in has a pass-by-reference accumulator input, so load it
> - into a temporary accumulator for use as a pass-by-value input. */
> - op[0] = create_tmp_reg_or_ssa_name (vector_quad_type_node);
> - for (unsigned i = 1; i < nopnds; i++)
> - op[i] = gimple_call_arg (stmt, i);
> - gimplify_assign (op[0], build_simple_mem_ref (acc), &new_seq);
> - }
> - else
> - {
> - /* This built-in does not use its pass-by-reference accumulator argument
> - as an input argument, so remove it from the input list. */
> - nopnds--;
> - for (unsigned i = 0; i < nopnds; i++)
> - op[i] = gimple_call_arg (stmt, i + 1);
> - }
> -
> - switch (nopnds)
> - {
> - case 0:
> - new_call = gimple_build_call (new_decl, 0);
> - break;
> - case 1:
> - new_call = gimple_build_call (new_decl, 1, op[0]);
> - break;
> - case 2:
> - new_call = gimple_build_call (new_decl, 2, op[0], op[1]);
> - break;
> - case 3:
> - new_call = gimple_build_call (new_decl, 3, op[0], op[1], op[2]);
> - break;
> - case 4:
> - new_call = gimple_build_call (new_decl, 4, op[0], op[1], op[2], op[3]);
> - break;
> - case 5:
> - new_call = gimple_build_call (new_decl, 5, op[0], op[1], op[2], op[3],
> - op[4]);
> - break;
> - case 6:
> - new_call = gimple_build_call (new_decl, 6, op[0], op[1], op[2], op[3],
> - op[4], op[5]);
> - break;
> - case 7:
> - new_call = gimple_build_call (new_decl, 7, op[0], op[1], op[2], op[3],
> - op[4], op[5], op[6]);
> - break;
> - default:
> - gcc_unreachable ();
> - }
> -
> - if (fncode == VSX_BUILTIN_BUILD_PAIR || fncode == VSX_BUILTIN_ASSEMBLE_PAIR)
> - lhs = create_tmp_reg_or_ssa_name (vector_pair_type_node);
> - else
> - lhs = create_tmp_reg_or_ssa_name (vector_quad_type_node);
> - gimple_call_set_lhs (new_call, lhs);
> - gimple_seq_add_stmt (&new_seq, new_call);
> - gimplify_assign (build_simple_mem_ref (acc), lhs, &new_seq);
> - pop_gimplify_context (NULL);
> - gsi_replace_with_seq (gsi, new_seq, true);
> -
> - return true;
> -}
> -
> /* Fold a machine-dependent built-in in GIMPLE. (For folding into
> a constant, use rs6000_fold_builtin.) */
>
> @@ -7255,5 +6545,3 @@ rs6000_output_mi_thunk (FILE *file, tree thunk_fndecl ATTRIBUTE_UNUSED,
> reload_completed = 0;
> epilogue_completed = 0;
> }
> -
> -#include "gt-rs6000-call.h"
> diff --git a/gcc/config/rs6000/rs6000-protos.h b/gcc/config/rs6000/rs6000-protos.h
> index 14f6b313105..c01ae005d0b 100644
> --- a/gcc/config/rs6000/rs6000-protos.h
> +++ b/gcc/config/rs6000/rs6000-protos.h
> @@ -272,9 +272,6 @@ extern void rs6000_call_darwin (rtx, rtx, rtx, rtx);
> extern void rs6000_sibcall_darwin (rtx, rtx, rtx, rtx);
> extern void rs6000_aix_asm_output_dwarf_table_ref (char *);
> extern void get_ppc476_thunk_name (char name[32]);
> -extern bool rs6000_overloaded_builtin_p (enum rs6000_builtins);
> -extern bool rs6000_builtin_is_supported_p (enum rs6000_builtins);
> -extern const char *rs6000_overloaded_builtin_name (enum rs6000_builtins);
> extern int rs6000_store_data_bypass_p (rtx_insn *, rtx_insn *);
> extern HOST_WIDE_INT rs6000_builtin_mask_calculate (void);
> extern void rs6000_asm_output_dwarf_pcrel (FILE *file, int size,
> diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
> index 70df511ff98..4479c569476 100644
> --- a/gcc/config/rs6000/rs6000.c
> +++ b/gcc/config/rs6000/rs6000.c
> @@ -171,7 +171,6 @@ static int dbg_cost_ctrl;
>
> /* Built in types. */
> tree rs6000_builtin_types[RS6000_BTI_MAX];
> -tree rs6000_builtin_decls[RS6000_BUILTIN_COUNT];
>
> /* Flag to say the TOC is initialized */
> int toc_initialized, need_toc_init;
> @@ -2585,8 +2584,6 @@ rs6000_debug_reg_global (void)
> (int)rs6000_sched_restricted_insns_priority);
> fprintf (stderr, DEBUG_FMT_D, "Number of standard builtins",
> (int)END_BUILTINS);
> - fprintf (stderr, DEBUG_FMT_D, "Number of rs6000 builtins",
> - (int)RS6000_BUILTIN_COUNT);
>
> fprintf (stderr, DEBUG_FMT_D, "Enable float128 on VSX",
> (int)TARGET_FLOAT128_ENABLE_TYPE);
> diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h
> index b12ee8bfe5b..4d2f88d4218 100644
> --- a/gcc/config/rs6000/rs6000.h
> +++ b/gcc/config/rs6000/rs6000.h
> @@ -2344,62 +2344,6 @@ extern int frame_pointer_needed;
> | RS6000_BTM_MMA \
> | RS6000_BTM_P10)
>
> -/* Define builtin enum index. */
> -
> -#undef RS6000_BUILTIN_0
> -#undef RS6000_BUILTIN_1
> -#undef RS6000_BUILTIN_2
> -#undef RS6000_BUILTIN_3
> -#undef RS6000_BUILTIN_4
> -#undef RS6000_BUILTIN_A
> -#undef RS6000_BUILTIN_D
> -#undef RS6000_BUILTIN_H
> -#undef RS6000_BUILTIN_M
> -#undef RS6000_BUILTIN_P
> -#undef RS6000_BUILTIN_X
> -
> -#define RS6000_BUILTIN_0(ENUM, NAME, MASK, ATTR, ICODE) ENUM,
> -#define RS6000_BUILTIN_1(ENUM, NAME, MASK, ATTR, ICODE) ENUM,
> -#define RS6000_BUILTIN_2(ENUM, NAME, MASK, ATTR, ICODE) ENUM,
> -#define RS6000_BUILTIN_3(ENUM, NAME, MASK, ATTR, ICODE) ENUM,
> -#define RS6000_BUILTIN_4(ENUM, NAME, MASK, ATTR, ICODE) ENUM,
> -#define RS6000_BUILTIN_A(ENUM, NAME, MASK, ATTR, ICODE) ENUM,
> -#define RS6000_BUILTIN_D(ENUM, NAME, MASK, ATTR, ICODE) ENUM,
> -#define RS6000_BUILTIN_H(ENUM, NAME, MASK, ATTR, ICODE) ENUM,
> -#define RS6000_BUILTIN_M(ENUM, NAME, MASK, ATTR, ICODE) ENUM,
> -#define RS6000_BUILTIN_P(ENUM, NAME, MASK, ATTR, ICODE) ENUM,
> -#define RS6000_BUILTIN_X(ENUM, NAME, MASK, ATTR, ICODE) ENUM,
> -
> -enum rs6000_builtins
> -{
> -#include "rs6000-builtin.def"
> -
> - RS6000_BUILTIN_COUNT
> -};
> -
> -#undef RS6000_BUILTIN_0
> -#undef RS6000_BUILTIN_1
> -#undef RS6000_BUILTIN_2
> -#undef RS6000_BUILTIN_3
> -#undef RS6000_BUILTIN_4
> -#undef RS6000_BUILTIN_A
> -#undef RS6000_BUILTIN_D
> -#undef RS6000_BUILTIN_H
> -#undef RS6000_BUILTIN_M
> -#undef RS6000_BUILTIN_P
> -#undef RS6000_BUILTIN_X
> -
> -/* Mappings for overloaded builtins. */
> -struct altivec_builtin_types
> -{
> - enum rs6000_builtins code;
> - enum rs6000_builtins overloaded_code;
> - signed char ret_type;
> - signed char op1;
> - signed char op2;
> - signed char op3;
> -};
> -
> enum rs6000_builtin_type_index
> {
> RS6000_BTI_NOT_OPAQUE,
> @@ -2600,7 +2544,6 @@ enum rs6000_builtin_type_index
> #define ptr_long_long_unsigned_type_node (rs6000_builtin_types[RS6000_BTI_ptr_long_long_unsigned])
>
> extern GTY(()) tree rs6000_builtin_types[RS6000_BTI_MAX];
> -extern GTY(()) tree rs6000_builtin_decls[RS6000_BUILTIN_COUNT];
>
> #ifndef USED_FOR_TARGET
> extern GTY(()) tree builtin_mode_to_type[MAX_MACHINE_MODE][2];
> diff --git a/gcc/config/rs6000/t-rs6000 b/gcc/config/rs6000/t-rs6000
> index 3d3143a171d..98ddd977f96 100644
> --- a/gcc/config/rs6000/t-rs6000
> +++ b/gcc/config/rs6000/t-rs6000
> @@ -18,7 +18,6 @@
> # along with GCC; see the file COPYING3. If not see
> # <http://www.gnu.org/licenses/>.
>
> -TM_H += $(srcdir)/config/rs6000/rs6000-builtin.def
> TM_H += $(srcdir)/config/rs6000/rs6000-cpus.def
> TM_H += $(srcdir)/config/rs6000/rs6000-modes.h
> PASSES_EXTRA += $(srcdir)/config/rs6000/rs6000-passes.def
On Mon, Dec 6, 2021 at 3:49 PM Bill Schmidt <wschmidt@linux.ibm.com> wrote:
>
> Hi!
>
> The old rs6000-builtin.def file is no longer needed. Remove it and the code
> that depends on it.
>
> Bootstrapped and tested on powerpc64le-linux-gnu with no regressions. Is this
> okay for trunk?
>
> Thanks!
> Bill
>
> 2021-12-02 Bill Schmidt <wschmidt@linux.ibm.com>
>
> gcc/
> * config/rs6000/rs6000-builtin.def: Delete.
> * config/rs6000/rs6000-call.c (builtin_compatibility): Delete.
> (builtin_description): Delete.
> (builtin_hash_struct): Delete.
> (builtin_hasher): Delete.
> (builtin_hash_table): Delete.
> (builtin_hasher::hash): Delete.
> (builtin_hasher::equal): Delete.
> (rs6000_builtin_info_type): Delete.
> (rs6000_builtin_info): Delete.
> (bdesc_compat): Delete.
> (bdesc_3arg): Delete.
> (bdesc_4arg): Delete.
> (bdesc_dst): Delete.
> (bdesc_2arg): Delete.
> (bdesc_altivec_preds): Delete.
> (bdesc_abs): Delete.
> (bdesc_1arg): Delete.
> (bdesc_0arg): Delete.
> (bdesc_htm): Delete.
> (bdesc_mma): Delete.
> (rs6000_overloaded_builtin_p): Delete.
> (rs6000_overloaded_builtin_name): Delete.
> (htm_spr_num): Delete.
> (rs6000_builtin_is_supported_p): Delete.
> (rs6000_gimple_fold_mma_builtin): Delete.
> (gt-rs6000-call.h): Remove include directive.
> * config/rs6000/rs6000-protos.h (rs6000_overloaded_builtin_p): Delete.
> (rs6000_builtin_is_supported_p): Delete.
> (rs6000_overloaded_builtin_name): Delete.
> * config/rs6000/rs6000.c (rs6000_builtin_decls): Delete.
> (rs6000_debug_reg_global): Remove reference to RS6000_BUILTIN_COUNT.
> * config/rs6000/rs6000.h (rs6000_builtins): Delete.
> (altivec_builtin_types): Delete.
> (rs6000_builtin_decls): Delete.
> * config/rs6000/t-rs6000 (TM_H): Don't add rs6000-builtin.def.
Okay.
Thanks, David
deleted file mode 100644
@@ -89,20 +89,6 @@
#define TARGET_NO_PROTOTYPE 0
#endif
-struct builtin_compatibility
-{
- const enum rs6000_builtins code;
- const char *const name;
-};
-
-struct builtin_description
-{
- const HOST_WIDE_INT mask;
- const enum insn_code icode;
- const char *const name;
- const enum rs6000_builtins code;
-};
-
/* Used by __builtin_cpu_is(), mapping from PLATFORM names to values. */
static const struct
{
@@ -184,127 +170,6 @@ static const struct
static rtx rs6000_expand_new_builtin (tree, rtx, rtx, machine_mode, int);
static bool rs6000_gimple_fold_new_builtin (gimple_stmt_iterator *gsi);
-
-
-/* Hash table to keep track of the argument types for builtin functions. */
-
-struct GTY((for_user)) builtin_hash_struct
-{
- tree type;
- machine_mode mode[4]; /* return value + 3 arguments. */
- unsigned char uns_p[4]; /* and whether the types are unsigned. */
-};
-
-struct builtin_hasher : ggc_ptr_hash<builtin_hash_struct>
-{
- static hashval_t hash (builtin_hash_struct *);
- static bool equal (builtin_hash_struct *, builtin_hash_struct *);
-};
-
-static GTY (()) hash_table<builtin_hasher> *builtin_hash_table;
-
-/* Hash function for builtin functions with up to 3 arguments and a return
- type. */
-hashval_t
-builtin_hasher::hash (builtin_hash_struct *bh)
-{
- unsigned ret = 0;
- int i;
-
- for (i = 0; i < 4; i++)
- {
- ret = (ret * (unsigned)MAX_MACHINE_MODE) + ((unsigned)bh->mode[i]);
- ret = (ret * 2) + bh->uns_p[i];
- }
-
- return ret;
-}
-
-/* Compare builtin hash entries H1 and H2 for equivalence. */
-bool
-builtin_hasher::equal (builtin_hash_struct *p1, builtin_hash_struct *p2)
-{
- return ((p1->mode[0] == p2->mode[0])
- && (p1->mode[1] == p2->mode[1])
- && (p1->mode[2] == p2->mode[2])
- && (p1->mode[3] == p2->mode[3])
- && (p1->uns_p[0] == p2->uns_p[0])
- && (p1->uns_p[1] == p2->uns_p[1])
- && (p1->uns_p[2] == p2->uns_p[2])
- && (p1->uns_p[3] == p2->uns_p[3]));
-}
-
-
-/* Table that classifies rs6000 builtin functions (pure, const, etc.). */
-#undef RS6000_BUILTIN_0
-#undef RS6000_BUILTIN_1
-#undef RS6000_BUILTIN_2
-#undef RS6000_BUILTIN_3
-#undef RS6000_BUILTIN_4
-#undef RS6000_BUILTIN_A
-#undef RS6000_BUILTIN_D
-#undef RS6000_BUILTIN_H
-#undef RS6000_BUILTIN_M
-#undef RS6000_BUILTIN_P
-#undef RS6000_BUILTIN_X
-
-#define RS6000_BUILTIN_0(ENUM, NAME, MASK, ATTR, ICODE) \
- { NAME, ICODE, MASK, ATTR },
-
-#define RS6000_BUILTIN_1(ENUM, NAME, MASK, ATTR, ICODE) \
- { NAME, ICODE, MASK, ATTR },
-
-#define RS6000_BUILTIN_2(ENUM, NAME, MASK, ATTR, ICODE) \
- { NAME, ICODE, MASK, ATTR },
-
-#define RS6000_BUILTIN_3(ENUM, NAME, MASK, ATTR, ICODE) \
- { NAME, ICODE, MASK, ATTR },
-
-#define RS6000_BUILTIN_4(ENUM, NAME, MASK, ATTR, ICODE) \
- { NAME, ICODE, MASK, ATTR },
-
-#define RS6000_BUILTIN_A(ENUM, NAME, MASK, ATTR, ICODE) \
- { NAME, ICODE, MASK, ATTR },
-
-#define RS6000_BUILTIN_D(ENUM, NAME, MASK, ATTR, ICODE) \
- { NAME, ICODE, MASK, ATTR },
-
-#define RS6000_BUILTIN_H(ENUM, NAME, MASK, ATTR, ICODE) \
- { NAME, ICODE, MASK, ATTR },
-
-#define RS6000_BUILTIN_M(ENUM, NAME, MASK, ATTR, ICODE) \
- { NAME, ICODE, MASK, ATTR },
-
-#define RS6000_BUILTIN_P(ENUM, NAME, MASK, ATTR, ICODE) \
- { NAME, ICODE, MASK, ATTR },
-
-#define RS6000_BUILTIN_X(ENUM, NAME, MASK, ATTR, ICODE) \
- { NAME, ICODE, MASK, ATTR },
-
-struct rs6000_builtin_info_type {
- const char *name;
- const enum insn_code icode;
- const HOST_WIDE_INT mask;
- const unsigned attr;
-};
-
-static const struct rs6000_builtin_info_type rs6000_builtin_info[] =
-{
-#include "rs6000-builtin.def"
-};
-
-#undef RS6000_BUILTIN_0
-#undef RS6000_BUILTIN_1
-#undef RS6000_BUILTIN_2
-#undef RS6000_BUILTIN_3
-#undef RS6000_BUILTIN_4
-#undef RS6000_BUILTIN_A
-#undef RS6000_BUILTIN_D
-#undef RS6000_BUILTIN_H
-#undef RS6000_BUILTIN_M
-#undef RS6000_BUILTIN_P
-#undef RS6000_BUILTIN_X
-
/* Nonzero if we can use a floating-point register to pass this arg. */
#define USE_FP_FOR_ARG_P(CUM,MODE) \
@@ -3130,367 +2995,6 @@ const char *rs6000_type_string (tree type_node)
return "unknown";
}
-static const struct builtin_compatibility bdesc_compat[] =
-{
-#define RS6000_BUILTIN_COMPAT
-#include "rs6000-builtin.def"
-};
-#undef RS6000_BUILTIN_COMPAT
-
-/* Simple ternary operations: VECd = foo (VECa, VECb, VECc). */
-
-#undef RS6000_BUILTIN_0
-#undef RS6000_BUILTIN_1
-#undef RS6000_BUILTIN_2
-#undef RS6000_BUILTIN_3
-#undef RS6000_BUILTIN_4
-#undef RS6000_BUILTIN_A
-#undef RS6000_BUILTIN_D
-#undef RS6000_BUILTIN_H
-#undef RS6000_BUILTIN_M
-#undef RS6000_BUILTIN_P
-#undef RS6000_BUILTIN_X
-
-#define RS6000_BUILTIN_0(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_1(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_2(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_3(ENUM, NAME, MASK, ATTR, ICODE) \
- { MASK, ICODE, NAME, ENUM },
-
-#define RS6000_BUILTIN_4(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_A(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_D(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_H(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_M(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_P(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_X(ENUM, NAME, MASK, ATTR, ICODE)
-
-static const struct builtin_description bdesc_3arg[] =
-{
-#include "rs6000-builtin.def"
-};
-
-/* Simple quaternary operations: VECd = foo (VECa, VECb, VECc, VECd). */
-
-#undef RS6000_BUILTIN_0
-#undef RS6000_BUILTIN_1
-#undef RS6000_BUILTIN_2
-#undef RS6000_BUILTIN_3
-#undef RS6000_BUILTIN_4
-#undef RS6000_BUILTIN_A
-#undef RS6000_BUILTIN_D
-#undef RS6000_BUILTIN_H
-#undef RS6000_BUILTIN_M
-#undef RS6000_BUILTIN_P
-#undef RS6000_BUILTIN_X
-
-#define RS6000_BUILTIN_0(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_1(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_2(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_3(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_4(ENUM, NAME, MASK, ATTR, ICODE) \
- { MASK, ICODE, NAME, ENUM },
-
-#define RS6000_BUILTIN_A(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_D(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_H(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_M(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_P(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_X(ENUM, NAME, MASK, ATTR, ICODE)
-
-static const struct builtin_description bdesc_4arg[] =
-{
-#include "rs6000-builtin.def"
-};
-
-/* DST operations: void foo (void *, const int, const char). */
-
-#undef RS6000_BUILTIN_0
-#undef RS6000_BUILTIN_1
-#undef RS6000_BUILTIN_2
-#undef RS6000_BUILTIN_3
-#undef RS6000_BUILTIN_4
-#undef RS6000_BUILTIN_A
-#undef RS6000_BUILTIN_D
-#undef RS6000_BUILTIN_H
-#undef RS6000_BUILTIN_M
-#undef RS6000_BUILTIN_P
-#undef RS6000_BUILTIN_X
-
-#define RS6000_BUILTIN_0(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_1(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_2(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_3(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_4(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_A(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_D(ENUM, NAME, MASK, ATTR, ICODE) \
- { MASK, ICODE, NAME, ENUM },
-
-#define RS6000_BUILTIN_H(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_M(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_P(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_X(ENUM, NAME, MASK, ATTR, ICODE)
-
-static const struct builtin_description bdesc_dst[] =
-{
-#include "rs6000-builtin.def"
-};
-
-/* Simple binary operations: VECc = foo (VECa, VECb). */
-
-#undef RS6000_BUILTIN_0
-#undef RS6000_BUILTIN_1
-#undef RS6000_BUILTIN_2
-#undef RS6000_BUILTIN_3
-#undef RS6000_BUILTIN_4
-#undef RS6000_BUILTIN_A
-#undef RS6000_BUILTIN_D
-#undef RS6000_BUILTIN_H
-#undef RS6000_BUILTIN_M
-#undef RS6000_BUILTIN_P
-#undef RS6000_BUILTIN_X
-
-#define RS6000_BUILTIN_0(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_1(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_2(ENUM, NAME, MASK, ATTR, ICODE) \
- { MASK, ICODE, NAME, ENUM },
-
-#define RS6000_BUILTIN_3(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_4(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_A(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_D(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_H(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_M(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_P(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_X(ENUM, NAME, MASK, ATTR, ICODE)
-
-static const struct builtin_description bdesc_2arg[] =
-{
-#include "rs6000-builtin.def"
-};
-
-#undef RS6000_BUILTIN_0
-#undef RS6000_BUILTIN_1
-#undef RS6000_BUILTIN_2
-#undef RS6000_BUILTIN_3
-#undef RS6000_BUILTIN_4
-#undef RS6000_BUILTIN_A
-#undef RS6000_BUILTIN_D
-#undef RS6000_BUILTIN_H
-#undef RS6000_BUILTIN_M
-#undef RS6000_BUILTIN_P
-#undef RS6000_BUILTIN_X
-
-#define RS6000_BUILTIN_0(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_1(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_2(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_3(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_4(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_A(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_D(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_H(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_M(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_P(ENUM, NAME, MASK, ATTR, ICODE) \
- { MASK, ICODE, NAME, ENUM },
-
-#define RS6000_BUILTIN_X(ENUM, NAME, MASK, ATTR, ICODE)
-
-/* AltiVec predicates. */
-
-static const struct builtin_description bdesc_altivec_preds[] =
-{
-#include "rs6000-builtin.def"
-};
-
-/* ABS* operations. */
-
-#undef RS6000_BUILTIN_0
-#undef RS6000_BUILTIN_1
-#undef RS6000_BUILTIN_2
-#undef RS6000_BUILTIN_3
-#undef RS6000_BUILTIN_4
-#undef RS6000_BUILTIN_A
-#undef RS6000_BUILTIN_D
-#undef RS6000_BUILTIN_H
-#undef RS6000_BUILTIN_M
-#undef RS6000_BUILTIN_P
-#undef RS6000_BUILTIN_X
-
-#define RS6000_BUILTIN_0(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_1(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_2(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_3(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_4(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_A(ENUM, NAME, MASK, ATTR, ICODE) \
- { MASK, ICODE, NAME, ENUM },
-
-#define RS6000_BUILTIN_D(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_H(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_M(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_P(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_X(ENUM, NAME, MASK, ATTR, ICODE)
-
-static const struct builtin_description bdesc_abs[] =
-{
-#include "rs6000-builtin.def"
-};
-
-/* Simple unary operations: VECb = foo (unsigned literal) or VECb =
- foo (VECa). */
-
-#undef RS6000_BUILTIN_0
-#undef RS6000_BUILTIN_1
-#undef RS6000_BUILTIN_2
-#undef RS6000_BUILTIN_3
-#undef RS6000_BUILTIN_4
-#undef RS6000_BUILTIN_A
-#undef RS6000_BUILTIN_D
-#undef RS6000_BUILTIN_H
-#undef RS6000_BUILTIN_M
-#undef RS6000_BUILTIN_P
-#undef RS6000_BUILTIN_X
-
-#define RS6000_BUILTIN_0(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_1(ENUM, NAME, MASK, ATTR, ICODE) \
- { MASK, ICODE, NAME, ENUM },
-
-#define RS6000_BUILTIN_2(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_3(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_4(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_A(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_D(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_H(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_M(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_P(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_X(ENUM, NAME, MASK, ATTR, ICODE)
-
-static const struct builtin_description bdesc_1arg[] =
-{
-#include "rs6000-builtin.def"
-};
-
-/* Simple no-argument operations: result = __builtin_darn_32 () */
-
-#undef RS6000_BUILTIN_0
-#undef RS6000_BUILTIN_1
-#undef RS6000_BUILTIN_2
-#undef RS6000_BUILTIN_3
-#undef RS6000_BUILTIN_4
-#undef RS6000_BUILTIN_A
-#undef RS6000_BUILTIN_D
-#undef RS6000_BUILTIN_H
-#undef RS6000_BUILTIN_M
-#undef RS6000_BUILTIN_P
-#undef RS6000_BUILTIN_X
-
-#define RS6000_BUILTIN_0(ENUM, NAME, MASK, ATTR, ICODE) \
- { MASK, ICODE, NAME, ENUM },
-
-#define RS6000_BUILTIN_1(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_2(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_3(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_4(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_A(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_D(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_H(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_M(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_P(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_X(ENUM, NAME, MASK, ATTR, ICODE)
-
-static const struct builtin_description bdesc_0arg[] =
-{
-#include "rs6000-builtin.def"
-};
-
-/* HTM builtins. */
-#undef RS6000_BUILTIN_0
-#undef RS6000_BUILTIN_1
-#undef RS6000_BUILTIN_2
-#undef RS6000_BUILTIN_3
-#undef RS6000_BUILTIN_4
-#undef RS6000_BUILTIN_A
-#undef RS6000_BUILTIN_D
-#undef RS6000_BUILTIN_H
-#undef RS6000_BUILTIN_M
-#undef RS6000_BUILTIN_P
-#undef RS6000_BUILTIN_X
-
-#define RS6000_BUILTIN_0(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_1(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_2(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_3(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_4(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_A(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_D(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_H(ENUM, NAME, MASK, ATTR, ICODE) \
- { MASK, ICODE, NAME, ENUM },
-
-#define RS6000_BUILTIN_M(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_P(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_X(ENUM, NAME, MASK, ATTR, ICODE)
-
-static const struct builtin_description bdesc_htm[] =
-{
-#include "rs6000-builtin.def"
-};
-
-/* MMA builtins. */
-#undef RS6000_BUILTIN_0
-#undef RS6000_BUILTIN_1
-#undef RS6000_BUILTIN_2
-#undef RS6000_BUILTIN_3
-#undef RS6000_BUILTIN_4
-#undef RS6000_BUILTIN_A
-#undef RS6000_BUILTIN_D
-#undef RS6000_BUILTIN_H
-#undef RS6000_BUILTIN_M
-#undef RS6000_BUILTIN_P
-#undef RS6000_BUILTIN_X
-
-#define RS6000_BUILTIN_0(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_1(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_2(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_3(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_4(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_A(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_D(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_H(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_M(ENUM, NAME, MASK, ATTR, ICODE) \
- { MASK, ICODE, NAME, ENUM },
-
-#define RS6000_BUILTIN_P(ENUM, NAME, MASK, ATTR, ICODE)
-#define RS6000_BUILTIN_X(ENUM, NAME, MASK, ATTR, ICODE)
-
-static const struct builtin_description bdesc_mma[] =
-{
-#include "rs6000-builtin.def"
-};
-
-#undef RS6000_BUILTIN_0
-#undef RS6000_BUILTIN_1
-#undef RS6000_BUILTIN_2
-#undef RS6000_BUILTIN_3
-#undef RS6000_BUILTIN_4
-#undef RS6000_BUILTIN_A
-#undef RS6000_BUILTIN_D
-#undef RS6000_BUILTIN_H
-#undef RS6000_BUILTIN_M
-#undef RS6000_BUILTIN_P
-#undef RS6000_BUILTIN_X
-
-/* Return true if a builtin function is overloaded. */
-bool
-rs6000_overloaded_builtin_p (enum rs6000_builtins fncode)
-{
- return (rs6000_builtin_info[(int)fncode].attr & RS6000_BTC_OVERLOADED) != 0;
-}
-
-const char *
-rs6000_overloaded_builtin_name (enum rs6000_builtins fncode)
-{
- return rs6000_builtin_info[(int)fncode].name;
-}
-
static rtx
altivec_expand_predicate_builtin (enum insn_code icode, tree exp, rtx target)
{
@@ -3611,24 +3115,6 @@ swap_endian_selector_for_mode (machine_mode mode)
gen_rtvec_v (16, perm)));
}
-/* Return the appropriate SPR number associated with the given builtin. */
-static inline HOST_WIDE_INT
-htm_spr_num (enum rs6000_builtins code)
-{
- if (code == HTM_BUILTIN_GET_TFHAR
- || code == HTM_BUILTIN_SET_TFHAR)
- return TFHAR_SPR;
- else if (code == HTM_BUILTIN_GET_TFIAR
- || code == HTM_BUILTIN_SET_TFIAR)
- return TFIAR_SPR;
- else if (code == HTM_BUILTIN_GET_TEXASR
- || code == HTM_BUILTIN_SET_TEXASR)
- return TEXASR_SPR;
- gcc_assert (code == HTM_BUILTIN_GET_TEXASRU
- || code == HTM_BUILTIN_SET_TEXASRU);
- return TEXASRU_SPR;
-}
-
/* Return the correct ICODE value depending on whether we are
setting or reading the HTM SPRs. */
static inline enum insn_code
@@ -3768,18 +3254,6 @@ altivec_expand_vec_ext_builtin (tree exp, rtx target)
return target;
}
-/* Check whether a builtin function is supported in this target
- configuration. */
-bool
-rs6000_builtin_is_supported_p (enum rs6000_builtins fncode)
-{
- HOST_WIDE_INT fnmask = rs6000_builtin_info[fncode].mask;
- if ((fnmask & rs6000_builtin_mask) != fnmask)
- return false;
- else
- return true;
-}
-
/* Raise an error message for a builtin function that is called without the
appropriate target options being set. */
@@ -4005,190 +3479,6 @@ fold_mergeeo_helper (gimple_stmt_iterator *gsi, gimple *stmt, int use_odd)
gsi_replace (gsi, g, true);
}
-/* Expand the MMA built-ins early, so that we can convert the pass-by-reference
- __vector_quad arguments into pass-by-value arguments, leading to more
- efficient code generation. */
-
-bool
-rs6000_gimple_fold_mma_builtin (gimple_stmt_iterator *gsi)
-{
- gimple *stmt = gsi_stmt (*gsi);
- tree fndecl = gimple_call_fndecl (stmt);
- enum rs6000_builtins fncode
- = (enum rs6000_builtins) DECL_MD_FUNCTION_CODE (fndecl);
- unsigned attr = rs6000_builtin_info[fncode].attr;
-
- if ((attr & RS6000_BTC_GIMPLE) == 0)
- return false;
-
- unsigned nopnds = (attr & RS6000_BTC_OPND_MASK);
- gimple_seq new_seq = NULL;
- gimple *new_call;
- tree new_decl;
-
- if (fncode == MMA_BUILTIN_DISASSEMBLE_ACC
- || fncode == VSX_BUILTIN_DISASSEMBLE_PAIR)
- {
- /* This is an MMA disassemble built-in function. */
- push_gimplify_context (true);
- unsigned nvec = (fncode == MMA_BUILTIN_DISASSEMBLE_ACC) ? 4 : 2;
- tree dst_ptr = gimple_call_arg (stmt, 0);
- tree src_ptr = gimple_call_arg (stmt, 1);
- tree src_type = TREE_TYPE (src_ptr);
- tree src = create_tmp_reg_or_ssa_name (TREE_TYPE (src_type));
- gimplify_assign (src, build_simple_mem_ref (src_ptr), &new_seq);
-
- /* If we are not disassembling an accumulator/pair or our destination is
- another accumulator/pair, then just copy the entire thing as is. */
- if ((fncode == MMA_BUILTIN_DISASSEMBLE_ACC
- && TREE_TYPE (TREE_TYPE (dst_ptr)) == vector_quad_type_node)
- || (fncode == VSX_BUILTIN_DISASSEMBLE_PAIR
- && TREE_TYPE (TREE_TYPE (dst_ptr)) == vector_pair_type_node))
- {
- tree dst = build_simple_mem_ref (build1 (VIEW_CONVERT_EXPR,
- src_type, dst_ptr));
- gimplify_assign (dst, src, &new_seq);
- pop_gimplify_context (NULL);
- gsi_replace_with_seq (gsi, new_seq, true);
- return true;
- }
-
- /* If we're disassembling an accumulator into a different type, we need
- to emit a xxmfacc instruction now, since we cannot do it later. */
- if (fncode == MMA_BUILTIN_DISASSEMBLE_ACC)
- {
- new_decl = rs6000_builtin_decls[MMA_BUILTIN_XXMFACC_INTERNAL];
- new_call = gimple_build_call (new_decl, 1, src);
- src = create_tmp_reg_or_ssa_name (vector_quad_type_node);
- gimple_call_set_lhs (new_call, src);
- gimple_seq_add_stmt (&new_seq, new_call);
- }
-
- /* Copy the accumulator/pair vector by vector. */
- new_decl = rs6000_builtin_decls[fncode + 1];
- tree dst_type = build_pointer_type_for_mode (unsigned_V16QI_type_node,
- ptr_mode, true);
- tree dst_base = build1 (VIEW_CONVERT_EXPR, dst_type, dst_ptr);
- for (unsigned i = 0; i < nvec; i++)
- {
- unsigned index = WORDS_BIG_ENDIAN ? i : nvec - 1 - i;
- tree dst = build2 (MEM_REF, unsigned_V16QI_type_node, dst_base,
- build_int_cst (dst_type, index * 16));
- tree dstssa = create_tmp_reg_or_ssa_name (unsigned_V16QI_type_node);
- new_call = gimple_build_call (new_decl, 2, src,
- build_int_cstu (uint16_type_node, i));
- gimple_call_set_lhs (new_call, dstssa);
- gimple_seq_add_stmt (&new_seq, new_call);
- gimplify_assign (dst, dstssa, &new_seq);
- }
- pop_gimplify_context (NULL);
- gsi_replace_with_seq (gsi, new_seq, true);
- return true;
- }
- else if (fncode == VSX_BUILTIN_LXVP)
- {
- push_gimplify_context (true);
- tree offset = gimple_call_arg (stmt, 0);
- tree ptr = gimple_call_arg (stmt, 1);
- tree lhs = gimple_call_lhs (stmt);
- if (TREE_TYPE (TREE_TYPE (ptr)) != vector_pair_type_node)
- ptr = build1 (VIEW_CONVERT_EXPR,
- build_pointer_type (vector_pair_type_node), ptr);
- tree mem = build_simple_mem_ref (build2 (POINTER_PLUS_EXPR,
- TREE_TYPE (ptr), ptr, offset));
- gimplify_assign (lhs, mem, &new_seq);
- pop_gimplify_context (NULL);
- gsi_replace_with_seq (gsi, new_seq, true);
- return true;
- }
- else if (fncode == VSX_BUILTIN_STXVP)
- {
- push_gimplify_context (true);
- tree src = gimple_call_arg (stmt, 0);
- tree offset = gimple_call_arg (stmt, 1);
- tree ptr = gimple_call_arg (stmt, 2);
- if (TREE_TYPE (TREE_TYPE (ptr)) != vector_pair_type_node)
- ptr = build1 (VIEW_CONVERT_EXPR,
- build_pointer_type (vector_pair_type_node), ptr);
- tree mem = build_simple_mem_ref (build2 (POINTER_PLUS_EXPR,
- TREE_TYPE (ptr), ptr, offset));
- gimplify_assign (mem, src, &new_seq);
- pop_gimplify_context (NULL);
- gsi_replace_with_seq (gsi, new_seq, true);
- return true;
- }
-
- /* Convert this built-in into an internal version that uses pass-by-value
- arguments. The internal built-in follows immediately after this one. */
- new_decl = rs6000_builtin_decls[fncode + 1];
- tree lhs, op[MAX_MMA_OPERANDS];
- tree acc = gimple_call_arg (stmt, 0);
- push_gimplify_context (true);
-
- if ((attr & RS6000_BTC_QUAD) != 0)
- {
- /* This built-in has a pass-by-reference accumulator input, so load it
- into a temporary accumulator for use as a pass-by-value input. */
- op[0] = create_tmp_reg_or_ssa_name (vector_quad_type_node);
- for (unsigned i = 1; i < nopnds; i++)
- op[i] = gimple_call_arg (stmt, i);
- gimplify_assign (op[0], build_simple_mem_ref (acc), &new_seq);
- }
- else
- {
- /* This built-in does not use its pass-by-reference accumulator argument
- as an input argument, so remove it from the input list. */
- nopnds--;
- for (unsigned i = 0; i < nopnds; i++)
- op[i] = gimple_call_arg (stmt, i + 1);
- }
-
- switch (nopnds)
- {
- case 0:
- new_call = gimple_build_call (new_decl, 0);
- break;
- case 1:
- new_call = gimple_build_call (new_decl, 1, op[0]);
- break;
- case 2:
- new_call = gimple_build_call (new_decl, 2, op[0], op[1]);
- break;
- case 3:
- new_call = gimple_build_call (new_decl, 3, op[0], op[1], op[2]);
- break;
- case 4:
- new_call = gimple_build_call (new_decl, 4, op[0], op[1], op[2], op[3]);
- break;
- case 5:
- new_call = gimple_build_call (new_decl, 5, op[0], op[1], op[2], op[3],
- op[4]);
- break;
- case 6:
- new_call = gimple_build_call (new_decl, 6, op[0], op[1], op[2], op[3],
- op[4], op[5]);
- break;
- case 7:
- new_call = gimple_build_call (new_decl, 7, op[0], op[1], op[2], op[3],
- op[4], op[5], op[6]);
- break;
- default:
- gcc_unreachable ();
- }
-
- if (fncode == VSX_BUILTIN_BUILD_PAIR || fncode == VSX_BUILTIN_ASSEMBLE_PAIR)
- lhs = create_tmp_reg_or_ssa_name (vector_pair_type_node);
- else
- lhs = create_tmp_reg_or_ssa_name (vector_quad_type_node);
- gimple_call_set_lhs (new_call, lhs);
- gimple_seq_add_stmt (&new_seq, new_call);
- gimplify_assign (build_simple_mem_ref (acc), lhs, &new_seq);
- pop_gimplify_context (NULL);
- gsi_replace_with_seq (gsi, new_seq, true);
-
- return true;
-}
-
/* Fold a machine-dependent built-in in GIMPLE. (For folding into
a constant, use rs6000_fold_builtin.) */
@@ -7255,5 +6545,3 @@ rs6000_output_mi_thunk (FILE *file, tree thunk_fndecl ATTRIBUTE_UNUSED,
reload_completed = 0;
epilogue_completed = 0;
}
-
-#include "gt-rs6000-call.h"
@@ -272,9 +272,6 @@ extern void rs6000_call_darwin (rtx, rtx, rtx, rtx);
extern void rs6000_sibcall_darwin (rtx, rtx, rtx, rtx);
extern void rs6000_aix_asm_output_dwarf_table_ref (char *);
extern void get_ppc476_thunk_name (char name[32]);
-extern bool rs6000_overloaded_builtin_p (enum rs6000_builtins);
-extern bool rs6000_builtin_is_supported_p (enum rs6000_builtins);
-extern const char *rs6000_overloaded_builtin_name (enum rs6000_builtins);
extern int rs6000_store_data_bypass_p (rtx_insn *, rtx_insn *);
extern HOST_WIDE_INT rs6000_builtin_mask_calculate (void);
extern void rs6000_asm_output_dwarf_pcrel (FILE *file, int size,
@@ -171,7 +171,6 @@ static int dbg_cost_ctrl;
/* Built in types. */
tree rs6000_builtin_types[RS6000_BTI_MAX];
-tree rs6000_builtin_decls[RS6000_BUILTIN_COUNT];
/* Flag to say the TOC is initialized */
int toc_initialized, need_toc_init;
@@ -2585,8 +2584,6 @@ rs6000_debug_reg_global (void)
(int)rs6000_sched_restricted_insns_priority);
fprintf (stderr, DEBUG_FMT_D, "Number of standard builtins",
(int)END_BUILTINS);
- fprintf (stderr, DEBUG_FMT_D, "Number of rs6000 builtins",
- (int)RS6000_BUILTIN_COUNT);
fprintf (stderr, DEBUG_FMT_D, "Enable float128 on VSX",
(int)TARGET_FLOAT128_ENABLE_TYPE);
@@ -2344,62 +2344,6 @@ extern int frame_pointer_needed;
| RS6000_BTM_MMA \
| RS6000_BTM_P10)
-/* Define builtin enum index. */
-
-#undef RS6000_BUILTIN_0
-#undef RS6000_BUILTIN_1
-#undef RS6000_BUILTIN_2
-#undef RS6000_BUILTIN_3
-#undef RS6000_BUILTIN_4
-#undef RS6000_BUILTIN_A
-#undef RS6000_BUILTIN_D
-#undef RS6000_BUILTIN_H
-#undef RS6000_BUILTIN_M
-#undef RS6000_BUILTIN_P
-#undef RS6000_BUILTIN_X
-
-#define RS6000_BUILTIN_0(ENUM, NAME, MASK, ATTR, ICODE) ENUM,
-#define RS6000_BUILTIN_1(ENUM, NAME, MASK, ATTR, ICODE) ENUM,
-#define RS6000_BUILTIN_2(ENUM, NAME, MASK, ATTR, ICODE) ENUM,
-#define RS6000_BUILTIN_3(ENUM, NAME, MASK, ATTR, ICODE) ENUM,
-#define RS6000_BUILTIN_4(ENUM, NAME, MASK, ATTR, ICODE) ENUM,
-#define RS6000_BUILTIN_A(ENUM, NAME, MASK, ATTR, ICODE) ENUM,
-#define RS6000_BUILTIN_D(ENUM, NAME, MASK, ATTR, ICODE) ENUM,
-#define RS6000_BUILTIN_H(ENUM, NAME, MASK, ATTR, ICODE) ENUM,
-#define RS6000_BUILTIN_M(ENUM, NAME, MASK, ATTR, ICODE) ENUM,
-#define RS6000_BUILTIN_P(ENUM, NAME, MASK, ATTR, ICODE) ENUM,
-#define RS6000_BUILTIN_X(ENUM, NAME, MASK, ATTR, ICODE) ENUM,
-
-enum rs6000_builtins
-{
-#include "rs6000-builtin.def"
-
- RS6000_BUILTIN_COUNT
-};
-
-#undef RS6000_BUILTIN_0
-#undef RS6000_BUILTIN_1
-#undef RS6000_BUILTIN_2
-#undef RS6000_BUILTIN_3
-#undef RS6000_BUILTIN_4
-#undef RS6000_BUILTIN_A
-#undef RS6000_BUILTIN_D
-#undef RS6000_BUILTIN_H
-#undef RS6000_BUILTIN_M
-#undef RS6000_BUILTIN_P
-#undef RS6000_BUILTIN_X
-
-/* Mappings for overloaded builtins. */
-struct altivec_builtin_types
-{
- enum rs6000_builtins code;
- enum rs6000_builtins overloaded_code;
- signed char ret_type;
- signed char op1;
- signed char op2;
- signed char op3;
-};
-
enum rs6000_builtin_type_index
{
RS6000_BTI_NOT_OPAQUE,
@@ -2600,7 +2544,6 @@ enum rs6000_builtin_type_index
#define ptr_long_long_unsigned_type_node (rs6000_builtin_types[RS6000_BTI_ptr_long_long_unsigned])
extern GTY(()) tree rs6000_builtin_types[RS6000_BTI_MAX];
-extern GTY(()) tree rs6000_builtin_decls[RS6000_BUILTIN_COUNT];
#ifndef USED_FOR_TARGET
extern GTY(()) tree builtin_mode_to_type[MAX_MACHINE_MODE][2];
@@ -18,7 +18,6 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
-TM_H += $(srcdir)/config/rs6000/rs6000-builtin.def
TM_H += $(srcdir)/config/rs6000/rs6000-cpus.def
TM_H += $(srcdir)/config/rs6000/rs6000-modes.h
PASSES_EXTRA += $(srcdir)/config/rs6000/rs6000-passes.def