cmcpxru.cgs 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544
  1. # frv testcase for cmcpxru $GRi,$GRj,$GRk,$CCi,$cond
  2. # mach: frv fr500 fr400
  3. .include "testutils.inc"
  4. start
  5. .global cmcpxru
  6. cmcpxru:
  7. set_spr_immed 0x1b1b,cccr
  8. set_fr_iimmed 4,2,fr7 ; multiply small numbers
  9. set_fr_iimmed 5,3,fr8
  10. cmcpxru fr7,fr8,acc0,cc0,1
  11. test_accg_immed 0,accg0
  12. test_acc_immed 14,acc0
  13. set_fr_iimmed 1,2,fr7 ; multiply by 1
  14. set_fr_iimmed 3,1,fr8
  15. cmcpxru fr7,fr8,acc0,cc0,1
  16. test_accg_immed 0,accg0
  17. test_acc_immed 1,acc0
  18. set_fr_iimmed 0,2,fr7 ; multiply by 0
  19. set_fr_iimmed 2,0,fr8
  20. cmcpxru fr7,fr8,acc0,cc0,1
  21. test_accg_immed 0,accg0
  22. test_acc_immed 0,acc0
  23. set_fr_iimmed 0x3fff,1,fr7 ; 15 bit result
  24. set_fr_iimmed 2,0x0001,fr8
  25. cmcpxru fr7,fr8,acc0,cc0,1
  26. test_accg_immed 0,accg0
  27. test_acc_limmed 0x0000,0x7ffd,acc0
  28. set_fr_iimmed 0x4000,1,fr7 ; 16 bit result
  29. set_fr_iimmed 4,0x0001,fr8
  30. cmcpxru fr7,fr8,acc0,cc0,1
  31. test_accg_immed 0,accg0
  32. test_acc_limmed 0x0000,0xffff,acc0
  33. set_fr_iimmed 0x8000,1,fr7 ; 17 bit result
  34. set_fr_iimmed 4,0x0001,fr8
  35. cmcpxru fr7,fr8,acc0,cc0,1
  36. test_accg_immed 0,accg0
  37. test_acc_immed 0x0001ffff,acc0
  38. set_fr_iimmed 0x7fff,0x0000,fr7 ; max positive result
  39. set_fr_iimmed 0x7fff,0x7fff,fr8
  40. cmcpxru fr7,fr8,acc0,cc4,1
  41. test_accg_immed 0,accg0
  42. test_acc_immed 0x3fff0001,acc0
  43. set_fr_iimmed 0x8000,0x8000,fr7 ; max positive result
  44. set_fr_iimmed 0x8000,0x0000,fr8
  45. cmcpxru fr7,fr8,acc0,cc4,1
  46. test_accg_immed 0,accg0
  47. test_acc_limmed 0x4000,0x0000,acc0
  48. set_fr_iimmed 0xffff,0x0000,fr7 ; max positive result
  49. set_fr_iimmed 0xffff,0xffff,fr8
  50. cmcpxru fr7,fr8,acc0,cc4,1
  51. test_accg_immed 0,accg0
  52. test_acc_limmed 0xfffe,0x0001,acc0
  53. set_fr_iimmed 0x0000,0x0001,fr7 ; saturation
  54. set_fr_iimmed 0xffff,0x0001,fr8
  55. cmcpxru fr7,fr8,acc0,cc4,1
  56. test_spr_bits 0x3c,2,0x8,msr0 ; msr0.sie is set
  57. test_spr_bits 2,1,1,msr0 ; msr0.ovf is set
  58. test_spr_bits 1,0,1,msr0 ; msr0.aovf is set
  59. test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt is set
  60. test_accg_immed 0,accg0
  61. test_acc_immed 0,acc0
  62. set_fr_iimmed 0x0000,0xffff,fr7 ; saturation
  63. set_fr_iimmed 0xffff,0xffff,fr8
  64. cmcpxru fr7,fr8,acc0,cc4,1
  65. test_spr_bits 0x3c,2,0x8,msr0 ; msr0.sie is set
  66. test_spr_bits 2,1,1,msr0 ; msr0.ovf is set
  67. test_spr_bits 1,0,1,msr0 ; msr0.aovf is set
  68. test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt is set
  69. test_accg_immed 0,accg0
  70. test_acc_immed 0,acc0
  71. set_fr_iimmed 0xfffe,0xffff,fr7 ; saturation
  72. set_fr_iimmed 0xffff,0xffff,fr8
  73. cmcpxru fr7,fr8,acc0,cc4,1
  74. test_spr_bits 0x3c,2,0x8,msr0 ; msr0.sie is set
  75. test_spr_bits 2,1,1,msr0 ; msr0.ovf is set
  76. test_spr_bits 1,0,1,msr0 ; msr0.aovf is set
  77. test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt is set
  78. test_accg_immed 0,accg0
  79. test_acc_immed 0,acc0
  80. set_fr_iimmed 4,2,fr7 ; multiply small numbers
  81. set_fr_iimmed 5,3,fr8
  82. cmcpxru fr7,fr8,acc0,cc1,0
  83. test_accg_immed 0,accg0
  84. test_acc_immed 14,acc0
  85. set_fr_iimmed 1,2,fr7 ; multiply by 1
  86. set_fr_iimmed 3,1,fr8
  87. cmcpxru fr7,fr8,acc0,cc1,0
  88. test_accg_immed 0,accg0
  89. test_acc_immed 1,acc0
  90. set_fr_iimmed 0,2,fr7 ; multiply by 0
  91. set_fr_iimmed 2,0,fr8
  92. cmcpxru fr7,fr8,acc0,cc1,0
  93. test_accg_immed 0,accg0
  94. test_acc_immed 0,acc0
  95. set_fr_iimmed 0x3fff,1,fr7 ; 15 bit result
  96. set_fr_iimmed 2,0x0001,fr8
  97. cmcpxru fr7,fr8,acc0,cc1,0
  98. test_accg_immed 0,accg0
  99. test_acc_limmed 0x0000,0x7ffd,acc0
  100. set_fr_iimmed 0x4000,1,fr7 ; 16 bit result
  101. set_fr_iimmed 4,0x0001,fr8
  102. cmcpxru fr7,fr8,acc0,cc1,0
  103. test_accg_immed 0,accg0
  104. test_acc_limmed 0x0000,0xffff,acc0
  105. set_fr_iimmed 0x8000,1,fr7 ; 17 bit result
  106. set_fr_iimmed 4,0x0001,fr8
  107. cmcpxru fr7,fr8,acc0,cc1,0
  108. test_accg_immed 0,accg0
  109. test_acc_immed 0x0001ffff,acc0
  110. set_fr_iimmed 0x7fff,0x0000,fr7 ; max positive result
  111. set_fr_iimmed 0x7fff,0x7fff,fr8
  112. cmcpxru fr7,fr8,acc0,cc5,0
  113. test_accg_immed 0,accg0
  114. test_acc_immed 0x3fff0001,acc0
  115. set_fr_iimmed 0x8000,0x8000,fr7 ; max positive result
  116. set_fr_iimmed 0x8000,0x0000,fr8
  117. cmcpxru fr7,fr8,acc0,cc5,0
  118. test_accg_immed 0,accg0
  119. test_acc_limmed 0x4000,0x0000,acc0
  120. set_fr_iimmed 0xffff,0x0000,fr7 ; max positive result
  121. set_fr_iimmed 0xffff,0xffff,fr8
  122. cmcpxru fr7,fr8,acc0,cc5,0
  123. test_accg_immed 0,accg0
  124. test_acc_limmed 0xfffe,0x0001,acc0
  125. set_fr_iimmed 0x0000,0x0001,fr7 ; saturation
  126. set_fr_iimmed 0xffff,0x0001,fr8
  127. cmcpxru fr7,fr8,acc0,cc5,0
  128. test_spr_bits 0x3c,2,0x8,msr0 ; msr0.sie is set
  129. test_spr_bits 2,1,1,msr0 ; msr0.ovf is set
  130. test_spr_bits 1,0,1,msr0 ; msr0.aovf is set
  131. test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt is set
  132. test_accg_immed 0,accg0
  133. test_acc_immed 0,acc0
  134. set_fr_iimmed 0x0000,0xffff,fr7 ; saturation
  135. set_fr_iimmed 0xffff,0xffff,fr8
  136. cmcpxru fr7,fr8,acc0,cc5,0
  137. test_spr_bits 0x3c,2,0x8,msr0 ; msr0.sie is set
  138. test_spr_bits 2,1,1,msr0 ; msr0.ovf is set
  139. test_spr_bits 1,0,1,msr0 ; msr0.aovf is set
  140. test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt is set
  141. test_accg_immed 0,accg0
  142. test_acc_immed 0,acc0
  143. set_fr_iimmed 0xfffe,0xffff,fr7 ; saturation
  144. set_fr_iimmed 0xffff,0xffff,fr8
  145. cmcpxru fr7,fr8,acc0,cc5,0
  146. test_spr_bits 0x3c,2,0x8,msr0 ; msr0.sie is set
  147. test_spr_bits 2,1,1,msr0 ; msr0.ovf is set
  148. test_spr_bits 1,0,1,msr0 ; msr0.aovf is set
  149. test_spr_bits 0x7000,12,1,msr0 ; msr0.mtt is set
  150. test_accg_immed 0,accg0
  151. test_acc_immed 0,acc0
  152. set_spr_immed 0,msr0
  153. set_spr_immed 0,msr1
  154. set_accg_immed 0x00000011,accg0
  155. set_acc_immed 0x11111111,acc0
  156. set_fr_iimmed 4,2,fr7 ; multiply small numbers
  157. set_fr_iimmed 5,3,fr8
  158. cmcpxru fr7,fr8,acc0,cc0,0
  159. test_accg_immed 0x00000011,accg0
  160. test_acc_immed 0x11111111,acc0
  161. set_fr_iimmed 1,2,fr7 ; multiply by 1
  162. set_fr_iimmed 3,1,fr8
  163. cmcpxru fr7,fr8,acc0,cc0,0
  164. test_accg_immed 0x00000011,accg0
  165. test_acc_immed 0x11111111,acc0
  166. set_fr_iimmed 0,2,fr7 ; multiply by 0
  167. set_fr_iimmed 2,0,fr8
  168. cmcpxru fr7,fr8,acc0,cc0,0
  169. test_accg_immed 0x00000011,accg0
  170. test_acc_immed 0x11111111,acc0
  171. set_fr_iimmed 0x3fff,1,fr7 ; 15 bit result
  172. set_fr_iimmed 2,0x0001,fr8
  173. cmcpxru fr7,fr8,acc0,cc0,0
  174. test_accg_immed 0x00000011,accg0
  175. test_acc_immed 0x11111111,acc0
  176. set_fr_iimmed 0x4000,1,fr7 ; 16 bit result
  177. set_fr_iimmed 4,0x0001,fr8
  178. cmcpxru fr7,fr8,acc0,cc0,0
  179. test_accg_immed 0x00000011,accg0
  180. test_acc_immed 0x11111111,acc0
  181. set_fr_iimmed 0x8000,1,fr7 ; 17 bit result
  182. set_fr_iimmed 4,0x0001,fr8
  183. cmcpxru fr7,fr8,acc0,cc0,0
  184. test_accg_immed 0x00000011,accg0
  185. test_acc_immed 0x11111111,acc0
  186. set_fr_iimmed 0x7fff,0x0000,fr7 ; max positive result
  187. set_fr_iimmed 0x7fff,0x7fff,fr8
  188. cmcpxru fr7,fr8,acc0,cc4,0
  189. test_accg_immed 0x00000011,accg0
  190. test_acc_immed 0x11111111,acc0
  191. set_fr_iimmed 0x8000,0x8000,fr7 ; max positive result
  192. set_fr_iimmed 0x8000,0x0000,fr8
  193. cmcpxru fr7,fr8,acc0,cc4,0
  194. test_accg_immed 0x00000011,accg0
  195. test_acc_immed 0x11111111,acc0
  196. set_fr_iimmed 0xffff,0x0000,fr7 ; max positive result
  197. set_fr_iimmed 0xffff,0xffff,fr8
  198. cmcpxru fr7,fr8,acc0,cc4,0
  199. test_accg_immed 0x00000011,accg0
  200. test_acc_immed 0x11111111,acc0
  201. set_fr_iimmed 0x0000,0x0001,fr7 ; saturation
  202. set_fr_iimmed 0xffff,0x0001,fr8
  203. cmcpxru fr7,fr8,acc0,cc4,0
  204. test_spr_bits 0x3c,2,0x0,msr0 ; msr0.sie is clear
  205. test_spr_bits 2,1,0,msr0 ; msr0.ovf is clear
  206. test_spr_bits 2,1,0,msr1 ; msr1.ovf is clear
  207. test_spr_bits 1,0,0,msr0 ; msr0.aovf is clear
  208. test_spr_bits 0x7000,12,0,msr0 ; msr0.mtt is clear
  209. test_accg_immed 0x00000011,accg0
  210. test_acc_immed 0x11111111,acc0
  211. set_fr_iimmed 0x0000,0xffff,fr7 ; saturation
  212. set_fr_iimmed 0xffff,0xffff,fr8
  213. cmcpxru fr7,fr8,acc0,cc4,0
  214. test_spr_bits 0x3c,2,0x0,msr0 ; msr0.sie is clear
  215. test_spr_bits 2,1,0,msr0 ; msr0.ovf is clear
  216. test_spr_bits 2,1,0,msr1 ; msr1.ovf is clear
  217. test_spr_bits 1,0,0,msr0 ; msr0.aovf is clear
  218. test_spr_bits 0x7000,12,0,msr0 ; msr0.mtt is clear
  219. test_accg_immed 0x00000011,accg0
  220. test_acc_immed 0x11111111,acc0
  221. set_fr_iimmed 0xfffe,0xffff,fr7 ; saturation
  222. set_fr_iimmed 0xffff,0xffff,fr8
  223. cmcpxru fr7,fr8,acc0,cc4,0
  224. test_spr_bits 0x3c,2,0x0,msr0 ; msr0.sie is clear
  225. test_spr_bits 2,1,0,msr0 ; msr0.ovf is clear
  226. test_spr_bits 2,1,0,msr1 ; msr1.ovf is clear
  227. test_spr_bits 1,0,0,msr0 ; msr0.aovf is clear
  228. test_spr_bits 0x7000,12,0,msr0 ; msr0.mtt is clear
  229. test_accg_immed 0x00000011,accg0
  230. test_acc_immed 0x11111111,acc0
  231. set_spr_immed 0,msr0
  232. set_spr_immed 0,msr1
  233. set_accg_immed 0x00000011,accg0
  234. set_acc_immed 0x11111111,acc0
  235. set_fr_iimmed 4,2,fr7 ; multiply small numbers
  236. set_fr_iimmed 5,3,fr8
  237. cmcpxru fr7,fr8,acc0,cc1,1
  238. test_accg_immed 0x00000011,accg0
  239. test_acc_immed 0x11111111,acc0
  240. set_fr_iimmed 1,2,fr7 ; multiply by 1
  241. set_fr_iimmed 3,1,fr8
  242. cmcpxru fr7,fr8,acc0,cc1,1
  243. test_accg_immed 0x00000011,accg0
  244. test_acc_immed 0x11111111,acc0
  245. set_fr_iimmed 0,2,fr7 ; multiply by 0
  246. set_fr_iimmed 2,0,fr8
  247. cmcpxru fr7,fr8,acc0,cc1,1
  248. test_accg_immed 0x00000011,accg0
  249. test_acc_immed 0x11111111,acc0
  250. set_fr_iimmed 0x3fff,1,fr7 ; 15 bit result
  251. set_fr_iimmed 2,0x0001,fr8
  252. cmcpxru fr7,fr8,acc0,cc1,1
  253. test_accg_immed 0x00000011,accg0
  254. test_acc_immed 0x11111111,acc0
  255. set_fr_iimmed 0x4000,1,fr7 ; 16 bit result
  256. set_fr_iimmed 4,0x0001,fr8
  257. cmcpxru fr7,fr8,acc0,cc1,1
  258. test_accg_immed 0x00000011,accg0
  259. test_acc_immed 0x11111111,acc0
  260. set_fr_iimmed 0x8000,1,fr7 ; 17 bit result
  261. set_fr_iimmed 4,0x0001,fr8
  262. cmcpxru fr7,fr8,acc0,cc1,1
  263. test_accg_immed 0x00000011,accg0
  264. test_acc_immed 0x11111111,acc0
  265. set_fr_iimmed 0x7fff,0x0000,fr7 ; max positive result
  266. set_fr_iimmed 0x7fff,0x7fff,fr8
  267. cmcpxru fr7,fr8,acc0,cc5,1
  268. test_accg_immed 0x00000011,accg0
  269. test_acc_immed 0x11111111,acc0
  270. set_fr_iimmed 0x8000,0x8000,fr7 ; max positive result
  271. set_fr_iimmed 0x8000,0x0000,fr8
  272. cmcpxru fr7,fr8,acc0,cc5,1
  273. test_accg_immed 0x00000011,accg0
  274. test_acc_immed 0x11111111,acc0
  275. set_fr_iimmed 0xffff,0x0000,fr7 ; max positive result
  276. set_fr_iimmed 0xffff,0xffff,fr8
  277. cmcpxru fr7,fr8,acc0,cc5,1
  278. test_accg_immed 0x00000011,accg0
  279. test_acc_immed 0x11111111,acc0
  280. set_fr_iimmed 0x0000,0x0001,fr7 ; saturation
  281. set_fr_iimmed 0xffff,0x0001,fr8
  282. cmcpxru fr7,fr8,acc0,cc5,1
  283. test_spr_bits 0x3c,2,0x0,msr0 ; msr0.sie is clear
  284. test_spr_bits 2,1,0,msr0 ; msr0.ovf is clear
  285. test_spr_bits 2,1,0,msr1 ; msr1.ovf is clear
  286. test_spr_bits 1,0,0,msr0 ; msr0.aovf is clear
  287. test_spr_bits 0x7000,12,0,msr0 ; msr0.mtt is clear
  288. test_accg_immed 0x00000011,accg0
  289. test_acc_immed 0x11111111,acc0
  290. set_fr_iimmed 0x0000,0xffff,fr7 ; saturation
  291. set_fr_iimmed 0xffff,0xffff,fr8
  292. cmcpxru fr7,fr8,acc0,cc5,1
  293. test_spr_bits 0x3c,2,0x0,msr0 ; msr0.sie is clear
  294. test_spr_bits 2,1,0,msr0 ; msr0.ovf is clear
  295. test_spr_bits 2,1,0,msr1 ; msr1.ovf is clear
  296. test_spr_bits 1,0,0,msr0 ; msr0.aovf is clear
  297. test_spr_bits 0x7000,12,0,msr0 ; msr0.mtt is clear
  298. test_accg_immed 0x00000011,accg0
  299. test_acc_immed 0x11111111,acc0
  300. set_fr_iimmed 0xfffe,0xffff,fr7 ; saturation
  301. set_fr_iimmed 0xffff,0xffff,fr8
  302. cmcpxru fr7,fr8,acc0,cc5,1
  303. test_spr_bits 0x3c,2,0x0,msr0 ; msr0.sie is clear
  304. test_spr_bits 2,1,0,msr0 ; msr0.ovf is clear
  305. test_spr_bits 2,1,0,msr1 ; msr1.ovf is clear
  306. test_spr_bits 1,0,0,msr0 ; msr0.aovf is clear
  307. test_spr_bits 0x7000,12,0,msr0 ; msr0.mtt is clear
  308. test_accg_immed 0x00000011,accg0
  309. test_acc_immed 0x11111111,acc0
  310. set_spr_immed 0,msr0
  311. set_spr_immed 0,msr1
  312. set_accg_immed 0x00000011,accg0
  313. set_acc_immed 0x11111111,acc0
  314. set_fr_iimmed 4,2,fr7 ; multiply small numbers
  315. set_fr_iimmed 5,3,fr8
  316. cmcpxru fr7,fr8,acc0,cc2,1
  317. test_accg_immed 0x00000011,accg0
  318. test_acc_immed 0x11111111,acc0
  319. set_fr_iimmed 1,2,fr7 ; multiply by 1
  320. set_fr_iimmed 3,1,fr8
  321. cmcpxru fr7,fr8,acc0,cc2,1
  322. test_accg_immed 0x00000011,accg0
  323. test_acc_immed 0x11111111,acc0
  324. set_fr_iimmed 0,2,fr7 ; multiply by 0
  325. set_fr_iimmed 2,0,fr8
  326. cmcpxru fr7,fr8,acc0,cc2,1
  327. test_accg_immed 0x00000011,accg0
  328. test_acc_immed 0x11111111,acc0
  329. set_fr_iimmed 0x3fff,1,fr7 ; 15 bit result
  330. set_fr_iimmed 2,0x0001,fr8
  331. cmcpxru fr7,fr8,acc0,cc2,1
  332. test_accg_immed 0x00000011,accg0
  333. test_acc_immed 0x11111111,acc0
  334. set_fr_iimmed 0x4000,1,fr7 ; 16 bit result
  335. set_fr_iimmed 4,0x0001,fr8
  336. cmcpxru fr7,fr8,acc0,cc2,1
  337. test_accg_immed 0x00000011,accg0
  338. test_acc_immed 0x11111111,acc0
  339. set_fr_iimmed 0x8000,1,fr7 ; 17 bit result
  340. set_fr_iimmed 4,0x0001,fr8
  341. cmcpxru fr7,fr8,acc0,cc2,1
  342. test_accg_immed 0x00000011,accg0
  343. test_acc_immed 0x11111111,acc0
  344. set_fr_iimmed 0x7fff,0x0000,fr7 ; max positive result
  345. set_fr_iimmed 0x7fff,0x7fff,fr8
  346. cmcpxru fr7,fr8,acc0,cc6,1
  347. test_accg_immed 0x00000011,accg0
  348. test_acc_immed 0x11111111,acc0
  349. set_fr_iimmed 0x8000,0x8000,fr7 ; max positive result
  350. set_fr_iimmed 0x8000,0x0000,fr8
  351. cmcpxru fr7,fr8,acc0,cc6,1
  352. test_accg_immed 0x00000011,accg0
  353. test_acc_immed 0x11111111,acc0
  354. set_fr_iimmed 0xffff,0x0000,fr7 ; max positive result
  355. set_fr_iimmed 0xffff,0xffff,fr8
  356. cmcpxru fr7,fr8,acc0,cc6,1
  357. test_accg_immed 0x00000011,accg0
  358. test_acc_immed 0x11111111,acc0
  359. set_fr_iimmed 0x0000,0x0001,fr7 ; saturation
  360. set_fr_iimmed 0xffff,0x0001,fr8
  361. cmcpxru fr7,fr8,acc0,cc6,1
  362. test_spr_bits 0x3c,2,0x0,msr0 ; msr0.sie is clear
  363. test_spr_bits 2,1,0,msr0 ; msr0.ovf is clear
  364. test_spr_bits 2,1,0,msr1 ; msr1.ovf is clear
  365. test_spr_bits 1,0,0,msr0 ; msr0.aovf is clear
  366. test_spr_bits 0x7000,12,0,msr0 ; msr0.mtt is clear
  367. test_accg_immed 0x00000011,accg0
  368. test_acc_immed 0x11111111,acc0
  369. set_fr_iimmed 0x0000,0xffff,fr7 ; saturation
  370. set_fr_iimmed 0xffff,0xffff,fr8
  371. cmcpxru fr7,fr8,acc0,cc6,1
  372. test_spr_bits 0x3c,2,0x0,msr0 ; msr0.sie is clear
  373. test_spr_bits 2,1,0,msr0 ; msr0.ovf is clear
  374. test_spr_bits 2,1,0,msr1 ; msr1.ovf is clear
  375. test_spr_bits 1,0,0,msr0 ; msr0.aovf is clear
  376. test_spr_bits 0x7000,12,0,msr0 ; msr0.mtt is clear
  377. test_accg_immed 0x00000011,accg0
  378. test_acc_immed 0x11111111,acc0
  379. set_fr_iimmed 0xfffe,0xffff,fr7 ; saturation
  380. set_fr_iimmed 0xffff,0xffff,fr8
  381. cmcpxru fr7,fr8,acc0,cc6,1
  382. test_spr_bits 0x3c,2,0x0,msr0 ; msr0.sie is clear
  383. test_spr_bits 2,1,0,msr0 ; msr0.ovf is clear
  384. test_spr_bits 2,1,0,msr1 ; msr1.ovf is clear
  385. test_spr_bits 1,0,0,msr0 ; msr0.aovf is clear
  386. test_spr_bits 0x7000,12,0,msr0 ; msr0.mtt is clear
  387. test_accg_immed 0x00000011,accg0
  388. test_acc_immed 0x11111111,acc0
  389. ;
  390. set_spr_immed 0,msr0
  391. set_spr_immed 0,msr1
  392. set_accg_immed 0x00000011,accg0
  393. set_acc_immed 0x11111111,acc0
  394. set_fr_iimmed 4,2,fr7 ; multiply small numbers
  395. set_fr_iimmed 5,3,fr8
  396. cmcpxru fr7,fr8,acc0,cc3,1
  397. test_accg_immed 0x00000011,accg0
  398. test_acc_immed 0x11111111,acc0
  399. set_fr_iimmed 1,2,fr7 ; multiply by 1
  400. set_fr_iimmed 3,1,fr8
  401. cmcpxru fr7,fr8,acc0,cc3,1
  402. test_accg_immed 0x00000011,accg0
  403. test_acc_immed 0x11111111,acc0
  404. set_fr_iimmed 0,2,fr7 ; multiply by 0
  405. set_fr_iimmed 2,0,fr8
  406. cmcpxru fr7,fr8,acc0,cc3,1
  407. test_accg_immed 0x00000011,accg0
  408. test_acc_immed 0x11111111,acc0
  409. set_fr_iimmed 0x3fff,1,fr7 ; 15 bit result
  410. set_fr_iimmed 2,0x0001,fr8
  411. cmcpxru fr7,fr8,acc0,cc3,1
  412. test_accg_immed 0x00000011,accg0
  413. test_acc_immed 0x11111111,acc0
  414. set_fr_iimmed 0x4000,1,fr7 ; 16 bit result
  415. set_fr_iimmed 4,0x0001,fr8
  416. cmcpxru fr7,fr8,acc0,cc3,1
  417. test_accg_immed 0x00000011,accg0
  418. test_acc_immed 0x11111111,acc0
  419. set_fr_iimmed 0x8000,1,fr7 ; 17 bit result
  420. set_fr_iimmed 4,0x0001,fr8
  421. cmcpxru fr7,fr8,acc0,cc3,1
  422. test_accg_immed 0x00000011,accg0
  423. test_acc_immed 0x11111111,acc0
  424. set_fr_iimmed 0x7fff,0x0000,fr7 ; max positive result
  425. set_fr_iimmed 0x7fff,0x7fff,fr8
  426. cmcpxru fr7,fr8,acc0,cc7,1
  427. test_accg_immed 0x00000011,accg0
  428. test_acc_immed 0x11111111,acc0
  429. set_fr_iimmed 0x8000,0x8000,fr7 ; max positive result
  430. set_fr_iimmed 0x8000,0x0000,fr8
  431. cmcpxru fr7,fr8,acc0,cc7,1
  432. test_accg_immed 0x00000011,accg0
  433. test_acc_immed 0x11111111,acc0
  434. set_fr_iimmed 0xffff,0x0000,fr7 ; max positive result
  435. set_fr_iimmed 0xffff,0xffff,fr8
  436. cmcpxru fr7,fr8,acc0,cc7,1
  437. test_accg_immed 0x00000011,accg0
  438. test_acc_immed 0x11111111,acc0
  439. set_fr_iimmed 0x0000,0x0001,fr7 ; saturation
  440. set_fr_iimmed 0xffff,0x0001,fr8
  441. cmcpxru fr7,fr8,acc0,cc7,1
  442. test_spr_bits 0x3c,2,0x0,msr0 ; msr0.sie is clear
  443. test_spr_bits 2,1,0,msr0 ; msr0.ovf is clear
  444. test_spr_bits 2,1,0,msr1 ; msr1.ovf is clear
  445. test_spr_bits 1,0,0,msr0 ; msr0.aovf is clear
  446. test_spr_bits 0x7000,12,0,msr0 ; msr0.mtt is clear
  447. test_accg_immed 0x00000011,accg0
  448. test_acc_immed 0x11111111,acc0
  449. set_fr_iimmed 0x0000,0xffff,fr7 ; saturation
  450. set_fr_iimmed 0xffff,0xffff,fr8
  451. cmcpxru fr7,fr8,acc0,cc7,1
  452. test_spr_bits 0x3c,2,0x0,msr0 ; msr0.sie is clear
  453. test_spr_bits 2,1,0,msr0 ; msr0.ovf is clear
  454. test_spr_bits 2,1,0,msr1 ; msr1.ovf is clear
  455. test_spr_bits 1,0,0,msr0 ; msr0.aovf is clear
  456. test_spr_bits 0x7000,12,0,msr0 ; msr0.mtt is clear
  457. test_accg_immed 0x00000011,accg0
  458. test_acc_immed 0x11111111,acc0
  459. set_fr_iimmed 0xfffe,0xffff,fr7 ; saturation
  460. set_fr_iimmed 0xffff,0xffff,fr8
  461. cmcpxru fr7,fr8,acc0,cc7,1
  462. test_spr_bits 0x3c,2,0x0,msr0 ; msr0.sie is clear
  463. test_spr_bits 2,1,0,msr0 ; msr0.ovf is clear
  464. test_spr_bits 2,1,0,msr1 ; msr1.ovf is clear
  465. test_spr_bits 1,0,0,msr0 ; msr0.aovf is clear
  466. test_spr_bits 0x7000,12,0,msr0 ; msr0.mtt is clear
  467. test_accg_immed 0x00000011,accg0
  468. test_acc_immed 0x11111111,acc0
  469. pass