micromipsdsp.igen 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137
  1. // Simulator definition for the micromips DSP ASE.
  2. // Copyright (C) 2005-2022 Free Software Foundation, Inc.
  3. // Contributed by Imagination Technologies, Ltd.
  4. // Written by Andrew Bennett <andrew.bennett@imgtec.com>
  5. //
  6. // This file is part of the MIPS sim.
  7. //
  8. // This program is free software; you can redistribute it and/or modify
  9. // it under the terms of the GNU General Public License as published by
  10. // the Free Software Foundation; either version 3 of the License, or
  11. // (at your option) any later version.
  12. //
  13. // This program is distributed in the hope that it will be useful,
  14. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16. // GNU General Public License for more details.
  17. //
  18. // You should have received a copy of the GNU General Public License
  19. // along with this program. If not, see <http://www.gnu.org/licenses/>.
  20. 000000,5.RT,5.RS,0001000100,111100:POOL32A:32::ABSQ_S.PH
  21. "absq_s.ph r<RT>, r<RS>"
  22. *micromipsdsp:
  23. {
  24. do_ph_s_absq (SD_, RT, RS);
  25. }
  26. 000000,5.RT,5.RS,0000000100,111100:POOL32A:32::ABSQ_S.QB
  27. "absq_s.qb r<RT>, r<RS>"
  28. *micromipsdsp:
  29. {
  30. do_qb_s_absq (SD_, RT, RS);
  31. }
  32. 000000,5.RT,5.RS,0010000100,111100:POOL32A:32::ABSQ_S.W
  33. "absq_s.w r<RT>, r<RS>"
  34. *micromipsdsp:
  35. {
  36. do_w_s_absq (SD_, RT, RS);
  37. }
  38. 000000,5.RT,5.RS,5.RD,00000,001101:POOL32A:32::ADDQ.PH
  39. "addq.ph r<RD>, r<RS>, r<RT>"
  40. *micromipsdsp:
  41. {
  42. do_ph_op (SD_, RD, RS, RT, 0, 0);
  43. }
  44. 000000,5.RT,5.RS,5.RD,10000,001101:POOL32A:32::ADDQ_S.PH
  45. "addq_s.ph r<RD>, r<RS>, r<RT>"
  46. *micromipsdsp:
  47. {
  48. do_ph_op (SD_, RD, RS, RT, 0, 1);
  49. }
  50. 000000,5.RT,5.RS,5.RD,01100,000101:POOL32A:32::ADDQ_S.W
  51. "addq_s.w r<RD>, r<RS>, r<RT>"
  52. *micromipsdsp:
  53. {
  54. do_w_op (SD_, RD, RS, RT, 0);
  55. }
  56. 000000,5.RT,5.RS,5.RD,00001,001101:POOL32A:32::ADDQH.PH
  57. "addqh.ph r<RD>, r<RS>, r<RT>"
  58. *micromipsdsp:
  59. {
  60. do_qh_ph_op (SD_, RD, RS, RT, 0, 0);
  61. }
  62. 000000,5.RT,5.RS,5.RD,10001,001101:POOL32A:32::ADDQH_R.PH
  63. "addqh_r.ph r<RD>, r<RS>, r<RT>"
  64. *micromipsdsp:
  65. {
  66. do_qh_ph_op (SD_, RD, RS, RT, 0, 1);
  67. }
  68. 000000,5.RT,5.RS,5.RD,00010,001101:POOL32A:32::ADDQH.W
  69. "addqh.w r<RD>, r<RS>, r<RT>"
  70. *micromipsdsp:
  71. {
  72. do_qh_w_op (SD_, RD, RS, RT, 0, 0);
  73. }
  74. 000000,5.RT,5.RS,5.RD,10010,001101:POOL32A:32::ADDQH_R.W
  75. "addqh_r.w r<RD>, r<RS>, r<RT>"
  76. *micromipsdsp:
  77. {
  78. do_qh_w_op (SD_, RD, RS, RT, 0, 1);
  79. }
  80. 000000,5.RT,5.RS,5.RD,01110,000101:POOL32A:32::ADDSC
  81. "addsc r<RD>, r<RS>, r<RT>"
  82. *micromipsdsp:
  83. {
  84. do_addsc (SD_, RD, RS, RT);
  85. }
  86. 000000,5.RT,5.RS,5.RD,00100,001101:POOL32A:32::ADDU.PH
  87. "addu.ph r<RD>, r<RS>, r<RT>"
  88. *micromipsdsp:
  89. {
  90. do_u_ph_op (SD_, RD, RS, RT, 0, 0);
  91. }
  92. 000000,5.RT,5.RS,5.RD,10100,001101:POOL32A:32::ADDU_S.PH
  93. "addu_s.ph r<RD>, r<RS>, r<RT>"
  94. *micromipsdsp:
  95. {
  96. do_u_ph_op (SD_, RD, RS, RT, 0, 1);
  97. }
  98. 000000,5.RT,5.RS,5.RD,00011,001101:POOL32A:32::ADDU.QB
  99. "addu.qb r<RD>, r<RS>, r<RT>"
  100. *micromipsdsp:
  101. {
  102. do_qb_op (SD_, RD, RS, RT, 0, 0);
  103. }
  104. 000000,5.RT,5.RS,5.RD,10011,001101:POOL32A:32::ADDU_S.QB
  105. "addu_s.qb r<RD>, r<RS>, r<RT>"
  106. *micromipsdsp:
  107. {
  108. do_qb_op (SD_, RD, RS, RT, 0, 1);
  109. }
  110. 000000,5.RT,5.RS,5.RD,01111,000101:POOL32A:32::ADDWC
  111. "addwc r<RD>, r<RS>, r<RT>"
  112. *micromipsdsp:
  113. {
  114. do_addwc (SD_, RD, RS, RT);
  115. }
  116. 000000,5.RT,5.RS,5.RD,00101,001101:POOL32A:32::ADDUH.QB
  117. "adduh.qb r<RD>, r<RS>, r<RT>"
  118. *micromipsdsp:
  119. {
  120. do_uh_qb_op (SD_, RD, RS, RT, 0, 0);
  121. }
  122. 000000,5.RT,5.RS,5.RD,10101,001101:POOL32A:32::ADDUH_R.QB
  123. "adduh_r.qb r<RD>, r<RS>, r<RT>"
  124. *micromipsdsp:
  125. {
  126. do_uh_qb_op (SD_, RD, RS, RT, 0, 1);
  127. }
  128. 000000,5.RT,5.RS,5.SA,01000,010101:POOL32A:32::APPEND
  129. "append r<RT>, r<RS>, <SA>"
  130. *micromipsdsp:
  131. {
  132. do_append (SD_, RT, RS, SA);
  133. }
  134. 000000,5.RT,5.RS,2.BP,00100010,111100:POOL32A:32::BALIGN
  135. "balign r<RT>, r<RS>, <BP>"
  136. *micromipsdsp:
  137. {
  138. do_balign (SD_, RT, RS, BP);
  139. }
  140. 000000,5.RT,5.RS,0011000100,111100:POOL32A:32::BITREV
  141. "bitrev r<RT>, r<RS>"
  142. *micromipsdsp:
  143. {
  144. do_bitrev (SD_, RT, RS);
  145. }
  146. 010000,1101100000,16.IMMEDIATE:POOL32I:32::BPOSGE32
  147. "bposge32 <IMMEDIATE>"
  148. *micromipsdsp:
  149. {
  150. uint32_t pos = (DSPCR >> DSPCR_POS_SHIFT) & DSPCR_POS_MASK;
  151. if (pos >= 32)
  152. NIA = delayslot_micromips (SD_, NIA + (EXTEND12 (IMMEDIATE) << 1), NIA,
  153. MICROMIPS_DELAYSLOT_SIZE_ANY);
  154. }
  155. 000000,5.RT,5.RS,0000000000,000101:POOL32A:32::CMP.EQ.PH
  156. "cmp.eq.ph r<RS>, r<RT>"
  157. *micromipsdsp:
  158. {
  159. do_ph_cmpu (SD_, RS, RT, 0);
  160. }
  161. 000000,5.RT,5.RS,0000000001,000101:POOL32A:32::CMP.LT.PH
  162. "cmp.lt.ph r<RS>, r<RT>"
  163. *micromipsdsp:
  164. {
  165. do_ph_cmpu (SD_, RS, RT, 1);
  166. }
  167. 000000,5.RT,5.RS,0000000010,000101:POOL32A:32::CMP.LE.PH
  168. "cmp.le.ph r<RS>, r<RT>"
  169. *micromipsdsp:
  170. {
  171. do_ph_cmpu (SD_, RS, RT, 2);
  172. }
  173. 000000,5.RT,5.RS,5.RD,00110,000101:POOL32A:32::CMPGDU.EQ.QB
  174. "cmpgdu.eq.qb r<RD>, r<RS>, r<RT>"
  175. *micromipsdsp:
  176. {
  177. do_qb_cmpgdu (SD_, RD, RS, RT, 0);
  178. }
  179. 000000,5.RT,5.RS,5.RD,00111,000101:POOL32A:32::CMPGDU.LT.QB
  180. "cmpgdu.lt.qb r<RD>, r<RS>, r<RT>"
  181. *micromipsdsp:
  182. {
  183. do_qb_cmpgdu (SD_, RD, RS, RT, 1);
  184. }
  185. 000000,5.RT,5.RS,5.RD,01000,000101:POOL32A:32::CMPGDU.LE.QB
  186. "cmpgdu.le.qb r<RD>, r<RS>, r<RT>"
  187. *micromipsdsp:
  188. {
  189. do_qb_cmpgdu (SD_, RD, RS, RT, 2);
  190. }
  191. 000000,5.RT,5.RS,5.RD,00011,000101:POOL32A:32::CMPGU.EQ.QB
  192. "cmpgu.eq.qb r<RD>, r<RS>, r<RT>"
  193. *micromipsdsp:
  194. {
  195. do_qb_cmpgu (SD_, RD, RS, RT, 0);
  196. }
  197. 000000,5.RT,5.RS,5.RD,00100,000101:POOL32A:32::CMPGU.LT.QB
  198. "cmpgu.lt.qb r<RD>, r<RS>, r<RT>"
  199. *micromipsdsp:
  200. {
  201. do_qb_cmpgu (SD_, RD, RS, RT, 1);
  202. }
  203. 000000,5.RT,5.RS,5.RD,00101,000101:POOL32A:32::CMPGU.LE.QB
  204. "cmpgu.le.qb r<RD>, r<RS>, r<RT>"
  205. *micromipsdsp:
  206. {
  207. do_qb_cmpgu (SD_, RD, RS, RT, 2);
  208. }
  209. 000000,5.RT,5.RS,0000001001,000101:POOL32A:32::CMPU.EQ.QB
  210. "cmpu.eq.qb r<RS>, r<RT>"
  211. *micromipsdsp:
  212. {
  213. do_qb_cmpu (SD_, RS, RT, 0);
  214. }
  215. 000000,5.RT,5.RS,0000001010,000101:POOL32A:32::CMPU.LT.QB
  216. "cmpu.lt.qb r<RS>, r<RT>"
  217. *micromipsdsp:
  218. {
  219. do_qb_cmpu (SD_, RS, RT, 1);
  220. }
  221. 000000,5.RT,5.RS,0000001011,000101:POOL32A:32::CMPU.LE.QB
  222. "cmpu.le.qb r<RS>, r<RT>"
  223. *micromipsdsp:
  224. {
  225. do_qb_cmpu (SD_, RS, RT, 2);
  226. }
  227. 000000,5.RT,5.RS,2.AC,00000010,111100:POOL32A:32::DPA.W.PH
  228. "dpa.w.ph ac<AC>, r<RS>, r<RT>"
  229. *micromipsdsp:
  230. {
  231. do_w_ph_dot_product (SD_, AC, RS, RT, 0);
  232. }
  233. 000000,5.RT,5.RS,2.AC,00001010,111100:POOL32A:32::DPAQ_S.W.PH
  234. "dpaq_s.w.ph ac<AC>, r<RS>, r<RT>"
  235. *micromipsdsp:
  236. {
  237. do_ph_dot_product (SD_, AC, RS, RT, 0);
  238. }
  239. 000000,5.RT,5.RS,2.AC,01001010,111100:POOL32A:32::DPAQ_SA.L.W
  240. "dpaq_sa.l.w ac<AC>, r<RS>, r<RT>"
  241. *micromipsdsp:
  242. {
  243. do_w_dot_product (SD_, AC, RS, RT, 0);
  244. }
  245. 000000,5.RT,5.RS,2.AC,10001010,111100:POOL32A:32::DPAQX_S.W.PH
  246. "dpaqx_s.w.ph ac<AC>, r<RS>, r<RT>"
  247. *micromipsdsp:
  248. {
  249. do_qx_w_ph_dot_product (SD_, AC, RS, RT, 0, 0);
  250. }
  251. 000000,5.RT,5.RS,2.AC,11001010,111100:POOL32A:32::DPAQX_SA.W.PH
  252. "dpaqx_sa.w.ph ac<AC>, r<RS>, r<RT>"
  253. *micromipsdsp:
  254. {
  255. do_qx_w_ph_dot_product (SD_, AC, RS, RT, 0, 1);
  256. }
  257. 000000,5.RT,5.RS,2.AC,10000010,111100:POOL32A:32::DPAU.H.QBL
  258. "dpau.h.qbl ac<AC>, r<RS>, r<RT>"
  259. *micromipsdsp:
  260. {
  261. do_qb_dot_product (SD_, AC, RS, RT, 0, 0);
  262. }
  263. 000000,5.RT,5.RS,2.AC,11000010,111100:POOL32A:32::DPAU.H.QBR
  264. "dpau.h.qbr ac<AC>, r<RS>, r<RT>"
  265. *micromipsdsp:
  266. {
  267. do_qb_dot_product (SD_, AC, RS, RT, 0, 1);
  268. }
  269. 000000,5.RT,5.RS,2.AC,01000010,111100:POOL32A:32::DPAX.W.PH
  270. "dpax.w.ph ac<AC>, r<RS>, r<RT>"
  271. *micromipsdsp:
  272. {
  273. do_x_w_ph_dot_product (SD_, AC, RS, RT, 0);
  274. }
  275. 000000,5.RT,5.RS,2.AC,00010010,111100:POOL32A:32::DPS.W.PH
  276. "dps.w.ph ac<AC>, r<RS>, r<RT>"
  277. *micromipsdsp:
  278. {
  279. do_w_ph_dot_product (SD_, AC, RS, RT, 1);
  280. }
  281. 000000,5.RT,5.RS,2.AC,00011010,111100:POOL32A:32::DPSQ_S.W.PH
  282. "dpsq_s.w.ph ac<AC>, r<RS>, r<RT>"
  283. *micromipsdsp:
  284. {
  285. do_ph_dot_product (SD_, AC, RS, RT, 1);
  286. }
  287. 000000,5.RT,5.RS,2.AC,01011010,111100:POOL32A:32::DPSQ_SA.L.W
  288. "dpsq_sa.l.w ac<AC>, r<RS>, r<RT>"
  289. *micromipsdsp:
  290. {
  291. do_w_dot_product (SD_, AC, RS, RT, 1);
  292. }
  293. 000000,5.RT,5.RS,2.AC,10011010,111100:POOL32A:32::DPSQX_S.W.PH
  294. "dpsqx_s.w.ph ac<AC>, r<RS>, r<RT>"
  295. *micromipsdsp:
  296. {
  297. do_qx_w_ph_dot_product (SD_, AC, RS, RT, 1, 0);
  298. }
  299. 000000,5.RT,5.RS,2.AC,11011010,111100:POOL32A:32::DPSQX_SA.W.PH
  300. "dpsqx_sa.w.ph ac<AC>, r<RS>, r<RT>"
  301. *micromipsdsp:
  302. {
  303. do_qx_w_ph_dot_product (SD_, AC, RS, RT, 1, 1);
  304. }
  305. 000000,5.RT,5.RS,2.AC,10010010,111100:POOL32A:32::DPSU.H.QBL
  306. "dpsu.h.qbl ac<AC>, r<RS>, r<RT>"
  307. *micromipsdsp:
  308. {
  309. do_qb_dot_product (SD_, AC, RS, RT, 1, 0);
  310. }
  311. 000000,5.RT,5.RS,2.AC,11010010,111100:POOL32A:32::DPSU.H.QBR
  312. "dpsu.h.qbr ac<AC>, r<RS>, r<RT>"
  313. *micromipsdsp:
  314. {
  315. do_qb_dot_product (SD_, AC, RS, RT, 1, 1);
  316. }
  317. 000000,5.RT,5.RS,2.AC,01010010,111100:POOL32A:32::DPSX.W.PH
  318. "dpsx.w.ph ac<AC>, r<RS>, r<RT>"
  319. *micromipsdsp:
  320. {
  321. do_x_w_ph_dot_product (SD_, AC, RS, RT, 1);
  322. }
  323. 000000,5.RT,5.SIZE,2.AC,10011001,111100:POOL32A:32::EXTP
  324. "extp r<RT>, ac<AC>, <SIZE>"
  325. *micromipsdsp:
  326. {
  327. do_extp (SD_, RT, AC, SIZE, 0);
  328. }
  329. 000000,5.RT,5.SIZE,2.AC,11011001,111100:POOL32A:32::EXTPDP
  330. "extpdp r<RT>, ac<AC>, <SIZE>"
  331. *micromipsdsp:
  332. {
  333. do_extp (SD_, RT, AC, SIZE, 1);
  334. }
  335. 000000,5.RT,5.RS,2.AC,11100010,111100:POOL32A:32::EXTPDPV
  336. "extpdpv r<RT>, ac<AC>, r<RS>"
  337. *micromipsdsp:
  338. {
  339. do_extpv (SD_, RT, AC, RS, 1);
  340. }
  341. 000000,5.RT,5.RS,2.AC,10100010,111100:POOL32A:32::EXTPV
  342. "extpv r<RT>, ac<AC>, r<RS>"
  343. *micromipsdsp:
  344. {
  345. do_extpv (SD_, RT, AC, RS, 0);
  346. }
  347. 000000,5.RT,5.SHIFT,2.AC,00111001,111100:POOL32A:32::EXTR.W
  348. "extr.w r<RT>, ac<AC>, <SHIFT>"
  349. *micromipsdsp:
  350. {
  351. do_w_extr (SD_, RT, AC, SHIFT, 0);
  352. }
  353. 000000,5.RT,5.SHIFT,2.AC,01111001,111100:POOL32A:32::EXTR_R.W
  354. "extr_r.w r<RT>, ac<AC>, <SHIFT>"
  355. *micromipsdsp:
  356. {
  357. do_w_extr (SD_, RT, AC, SHIFT, 1);
  358. }
  359. 000000,5.RT,5.SHIFT,2.AC,10111001,111100:POOL32A:32::EXTR_RS.W
  360. "extr_rs.w r<RT>, ac<AC>, <SHIFT>"
  361. *micromipsdsp:
  362. {
  363. do_w_extr (SD_, RT, AC, SHIFT, 2);
  364. }
  365. 000000,5.RT,5.SHIFT,2.AC,11111001,111100:POOL32A:32::EXTR_S.H
  366. "extr_s.h r<RT>, ac<AC>, <SHIFT>"
  367. *micromipsdsp:
  368. {
  369. do_h_extr (SD_, RT, AC, SHIFT);
  370. }
  371. 000000,5.RT,5.RS,2.AC,00111010,111100:POOL32A:32::EXTRV.W
  372. "extrv.w r<RT>, ac<AC>, r<RS>"
  373. *micromipsdsp:
  374. {
  375. do_extrv (SD_, RT, AC, RS, 0);
  376. }
  377. 000000,5.RT,5.RS,2.AC,01111010,111100:POOL32A:32::EXTRV_R.W
  378. "extrv_r.w r<RT>, ac<AC>, r<RS>"
  379. *micromipsdsp:
  380. {
  381. do_extrv (SD_, RT, AC, RS, 1);
  382. }
  383. 000000,5.RT,5.RS,2.AC,10111010,111100:POOL32A:32::EXTRV_RS.W
  384. "extrv_rs.w r<RT>, ac<AC>, r<RS>"
  385. *micromipsdsp:
  386. {
  387. do_extrv (SD_, RT, AC, RS, 2);
  388. }
  389. 000000,5.RT,5.RS,2.AC,11111010,111100:POOL32A:32::EXTRV_S.H
  390. "extrv_s.h r<RT>, ac<AC>, r<RS>"
  391. *micromipsdsp:
  392. {
  393. do_extrv_s_h (SD_, RT, AC, RS);
  394. }
  395. 000000,5.RT,5.RS,0100000100,111100:POOL32A:32::INSV
  396. "insv r<RT>, r<RS>"
  397. *micromipsdsp:
  398. {
  399. do_insv (SD_, RT, RS);
  400. }
  401. 000000,5.INDEX,5.BASE,5.RD,01000,100101:POOL32A:32::LBUX
  402. "lbux r<RD>, r<INDEX>(r<BASE>)"
  403. *micromipsdsp:
  404. {
  405. do_lxx (SD_, RD, BASE, INDEX, 0);
  406. }
  407. 000000,5.INDEX,5.BASE,5.RD,00101,100101:POOL32A:32::LHX
  408. "lhx r<RD>, r<INDEX>(r<BASE>)"
  409. *micromipsdsp:
  410. {
  411. do_lxx (SD_, RD, BASE, INDEX, 1);
  412. }
  413. 000000,5.INDEX,5.BASE,5.RD,00110,100101:POOL32A:32::LWX
  414. "lwx r<RD>, r<INDEX>(r<BASE>)"
  415. *micromipsdsp:
  416. {
  417. do_lxx (SD_, RD, BASE, INDEX, 2);
  418. }
  419. 000000,5.RT,5.RS,2.AC,00101010,111100:POOL32A:32::MADD_DSP
  420. "madd ac<AC>, r<RS>, r<RT>"
  421. *micromipsdsp:
  422. {
  423. do_dsp_madd (SD_, AC, RS, RT);
  424. }
  425. 000000,5.RT,5.RS,2.AC,01101010,111100:POOL32A:32::MADDU_DSP
  426. "maddu ac<AC>, r<RS>, r<RT>"
  427. *micromipsdsp:
  428. {
  429. do_dsp_maddu (SD_, AC, RS, RT);
  430. }
  431. 000000,5.RT,5.RS,2.AC,01101001,111100:POOL32A:32::MAQ_S.W.PHL
  432. "maq_s.w.phl ac<AC>, r<RS>, r<RT>"
  433. *micromipsdsp:
  434. {
  435. do_ph_maq (SD_, AC, RS, RT, 0, 0);
  436. }
  437. 000000,5.RT,5.RS,2.AC,11101001,111100:POOL32A:32::MAQ_SA.W.PHL
  438. "maq_sa.w.phl ac<AC>, r<RS>, r<RT>"
  439. *micromipsdsp:
  440. {
  441. do_ph_maq (SD_, AC, RS, RT, 1, 0);
  442. }
  443. 000000,5.RT,5.RS,2.AC,00101001,111100:POOL32A:32::MAQ_S.W.PHR
  444. "maq_s.w.phr ac<AC>, r<RS>, r<RT>"
  445. *micromipsdsp:
  446. {
  447. do_ph_maq (SD_, AC, RS, RT, 0, 1);
  448. }
  449. 000000,5.RT,5.RS,2.AC,10101001,111100:POOL32A:32::MAQ_SA.W.PHR
  450. "maq_sa.w.phr ac<AC>, r<RS>, r<RT>"
  451. *micromipsdsp:
  452. {
  453. do_ph_maq (SD_, AC, RS, RT, 1, 1);
  454. }
  455. 000000,00000,5.RS,2.AC,00000001,111100:POOL32A:32::MFHI_DSP
  456. "mfhi r<RS>, ac<AC>"
  457. *micromipsdsp:
  458. {
  459. do_dsp_mfhi (SD_, AC, RS);
  460. }
  461. 000000,00000,5.RS,2.AC,01000001,111100:POOL32A:32::MFLO_DSP
  462. "mflo r<RS>, ac<AC>"
  463. *micromipsdsp:
  464. {
  465. do_dsp_mflo (SD_, AC, RS);
  466. }
  467. 000000,5.RT,5.RS,5.RD,01010,010101:POOL32A:32::MODSUB
  468. "modsub r<RD>, r<RS>, r<RT>"
  469. *micromipsdsp:
  470. {
  471. do_modsub (SD_, RD, RS, RT);
  472. }
  473. 000000,5.RT,5.RS,2.AC,10101010,111100:POOL32A:32::MSUB_DSP
  474. "msub ac<AC>, r<RS>, r<RT>"
  475. *micromipsdsp:
  476. {
  477. do_dsp_msub (SD_, AC, RS, RT);
  478. }
  479. 000000,5.RT,5.RS,2.AC,11101010,111100:POOL32A:32::MSUBU_DSP
  480. "msubu ac<AC>, r<RS>, r<RT>"
  481. *micromipsdsp:
  482. {
  483. do_dsp_msubu (SD_, AC, RS, RT);
  484. }
  485. 000000,00000,5.RS,2.AC,10000001,111100:POOL32A:32::MTHI_DSP
  486. "mthi r<RS>, ac<AC>"
  487. *micromipsdsp:
  488. {
  489. do_dsp_mthi (SD_, AC, RS);
  490. }
  491. 000000,00000,5.RS,2.AC,00001001,111100:POOL32A:32::MTHLIP
  492. "mthlip r<RS>, ac<AC>"
  493. *micromipsdsp:
  494. {
  495. do_mthlip (SD_, RS, AC);
  496. }
  497. 000000,00000,5.RS,2.AC,11000001,111100:POOL32A:32::MTLO_DSP
  498. "mtlo r<RS>, ac<AC>"
  499. *micromipsdsp:
  500. {
  501. do_dsp_mtlo (SD_, AC, RS);
  502. }
  503. 000000,5.RT,5.RS,5.RD,00000,101101:POOL32A:32::MUL.PH
  504. "mul.ph r<RD>, r<RS>, r<RT>"
  505. *micromipsdsp:
  506. {
  507. do_ph_op (SD_, RD, RS, RT, 2, 0);
  508. }
  509. 000000,5.RT,5.RS,5.RD,10000,101101:POOL32A:32::MUL_S.PH
  510. "mul_s.ph r<RD>, r<RS>, r<RT>"
  511. *micromipsdsp:
  512. {
  513. do_ph_op (SD_, RD, RS, RT, 2, 1);
  514. }
  515. 000000,5.RT,5.RS,5.RD,00000,100101:POOL32A:32::MULEQ_S.W.PHL
  516. "muleq_s.w.phl r<RD>, r<RS>, r<RT>"
  517. *micromipsdsp:
  518. {
  519. do_ph_muleq (SD_, RD, RS, RT, 0);
  520. }
  521. 000000,5.RT,5.RS,5.RD,00001,100101:POOL32A:32::MULEQ_S.W.PHR
  522. "muleq_s.w.phr r<RD>, r<RS>, r<RT>"
  523. *micromipsdsp:
  524. {
  525. do_ph_muleq (SD_, RD, RS, RT, 1);
  526. }
  527. 000000,5.RT,5.RS,5.RD,00010,010101:POOL32A:32::MULEU_S.PH.QBL
  528. "muleu_s.ph.qbl r<RD>, r<RS>, r<RT>"
  529. *micromipsdsp:
  530. {
  531. do_qb_muleu (SD_, RD, RS, RT, 0);
  532. }
  533. 000000,5.RT,5.RS,5.RD,00011,010101:POOL32A:32::MULEU_S.PH.QBR
  534. "muleu_s.ph.qbr r<RD>, r<RS>, r<RT>"
  535. *micromipsdsp:
  536. {
  537. do_qb_muleu (SD_, RD, RS, RT, 1);
  538. }
  539. 000000,5.RT,5.RS,5.RD,00100,010101:POOL32A:32::MULQ_RS.PH
  540. "mulq_rs.ph r<RD>, r<RS>, r<RT>"
  541. *micromipsdsp:
  542. {
  543. do_ph_mulq (SD_, RD, RS, RT, 1);
  544. }
  545. 000000,5.RT,5.RS,5.RD,00110,010101:POOL32A:32::MULQ_RS.W
  546. "mulq_rs.w r<RD>, r<RS>, r<RT>"
  547. *micromipsdsp:
  548. {
  549. do_w_mulq (SD_, RD, RS, RT, 1);
  550. }
  551. 000000,5.RT,5.RS,5.RD,00101,010101:POOL32A:32::MULQ_S.PH
  552. "mulq_s.ph r<RD>, r<RS>, r<RT>"
  553. *micromipsdsp:
  554. {
  555. do_ph_mulq (SD_, RD, RS, RT, 0);
  556. }
  557. 000000,5.RT,5.RS,5.RD,00111,010101:POOL32A:32::MULQ_S.W
  558. "mulq_s.w r<RD>, r<RS>, r<RT>"
  559. *micromipsdsp:
  560. {
  561. do_w_mulq (SD_, RD, RS, RT, 0);
  562. }
  563. 000000,5.RT,5.RS,2.AC,10110010,111100:POOL32A:32::MULSA.W.PH
  564. "mulsa.w.ph ac<AC>, r<RS>, r<RT>"
  565. *micromipsdsp:
  566. {
  567. do_ph_w_mulsa (SD_, AC, RS, RT);
  568. }
  569. 000000,5.RT,5.RS,2.AC,11110010,111100:POOL32A:32::MULSAQ_S.W.PH
  570. "mulsaq_s.w.ph ac<AC>, r<RS>, r<RT>"
  571. *micromipsdsp:
  572. {
  573. do_mulsaq_s_w_ph (SD_, AC, RS, RT);
  574. }
  575. 000000,5.RT,5.RS,2.AC,00110010,111100:POOL32A:32::MULT_DSP
  576. "mult ac<AC>, r<RS>, r<RT>"
  577. *micromipsdsp:
  578. {
  579. do_dsp_mult (SD_, AC, RS, RT);
  580. }
  581. 000000,5.RT,5.RS,2.AC,01110010,111100:POOL32A:32::MULTU_DSP
  582. "multu ac<AC>, r<RS>, r<RT>"
  583. *micromipsdsp:
  584. {
  585. do_dsp_multu (SD_, AC, RS, RT);
  586. }
  587. 000000,5.RT,5.RS,5.RD,00110,101101:POOL32A:32::PACKRL.PH
  588. "packrl.ph r<RD>, r<RS>, r<RT>"
  589. *micromipsdsp:
  590. {
  591. do_ph_packrl (SD_, RD, RS, RT);
  592. }
  593. 000000,5.RT,5.RS,5.RD,01000,101101:POOL32A:32::PICK.PH
  594. "pick.ph r<RD>, r<RS>, r<RT>"
  595. *micromipsdsp:
  596. {
  597. do_ph_pick (SD_, RD, RS, RT);
  598. }
  599. 000000,5.RT,5.RS,5.RD,00111,101101:POOL32A:32::PICK.QB
  600. "pick.qb r<RD>, r<RS>, r<RT>"
  601. *micromipsdsp:
  602. {
  603. do_qb_pick (SD_, RD, RS, RT);
  604. }
  605. 000000,5.RT,5.RS,0101000100,111100:POOL32A:32::PRECEQ.W.PHL
  606. "preceq.w.phl r<RT>, r<RS>"
  607. *micromipsdsp:
  608. {
  609. do_w_preceq (SD_, RT, RS, 0);
  610. }
  611. 000000,5.RT,5.RS,0110000100,111100:POOL32A:32::PRECEQ.W.PHR
  612. "preceq.w.phr r<RT>, r<RS>"
  613. *micromipsdsp:
  614. {
  615. do_w_preceq (SD_, RT, RS, 1);
  616. }
  617. 000000,5.RT,5.RS,0111000100,111100:POOL32A:32::PRECEQU.PH.QBL
  618. "precequ.ph.qbl r<RT>, r<RS>"
  619. *micromipsdsp:
  620. {
  621. do_qb_ph_precequ (SD_, RT, RS, 2);
  622. }
  623. 000000,5.RT,5.RS,0111001100,111100:POOL32A:32::PRECEQU.PH.QBLA
  624. "precequ.ph.qbla r<RT>, r<RS>"
  625. *micromipsdsp:
  626. {
  627. do_qb_ph_precequ (SD_, RT, RS, 3);
  628. }
  629. 000000,5.RT,5.RS,1001000100,111100:POOL32A:32::PRECEQU.PH.QBR
  630. "precequ.ph.qbr r<RT>, r<RS>"
  631. *micromipsdsp:
  632. {
  633. do_qb_ph_precequ (SD_, RT, RS, 0);
  634. }
  635. 000000,5.RT,5.RS,1001001100,111100:POOL32A:32::PRECEQU.PH.QBRA
  636. "precequ.ph.qbra r<RT>, r<RS>"
  637. *micromipsdsp:
  638. {
  639. do_qb_ph_precequ (SD_, RT, RS, 1);
  640. }
  641. 000000,5.RT,5.RS,1011000100,111100:POOL32A:32::PRECEU.PH.QBL
  642. "preceu.ph.qbl r<RT>, r<RS>"
  643. *micromipsdsp:
  644. {
  645. do_qb_ph_preceu (SD_, RT, RS, 2);
  646. }
  647. 000000,5.RT,5.RS,1011001100,111100:POOL32A:32::PRECEU.PH.QBLA
  648. "preceu.ph.qbla r<RT>, r<RS>"
  649. *micromipsdsp:
  650. {
  651. do_qb_ph_preceu (SD_, RT, RS, 3);
  652. }
  653. 000000,5.RT,5.RS,1101000100,111100:POOL32A:32::PRECEU.PH.QBR
  654. "preceu.ph.qbr r<RT>, r<RS>"
  655. *micromipsdsp:
  656. {
  657. do_qb_ph_preceu (SD_, RT, RS, 0);
  658. }
  659. 000000,5.RT,5.RS,1101001100,111100:POOL32A:32::PRECEU.PH.QBRA
  660. "preceu.ph.qbra r<RT>, r<RS>"
  661. *micromipsdsp:
  662. {
  663. do_qb_ph_preceu (SD_, RT, RS, 1);
  664. }
  665. 000000,5.RT,5.RS,5.RD,00001,101101:POOL32A:32::PRECR.QB.PH
  666. "precr.qb.ph r<RD>, r<RS>, r<RT>"
  667. *micromipsdsp:
  668. {
  669. do_ph_qb_precr (SD_, RD, RS, RT);
  670. }
  671. 000000,5.RT,5.RS,5.SA,01111,001101:POOL32A:32::PRECR_SRA.PH.W
  672. "precr_sra.ph.w r<RT>, r<RS>, <SA>"
  673. *micromipsdsp:
  674. {
  675. do_precr_sra (SD_, RT, RS, SA, 0);
  676. }
  677. 000000,5.RT,5.RS,5.SA,11111,001101:POOL32A:32::PRECR_SRA_R.PH.W
  678. "precr_sra_r.ph.w r<RT>, r<RS>, <SA>"
  679. *micromipsdsp:
  680. {
  681. do_precr_sra (SD_, RT, RS, SA, 1);
  682. }
  683. 000000,5.RT,5.RS,5.RD,00011,101101:POOL32A:32::PRECRQ.PH.W
  684. "precrq.ph.w r<RD>, r<RS>, r<RT>"
  685. *micromipsdsp:
  686. {
  687. do_w_ph_precrq (SD_, RD, RS, RT);
  688. }
  689. 000000,5.RT,5.RS,5.RD,00010,101101:POOL32A:32::PRECRQ.QB.PH
  690. "precrq.qb.ph r<RD>, r<RS>, r<RT>"
  691. *micromipsdsp:
  692. {
  693. do_ph_qb_precrq (SD_, RD, RS, RT, 0);
  694. }
  695. 000000,5.RT,5.RS,5.RD,00101,101101:POOL32A:32::PRECRQU_S.QB.PH
  696. "precrqu_s.qb.ph r<RD>, r<RS>, r<RT>"
  697. *micromipsdsp:
  698. {
  699. do_ph_qb_precrq (SD_, RD, RS, RT, 1);
  700. }
  701. 000000,5.RT,5.RS,5.RD,00100,101101:POOL32A:32::PRECRQ_RS.PH.W
  702. "precrq_rs.ph.w r<RD>, r<RS>, r<RT>"
  703. *micromipsdsp:
  704. {
  705. do_w_ph_rs_precrq (SD_, RD, RS, RT);
  706. }
  707. 000000,5.RT,5.RS,5.SA,01001,010101:POOL32A:32::PREPEND
  708. "prepend r<RT>, r<RS>, <SA>"
  709. *micromipsdsp:
  710. {
  711. do_prepend (SD_, RT, RS, SA);
  712. }
  713. 000000,5.RT,5.RS,1111000100,111100:POOL32A:32::RADDU.W.QB
  714. "raddu.w.qb r<RT>, r<RS>"
  715. *micromipsdsp:
  716. {
  717. do_qb_w_raddu (SD_, RT, RS);
  718. }
  719. 000000,5.RT,7.CONTROL_MASK,00011001,111100:POOL32A:32::RDDSP
  720. "rddsp r<RT>":CONTROL_MASK == 1111111111
  721. "rddsp r<RT>, <CONTROL_MASK>"
  722. *micromipsdsp:
  723. {
  724. do_rddsp (SD_, RT, CONTROL_MASK);
  725. }
  726. 000000,10.IMMEDIATE,5.RD,00000,111101:POOL32A:32::REPL.PH
  727. "repl.ph r<RD>, <IMMEDIATE>"
  728. *micromipsdsp:
  729. {
  730. do_repl (SD_, RD, IMMEDIATE, 2);
  731. }
  732. 000000,5.RT,8.IMMEDIATE,0010111,111100:POOL32A:32::REPL.QB
  733. "repl.qb r<RT>, <IMMEDIATE>"
  734. *micromipsdsp:
  735. {
  736. do_repl (SD_, RT, IMMEDIATE, 0);
  737. }
  738. 000000,5.RT,5.RS,0000001100,111100:POOL32A:32::REPLV.PH
  739. "replv.ph r<RT>, r<RS>"
  740. *micromipsdsp:
  741. {
  742. do_repl (SD_, RT, RS, 3);
  743. }
  744. 000000,5.RT,5.RS,0001001100,111100:POOL32A:32::REPLV.QB
  745. "replv.qb r<RT>, r<RS>"
  746. *micromipsdsp:
  747. {
  748. do_repl (SD_, RT, RS, 1);
  749. }
  750. 000000,0000,6.IMMEDIATE,2.AC,00000000,011101:POOL32A:32::SHILO
  751. "shilo ac<AC>, <IMMEDIATE>"
  752. *micromipsdsp:
  753. {
  754. do_shilo (SD_, AC, IMMEDIATE);
  755. }
  756. 000000,00000,5.RS,2.AC,01001001,111100:POOL32A:32::SHILOV
  757. "shilov ac<AC>, r<RS>"
  758. *micromipsdsp:
  759. {
  760. do_shilov (SD_, AC, RS);
  761. }
  762. 000000,5.RT,5.RS,4.SHIFT,001110,110101:POOL32A:32::SHLL.PH
  763. "shll.ph r<RT>, r<RS>, <SHIFT>"
  764. *micromipsdsp:
  765. {
  766. do_ph_shift (SD_, RT, RS, SHIFT, 0, 0);
  767. }
  768. 000000,5.RT,5.RS,4.SHIFT,101110,110101:POOL32A:32::SHLL_S.PH
  769. "shll_s.ph r<RT>, r<RS>, <SHIFT>"
  770. *micromipsdsp:
  771. {
  772. do_ph_shift (SD_, RT, RS, SHIFT, 0, 1);
  773. }
  774. 000000,5.RT,5.RS,3.SHIFT,0100001,111100:POOL32A:32::SHLL.QB
  775. "shll.qb r<RT>, r<RS>, <SHIFT>"
  776. *micromipsdsp:
  777. {
  778. do_qb_shift (SD_, RT, RS, SHIFT, 0);
  779. }
  780. 000000,5.RT,5.RS,5.RD,01110,001101:POOL32A:32::SHLLV.PH
  781. "shllv.ph r<RD>, r<RT>, r<RS>"
  782. *micromipsdsp:
  783. {
  784. do_ph_shl (SD_, RD, RT, RS, 0, 0);
  785. }
  786. 000000,5.RT,5.RS,5.RD,11110,001101:POOL32A:32::SHLLV_S.PH
  787. "shllv_s.ph r<RD>, r<RD>, r<RS>"
  788. *micromipsdsp:
  789. {
  790. do_ph_shl (SD_, RD, RT, RS, 0, 1);
  791. }
  792. 000000,5.RT,5.RS,5.RD,01110,010101:POOL32A:32::SHLLV.QB
  793. "shllv.qb r<RD>, r<RT>, r<RS>"
  794. *micromipsdsp:
  795. {
  796. do_qb_shl (SD_, RD, RT, RS, 0);
  797. }
  798. 000000,5.RT,5.RS,5.RD,01111,010101:POOL32A:32::SHLLV_S.W
  799. "shllv_s.w r<RD>, r<RT>, r<RS>"
  800. *micromipsdsp:
  801. {
  802. do_w_s_shllv (SD_, RD, RT, RS);
  803. }
  804. 000000,5.RT,5.RS,5.SHIFT,01111,110101:POOL32A:32::SHLL_S.W
  805. "shll_s.w r<RT>, r<RS>, <SHIFT>"
  806. *micromipsdsp:
  807. {
  808. do_w_shll (SD_, RT, RS, SHIFT);
  809. }
  810. 000000,5.RT,5.RS,3.SHIFT,0000111,111100:POOL32A:32::SHRA.QB
  811. "shra.qb r<RT>, r<RS>, <SHIFT>"
  812. *micromipsdsp:
  813. {
  814. do_qb_shra (SD_, RT, RS, SHIFT, 0);
  815. }
  816. 000000,5.RT,5.RS,3.SHIFT,1000111,111100:POOL32A:32::SHRA_R.QB
  817. "shra_r.qb r<RT>, r<RS>, <SHIFT>"
  818. *micromipsdsp:
  819. {
  820. do_qb_shra (SD_, RT, RS, SHIFT, 1);
  821. }
  822. 000000,5.RT,5.RS,4.SHIFT,001100,110101:POOL32A:32::SHRA.PH
  823. "shra.ph r<RT>, r<RS>, <SHIFT>"
  824. *micromipsdsp:
  825. {
  826. do_ph_shift (SD_, RT, RS, SHIFT, 1, 0);
  827. }
  828. 000000,5.RT,5.RS,4.SHIFT,011100,110101:POOL32A:32::SHRA_R.PH
  829. "shra_r.ph r<RT>, r<RS>, <SHIFT>"
  830. *micromipsdsp:
  831. {
  832. do_ph_shift (SD_, RT, RS, SHIFT, 1, 1);
  833. }
  834. 000000,5.RT,5.RS,5.RD,00110,001101:POOL32A:32::SHRAV.PH
  835. "shrav.ph r<RD>, r<RT>, r<RS>"
  836. *micromipsdsp:
  837. {
  838. do_ph_shl (SD_, RD, RT, RS, 1, 0);
  839. }
  840. 000000,5.RT,5.RS,5.RD,10110,001101:POOL32A:32::SHRAV_R.PH
  841. "shrav_r.ph r<RD>, r<RT>, r<RS>"
  842. *micromipsdsp:
  843. {
  844. do_ph_shl (SD_, RD, RT, RS, 1, 1);
  845. }
  846. 000000,5.RT,5.RS,5.RD,00111,001101:POOL32A:32::SHRAV.QB
  847. "shrav.qb r<RD>, r<RT>, r<RS>"
  848. *micromipsdsp:
  849. {
  850. do_qb_shrav (SD_, RD, RT, RS, 0);
  851. }
  852. 000000,5.RT,5.RS,5.RD,10111,001101:POOL32A:32::SHRAV_R.QB
  853. "shrav_r.qb r<RD>, r<RT>, r<RS>"
  854. *micromipsdsp:
  855. {
  856. do_qb_shrav (SD_, RD, RT, RS, 1);
  857. }
  858. 000000,5.RT,5.RS,5.RD,01011,010101:POOL32A:32::SHRAV_R.W
  859. "shrav_r.w r<RD>, r<RT>, r<RS>"
  860. *micromipsdsp:
  861. {
  862. do_w_r_shrav (SD_, RD, RT, RS);
  863. }
  864. 000000,5.RT,5.RS,5.SHIFT,01011,110101:POOL32A:32::SHRA_R.W
  865. "shra_r.w r<RT>, r<RS>, <SHIFT>"
  866. *micromipsdsp:
  867. {
  868. do_w_shra (SD_, RT, RS, SHIFT);
  869. }
  870. 000000,5.RT,5.RS,4.SHIFT,001111,111100:POOL32A:32::SHRL.PH
  871. "shrl.ph r<RT>, r<RS>, <SHIFT>"
  872. *micromipsdsp:
  873. {
  874. do_ph_shrl (SD_, RT, RS, SHIFT);
  875. }
  876. 000000,5.RT,5.RS,3.SHIFT,1100001,111100:POOL32A:32::SHRL.QB
  877. "shrl.qb r<RT>, r<RS>, <SHIFT>"
  878. *micromipsdsp:
  879. {
  880. do_qb_shift (SD_, RT, RS, SHIFT, 1);
  881. }
  882. 000000,5.RT,5.RS,5.RD,01100,010101:POOL32A:32::SHRLV.PH
  883. "shrlv.ph r<RD>, r<RT>, r<RS>"
  884. *micromipsdsp:
  885. {
  886. do_ph_shrlv (SD_, RD, RT, RS);
  887. }
  888. 000000,5.RT,5.RS,5.RD,01101,010101:POOL32A:32::SHRLV.QB
  889. "shrlv.qb r<RD>, r<RT>, r<RS>"
  890. *micromipsdsp:
  891. {
  892. do_qb_shl (SD_, RD, RT, RS, 1);
  893. }
  894. 000000,5.RT,5.RS,5.RD,01000,001101:POOL32A:32::SUBQ.PH
  895. "subq.ph r<RD>, r<RS>, r<RT>"
  896. *micromipsdsp:
  897. {
  898. do_ph_op (SD_, RD, RS, RT, 1, 0);
  899. }
  900. 000000,5.RT,5.RS,5.RD,11000,001101:POOL32A:32::SUBQ_S.PH
  901. "subq_s.ph r<RD>, r<RS>, r<RT>"
  902. *micromipsdsp:
  903. {
  904. do_ph_op (SD_, RD, RS, RT, 1, 1);
  905. }
  906. 000000,5.RT,5.RS,5.RD,01101,000101:POOL32A:32::SUBQ_S.W
  907. "subq_s.w r<RD>, r<RS>, r<RT>"
  908. *micromipsdsp:
  909. {
  910. do_w_op (SD_, RD, RS, RT, 1);
  911. }
  912. 000000,5.RT,5.RS,5.RD,01001,001101:POOL32A:32::SUBQH.PH
  913. "subqh.ph r<RD>, r<RS>, r<RT>"
  914. *micromipsdsp:
  915. {
  916. do_qh_ph_op (SD_, RD, RS, RT, 1, 0);
  917. }
  918. 000000,5.RT,5.RS,5.RD,11001,001101:POOL32A:32::SUBQH_R.PH
  919. "subqh_r.ph r<RD>, r<RS>, r<RT>"
  920. *micromipsdsp:
  921. {
  922. do_qh_ph_op (SD_, RD, RS, RT, 1, 1);
  923. }
  924. 000000,5.RT,5.RS,5.RD,01010,001101:POOL32A:32::SUBQH.W
  925. "subqh.w r<RD>, r<RS>, r<RT>"
  926. *micromipsdsp:
  927. {
  928. do_qh_w_op (SD_, RD, RS, RT, 1, 0);
  929. }
  930. 000000,5.RT,5.RS,5.RD,11010,001101:POOL32A:32::SUBQH_R.W
  931. "subqh_r.w r<RD>, r<RS>, r<RT>"
  932. *micromipsdsp:
  933. {
  934. do_qh_w_op (SD_, RD, RS, RT, 1, 1);
  935. }
  936. 000000,5.RT,5.RS,5.RD,01100,001101:POOL32A:32::SUBU.PH
  937. "subu.ph r<RD>, r<RS>, r<RT>"
  938. *micromipsdsp:
  939. {
  940. do_u_ph_op (SD_, RD, RS, RT, 1, 0);
  941. }
  942. 000000,5.RT,5.RS,5.RD,11100,001101:POOL32A:32::SUBU_S.PH
  943. "subu_s.ph r<RD>, r<RS>, r<RT>"
  944. *micromipsdsp:
  945. {
  946. do_u_ph_op (SD_, RD, RS, RT, 1, 1);
  947. }
  948. 000000,5.RT,5.RS,5.RD,01011,001101:POOL32A:32::SUBU.QB
  949. "subu.qb r<RD>, r<RS>, r<RT>"
  950. *micromipsdsp:
  951. {
  952. do_qb_op (SD_, RD, RS, RT, 1, 0);
  953. }
  954. 000000,5.RT,5.RS,5.RD,11011,001101:POOL32A:32::SUBU_S.QB
  955. "subu_s.qb r<RD>, r<RS>, r<RT>"
  956. *micromipsdsp:
  957. {
  958. do_qb_op (SD_, RD, RS, RT, 1, 1);
  959. }
  960. 000000,5.RT,5.RS,5.RD,01101,001101:POOL32A:32::SUBUH.QB
  961. "subuh.qb r<RD>, r<RS>, r<RT>"
  962. *micromipsdsp:
  963. {
  964. do_uh_qb_op (SD_, RD, RS, RT, 1, 0);
  965. }
  966. 000000,5.RT,5.RS,5.RD,11101,001101:POOL32A:32::SUBUH_R.QB
  967. "subuh_r.qb r<RD>, r<RS>, r<RT>"
  968. *micromipsdsp:
  969. {
  970. do_uh_qb_op (SD_, RD, RS, RT, 1, 1);
  971. }
  972. 000000,5.RT,7.CONTROL_MASK,01011001,111100:POOL32A:32::WRDSP
  973. "wrdsp r<RT>":CONTROL_MASK == 1111111111
  974. "wrdsp r<RT>, <CONTROL_MASK>"
  975. *micromipsdsp:
  976. {
  977. do_wrdsp (SD_, RT, CONTROL_MASK);
  978. }