or1k-opinst.c 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686
  1. /* DO NOT EDIT! -*- buffer-read-only: t -*- vi:set ro: */
  2. /* Semantic operand instances for or1k.
  3. THIS FILE IS MACHINE GENERATED WITH CGEN.
  4. Copyright (C) 1996-2022 Free Software Foundation, Inc.
  5. This file is part of the GNU Binutils and/or GDB, the GNU debugger.
  6. This file is free software; you can redistribute it and/or modify
  7. it under the terms of the GNU General Public License as published by
  8. the Free Software Foundation; either version 3, or (at your option)
  9. any later version.
  10. It is distributed in the hope that it will be useful, but WITHOUT
  11. ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
  12. or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
  13. License for more details.
  14. You should have received a copy of the GNU General Public License along
  15. with this program; if not, write to the Free Software Foundation, Inc.,
  16. 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
  17. */
  18. #include "sysdep.h"
  19. #include "ansidecl.h"
  20. #include "bfd.h"
  21. #include "symcat.h"
  22. #include "or1k-desc.h"
  23. #include "or1k-opc.h"
  24. /* Operand references. */
  25. #define OP_ENT(op) OR1K_OPERAND_##op
  26. #define INPUT CGEN_OPINST_INPUT
  27. #define OUTPUT CGEN_OPINST_OUTPUT
  28. #define END CGEN_OPINST_END
  29. #define COND_REF CGEN_OPINST_COND_REF
  30. static const CGEN_OPINST sfmt_empty_ops[] ATTRIBUTE_UNUSED = {
  31. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  32. };
  33. static const CGEN_OPINST sfmt_l_j_ops[] ATTRIBUTE_UNUSED = {
  34. { INPUT, "disp26", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP26), 0, 0 },
  35. { INPUT, "sys_cpucfgr_nd", HW_H_SYS_CPUCFGR_ND, CGEN_MODE_USI, 0, 0, 0 },
  36. { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
  37. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  38. };
  39. static const CGEN_OPINST sfmt_l_adrp_ops[] ATTRIBUTE_UNUSED = {
  40. { INPUT, "disp21", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP21), 0, 0 },
  41. { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
  42. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  43. };
  44. static const CGEN_OPINST sfmt_l_jal_ops[] ATTRIBUTE_UNUSED = {
  45. { INPUT, "disp26", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP26), 0, 0 },
  46. { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
  47. { INPUT, "sys_cpucfgr_nd", HW_H_SYS_CPUCFGR_ND, CGEN_MODE_USI, 0, 0, 0 },
  48. { OUTPUT, "h_gpr_USI_9", HW_H_GPR, CGEN_MODE_USI, 0, 9, 0 },
  49. { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
  50. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  51. };
  52. static const CGEN_OPINST sfmt_l_jr_ops[] ATTRIBUTE_UNUSED = {
  53. { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
  54. { INPUT, "sys_cpucfgr_nd", HW_H_SYS_CPUCFGR_ND, CGEN_MODE_USI, 0, 0, 0 },
  55. { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
  56. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  57. };
  58. static const CGEN_OPINST sfmt_l_jalr_ops[] ATTRIBUTE_UNUSED = {
  59. { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
  60. { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
  61. { INPUT, "sys_cpucfgr_nd", HW_H_SYS_CPUCFGR_ND, CGEN_MODE_USI, 0, 0, 0 },
  62. { OUTPUT, "h_gpr_USI_9", HW_H_GPR, CGEN_MODE_USI, 0, 9, 0 },
  63. { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
  64. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  65. };
  66. static const CGEN_OPINST sfmt_l_bnf_ops[] ATTRIBUTE_UNUSED = {
  67. { INPUT, "disp26", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP26), 0, COND_REF },
  68. { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
  69. { INPUT, "sys_cpucfgr_nd", HW_H_SYS_CPUCFGR_ND, CGEN_MODE_USI, 0, 0, COND_REF },
  70. { INPUT, "sys_sr_f", HW_H_SYS_SR_F, CGEN_MODE_USI, 0, 0, 0 },
  71. { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
  72. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  73. };
  74. static const CGEN_OPINST sfmt_l_trap_ops[] ATTRIBUTE_UNUSED = {
  75. { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
  76. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  77. };
  78. static const CGEN_OPINST sfmt_l_msync_ops[] ATTRIBUTE_UNUSED = {
  79. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  80. };
  81. static const CGEN_OPINST sfmt_l_nop_imm_ops[] ATTRIBUTE_UNUSED = {
  82. { INPUT, "uimm16", HW_H_UIMM16, CGEN_MODE_UINT, OP_ENT (UIMM16), 0, 0 },
  83. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  84. };
  85. static const CGEN_OPINST sfmt_l_movhi_ops[] ATTRIBUTE_UNUSED = {
  86. { INPUT, "uimm16", HW_H_UIMM16, CGEN_MODE_UINT, OP_ENT (UIMM16), 0, 0 },
  87. { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
  88. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  89. };
  90. static const CGEN_OPINST sfmt_l_macrc_ops[] ATTRIBUTE_UNUSED = {
  91. { INPUT, "mac_maclo", HW_H_MAC_MACLO, CGEN_MODE_USI, 0, 0, 0 },
  92. { OUTPUT, "mac_machi", HW_H_MAC_MACHI, CGEN_MODE_USI, 0, 0, 0 },
  93. { OUTPUT, "mac_maclo", HW_H_MAC_MACLO, CGEN_MODE_USI, 0, 0, 0 },
  94. { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
  95. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  96. };
  97. static const CGEN_OPINST sfmt_l_mfspr_ops[] ATTRIBUTE_UNUSED = {
  98. { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
  99. { INPUT, "uimm16", HW_H_UIMM16, CGEN_MODE_UINT, OP_ENT (UIMM16), 0, 0 },
  100. { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
  101. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  102. };
  103. static const CGEN_OPINST sfmt_l_mtspr_ops[] ATTRIBUTE_UNUSED = {
  104. { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
  105. { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
  106. { INPUT, "uimm16_split", HW_H_UIMM16, CGEN_MODE_UINT, OP_ENT (UIMM16_SPLIT), 0, 0 },
  107. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  108. };
  109. static const CGEN_OPINST sfmt_l_lwz_ops[] ATTRIBUTE_UNUSED = {
  110. { INPUT, "h_memory_USI_c_call__AI_@cpu@_make_load_store_addr_rA_ext__SI_simm16_4", HW_H_MEMORY, CGEN_MODE_USI, 0, 0, 0 },
  111. { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
  112. { INPUT, "simm16", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
  113. { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
  114. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  115. };
  116. static const CGEN_OPINST sfmt_l_lws_ops[] ATTRIBUTE_UNUSED = {
  117. { INPUT, "h_memory_SI_c_call__AI_@cpu@_make_load_store_addr_rA_ext__SI_simm16_4", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, 0 },
  118. { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
  119. { INPUT, "simm16", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
  120. { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
  121. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  122. };
  123. static const CGEN_OPINST sfmt_l_lwa_ops[] ATTRIBUTE_UNUSED = {
  124. { INPUT, "h_memory_USI_c_call__AI_@cpu@_make_load_store_addr_rA_ext__SI_simm16_4", HW_H_MEMORY, CGEN_MODE_USI, 0, 0, 0 },
  125. { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
  126. { INPUT, "simm16", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
  127. { OUTPUT, "atomic_address", HW_H_ATOMIC_ADDRESS, CGEN_MODE_SI, 0, 0, 0 },
  128. { OUTPUT, "atomic_reserve", HW_H_ATOMIC_RESERVE, CGEN_MODE_BI, 0, 0, 0 },
  129. { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
  130. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  131. };
  132. static const CGEN_OPINST sfmt_l_lbz_ops[] ATTRIBUTE_UNUSED = {
  133. { INPUT, "h_memory_UQI_c_call__AI_@cpu@_make_load_store_addr_rA_ext__SI_simm16_1", HW_H_MEMORY, CGEN_MODE_UQI, 0, 0, 0 },
  134. { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
  135. { INPUT, "simm16", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
  136. { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
  137. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  138. };
  139. static const CGEN_OPINST sfmt_l_lbs_ops[] ATTRIBUTE_UNUSED = {
  140. { INPUT, "h_memory_QI_c_call__AI_@cpu@_make_load_store_addr_rA_ext__SI_simm16_1", HW_H_MEMORY, CGEN_MODE_QI, 0, 0, 0 },
  141. { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
  142. { INPUT, "simm16", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
  143. { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
  144. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  145. };
  146. static const CGEN_OPINST sfmt_l_lhz_ops[] ATTRIBUTE_UNUSED = {
  147. { INPUT, "h_memory_UHI_c_call__AI_@cpu@_make_load_store_addr_rA_ext__SI_simm16_2", HW_H_MEMORY, CGEN_MODE_UHI, 0, 0, 0 },
  148. { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
  149. { INPUT, "simm16", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
  150. { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
  151. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  152. };
  153. static const CGEN_OPINST sfmt_l_lhs_ops[] ATTRIBUTE_UNUSED = {
  154. { INPUT, "h_memory_HI_c_call__AI_@cpu@_make_load_store_addr_rA_ext__SI_simm16_2", HW_H_MEMORY, CGEN_MODE_HI, 0, 0, 0 },
  155. { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
  156. { INPUT, "simm16", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
  157. { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
  158. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  159. };
  160. static const CGEN_OPINST sfmt_l_sw_ops[] ATTRIBUTE_UNUSED = {
  161. { INPUT, "atomic_address", HW_H_ATOMIC_ADDRESS, CGEN_MODE_SI, 0, 0, 0 },
  162. { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
  163. { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
  164. { INPUT, "simm16_split", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16_SPLIT), 0, 0 },
  165. { OUTPUT, "atomic_reserve", HW_H_ATOMIC_RESERVE, CGEN_MODE_BI, 0, 0, COND_REF },
  166. { OUTPUT, "h_memory_USI_addr", HW_H_MEMORY, CGEN_MODE_USI, 0, 0, 0 },
  167. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  168. };
  169. static const CGEN_OPINST sfmt_l_sb_ops[] ATTRIBUTE_UNUSED = {
  170. { INPUT, "atomic_address", HW_H_ATOMIC_ADDRESS, CGEN_MODE_SI, 0, 0, 0 },
  171. { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
  172. { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
  173. { INPUT, "simm16_split", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16_SPLIT), 0, 0 },
  174. { OUTPUT, "atomic_reserve", HW_H_ATOMIC_RESERVE, CGEN_MODE_BI, 0, 0, COND_REF },
  175. { OUTPUT, "h_memory_UQI_addr", HW_H_MEMORY, CGEN_MODE_UQI, 0, 0, 0 },
  176. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  177. };
  178. static const CGEN_OPINST sfmt_l_sh_ops[] ATTRIBUTE_UNUSED = {
  179. { INPUT, "atomic_address", HW_H_ATOMIC_ADDRESS, CGEN_MODE_SI, 0, 0, 0 },
  180. { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
  181. { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
  182. { INPUT, "simm16_split", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16_SPLIT), 0, 0 },
  183. { OUTPUT, "atomic_reserve", HW_H_ATOMIC_RESERVE, CGEN_MODE_BI, 0, 0, COND_REF },
  184. { OUTPUT, "h_memory_UHI_addr", HW_H_MEMORY, CGEN_MODE_UHI, 0, 0, 0 },
  185. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  186. };
  187. static const CGEN_OPINST sfmt_l_swa_ops[] ATTRIBUTE_UNUSED = {
  188. { INPUT, "atomic_address", HW_H_ATOMIC_ADDRESS, CGEN_MODE_SI, 0, 0, 0 },
  189. { INPUT, "atomic_reserve", HW_H_ATOMIC_RESERVE, CGEN_MODE_BI, 0, 0, 0 },
  190. { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
  191. { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, COND_REF },
  192. { INPUT, "simm16_split", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16_SPLIT), 0, 0 },
  193. { INPUT, "sys_sr_f", HW_H_SYS_SR_F, CGEN_MODE_USI, 0, 0, 0 },
  194. { OUTPUT, "atomic_reserve", HW_H_ATOMIC_RESERVE, CGEN_MODE_BI, 0, 0, 0 },
  195. { OUTPUT, "h_memory_USI_addr", HW_H_MEMORY, CGEN_MODE_USI, 0, 0, COND_REF },
  196. { OUTPUT, "sys_sr_f", HW_H_SYS_SR_F, CGEN_MODE_USI, 0, 0, 0 },
  197. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  198. };
  199. static const CGEN_OPINST sfmt_l_sll_ops[] ATTRIBUTE_UNUSED = {
  200. { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
  201. { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
  202. { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
  203. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  204. };
  205. static const CGEN_OPINST sfmt_l_slli_ops[] ATTRIBUTE_UNUSED = {
  206. { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
  207. { INPUT, "uimm6", HW_H_UIMM6, CGEN_MODE_UINT, OP_ENT (UIMM6), 0, 0 },
  208. { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
  209. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  210. };
  211. static const CGEN_OPINST sfmt_l_and_ops[] ATTRIBUTE_UNUSED = {
  212. { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
  213. { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
  214. { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
  215. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  216. };
  217. static const CGEN_OPINST sfmt_l_add_ops[] ATTRIBUTE_UNUSED = {
  218. { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
  219. { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
  220. { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
  221. { INPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
  222. { INPUT, "sys_sr_ove", HW_H_SYS_SR_OVE, CGEN_MODE_USI, 0, 0, 0 },
  223. { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
  224. { OUTPUT, "sys_sr_cy", HW_H_SYS_SR_CY, CGEN_MODE_USI, 0, 0, 0 },
  225. { OUTPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
  226. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  227. };
  228. static const CGEN_OPINST sfmt_l_addc_ops[] ATTRIBUTE_UNUSED = {
  229. { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
  230. { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
  231. { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
  232. { INPUT, "sys_sr_cy", HW_H_SYS_SR_CY, CGEN_MODE_USI, 0, 0, 0 },
  233. { INPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
  234. { INPUT, "sys_sr_ove", HW_H_SYS_SR_OVE, CGEN_MODE_USI, 0, 0, 0 },
  235. { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
  236. { OUTPUT, "sys_sr_cy", HW_H_SYS_SR_CY, CGEN_MODE_USI, 0, 0, 0 },
  237. { OUTPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
  238. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  239. };
  240. static const CGEN_OPINST sfmt_l_mul_ops[] ATTRIBUTE_UNUSED = {
  241. { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
  242. { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
  243. { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
  244. { INPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
  245. { INPUT, "sys_sr_ove", HW_H_SYS_SR_OVE, CGEN_MODE_USI, 0, 0, 0 },
  246. { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
  247. { OUTPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
  248. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  249. };
  250. static const CGEN_OPINST sfmt_l_muld_ops[] ATTRIBUTE_UNUSED = {
  251. { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
  252. { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
  253. { OUTPUT, "mac_machi", HW_H_MAC_MACHI, CGEN_MODE_USI, 0, 0, 0 },
  254. { OUTPUT, "mac_maclo", HW_H_MAC_MACLO, CGEN_MODE_USI, 0, 0, 0 },
  255. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  256. };
  257. static const CGEN_OPINST sfmt_l_mulu_ops[] ATTRIBUTE_UNUSED = {
  258. { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
  259. { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
  260. { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
  261. { INPUT, "sys_sr_cy", HW_H_SYS_SR_CY, CGEN_MODE_USI, 0, 0, 0 },
  262. { INPUT, "sys_sr_ove", HW_H_SYS_SR_OVE, CGEN_MODE_USI, 0, 0, 0 },
  263. { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
  264. { OUTPUT, "sys_sr_cy", HW_H_SYS_SR_CY, CGEN_MODE_USI, 0, 0, 0 },
  265. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  266. };
  267. static const CGEN_OPINST sfmt_l_div_ops[] ATTRIBUTE_UNUSED = {
  268. { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
  269. { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, COND_REF },
  270. { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
  271. { INPUT, "sys_sr_ove", HW_H_SYS_SR_OVE, CGEN_MODE_USI, 0, 0, COND_REF },
  272. { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, COND_REF },
  273. { OUTPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, COND_REF },
  274. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  275. };
  276. static const CGEN_OPINST sfmt_l_divu_ops[] ATTRIBUTE_UNUSED = {
  277. { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
  278. { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, COND_REF },
  279. { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
  280. { INPUT, "sys_sr_ove", HW_H_SYS_SR_OVE, CGEN_MODE_USI, 0, 0, COND_REF },
  281. { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, COND_REF },
  282. { OUTPUT, "sys_sr_cy", HW_H_SYS_SR_CY, CGEN_MODE_USI, 0, 0, COND_REF },
  283. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  284. };
  285. static const CGEN_OPINST sfmt_l_ff1_ops[] ATTRIBUTE_UNUSED = {
  286. { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
  287. { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
  288. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  289. };
  290. static const CGEN_OPINST sfmt_l_xori_ops[] ATTRIBUTE_UNUSED = {
  291. { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
  292. { INPUT, "simm16", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
  293. { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
  294. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  295. };
  296. static const CGEN_OPINST sfmt_l_addi_ops[] ATTRIBUTE_UNUSED = {
  297. { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
  298. { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
  299. { INPUT, "simm16", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
  300. { INPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
  301. { INPUT, "sys_sr_ove", HW_H_SYS_SR_OVE, CGEN_MODE_USI, 0, 0, 0 },
  302. { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
  303. { OUTPUT, "sys_sr_cy", HW_H_SYS_SR_CY, CGEN_MODE_USI, 0, 0, 0 },
  304. { OUTPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
  305. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  306. };
  307. static const CGEN_OPINST sfmt_l_addic_ops[] ATTRIBUTE_UNUSED = {
  308. { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
  309. { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
  310. { INPUT, "simm16", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
  311. { INPUT, "sys_sr_cy", HW_H_SYS_SR_CY, CGEN_MODE_USI, 0, 0, 0 },
  312. { INPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
  313. { INPUT, "sys_sr_ove", HW_H_SYS_SR_OVE, CGEN_MODE_USI, 0, 0, 0 },
  314. { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
  315. { OUTPUT, "sys_sr_cy", HW_H_SYS_SR_CY, CGEN_MODE_USI, 0, 0, 0 },
  316. { OUTPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
  317. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  318. };
  319. static const CGEN_OPINST sfmt_l_muli_ops[] ATTRIBUTE_UNUSED = {
  320. { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
  321. { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
  322. { INPUT, "simm16", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
  323. { INPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
  324. { INPUT, "sys_sr_ove", HW_H_SYS_SR_OVE, CGEN_MODE_USI, 0, 0, 0 },
  325. { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
  326. { OUTPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
  327. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  328. };
  329. static const CGEN_OPINST sfmt_l_exths_ops[] ATTRIBUTE_UNUSED = {
  330. { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
  331. { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
  332. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  333. };
  334. static const CGEN_OPINST sfmt_l_cmov_ops[] ATTRIBUTE_UNUSED = {
  335. { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, COND_REF },
  336. { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, COND_REF },
  337. { INPUT, "sys_sr_f", HW_H_SYS_SR_F, CGEN_MODE_USI, 0, 0, 0 },
  338. { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, COND_REF },
  339. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  340. };
  341. static const CGEN_OPINST sfmt_l_sfgts_ops[] ATTRIBUTE_UNUSED = {
  342. { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
  343. { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
  344. { OUTPUT, "sys_sr_f", HW_H_SYS_SR_F, CGEN_MODE_USI, 0, 0, 0 },
  345. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  346. };
  347. static const CGEN_OPINST sfmt_l_sfgtsi_ops[] ATTRIBUTE_UNUSED = {
  348. { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
  349. { INPUT, "simm16", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
  350. { OUTPUT, "sys_sr_f", HW_H_SYS_SR_F, CGEN_MODE_USI, 0, 0, 0 },
  351. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  352. };
  353. static const CGEN_OPINST sfmt_l_mac_ops[] ATTRIBUTE_UNUSED = {
  354. { INPUT, "mac_machi", HW_H_MAC_MACHI, CGEN_MODE_USI, 0, 0, 0 },
  355. { INPUT, "mac_maclo", HW_H_MAC_MACLO, CGEN_MODE_USI, 0, 0, 0 },
  356. { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
  357. { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
  358. { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
  359. { INPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
  360. { INPUT, "sys_sr_ove", HW_H_SYS_SR_OVE, CGEN_MODE_USI, 0, 0, 0 },
  361. { OUTPUT, "mac_machi", HW_H_MAC_MACHI, CGEN_MODE_USI, 0, 0, 0 },
  362. { OUTPUT, "mac_maclo", HW_H_MAC_MACLO, CGEN_MODE_USI, 0, 0, 0 },
  363. { OUTPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
  364. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  365. };
  366. static const CGEN_OPINST sfmt_l_maci_ops[] ATTRIBUTE_UNUSED = {
  367. { INPUT, "mac_machi", HW_H_MAC_MACHI, CGEN_MODE_USI, 0, 0, 0 },
  368. { INPUT, "mac_maclo", HW_H_MAC_MACLO, CGEN_MODE_USI, 0, 0, 0 },
  369. { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
  370. { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
  371. { INPUT, "simm16", HW_H_SIMM16, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
  372. { INPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
  373. { INPUT, "sys_sr_ove", HW_H_SYS_SR_OVE, CGEN_MODE_USI, 0, 0, 0 },
  374. { OUTPUT, "mac_machi", HW_H_MAC_MACHI, CGEN_MODE_USI, 0, 0, 0 },
  375. { OUTPUT, "mac_maclo", HW_H_MAC_MACLO, CGEN_MODE_USI, 0, 0, 0 },
  376. { OUTPUT, "sys_sr_ov", HW_H_SYS_SR_OV, CGEN_MODE_USI, 0, 0, 0 },
  377. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  378. };
  379. static const CGEN_OPINST sfmt_l_macu_ops[] ATTRIBUTE_UNUSED = {
  380. { INPUT, "mac_machi", HW_H_MAC_MACHI, CGEN_MODE_USI, 0, 0, 0 },
  381. { INPUT, "mac_maclo", HW_H_MAC_MACLO, CGEN_MODE_USI, 0, 0, 0 },
  382. { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
  383. { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
  384. { INPUT, "rB", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RB), 0, 0 },
  385. { INPUT, "sys_sr_cy", HW_H_SYS_SR_CY, CGEN_MODE_USI, 0, 0, 0 },
  386. { INPUT, "sys_sr_ove", HW_H_SYS_SR_OVE, CGEN_MODE_USI, 0, 0, 0 },
  387. { OUTPUT, "mac_machi", HW_H_MAC_MACHI, CGEN_MODE_USI, 0, 0, 0 },
  388. { OUTPUT, "mac_maclo", HW_H_MAC_MACLO, CGEN_MODE_USI, 0, 0, 0 },
  389. { OUTPUT, "sys_sr_cy", HW_H_SYS_SR_CY, CGEN_MODE_USI, 0, 0, 0 },
  390. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  391. };
  392. static const CGEN_OPINST sfmt_lf_add_s_ops[] ATTRIBUTE_UNUSED = {
  393. { INPUT, "rASF", HW_H_FSR, CGEN_MODE_SF, OP_ENT (RASF), 0, 0 },
  394. { INPUT, "rBSF", HW_H_FSR, CGEN_MODE_SF, OP_ENT (RBSF), 0, 0 },
  395. { OUTPUT, "rDSF", HW_H_FSR, CGEN_MODE_SF, OP_ENT (RDSF), 0, 0 },
  396. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  397. };
  398. static const CGEN_OPINST sfmt_lf_add_d32_ops[] ATTRIBUTE_UNUSED = {
  399. { INPUT, "rAD32F", HW_H_FD32R, CGEN_MODE_DF, OP_ENT (RAD32F), 0, 0 },
  400. { INPUT, "rBD32F", HW_H_FD32R, CGEN_MODE_DF, OP_ENT (RBD32F), 0, 0 },
  401. { OUTPUT, "rDD32F", HW_H_FD32R, CGEN_MODE_DF, OP_ENT (RDD32F), 0, 0 },
  402. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  403. };
  404. static const CGEN_OPINST sfmt_lf_itof_s_ops[] ATTRIBUTE_UNUSED = {
  405. { INPUT, "rA", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RA), 0, 0 },
  406. { INPUT, "sys_fpcsr_rm", HW_H_SYS_FPCSR_RM, CGEN_MODE_USI, 0, 0, 0 },
  407. { OUTPUT, "rDSF", HW_H_FSR, CGEN_MODE_SF, OP_ENT (RDSF), 0, 0 },
  408. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  409. };
  410. static const CGEN_OPINST sfmt_lf_itof_d32_ops[] ATTRIBUTE_UNUSED = {
  411. { INPUT, "rADI", HW_H_I64R, CGEN_MODE_DI, OP_ENT (RADI), 0, 0 },
  412. { INPUT, "sys_fpcsr_rm", HW_H_SYS_FPCSR_RM, CGEN_MODE_USI, 0, 0, 0 },
  413. { OUTPUT, "rDD32F", HW_H_FD32R, CGEN_MODE_DF, OP_ENT (RDD32F), 0, 0 },
  414. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  415. };
  416. static const CGEN_OPINST sfmt_lf_ftoi_s_ops[] ATTRIBUTE_UNUSED = {
  417. { INPUT, "rASF", HW_H_FSR, CGEN_MODE_SF, OP_ENT (RASF), 0, 0 },
  418. { INPUT, "sys_fpcsr_rm", HW_H_SYS_FPCSR_RM, CGEN_MODE_USI, 0, 0, 0 },
  419. { OUTPUT, "rD", HW_H_GPR, CGEN_MODE_USI, OP_ENT (RD), 0, 0 },
  420. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  421. };
  422. static const CGEN_OPINST sfmt_lf_ftoi_d32_ops[] ATTRIBUTE_UNUSED = {
  423. { INPUT, "rAD32F", HW_H_FD32R, CGEN_MODE_DF, OP_ENT (RAD32F), 0, 0 },
  424. { INPUT, "sys_fpcsr_rm", HW_H_SYS_FPCSR_RM, CGEN_MODE_USI, 0, 0, 0 },
  425. { OUTPUT, "rDDI", HW_H_I64R, CGEN_MODE_DI, OP_ENT (RDDI), 0, 0 },
  426. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  427. };
  428. static const CGEN_OPINST sfmt_lf_sfeq_s_ops[] ATTRIBUTE_UNUSED = {
  429. { INPUT, "rASF", HW_H_FSR, CGEN_MODE_SF, OP_ENT (RASF), 0, 0 },
  430. { INPUT, "rBSF", HW_H_FSR, CGEN_MODE_SF, OP_ENT (RBSF), 0, 0 },
  431. { OUTPUT, "sys_sr_f", HW_H_SYS_SR_F, CGEN_MODE_USI, 0, 0, 0 },
  432. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  433. };
  434. static const CGEN_OPINST sfmt_lf_sfeq_d32_ops[] ATTRIBUTE_UNUSED = {
  435. { INPUT, "rAD32F", HW_H_FD32R, CGEN_MODE_DF, OP_ENT (RAD32F), 0, 0 },
  436. { INPUT, "rBD32F", HW_H_FD32R, CGEN_MODE_DF, OP_ENT (RBD32F), 0, 0 },
  437. { OUTPUT, "sys_sr_f", HW_H_SYS_SR_F, CGEN_MODE_USI, 0, 0, 0 },
  438. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  439. };
  440. static const CGEN_OPINST sfmt_lf_madd_s_ops[] ATTRIBUTE_UNUSED = {
  441. { INPUT, "rASF", HW_H_FSR, CGEN_MODE_SF, OP_ENT (RASF), 0, 0 },
  442. { INPUT, "rBSF", HW_H_FSR, CGEN_MODE_SF, OP_ENT (RBSF), 0, 0 },
  443. { INPUT, "rDSF", HW_H_FSR, CGEN_MODE_SF, OP_ENT (RDSF), 0, 0 },
  444. { OUTPUT, "rDSF", HW_H_FSR, CGEN_MODE_SF, OP_ENT (RDSF), 0, 0 },
  445. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  446. };
  447. static const CGEN_OPINST sfmt_lf_madd_d32_ops[] ATTRIBUTE_UNUSED = {
  448. { INPUT, "rAD32F", HW_H_FD32R, CGEN_MODE_DF, OP_ENT (RAD32F), 0, 0 },
  449. { INPUT, "rBD32F", HW_H_FD32R, CGEN_MODE_DF, OP_ENT (RBD32F), 0, 0 },
  450. { INPUT, "rDD32F", HW_H_FD32R, CGEN_MODE_DF, OP_ENT (RDD32F), 0, 0 },
  451. { OUTPUT, "rDD32F", HW_H_FD32R, CGEN_MODE_DF, OP_ENT (RDD32F), 0, 0 },
  452. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  453. };
  454. #undef OP_ENT
  455. #undef INPUT
  456. #undef OUTPUT
  457. #undef END
  458. #undef COND_REF
  459. /* Operand instance lookup table. */
  460. static const CGEN_OPINST *or1k_cgen_opinst_table[MAX_INSNS] = {
  461. 0,
  462. & sfmt_l_j_ops[0],
  463. & sfmt_l_adrp_ops[0],
  464. & sfmt_l_jal_ops[0],
  465. & sfmt_l_jr_ops[0],
  466. & sfmt_l_jalr_ops[0],
  467. & sfmt_l_bnf_ops[0],
  468. & sfmt_l_bnf_ops[0],
  469. & sfmt_l_trap_ops[0],
  470. & sfmt_l_trap_ops[0],
  471. & sfmt_l_msync_ops[0],
  472. & sfmt_l_msync_ops[0],
  473. & sfmt_l_msync_ops[0],
  474. & sfmt_l_msync_ops[0],
  475. & sfmt_l_nop_imm_ops[0],
  476. & sfmt_l_msync_ops[0],
  477. & sfmt_l_movhi_ops[0],
  478. & sfmt_l_macrc_ops[0],
  479. & sfmt_l_mfspr_ops[0],
  480. & sfmt_l_mtspr_ops[0],
  481. & sfmt_l_lwz_ops[0],
  482. & sfmt_l_lws_ops[0],
  483. & sfmt_l_lwa_ops[0],
  484. & sfmt_l_lbz_ops[0],
  485. & sfmt_l_lbs_ops[0],
  486. & sfmt_l_lhz_ops[0],
  487. & sfmt_l_lhs_ops[0],
  488. & sfmt_l_sw_ops[0],
  489. & sfmt_l_sb_ops[0],
  490. & sfmt_l_sh_ops[0],
  491. & sfmt_l_swa_ops[0],
  492. & sfmt_l_sll_ops[0],
  493. & sfmt_l_slli_ops[0],
  494. & sfmt_l_sll_ops[0],
  495. & sfmt_l_slli_ops[0],
  496. & sfmt_l_sll_ops[0],
  497. & sfmt_l_slli_ops[0],
  498. & sfmt_l_sll_ops[0],
  499. & sfmt_l_slli_ops[0],
  500. & sfmt_l_and_ops[0],
  501. & sfmt_l_and_ops[0],
  502. & sfmt_l_and_ops[0],
  503. & sfmt_l_add_ops[0],
  504. & sfmt_l_add_ops[0],
  505. & sfmt_l_addc_ops[0],
  506. & sfmt_l_mul_ops[0],
  507. & sfmt_l_muld_ops[0],
  508. & sfmt_l_mulu_ops[0],
  509. & sfmt_l_muld_ops[0],
  510. & sfmt_l_div_ops[0],
  511. & sfmt_l_divu_ops[0],
  512. & sfmt_l_ff1_ops[0],
  513. & sfmt_l_ff1_ops[0],
  514. & sfmt_l_mfspr_ops[0],
  515. & sfmt_l_mfspr_ops[0],
  516. & sfmt_l_xori_ops[0],
  517. & sfmt_l_addi_ops[0],
  518. & sfmt_l_addic_ops[0],
  519. & sfmt_l_muli_ops[0],
  520. & sfmt_l_exths_ops[0],
  521. & sfmt_l_exths_ops[0],
  522. & sfmt_l_exths_ops[0],
  523. & sfmt_l_exths_ops[0],
  524. & sfmt_l_exths_ops[0],
  525. & sfmt_l_exths_ops[0],
  526. & sfmt_l_cmov_ops[0],
  527. & sfmt_l_sfgts_ops[0],
  528. & sfmt_l_sfgtsi_ops[0],
  529. & sfmt_l_sfgts_ops[0],
  530. & sfmt_l_sfgtsi_ops[0],
  531. & sfmt_l_sfgts_ops[0],
  532. & sfmt_l_sfgtsi_ops[0],
  533. & sfmt_l_sfgts_ops[0],
  534. & sfmt_l_sfgtsi_ops[0],
  535. & sfmt_l_sfgts_ops[0],
  536. & sfmt_l_sfgtsi_ops[0],
  537. & sfmt_l_sfgts_ops[0],
  538. & sfmt_l_sfgtsi_ops[0],
  539. & sfmt_l_sfgts_ops[0],
  540. & sfmt_l_sfgtsi_ops[0],
  541. & sfmt_l_sfgts_ops[0],
  542. & sfmt_l_sfgtsi_ops[0],
  543. & sfmt_l_sfgts_ops[0],
  544. & sfmt_l_sfgtsi_ops[0],
  545. & sfmt_l_sfgts_ops[0],
  546. & sfmt_l_sfgtsi_ops[0],
  547. & sfmt_l_mac_ops[0],
  548. & sfmt_l_maci_ops[0],
  549. & sfmt_l_macu_ops[0],
  550. & sfmt_l_mac_ops[0],
  551. & sfmt_l_macu_ops[0],
  552. & sfmt_l_msync_ops[0],
  553. & sfmt_l_msync_ops[0],
  554. & sfmt_l_msync_ops[0],
  555. & sfmt_l_msync_ops[0],
  556. & sfmt_l_msync_ops[0],
  557. & sfmt_l_msync_ops[0],
  558. & sfmt_l_msync_ops[0],
  559. & sfmt_l_msync_ops[0],
  560. & sfmt_lf_add_s_ops[0],
  561. & sfmt_lf_add_d32_ops[0],
  562. & sfmt_lf_add_s_ops[0],
  563. & sfmt_lf_add_d32_ops[0],
  564. & sfmt_lf_add_s_ops[0],
  565. & sfmt_lf_add_d32_ops[0],
  566. & sfmt_lf_add_s_ops[0],
  567. & sfmt_lf_add_d32_ops[0],
  568. & sfmt_lf_add_s_ops[0],
  569. & sfmt_lf_add_d32_ops[0],
  570. & sfmt_lf_itof_s_ops[0],
  571. & sfmt_lf_itof_d32_ops[0],
  572. & sfmt_lf_ftoi_s_ops[0],
  573. & sfmt_lf_ftoi_d32_ops[0],
  574. & sfmt_lf_sfeq_s_ops[0],
  575. & sfmt_lf_sfeq_d32_ops[0],
  576. & sfmt_lf_sfeq_s_ops[0],
  577. & sfmt_lf_sfeq_d32_ops[0],
  578. & sfmt_lf_sfeq_s_ops[0],
  579. & sfmt_lf_sfeq_d32_ops[0],
  580. & sfmt_lf_sfeq_s_ops[0],
  581. & sfmt_lf_sfeq_d32_ops[0],
  582. & sfmt_lf_sfeq_s_ops[0],
  583. & sfmt_lf_sfeq_d32_ops[0],
  584. & sfmt_lf_sfeq_s_ops[0],
  585. & sfmt_lf_sfeq_d32_ops[0],
  586. & sfmt_lf_sfeq_s_ops[0],
  587. & sfmt_lf_sfeq_d32_ops[0],
  588. & sfmt_lf_sfeq_s_ops[0],
  589. & sfmt_lf_sfeq_d32_ops[0],
  590. & sfmt_lf_sfeq_s_ops[0],
  591. & sfmt_lf_sfeq_d32_ops[0],
  592. & sfmt_lf_sfeq_s_ops[0],
  593. & sfmt_lf_sfeq_d32_ops[0],
  594. & sfmt_lf_sfeq_s_ops[0],
  595. & sfmt_lf_sfeq_d32_ops[0],
  596. & sfmt_lf_sfeq_s_ops[0],
  597. & sfmt_lf_sfeq_d32_ops[0],
  598. & sfmt_lf_sfeq_s_ops[0],
  599. & sfmt_lf_sfeq_d32_ops[0],
  600. & sfmt_lf_madd_s_ops[0],
  601. & sfmt_lf_madd_d32_ops[0],
  602. & sfmt_l_msync_ops[0],
  603. & sfmt_l_msync_ops[0],
  604. };
  605. /* Function to call before using the operand instance table. */
  606. void
  607. or1k_cgen_init_opinst_table (CGEN_CPU_DESC cd)
  608. {
  609. int i;
  610. const CGEN_OPINST **oi = & or1k_cgen_opinst_table[0];
  611. CGEN_INSN *insns = (CGEN_INSN *) cd->insn_table.init_entries;
  612. for (i = 0; i < MAX_INSNS; ++i)
  613. insns[i].opinst = oi[i];
  614. }