frv-protos.h 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. /* Frv prototypes.
  2. Copyright (C) 1999-2015 Free Software Foundation, Inc.
  3. Contributed by Red Hat, Inc.
  4. This file is part of GCC.
  5. GCC is free software; you can redistribute it and/or modify
  6. it under the terms of the GNU General Public License as published by
  7. the Free Software Foundation; either version 3, or (at your option)
  8. any later version.
  9. GCC is distributed in the hope that it will be useful,
  10. but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. GNU General Public License for more details.
  13. You should have received a copy of the GNU General Public License
  14. along with GCC; see the file COPYING3. If not see
  15. <http://www.gnu.org/licenses/>. */
  16. /* Define functions defined in frv.c */
  17. extern void frv_expand_prologue (void);
  18. extern void frv_expand_epilogue (bool);
  19. extern frv_stack_t *frv_stack_info (void);
  20. extern void frv_debug_stack (frv_stack_t *);
  21. extern int frv_initial_elimination_offset (int, int);
  22. extern void frv_ifcvt_machdep_init (void *);
  23. #ifdef RTX_CODE
  24. extern int frv_legitimate_address_p_1 (machine_mode, rtx,
  25. int, int, int);
  26. extern rtx frv_find_base_term (rtx);
  27. #ifdef TREE_CODE
  28. extern void frv_init_cumulative_args (CUMULATIVE_ARGS *, tree,
  29. rtx, tree, int);
  30. extern bool frv_function_value_regno_p (const unsigned int);
  31. #endif /* TREE_CODE */
  32. extern int frv_expand_block_move (rtx *);
  33. extern int frv_expand_block_clear (rtx *);
  34. extern rtx frv_dynamic_chain_address (rtx);
  35. extern rtx frv_return_addr_rtx (int, rtx);
  36. extern rtx frv_index_memory (rtx, machine_mode, int);
  37. extern const char *frv_asm_output_opcode
  38. (FILE *, const char *);
  39. extern void frv_final_prescan_insn (rtx_insn *, rtx *, int);
  40. extern void frv_emit_move (machine_mode, rtx, rtx);
  41. extern int frv_emit_movsi (rtx, rtx);
  42. extern const char *output_move_single (rtx *, rtx);
  43. extern const char *output_move_double (rtx *, rtx);
  44. extern const char *output_condmove_single
  45. (rtx *, rtx);
  46. extern int frv_emit_cond_branch (rtx *);
  47. extern int frv_emit_scc (rtx *);
  48. extern rtx frv_split_scc (rtx, rtx, rtx, rtx, HOST_WIDE_INT);
  49. extern int frv_emit_cond_move (rtx, rtx, rtx, rtx);
  50. extern rtx frv_split_cond_move (rtx *);
  51. extern rtx frv_split_minmax (rtx *);
  52. extern rtx frv_split_abs (rtx *);
  53. extern void frv_split_double_load (rtx, rtx);
  54. extern void frv_split_double_store (rtx, rtx);
  55. #ifdef BB_HEAD
  56. extern void frv_ifcvt_init_extra_fields (struct ce_if_block *);
  57. extern void frv_ifcvt_modify_tests (struct ce_if_block *, rtx *, rtx *);
  58. extern void frv_ifcvt_modify_multiple_tests
  59. (struct ce_if_block *, basic_block,
  60. rtx *, rtx *);
  61. extern rtx frv_ifcvt_modify_insn (struct ce_if_block *, rtx, rtx);
  62. extern void frv_ifcvt_modify_final (struct ce_if_block *);
  63. extern void frv_ifcvt_modify_cancel (struct ce_if_block *);
  64. #endif
  65. extern enum reg_class frv_secondary_reload_class
  66. (enum reg_class,
  67. machine_mode, rtx);
  68. extern int frv_hard_regno_mode_ok (int, machine_mode);
  69. extern int frv_hard_regno_nregs (int, machine_mode);
  70. extern int frv_class_max_nregs (enum reg_class rclass,
  71. machine_mode mode);
  72. extern machine_mode frv_select_cc_mode (enum rtx_code, rtx, rtx);
  73. #endif /* RTX_CODE */
  74. extern int frv_trampoline_size (void);
  75. extern int direct_return_p (void);
  76. extern int frv_issue_rate (void);
  77. extern int frv_acc_group (rtx);
  78. #ifdef TREE_CODE
  79. extern int frv_adjust_field_align (tree, int);
  80. #endif
  81. #ifdef RTX_CODE
  82. extern int integer_register_operand (rtx, machine_mode);
  83. extern int frv_load_operand (rtx, machine_mode);
  84. extern int gpr_or_fpr_operand (rtx, machine_mode);
  85. extern int gpr_no_subreg_operand (rtx, machine_mode);
  86. extern int gpr_or_int6_operand (rtx, machine_mode);
  87. extern int fpr_or_int6_operand (rtx, machine_mode);
  88. extern int gpr_or_int_operand (rtx, machine_mode);
  89. extern int gpr_or_int12_operand (rtx, machine_mode);
  90. extern int gpr_fpr_or_int12_operand (rtx, machine_mode);
  91. extern int gpr_or_int10_operand (rtx, machine_mode);
  92. extern int move_source_operand (rtx, machine_mode);
  93. extern int move_destination_operand (rtx, machine_mode);
  94. extern int condexec_source_operand (rtx, machine_mode);
  95. extern int condexec_dest_operand (rtx, machine_mode);
  96. extern int lr_operand (rtx, machine_mode);
  97. extern int gpr_or_memory_operand (rtx, machine_mode);
  98. extern int fpr_or_memory_operand (rtx, machine_mode);
  99. extern int reg_or_0_operand (rtx, machine_mode);
  100. extern int fcc_operand (rtx, machine_mode);
  101. extern int icc_operand (rtx, machine_mode);
  102. extern int cc_operand (rtx, machine_mode);
  103. extern int fcr_operand (rtx, machine_mode);
  104. extern int icr_operand (rtx, machine_mode);
  105. extern int cr_operand (rtx, machine_mode);
  106. extern int call_operand (rtx, machine_mode);
  107. extern int fpr_operand (rtx, machine_mode);
  108. extern int even_reg_operand (rtx, machine_mode);
  109. extern int odd_reg_operand (rtx, machine_mode);
  110. extern int even_gpr_operand (rtx, machine_mode);
  111. extern int odd_gpr_operand (rtx, machine_mode);
  112. extern int quad_fpr_operand (rtx, machine_mode);
  113. extern int even_fpr_operand (rtx, machine_mode);
  114. extern int odd_fpr_operand (rtx, machine_mode);
  115. extern int dbl_memory_one_insn_operand (rtx, machine_mode);
  116. extern int dbl_memory_two_insn_operand (rtx, machine_mode);
  117. extern int int12_operand (rtx, machine_mode);
  118. extern int int6_operand (rtx, machine_mode);
  119. extern int int5_operand (rtx, machine_mode);
  120. extern int uint5_operand (rtx, machine_mode);
  121. extern int uint4_operand (rtx, machine_mode);
  122. extern int uint1_operand (rtx, machine_mode);
  123. extern int int_2word_operand (rtx, machine_mode);
  124. extern int pic_register_operand (rtx, machine_mode);
  125. extern int pic_symbolic_operand (rtx, machine_mode);
  126. extern int small_data_register_operand (rtx, machine_mode);
  127. extern int small_data_symbolic_operand (rtx, machine_mode);
  128. extern int upper_int16_operand (rtx, machine_mode);
  129. extern int uint16_operand (rtx, machine_mode);
  130. extern int symbolic_operand (rtx, machine_mode);
  131. extern int relational_operator (rtx, machine_mode);
  132. extern int signed_relational_operator (rtx, machine_mode);
  133. extern int unsigned_relational_operator (rtx, machine_mode);
  134. extern int float_relational_operator (rtx, machine_mode);
  135. extern int ccr_eqne_operator (rtx, machine_mode);
  136. extern int minmax_operator (rtx, machine_mode);
  137. extern int condexec_si_binary_operator (rtx, machine_mode);
  138. extern int condexec_si_media_operator (rtx, machine_mode);
  139. extern int condexec_si_divide_operator (rtx, machine_mode);
  140. extern int condexec_si_unary_operator (rtx, machine_mode);
  141. extern int condexec_sf_conv_operator (rtx, machine_mode);
  142. extern int condexec_sf_add_operator (rtx, machine_mode);
  143. extern int condexec_memory_operand (rtx, machine_mode);
  144. extern int intop_compare_operator (rtx, machine_mode);
  145. extern int acc_operand (rtx, machine_mode);
  146. extern int even_acc_operand (rtx, machine_mode);
  147. extern int quad_acc_operand (rtx, machine_mode);
  148. extern int accg_operand (rtx, machine_mode);
  149. extern rtx frv_matching_accg_for_acc (rtx);
  150. extern void frv_expand_fdpic_call (rtx *, bool, bool);
  151. extern rtx frv_gen_GPsym2reg (rtx, rtx);
  152. extern int frv_legitimate_memory_operand (rtx, machine_mode, int);
  153. /* Information about a relocation unspec. SYMBOL is the relocation symbol
  154. (a SYMBOL_REF or LABEL_REF), RELOC is the type of relocation and OFFSET
  155. is the constant addend. */
  156. struct frv_unspec {
  157. rtx symbol;
  158. int reloc;
  159. HOST_WIDE_INT offset;
  160. };
  161. extern bool frv_const_unspec_p (rtx, struct frv_unspec *);
  162. #endif