rs6000: Remove rs6000-builtin.def and associated data and functions
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.
This commit is contained in:
parent
9791218762
commit
9e855d235a
File diff suppressed because it is too large
Load Diff
@ -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.) */
|
||||
|
||||
@ -7262,5 +6552,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
|
||||
|
Loading…
Reference in New Issue
Block a user