div.s 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387
  1. # Hitachi H8 testcase 'divs', 'divu', 'divxs', 'divxu'
  2. # mach(): all
  3. # as(h8300): --defsym sim_cpu=0
  4. # as(h8300h): --defsym sim_cpu=1
  5. # as(h8300s): --defsym sim_cpu=2
  6. # as(h8sx): --defsym sim_cpu=3
  7. # ld(h8300h): -m h8300helf
  8. # ld(h8300s): -m h8300self
  9. # ld(h8sx): -m h8300sxelf
  10. .include "testutils.inc"
  11. start
  12. .if (sim_cpu == h8sx)
  13. divs_w_reg_reg:
  14. set_grs_a5a5
  15. ;; divs.w rs, rd
  16. mov.w #32, r1
  17. mov.w #-2, r2
  18. set_ccr_zero
  19. divs.w r2, r1
  20. ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
  21. test_neg_set
  22. test_carry_clear
  23. test_zero_clear
  24. test_ovf_clear
  25. test_gr_a5a5 0
  26. test_h_gr16 0xfff0 r1
  27. test_h_gr32 0xa5a5fffe er2
  28. test_gr_a5a5 3
  29. test_gr_a5a5 4
  30. test_gr_a5a5 5
  31. test_gr_a5a5 6
  32. test_gr_a5a5 7
  33. divs_w_imm4_reg:
  34. set_grs_a5a5
  35. ;; divs.w xx:4, rd
  36. mov.w #-32, r1
  37. set_ccr_zero
  38. divs.w #2:4, r1
  39. ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
  40. test_neg_set
  41. test_carry_clear
  42. test_zero_clear
  43. test_ovf_clear
  44. test_gr_a5a5 0
  45. test_h_gr16 -16 r1
  46. test_gr_a5a5 2
  47. test_gr_a5a5 3
  48. test_gr_a5a5 4
  49. test_gr_a5a5 5
  50. test_gr_a5a5 6
  51. test_gr_a5a5 7
  52. divs_l_reg_reg:
  53. set_grs_a5a5
  54. ;; divs.l ers, erd
  55. mov.l #320000, er1
  56. mov.l #-2, er2
  57. set_ccr_zero
  58. divs.l er2, er1
  59. ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
  60. test_neg_set
  61. test_carry_clear
  62. test_zero_clear
  63. test_ovf_clear
  64. test_gr_a5a5 0
  65. test_h_gr32 -160000 er1
  66. test_h_gr32 -2 er2
  67. test_gr_a5a5 3
  68. test_gr_a5a5 4
  69. test_gr_a5a5 5
  70. test_gr_a5a5 6
  71. test_gr_a5a5 7
  72. divs_l_imm4_reg:
  73. set_grs_a5a5
  74. ;; divs.l xx:4, rd
  75. mov.l #-320000, er1
  76. set_ccr_zero
  77. divs.l #2:4, er1
  78. ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
  79. test_neg_set
  80. test_carry_clear
  81. test_zero_clear
  82. test_ovf_clear
  83. test_gr_a5a5 0
  84. test_h_gr32 -160000 er1
  85. test_gr_a5a5 2
  86. test_gr_a5a5 3
  87. test_gr_a5a5 4
  88. test_gr_a5a5 5
  89. test_gr_a5a5 6
  90. test_gr_a5a5 7
  91. divu_w_reg_reg:
  92. set_grs_a5a5
  93. ;; divu.w rs, rd
  94. mov.w #32, r1
  95. mov.w #2, r2
  96. set_ccr_zero
  97. divu.w r2, r1
  98. ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
  99. test_cc_clear
  100. test_gr_a5a5 0
  101. test_h_gr16 16 r1
  102. test_h_gr32 0xa5a50002 er2
  103. test_gr_a5a5 3
  104. test_gr_a5a5 4
  105. test_gr_a5a5 5
  106. test_gr_a5a5 6
  107. test_gr_a5a5 7
  108. divu_w_imm4_reg:
  109. set_grs_a5a5
  110. ;; divu.w xx:4, rd
  111. mov.w #32, r1
  112. set_ccr_zero
  113. divu.w #2:4, r1
  114. ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
  115. test_cc_clear
  116. test_gr_a5a5 0
  117. test_h_gr16 16 r1
  118. test_gr_a5a5 2
  119. test_gr_a5a5 3
  120. test_gr_a5a5 4
  121. test_gr_a5a5 5
  122. test_gr_a5a5 6
  123. test_gr_a5a5 7
  124. divu_l_reg_reg:
  125. set_grs_a5a5
  126. ;; divu.l ers, erd
  127. mov.l #320000, er1
  128. mov.l #2, er2
  129. set_ccr_zero
  130. divu.l er2, er1
  131. ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
  132. test_cc_clear
  133. test_gr_a5a5 0
  134. test_h_gr32 160000 er1
  135. test_h_gr32 2 er2
  136. test_gr_a5a5 3
  137. test_gr_a5a5 4
  138. test_gr_a5a5 5
  139. test_gr_a5a5 6
  140. test_gr_a5a5 7
  141. divu_l_imm4_reg:
  142. set_grs_a5a5
  143. ;; divu.l xx:4, rd
  144. mov.l #320000, er1
  145. set_ccr_zero
  146. divu.l #2:4, er1
  147. ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
  148. test_cc_clear
  149. test_gr_a5a5 0
  150. test_h_gr32 160000 er1
  151. test_gr_a5a5 2
  152. test_gr_a5a5 3
  153. test_gr_a5a5 4
  154. test_gr_a5a5 5
  155. test_gr_a5a5 6
  156. test_gr_a5a5 7
  157. .endif
  158. .if (sim_cpu) ; not equal to zero ie. not h8
  159. divxs_b_reg_reg:
  160. set_grs_a5a5
  161. ;; divxs.b rs, rd
  162. mov.w #32, r1
  163. mov.b #-2, r2l
  164. set_ccr_zero
  165. divxs.b r2l, r1
  166. ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
  167. test_neg_set
  168. test_carry_clear
  169. test_zero_clear
  170. test_ovf_clear
  171. test_gr_a5a5 0
  172. test_h_gr16 0x00f0 r1
  173. test_h_gr32 0xa5a5a5fe er2
  174. test_gr_a5a5 3
  175. test_gr_a5a5 4
  176. test_gr_a5a5 5
  177. test_gr_a5a5 6
  178. test_gr_a5a5 7
  179. .if (sim_cpu == h8sx)
  180. divxs_b_imm4_reg:
  181. set_grs_a5a5
  182. ;; divxs.b xx:4, rd
  183. mov.w #-32, r1
  184. set_ccr_zero
  185. divxs.b #2:4, r1
  186. ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
  187. test_neg_set
  188. test_carry_clear
  189. test_zero_clear
  190. test_ovf_clear
  191. test_gr_a5a5 0
  192. test_h_gr16 0x00f0 r1
  193. test_gr_a5a5 2
  194. test_gr_a5a5 3
  195. test_gr_a5a5 4
  196. test_gr_a5a5 5
  197. test_gr_a5a5 6
  198. test_gr_a5a5 7
  199. .endif ; h8sx
  200. divxs_w_reg_reg:
  201. set_grs_a5a5
  202. ;; divxs.w ers, erd
  203. mov.l #0x1000, er1
  204. mov.w #-0x1000, r2
  205. set_ccr_zero
  206. divxs.w r2, er1
  207. ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
  208. test_neg_set
  209. test_carry_clear
  210. test_zero_clear
  211. test_ovf_clear
  212. test_gr_a5a5 0
  213. test_h_gr32 0x0000ffff er1
  214. test_h_gr32 0xa5a5f000 er2
  215. test_gr_a5a5 3
  216. test_gr_a5a5 4
  217. test_gr_a5a5 5
  218. test_gr_a5a5 6
  219. test_gr_a5a5 7
  220. .if (sim_cpu == h8sx)
  221. divxs_w_imm4_reg:
  222. set_grs_a5a5
  223. ;; divxs.w xx:4, rd
  224. mov.l #-4, er1
  225. set_ccr_zero
  226. divxs.w #2:4, er1
  227. ;; test ccr ; H=0 N=1 Z=0 V=0 C=0
  228. test_neg_set
  229. test_carry_clear
  230. test_zero_clear
  231. test_ovf_clear
  232. test_gr_a5a5 0
  233. test_h_gr32 0x0000fffe er1
  234. test_gr_a5a5 2
  235. test_gr_a5a5 3
  236. test_gr_a5a5 4
  237. test_gr_a5a5 5
  238. test_gr_a5a5 6
  239. test_gr_a5a5 7
  240. .endif ; h8sx
  241. .endif ; not h8
  242. divxu_b_reg_reg:
  243. set_grs_a5a5
  244. ;; divxu.b rs, rd
  245. mov.w #32, r1
  246. mov.b #2, r2l
  247. set_ccr_zero
  248. divxu.b r2l, r1
  249. ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
  250. test_cc_clear
  251. test_gr_a5a5 0
  252. test_h_gr16 0x0010 r1
  253. test_h_gr16 0xa502 r2
  254. .if (sim_cpu)
  255. test_h_gr32 0xa5a5a502 er2
  256. .endif
  257. test_gr_a5a5 3
  258. test_gr_a5a5 4
  259. test_gr_a5a5 5
  260. test_gr_a5a5 6
  261. test_gr_a5a5 7
  262. .if (sim_cpu) ; not h8
  263. .if (sim_cpu == h8sx)
  264. divxu_b_imm4_reg:
  265. set_grs_a5a5
  266. ;; divxu.b xx:4, rd
  267. mov.w #32, r1
  268. set_ccr_zero
  269. divxu.b #2:4, r1
  270. ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
  271. test_cc_clear
  272. test_gr_a5a5 0
  273. test_h_gr16 0x0010 r1
  274. test_gr_a5a5 2
  275. test_gr_a5a5 3
  276. test_gr_a5a5 4
  277. test_gr_a5a5 5
  278. test_gr_a5a5 6
  279. test_gr_a5a5 7
  280. .endif ; h8sx
  281. divxu_w_reg_reg:
  282. set_grs_a5a5
  283. ;; divxu.w ers, erd
  284. mov.l #0x1000, er1
  285. mov.w #0x1000, r2
  286. set_ccr_zero
  287. divxu.w r2, er1
  288. ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
  289. test_cc_clear
  290. test_gr_a5a5 0
  291. test_h_gr32 0x00000001 er1
  292. test_h_gr32 0xa5a51000 er2
  293. test_gr_a5a5 3
  294. test_gr_a5a5 4
  295. test_gr_a5a5 5
  296. test_gr_a5a5 6
  297. test_gr_a5a5 7
  298. .if (sim_cpu == h8sx)
  299. divxu_w_imm4_reg:
  300. set_grs_a5a5
  301. ;; divxu.w xx:4, rd
  302. mov.l #0xffff, er1
  303. set_ccr_zero
  304. divxu.w #2:4, er1
  305. ;; test ccr ; H=0 N=0 Z=0 V=0 C=0
  306. test_cc_clear
  307. test_gr_a5a5 0
  308. test_h_gr32 0x00017fff er1
  309. test_gr_a5a5 2
  310. test_gr_a5a5 3
  311. test_gr_a5a5 4
  312. test_gr_a5a5 5
  313. test_gr_a5a5 6
  314. test_gr_a5a5 7
  315. .endif ; h8sx
  316. .endif ; not h8
  317. pass
  318. exit 0