cmcpxis.cgs 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971
  1. # frv testcase for cmcpxis $GRi,$GRj,$ACCk,$CCi,$cond
  2. # mach: all
  3. .include "testutils.inc"
  4. start
  5. .global cmcpxis
  6. cmcpxis:
  7. set_spr_immed 0x1b1b,cccr
  8. ; Positive operands
  9. set_fr_iimmed 2,4,fr7 ; multiply small numbers
  10. set_fr_iimmed 5,3,fr8
  11. cmcpxis fr7,fr8,acc0,cc0,1
  12. test_accg_immed 0x00,accg0
  13. test_acc_immed 26,acc0
  14. set_fr_iimmed 3,1,fr7 ; multiply by 0
  15. set_fr_iimmed 0,2,fr8
  16. cmcpxis fr7,fr8,acc0,cc0,1
  17. test_accg_immed 0,accg0
  18. test_acc_immed 6,acc0
  19. set_fr_iimmed 2,1,fr7 ; multiply by 1
  20. set_fr_iimmed 1,1,fr8
  21. cmcpxis fr7,fr8,acc0,cc0,1
  22. test_accg_immed 0,accg0
  23. test_acc_immed 3,acc0
  24. set_fr_iimmed 0x3ff8,2,fr7 ; 15 bit result
  25. set_fr_iimmed 0x0007,2,fr8
  26. cmcpxis fr7,fr8,acc0,cc0,1
  27. test_accg_immed 0,accg0
  28. test_acc_limmed 0,0x7ffe,acc0
  29. set_fr_iimmed 0x4000,2,fr7 ; 16 bit result
  30. set_fr_iimmed 0x2000,2,fr8
  31. cmcpxis fr7,fr8,acc0,cc0,1
  32. test_accg_immed 0,accg0
  33. test_acc_limmed 0x0000,0xc000,acc0
  34. set_fr_iimmed 0x7fff,0x0000,fr7 ; max positive result
  35. set_fr_iimmed 0x7fff,0x7fff,fr8
  36. cmcpxis fr7,fr8,acc0,cc0,1
  37. test_accg_immed 0,accg0
  38. test_acc_limmed 0x3fff,0x0001,acc0
  39. ; Mixed operands
  40. set_fr_iimmed 2,0xfffd,fr7 ; multiply small numbers
  41. set_fr_iimmed 1,0xfffd,fr8
  42. cmcpxis fr7,fr8,acc0,cc0,1
  43. test_accg_immed 0xff,accg0
  44. test_acc_immed -9,acc0
  45. set_fr_iimmed 0xfffe,2,fr7 ; multiply by 1
  46. set_fr_iimmed 0xfffe,1,fr8
  47. cmcpxis fr7,fr8,acc0,cc0,1
  48. test_accg_immed 0xff,accg0
  49. test_acc_immed -6,acc0
  50. set_fr_iimmed 0xfffe,0,fr7 ; multiply by 0
  51. set_fr_iimmed 0xfffe,1,fr8
  52. cmcpxis fr7,fr8,acc0,cc0,1
  53. test_accg_immed 0xff,accg0
  54. test_acc_immed -2,acc0
  55. set_fr_iimmed 0x2001,0xffff,fr7 ; 15 bit result
  56. set_fr_iimmed 0xffff,0xfffe,fr8
  57. cmcpxis fr7,fr8,acc0,cc4,1
  58. test_accg_immed 0xff,accg0
  59. test_acc_limmed 0xffff,0xbfff,acc0
  60. set_fr_iimmed 0x4000,0xfffe,fr7 ; 16 bit result
  61. set_fr_iimmed 0x0003,0xfffe,fr8
  62. cmcpxis fr7,fr8,acc0,cc4,1
  63. test_accg_immed 0xff,accg0
  64. test_acc_limmed 0xffff,0x7ffa,acc0
  65. set_fr_iimmed 0x7fff,0x7fff,fr7 ; max negative result
  66. set_fr_iimmed 0x8000,0x8000,fr8
  67. cmcpxis fr7,fr8,acc0,cc4,1
  68. test_accg_immed 0xff,accg0
  69. test_acc_limmed 0x8001,0x0000,acc0
  70. set_fr_iimmed 0x8000,0x8000,fr7 ; max positive result
  71. set_fr_iimmed 0x8000,0x8000,fr8
  72. cmcpxis fr7,fr8,acc0,cc4,1
  73. test_accg_immed 0,accg0
  74. test_acc_limmed 0x8000,0x0000,acc0
  75. ; Negative operands
  76. set_fr_iimmed 0xfffe,0xfffc,fr7 ; multiply small numbers
  77. set_fr_iimmed 0xfffb,0xfffd,fr8
  78. cmcpxis fr7,fr8,acc0,cc4,1
  79. test_accg_immed 0x00,accg0
  80. test_acc_immed 26,acc0
  81. set_fr_iimmed 0xffff,0xffff,fr7 ; multiply by -1
  82. set_fr_iimmed 0xffff,0xfffe,fr8
  83. cmcpxis fr7,fr8,acc0,cc4,1
  84. test_accg_immed 0,accg0
  85. test_acc_immed 3,acc0
  86. set_fr_iimmed 0x7fff,0x0000,fr7 ; almost max positive result
  87. set_fr_iimmed 0x8001,0x7fff,fr8
  88. cmcpxis fr7,fr8,acc0,cc4,1
  89. test_accg_immed 0,accg0
  90. test_acc_immed 0x3fff0001,acc0
  91. set_fr_iimmed 0x8000,0x0000,fr7 ; max positive result
  92. set_fr_iimmed 0x8000,0x8000,fr8
  93. cmcpxis fr7,fr8,acc0,cc4,1
  94. test_accg_immed 0,accg0
  95. test_acc_immed 0x40000000,acc0
  96. ; Positive operands
  97. set_fr_iimmed 2,4,fr7 ; multiply small numbers
  98. set_fr_iimmed 5,3,fr8
  99. cmcpxis fr7,fr8,acc0,cc1,0
  100. test_accg_immed 0x00,accg0
  101. test_acc_immed 26,acc0
  102. set_fr_iimmed 3,1,fr7 ; multiply by 0
  103. set_fr_iimmed 0,2,fr8
  104. cmcpxis fr7,fr8,acc0,cc1,0
  105. test_accg_immed 0,accg0
  106. test_acc_immed 6,acc0
  107. set_fr_iimmed 2,1,fr7 ; multiply by 1
  108. set_fr_iimmed 1,1,fr8
  109. cmcpxis fr7,fr8,acc0,cc1,0
  110. test_accg_immed 0,accg0
  111. test_acc_immed 3,acc0
  112. set_fr_iimmed 0x3ff8,2,fr7 ; 15 bit result
  113. set_fr_iimmed 0x0007,2,fr8
  114. cmcpxis fr7,fr8,acc0,cc1,0
  115. test_accg_immed 0,accg0
  116. test_acc_limmed 0,0x7ffe,acc0
  117. set_fr_iimmed 0x4000,2,fr7 ; 16 bit result
  118. set_fr_iimmed 0x2000,2,fr8
  119. cmcpxis fr7,fr8,acc0,cc1,0
  120. test_accg_immed 0,accg0
  121. test_acc_limmed 0x0000,0xc000,acc0
  122. set_fr_iimmed 0x7fff,0x0000,fr7 ; max positive result
  123. set_fr_iimmed 0x7fff,0x7fff,fr8
  124. cmcpxis fr7,fr8,acc0,cc1,0
  125. test_accg_immed 0,accg0
  126. test_acc_limmed 0x3fff,0x0001,acc0
  127. ; Mixed operands
  128. set_fr_iimmed 2,0xfffd,fr7 ; multiply small numbers
  129. set_fr_iimmed 1,0xfffd,fr8
  130. cmcpxis fr7,fr8,acc0,cc1,0
  131. test_accg_immed 0xff,accg0
  132. test_acc_immed -9,acc0
  133. set_fr_iimmed 0xfffe,2,fr7 ; multiply by 1
  134. set_fr_iimmed 0xfffe,1,fr8
  135. cmcpxis fr7,fr8,acc0,cc1,0
  136. test_accg_immed 0xff,accg0
  137. test_acc_immed -6,acc0
  138. set_fr_iimmed 0xfffe,0,fr7 ; multiply by 0
  139. set_fr_iimmed 0xfffe,1,fr8
  140. cmcpxis fr7,fr8,acc0,cc1,0
  141. test_accg_immed 0xff,accg0
  142. test_acc_immed -2,acc0
  143. set_fr_iimmed 0x2001,0xffff,fr7 ; 15 bit result
  144. set_fr_iimmed 0xffff,0xfffe,fr8
  145. cmcpxis fr7,fr8,acc0,cc5,0
  146. test_accg_immed 0xff,accg0
  147. test_acc_limmed 0xffff,0xbfff,acc0
  148. set_fr_iimmed 0x4000,0xfffe,fr7 ; 16 bit result
  149. set_fr_iimmed 0x0003,0xfffe,fr8
  150. cmcpxis fr7,fr8,acc0,cc5,0
  151. test_accg_immed 0xff,accg0
  152. test_acc_limmed 0xffff,0x7ffa,acc0
  153. set_fr_iimmed 0x7fff,0x7fff,fr7 ; max negative result
  154. set_fr_iimmed 0x8000,0x8000,fr8
  155. cmcpxis fr7,fr8,acc0,cc5,0
  156. test_accg_immed 0xff,accg0
  157. test_acc_limmed 0x8001,0x0000,acc0
  158. set_fr_iimmed 0x8000,0x8000,fr7 ; max positive result
  159. set_fr_iimmed 0x8000,0x8000,fr8
  160. cmcpxis fr7,fr8,acc0,cc5,0
  161. test_accg_immed 0,accg0
  162. test_acc_limmed 0x8000,0x0000,acc0
  163. ; Negative operands
  164. set_fr_iimmed 0xfffe,0xfffc,fr7 ; multiply small numbers
  165. set_fr_iimmed 0xfffb,0xfffd,fr8
  166. cmcpxis fr7,fr8,acc0,cc5,0
  167. test_accg_immed 0x00,accg0
  168. test_acc_immed 26,acc0
  169. set_fr_iimmed 0xffff,0xffff,fr7 ; multiply by -1
  170. set_fr_iimmed 0xffff,0xfffe,fr8
  171. cmcpxis fr7,fr8,acc0,cc5,0
  172. test_accg_immed 0,accg0
  173. test_acc_immed 3,acc0
  174. set_fr_iimmed 0x7fff,0x0000,fr7 ; almost max positive result
  175. set_fr_iimmed 0x8001,0x7fff,fr8
  176. cmcpxis fr7,fr8,acc0,cc5,0
  177. test_accg_immed 0,accg0
  178. test_acc_immed 0x3fff0001,acc0
  179. set_fr_iimmed 0x8000,0x0000,fr7 ; max positive result
  180. set_fr_iimmed 0x8000,0x8000,fr8
  181. cmcpxis fr7,fr8,acc0,cc5,0
  182. test_accg_immed 0,accg0
  183. test_acc_immed 0x40000000,acc0
  184. ; Positive operands
  185. set_accg_immed 0x00000011,accg0
  186. set_acc_immed 0x11111111,acc0
  187. set_fr_iimmed 2,4,fr7 ; multiply small numbers
  188. set_fr_iimmed 5,3,fr8
  189. cmcpxis fr7,fr8,acc0,cc0,0
  190. test_accg_immed 0x00000011,accg0
  191. test_acc_immed 0x11111111,acc0
  192. set_fr_iimmed 3,1,fr7 ; multiply by 0
  193. set_fr_iimmed 0,2,fr8
  194. cmcpxis fr7,fr8,acc0,cc0,0
  195. test_accg_immed 0x00000011,accg0
  196. test_acc_immed 0x11111111,acc0
  197. set_fr_iimmed 2,1,fr7 ; multiply by 1
  198. set_fr_iimmed 1,1,fr8
  199. cmcpxis fr7,fr8,acc0,cc0,0
  200. test_accg_immed 0x00000011,accg0
  201. test_acc_immed 0x11111111,acc0
  202. set_fr_iimmed 0x3fff,2,fr7 ; 15 bit result
  203. set_fr_iimmed 0x0007,2,fr8
  204. cmcpxis fr7,fr8,acc0,cc0,0
  205. test_accg_immed 0x00000011,accg0
  206. test_acc_immed 0x11111111,acc0
  207. set_fr_iimmed 0x4000,2,fr7 ; 16 bit result
  208. set_fr_iimmed 0x2000,2,fr8
  209. cmcpxis fr7,fr8,acc0,cc0,0
  210. test_accg_immed 0x00000011,accg0
  211. test_acc_immed 0x11111111,acc0
  212. set_fr_iimmed 0x7fff,0x0000,fr7 ; max positive result
  213. set_fr_iimmed 0x7fff,0x7fff,fr8
  214. cmcpxis fr7,fr8,acc0,cc0,0
  215. test_accg_immed 0x00000011,accg0
  216. test_acc_immed 0x11111111,acc0
  217. ; Mixed operands
  218. set_fr_iimmed 2,0xfffd,fr7 ; multiply small numbers
  219. set_fr_iimmed 1,0xfffd,fr8
  220. cmcpxis fr7,fr8,acc0,cc0,0
  221. test_accg_immed 0x00000011,accg0
  222. test_acc_immed 0x11111111,acc0
  223. set_fr_iimmed 0xfffe,2,fr7 ; multiply by 1
  224. set_fr_iimmed 0xfffe,1,fr8
  225. cmcpxis fr7,fr8,acc0,cc0,0
  226. test_accg_immed 0x00000011,accg0
  227. test_acc_immed 0x11111111,acc0
  228. set_fr_iimmed 0xfffe,0,fr7 ; multiply by 0
  229. set_fr_iimmed 0xfffe,1,fr8
  230. cmcpxis fr7,fr8,acc0,cc4,0
  231. test_accg_immed 0x00000011,accg0
  232. test_acc_immed 0x11111111,acc0
  233. set_fr_iimmed 0x2001,0xfffe,fr7 ; 15 bit result
  234. set_fr_iimmed 0xfff9,0xfffe,fr8
  235. cmcpxis fr7,fr8,acc0,cc4,0
  236. test_accg_immed 0x00000011,accg0
  237. test_acc_immed 0x11111111,acc0
  238. set_fr_iimmed 0x4000,0xfffe,fr7 ; 16 bit result
  239. set_fr_iimmed 0x0003,0xfffe,fr8
  240. cmcpxis fr7,fr8,acc0,cc4,0
  241. test_accg_immed 0x00000011,accg0
  242. test_acc_immed 0x11111111,acc0
  243. set_fr_iimmed 0x7fff,0x8000,fr7 ; max negative result
  244. set_fr_iimmed 0x8000,0x8000,fr8
  245. cmcpxis fr7,fr8,acc0,cc4,0
  246. test_accg_immed 0x00000011,accg0
  247. test_acc_immed 0x11111111,acc0
  248. set_fr_iimmed 0x8000,0x7fff,fr7 ; max positive result
  249. set_fr_iimmed 0x8000,0x8000,fr8
  250. cmcpxis fr7,fr8,acc0,cc4,0
  251. test_accg_immed 0x00000011,accg0
  252. test_acc_immed 0x11111111,acc0
  253. ; Negative operands
  254. set_fr_iimmed 0xfffe,0xfffc,fr7 ; multiply small numbers
  255. set_fr_iimmed 0xfffb,0xfffd,fr8
  256. cmcpxis fr7,fr8,acc0,cc4,0
  257. test_accg_immed 0x00000011,accg0
  258. test_acc_immed 0x11111111,acc0
  259. set_fr_iimmed 0xffff,0xffff,fr7 ; multiply by -1
  260. set_fr_iimmed 0xffff,0xfffe,fr8
  261. cmcpxis fr7,fr8,acc0,cc4,0
  262. test_accg_immed 0x00000011,accg0
  263. test_acc_immed 0x11111111,acc0
  264. set_fr_iimmed 0x7fff,0x0000,fr7 ; almost max positive result
  265. set_fr_iimmed 0x8001,0x7fff,fr8
  266. cmcpxis fr7,fr8,acc0,cc4,0
  267. test_accg_immed 0x00000011,accg0
  268. test_acc_immed 0x11111111,acc0
  269. set_fr_iimmed 0x8000,0x0000,fr7 ; max positive result
  270. set_fr_iimmed 0x8000,0x8000,fr8
  271. cmcpxis fr7,fr8,acc0,cc4,0
  272. test_accg_immed 0x00000011,accg0
  273. test_acc_immed 0x11111111,acc0
  274. ; Positive operands
  275. set_accg_immed 0x00000011,accg0
  276. set_acc_immed 0x11111111,acc0
  277. set_fr_iimmed 2,4,fr7 ; multiply small numbers
  278. set_fr_iimmed 5,3,fr8
  279. cmcpxis fr7,fr8,acc0,cc1,1
  280. test_accg_immed 0x00000011,accg0
  281. test_acc_immed 0x11111111,acc0
  282. set_fr_iimmed 3,1,fr7 ; multiply by 0
  283. set_fr_iimmed 0,2,fr8
  284. cmcpxis fr7,fr8,acc0,cc1,1
  285. test_accg_immed 0x00000011,accg0
  286. test_acc_immed 0x11111111,acc0
  287. set_fr_iimmed 2,1,fr7 ; multiply by 1
  288. set_fr_iimmed 1,1,fr8
  289. cmcpxis fr7,fr8,acc0,cc1,1
  290. test_accg_immed 0x00000011,accg0
  291. test_acc_immed 0x11111111,acc0
  292. set_fr_iimmed 0x3fff,2,fr7 ; 15 bit result
  293. set_fr_iimmed 0x0007,2,fr8
  294. cmcpxis fr7,fr8,acc0,cc1,1
  295. test_accg_immed 0x00000011,accg0
  296. test_acc_immed 0x11111111,acc0
  297. set_fr_iimmed 0x4000,2,fr7 ; 16 bit result
  298. set_fr_iimmed 0x2000,2,fr8
  299. cmcpxis fr7,fr8,acc0,cc1,1
  300. test_accg_immed 0x00000011,accg0
  301. test_acc_immed 0x11111111,acc0
  302. set_fr_iimmed 0x7fff,0x0000,fr7 ; max positive result
  303. set_fr_iimmed 0x7fff,0x7fff,fr8
  304. cmcpxis fr7,fr8,acc0,cc1,1
  305. test_accg_immed 0x00000011,accg0
  306. test_acc_immed 0x11111111,acc0
  307. ; Mixed operands
  308. set_fr_iimmed 2,0xfffd,fr7 ; multiply small numbers
  309. set_fr_iimmed 1,0xfffd,fr8
  310. cmcpxis fr7,fr8,acc0,cc1,1
  311. test_accg_immed 0x00000011,accg0
  312. test_acc_immed 0x11111111,acc0
  313. set_fr_iimmed 0xfffe,2,fr7 ; multiply by 1
  314. set_fr_iimmed 0xfffe,1,fr8
  315. cmcpxis fr7,fr8,acc0,cc1,1
  316. test_accg_immed 0x00000011,accg0
  317. test_acc_immed 0x11111111,acc0
  318. set_fr_iimmed 0xfffe,0,fr7 ; multiply by 0
  319. set_fr_iimmed 0xfffe,1,fr8
  320. cmcpxis fr7,fr8,acc0,cc5,1
  321. test_accg_immed 0x00000011,accg0
  322. test_acc_immed 0x11111111,acc0
  323. set_fr_iimmed 0x2001,0xfffe,fr7 ; 15 bit result
  324. set_fr_iimmed 0xfff9,0xfffe,fr8
  325. cmcpxis fr7,fr8,acc0,cc5,1
  326. test_accg_immed 0x00000011,accg0
  327. test_acc_immed 0x11111111,acc0
  328. set_fr_iimmed 0x4000,0xfffe,fr7 ; 16 bit result
  329. set_fr_iimmed 0x0003,0xfffe,fr8
  330. cmcpxis fr7,fr8,acc0,cc5,1
  331. test_accg_immed 0x00000011,accg0
  332. test_acc_immed 0x11111111,acc0
  333. set_fr_iimmed 0x7fff,0x8000,fr7 ; max negative result
  334. set_fr_iimmed 0x8000,0x8000,fr8
  335. cmcpxis fr7,fr8,acc0,cc5,1
  336. test_accg_immed 0x00000011,accg0
  337. test_acc_immed 0x11111111,acc0
  338. set_fr_iimmed 0x8000,0x7fff,fr7 ; max positive result
  339. set_fr_iimmed 0x8000,0x8000,fr8
  340. cmcpxis fr7,fr8,acc0,cc5,1
  341. test_accg_immed 0x00000011,accg0
  342. test_acc_immed 0x11111111,acc0
  343. ; Negative operands
  344. set_fr_iimmed 0xfffe,0xfffc,fr7 ; multiply small numbers
  345. set_fr_iimmed 0xfffb,0xfffd,fr8
  346. cmcpxis fr7,fr8,acc0,cc5,1
  347. test_accg_immed 0x00000011,accg0
  348. test_acc_immed 0x11111111,acc0
  349. set_fr_iimmed 0xffff,0xffff,fr7 ; multiply by -1
  350. set_fr_iimmed 0xffff,0xfffe,fr8
  351. cmcpxis fr7,fr8,acc0,cc5,1
  352. test_accg_immed 0x00000011,accg0
  353. test_acc_immed 0x11111111,acc0
  354. set_fr_iimmed 0x7fff,0x0000,fr7 ; almost max positive result
  355. set_fr_iimmed 0x8001,0x7fff,fr8
  356. cmcpxis fr7,fr8,acc0,cc5,1
  357. test_accg_immed 0x00000011,accg0
  358. test_acc_immed 0x11111111,acc0
  359. set_fr_iimmed 0x8000,0x0000,fr7 ; max positive result
  360. set_fr_iimmed 0x8000,0x8000,fr8
  361. cmcpxis fr7,fr8,acc0,cc5,1
  362. test_accg_immed 0x00000011,accg0
  363. test_acc_immed 0x11111111,acc0
  364. ; Positive operands
  365. set_accg_immed 0x00000011,accg0
  366. set_acc_immed 0x11111111,acc0
  367. set_fr_iimmed 2,4,fr7 ; multiply small numbers
  368. set_fr_iimmed 5,3,fr8
  369. cmcpxis fr7,fr8,acc0,cc2,1
  370. test_accg_immed 0x00000011,accg0
  371. test_acc_immed 0x11111111,acc0
  372. set_fr_iimmed 3,1,fr7 ; multiply by 0
  373. set_fr_iimmed 0,2,fr8
  374. cmcpxis fr7,fr8,acc0,cc2,1
  375. test_accg_immed 0x00000011,accg0
  376. test_acc_immed 0x11111111,acc0
  377. set_fr_iimmed 2,1,fr7 ; multiply by 1
  378. set_fr_iimmed 1,1,fr8
  379. cmcpxis fr7,fr8,acc0,cc2,1
  380. test_accg_immed 0x00000011,accg0
  381. test_acc_immed 0x11111111,acc0
  382. set_fr_iimmed 0x3fff,2,fr7 ; 15 bit result
  383. set_fr_iimmed 0x0007,2,fr8
  384. cmcpxis fr7,fr8,acc0,cc2,1
  385. test_accg_immed 0x00000011,accg0
  386. test_acc_immed 0x11111111,acc0
  387. set_fr_iimmed 0x4000,2,fr7 ; 16 bit result
  388. set_fr_iimmed 0x2000,2,fr8
  389. cmcpxis fr7,fr8,acc0,cc2,1
  390. test_accg_immed 0x00000011,accg0
  391. test_acc_immed 0x11111111,acc0
  392. set_fr_iimmed 0x7fff,0x0000,fr7 ; max positive result
  393. set_fr_iimmed 0x7fff,0x7fff,fr8
  394. cmcpxis fr7,fr8,acc0,cc2,1
  395. test_accg_immed 0x00000011,accg0
  396. test_acc_immed 0x11111111,acc0
  397. ; Mixed operands
  398. set_fr_iimmed 2,0xfffd,fr7 ; multiply small numbers
  399. set_fr_iimmed 1,0xfffd,fr8
  400. cmcpxis fr7,fr8,acc0,cc2,1
  401. test_accg_immed 0x00000011,accg0
  402. test_acc_immed 0x11111111,acc0
  403. set_fr_iimmed 0xfffe,2,fr7 ; multiply by 1
  404. set_fr_iimmed 0xfffe,1,fr8
  405. cmcpxis fr7,fr8,acc0,cc2,1
  406. test_accg_immed 0x00000011,accg0
  407. test_acc_immed 0x11111111,acc0
  408. set_fr_iimmed 0xfffe,0,fr7 ; multiply by 0
  409. set_fr_iimmed 0xfffe,1,fr8
  410. cmcpxis fr7,fr8,acc0,cc6,1
  411. test_accg_immed 0x00000011,accg0
  412. test_acc_immed 0x11111111,acc0
  413. set_fr_iimmed 0x2001,0xfffe,fr7 ; 15 bit result
  414. set_fr_iimmed 0xfff9,0xfffe,fr8
  415. cmcpxis fr7,fr8,acc0,cc6,1
  416. test_accg_immed 0x00000011,accg0
  417. test_acc_immed 0x11111111,acc0
  418. set_fr_iimmed 0x4000,0xfffe,fr7 ; 16 bit result
  419. set_fr_iimmed 0x0003,0xfffe,fr8
  420. cmcpxis fr7,fr8,acc0,cc6,1
  421. test_accg_immed 0x00000011,accg0
  422. test_acc_immed 0x11111111,acc0
  423. set_fr_iimmed 0x7fff,0x8000,fr7 ; max negative result
  424. set_fr_iimmed 0x8000,0x8000,fr8
  425. cmcpxis fr7,fr8,acc0,cc6,1
  426. test_accg_immed 0x00000011,accg0
  427. test_acc_immed 0x11111111,acc0
  428. set_fr_iimmed 0x8000,0x7fff,fr7 ; max positive result
  429. set_fr_iimmed 0x8000,0x8000,fr8
  430. cmcpxis fr7,fr8,acc0,cc6,1
  431. test_accg_immed 0x00000011,accg0
  432. test_acc_immed 0x11111111,acc0
  433. ; Negative operands
  434. set_fr_iimmed 0xfffe,0xfffc,fr7 ; multiply small numbers
  435. set_fr_iimmed 0xfffb,0xfffd,fr8
  436. cmcpxis fr7,fr8,acc0,cc6,1
  437. test_accg_immed 0x00000011,accg0
  438. test_acc_immed 0x11111111,acc0
  439. set_fr_iimmed 0xffff,0xffff,fr7 ; multiply by -1
  440. set_fr_iimmed 0xffff,0xfffe,fr8
  441. cmcpxis fr7,fr8,acc0,cc6,1
  442. test_accg_immed 0x00000011,accg0
  443. test_acc_immed 0x11111111,acc0
  444. set_fr_iimmed 0x7fff,0x0000,fr7 ; almost max positive result
  445. set_fr_iimmed 0x8001,0x7fff,fr8
  446. cmcpxis fr7,fr8,acc0,cc6,1
  447. test_accg_immed 0x00000011,accg0
  448. test_acc_immed 0x11111111,acc0
  449. set_fr_iimmed 0x8000,0x0000,fr7 ; max positive result
  450. set_fr_iimmed 0x8000,0x8000,fr8
  451. cmcpxis fr7,fr8,acc0,cc6,1
  452. test_accg_immed 0x00000011,accg0
  453. test_acc_immed 0x11111111,acc0
  454. ; Positive operands
  455. set_accg_immed 0x00000011,accg0
  456. set_acc_immed 0x11111111,acc0
  457. set_fr_iimmed 2,4,fr7 ; multiply small numbers
  458. set_fr_iimmed 5,3,fr8
  459. cmcpxis fr7,fr8,acc0,cc2,1
  460. test_accg_immed 0x00000011,accg0
  461. test_acc_immed 0x11111111,acc0
  462. set_fr_iimmed 3,1,fr7 ; multiply by 0
  463. set_fr_iimmed 0,2,fr8
  464. cmcpxis fr7,fr8,acc0,cc2,0
  465. test_accg_immed 0x00000011,accg0
  466. test_acc_immed 0x11111111,acc0
  467. set_fr_iimmed 2,1,fr7 ; multiply by 1
  468. set_fr_iimmed 1,1,fr8
  469. cmcpxis fr7,fr8,acc0,cc2,1
  470. test_accg_immed 0x00000011,accg0
  471. test_acc_immed 0x11111111,acc0
  472. set_fr_iimmed 0x3fff,2,fr7 ; 15 bit result
  473. set_fr_iimmed 0x0007,2,fr8
  474. cmcpxis fr7,fr8,acc0,cc2,0
  475. test_accg_immed 0x00000011,accg0
  476. test_acc_immed 0x11111111,acc0
  477. set_fr_iimmed 0x4000,2,fr7 ; 16 bit result
  478. set_fr_iimmed 0x2000,2,fr8
  479. cmcpxis fr7,fr8,acc0,cc2,1
  480. test_accg_immed 0x00000011,accg0
  481. test_acc_immed 0x11111111,acc0
  482. set_fr_iimmed 0x7fff,0x0000,fr7 ; max positive result
  483. set_fr_iimmed 0x7fff,0x7fff,fr8
  484. cmcpxis fr7,fr8,acc0,cc2,0
  485. test_accg_immed 0x00000011,accg0
  486. test_acc_immed 0x11111111,acc0
  487. ; Mixed operands
  488. set_fr_iimmed 2,0xfffd,fr7 ; multiply small numbers
  489. set_fr_iimmed 1,0xfffd,fr8
  490. cmcpxis fr7,fr8,acc0,cc2,1
  491. test_accg_immed 0x00000011,accg0
  492. test_acc_immed 0x11111111,acc0
  493. set_fr_iimmed 0xfffe,2,fr7 ; multiply by 1
  494. set_fr_iimmed 0xfffe,1,fr8
  495. cmcpxis fr7,fr8,acc0,cc2,0
  496. test_accg_immed 0x00000011,accg0
  497. test_acc_immed 0x11111111,acc0
  498. set_fr_iimmed 0xfffe,0,fr7 ; multiply by 0
  499. set_fr_iimmed 0xfffe,1,fr8
  500. cmcpxis fr7,fr8,acc0,cc6,1
  501. test_accg_immed 0x00000011,accg0
  502. test_acc_immed 0x11111111,acc0
  503. set_fr_iimmed 0x2001,0xfffe,fr7 ; 15 bit result
  504. set_fr_iimmed 0xfff9,0xfffe,fr8
  505. cmcpxis fr7,fr8,acc0,cc6,0
  506. test_accg_immed 0x00000011,accg0
  507. test_acc_immed 0x11111111,acc0
  508. set_fr_iimmed 0x4000,0xfffe,fr7 ; 16 bit result
  509. set_fr_iimmed 0x0003,0xfffe,fr8
  510. cmcpxis fr7,fr8,acc0,cc6,1
  511. test_accg_immed 0x00000011,accg0
  512. test_acc_immed 0x11111111,acc0
  513. set_fr_iimmed 0x7fff,0x8000,fr7 ; max negative result
  514. set_fr_iimmed 0x8000,0x8000,fr8
  515. cmcpxis fr7,fr8,acc0,cc6,0
  516. test_accg_immed 0x00000011,accg0
  517. test_acc_immed 0x11111111,acc0
  518. set_fr_iimmed 0x8000,0x7fff,fr7 ; max positive result
  519. set_fr_iimmed 0x8000,0x8000,fr8
  520. cmcpxis fr7,fr8,acc0,cc6,1
  521. test_accg_immed 0x00000011,accg0
  522. test_acc_immed 0x11111111,acc0
  523. ; Negative operands
  524. set_fr_iimmed 0xfffe,0xfffc,fr7 ; multiply small numbers
  525. set_fr_iimmed 0xfffb,0xfffd,fr8
  526. cmcpxis fr7,fr8,acc0,cc6,0
  527. test_accg_immed 0x00000011,accg0
  528. test_acc_immed 0x11111111,acc0
  529. set_fr_iimmed 0xffff,0xffff,fr7 ; multiply by -1
  530. set_fr_iimmed 0xffff,0xfffe,fr8
  531. cmcpxis fr7,fr8,acc0,cc6,1
  532. test_accg_immed 0x00000011,accg0
  533. test_acc_immed 0x11111111,acc0
  534. set_fr_iimmed 0x7fff,0x0000,fr7 ; almost max positive result
  535. set_fr_iimmed 0x8001,0x7fff,fr8
  536. cmcpxis fr7,fr8,acc0,cc6,0
  537. test_accg_immed 0x00000011,accg0
  538. test_acc_immed 0x11111111,acc0
  539. set_fr_iimmed 0x8000,0x0000,fr7 ; max positive result
  540. set_fr_iimmed 0x8000,0x8000,fr8
  541. cmcpxis fr7,fr8,acc0,cc6,1
  542. test_accg_immed 0x00000011,accg0
  543. test_acc_immed 0x11111111,acc0
  544. ; Positive operands
  545. set_accg_immed 0x00000011,accg0
  546. set_acc_immed 0x11111111,acc0
  547. set_fr_iimmed 2,4,fr7 ; multiply small numbers
  548. set_fr_iimmed 5,3,fr8
  549. cmcpxis fr7,fr8,acc0,cc2,0
  550. test_accg_immed 0x00000011,accg0
  551. test_acc_immed 0x11111111,acc0
  552. set_fr_iimmed 3,1,fr7 ; multiply by 0
  553. set_fr_iimmed 0,2,fr8
  554. cmcpxis fr7,fr8,acc0,cc2,1
  555. test_accg_immed 0x00000011,accg0
  556. test_acc_immed 0x11111111,acc0
  557. set_fr_iimmed 2,1,fr7 ; multiply by 1
  558. set_fr_iimmed 1,1,fr8
  559. cmcpxis fr7,fr8,acc0,cc2,0
  560. test_accg_immed 0x00000011,accg0
  561. test_acc_immed 0x11111111,acc0
  562. set_fr_iimmed 0x3fff,2,fr7 ; 15 bit result
  563. set_fr_iimmed 0x0007,2,fr8
  564. cmcpxis fr7,fr8,acc0,cc2,1
  565. test_accg_immed 0x00000011,accg0
  566. test_acc_immed 0x11111111,acc0
  567. set_fr_iimmed 0x4000,2,fr7 ; 16 bit result
  568. set_fr_iimmed 0x2000,2,fr8
  569. cmcpxis fr7,fr8,acc0,cc2,0
  570. test_accg_immed 0x00000011,accg0
  571. test_acc_immed 0x11111111,acc0
  572. set_fr_iimmed 0x7fff,0x0000,fr7 ; max positive result
  573. set_fr_iimmed 0x7fff,0x7fff,fr8
  574. cmcpxis fr7,fr8,acc0,cc2,1
  575. test_accg_immed 0x00000011,accg0
  576. test_acc_immed 0x11111111,acc0
  577. ; Mixed operands
  578. set_fr_iimmed 2,0xfffd,fr7 ; multiply small numbers
  579. set_fr_iimmed 1,0xfffd,fr8
  580. cmcpxis fr7,fr8,acc0,cc2,0
  581. test_accg_immed 0x00000011,accg0
  582. test_acc_immed 0x11111111,acc0
  583. set_fr_iimmed 0xfffe,2,fr7 ; multiply by 1
  584. set_fr_iimmed 0xfffe,1,fr8
  585. cmcpxis fr7,fr8,acc0,cc2,1
  586. test_accg_immed 0x00000011,accg0
  587. test_acc_immed 0x11111111,acc0
  588. set_fr_iimmed 0xfffe,0,fr7 ; multiply by 0
  589. set_fr_iimmed 0xfffe,1,fr8
  590. cmcpxis fr7,fr8,acc0,cc6,0
  591. test_accg_immed 0x00000011,accg0
  592. test_acc_immed 0x11111111,acc0
  593. set_fr_iimmed 0x2001,0xfffe,fr7 ; 15 bit result
  594. set_fr_iimmed 0xfff9,0xfffe,fr8
  595. cmcpxis fr7,fr8,acc0,cc6,1
  596. test_accg_immed 0x00000011,accg0
  597. test_acc_immed 0x11111111,acc0
  598. set_fr_iimmed 0x4000,0xfffe,fr7 ; 16 bit result
  599. set_fr_iimmed 0x0003,0xfffe,fr8
  600. cmcpxis fr7,fr8,acc0,cc6,0
  601. test_accg_immed 0x00000011,accg0
  602. test_acc_immed 0x11111111,acc0
  603. set_fr_iimmed 0x7fff,0x8000,fr7 ; max negative result
  604. set_fr_iimmed 0x8000,0x8000,fr8
  605. cmcpxis fr7,fr8,acc0,cc6,1
  606. test_accg_immed 0x00000011,accg0
  607. test_acc_immed 0x11111111,acc0
  608. set_fr_iimmed 0x8000,0x7fff,fr7 ; max positive result
  609. set_fr_iimmed 0x8000,0x8000,fr8
  610. cmcpxis fr7,fr8,acc0,cc6,0
  611. test_accg_immed 0x00000011,accg0
  612. test_acc_immed 0x11111111,acc0
  613. ; Negative operands
  614. set_fr_iimmed 0xfffe,0xfffc,fr7 ; multiply small numbers
  615. set_fr_iimmed 0xfffb,0xfffd,fr8
  616. cmcpxis fr7,fr8,acc0,cc6,1
  617. test_accg_immed 0x00000011,accg0
  618. test_acc_immed 0x11111111,acc0
  619. set_fr_iimmed 0xffff,0xffff,fr7 ; multiply by -1
  620. set_fr_iimmed 0xffff,0xfffe,fr8
  621. cmcpxis fr7,fr8,acc0,cc6,0
  622. test_accg_immed 0x00000011,accg0
  623. test_acc_immed 0x11111111,acc0
  624. set_fr_iimmed 0x7fff,0x0000,fr7 ; almost max positive result
  625. set_fr_iimmed 0x8001,0x7fff,fr8
  626. cmcpxis fr7,fr8,acc0,cc6,0
  627. test_accg_immed 0x00000011,accg0
  628. test_acc_immed 0x11111111,acc0
  629. set_fr_iimmed 0x8000,0x0000,fr7 ; max positive result
  630. set_fr_iimmed 0x8000,0x8000,fr8
  631. cmcpxis fr7,fr8,acc0,cc6,1
  632. test_accg_immed 0x00000011,accg0
  633. test_acc_immed 0x11111111,acc0
  634. ;
  635. ; Positive operands
  636. set_accg_immed 0x00000011,accg0
  637. set_acc_immed 0x11111111,acc0
  638. set_fr_iimmed 2,4,fr7 ; multiply small numbers
  639. set_fr_iimmed 5,3,fr8
  640. cmcpxis fr7,fr8,acc0,cc3,1
  641. test_accg_immed 0x00000011,accg0
  642. test_acc_immed 0x11111111,acc0
  643. set_fr_iimmed 3,1,fr7 ; multiply by 0
  644. set_fr_iimmed 0,2,fr8
  645. cmcpxis fr7,fr8,acc0,cc3,0
  646. test_accg_immed 0x00000011,accg0
  647. test_acc_immed 0x11111111,acc0
  648. set_fr_iimmed 2,1,fr7 ; multiply by 1
  649. set_fr_iimmed 1,1,fr8
  650. cmcpxis fr7,fr8,acc0,cc3,1
  651. test_accg_immed 0x00000011,accg0
  652. test_acc_immed 0x11111111,acc0
  653. set_fr_iimmed 0x3fff,2,fr7 ; 15 bit result
  654. set_fr_iimmed 0x0007,2,fr8
  655. cmcpxis fr7,fr8,acc0,cc3,0
  656. test_accg_immed 0x00000011,accg0
  657. test_acc_immed 0x11111111,acc0
  658. set_fr_iimmed 0x4000,2,fr7 ; 16 bit result
  659. set_fr_iimmed 0x2000,2,fr8
  660. cmcpxis fr7,fr8,acc0,cc3,1
  661. test_accg_immed 0x00000011,accg0
  662. test_acc_immed 0x11111111,acc0
  663. set_fr_iimmed 0x7fff,0x0000,fr7 ; max positive result
  664. set_fr_iimmed 0x7fff,0x7fff,fr8
  665. cmcpxis fr7,fr8,acc0,cc3,0
  666. test_accg_immed 0x00000011,accg0
  667. test_acc_immed 0x11111111,acc0
  668. ; Mixed operands
  669. set_fr_iimmed 2,0xfffd,fr7 ; multiply small numbers
  670. set_fr_iimmed 1,0xfffd,fr8
  671. cmcpxis fr7,fr8,acc0,cc3,1
  672. test_accg_immed 0x00000011,accg0
  673. test_acc_immed 0x11111111,acc0
  674. set_fr_iimmed 0xfffe,2,fr7 ; multiply by 1
  675. set_fr_iimmed 0xfffe,1,fr8
  676. cmcpxis fr7,fr8,acc0,cc3,0
  677. test_accg_immed 0x00000011,accg0
  678. test_acc_immed 0x11111111,acc0
  679. set_fr_iimmed 0xfffe,0,fr7 ; multiply by 0
  680. set_fr_iimmed 0xfffe,1,fr8
  681. cmcpxis fr7,fr8,acc0,cc6,1
  682. test_accg_immed 0x00000011,accg0
  683. test_acc_immed 0x11111111,acc0
  684. set_fr_iimmed 0x2001,0xfffe,fr7 ; 15 bit result
  685. set_fr_iimmed 0xfff9,0xfffe,fr8
  686. cmcpxis fr7,fr8,acc0,cc6,0
  687. test_accg_immed 0x00000011,accg0
  688. test_acc_immed 0x11111111,acc0
  689. set_fr_iimmed 0x4000,0xfffe,fr7 ; 16 bit result
  690. set_fr_iimmed 0x0003,0xfffe,fr8
  691. cmcpxis fr7,fr8,acc0,cc6,1
  692. test_accg_immed 0x00000011,accg0
  693. test_acc_immed 0x11111111,acc0
  694. set_fr_iimmed 0x7fff,0x8000,fr7 ; max negative result
  695. set_fr_iimmed 0x8000,0x8000,fr8
  696. cmcpxis fr7,fr8,acc0,cc6,0
  697. test_accg_immed 0x00000011,accg0
  698. test_acc_immed 0x11111111,acc0
  699. set_fr_iimmed 0x8000,0x7fff,fr7 ; max positive result
  700. set_fr_iimmed 0x8000,0x8000,fr8
  701. cmcpxis fr7,fr8,acc0,cc6,1
  702. test_accg_immed 0x00000011,accg0
  703. test_acc_immed 0x11111111,acc0
  704. ; Negative operands
  705. set_fr_iimmed 0xfffe,0xfffc,fr7 ; multiply small numbers
  706. set_fr_iimmed 0xfffb,0xfffd,fr8
  707. cmcpxis fr7,fr8,acc0,cc6,0
  708. test_accg_immed 0x00000011,accg0
  709. test_acc_immed 0x11111111,acc0
  710. set_fr_iimmed 0xffff,0xffff,fr7 ; multiply by -1
  711. set_fr_iimmed 0xffff,0xfffe,fr8
  712. cmcpxis fr7,fr8,acc0,cc6,1
  713. test_accg_immed 0x00000011,accg0
  714. test_acc_immed 0x11111111,acc0
  715. set_fr_iimmed 0x7fff,0x0000,fr7 ; almost max positive result
  716. set_fr_iimmed 0x8001,0x7fff,fr8
  717. cmcpxis fr7,fr8,acc0,cc6,0
  718. test_accg_immed 0x00000011,accg0
  719. test_acc_immed 0x11111111,acc0
  720. set_fr_iimmed 0x8000,0x0000,fr7 ; max positive result
  721. set_fr_iimmed 0x8000,0x8000,fr8
  722. cmcpxis fr7,fr8,acc0,cc6,1
  723. test_accg_immed 0x00000011,accg0
  724. test_acc_immed 0x11111111,acc0
  725. ; Positive operands
  726. set_accg_immed 0x00000011,accg0
  727. set_acc_immed 0x11111111,acc0
  728. set_fr_iimmed 2,4,fr7 ; multiply small numbers
  729. set_fr_iimmed 5,3,fr8
  730. cmcpxis fr7,fr8,acc0,cc3,0
  731. test_accg_immed 0x00000011,accg0
  732. test_acc_immed 0x11111111,acc0
  733. set_fr_iimmed 3,1,fr7 ; multiply by 0
  734. set_fr_iimmed 0,2,fr8
  735. cmcpxis fr7,fr8,acc0,cc3,1
  736. test_accg_immed 0x00000011,accg0
  737. test_acc_immed 0x11111111,acc0
  738. set_fr_iimmed 2,1,fr7 ; multiply by 1
  739. set_fr_iimmed 1,1,fr8
  740. cmcpxis fr7,fr8,acc0,cc3,0
  741. test_accg_immed 0x00000011,accg0
  742. test_acc_immed 0x11111111,acc0
  743. set_fr_iimmed 0x3fff,2,fr7 ; 15 bit result
  744. set_fr_iimmed 0x0007,2,fr8
  745. cmcpxis fr7,fr8,acc0,cc3,1
  746. test_accg_immed 0x00000011,accg0
  747. test_acc_immed 0x11111111,acc0
  748. set_fr_iimmed 0x4000,2,fr7 ; 16 bit result
  749. set_fr_iimmed 0x2000,2,fr8
  750. cmcpxis fr7,fr8,acc0,cc3,0
  751. test_accg_immed 0x00000011,accg0
  752. test_acc_immed 0x11111111,acc0
  753. set_fr_iimmed 0x7fff,0x0000,fr7 ; max positive result
  754. set_fr_iimmed 0x7fff,0x7fff,fr8
  755. cmcpxis fr7,fr8,acc0,cc3,1
  756. test_accg_immed 0x00000011,accg0
  757. test_acc_immed 0x11111111,acc0
  758. ; Mixed operands
  759. set_fr_iimmed 2,0xfffd,fr7 ; multiply small numbers
  760. set_fr_iimmed 1,0xfffd,fr8
  761. cmcpxis fr7,fr8,acc0,cc3,0
  762. test_accg_immed 0x00000011,accg0
  763. test_acc_immed 0x11111111,acc0
  764. set_fr_iimmed 0xfffe,2,fr7 ; multiply by 1
  765. set_fr_iimmed 0xfffe,1,fr8
  766. cmcpxis fr7,fr8,acc0,cc3,1
  767. test_accg_immed 0x00000011,accg0
  768. test_acc_immed 0x11111111,acc0
  769. set_fr_iimmed 0xfffe,0,fr7 ; multiply by 0
  770. set_fr_iimmed 0xfffe,1,fr8
  771. cmcpxis fr7,fr8,acc0,cc7,0
  772. test_accg_immed 0x00000011,accg0
  773. test_acc_immed 0x11111111,acc0
  774. set_fr_iimmed 0x2001,0xfffe,fr7 ; 15 bit result
  775. set_fr_iimmed 0xfff9,0xfffe,fr8
  776. cmcpxis fr7,fr8,acc0,cc7,1
  777. test_accg_immed 0x00000011,accg0
  778. test_acc_immed 0x11111111,acc0
  779. set_fr_iimmed 0x4000,0xfffe,fr7 ; 16 bit result
  780. set_fr_iimmed 0x0003,0xfffe,fr8
  781. cmcpxis fr7,fr8,acc0,cc7,0
  782. test_accg_immed 0x00000011,accg0
  783. test_acc_immed 0x11111111,acc0
  784. set_fr_iimmed 0x7fff,0x8000,fr7 ; max negative result
  785. set_fr_iimmed 0x8000,0x8000,fr8
  786. cmcpxis fr7,fr8,acc0,cc7,1
  787. test_accg_immed 0x00000011,accg0
  788. test_acc_immed 0x11111111,acc0
  789. set_fr_iimmed 0x8000,0x7fff,fr7 ; max positive result
  790. set_fr_iimmed 0x8000,0x8000,fr8
  791. cmcpxis fr7,fr8,acc0,cc7,0
  792. test_accg_immed 0x00000011,accg0
  793. test_acc_immed 0x11111111,acc0
  794. ; Negative operands
  795. set_fr_iimmed 0xfffe,0xfffc,fr7 ; multiply small numbers
  796. set_fr_iimmed 0xfffb,0xfffd,fr8
  797. cmcpxis fr7,fr8,acc0,cc7,1
  798. test_accg_immed 0x00000011,accg0
  799. test_acc_immed 0x11111111,acc0
  800. set_fr_iimmed 0xffff,0xffff,fr7 ; multiply by -1
  801. set_fr_iimmed 0xffff,0xfffe,fr8
  802. cmcpxis fr7,fr8,acc0,cc7,0
  803. test_accg_immed 0x00000011,accg0
  804. test_acc_immed 0x11111111,acc0
  805. set_fr_iimmed 0x7fff,0x0000,fr7 ; almost max positive result
  806. set_fr_iimmed 0x8001,0x7fff,fr8
  807. cmcpxis fr7,fr8,acc0,cc7,0
  808. test_accg_immed 0x00000011,accg0
  809. test_acc_immed 0x11111111,acc0
  810. set_fr_iimmed 0x8000,0x0000,fr7 ; max positive result
  811. set_fr_iimmed 0x8000,0x8000,fr8
  812. cmcpxis fr7,fr8,acc0,cc7,1
  813. test_accg_immed 0x00000011,accg0
  814. test_acc_immed 0x11111111,acc0
  815. pass