/* Generated automatically by the program 'build/genpreds' from the machine description file '/data/jenkins/workspace/GNU-toolchain/arm-10-2/src/gcc/gcc/config/aarch64/aarch64.md'. */ #ifndef GCC_TM_PREDS_H #define GCC_TM_PREDS_H #ifdef HAVE_MACHINE_MODES extern int general_operand (rtx, machine_mode); extern int address_operand (rtx, machine_mode); extern int register_operand (rtx, machine_mode); extern int pmode_register_operand (rtx, machine_mode); extern int scratch_operand (rtx, machine_mode); extern int immediate_operand (rtx, machine_mode); extern int const_int_operand (rtx, machine_mode); extern int const_scalar_int_operand (rtx, machine_mode); extern int const_double_operand (rtx, machine_mode); extern int nonimmediate_operand (rtx, machine_mode); extern int nonmemory_operand (rtx, machine_mode); extern int push_operand (rtx, machine_mode); extern int pop_operand (rtx, machine_mode); extern int memory_operand (rtx, machine_mode); extern int indirect_operand (rtx, machine_mode); extern int ordered_comparison_operator (rtx, machine_mode); extern int comparison_operator (rtx, machine_mode); extern int cc_register (rtx, machine_mode); extern int aarch64_call_insn_operand (rtx, machine_mode); extern int aarch64_general_reg (rtx, machine_mode); extern int const0_operand (rtx, machine_mode); extern int const_1_to_3_operand (rtx, machine_mode); extern int subreg_lowpart_operator (rtx, machine_mode); extern int aarch64_ccmp_immediate (rtx, machine_mode); extern int aarch64_ccmp_operand (rtx, machine_mode); extern int aarch64_simd_register (rtx, machine_mode); extern int aarch64_reg_or_zero (rtx, machine_mode); extern int aarch64_reg_or_fp_zero (rtx, machine_mode); extern int aarch64_reg_zero_or_fp_zero (rtx, machine_mode); extern int aarch64_reg_zero_or_m1_or_1 (rtx, machine_mode); extern int aarch64_reg_or_orr_imm (rtx, machine_mode); extern int aarch64_reg_or_bic_imm (rtx, machine_mode); extern int aarch64_fp_compare_operand (rtx, machine_mode); extern int aarch64_fp_pow2 (rtx, machine_mode); extern int aarch64_fp_pow2_recip (rtx, machine_mode); extern int aarch64_fp_vec_pow2 (rtx, machine_mode); extern int aarch64_sve_cnt_immediate (rtx, machine_mode); extern int aarch64_sub_immediate (rtx, machine_mode); extern int aarch64_plus_immediate (rtx, machine_mode); extern int aarch64_plus_operand (rtx, machine_mode); extern int aarch64_plushi_immediate (rtx, machine_mode); extern int aarch64_plushi_operand (rtx, machine_mode); extern int aarch64_pluslong_immediate (rtx, machine_mode); extern int aarch64_pluslong_strict_immedate (rtx, machine_mode); extern int aarch64_sve_scalar_inc_dec_immediate (rtx, machine_mode); extern int aarch64_sve_addvl_addpl_immediate (rtx, machine_mode); extern int aarch64_sve_plus_immediate (rtx, machine_mode); extern int aarch64_split_add_offset_immediate (rtx, machine_mode); extern int aarch64_pluslong_operand (rtx, machine_mode); extern int aarch64_pluslong_or_poly_operand (rtx, machine_mode); extern int aarch64_logical_immediate (rtx, machine_mode); extern int aarch64_logical_operand (rtx, machine_mode); extern int aarch64_mov_imm_operand (rtx, machine_mode); extern int aarch64_logical_and_immediate (rtx, machine_mode); extern int aarch64_shift_imm_si (rtx, machine_mode); extern int aarch64_shift_imm_di (rtx, machine_mode); extern int aarch64_shift_imm64_di (rtx, machine_mode); extern int aarch64_reg_or_shift_imm_si (rtx, machine_mode); extern int aarch64_reg_or_shift_imm_di (rtx, machine_mode); extern int aarch64_imm3 (rtx, machine_mode); extern int aarch64_imm2 (rtx, machine_mode); extern int aarch64_lane_imm3 (rtx, machine_mode); extern int aarch64_imm24 (rtx, machine_mode); extern int aarch64_pwr_imm3 (rtx, machine_mode); extern int aarch64_pwr_2_si (rtx, machine_mode); extern int aarch64_pwr_2_di (rtx, machine_mode); extern int aarch64_mem_pair_offset (rtx, machine_mode); extern int aarch64_mem_pair_operand (rtx, machine_mode); extern int aarch64_mem_pair_lanes_operand (rtx, machine_mode); extern int aarch64_prefetch_operand (rtx, machine_mode); extern int aarch64_valid_symref (rtx, machine_mode); extern int aarch64_tls_ie_symref (rtx, machine_mode); extern int aarch64_tls_le_symref (rtx, machine_mode); extern int aarch64_mov_operand (rtx, machine_mode); extern int aarch64_nonmemory_operand (rtx, machine_mode); extern int aarch64_movti_operand (rtx, machine_mode); extern int aarch64_reg_or_imm (rtx, machine_mode); extern int aarch64_comparison_operator (rtx, machine_mode); extern int aarch64_comparison_operator_mode (rtx, machine_mode); extern int aarch64_comparison_operation (rtx, machine_mode); extern int aarch64_equality_operator (rtx, machine_mode); extern int aarch64_carry_operation (rtx, machine_mode); extern int aarch64_borrow_operation (rtx, machine_mode); extern int aarch64_sync_memory_operand (rtx, machine_mode); extern int aarch64_9bit_offset_memory_operand (rtx, machine_mode); extern int aarch64_rcpc_memory_operand (rtx, machine_mode); extern int vect_par_cnst_hi_half (rtx, machine_mode); extern int vect_par_cnst_lo_half (rtx, machine_mode); extern int descending_int_parallel (rtx, machine_mode); extern int ascending_int_parallel (rtx, machine_mode); extern int aarch64_simd_lshift_imm (rtx, machine_mode); extern int aarch64_simd_rshift_imm (rtx, machine_mode); extern int aarch64_simd_imm_zero (rtx, machine_mode); extern int aarch64_simd_imm_one (rtx, machine_mode); extern int aarch64_simd_or_scalar_imm_zero (rtx, machine_mode); extern int aarch64_simd_imm_minus_one (rtx, machine_mode); extern int aarch64_simd_reg_or_zero (rtx, machine_mode); extern int aarch64_simd_reg_or_minus_one (rtx, machine_mode); extern int aarch64_simd_struct_operand (rtx, machine_mode); extern int aarch64_simd_general_operand (rtx, machine_mode); extern int aarch64_simd_nonimmediate_operand (rtx, machine_mode); extern int aarch64_simd_shift_imm_qi (rtx, machine_mode); extern int aarch64_simd_shift_imm_hi (rtx, machine_mode); extern int aarch64_simd_shift_imm_si (rtx, machine_mode); extern int aarch64_simd_shift_imm_di (rtx, machine_mode); extern int aarch64_simd_shift_imm_offset_qi (rtx, machine_mode); extern int aarch64_simd_shift_imm_offset_hi (rtx, machine_mode); extern int aarch64_simd_shift_imm_offset_si (rtx, machine_mode); extern int aarch64_simd_shift_imm_offset_di (rtx, machine_mode); extern int aarch64_simd_shift_imm_bitsize_qi (rtx, machine_mode); extern int aarch64_simd_shift_imm_bitsize_hi (rtx, machine_mode); extern int aarch64_simd_shift_imm_bitsize_si (rtx, machine_mode); extern int aarch64_simd_shift_imm_bitsize_di (rtx, machine_mode); extern int aarch64_constant_pool_symref (rtx, machine_mode); extern int aarch64_constant_vector_operand (rtx, machine_mode); extern int aarch64_sve_ld1r_operand (rtx, machine_mode); extern int aarch64_sve_ld1rq_operand (rtx, machine_mode); extern int aarch64_sve_ld1ro_operand_b (rtx, machine_mode); extern int aarch64_sve_ld1ro_operand_h (rtx, machine_mode); extern int aarch64_sve_ld1ro_operand_w (rtx, machine_mode); extern int aarch64_sve_ld1ro_operand_d (rtx, machine_mode); extern int aarch64_sve_ldff1_operand (rtx, machine_mode); extern int aarch64_sve_ldnf1_operand (rtx, machine_mode); extern int aarch64_sve_ldr_operand (rtx, machine_mode); extern int aarch64_sve_prefetch_operand (rtx, machine_mode); extern int aarch64_sve_nonimmediate_operand (rtx, machine_mode); extern int aarch64_sve_general_operand (rtx, machine_mode); extern int aarch64_sve_struct_memory_operand (rtx, machine_mode); extern int aarch64_sve_struct_nonimmediate_operand (rtx, machine_mode); extern int aarch64_sve_dup_operand (rtx, machine_mode); extern int aarch64_sve_ptrue_svpattern_immediate (rtx, machine_mode); extern int aarch64_sve_arith_immediate (rtx, machine_mode); extern int aarch64_sve_sub_arith_immediate (rtx, machine_mode); extern int aarch64_sve_qadd_immediate (rtx, machine_mode); extern int aarch64_sve_qsub_immediate (rtx, machine_mode); extern int aarch64_sve_vector_inc_dec_immediate (rtx, machine_mode); extern int aarch64_sve_gather_immediate_b (rtx, machine_mode); extern int aarch64_sve_gather_immediate_h (rtx, machine_mode); extern int aarch64_sve_gather_immediate_w (rtx, machine_mode); extern int aarch64_sve_gather_immediate_d (rtx, machine_mode); extern int aarch64_sve_uxtb_immediate (rtx, machine_mode); extern int aarch64_sve_uxth_immediate (rtx, machine_mode); extern int aarch64_sve_uxtw_immediate (rtx, machine_mode); extern int aarch64_sve_uxt_immediate (rtx, machine_mode); extern int aarch64_sve_logical_immediate (rtx, machine_mode); extern int aarch64_sve_vsb_immediate (rtx, machine_mode); extern int aarch64_sve_vsm_immediate (rtx, machine_mode); extern int aarch64_sve_dup_immediate (rtx, machine_mode); extern int aarch64_sve_cmp_vsc_immediate (rtx, machine_mode); extern int aarch64_sve_cmp_vsd_immediate (rtx, machine_mode); extern int aarch64_sve_index_immediate (rtx, machine_mode); extern int aarch64_sve_float_arith_immediate (rtx, machine_mode); extern int aarch64_sve_float_negated_arith_immediate (rtx, machine_mode); extern int aarch64_sve_float_arith_with_sub_immediate (rtx, machine_mode); extern int aarch64_sve_float_mul_immediate (rtx, machine_mode); extern int aarch64_sve_float_maxmin_immediate (rtx, machine_mode); extern int aarch64_sve_arith_operand (rtx, machine_mode); extern int aarch64_sve_add_operand (rtx, machine_mode); extern int aarch64_sve_sqadd_operand (rtx, machine_mode); extern int aarch64_sve_pred_and_operand (rtx, machine_mode); extern int aarch64_sve_logical_operand (rtx, machine_mode); extern int aarch64_sve_gather_offset_b (rtx, machine_mode); extern int aarch64_sve_gather_offset_h (rtx, machine_mode); extern int aarch64_sve_gather_offset_w (rtx, machine_mode); extern int aarch64_sve_gather_offset_d (rtx, machine_mode); extern int aarch64_sve_lshift_operand (rtx, machine_mode); extern int aarch64_sve_rshift_operand (rtx, machine_mode); extern int aarch64_sve_vsb_operand (rtx, machine_mode); extern int aarch64_sve_vsm_operand (rtx, machine_mode); extern int aarch64_sve_reg_or_dup_imm (rtx, machine_mode); extern int aarch64_sve_cmp_vsc_operand (rtx, machine_mode); extern int aarch64_sve_cmp_vsd_operand (rtx, machine_mode); extern int aarch64_sve_index_operand (rtx, machine_mode); extern int aarch64_sve_float_arith_operand (rtx, machine_mode); extern int aarch64_sve_float_arith_with_sub_operand (rtx, machine_mode); extern int aarch64_sve_float_mul_operand (rtx, machine_mode); extern int aarch64_sve_float_maxmin_operand (rtx, machine_mode); extern int aarch64_sve_vec_perm_operand (rtx, machine_mode); extern int aarch64_sve_ptrue_flag (rtx, machine_mode); extern int aarch64_sve_gp_strictness (rtx, machine_mode); extern int aarch64_gather_scale_operand_b (rtx, machine_mode); extern int aarch64_gather_scale_operand_h (rtx, machine_mode); extern int aarch64_gather_scale_operand_w (rtx, machine_mode); extern int aarch64_gather_scale_operand_d (rtx, machine_mode); extern int aarch64_any_register_operand (rtx, machine_mode); extern int aarch64_sve_any_binary_operator (rtx, machine_mode); extern int aarch64_bytes_per_sve_vector_operand (rtx, machine_mode); extern int aarch64_memtag_tag_offset (rtx, machine_mode); extern int aarch64_granule16_uimm6 (rtx, machine_mode); extern int aarch64_granule16_simm9 (rtx, machine_mode); #endif /* HAVE_MACHINE_MODES */ #define CONSTRAINT_NUM_DEFINED_P 1 enum constraint_num { CONSTRAINT__UNKNOWN = 0, CONSTRAINT_r, CONSTRAINT_k, CONSTRAINT_Ucs, CONSTRAINT_Ucr, CONSTRAINT_w, CONSTRAINT_Upa, CONSTRAINT_Upl, CONSTRAINT_x, CONSTRAINT_y, CONSTRAINT_I, CONSTRAINT_J, CONSTRAINT_K, CONSTRAINT_L, CONSTRAINT_M, CONSTRAINT_N, CONSTRAINT_m, CONSTRAINT_o, CONSTRAINT_Q, CONSTRAINT_Ust, CONSTRAINT_Ump, CONSTRAINT_Umn, CONSTRAINT_Utf, CONSTRAINT_Utn, CONSTRAINT_Utr, CONSTRAINT_Utv, CONSTRAINT_Utq, CONSTRAINT_UtQ, CONSTRAINT_UOb, CONSTRAINT_UOh, CONSTRAINT_UOw, CONSTRAINT_UOd, CONSTRAINT_Uty, CONSTRAINT_Utx, CONSTRAINT_p, CONSTRAINT_UPb, CONSTRAINT_UPd, CONSTRAINT_UPh, CONSTRAINT_UPw, CONSTRAINT_Dp, CONSTRAINT_Uaa, CONSTRAINT_Uai, CONSTRAINT_Uav, CONSTRAINT_Uat, CONSTRAINT_Uti, CONSTRAINT_UsO, CONSTRAINT_UsP, CONSTRAINT_S, CONSTRAINT_Y, CONSTRAINT_Ush, CONSTRAINT_Usa, CONSTRAINT_Uss, CONSTRAINT_Usn, CONSTRAINT_Usd, CONSTRAINT_Usf, CONSTRAINT_Usg, CONSTRAINT_Usj, CONSTRAINT_Ulc, CONSTRAINT_Usv, CONSTRAINT_Usi, CONSTRAINT_Ui2, CONSTRAINT_Ui3, CONSTRAINT_Ui7, CONSTRAINT_Up3, CONSTRAINT_Uph, CONSTRAINT_Ufc, CONSTRAINT_Uvi, CONSTRAINT_Do, CONSTRAINT_Db, CONSTRAINT_Dn, CONSTRAINT_Dh, CONSTRAINT_Dq, CONSTRAINT_Dt, CONSTRAINT_Dl, CONSTRAINT_Dr, CONSTRAINT_Dz, CONSTRAINT_Dm, CONSTRAINT_Dd, CONSTRAINT_Ds, CONSTRAINT_vgb, CONSTRAINT_vgd, CONSTRAINT_vgh, CONSTRAINT_vgw, CONSTRAINT_vsa, CONSTRAINT_vsb, CONSTRAINT_vsc, CONSTRAINT_vsd, CONSTRAINT_vsi, CONSTRAINT_vsn, CONSTRAINT_vsQ, CONSTRAINT_vsS, CONSTRAINT_vsl, CONSTRAINT_vsm, CONSTRAINT_vsA, CONSTRAINT_vsB, CONSTRAINT_vsM, CONSTRAINT_vsN, CONSTRAINT_c, CONSTRAINT_V, CONSTRAINT__l, CONSTRAINT__g, CONSTRAINT_i, CONSTRAINT_s, CONSTRAINT_n, CONSTRAINT_E, CONSTRAINT_F, CONSTRAINT_X, CONSTRAINT_Z, CONSTRAINT_UsM, CONSTRAINT_Ui1, CONSTRAINT_vss, CONSTRAINT__LIMIT }; extern enum constraint_num lookup_constraint_1 (const char *); extern const unsigned char lookup_constraint_array[]; /* Return the constraint at the beginning of P, or CONSTRAINT__UNKNOWN if it isn't recognized. */ static inline enum constraint_num lookup_constraint (const char *p) { unsigned int index = lookup_constraint_array[(unsigned char) *p]; return (index == UCHAR_MAX ? lookup_constraint_1 (p) : (enum constraint_num) index); } extern bool (*constraint_satisfied_p_array[]) (rtx); /* Return true if X satisfies constraint C. */ static inline bool constraint_satisfied_p (rtx x, enum constraint_num c) { int i = (int) c - (int) CONSTRAINT_I; return i >= 0 && constraint_satisfied_p_array[i] (x); } static inline bool insn_extra_register_constraint (enum constraint_num c) { return c >= CONSTRAINT_r && c <= CONSTRAINT_y; } static inline bool insn_extra_memory_constraint (enum constraint_num c) { return c >= CONSTRAINT_m && c <= CONSTRAINT_Utx; } static inline bool insn_extra_special_memory_constraint (enum constraint_num) { return false; } static inline bool insn_extra_address_constraint (enum constraint_num c) { return c >= CONSTRAINT_p && c <= CONSTRAINT_Dp; } static inline void insn_extra_constraint_allows_reg_mem (enum constraint_num c, bool *allows_reg, bool *allows_mem) { if (c >= CONSTRAINT_Uaa && c <= CONSTRAINT_vsN) return; if (c >= CONSTRAINT_c && c <= CONSTRAINT_c) { *allows_reg = true; return; } if (c >= CONSTRAINT_V && c <= CONSTRAINT__g) { *allows_mem = true; return; } (void) c; *allows_reg = true; *allows_mem = true; } static inline size_t insn_constraint_len (char fc, const char *str ATTRIBUTE_UNUSED) { switch (fc) { case 'D': return 2; case 'U': return 3; case 'v': return 3; default: break; } return 1; } #define CONSTRAINT_LEN(c_,s_) insn_constraint_len (c_,s_) extern enum reg_class reg_class_for_constraint_1 (enum constraint_num); static inline enum reg_class reg_class_for_constraint (enum constraint_num c) { if (insn_extra_register_constraint (c)) return reg_class_for_constraint_1 (c); return NO_REGS; } extern bool insn_const_int_ok_for_constraint (HOST_WIDE_INT, enum constraint_num); #define CONST_OK_FOR_CONSTRAINT_P(v_,c_,s_) \ insn_const_int_ok_for_constraint (v_, lookup_constraint (s_)) enum constraint_type { CT_REGISTER, CT_CONST_INT, CT_MEMORY, CT_SPECIAL_MEMORY, CT_ADDRESS, CT_FIXED_FORM }; static inline enum constraint_type get_constraint_type (enum constraint_num c) { if (c >= CONSTRAINT_p) { if (c >= CONSTRAINT_Uaa) return CT_FIXED_FORM; return CT_ADDRESS; } if (c >= CONSTRAINT_m) return CT_MEMORY; if (c >= CONSTRAINT_I) return CT_CONST_INT; return CT_REGISTER; } #endif /* tm-preds.h */