tm-preds.h 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. /* Generated automatically by the program 'build/genpreds'
  2. from the machine description file '/Host/home/ilg/Work/riscv-none-embed-gcc-8.3.0-1.2/sources/riscv-gcc-8.3.0-1.1/gcc/config/riscv/riscv.md'. */
  3. #ifndef GCC_TM_PREDS_H
  4. #define GCC_TM_PREDS_H
  5. #ifdef HAVE_MACHINE_MODES
  6. extern int general_operand (rtx, machine_mode);
  7. extern int address_operand (rtx, machine_mode);
  8. extern int register_operand (rtx, machine_mode);
  9. extern int pmode_register_operand (rtx, machine_mode);
  10. extern int scratch_operand (rtx, machine_mode);
  11. extern int immediate_operand (rtx, machine_mode);
  12. extern int const_int_operand (rtx, machine_mode);
  13. extern int const_double_operand (rtx, machine_mode);
  14. extern int nonimmediate_operand (rtx, machine_mode);
  15. extern int nonmemory_operand (rtx, machine_mode);
  16. extern int push_operand (rtx, machine_mode);
  17. extern int pop_operand (rtx, machine_mode);
  18. extern int memory_operand (rtx, machine_mode);
  19. extern int indirect_operand (rtx, machine_mode);
  20. extern int ordered_comparison_operator (rtx, machine_mode);
  21. extern int comparison_operator (rtx, machine_mode);
  22. extern int const_arith_operand (rtx, machine_mode);
  23. extern int arith_operand (rtx, machine_mode);
  24. extern int lui_operand (rtx, machine_mode);
  25. extern int sfb_alu_operand (rtx, machine_mode);
  26. extern int const_csr_operand (rtx, machine_mode);
  27. extern int csr_operand (rtx, machine_mode);
  28. extern int csr_address (rtx, machine_mode);
  29. extern int sle_operand (rtx, machine_mode);
  30. extern int sleu_operand (rtx, machine_mode);
  31. extern int const_0_operand (rtx, machine_mode);
  32. extern int reg_or_0_operand (rtx, machine_mode);
  33. extern int branch_on_bit_operand (rtx, machine_mode);
  34. extern int splittable_const_int_operand (rtx, machine_mode);
  35. extern int p2m1_shift_operand (rtx, machine_mode);
  36. extern int high_mask_shift_operand (rtx, machine_mode);
  37. extern int move_operand (rtx, machine_mode);
  38. extern int symbolic_operand (rtx, machine_mode);
  39. extern int absolute_symbolic_operand (rtx, machine_mode);
  40. extern int plt_symbolic_operand (rtx, machine_mode);
  41. extern int call_insn_operand (rtx, machine_mode);
  42. extern int modular_operator (rtx, machine_mode);
  43. extern int equality_operator (rtx, machine_mode);
  44. extern int order_operator (rtx, machine_mode);
  45. extern int signed_order_operator (rtx, machine_mode);
  46. extern int fp_native_comparison (rtx, machine_mode);
  47. extern int fp_scc_comparison (rtx, machine_mode);
  48. extern int fp_branch_comparison (rtx, machine_mode);
  49. #endif /* HAVE_MACHINE_MODES */
  50. #define CONSTRAINT_NUM_DEFINED_P 1
  51. enum constraint_num
  52. {
  53. CONSTRAINT__UNKNOWN = 0,
  54. CONSTRAINT_r,
  55. CONSTRAINT_f,
  56. CONSTRAINT_j,
  57. CONSTRAINT_l,
  58. CONSTRAINT_I,
  59. CONSTRAINT_J,
  60. CONSTRAINT_K,
  61. CONSTRAINT_L,
  62. CONSTRAINT_m,
  63. CONSTRAINT_o,
  64. CONSTRAINT_A,
  65. CONSTRAINT_p,
  66. CONSTRAINT_C,
  67. CONSTRAINT_G,
  68. CONSTRAINT_S,
  69. CONSTRAINT_U,
  70. CONSTRAINT_V,
  71. CONSTRAINT__l,
  72. CONSTRAINT__g,
  73. CONSTRAINT_i,
  74. CONSTRAINT_s,
  75. CONSTRAINT_n,
  76. CONSTRAINT_E,
  77. CONSTRAINT_F,
  78. CONSTRAINT_X,
  79. CONSTRAINT_T,
  80. CONSTRAINT__LIMIT
  81. };
  82. extern enum constraint_num lookup_constraint_1 (const char *);
  83. extern const unsigned char lookup_constraint_array[];
  84. /* Return the constraint at the beginning of P, or CONSTRAINT__UNKNOWN if it
  85. isn't recognized. */
  86. static inline enum constraint_num
  87. lookup_constraint (const char *p)
  88. {
  89. unsigned int index = lookup_constraint_array[(unsigned char) *p];
  90. return (index == UCHAR_MAX
  91. ? lookup_constraint_1 (p)
  92. : (enum constraint_num) index);
  93. }
  94. extern bool (*constraint_satisfied_p_array[]) (rtx);
  95. /* Return true if X satisfies constraint C. */
  96. static inline bool
  97. constraint_satisfied_p (rtx x, enum constraint_num c)
  98. {
  99. int i = (int) c - (int) CONSTRAINT_I;
  100. return i >= 0 && constraint_satisfied_p_array[i] (x);
  101. }
  102. static inline bool
  103. insn_extra_register_constraint (enum constraint_num c)
  104. {
  105. return c >= CONSTRAINT_r && c <= CONSTRAINT_l;
  106. }
  107. static inline bool
  108. insn_extra_memory_constraint (enum constraint_num c)
  109. {
  110. return c >= CONSTRAINT_m && c <= CONSTRAINT_A;
  111. }
  112. static inline bool
  113. insn_extra_special_memory_constraint (enum constraint_num)
  114. {
  115. return false;
  116. }
  117. static inline bool
  118. insn_extra_address_constraint (enum constraint_num c)
  119. {
  120. return c >= CONSTRAINT_p && c <= CONSTRAINT_p;
  121. }
  122. static inline void
  123. insn_extra_constraint_allows_reg_mem (enum constraint_num c,
  124. bool *allows_reg, bool *allows_mem)
  125. {
  126. if (c >= CONSTRAINT_C && c <= CONSTRAINT_U)
  127. return;
  128. if (c >= CONSTRAINT_V && c <= CONSTRAINT__g)
  129. {
  130. *allows_mem = true;
  131. return;
  132. }
  133. (void) c;
  134. *allows_reg = true;
  135. *allows_mem = true;
  136. }
  137. #define CONSTRAINT_LEN(c_,s_) 1
  138. extern enum reg_class reg_class_for_constraint_1 (enum constraint_num);
  139. static inline enum reg_class
  140. reg_class_for_constraint (enum constraint_num c)
  141. {
  142. if (insn_extra_register_constraint (c))
  143. return reg_class_for_constraint_1 (c);
  144. return NO_REGS;
  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. enum constraint_type
  150. {
  151. CT_REGISTER,
  152. CT_CONST_INT,
  153. CT_MEMORY,
  154. CT_SPECIAL_MEMORY,
  155. CT_ADDRESS,
  156. CT_FIXED_FORM
  157. };
  158. static inline enum constraint_type
  159. get_constraint_type (enum constraint_num c)
  160. {
  161. if (c >= CONSTRAINT_p)
  162. {
  163. if (c >= CONSTRAINT_C)
  164. return CT_FIXED_FORM;
  165. return CT_ADDRESS;
  166. }
  167. if (c >= CONSTRAINT_m)
  168. return CT_MEMORY;
  169. if (c >= CONSTRAINT_I)
  170. return CT_CONST_INT;
  171. return CT_REGISTER;
  172. }
  173. #endif /* tm-preds.h */