29#define MAX_RECOG_ALTERNATIVES 35
33#define ALL_ALTERNATIVES ((alternative_mask) -1)
36#define ALTERNATIVE_BIT(X) ((alternative_mask) 1 << (X))
53 ENUM_BITFIELD (reg_class)
cl : 16;
98 return (alt[
i].matches >= 0
130 rtx ) {
return true; }
252#define memory_address_p(mode,addr) \
253 memory_address_addr_space_p ((mode), (addr), ADDR_SPACE_GENERIC)
256#define strict_memory_address_p(mode,addr) \
257 strict_memory_address_addr_space_p ((mode), (addr), ADDR_SPACE_GENERIC)
273#define offsettable_address_p(strict,mode,addr) \
274 offsettable_address_addr_space_p ((strict), (mode), (addr), \
279#ifndef GENERATOR_FILE
289#ifndef GENERATOR_FILE
309#ifndef GENERATOR_FILE
334 while (*
r !=
'\0' && *
r !=
',')
442#ifndef GENERATOR_FILE
468 template<
typename ...Ts>
472 return ((funcptr)
func) (args...);
492 ENUM_BITFIELD(machine_mode)
const mode : 16;
505#define INSN_OUTPUT_FORMAT_NONE 0
506#define INSN_OUTPUT_FORMAT_SINGLE 1
507#define INSN_OUTPUT_FORMAT_MULTI 2
508#define INSN_OUTPUT_FORMAT_FUNCTION 3
513#if HAVE_DESIGNATED_UNION_INITIALIZERS
516 const char *
const *
multi;
539#ifndef GENERATOR_FILE
540#include "insn-codes.h"
562#define this_target_recog (&default_target_recog)
int m_old_num_changes
Definition recog.h:619
void keep()
Definition recog.h:616
insn_change_watermark()
Definition recog.h:614
~insn_change_watermark()
Definition recog.h:622
rtx from
Definition recog.h:153
bool apply_to_rvalue(rtx *)
Definition recog.cc:1453
virtual bool check_mem(int, rtx)
Definition recog.h:129
bool apply_to_mem_1(rtx)
Definition recog.cc:1026
rtx_insn * insn
Definition recog.h:149
bool apply_to_rvalue_1(rtx *)
Definition recog.cc:1047
rtx to
Definition recog.h:154
bool apply_to_note(rtx *)
Definition recog.cc:1466
uint16_t result_flags
Definition recog.h:161
unsigned int num_replacements
Definition recog.h:157
static const uint16_t FIRST_SPARE_RESULT
Definition recog.h:118
bool apply_to_lvalue_1(rtx)
Definition recog.cc:1342
static const uint16_t UNSIMPLIFIED
Definition recog.h:117
uint16_t should_check_mems
Definition recog.h:168
bool apply_to_pattern(rtx *)
Definition recog.cc:1440
const char * failure_reason
Definition recog.h:177
uint16_t should_unshare
Definition recog.h:165
uint16_t should_note_simplifications
Definition recog.h:171
bool apply_to_pattern_1(rtx *)
Definition recog.cc:1379
insn_propagation(rtx_insn *)
Definition recog.h:200
uint16_t spare
Definition recog.h:174
virtual void note_simplification(int, uint16_t, rtx, rtx)
Definition recog.h:137
recog_data_saver()
Definition recog.h:438
~recog_data_saver()
Definition recog.h:439
recog_data_d m_saved_data
Definition recog.h:436
temporary_volatile_ok(const temporary_volatile_ok &)
int save_volatile_ok
Definition recog.h:358
temporary_volatile_ok(int value)
Definition recog.h:349
~temporary_volatile_ok()
Definition recog.h:354
undo_recog_changes(int)
Definition recog.cc:633
~undo_recog_changes()
Definition recog.cc:642
static int s_num_changes
Definition recog.h:231
static bool is_active()
Definition recog.h:226
int m_old_num_changes
Definition recog.h:229
struct basic_block_def * basic_block
Definition coretypes.h:355
struct rtx_def * rtx
Definition coretypes.h:57
unsigned char addr_space_t
Definition coretypes.h:184
const struct rtx_def * const_rtx
Definition coretypes.h:58
int reg_class_t
Definition coretypes.h:376
uint64_t alternative_mask
Definition genattrtab.cc:236
vec< const char * > register_filters
Definition gensupport.cc:408
HARD_REG_ELT_TYPE HARD_REG_SET
Definition hard-reg-set.h:47
poly_int< N, C > r
Definition poly-int.h:774
i
Definition poly-int.h:776
const operand_alternative * recog_op_alt
Definition recog.cc:78
int which_alternative
Definition recog.cc:87
int peep2_current_count
Definition recog.cc:3659
struct recog_data_d recog_data
Definition recog.cc:73
int volatile_ok
Definition recog.cc:71
bool raw_constraint_p
Definition recog.cc:90
struct target_recog default_target_recog
Definition recog.cc:58
rtx peep2_find_free_register(int from, int to, const char *class_str, machine_mode mode, HARD_REG_SET *reg_set)
Definition recog.cc:3737
const struct insn_data_d insn_data[]
int recog_memoized(rtx_insn *insn)
Definition recog.h:320
bool valid_insn_p(rtx_insn *)
Definition recog.cc:1478
bool offsettable_memref_p(rtx)
Definition recog.cc:2487
void extract_constrain_insn_cached(rtx_insn *)
Definition recog.cc:2789
rtx_insn * peephole2_insns(rtx, rtx_insn *, int *)
bool validate_replace_rtx_subexp(rtx, rtx, rtx_insn *, rtx *)
Definition recog.cc:898
bool canonicalize_change_group(rtx_insn *insn, rtx x)
Definition recog.cc:325
op_type
Definition recog.h:39
@ OP_IN
Definition recog.h:40
@ OP_INOUT
Definition recog.h:42
@ OP_OUT
Definition recog.h:41
const operand_alternative * preprocess_insn_constraints(unsigned int)
Definition recog.cc:3045
bool constrain_operands(int, alternative_mask)
Definition recog.cc:3130
bool validate_change_xveclen(rtx, rtx *, int, bool)
Definition recog.cc:314
void cancel_changes(int)
Definition recog.cc:596
alternative_mask get_enabled_alternatives(rtx_insn *)
Definition recog.cc:2709
bool mode_dependent_address_p(rtx, addr_space_t)
Definition recog.cc:2609
bool strict_memory_address_addr_space_p(machine_mode, rtx, addr_space_t, code_helper=ERROR_MARK)
Definition reload.cc:2164
bool if_test_bypass_p(rtx_insn *, rtx_insn *)
Definition recog.cc:4374
bool validate_simplify_insn(rtx_insn *insn)
Definition recog.cc:987
void validate_replace_rtx_group(rtx, rtx, rtx_insn *)
Definition recog.cc:941
void recog_init()
Definition recog.cc:4732
unsigned int alternative_register_filters(const operand_alternative *alt, int i)
Definition recog.h:96
#define this_target_recog
Definition recog.h:562
int asm_operand_ok(rtx, const char *, const char **)
Definition recog.cc:2272
rtx_insn * peep2_next_insn(int)
Definition recog.cc:3680
bool validate_replace_rtx_part(rtx, rtx, rtx *, rtx_insn *)
Definition recog.cc:921
void confirm_change_group(void)
Definition recog.cc:537
const operand_alternative * which_op_alt()
Definition recog.h:450
void extract_constrain_insn(rtx_insn *insn)
Definition recog.cc:2779
enum reg_class alternative_class(const operand_alternative *alt, int i)
Definition recog.h:87
void copy_frame_info_to_split_insn(rtx_insn *, rtx_insn *)
Definition recog.cc:3879
void init_recog(void)
Definition recog.cc:112
bool added_clobbers_hard_reg_p(int)
bool validate_replace_rtx(rtx, rtx, rtx_insn *)
Definition recog.cc:908
bool verify_changes(int)
Definition recog.cc:435
bool validate_replace_rtx_part_nosimplify(rtx, rtx, rtx *, rtx_insn *)
Definition recog.cc:929
bool peep2_reg_dead_p(int, rtx)
Definition recog.cc:3707
int recog(rtx, rtx_insn *, int *)
void validate_replace_src_group(rtx, rtx, rtx_insn *)
Definition recog.cc:972
int num_validated_changes(void)
Definition recog.cc:588
int num_changes_pending(void)
Definition recog.cc:426
bool memory_address_addr_space_p(machine_mode, rtx, addr_space_t, code_helper=ERROR_MARK)
Definition recog.cc:1878
alternative_mask get_preferred_alternatives(rtx_insn *)
Definition recog.cc:2719
bool constrain_operands_cached(rtx_insn *, int)
Definition recog.cc:2800
bool_attr
Definition recog.h:544
@ BA_PREFERRED_FOR_SPEED
Definition recog.h:546
@ BA_PREFERRED_FOR_SIZE
Definition recog.h:547
@ BA_ENABLED
Definition recog.h:545
@ BA_LAST
Definition recog.h:548
bool validate_unshare_change(rtx, rtx *, rtx, bool)
Definition recog.cc:305
bool check_asm_operands(rtx)
Definition recog.cc:141
bool store_data_bypass_p(rtx_insn *, rtx_insn *)
Definition recog.cc:4342
bool insn_invalid_p(rtx_insn *, bool)
Definition recog.cc:361
bool validate_change(rtx, rtx *, rtx, bool)
Definition recog.cc:296
bool offsettable_address_addr_space_p(int, machine_mode, rtx, addr_space_t)
Definition recog.cc:2516
void extract_insn_cached(rtx_insn *)
Definition recog.cc:2767
void extract_insn(rtx_insn *)
Definition recog.cc:2811
struct recog_data_d recog_data
Definition recog.cc:73
void insn_extract(rtx_insn *)
int volatile_ok
Definition recog.cc:71
const char *(* insn_output_fn)(rtx *, rtx_insn *)
Definition recog.h:462
bool offsettable_nonstrict_memref_p(rtx)
Definition recog.cc:2498
bool apply_change_group(void)
Definition recog.cc:570
bool check_bool_attrs(rtx_insn *)
Definition recog.cc:2748
void init_recog_no_volatile(void)
Definition recog.cc:106
bool reg_fits_class_p(const_rtx, reg_class_t, int, machine_mode)
Definition recog.cc:3455
bool peep2_regno_dead_p(int, int)
Definition recog.cc:3693
void preprocess_constraints(int, int, const char **, operand_alternative *, rtx **)
Definition recog.cc:2922
const char * skip_alternative(const char *p)
Definition recog.h:331
void add_clobbers(rtx, int)
bool(* insn_operand_predicate_fn)(rtx, machine_mode)
Definition recog.h:461
#define INSN_CODE(INSN)
Definition rtl.h:1538
#define NULL_RTX
Definition rtl.h:706
rtx PATTERN(const_rtx insn)
Definition rtl.h:1506
const struct insn_operand_data *const operand
Definition recog.h:527
const char *const * multi
Definition recog.h:522
const char n_alternatives
Definition recog.h:532
struct insn_data_d::@203104213312346317206066302163117071010065246205 output
const char n_generator_args
Definition recog.h:529
insn_output_fn function
Definition recog.h:523
const char n_operands
Definition recog.h:530
const insn_gen_fn genfun
Definition recog.h:526
const char n_dups
Definition recog.h:531
const char *const name
Definition recog.h:512
const char * single
Definition recog.h:521
const char output_format
Definition recog.h:533
stored_funcptr func
Definition recog.h:483
rtx_insn * operator()(Ts... args) const
Definition recog.h:469
void(* stored_funcptr)(void)
Definition recog.h:466
insn_gen_fn operator*(void) const
Definition recog.h:477
const char eliminable
Definition recog.h:498
enum machine_mode const mode
Definition recog.h:492
const insn_operand_predicate_fn predicate
Definition recog.h:488
const char strict_low
Definition recog.h:494
const char *const constraint
Definition recog.h:490
const char allows_mem
Definition recog.h:500
const char is_operator
Definition recog.h:496
const char * constraint
Definition recog.h:50
unsigned int register_filters
Definition recog.h:69
unsigned int memory_ok
Definition recog.h:75
enum reg_class cl
Definition recog.h:53
int matched
Definition recog.h:64
int matches
Definition recog.h:60
unsigned int unsigned int earlyclobber
Definition recog.h:72
unsigned int anything_ok
Definition recog.h:80
unsigned int reject
Definition recog.h:57
unsigned int is_address
Definition recog.h:77
char dup_num[MAX_DUP_OPERANDS]
Definition recog.h:402
rtx * operand_loc[MAX_RECOG_OPERANDS]
Definition recog.h:382
machine_mode operand_mode[MAX_RECOG_OPERANDS]
Definition recog.h:391
char is_operator[MAX_RECOG_OPERANDS]
Definition recog.h:388
rtx_insn * insn
Definition recog.h:427
char n_dups
Definition recog.h:418
char n_alternatives
Definition recog.h:421
enum op_type operand_type[MAX_RECOG_OPERANDS]
Definition recog.h:394
bool is_asm
Definition recog.h:424
const char * constraints[MAX_RECOG_OPERANDS]
Definition recog.h:385
rtx operand[MAX_RECOG_OPERANDS]
Definition recog.h:379
rtx * dup_loc[MAX_DUP_OPERANDS]
Definition recog.h:398
char n_operands
Definition recog.h:415
operand_alternative * x_op_alt[NUM_INSN_CODES]
Definition recog.h:555
alternative_mask x_bool_attr_masks[NUM_INSN_CODES][BA_LAST+1]
Definition recog.h:554
bool x_initialized
Definition recog.h:553
#define false
Definition system.h:888
#define IN_RANGE(VALUE, LOWER, UPPER)
Definition system.h:324
#define bool
Definition system.h:886
#define gcc_checking_assert(EXPR)
Definition system.h:821
#define MAX(X, Y)
Definition system.h:397