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.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