m32r-opinst.c 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762
  1. /* DO NOT EDIT! -*- buffer-read-only: t -*- vi:set ro: */
  2. /* Semantic operand instances for m32r.
  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 "m32r-desc.h"
  23. #include "m32r-opc.h"
  24. /* Operand references. */
  25. #define OP_ENT(op) M32R_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_add_ops[] ATTRIBUTE_UNUSED = {
  34. { INPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
  35. { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
  36. { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 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_add3_ops[] ATTRIBUTE_UNUSED = {
  40. { INPUT, "slo16", HW_H_SLO16, CGEN_MODE_INT, OP_ENT (SLO16), 0, 0 },
  41. { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
  42. { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
  43. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  44. };
  45. static const CGEN_OPINST sfmt_and3_ops[] ATTRIBUTE_UNUSED = {
  46. { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
  47. { INPUT, "uimm16", HW_H_UINT, CGEN_MODE_UINT, OP_ENT (UIMM16), 0, 0 },
  48. { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
  49. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  50. };
  51. static const CGEN_OPINST sfmt_or3_ops[] ATTRIBUTE_UNUSED = {
  52. { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
  53. { INPUT, "ulo16", HW_H_ULO16, CGEN_MODE_UINT, OP_ENT (ULO16), 0, 0 },
  54. { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
  55. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  56. };
  57. static const CGEN_OPINST sfmt_addi_ops[] ATTRIBUTE_UNUSED = {
  58. { INPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
  59. { INPUT, "simm8", HW_H_SINT, CGEN_MODE_INT, OP_ENT (SIMM8), 0, 0 },
  60. { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
  61. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  62. };
  63. static const CGEN_OPINST sfmt_addv_ops[] ATTRIBUTE_UNUSED = {
  64. { INPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
  65. { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
  66. { OUTPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 },
  67. { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
  68. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  69. };
  70. static const CGEN_OPINST sfmt_addv3_ops[] ATTRIBUTE_UNUSED = {
  71. { INPUT, "simm16", HW_H_SINT, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
  72. { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
  73. { OUTPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 },
  74. { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
  75. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  76. };
  77. static const CGEN_OPINST sfmt_addx_ops[] ATTRIBUTE_UNUSED = {
  78. { INPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 },
  79. { INPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
  80. { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
  81. { OUTPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 },
  82. { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 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_bc8_ops[] ATTRIBUTE_UNUSED = {
  86. { INPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 },
  87. { INPUT, "disp8", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP8), 0, COND_REF },
  88. { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
  89. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  90. };
  91. static const CGEN_OPINST sfmt_bc24_ops[] ATTRIBUTE_UNUSED = {
  92. { INPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 },
  93. { INPUT, "disp24", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP24), 0, COND_REF },
  94. { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
  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_beq_ops[] ATTRIBUTE_UNUSED = {
  98. { INPUT, "disp16", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP16), 0, COND_REF },
  99. { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 },
  100. { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
  101. { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
  102. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  103. };
  104. static const CGEN_OPINST sfmt_beqz_ops[] ATTRIBUTE_UNUSED = {
  105. { INPUT, "disp16", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP16), 0, COND_REF },
  106. { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
  107. { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
  108. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  109. };
  110. static const CGEN_OPINST sfmt_bl8_ops[] ATTRIBUTE_UNUSED = {
  111. { INPUT, "disp8", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP8), 0, 0 },
  112. { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
  113. { OUTPUT, "h_gr_SI_14", HW_H_GR, CGEN_MODE_SI, 0, 14, 0 },
  114. { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
  115. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  116. };
  117. static const CGEN_OPINST sfmt_bl24_ops[] ATTRIBUTE_UNUSED = {
  118. { INPUT, "disp24", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP24), 0, 0 },
  119. { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
  120. { OUTPUT, "h_gr_SI_14", HW_H_GR, CGEN_MODE_SI, 0, 14, 0 },
  121. { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
  122. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  123. };
  124. static const CGEN_OPINST sfmt_bcl8_ops[] ATTRIBUTE_UNUSED = {
  125. { INPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 },
  126. { INPUT, "disp8", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP8), 0, COND_REF },
  127. { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
  128. { OUTPUT, "h_gr_SI_14", HW_H_GR, CGEN_MODE_SI, 0, 14, COND_REF },
  129. { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
  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_bcl24_ops[] ATTRIBUTE_UNUSED = {
  133. { INPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 },
  134. { INPUT, "disp24", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP24), 0, COND_REF },
  135. { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
  136. { OUTPUT, "h_gr_SI_14", HW_H_GR, CGEN_MODE_SI, 0, 14, COND_REF },
  137. { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
  138. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  139. };
  140. static const CGEN_OPINST sfmt_bra8_ops[] ATTRIBUTE_UNUSED = {
  141. { INPUT, "disp8", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP8), 0, 0 },
  142. { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
  143. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  144. };
  145. static const CGEN_OPINST sfmt_bra24_ops[] ATTRIBUTE_UNUSED = {
  146. { INPUT, "disp24", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP24), 0, 0 },
  147. { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
  148. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  149. };
  150. static const CGEN_OPINST sfmt_cmp_ops[] ATTRIBUTE_UNUSED = {
  151. { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 },
  152. { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
  153. { OUTPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 },
  154. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  155. };
  156. static const CGEN_OPINST sfmt_cmpi_ops[] ATTRIBUTE_UNUSED = {
  157. { INPUT, "simm16", HW_H_SINT, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
  158. { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
  159. { OUTPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 },
  160. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  161. };
  162. static const CGEN_OPINST sfmt_cmpz_ops[] ATTRIBUTE_UNUSED = {
  163. { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
  164. { OUTPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 },
  165. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  166. };
  167. static const CGEN_OPINST sfmt_div_ops[] ATTRIBUTE_UNUSED = {
  168. { INPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, COND_REF },
  169. { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
  170. { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, COND_REF },
  171. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  172. };
  173. static const CGEN_OPINST sfmt_jc_ops[] ATTRIBUTE_UNUSED = {
  174. { INPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 },
  175. { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, COND_REF },
  176. { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
  177. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  178. };
  179. static const CGEN_OPINST sfmt_jl_ops[] ATTRIBUTE_UNUSED = {
  180. { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
  181. { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
  182. { OUTPUT, "h_gr_SI_14", HW_H_GR, CGEN_MODE_SI, 0, 14, 0 },
  183. { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
  184. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  185. };
  186. static const CGEN_OPINST sfmt_jmp_ops[] ATTRIBUTE_UNUSED = {
  187. { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
  188. { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
  189. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  190. };
  191. static const CGEN_OPINST sfmt_ld_ops[] ATTRIBUTE_UNUSED = {
  192. { INPUT, "h_memory_SI_sr", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, 0 },
  193. { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
  194. { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
  195. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  196. };
  197. static const CGEN_OPINST sfmt_ld_d_ops[] ATTRIBUTE_UNUSED = {
  198. { INPUT, "h_memory_SI_add__SI_sr_slo16", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, 0 },
  199. { INPUT, "slo16", HW_H_SLO16, CGEN_MODE_INT, OP_ENT (SLO16), 0, 0 },
  200. { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
  201. { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
  202. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  203. };
  204. static const CGEN_OPINST sfmt_ldb_ops[] ATTRIBUTE_UNUSED = {
  205. { INPUT, "h_memory_QI_sr", HW_H_MEMORY, CGEN_MODE_QI, 0, 0, 0 },
  206. { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
  207. { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
  208. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  209. };
  210. static const CGEN_OPINST sfmt_ldb_d_ops[] ATTRIBUTE_UNUSED = {
  211. { INPUT, "h_memory_QI_add__SI_sr_slo16", HW_H_MEMORY, CGEN_MODE_QI, 0, 0, 0 },
  212. { INPUT, "slo16", HW_H_SLO16, CGEN_MODE_INT, OP_ENT (SLO16), 0, 0 },
  213. { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
  214. { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 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_ldh_ops[] ATTRIBUTE_UNUSED = {
  218. { INPUT, "h_memory_HI_sr", HW_H_MEMORY, CGEN_MODE_HI, 0, 0, 0 },
  219. { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
  220. { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
  221. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  222. };
  223. static const CGEN_OPINST sfmt_ldh_d_ops[] ATTRIBUTE_UNUSED = {
  224. { INPUT, "h_memory_HI_add__SI_sr_slo16", HW_H_MEMORY, CGEN_MODE_HI, 0, 0, 0 },
  225. { INPUT, "slo16", HW_H_SLO16, CGEN_MODE_INT, OP_ENT (SLO16), 0, 0 },
  226. { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
  227. { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
  228. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  229. };
  230. static const CGEN_OPINST sfmt_ld_plus_ops[] ATTRIBUTE_UNUSED = {
  231. { INPUT, "h_memory_SI_sr", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, 0 },
  232. { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
  233. { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
  234. { OUTPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
  235. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  236. };
  237. static const CGEN_OPINST sfmt_ld24_ops[] ATTRIBUTE_UNUSED = {
  238. { INPUT, "uimm24", HW_H_ADDR, CGEN_MODE_USI, OP_ENT (UIMM24), 0, 0 },
  239. { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
  240. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  241. };
  242. static const CGEN_OPINST sfmt_ldi8_ops[] ATTRIBUTE_UNUSED = {
  243. { INPUT, "simm8", HW_H_SINT, CGEN_MODE_INT, OP_ENT (SIMM8), 0, 0 },
  244. { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
  245. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  246. };
  247. static const CGEN_OPINST sfmt_ldi16_ops[] ATTRIBUTE_UNUSED = {
  248. { INPUT, "slo16", HW_H_SLO16, CGEN_MODE_INT, OP_ENT (SLO16), 0, 0 },
  249. { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
  250. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  251. };
  252. static const CGEN_OPINST sfmt_lock_ops[] ATTRIBUTE_UNUSED = {
  253. { INPUT, "h_memory_SI_sr", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, 0 },
  254. { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
  255. { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
  256. { OUTPUT, "h_lock_BI", HW_H_LOCK, CGEN_MODE_BI, 0, 0, 0 },
  257. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  258. };
  259. static const CGEN_OPINST sfmt_machi_ops[] ATTRIBUTE_UNUSED = {
  260. { INPUT, "accum", HW_H_ACCUM, CGEN_MODE_DI, 0, 0, 0 },
  261. { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 },
  262. { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
  263. { OUTPUT, "accum", HW_H_ACCUM, CGEN_MODE_DI, 0, 0, 0 },
  264. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  265. };
  266. static const CGEN_OPINST sfmt_machi_a_ops[] ATTRIBUTE_UNUSED = {
  267. { INPUT, "acc", HW_H_ACCUMS, CGEN_MODE_DI, OP_ENT (ACC), 0, 0 },
  268. { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 },
  269. { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
  270. { OUTPUT, "acc", HW_H_ACCUMS, CGEN_MODE_DI, OP_ENT (ACC), 0, 0 },
  271. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  272. };
  273. static const CGEN_OPINST sfmt_mulhi_ops[] ATTRIBUTE_UNUSED = {
  274. { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 },
  275. { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
  276. { OUTPUT, "accum", HW_H_ACCUM, CGEN_MODE_DI, 0, 0, 0 },
  277. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  278. };
  279. static const CGEN_OPINST sfmt_mulhi_a_ops[] ATTRIBUTE_UNUSED = {
  280. { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 },
  281. { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
  282. { OUTPUT, "acc", HW_H_ACCUMS, CGEN_MODE_DI, OP_ENT (ACC), 0, 0 },
  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_mv_ops[] ATTRIBUTE_UNUSED = {
  286. { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
  287. { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 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_mvfachi_ops[] ATTRIBUTE_UNUSED = {
  291. { INPUT, "accum", HW_H_ACCUM, CGEN_MODE_DI, 0, 0, 0 },
  292. { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
  293. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  294. };
  295. static const CGEN_OPINST sfmt_mvfachi_a_ops[] ATTRIBUTE_UNUSED = {
  296. { INPUT, "accs", HW_H_ACCUMS, CGEN_MODE_DI, OP_ENT (ACCS), 0, 0 },
  297. { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
  298. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  299. };
  300. static const CGEN_OPINST sfmt_mvfc_ops[] ATTRIBUTE_UNUSED = {
  301. { INPUT, "scr", HW_H_CR, CGEN_MODE_USI, OP_ENT (SCR), 0, 0 },
  302. { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
  303. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  304. };
  305. static const CGEN_OPINST sfmt_mvtachi_ops[] ATTRIBUTE_UNUSED = {
  306. { INPUT, "accum", HW_H_ACCUM, CGEN_MODE_DI, 0, 0, 0 },
  307. { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 },
  308. { OUTPUT, "accum", HW_H_ACCUM, CGEN_MODE_DI, 0, 0, 0 },
  309. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  310. };
  311. static const CGEN_OPINST sfmt_mvtachi_a_ops[] ATTRIBUTE_UNUSED = {
  312. { INPUT, "accs", HW_H_ACCUMS, CGEN_MODE_DI, OP_ENT (ACCS), 0, 0 },
  313. { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 },
  314. { OUTPUT, "accs", HW_H_ACCUMS, CGEN_MODE_DI, OP_ENT (ACCS), 0, 0 },
  315. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  316. };
  317. static const CGEN_OPINST sfmt_mvtc_ops[] ATTRIBUTE_UNUSED = {
  318. { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
  319. { OUTPUT, "dcr", HW_H_CR, CGEN_MODE_USI, OP_ENT (DCR), 0, 0 },
  320. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  321. };
  322. static const CGEN_OPINST sfmt_nop_ops[] ATTRIBUTE_UNUSED = {
  323. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  324. };
  325. static const CGEN_OPINST sfmt_rac_ops[] ATTRIBUTE_UNUSED = {
  326. { INPUT, "accum", HW_H_ACCUM, CGEN_MODE_DI, 0, 0, 0 },
  327. { OUTPUT, "accum", HW_H_ACCUM, CGEN_MODE_DI, 0, 0, 0 },
  328. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  329. };
  330. static const CGEN_OPINST sfmt_rac_dsi_ops[] ATTRIBUTE_UNUSED = {
  331. { INPUT, "accs", HW_H_ACCUMS, CGEN_MODE_DI, OP_ENT (ACCS), 0, 0 },
  332. { INPUT, "imm1", HW_H_UINT, CGEN_MODE_UINT, OP_ENT (IMM1), 0, 0 },
  333. { OUTPUT, "accd", HW_H_ACCUMS, CGEN_MODE_DI, OP_ENT (ACCD), 0, 0 },
  334. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  335. };
  336. static const CGEN_OPINST sfmt_rte_ops[] ATTRIBUTE_UNUSED = {
  337. { INPUT, "h_bbpsw_UQI", HW_H_BBPSW, CGEN_MODE_UQI, 0, 0, 0 },
  338. { INPUT, "h_bpsw_UQI", HW_H_BPSW, CGEN_MODE_UQI, 0, 0, 0 },
  339. { INPUT, "h_cr_USI_14", HW_H_CR, CGEN_MODE_USI, 0, 14, 0 },
  340. { INPUT, "h_cr_USI_6", HW_H_CR, CGEN_MODE_USI, 0, 6, 0 },
  341. { OUTPUT, "h_bpsw_UQI", HW_H_BPSW, CGEN_MODE_UQI, 0, 0, 0 },
  342. { OUTPUT, "h_cr_USI_6", HW_H_CR, CGEN_MODE_USI, 0, 6, 0 },
  343. { OUTPUT, "h_psw_UQI", HW_H_PSW, CGEN_MODE_UQI, 0, 0, 0 },
  344. { OUTPUT, "pc", HW_H_PC, 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_seth_ops[] ATTRIBUTE_UNUSED = {
  348. { INPUT, "hi16", HW_H_HI16, CGEN_MODE_UINT, OP_ENT (HI16), 0, 0 },
  349. { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
  350. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  351. };
  352. static const CGEN_OPINST sfmt_sll3_ops[] ATTRIBUTE_UNUSED = {
  353. { INPUT, "simm16", HW_H_SINT, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
  354. { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
  355. { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
  356. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  357. };
  358. static const CGEN_OPINST sfmt_slli_ops[] ATTRIBUTE_UNUSED = {
  359. { INPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
  360. { INPUT, "uimm5", HW_H_UINT, CGEN_MODE_UINT, OP_ENT (UIMM5), 0, 0 },
  361. { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
  362. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  363. };
  364. static const CGEN_OPINST sfmt_st_ops[] ATTRIBUTE_UNUSED = {
  365. { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 },
  366. { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
  367. { OUTPUT, "h_memory_SI_src2", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, 0 },
  368. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  369. };
  370. static const CGEN_OPINST sfmt_st_d_ops[] ATTRIBUTE_UNUSED = {
  371. { INPUT, "slo16", HW_H_SLO16, CGEN_MODE_INT, OP_ENT (SLO16), 0, 0 },
  372. { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 },
  373. { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
  374. { OUTPUT, "h_memory_SI_add__SI_src2_slo16", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, 0 },
  375. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  376. };
  377. static const CGEN_OPINST sfmt_stb_ops[] ATTRIBUTE_UNUSED = {
  378. { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 },
  379. { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
  380. { OUTPUT, "h_memory_QI_src2", HW_H_MEMORY, CGEN_MODE_QI, 0, 0, 0 },
  381. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  382. };
  383. static const CGEN_OPINST sfmt_stb_d_ops[] ATTRIBUTE_UNUSED = {
  384. { INPUT, "slo16", HW_H_SLO16, CGEN_MODE_INT, OP_ENT (SLO16), 0, 0 },
  385. { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 },
  386. { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
  387. { OUTPUT, "h_memory_QI_add__SI_src2_slo16", HW_H_MEMORY, CGEN_MODE_QI, 0, 0, 0 },
  388. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  389. };
  390. static const CGEN_OPINST sfmt_sth_ops[] ATTRIBUTE_UNUSED = {
  391. { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 },
  392. { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
  393. { OUTPUT, "h_memory_HI_src2", HW_H_MEMORY, CGEN_MODE_HI, 0, 0, 0 },
  394. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  395. };
  396. static const CGEN_OPINST sfmt_sth_d_ops[] ATTRIBUTE_UNUSED = {
  397. { INPUT, "slo16", HW_H_SLO16, CGEN_MODE_INT, OP_ENT (SLO16), 0, 0 },
  398. { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 },
  399. { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
  400. { OUTPUT, "h_memory_HI_add__SI_src2_slo16", HW_H_MEMORY, CGEN_MODE_HI, 0, 0, 0 },
  401. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  402. };
  403. static const CGEN_OPINST sfmt_st_plus_ops[] ATTRIBUTE_UNUSED = {
  404. { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 },
  405. { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
  406. { OUTPUT, "h_memory_SI_new_src2", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, 0 },
  407. { OUTPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 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_sth_plus_ops[] ATTRIBUTE_UNUSED = {
  411. { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 },
  412. { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
  413. { OUTPUT, "h_memory_HI_new_src2", HW_H_MEMORY, CGEN_MODE_HI, 0, 0, 0 },
  414. { OUTPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
  415. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  416. };
  417. static const CGEN_OPINST sfmt_stb_plus_ops[] ATTRIBUTE_UNUSED = {
  418. { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 },
  419. { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
  420. { OUTPUT, "h_memory_QI_new_src2", HW_H_MEMORY, CGEN_MODE_QI, 0, 0, 0 },
  421. { OUTPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
  422. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  423. };
  424. static const CGEN_OPINST sfmt_trap_ops[] ATTRIBUTE_UNUSED = {
  425. { INPUT, "h_bpsw_UQI", HW_H_BPSW, CGEN_MODE_UQI, 0, 0, 0 },
  426. { INPUT, "h_cr_USI_6", HW_H_CR, CGEN_MODE_USI, 0, 6, 0 },
  427. { INPUT, "h_psw_UQI", HW_H_PSW, CGEN_MODE_UQI, 0, 0, 0 },
  428. { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
  429. { INPUT, "uimm4", HW_H_UINT, CGEN_MODE_UINT, OP_ENT (UIMM4), 0, 0 },
  430. { OUTPUT, "h_bbpsw_UQI", HW_H_BBPSW, CGEN_MODE_UQI, 0, 0, 0 },
  431. { OUTPUT, "h_bpsw_UQI", HW_H_BPSW, CGEN_MODE_UQI, 0, 0, 0 },
  432. { OUTPUT, "h_cr_USI_14", HW_H_CR, CGEN_MODE_USI, 0, 14, 0 },
  433. { OUTPUT, "h_cr_USI_6", HW_H_CR, CGEN_MODE_USI, 0, 6, 0 },
  434. { OUTPUT, "h_psw_UQI", HW_H_PSW, CGEN_MODE_UQI, 0, 0, 0 },
  435. { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
  436. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  437. };
  438. static const CGEN_OPINST sfmt_unlock_ops[] ATTRIBUTE_UNUSED = {
  439. { INPUT, "h_lock_BI", HW_H_LOCK, CGEN_MODE_BI, 0, 0, 0 },
  440. { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, COND_REF },
  441. { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, COND_REF },
  442. { OUTPUT, "h_lock_BI", HW_H_LOCK, CGEN_MODE_BI, 0, 0, 0 },
  443. { OUTPUT, "h_memory_SI_src2", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, COND_REF },
  444. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  445. };
  446. static const CGEN_OPINST sfmt_satb_ops[] ATTRIBUTE_UNUSED = {
  447. { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
  448. { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
  449. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  450. };
  451. static const CGEN_OPINST sfmt_sat_ops[] ATTRIBUTE_UNUSED = {
  452. { INPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 },
  453. { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, COND_REF },
  454. { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
  455. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  456. };
  457. static const CGEN_OPINST sfmt_sadd_ops[] ATTRIBUTE_UNUSED = {
  458. { INPUT, "h_accums_DI_0", HW_H_ACCUMS, CGEN_MODE_DI, 0, 0, 0 },
  459. { INPUT, "h_accums_DI_1", HW_H_ACCUMS, CGEN_MODE_DI, 0, 1, 0 },
  460. { OUTPUT, "h_accums_DI_0", HW_H_ACCUMS, CGEN_MODE_DI, 0, 0, 0 },
  461. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  462. };
  463. static const CGEN_OPINST sfmt_macwu1_ops[] ATTRIBUTE_UNUSED = {
  464. { INPUT, "h_accums_DI_1", HW_H_ACCUMS, CGEN_MODE_DI, 0, 1, 0 },
  465. { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 },
  466. { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
  467. { OUTPUT, "h_accums_DI_1", HW_H_ACCUMS, CGEN_MODE_DI, 0, 1, 0 },
  468. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  469. };
  470. static const CGEN_OPINST sfmt_mulwu1_ops[] ATTRIBUTE_UNUSED = {
  471. { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 },
  472. { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
  473. { OUTPUT, "h_accums_DI_1", HW_H_ACCUMS, CGEN_MODE_DI, 0, 1, 0 },
  474. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  475. };
  476. static const CGEN_OPINST sfmt_sc_ops[] ATTRIBUTE_UNUSED = {
  477. { INPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 },
  478. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  479. };
  480. static const CGEN_OPINST sfmt_clrpsw_ops[] ATTRIBUTE_UNUSED = {
  481. { INPUT, "h_cr_USI_0", HW_H_CR, CGEN_MODE_USI, 0, 0, 0 },
  482. { INPUT, "uimm8", HW_H_UINT, CGEN_MODE_UINT, OP_ENT (UIMM8), 0, 0 },
  483. { OUTPUT, "h_cr_USI_0", HW_H_CR, CGEN_MODE_USI, 0, 0, 0 },
  484. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  485. };
  486. static const CGEN_OPINST sfmt_setpsw_ops[] ATTRIBUTE_UNUSED = {
  487. { INPUT, "uimm8", HW_H_UINT, CGEN_MODE_UINT, OP_ENT (UIMM8), 0, 0 },
  488. { OUTPUT, "h_cr_USI_0", HW_H_CR, CGEN_MODE_USI, 0, 0, 0 },
  489. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  490. };
  491. static const CGEN_OPINST sfmt_bset_ops[] ATTRIBUTE_UNUSED = {
  492. { INPUT, "h_memory_QI_add__SI_sr_slo16", HW_H_MEMORY, CGEN_MODE_QI, 0, 0, 0 },
  493. { INPUT, "slo16", HW_H_SLO16, CGEN_MODE_INT, OP_ENT (SLO16), 0, 0 },
  494. { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
  495. { INPUT, "uimm3", HW_H_UINT, CGEN_MODE_UINT, OP_ENT (UIMM3), 0, 0 },
  496. { OUTPUT, "h_memory_QI_add__SI_sr_slo16", HW_H_MEMORY, CGEN_MODE_QI, 0, 0, 0 },
  497. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  498. };
  499. static const CGEN_OPINST sfmt_btst_ops[] ATTRIBUTE_UNUSED = {
  500. { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
  501. { INPUT, "uimm3", HW_H_UINT, CGEN_MODE_UINT, OP_ENT (UIMM3), 0, 0 },
  502. { OUTPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 },
  503. { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
  504. };
  505. #undef OP_ENT
  506. #undef INPUT
  507. #undef OUTPUT
  508. #undef END
  509. #undef COND_REF
  510. /* Operand instance lookup table. */
  511. static const CGEN_OPINST *m32r_cgen_opinst_table[MAX_INSNS] = {
  512. 0,
  513. & sfmt_add_ops[0],
  514. & sfmt_add3_ops[0],
  515. & sfmt_add_ops[0],
  516. & sfmt_and3_ops[0],
  517. & sfmt_add_ops[0],
  518. & sfmt_or3_ops[0],
  519. & sfmt_add_ops[0],
  520. & sfmt_and3_ops[0],
  521. & sfmt_addi_ops[0],
  522. & sfmt_addv_ops[0],
  523. & sfmt_addv3_ops[0],
  524. & sfmt_addx_ops[0],
  525. & sfmt_bc8_ops[0],
  526. & sfmt_bc24_ops[0],
  527. & sfmt_beq_ops[0],
  528. & sfmt_beqz_ops[0],
  529. & sfmt_beqz_ops[0],
  530. & sfmt_beqz_ops[0],
  531. & sfmt_beqz_ops[0],
  532. & sfmt_beqz_ops[0],
  533. & sfmt_beqz_ops[0],
  534. & sfmt_bl8_ops[0],
  535. & sfmt_bl24_ops[0],
  536. & sfmt_bcl8_ops[0],
  537. & sfmt_bcl24_ops[0],
  538. & sfmt_bc8_ops[0],
  539. & sfmt_bc24_ops[0],
  540. & sfmt_beq_ops[0],
  541. & sfmt_bra8_ops[0],
  542. & sfmt_bra24_ops[0],
  543. & sfmt_bcl8_ops[0],
  544. & sfmt_bcl24_ops[0],
  545. & sfmt_cmp_ops[0],
  546. & sfmt_cmpi_ops[0],
  547. & sfmt_cmp_ops[0],
  548. & sfmt_cmpi_ops[0],
  549. & sfmt_cmp_ops[0],
  550. & sfmt_cmpz_ops[0],
  551. & sfmt_div_ops[0],
  552. & sfmt_div_ops[0],
  553. & sfmt_div_ops[0],
  554. & sfmt_div_ops[0],
  555. & sfmt_div_ops[0],
  556. & sfmt_div_ops[0],
  557. & sfmt_div_ops[0],
  558. & sfmt_div_ops[0],
  559. & sfmt_div_ops[0],
  560. & sfmt_div_ops[0],
  561. & sfmt_div_ops[0],
  562. & sfmt_div_ops[0],
  563. & sfmt_jc_ops[0],
  564. & sfmt_jc_ops[0],
  565. & sfmt_jl_ops[0],
  566. & sfmt_jmp_ops[0],
  567. & sfmt_ld_ops[0],
  568. & sfmt_ld_d_ops[0],
  569. & sfmt_ldb_ops[0],
  570. & sfmt_ldb_d_ops[0],
  571. & sfmt_ldh_ops[0],
  572. & sfmt_ldh_d_ops[0],
  573. & sfmt_ldb_ops[0],
  574. & sfmt_ldb_d_ops[0],
  575. & sfmt_ldh_ops[0],
  576. & sfmt_ldh_d_ops[0],
  577. & sfmt_ld_plus_ops[0],
  578. & sfmt_ld24_ops[0],
  579. & sfmt_ldi8_ops[0],
  580. & sfmt_ldi16_ops[0],
  581. & sfmt_lock_ops[0],
  582. & sfmt_machi_ops[0],
  583. & sfmt_machi_a_ops[0],
  584. & sfmt_machi_ops[0],
  585. & sfmt_machi_a_ops[0],
  586. & sfmt_machi_ops[0],
  587. & sfmt_machi_a_ops[0],
  588. & sfmt_machi_ops[0],
  589. & sfmt_machi_a_ops[0],
  590. & sfmt_add_ops[0],
  591. & sfmt_mulhi_ops[0],
  592. & sfmt_mulhi_a_ops[0],
  593. & sfmt_mulhi_ops[0],
  594. & sfmt_mulhi_a_ops[0],
  595. & sfmt_mulhi_ops[0],
  596. & sfmt_mulhi_a_ops[0],
  597. & sfmt_mulhi_ops[0],
  598. & sfmt_mulhi_a_ops[0],
  599. & sfmt_mv_ops[0],
  600. & sfmt_mvfachi_ops[0],
  601. & sfmt_mvfachi_a_ops[0],
  602. & sfmt_mvfachi_ops[0],
  603. & sfmt_mvfachi_a_ops[0],
  604. & sfmt_mvfachi_ops[0],
  605. & sfmt_mvfachi_a_ops[0],
  606. & sfmt_mvfc_ops[0],
  607. & sfmt_mvtachi_ops[0],
  608. & sfmt_mvtachi_a_ops[0],
  609. & sfmt_mvtachi_ops[0],
  610. & sfmt_mvtachi_a_ops[0],
  611. & sfmt_mvtc_ops[0],
  612. & sfmt_mv_ops[0],
  613. & sfmt_nop_ops[0],
  614. & sfmt_mv_ops[0],
  615. & sfmt_rac_ops[0],
  616. & sfmt_rac_dsi_ops[0],
  617. & sfmt_rac_ops[0],
  618. & sfmt_rac_dsi_ops[0],
  619. & sfmt_rte_ops[0],
  620. & sfmt_seth_ops[0],
  621. & sfmt_add_ops[0],
  622. & sfmt_sll3_ops[0],
  623. & sfmt_slli_ops[0],
  624. & sfmt_add_ops[0],
  625. & sfmt_sll3_ops[0],
  626. & sfmt_slli_ops[0],
  627. & sfmt_add_ops[0],
  628. & sfmt_sll3_ops[0],
  629. & sfmt_slli_ops[0],
  630. & sfmt_st_ops[0],
  631. & sfmt_st_d_ops[0],
  632. & sfmt_stb_ops[0],
  633. & sfmt_stb_d_ops[0],
  634. & sfmt_sth_ops[0],
  635. & sfmt_sth_d_ops[0],
  636. & sfmt_st_plus_ops[0],
  637. & sfmt_sth_plus_ops[0],
  638. & sfmt_stb_plus_ops[0],
  639. & sfmt_st_plus_ops[0],
  640. & sfmt_add_ops[0],
  641. & sfmt_addv_ops[0],
  642. & sfmt_addx_ops[0],
  643. & sfmt_trap_ops[0],
  644. & sfmt_unlock_ops[0],
  645. & sfmt_satb_ops[0],
  646. & sfmt_satb_ops[0],
  647. & sfmt_sat_ops[0],
  648. & sfmt_cmpz_ops[0],
  649. & sfmt_sadd_ops[0],
  650. & sfmt_macwu1_ops[0],
  651. & sfmt_machi_ops[0],
  652. & sfmt_mulwu1_ops[0],
  653. & sfmt_macwu1_ops[0],
  654. & sfmt_sc_ops[0],
  655. & sfmt_sc_ops[0],
  656. & sfmt_clrpsw_ops[0],
  657. & sfmt_setpsw_ops[0],
  658. & sfmt_bset_ops[0],
  659. & sfmt_bset_ops[0],
  660. & sfmt_btst_ops[0],
  661. };
  662. /* Function to call before using the operand instance table. */
  663. void
  664. m32r_cgen_init_opinst_table (CGEN_CPU_DESC cd)
  665. {
  666. int i;
  667. const CGEN_OPINST **oi = & m32r_cgen_opinst_table[0];
  668. CGEN_INSN *insns = (CGEN_INSN *) cd->insn_table.init_entries;
  669. for (i = 0; i < MAX_INSNS; ++i)
  670. insns[i].opinst = oi[i];
  671. }