Home | History | Annotate | Download | only in include
      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