[4/6] rs6000: Remove rs6000-builtin.def and associated data and functions

Message ID 3ab6f894048e5f49252a1ea18eeca60843fbe0d3.1638820430.git.wschmidt@linux.ibm.com
State New
Headers
Series Remove "old" built-in function infrastructure |

Commit Message

Bill Schmidt Dec. 6, 2021, 8:49 p.m. UTC
  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

Li, Pan2 via Gcc-patches Dec. 14, 2021, 6 p.m. UTC | #1
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
  
David Edelsohn Dec. 14, 2021, 6:08 p.m. UTC | #2
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
  

Patch

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