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.0/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 arm_rhs_operand (rtx, enum machine_mode); 34 extern int arm_rhsm_operand (rtx, enum machine_mode); 35 extern int arm_add_operand (rtx, enum machine_mode); 36 extern int arm_addimm_operand (rtx, enum machine_mode); 37 extern int arm_not_operand (rtx, enum machine_mode); 38 extern int offsettable_memory_operand (rtx, enum machine_mode); 39 extern int call_memory_operand (rtx, enum machine_mode); 40 extern int arm_reload_memory_operand (rtx, enum machine_mode); 41 extern int arm_float_rhs_operand (rtx, enum machine_mode); 42 extern int arm_float_add_operand (rtx, enum machine_mode); 43 extern int vfp_compare_operand (rtx, enum machine_mode); 44 extern int arm_float_compare_operand (rtx, enum machine_mode); 45 extern int index_operand (rtx, enum machine_mode); 46 extern int shiftable_operator (rtx, enum machine_mode); 47 extern int logical_binary_operator (rtx, enum machine_mode); 48 extern int shift_operator (rtx, enum machine_mode); 49 extern int thumb_16bit_operator (rtx, enum machine_mode); 50 extern int equality_operator (rtx, enum machine_mode); 51 extern int arm_comparison_operator (rtx, enum machine_mode); 52 extern int minmax_operator (rtx, enum machine_mode); 53 extern int cc_register (rtx, enum machine_mode); 54 extern int dominant_cc_register (rtx, enum machine_mode); 55 extern int arm_extendqisi_mem_op (rtx, enum machine_mode); 56 extern int arm_reg_or_extendqisi_mem_op (rtx, enum machine_mode); 57 extern int power_of_two_operand (rtx, enum machine_mode); 58 extern int nonimmediate_di_operand (rtx, enum machine_mode); 59 extern int di_operand (rtx, enum machine_mode); 60 extern int nonimmediate_soft_df_operand (rtx, enum machine_mode); 61 extern int soft_df_operand (rtx, enum machine_mode); 62 extern int const_shift_operand (rtx, enum machine_mode); 63 extern int load_multiple_operation (rtx, enum machine_mode); 64 extern int store_multiple_operation (rtx, enum machine_mode); 65 extern int multi_register_push (rtx, enum machine_mode); 66 extern int thumb1_cmp_operand (rtx, enum machine_mode); 67 extern int thumb1_cmpneg_operand (rtx, enum machine_mode); 68 extern int thumb_cbrch_target_operand (rtx, enum machine_mode); 69 extern int cirrus_register_operand (rtx, enum machine_mode); 70 extern int cirrus_fp_register (rtx, enum machine_mode); 71 extern int cirrus_shift_const (rtx, enum machine_mode); 72 extern int const_multiple_of_8_operand (rtx, enum machine_mode); 73 extern int imm_for_neon_mov_operand (rtx, enum machine_mode); 74 extern int imm_for_neon_logic_operand (rtx, enum machine_mode); 75 extern int imm_for_neon_inv_logic_operand (rtx, enum machine_mode); 76 extern int neon_logic_op2 (rtx, enum machine_mode); 77 extern int neon_inv_logic_op2 (rtx, enum machine_mode); 78 extern int neon_lane_number (rtx, enum machine_mode); 79 #endif /* HAVE_MACHINE_MODES */ 80 81 enum constraint_num 82 { 83 CONSTRAINT__UNKNOWN = 0, 84 CONSTRAINT_f, 85 CONSTRAINT_t, 86 CONSTRAINT_v, 87 CONSTRAINT_w, 88 CONSTRAINT_x, 89 CONSTRAINT_y, 90 CONSTRAINT_z, 91 CONSTRAINT_l, 92 CONSTRAINT_h, 93 CONSTRAINT_k, 94 CONSTRAINT_b, 95 CONSTRAINT_c, 96 CONSTRAINT_I, 97 CONSTRAINT_J, 98 CONSTRAINT_K, 99 CONSTRAINT_L, 100 CONSTRAINT_M, 101 CONSTRAINT_N, 102 CONSTRAINT_O, 103 CONSTRAINT_Pa, 104 CONSTRAINT_Pb, 105 CONSTRAINT_G, 106 CONSTRAINT_H, 107 CONSTRAINT_Da, 108 CONSTRAINT_Db, 109 CONSTRAINT_Dc, 110 CONSTRAINT_Dn, 111 CONSTRAINT_Dl, 112 CONSTRAINT_DL, 113 CONSTRAINT_Dv, 114 CONSTRAINT_Ut, 115 CONSTRAINT_Uv, 116 CONSTRAINT_Uy, 117 CONSTRAINT_Un, 118 CONSTRAINT_Us, 119 CONSTRAINT_Uq, 120 CONSTRAINT_Q, 121 CONSTRAINT__LIMIT 122 }; 123 124 extern enum constraint_num lookup_constraint (const char *); 125 extern bool constraint_satisfied_p (rtx, enum constraint_num); 126 127 static inline size_t 128 insn_constraint_len (char fc, const char *str ATTRIBUTE_UNUSED) 129 { 130 switch (fc) 131 { 132 case 'D': return 2; 133 case 'P': return 2; 134 case 'U': return 2; 135 default: break; 136 } 137 return 1; 138 } 139 140 #define CONSTRAINT_LEN(c_,s_) insn_constraint_len (c_,s_) 141 142 extern enum reg_class regclass_for_constraint (enum constraint_num); 143 #define REG_CLASS_FROM_CONSTRAINT(c_,s_) \ 144 regclass_for_constraint (lookup_constraint (s_)) 145 146 extern bool insn_const_int_ok_for_constraint (HOST_WIDE_INT, enum constraint_num); 147 #define CONST_OK_FOR_CONSTRAINT_P(v_,c_,s_) \ 148 insn_const_int_ok_for_constraint (v_, lookup_constraint (s_)) 149 150 #define CONST_DOUBLE_OK_FOR_CONSTRAINT_P(v_,c_,s_) \ 151 constraint_satisfied_p (v_, lookup_constraint (s_)) 152 153 #define EXTRA_CONSTRAINT_STR(v_,c_,s_) \ 154 constraint_satisfied_p (v_, lookup_constraint (s_)) 155 156 extern bool insn_extra_memory_constraint (enum constraint_num); 157 #define EXTRA_MEMORY_CONSTRAINT(c_,s_) insn_extra_memory_constraint (lookup_constraint (s_)) 158 159 #define EXTRA_ADDRESS_CONSTRAINT(c_,s_) false 160 161 #endif /* tm-preds.h */ 162