29#define MAX_RECOG_ALTERNATIVES 35
33#define ALL_ALTERNATIVES ((alternative_mask) -1)
36#define ALTERNATIVE_BIT(X) ((alternative_mask) 1 << (X))
98 return (
alt[
i].matches >= 0
100 :
alt[
i].register_filters);
129 rtx ) {
return true; }
187 num_replacements (0),
190 should_check_mems (
false),
191 should_note_simplifications (
false),
224#define memory_address_p(mode,addr) \
225 memory_address_addr_space_p ((mode), (addr), ADDR_SPACE_GENERIC)
228#define strict_memory_address_p(mode,addr) \
229 strict_memory_address_addr_space_p ((mode), (addr), ADDR_SPACE_GENERIC)
245#define offsettable_address_p(strict,mode,addr) \
246 offsettable_address_addr_space_p ((strict), (mode), (addr), \
251#ifndef GENERATOR_FILE
261#ifndef GENERATOR_FILE
281#ifndef GENERATOR_FILE
306 while (*
r !=
'\0' && *
r !=
',')
411#ifndef GENERATOR_FILE
437 template<
typename ...Ts>
474#define INSN_OUTPUT_FORMAT_NONE 0
475#define INSN_OUTPUT_FORMAT_SINGLE 1
476#define INSN_OUTPUT_FORMAT_MULTI 2
477#define INSN_OUTPUT_FORMAT_FUNCTION 3
482#if HAVE_DESIGNATED_UNION_INITIALIZERS
485 const char *
const *
multi;
508#ifndef GENERATOR_FILE
509#include "insn-codes.h"
531#define this_target_recog (&default_target_recog)
int m_old_num_changes
Definition recog.h:588
void keep()
Definition recog.h:585
insn_change_watermark()
Definition recog.h:583
~insn_change_watermark()
Definition recog.h:591
rtx from
Definition recog.h:152
bool apply_to_rvalue(rtx *)
Definition recog.cc:1406
virtual bool check_mem(int, rtx)
Definition recog.h:128
bool apply_to_mem_1(rtx)
Definition recog.cc:1026
rtx_insn * insn
Definition recog.h:148
bool apply_to_rvalue_1(rtx *)
Definition recog.cc:1047
rtx to
Definition recog.h:153
uint16_t result_flags
Definition recog.h:160
unsigned int num_replacements
Definition recog.h:156
static const uint16_t FIRST_SPARE_RESULT
Definition recog.h:118
bool apply_to_lvalue_1(rtx)
Definition recog.cc:1295
static const uint16_t UNSIMPLIFIED
Definition recog.h:117
uint16_t should_check_mems
Definition recog.h:167
bool apply_to_pattern(rtx *)
Definition recog.cc:1393
const char * failure_reason
Definition recog.h:176
uint16_t should_unshare
Definition recog.h:164
uint16_t should_note_simplifications
Definition recog.h:170
bool apply_to_pattern_1(rtx *)
Definition recog.cc:1332
insn_propagation(rtx_insn *)
Definition recog.h:199
uint16_t spare
Definition recog.h:173
virtual void note_simplification(int, uint16_t, rtx, rtx)
Definition recog.h:136
Definition genmatch.cc:817
recog_data_saver()
Definition recog.h:407
~recog_data_saver()
Definition recog.h:408
recog_data_d m_saved_data
Definition recog.h:405
temporary_volatile_ok(const temporary_volatile_ok &)
int save_volatile_ok
Definition recog.h:330
temporary_volatile_ok(int value)
Definition recog.h:321
~temporary_volatile_ok()
Definition recog.h:326
struct rtx_def * rtx
Definition coretypes.h:57
unsigned char addr_space_t
Definition coretypes.h:174
int reg_class_t
Definition coretypes.h:366
uint64_t alternative_mask
Definition genattrtab.cc:235
vec< const char * > register_filters
Definition gensupport.cc:408
T * ggc_alloc(ALONE_CXX_MEM_STAT_INFO)
Definition ggc.h:184
HARD_REG_ELT_TYPE HARD_REG_SET
Definition hard-reg-set.h:47
poly_int< N, C > r
Definition poly-int.h:770
i
Definition poly-int.h:772
rtx peep2_find_free_register(int from, int to, const char *class_str, machine_mode mode, HARD_REG_SET *reg_set)
Definition recog.cc:3663
const struct insn_data_d insn_data[]
int recog_memoized(rtx_insn *insn)
Definition recog.h:292
const operand_alternative * recog_op_alt
Definition recog.cc:77
bool valid_insn_p(rtx_insn *)
Definition recog.cc:1418
bool offsettable_memref_p(rtx)
Definition recog.cc:2417
void extract_constrain_insn_cached(rtx_insn *)
Definition recog.cc:2719
int which_alternative
Definition recog.cc:86
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:316
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:2975
bool constrain_operands(int, alternative_mask)
Definition recog.cc:3060
bool validate_change_xveclen(rtx, rtx *, int, bool)
Definition recog.cc:305
void cancel_changes(int)
Definition recog.cc:587
alternative_mask get_enabled_alternatives(rtx_insn *)
Definition recog.cc:2639
bool mode_dependent_address_p(rtx, addr_space_t)
Definition recog.cc:2539
bool strict_memory_address_addr_space_p(machine_mode, rtx, addr_space_t, code_helper=ERROR_MARK)
Definition reload.cc:2164
void temporarily_undo_changes(int)
Definition recog.cc:629
bool if_test_bypass_p(rtx_insn *, rtx_insn *)
Definition recog.cc:4300
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:4658
unsigned int alternative_register_filters(const operand_alternative *alt, int i)
Definition recog.h:96
#define this_target_recog
Definition recog.h:531
int asm_operand_ok(rtx, const char *, const char **)
Definition recog.cc:2212
rtx_insn * peep2_next_insn(int)
Definition recog.cc:3606
bool validate_replace_rtx_part(rtx, rtx, rtx *, rtx_insn *)
Definition recog.cc:921
void confirm_change_group(void)
Definition recog.cc:528
const operand_alternative * which_op_alt()
Definition recog.h:419
void extract_constrain_insn(rtx_insn *insn)
Definition recog.cc:2709
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:3805
void init_recog(void)
Definition recog.cc:108
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:426
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:3633
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:579
void redo_changes(int)
Definition recog.cc:642
uint64_t alternative_mask
Definition recog.h:30
int num_changes_pending(void)
Definition recog.cc:417
bool memory_address_addr_space_p(machine_mode, rtx, addr_space_t, code_helper=ERROR_MARK)
Definition recog.cc:1818
alternative_mask get_preferred_alternatives(rtx_insn *)
Definition recog.cc:2649
bool constrain_operands_cached(rtx_insn *, int)
Definition recog.cc:2730
bool_attr
Definition recog.h:513
@ BA_PREFERRED_FOR_SPEED
Definition recog.h:515
@ BA_PREFERRED_FOR_SIZE
Definition recog.h:516
@ BA_ENABLED
Definition recog.h:514
@ BA_LAST
Definition recog.h:517
bool validate_unshare_change(rtx, rtx *, rtx, bool)
Definition recog.cc:296
bool check_asm_operands(rtx)
Definition recog.cc:137
bool store_data_bypass_p(rtx_insn *, rtx_insn *)
Definition recog.cc:4268
int peep2_current_count
Definition recog.cc:3585
bool insn_invalid_p(rtx_insn *, bool)
Definition recog.cc:352
bool validate_change(rtx, rtx *, rtx, bool)
Definition recog.cc:287
bool offsettable_address_addr_space_p(int, machine_mode, rtx, addr_space_t)
Definition recog.cc:2446
void extract_insn_cached(rtx_insn *)
Definition recog.cc:2697
void extract_insn(rtx_insn *)
Definition recog.cc:2741
struct recog_data_d recog_data
Definition recog.cc:72
void insn_extract(rtx_insn *)
int volatile_ok
Definition recog.cc:70
const char *(* insn_output_fn)(rtx *, rtx_insn *)
Definition recog.h:431
bool offsettable_nonstrict_memref_p(rtx)
Definition recog.cc:2428
bool apply_change_group(void)
Definition recog.cc:561
bool check_bool_attrs(rtx_insn *)
Definition recog.cc:2678
void init_recog_no_volatile(void)
Definition recog.cc:102
bool reg_fits_class_p(const_rtx, reg_class_t, int, machine_mode)
Definition recog.cc:3381
bool peep2_regno_dead_p(int, int)
Definition recog.cc:3619
void preprocess_constraints(int, int, const char **, operand_alternative *, rtx **)
Definition recog.cc:2852
const char * skip_alternative(const char *p)
Definition recog.h:303
void add_clobbers(rtx, int)
bool(* insn_operand_predicate_fn)(rtx, machine_mode)
Definition recog.h:430
struct target_recog default_target_recog
Definition recog.cc:57
#define INSN_CODE(INSN)
Definition rtl.h:1534
#define NULL_RTX
Definition rtl.h:705
rtx PATTERN(const_rtx insn)
Definition rtl.h:1502
Definition basic-block.h:117
const struct insn_operand_data *const operand
Definition recog.h:496
const char *const * multi
Definition recog.h:491
struct insn_data_d::@54 output
const char n_alternatives
Definition recog.h:501
const char n_generator_args
Definition recog.h:498
insn_output_fn function
Definition recog.h:492
const char n_operands
Definition recog.h:499
const insn_gen_fn genfun
Definition recog.h:495
const char n_dups
Definition recog.h:500
const char *const name
Definition recog.h:481
const char * single
Definition recog.h:490
const char output_format
Definition recog.h:502
stored_funcptr func
Definition recog.h:452
rtx_insn * operator()(Ts... args) const
Definition recog.h:438
void(* stored_funcptr)(void)
Definition recog.h:435
insn_gen_fn operator*(void) const
Definition recog.h:446
const char eliminable
Definition recog.h:467
enum machine_mode const mode
Definition recog.h:461
const insn_operand_predicate_fn predicate
Definition recog.h:457
const char strict_low
Definition recog.h:463
const char *const constraint
Definition recog.h:459
const char allows_mem
Definition recog.h:469
const char is_operator
Definition recog.h:465
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:371
rtx * operand_loc[MAX_RECOG_OPERANDS]
Definition recog.h:351
machine_mode operand_mode[MAX_RECOG_OPERANDS]
Definition recog.h:360
char is_operator[MAX_RECOG_OPERANDS]
Definition recog.h:357
rtx_insn * insn
Definition recog.h:396
char n_dups
Definition recog.h:387
char n_alternatives
Definition recog.h:390
enum op_type operand_type[MAX_RECOG_OPERANDS]
Definition recog.h:363
bool is_asm
Definition recog.h:393
const char * constraints[MAX_RECOG_OPERANDS]
Definition recog.h:354
rtx * dup_loc[MAX_DUP_OPERANDS]
Definition recog.h:367
char n_operands
Definition recog.h:384
operand_alternative * x_op_alt[NUM_INSN_CODES]
Definition recog.h:524
alternative_mask x_bool_attr_masks[NUM_INSN_CODES][BA_LAST+1]
Definition recog.h:523
bool x_initialized
Definition recog.h:522
#define false
Definition system.h:895
#define IN_RANGE(VALUE, LOWER, UPPER)
Definition system.h:320
#define bool
Definition system.h:893
#define gcc_checking_assert(EXPR)
Definition system.h:828
#define MAX(X, Y)
Definition system.h:393