20#ifndef GCC_HARD_REG_SET_H
21#define GCC_HARD_REG_SET_H
45#if FIRST_PSEUDO_REGISTER <= HOST_BITS_PER_WIDEST_FAST_INT
52#define HARD_REG_SET_LONGS \
53 ((FIRST_PSEUDO_REGISTER + HOST_BITS_PER_WIDEST_FAST_INT - 1) \
54 / HOST_BITS_PER_WIDEST_FAST_INT)
62 for (
unsigned int i = 0;
i < ARRAY_SIZE (elts); ++
i)
63 res.elts[
i] = ~elts[
i];
71 for (
unsigned int i = 0;
i < ARRAY_SIZE (elts); ++
i)
72 res.elts[
i] = elts[
i] & other.elts[
i];
79 for (
unsigned int i = 0;
i < ARRAY_SIZE (elts); ++
i)
80 elts[
i] &= other.elts[
i];
88 for (
unsigned int i = 0;
i < ARRAY_SIZE (elts); ++
i)
89 res.elts[
i] = elts[
i] | other.elts[
i];
96 for (
unsigned int i = 0;
i < ARRAY_SIZE (elts); ++
i)
97 elts[
i] |= other.elts[
i];
105 for (
unsigned int i = 0;
i < ARRAY_SIZE (elts); ++
i)
106 bad |= (elts[
i] ^ other.elts[
i]);
143#define HARD_CONST(X) ((HARD_REG_ELT_TYPE) (X))
162#define UHOST_BITS_PER_WIDE_INT ((unsigned) HOST_BITS_PER_WIDEST_FAST_INT)
164#if FIRST_PSEUDO_REGISTER <= HOST_BITS_PER_WIDEST_FAST_INT
166#define SET_HARD_REG_BIT(SET, BIT) \
167 ((SET) |= HARD_CONST (1) << (BIT))
168#define CLEAR_HARD_REG_BIT(SET, BIT) \
169 ((SET) &= ~(HARD_CONST (1) << (BIT)))
170#define TEST_HARD_REG_BIT(SET, BIT) \
171 (!!((SET) & (HARD_CONST (1) << (BIT))))
173#define CLEAR_HARD_REG_SET(TO) ((TO) = HARD_CONST (0))
174#define SET_HARD_REG_SET(TO) ((TO) = ~ HARD_CONST (0))
248 for (
unsigned int i = 0;
i < ARRAY_SIZE (
set.elts); ++
i)
255 for (
unsigned int i = 0;
i < ARRAY_SIZE (
set.elts); ++
i)
263 for (
unsigned int i = 0;
i < ARRAY_SIZE (x.elts); ++
i)
264 bad |= (x.elts[
i] & ~
y.elts[
i]);
272 for (
unsigned int i = 0;
i < ARRAY_SIZE (x.elts); ++
i)
273 good |= (x.elts[
i] &
y.elts[
i]);
281 for (
unsigned int i = 0;
i < ARRAY_SIZE (x.elts); ++
i)
290 for (
unsigned int i = 0;
i < ARRAY_SIZE (x.elts); ++
i)
306 i < ARRAY_SIZE (x.elts); ++
i)
343#define HARD_REG_ELT_BITS UHOST_BITS_PER_WIDE_INT
349 unsigned min,
unsigned *regno)
351#ifdef HARD_REG_SET_LONGS
353 iter->
length = HARD_REG_SET_LONGS;
381 return (*regno < FIRST_PSEUDO_REGISTER);
401 iter->
bits &= ~ HARD_CONST (1);
406#define EXECUTE_IF_SET_IN_HARD_REG_SET(SET, MIN, REGNUM, ITER) \
407 for (hard_reg_set_iter_init (&(ITER), (SET), (MIN), &(REGNUM)); \
408 hard_reg_set_iter_set (&(ITER), &(REGNUM)); \
409 hard_reg_set_iter_next (&(ITER), &(REGNUM)))
525#define this_target_hard_regs (&default_target_hard_regs)
528#define accessible_reg_set \
529 (this_target_hard_regs->x_accessible_reg_set)
530#define operand_reg_set \
531 (this_target_hard_regs->x_operand_reg_set)
533 (this_target_hard_regs->x_fixed_regs)
534#define fixed_reg_set \
535 (this_target_hard_regs->x_fixed_reg_set)
536#define fixed_nonglobal_reg_set \
537 (this_target_hard_regs->x_fixed_nonglobal_reg_set)
539#define call_used_regs \
540 (this_target_hard_regs->x_call_used_regs)
542#define savable_regs \
543 (this_target_hard_regs->x_savable_regs)
545#define regs_invalidated_by_call \
546 (this_target_hard_regs->x_regs_invalidated_by_call)
547#define call_used_or_fixed_regs \
548 (regs_invalidated_by_call | fixed_reg_set)
550#define eh_return_data_regs \
551 (this_target_hard_regs->x_eh_return_data_regs)
552#define reg_alloc_order \
553 (this_target_hard_regs->x_reg_alloc_order)
554#define inv_reg_alloc_order \
555 (this_target_hard_regs->x_inv_reg_alloc_order)
556#define reg_class_contents \
557 (this_target_hard_regs->x_reg_class_contents)
558#define class_only_fixed_regs \
559 (this_target_hard_regs->x_class_only_fixed_regs)
560#define reg_class_size \
561 (this_target_hard_regs->x_reg_class_size)
562#define reg_class_subclasses \
563 (this_target_hard_regs->x_reg_class_subclasses)
564#define reg_class_subunion \
565 (this_target_hard_regs->x_reg_class_subunion)
566#define reg_class_superunion \
567 (this_target_hard_regs->x_reg_class_superunion)
569 (this_target_hard_regs->x_reg_names)
577#define REG_CAN_CHANGE_MODE_P(REGN, FROM, TO) \
578 (targetm.can_change_mode_class (FROM, TO, REGNO_REG_CLASS (REGN)))
585call_used_or_fixed_reg_p (
unsigned int regno)
static unsigned int count[debug_counter_number_of_counters]
Definition dbgcnt.cc:50
dump_flags_t & operator&=(dump_flags_t &lhs, dump_flags_t rhs)
Definition dumpfile.h:240
dump_flags_t & operator|=(dump_flags_t &lhs, dump_flags_t rhs)
Definition dumpfile.h:232
dump_flags_t operator&(dump_flags_t lhs, dump_flags_t rhs)
Definition dumpfile.h:219
dump_flags_t operator~(dump_flags_t flags)
Definition dumpfile.h:226
dump_flags_t operator|(dump_flags_t lhs, dump_flags_t rhs)
Definition dumpfile.h:212
static bool operator!=(cfa_reg &cfa, rtx reg)
Definition dwarf2cfi.cc:1174
static bool operator==(cfa_reg &cfa, rtx reg)
Definition dwarf2cfi.cc:1164
#define SET_HARD_REG_SET(TO)
Definition hard-reg-set.h:174
bool hard_reg_set_subset_p(const_hard_reg_set x, const_hard_reg_set y)
Definition hard-reg-set.h:177
void hard_reg_set_iter_next(hard_reg_set_iterator *iter, unsigned *)
Definition hard-reg-set.h:398
#define HARD_REG_ELT_BITS
Definition hard-reg-set.h:343
#define this_target_hard_regs
Definition hard-reg-set.h:525
unsigned HOST_WIDEST_FAST_INT HARD_REG_ELT_TYPE
Definition hard-reg-set.h:43
bool hard_reg_set_iter_set(hard_reg_set_iterator *iter, unsigned *regno)
Definition hard-reg-set.h:368
int hard_reg_set_first_diff(const_hard_reg_set x, const_hard_reg_set y, unsigned skip)
Definition hard-reg-set.h:205
#define TEST_HARD_REG_BIT(SET, BIT)
Definition hard-reg-set.h:170
#define CLEAR_HARD_REG_BIT(SET, BIT)
Definition hard-reg-set.h:168
char global_regs[FIRST_PSEUDO_REGISTER]
Definition reginfo.cc:92
HARD_REG_ELT_TYPE HARD_REG_SET
Definition hard-reg-set.h:47
bool hard_reg_set_intersect_p(const_hard_reg_set x, const_hard_reg_set y)
Definition hard-reg-set.h:183
#define HARD_CONST(X)
Definition hard-reg-set.h:143
#define fixed_regs
Definition hard-reg-set.h:532
int hard_reg_set_popcount(const_hard_reg_set x)
Definition hard-reg-set.h:195
#define CLEAR_HARD_REG_SET(TO)
Definition hard-reg-set.h:173
void hard_reg_set_iter_init(hard_reg_set_iterator *iter, const_hard_reg_set set, unsigned min, unsigned *regno)
Definition hard-reg-set.h:348
const char * reg_class_names[]
Definition reginfo.cc:119
bool hard_reg_set_empty_p(const_hard_reg_set x)
Definition hard-reg-set.h:189
#define UHOST_BITS_PER_WIDE_INT
Definition hard-reg-set.h:162
HARD_REG_SET global_reg_set
Definition reginfo.cc:95
#define SET_HARD_REG_BIT(SET, BIT)
Definition hard-reg-set.h:166
struct target_hard_regs default_target_hard_regs
Definition reginfo.cc:63
const HARD_REG_SET const_hard_reg_set
Definition hard-reg-set.h:48
int ctz_hwi(unsigned HOST_WIDE_INT x)
Definition hwint.cc:86
int popcount_hwi(unsigned HOST_WIDE_INT x)
Definition hwint.cc:111
#define HOST_WIDEST_FAST_INT
Definition hwint.h:154
wide_int mask(unsigned int, bool, unsigned int)
Definition wide-int.h:3992
i
Definition poly-int.h:776
Definition array-traits.h:35
Definition hard-reg-set.h:136
HARD_REG_SET set
Definition hard-reg-set.h:137
Definition hard-reg-set.h:327
unsigned short length
Definition hard-reg-set.h:332
const HARD_REG_ELT_TYPE * pelt
Definition hard-reg-set.h:329
unsigned short word_no
Definition hard-reg-set.h:335
HARD_REG_ELT_TYPE bits
Definition hard-reg-set.h:340
Definition hash-traits.h:303
static const size_t constant_size
Definition array-traits.h:29
T element_type
Definition array-traits.h:27
static const bool has_constant_size
Definition array-traits.h:28
static const T * base(const T &x)
Definition array-traits.h:30
static size_t size(const T &)
Definition array-traits.h:31
Definition hard-reg-set.h:427
static hashval_t hash(const simplifiable_subreg *)
Definition reginfo.cc:1176
static bool equal(const simplifiable_subreg *, const subreg_shape *)
Definition reginfo.cc:1184
const subreg_shape * compare_type
Definition hard-reg-set.h:428
Definition hard-reg-set.h:434
int x_reg_alloc_order[FIRST_PSEUDO_REGISTER]
Definition hard-reg-set.h:487
HARD_REG_SET x_fixed_nonglobal_reg_set
Definition hard-reg-set.h:473
char x_call_used_regs[FIRST_PSEUDO_REGISTER]
Definition hard-reg-set.h:457
char x_fixed_regs[FIRST_PSEUDO_REGISTER]
Definition hard-reg-set.h:448
int x_inv_reg_alloc_order[FIRST_PSEUDO_REGISTER]
Definition hard-reg-set.h:490
enum reg_class x_reg_class_subunion[N_REG_CLASSES][N_REG_CLASSES]
Definition hard-reg-set.h:507
bool x_class_only_fixed_regs[N_REG_CLASSES]
Definition hard-reg-set.h:497
unsigned int x_reg_class_size[N_REG_CLASSES]
Definition hard-reg-set.h:500
HARD_REG_SET x_reg_class_contents[N_REG_CLASSES]
Definition hard-reg-set.h:493
const char * x_reg_names[FIRST_PSEUDO_REGISTER]
Definition hard-reg-set.h:514
HARD_REG_SET x_accessible_reg_set
Definition hard-reg-set.h:438
hash_table< simplifiable_subregs_hasher > * x_simplifiable_subregs
Definition hard-reg-set.h:518
HARD_REG_SET x_savable_regs
Definition hard-reg-set.h:467
HARD_REG_SET x_eh_return_data_regs
Definition hard-reg-set.h:484
enum reg_class x_reg_class_subclasses[N_REG_CLASSES][N_REG_CLASSES]
Definition hard-reg-set.h:503
HARD_REG_SET x_operand_reg_set
Definition hard-reg-set.h:442
enum reg_class x_reg_class_superunion[N_REG_CLASSES][N_REG_CLASSES]
Definition hard-reg-set.h:511
void finalize()
Definition reginfo.cc:1354
HARD_REG_SET x_fixed_reg_set
Definition hard-reg-set.h:451
HARD_REG_SET x_regs_invalidated_by_call
Definition hard-reg-set.h:481
const T2 & y
Definition wide-int.h:3870