1 /* Generated automatically by the program 'build/genpreds' 2 from the machine description file '/home/jingyu/projects/gcc/android-toolchainsrc/build/../gcc/gcc-4.4.3/gcc/config/arm/arm.md'. */ 3 4 #ifndef GCC_TM_PREDS_H 5 #define GCC_TM_PREDS_H 6 7 #ifdef HAVE_MACHINE_MODES 8 extern int general_operand (rtx, enum machine_mode); 9 extern int address_operand (rtx, enum machine_mode); 10 extern int register_operand (rtx, enum machine_mode); 11 extern int pmode_register_operand (rtx, enum machine_mode); 12 extern int scratch_operand (rtx, enum machine_mode); 13 extern int immediate_operand (rtx, enum machine_mode); 14 extern int const_int_operand (rtx, enum machine_mode); 15 extern int const_double_operand (rtx, enum machine_mode); 16 extern int nonimmediate_operand (rtx, enum machine_mode); 17 extern int nonmemory_operand (rtx, enum machine_mode); 18 extern int push_operand (rtx, enum machine_mode); 19 extern int pop_operand (rtx, enum machine_mode); 20 extern int memory_operand (rtx, enum machine_mode); 21 extern int indirect_operand (rtx, enum machine_mode); 22 extern int comparison_operator (rtx, enum machine_mode); 23 extern int s_register_operand (rtx, enum machine_mode); 24 extern int arm_hard_register_operand (rtx, enum machine_mode); 25 extern int low_register_operand (rtx, enum machine_mode); 26 extern int low_reg_or_int_operand (rtx, enum machine_mode); 27 extern int arm_general_register_operand (rtx, enum machine_mode); 28 extern int f_register_operand (rtx, enum machine_mode); 29 extern int reg_or_int_operand (rtx, enum machine_mode); 30 extern int arm_immediate_operand (rtx, enum machine_mode); 31 extern int arm_neg_immediate_operand (rtx, enum machine_mode); 32 extern int arm_not_immediate_operand (rtx, enum machine_mode); 33 extern int const0_operand (rtx, enum machine_mode); 34 extern int arm_rhs_operand (rtx, enum machine_mode); 35 extern int arm_rhsm_operand (rtx, enum machine_mode); 36 extern int arm_add_operand (rtx, enum machine_mode); 37 extern int arm_addimm_operand (rtx, enum machine_mode); 38 extern int arm_not_operand (rtx, enum machine_mode); 39 extern int offsettable_memory_operand (rtx, enum machine_mode); 40 extern int call_memory_operand (rtx, enum machine_mode); 41 extern int arm_reload_memory_operand (rtx, enum machine_mode); 42 extern int arm_float_rhs_operand (rtx, enum machine_mode); 43 extern int arm_float_add_operand (rtx, enum machine_mode); 44 extern int vfp_compare_operand (rtx, enum machine_mode); 45 extern int arm_float_compare_operand (rtx, enum machine_mode); 46 extern int index_operand (rtx, enum machine_mode); 47 extern int shiftable_operator (rtx, enum machine_mode); 48 extern int logical_binary_operator (rtx, enum machine_mode); 49 extern int shift_operator (rtx, enum machine_mode); 50 extern int thumb_16bit_operator (rtx, enum machine_mode); 51 extern int equality_operator (rtx, enum machine_mode); 52 extern int arm_comparison_operator (rtx, enum machine_mode); 53 extern int lt_ge_comparison_operator (rtx, enum machine_mode); 54 extern int minmax_operator (rtx, enum machine_mode); 55 extern int cc_register (rtx, enum machine_mode); 56 extern int dominant_cc_register (rtx, enum machine_mode); 57 extern int arm_extendqisi_mem_op (rtx, enum machine_mode); 58 extern int arm_reg_or_extendqisi_mem_op (rtx, enum machine_mode); 59 extern int power_of_two_operand (rtx, enum machine_mode); 60 extern int nonimmediate_di_operand (rtx, enum machine_mode); 61 extern int di_operand (rtx, enum machine_mode); 62 extern int nonimmediate_soft_df_operand (rtx, enum machine_mode); 63 extern int soft_df_operand (rtx, enum machine_mode); 64 extern int const_shift_operand (rtx, enum machine_mode); 65 extern int load_multiple_operation (rtx, enum machine_mode); 66 extern int store_multiple_operation (rtx, enum machine_mode); 67 extern int multi_register_push (rtx, enum machine_mode); 68 extern int thumb1_cmp_operand (rtx, enum machine_mode); 69 extern int thumb1_cmpneg_operand (rtx, enum machine_mode); 70 extern int thumb_cbrch_target_operand (rtx, enum machine_mode); 71 extern int cirrus_register_operand (rtx, enum machine_mode); 72 extern int cirrus_fp_register (rtx, enum machine_mode); 73 extern int cirrus_shift_const (rtx, enum machine_mode); 74 extern int const_multiple_of_8_operand (rtx, enum machine_mode); 75 extern int imm_for_neon_mov_operand (rtx, enum machine_mode); 76 extern int imm_for_neon_logic_operand (rtx, enum machine_mode); 77 extern int imm_for_neon_inv_logic_operand (rtx, enum machine_mode); 78 extern int neon_logic_op2 (rtx, enum machine_mode); 79 extern int neon_inv_logic_op2 (rtx, enum machine_mode); 80 extern int neon_lane_number (rtx, enum machine_mode); 81 #endif /* HAVE_MACHINE_MODES */ 82 83 enum constraint_num 84 { 85 CONSTRAINT__UNKNOWN = 0, 86 CONSTRAINT_f, 87 CONSTRAINT_t, 88 CONSTRAINT_v, 89 CONSTRAINT_w, 90 CONSTRAINT_x, 91 CONSTRAINT_y, 92 CONSTRAINT_z, 93 CONSTRAINT_l, 94 CONSTRAINT_h, 95 CONSTRAINT_j, 96 CONSTRAINT_k, 97 CONSTRAINT_b, 98 CONSTRAINT_c, 99 CONSTRAINT_I, 100 CONSTRAINT_J, 101 CONSTRAINT_K, 102 CONSTRAINT_L, 103 CONSTRAINT_M, 104 CONSTRAINT_N, 105 CONSTRAINT_O, 106 CONSTRAINT_Pa, 107 CONSTRAINT_Pb, 108 CONSTRAINT_G, 109 CONSTRAINT_H, 110 CONSTRAINT_Da, 111 CONSTRAINT_Db, 112 CONSTRAINT_Dc, 113 CONSTRAINT_Dn, 114 CONSTRAINT_Dl, 115 CONSTRAINT_DL, 116 CONSTRAINT_Dv, 117 CONSTRAINT_Ut, 118 CONSTRAINT_Uv, 119 CONSTRAINT_Uy, 120 CONSTRAINT_Un, 121 CONSTRAINT_Us, 122 CONSTRAINT_Uq, 123 CONSTRAINT_Q, 124 CONSTRAINT__LIMIT 125 }; 126 127 extern enum constraint_num lookup_constraint (const char *); 128 extern bool constraint_satisfied_p (rtx, enum constraint_num); 129 130 static inline size_t 131 insn_constraint_len (char fc, const char *str ATTRIBUTE_UNUSED) 132 { 133 switch (fc) 134 { 135 case 'D': return 2; 136 case 'P': return 2; 137 case 'U': return 2; 138 default: break; 139 } 140 return 1; 141 } 142 143 #define CONSTRAINT_LEN(c_,s_) insn_constraint_len (c_,s_) 144 145 extern enum reg_class regclass_for_constraint (enum constraint_num); 146 #define REG_CLASS_FROM_CONSTRAINT(c_,s_) \ 147 regclass_for_constraint (lookup_constraint (s_)) 148 149 extern bool insn_const_int_ok_for_constraint (HOST_WIDE_INT, enum constraint_num); 150 #define CONST_OK_FOR_CONSTRAINT_P(v_,c_,s_) \ 151 insn_const_int_ok_for_constraint (v_, lookup_constraint (s_)) 152 153 #define CONST_DOUBLE_OK_FOR_CONSTRAINT_P(v_,c_,s_) \ 154 constraint_satisfied_p (v_, lookup_constraint (s_)) 155 156 #define EXTRA_CONSTRAINT_STR(v_,c_,s_) \ 157 constraint_satisfied_p (v_, lookup_constraint (s_)) 158 159 extern bool insn_extra_memory_constraint (enum constraint_num); 160 #define EXTRA_MEMORY_CONSTRAINT(c_,s_) insn_extra_memory_constraint (lookup_constraint (s_)) 161 162 #define EXTRA_ADDRESS_CONSTRAINT(c_,s_) false 163 164 #endif /* tm-preds.h */ 165