mova.s 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838
  1. # Hitachi H8 testcase 'mova'
  2. # mach(): h8sx
  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. .data
  12. foo: .long 0x01010101
  13. .long 0x10101010
  14. .long 0x11111111
  15. start
  16. movabl16_reg8:
  17. set_grs_a5a5
  18. set_ccr_zero
  19. mova/b.l @(1:16, r2l.b), er3
  20. test_cc_clear
  21. test_gr_a5a5 0 ; Make sure other regs not affected
  22. test_gr_a5a5 1
  23. test_gr_a5a5 2
  24. test_h_gr32 0xa6 er3
  25. test_gr_a5a5 4
  26. test_gr_a5a5 5
  27. test_gr_a5a5 6
  28. test_gr_a5a5 7
  29. movabl16_reg16:
  30. set_grs_a5a5
  31. set_ccr_zero
  32. mova/b.l @(1:16, r2.w), er3
  33. test_cc_clear
  34. test_gr_a5a5 0 ; Make sure other regs not affected
  35. test_gr_a5a5 1
  36. test_gr_a5a5 2
  37. test_h_gr32 0xa5a6 er3
  38. test_gr_a5a5 4
  39. test_gr_a5a5 5
  40. test_gr_a5a5 6
  41. test_gr_a5a5 7
  42. movabl32_reg8:
  43. set_grs_a5a5
  44. set_ccr_zero
  45. mova/b.l @(1:32, r2l.b), er3
  46. test_cc_clear
  47. test_gr_a5a5 0 ; Make sure other regs not affected
  48. test_gr_a5a5 1
  49. test_gr_a5a5 2
  50. test_h_gr32 0xa6 er3
  51. test_gr_a5a5 4
  52. test_gr_a5a5 5
  53. test_gr_a5a5 6
  54. test_gr_a5a5 7
  55. movabl32_reg16:
  56. set_grs_a5a5
  57. set_ccr_zero
  58. mova/b.l @(1:32, r2.w), er3
  59. test_cc_clear
  60. test_gr_a5a5 0 ; Make sure other regs not affected
  61. test_gr_a5a5 1
  62. test_gr_a5a5 2
  63. test_h_gr32 0xa5a6 er3
  64. test_gr_a5a5 4
  65. test_gr_a5a5 5
  66. test_gr_a5a5 6
  67. test_gr_a5a5 7
  68. movawl16_reg8:
  69. set_grs_a5a5
  70. set_ccr_zero
  71. mova/w.l @(1:16, r2l.b), er3
  72. test_cc_clear
  73. test_gr_a5a5 0 ; Make sure other regs not affected
  74. test_gr_a5a5 1
  75. test_gr_a5a5 2
  76. test_h_gr32 0x14b er3
  77. test_gr_a5a5 4
  78. test_gr_a5a5 5
  79. test_gr_a5a5 6
  80. test_gr_a5a5 7
  81. movawl16_reg16:
  82. set_grs_a5a5
  83. set_ccr_zero
  84. mova/w.l @(1:16, r2.w), er3
  85. test_cc_clear
  86. test_gr_a5a5 0 ; Make sure other regs not affected
  87. test_gr_a5a5 1
  88. test_gr_a5a5 2
  89. test_h_gr32 0x14b4b er3
  90. test_gr_a5a5 4
  91. test_gr_a5a5 5
  92. test_gr_a5a5 6
  93. test_gr_a5a5 7
  94. movawl32_reg8:
  95. set_grs_a5a5
  96. set_ccr_zero
  97. mova/w.l @(1:32, r2l.b), er3
  98. test_cc_clear
  99. test_gr_a5a5 0 ; Make sure other regs not affected
  100. test_gr_a5a5 1
  101. test_gr_a5a5 2
  102. test_h_gr32 0x14b er3
  103. test_gr_a5a5 4
  104. test_gr_a5a5 5
  105. test_gr_a5a5 6
  106. test_gr_a5a5 7
  107. movawl32_reg16:
  108. set_grs_a5a5
  109. set_ccr_zero
  110. mova/w.l @(1:32, r2.w), er3
  111. test_cc_clear
  112. test_gr_a5a5 0 ; Make sure other regs not affected
  113. test_gr_a5a5 1
  114. test_gr_a5a5 2
  115. test_h_gr32 0x14b4b er3
  116. test_gr_a5a5 4
  117. test_gr_a5a5 5
  118. test_gr_a5a5 6
  119. test_gr_a5a5 7
  120. movall16_reg8:
  121. set_grs_a5a5
  122. set_ccr_zero
  123. mova/l.l @(1:16, r2l.b), er3
  124. test_cc_clear
  125. test_gr_a5a5 0 ; Make sure other regs not affected
  126. test_gr_a5a5 1
  127. test_gr_a5a5 2
  128. test_h_gr32 0x295 er3
  129. test_gr_a5a5 4
  130. test_gr_a5a5 5
  131. test_gr_a5a5 6
  132. test_gr_a5a5 7
  133. movall16_reg16:
  134. set_grs_a5a5
  135. set_ccr_zero
  136. mova/l.l @(1:16, r2.w), er3
  137. test_cc_clear
  138. test_gr_a5a5 0 ; Make sure other regs not affected
  139. test_gr_a5a5 1
  140. test_gr_a5a5 2
  141. test_h_gr32 0x29695 er3
  142. test_gr_a5a5 4
  143. test_gr_a5a5 5
  144. test_gr_a5a5 6
  145. test_gr_a5a5 7
  146. movall32_reg8:
  147. set_grs_a5a5
  148. set_ccr_zero
  149. mova/l.l @(1:32, r2l.b), er3
  150. test_cc_clear
  151. test_gr_a5a5 0 ; Make sure other regs not affected
  152. test_gr_a5a5 1
  153. test_gr_a5a5 2
  154. test_h_gr32 0x295 er3
  155. test_gr_a5a5 4
  156. test_gr_a5a5 5
  157. test_gr_a5a5 6
  158. test_gr_a5a5 7
  159. movall32_reg16:
  160. set_grs_a5a5
  161. set_ccr_zero
  162. mova/l.l @(1:32, r2.w), er3
  163. test_cc_clear
  164. test_gr_a5a5 0 ; Make sure other regs not affected
  165. test_gr_a5a5 1
  166. test_gr_a5a5 2
  167. test_h_gr32 0x29695 er3
  168. test_gr_a5a5 4
  169. test_gr_a5a5 5
  170. test_gr_a5a5 6
  171. test_gr_a5a5 7
  172. t02_mova:
  173. set_grs_a5a5
  174. set_ccr_zero
  175. mov.l #0x01010101, er1
  176. mova/b.c @(0x1234:16,r1l.b),er1 ; 7A891234
  177. test_h_gr32 0x1235, er1 ; 1s
  178. mov.l #0x01010101, er1
  179. mova/b.c @(0x1234:16,r1.w),er1 ; 7A991234
  180. test_h_gr32 0x1335, er1 ; 2s
  181. mov.l #0x01010101, er1
  182. mova/w.c @(0x1234:16,r1l.b),er1 ; 7AA91234
  183. test_h_gr32 0x1236, er1 ; 3s
  184. mov.l #0x01010101, er1
  185. mova/w.c @(0x1234:16,r1.w),er1 ; 7AB91234
  186. test_h_gr32 0x1436, er1 ; 4s
  187. mov.l #0x01010101, er1
  188. mova/l.c @(0x1234:16,r1l.b),er1 ; 7AC91234
  189. test_h_gr32 0x1238, er1 ; 5s
  190. mov.l #0x01010101, er1
  191. mova/l.c @(0x1234:16,r1.w),er1 ; 7AD91234
  192. test_h_gr32 0x1638, er1 ; 6s
  193. mov.l #0x01010101, er1
  194. mova/b.c @(0x12345678:32,r1l.b),er1 ; 7A8112345678
  195. test_h_gr32 0x12345679, er1 ; 7s
  196. mov.l #0x01010101, er1
  197. mova/b.c @(0x12345678:32,r1.w),er1 ; 7A9112345678
  198. test_h_gr32 0x12345779, er1 ; 8s
  199. mov.l #0x01010101, er1
  200. mova/w.c @(0x12345678:32,r1l.b),er1 ; 7AA112345678
  201. test_h_gr32 0x1234567a, er1 ; 9s
  202. mov.l #0x01010101, er1
  203. mova/w.c @(0x12345678:32,r1.w),er1 ; 7AB112345678
  204. test_h_gr32 0x1234587a, er1 ; 10s
  205. mov.l #0x01010101, er1
  206. mova/l.c @(0x12345678:32,r1l.b),er1 ; 7AC112345678
  207. test_h_gr32 0x1234567c, er1 ; 11s
  208. mov.l #0x01010101, er1
  209. mova/l.c @(0x12345678:32,r1.w),er1 ; 7AD112345678
  210. test_h_gr32 0x12345a7c, er1 ; 12s
  211. t02b:
  212. mov.l #0x01010101, er3
  213. mova/b.l @(0x1234:16,r3l.b),er1 ; 78B87A891234
  214. test_h_gr32 0x1235, er1 ; 1
  215. mova/b.l @(0x1234:16,r3.w),er1 ; 78397A991234
  216. test_h_gr32 0x1335, er1 ; 2
  217. mova/w.l @(0x1234:16,r3l.b),er1 ; 78B87AA91234
  218. test_h_gr32 0x1236, er1 ; 3
  219. mova/w.l @(0x1234:16,r3.w),er1 ; 78397AB91234
  220. test_h_gr32 0x1436, er1 ; 4
  221. mova/l.l @(0x1234:16,r3l.b),er1 ; 78B87AC91234
  222. test_h_gr32 0x1238, er1 ; 5
  223. mova/l.l @(0x1234:16,r3.w),er1 ; 78397AD91234
  224. test_h_gr32 0x1638, er1 ; 6
  225. mova/b.l @(0x12345678:32,r3l.b),er1 ; 78B87A8112345678
  226. test_h_gr32 0x12345679, er1 ; 7
  227. mova/b.l @(0x12345678:32,r3.w),er1 ; 78397A9112345678
  228. test_h_gr32 0x12345779, er1 ; 8
  229. mova/w.l @(0x12345678:32,r3l.b),er1 ; 78B87AA112345678
  230. test_h_gr32 0x1234567a, er1 ; 9
  231. mova/w.l @(0x12345678:32,r3.w),er1 ; 78397AB112345678
  232. test_h_gr32 0x1234587a, er1 ; 10
  233. mova/l.l @(0x12345678:32,r3l.b),er1 ; 78B87AC112345678
  234. test_h_gr32 0x1234567c, er1 ; 11
  235. mova/l.l @(0x12345678:32,r3.w),er1 ; 78397AD112345678
  236. test_h_gr32 0x12345a7c, er1 ; 12
  237. test_h_gr32 0x01010101, er3
  238. t02c:
  239. mov.l #foo, er2
  240. mova/b.l @(0x1234:16,@er2.b),er1 ;017F02811234
  241. test_h_gr32 0x1235, er1 ; 13
  242. test_h_gr32 foo, er2
  243. mova/b.l @(0x1234:16,@(0x1:2,er2).b),er1 ;017F12811234
  244. test_h_gr32 0x1235, er1 ; 18
  245. test_h_gr32 foo, er2
  246. mova/b.l @(0x1234:16,@er2+.b),er1 ;017F82811234
  247. test_h_gr32 0x1235, er1 ; 14
  248. test_h_gr32 foo+1, er2
  249. mova/b.l @(0x1234:16,@-er2.b),er1 ;017FB2811234
  250. test_h_gr32 0x1235, er1 ; 17
  251. test_h_gr32 foo, er2
  252. mova/b.l @(0x1234:16,@+er2.b),er1 ;017F92811234
  253. test_h_gr32 0x1235, er1 ; 16
  254. test_h_gr32 foo+1, er2
  255. mova/b.l @(0x1234:16,@er2-.b),er1 ;017FA2811234
  256. test_h_gr32 0x1235, er1 ; 15
  257. test_h_gr32 foo, er2
  258. t02d:
  259. mov.l #4, er2
  260. mova/b.l @(0x1234:16, @(foo:16, er2).b), er1
  261. test_h_gr32 0x1244, er1 ; 19
  262. mova/b.l @(0x1234:16, @(foo:16, r2L.b).b), er1
  263. test_h_gr32 0x1244, er1 ; 21
  264. mova/b.l @(0x1234:16, @(foo:16, r2.w).b), er1
  265. test_h_gr32 0x1244, er1 ; 22
  266. mova/b.l @(0x1234:16, @(foo:16, er2.l).b), er1
  267. test_h_gr32 0x1244, er1 ; 23
  268. mov.l #4, er2
  269. mova/b.l @(0x1234:16, @(foo:32, er2).b), er1
  270. test_h_gr32 0x1244, er1 ; 20
  271. mova/b.l @(0x1234:16, @(foo:32, r2L.b).b), er1
  272. test_h_gr32 0x1244, er1 ; 24
  273. mova/b.l @(0x1234:16, @(foo:32, r2.w).b), er1
  274. test_h_gr32 0x1244, er1 ; 25
  275. mova/b.l @(0x1234:16, @(foo:32, er2.l).b), er1
  276. test_h_gr32 0x1244, er1 ; 26
  277. mova/b.l @(0x1234:16,@foo:16.b),er1
  278. test_h_gr32 0x1235, er1 ; 27
  279. mova/b.l @(0x1234:16,@foo:32.b),er1
  280. test_h_gr32 0x1235, er1 ; 28
  281. t02e:
  282. mov.l #foo, er2
  283. mova/b.l @(0x1234:16,@er2.w),er1 ;015F02911234
  284. test_h_gr32 0x1335, er1 ; 29
  285. test_h_gr32 foo, er2
  286. mova/b.l @(0x1234:16,@(0x2:2,er2).w),er1 ;015F12911234
  287. test_h_gr32 0x1335, er1 ; 34
  288. test_h_gr32 foo, er2
  289. mova/b.l @(0x1234:16,@er2+.w),er1 ;015F82911234
  290. test_h_gr32 0x1335, er1 ; 30
  291. test_h_gr32 foo+2, er2
  292. mova/b.l @(0x1234:16,@-er2.w),er1 ;015FB2911234
  293. test_h_gr32 0x1335, er1 ; 33
  294. test_h_gr32 foo, er2
  295. mova/b.l @(0x1234:16,@+er2.w),er1 ;015F92911234
  296. test_h_gr32 0x1335, er1 ; 32
  297. test_h_gr32 foo+2, er2
  298. mova/b.l @(0x1234:16,@er2-.w),er1 ;015FA2911234
  299. test_h_gr32 0x1335, er1 ; 31
  300. test_h_gr32 foo, er2
  301. mov.l #4, er2
  302. mova/b.l @(0x1234:16, @(foo:16, er2).w), er1
  303. test_h_gr32 0x2244, er1 ; 35
  304. shar.l er2
  305. mova/b.l @(0x1234:16, @(foo:16, r2L.b).w), er1
  306. test_h_gr32 0x2244, er1 ; 37
  307. mova/b.l @(0x1234:16, @(foo:16, r2.w).w), er1
  308. test_h_gr32 0x2244, er1 ; 38
  309. mova/b.l @(0x1234:16, @(foo:16, er2.l).w), er1
  310. test_h_gr32 0x2244, er1 ; 39
  311. mov.l #4, er2
  312. mova/b.l @(0x1234:16, @(foo:32, er2).w), er1
  313. test_h_gr32 0x2244, er1 ; 36
  314. shar.l er2
  315. mova/b.l @(0x1234:16, @(foo:32, r2L.b).w), er1
  316. test_h_gr32 0x2244, er1 ; 40
  317. mova/b.l @(0x1234:16, @(foo:32, r2.w).w), er1
  318. test_h_gr32 0x2244, er1 ; 41
  319. mova/b.l @(0x1234:16, @(foo:32, er2.l).w), er1
  320. test_h_gr32 0x2244, er1 ; 42
  321. mova/b.l @(0x1234:16,@foo:16.w),er1 ;015F40919ABC1234
  322. test_h_gr32 0x1335, er1 ; 43
  323. mova/b.l @(0x1234:16,@foo:32.w),er1 ;015F48919ABCDEF01234
  324. test_h_gr32 0x1335, er1 ; 44
  325. t02f:
  326. mov.l #foo, er2
  327. mova/w.l @(0x1234:16,@er2.b),er1 ;017F02A11234
  328. test_h_gr32 0x1236, er1 ; 45
  329. mova/w.l @(0x1234:16,@(0x1:2,er2).b),er1 ;017F12A11234
  330. test_h_gr32 0x1236, er1 ; 50
  331. mova/w.l @(0x1234:16,@er2+.b),er1 ;017F82A11234
  332. test_h_gr32 0x1236, er1 ; 46
  333. test_h_gr32 foo+1, er2
  334. mova/w.l @(0x1234:16,@-er2.b),er1 ;017FB2A11234
  335. test_h_gr32 0x1236, er1 ; 49
  336. test_h_gr32 foo, er2
  337. mova/w.l @(0x1234:16,@+er2.b),er1 ;017F92A11234
  338. test_h_gr32 0x1236, er1 ; 48
  339. test_h_gr32 foo+1, er2
  340. mova/w.l @(0x1234:16,@er2-.b),er1 ;017FA2A11234
  341. test_h_gr32 0x1236, er1 ; 47
  342. test_h_gr32 foo, er2
  343. t02g:
  344. mov.l #4, er2
  345. mova/w.l @(0x1234:16, @(foo:16, er2).b), er1
  346. test_h_gr32 0x1254, er1 ; 51
  347. mova/w.l @(0x1234:16, @(foo:16, r2L.b).b), er1
  348. test_h_gr32 0x1254, er1 ; 53
  349. mova/w.l @(0x1234:16, @(foo:16, r2.w).b), er1
  350. test_h_gr32 0x1254, er1 ; 54
  351. mova/w.l @(0x1234:16, @(foo:16, er2.l).b), er1
  352. test_h_gr32 0x1254, er1 ; 55
  353. mov.l #4, er2
  354. mova/w.l @(0x1234:16, @(foo:32, er2).b), er1
  355. test_h_gr32 0x1254, er1 ; 52
  356. mova/w.l @(0x1234:16, @(foo:32, r2L.b).b), er1
  357. test_h_gr32 0x1254, er1 ; 56
  358. mova/w.l @(0x1234:16, @(foo:32, r2.w).b), er1
  359. test_h_gr32 0x1254, er1 ; 57
  360. mova/w.l @(0x1234:16, @(foo:32, er2.l).b), er1
  361. test_h_gr32 0x1254, er1 ; 58
  362. mova/w.l @(0x1234:16,@foo:16.b),er1 ;017F40A19ABC1234
  363. test_h_gr32 0x1236, er1 ; 59 (can't test -- points into the woods)
  364. mova/w.l @(0x1234:16,@foo:32.b),er1 ;017F48A19ABCDEF01234
  365. test_h_gr32 0x1236, er1 ; 60 (can't test -- points into the woods)
  366. t02h:
  367. mov.l #foo, er2
  368. mova/w.l @(0x1234:16,@er2.w),er1 ;015F02B11234
  369. test_h_gr32 0x1436, er1 ; 61
  370. mova/w.l @(0x1234:16,@(0x2:2,er2).w),er1 ;015F12B11234
  371. test_h_gr32 0x1436, er1 ; 66, 0x1234 + (@(4+foo).w << 1
  372. mova/w.l @(0x1234:16,@er2+.w),er1 ;015F82B11234
  373. test_h_gr32 0x1436, er1 ; 62
  374. test_h_gr32 foo+2, er2
  375. mova/w.l @(0x1234:16,@-er2.w),er1 ;015FB2B11234
  376. test_h_gr32 0x1436, er1 ; 63
  377. test_h_gr32 foo, er2
  378. mova/w.l @(0x1234:16,@+er2.w),er1 ;015F92B11234
  379. test_h_gr32 0x1436, er1 ; 64
  380. test_h_gr32 foo+2, er2
  381. mova/w.l @(0x1234:16,@er2-.w),er1 ;015FA2B11234
  382. test_h_gr32 0x1436, er1 ; 65
  383. test_h_gr32 foo, er2
  384. t02i:
  385. mov.l #4, er2
  386. mova/w.l @(0x1234:16, @(foo:16, er2).w), er1
  387. test_h_gr32 0x3254, er1 ; 67
  388. shar.l er2
  389. mova/w.l @(0x1234:16, @(foo:16, r2L.b).w), er1
  390. test_h_gr32 0x3254, er1 ; 69
  391. mova/w.l @(0x1234:16, @(foo:16, r2.w).w), er1
  392. test_h_gr32 0x3254, er1 ; 70
  393. mova/w.l @(0x1234:16, @(foo:16, er2.l).w), er1
  394. test_h_gr32 0x3254, er1 ; 71
  395. mov.l #4, er2
  396. mova/w.l @(0x1234:16, @(foo:32, er2).w), er1
  397. test_h_gr32 0x3254, er1 ; 68
  398. shar.l er2
  399. mova/w.l @(0x1234:16, @(foo:32, r2L.b).w), er1
  400. test_h_gr32 0x3254, er1 ; 72
  401. mova/w.l @(0x1234:16, @(foo:32, r2.w).w), er1
  402. test_h_gr32 0x3254, er1 ; 73
  403. mova/w.l @(0x1234:16, @(foo:32, er2.l).w), er1
  404. test_h_gr32 0x3254, er1 ; 74
  405. mova/w.l @(0x1234:16,@foo:16.w),er1 ;015F40B19ABC1234
  406. test_h_gr32 0x1436, er1 ; 75 (can't test -- points into the woods)
  407. mova/w.l @(0x1234:16,@foo:32.w),er1 ;015F48B19ABCDEF01234
  408. test_h_gr32 0x1436, er1 ; 76 (can't test -- points into the woods)
  409. t02j:
  410. mov.l #foo, er2
  411. mova/l.l @(0x1234:16,@er2.b),er1 ;017F02C11234
  412. test_h_gr32 0x1238, er1 ; 77
  413. mova/l.l @(0x1234:16,@(0x1:2,er2).b),er1 ;017F12C11234
  414. test_h_gr32 0x1238, er1 ; 82
  415. mova/l.l @(0x1234:16,@er2+.b),er1 ;017F82C11234
  416. test_h_gr32 0x1238, er1 ; 78
  417. test_h_gr32 foo+1, er2
  418. mova/l.l @(0x1234:16,@-er2.b),er1 ;017FB2C11234
  419. test_h_gr32 0x1238, er1 ; 79
  420. test_h_gr32 foo, er2
  421. mova/l.l @(0x1234:16,@+er2.b),er1 ;017F92C11234
  422. test_h_gr32 0x1238, er1 ; 80
  423. test_h_gr32 foo+1, er2
  424. mova/l.l @(0x1234:16,@er2-.b),er1 ;017FA2C11234
  425. test_h_gr32 0x1238, er1 ; 81
  426. test_h_gr32 foo, er2
  427. t02k:
  428. mov.l #4, er2
  429. mova/l.l @(0x1234:16, @(foo:16, er2).b), er1
  430. test_h_gr32 0x1274, er1 ; 83
  431. mova/l.l @(0x1234:16, @(foo:16, r2L.b).b), er1
  432. test_h_gr32 0x1274, er1 ; 85
  433. mova/l.l @(0x1234:16, @(foo:16, r2.w).b), er1
  434. test_h_gr32 0x1274, er1 ; 86
  435. mova/l.l @(0x1234:16, @(foo:16, er2.l).b), er1
  436. test_h_gr32 0x1274, er1 ; 87
  437. mov.l #4, er2
  438. mova/l.l @(0x1234:16, @(foo:32, er2).b), er1
  439. test_h_gr32 0x1274, er1 ; 84
  440. mova/l.l @(0x1234:16, @(foo:32, r2L.b).b), er1
  441. test_h_gr32 0x1274, er1 ; 88
  442. mova/l.l @(0x1234:16, @(foo:32, r2.w).b), er1
  443. test_h_gr32 0x1274, er1 ; 89
  444. mova/l.l @(0x1234:16, @(foo:32, er2.l).b), er1
  445. test_h_gr32 0x1274, er1 ; 90
  446. mova/l.l @(0x1234:16,@foo:16.b),er1 ;017F40C19ABC1234
  447. test_h_gr32 0x1238, er1 ; 91 (can't test -- points into the woods)
  448. mova/l.l @(0x1234:16,@foo:32.b),er1 ;017F48C19ABCDEF01234
  449. test_h_gr32 0x1238, er1 ; 92 (can't test -- points into the woods)
  450. t02l:
  451. mov.l #foo, er2
  452. mova/l.l @(0x1234:16,@er2.w),er1 ;015F02D11234
  453. test_h_gr32 0x1638, er1 ; 93
  454. mova/l.l @(0x1234:16,@(0x2:2,er2).w),er1 ;015F12D11234
  455. test_h_gr32 0x1638, er1 ; 98
  456. mova/l.l @(0x1234:16,@er2+.w),er1 ;015F82D11234
  457. test_h_gr32 0x1638, er1 ; 94
  458. test_h_gr32 foo+2, er2
  459. mova/l.l @(0x1234:16,@-er2.w),er1 ;015FB2D11234
  460. test_h_gr32 0x1638, er1 ; 97
  461. test_h_gr32 foo, er2
  462. mova/l.l @(0x1234:16,@+er2.w),er1 ;015F92D11234
  463. test_h_gr32 0x1638, er1 ; 96
  464. test_h_gr32 foo+2, er2
  465. mova/l.l @(0x1234:16,@er2-.w),er1 ;015FA2D11234
  466. test_h_gr32 0x1638, er1 ; 95
  467. test_h_gr32 foo, er2
  468. t02o:
  469. mov.l #4, er2
  470. mova/l.l @(0x1234:16, @(foo:16, er2).w), er1
  471. test_h_gr32 0x5274, er1 ; 99
  472. shar.l er2
  473. mova/l.l @(0x1234:16, @(foo:16, r2L.b).w), er1
  474. test_h_gr32 0x5274, er1 ; 101
  475. mova/l.l @(0x1234:16, @(foo:16, r2.w).w), er1
  476. test_h_gr32 0x5274, er1 ; 102
  477. mova/l.l @(0x1234:16, @(foo:16, er2.l).w), er1
  478. test_h_gr32 0x5274, er1 ; 103
  479. mov.l #4, er2
  480. mova/l.l @(0x1234:16, @(foo:32, er2).w), er1
  481. test_h_gr32 0x5274, er1 ; 100
  482. shar.l er2
  483. mova/l.l @(0x1234:16, @(foo:32, r2L.b).w), er1
  484. test_h_gr32 0x5274, er1 ; 104
  485. mova/l.l @(0x1234:16, @(foo:32, r2.w).w), er1
  486. test_h_gr32 0x5274, er1 ; 105
  487. mova/l.l @(0x1234:16, @(foo:32, er2.l).w), er1
  488. test_h_gr32 0x5274, er1 ; 106
  489. mova/l.l @(0x1234:16,@foo:16.w),er1 ;015F40D19ABC1234
  490. test_h_gr32 0x1638, er1 ; 107 (can't test -- points into the woods)
  491. mova/l.l @(0x1234:16,@foo:32.w),er1 ;015F48D19ABCDEF01234
  492. test_h_gr32 0x1638, er1 ; 108 (can't test -- points into the woods)
  493. t02p:
  494. mov.l #foo, er2
  495. mova/b.l @(0x12345678:32,@er2.b),er1 ;017F028912345678
  496. test_h_gr32 0x12345679, er1 ; 109
  497. mova/b.l @(0x12345678:32,@(0x1:2,er2).b),er1 ;017F128912345678
  498. test_h_gr32 0x12345679, er1 ; 114
  499. mova/b.l @(0x12345678:32,@er2+.b),er1 ;017F828912345678
  500. test_h_gr32 0x12345679, er1 ; 110
  501. test_h_gr32 foo+1, er2
  502. mova/b.l @(0x12345678:32,@-er2.b),er1 ;017FB28912345678
  503. test_h_gr32 0x12345679, er1 ; 113
  504. test_h_gr32 foo, er2
  505. mova/b.l @(0x12345678:32,@+er2.b),er1 ;017F928912345678
  506. test_h_gr32 0x12345679, er1 ; 112
  507. test_h_gr32 foo+1, er2
  508. mova/b.l @(0x12345678:32,@er2-.b),er1 ;017FA28912345678
  509. test_h_gr32 0x12345679, er1 ; 111
  510. test_h_gr32 foo, er2
  511. t02q:
  512. mov.l #4, er2
  513. mova/b.l @(0x12345678:32, @(foo:16, er2).b), er1
  514. test_h_gr32 0x12345688, er1 ; 115
  515. mova/b.l @(0x12345678:32, @(foo:16, r2L.b).b), er1
  516. test_h_gr32 0x12345688, er1 ; 117
  517. mova/b.l @(0x12345678:32, @(foo:16, r2.w).b), er1
  518. test_h_gr32 0x12345688, er1 ; 118
  519. mova/b.l @(0x12345678:32, @(foo:16, er2.l).b), er1
  520. test_h_gr32 0x12345688, er1 ; 119
  521. mov.l #4, er2
  522. mova/b.l @(0x12345678:32, @(foo:32, er2).b), er1
  523. test_h_gr32 0x12345688, er1 ; 116
  524. mova/b.l @(0x12345678:32, @(foo:32, r2L.b).b), er1
  525. test_h_gr32 0x12345688, er1 ; 120
  526. mova/b.l @(0x12345678:32, @(foo:32, r2.w).b), er1
  527. test_h_gr32 0x12345688, er1 ; 121
  528. mova/b.l @(0x12345678:32, @(foo:32, er2.l).b), er1
  529. test_h_gr32 0x12345688, er1 ; 122
  530. mova/b.l @(0x12345678:32,@foo:16.b),er1
  531. test_h_gr32 0x12345679, er1 ; 123
  532. mova/b.l @(0x12345678:32,@foo:32.b),er1
  533. test_h_gr32 0x12345679, er1 ; 124
  534. t02r:
  535. mov.l #foo, er2
  536. mova/b.l @(0x12345678:32,@er2.w),er1 ;015F029912345678
  537. test_h_gr32 0x12345779, er1 ; 125
  538. mova/b.l @(0x12345678:32,@(0x2:2,er2).w),er1 ;015F129912345678
  539. test_h_gr32 0x12345779, er1 ; 130
  540. mova/b.l @(0x12345678:32,@er2+.w),er1 ;015F829912345678
  541. test_h_gr32 0x12345779, er1 ; 126
  542. test_h_gr32 foo+2, er2
  543. mova/b.l @(0x12345678:32,@-er2.w),er1 ;015FB29912345678
  544. test_h_gr32 0x12345779, er1 ; 129
  545. test_h_gr32 foo, er2
  546. mova/b.l @(0x12345678:32,@+er2.w),er1 ;015F929912345678
  547. test_h_gr32 0x12345779, er1 ; 128
  548. test_h_gr32 foo+2, er2
  549. mova/b.l @(0x12345678:32,@er2-.w),er1 ;015FA29912345678
  550. test_h_gr32 0x12345779, er1 ; 127
  551. test_h_gr32 foo, er2
  552. mov.l #4, er2
  553. mova/b.l @(0x12345678:32, @(foo:16, er2).w), er1
  554. test_h_gr32 0x12346688, er1 ; 131
  555. shar.l er2
  556. mova/b.l @(0x12345678:32, @(foo:16, r2L.b).w), er1
  557. test_h_gr32 0x12346688, er1 ; 133
  558. mova/b.l @(0x12345678:32, @(foo:16, r2.w).w), er1
  559. test_h_gr32 0x12346688, er1 ; 134
  560. mova/b.l @(0x12345678:32, @(foo:16, er2.l).w), er1
  561. test_h_gr32 0x12346688, er1 ; 135
  562. mov.l #4, er2
  563. mova/b.l @(0x12345678:32, @(foo:32, er2).w), er1
  564. test_h_gr32 0x12346688, er1 ; 132
  565. shar.l er2
  566. mova/b.l @(0x12345678:32, @(foo:32, r2L.b).w), er1
  567. test_h_gr32 0x12346688, er1 ; 136
  568. mova/b.l @(0x12345678:32, @(foo:32, r2.w).w), er1
  569. test_h_gr32 0x12346688, er1 ; 137
  570. mova/b.l @(0x12345678:32, @(foo:32, er2.l).w), er1
  571. test_h_gr32 0x12346688, er1 ; 138
  572. mova/b.l @(0x12345678:32,@foo:16.w),er1
  573. test_h_gr32 0x12345779, er1 ; 139
  574. mova/b.l @(0x12345678:32,@foo:32.w),er1
  575. test_h_gr32 0x12345779, er1 ; 140
  576. t02s:
  577. mov.l #foo, er2
  578. mova/w.l @(0x12345678:32,@er2.b),er1 ;017F02A912345678
  579. test_h_gr32 0x1234567a, er1 ; 141
  580. mova/w.l @(0x12345678:32,@(0x1:2,er2).b),er1 ;017F12A912345678
  581. test_h_gr32 0x1234567a, er1 ; 146
  582. mova/w.l @(0x12345678:32,@er2+.b),er1 ;017F82A912345678
  583. test_h_gr32 0x1234567a, er1 ; 142
  584. test_h_gr32 foo+1, er2
  585. mova/w.l @(0x12345678:32,@-er2.b),er1 ;017FB2A912345678
  586. test_h_gr32 0x1234567a, er1 ; 145
  587. test_h_gr32 foo, er2
  588. mova/w.l @(0x12345678:32,@+er2.b),er1 ;017F92A912345678
  589. test_h_gr32 0x1234567a, er1 ; 144
  590. test_h_gr32 foo+1, er2
  591. mova/w.l @(0x12345678:32,@er2-.b),er1 ;017FA2A912345678
  592. test_h_gr32 0x1234567a, er1 ; 143
  593. test_h_gr32 foo, er2
  594. mov.l #4, er2
  595. mova/w.l @(0x12345678:32, @(foo:16, er2).b), er1
  596. test_h_gr32 0x12345698, er1 ; 147
  597. mova/w.l @(0x12345678:32, @(foo:16, r2L.b).b), er1
  598. test_h_gr32 0x12345698, er1 ; 149
  599. mova/w.l @(0x12345678:32, @(foo:16, r2.w).b), er1
  600. test_h_gr32 0x12345698, er1 ; 150
  601. mova/w.l @(0x12345678:32, @(foo:16, er2.l).b), er1
  602. test_h_gr32 0x12345698, er1 ; 151
  603. mov.l #4, er2
  604. mova/w.l @(0x12345678:32, @(foo:32, er2).b), er1
  605. test_h_gr32 0x12345698, er1 ; 148
  606. mova/w.l @(0x12345678:32, @(foo:32, r2L.b).b), er1
  607. test_h_gr32 0x12345698, er1 ; 152
  608. mova/w.l @(0x12345678:32, @(foo:32, r2.w).b), er1
  609. test_h_gr32 0x12345698, er1 ; 153
  610. mova/w.l @(0x12345678:32, @(foo:32, er2.l).b), er1
  611. test_h_gr32 0x12345698, er1 ; 154
  612. mova/w.l @(0x12345678:32,@foo:16.b),er1
  613. test_h_gr32 0x1234567a, er1 ; 155
  614. mova/w.l @(0x12345678:32,@foo:32.b),er1
  615. test_h_gr32 0x1234567a, er1 ; 156
  616. t02t:
  617. mov.l #foo, er2
  618. mova/w.l @(0x12345678:32,@er2.w),er1 ;015F02B912345678
  619. test_h_gr32 0x1234587a, er1 ; 157
  620. mova/w.l @(0x12345678:32,@(0x2:2,er2).w),er1 ;015F12B912345678
  621. test_h_gr32 0x1234587a, er1 ; 162
  622. mova/w.l @(0x12345678:32,@er2+.w),er1 ;015F82B912345678
  623. test_h_gr32 0x1234587a, er1 ; 158
  624. test_h_gr32 foo+2, er2
  625. mova/w.l @(0x12345678:32,@-er2.w),er1 ;015FB2B912345678
  626. test_h_gr32 0x1234587a, er1 ; 161
  627. test_h_gr32 foo, er2
  628. mova/w.l @(0x12345678:32,@+er2.w),er1 ;015F92B912345678
  629. test_h_gr32 0x1234587a, er1 ; 160
  630. test_h_gr32 foo+2, er2
  631. mova/w.l @(0x12345678:32,@er2-.w),er1 ;015FA2B912345678
  632. test_h_gr32 0x1234587a, er1 ; 159
  633. test_h_gr32 foo, er2
  634. mov.l #4, er2
  635. mova/w.l @(0x12345678:32, @(foo:16, er2).w), er1
  636. test_h_gr32 0x12347698, er1 ; 163
  637. shar.l er2
  638. mova/w.l @(0x12345678:32, @(foo:16, r2L.b).w), er1
  639. test_h_gr32 0x12347698, er1 ; 165
  640. mova/w.l @(0x12345678:32, @(foo:16, r2.w).w), er1
  641. test_h_gr32 0x12347698, er1 ; 166
  642. mova/w.l @(0x12345678:32, @(foo:16, er2.l).w), er1
  643. test_h_gr32 0x12347698, er1 ; 167
  644. mov.l #4, er2
  645. mova/w.l @(0x12345678:32, @(foo:32, er2).w), er1
  646. test_h_gr32 0x12347698, er1 ; 164
  647. shar.l er2
  648. mova/w.l @(0x12345678:32, @(foo:32, r2L.b).w), er1
  649. test_h_gr32 0x12347698, er1 ; 168
  650. mova/w.l @(0x12345678:32, @(foo:32, r2.w).w), er1
  651. test_h_gr32 0x12347698, er1 ; 169
  652. mova/w.l @(0x12345678:32, @(foo:32, er2.l).w), er1
  653. test_h_gr32 0x12347698, er1 ; 170
  654. mova/w.l @(0x12345678:32,@foo:16.w),er1
  655. test_h_gr32 0x1234587a, er1 ; 171
  656. mova/w.l @(0x12345678:32,@foo:32.w),er1
  657. test_h_gr32 0x1234587a, er1 ; 172
  658. t02u:
  659. mov.l #foo, er2
  660. mova/l.l @(0x12345678:32,@er2.b),er1 ;017F02C912345678
  661. test_h_gr32 0x1234567c, er1 ; 173
  662. mova/l.l @(0x12345678:32,@(0x1:2,er2).b),er1 ;017F12C912345678
  663. test_h_gr32 0x1234567c, er1 ; 178
  664. mova/l.l @(0x12345678:32,@er2+.b),er1 ;017F82C912345678
  665. test_h_gr32 0x1234567c, er1 ; 174
  666. test_h_gr32 foo+1, er2
  667. mova/l.l @(0x12345678:32,@-er2.b),er1 ;017FB2C912345678
  668. test_h_gr32 0x1234567c, er1 ; 177
  669. test_h_gr32 foo, er2
  670. mova/l.l @(0x12345678:32,@+er2.b),er1 ;017F92C912345678
  671. test_h_gr32 0x1234567c, er1 ; 176
  672. test_h_gr32 foo+1, er2
  673. mova/l.l @(0x12345678:32,@er2-.b),er1 ;017FA2C912345678
  674. test_h_gr32 0x1234567c, er1 ; 175
  675. test_h_gr32 foo, er2
  676. mov.l #4, er2
  677. mova/l.l @(0x12345678:32, @(foo:16, er2).b), er1
  678. test_h_gr32 0x123456b8, er1 ; 179
  679. mova/l.l @(0x12345678:32, @(foo:16, r2L.b).b), er1
  680. test_h_gr32 0x123456b8, er1 ; 181
  681. mova/l.l @(0x12345678:32, @(foo:16, r2.w).b), er1
  682. test_h_gr32 0x123456b8, er1 ; 182
  683. mova/l.l @(0x12345678:32, @(foo:16, er2.l).b), er1
  684. test_h_gr32 0x123456b8, er1 ; 183
  685. mov.l #4, er2
  686. mova/l.l @(0x12345678:32, @(foo:32, er2).b), er1
  687. test_h_gr32 0x123456b8, er1 ; 180
  688. mova/l.l @(0x12345678:32, @(foo:32, r2L.b).b), er1
  689. test_h_gr32 0x123456b8, er1 ; 184
  690. mova/l.l @(0x12345678:32, @(foo:32, r2.w).b), er1
  691. test_h_gr32 0x123456b8, er1 ; 185
  692. mova/l.l @(0x12345678:32, @(foo:32, er2.l).b), er1
  693. test_h_gr32 0x123456b8, er1 ; 186
  694. mova/l.l @(0x12345678:32,@foo:16.b),er1
  695. test_h_gr32 0x1234567c, er1 ; 187
  696. mova/l.l @(0x12345678:32,@foo:32.b),er1
  697. test_h_gr32 0x1234567c, er1 ; 188
  698. t02v:
  699. mov.l #foo, er2
  700. mova/l.l @(0x12345678:32,@er2.w),er1 ;015F02D912345678
  701. test_h_gr32 0x12345a7c, er1 ; 189
  702. mova/l.l @(0x12345678:32,@(0x2:2,er2).w),er1 ;015F12D912345678
  703. test_h_gr32 0x12345a7c, er1 ; 194
  704. mova/l.l @(0x12345678:32,@er2+.w),er1 ;015F82D912345678
  705. test_h_gr32 0x12345a7c, er1 ; 190
  706. test_h_gr32 foo+2, er2
  707. mova/l.l @(0x12345678:32,@-er2.w),er1 ;015FB2D912345678
  708. test_h_gr32 0x12345a7c, er1 ; 193
  709. test_h_gr32 foo, er2
  710. mova/l.l @(0x12345678:32,@+er2.w),er1 ;015F92D912345678
  711. test_h_gr32 0x12345a7c, er1 ; 192
  712. test_h_gr32 foo+2, er2
  713. mova/l.l @(0x12345678:32,@er2-.w),er1 ;015FA2D912345678
  714. test_h_gr32 0x12345a7c, er1 ; 191
  715. test_h_gr32 foo, er2
  716. mov.l #4, er2
  717. mova/l.l @(0x12345678:32, @(foo:16, er2).w), er1
  718. test_h_gr32 0x123496b8, er1 ; 195
  719. shar.l er2
  720. mova/l.l @(0x12345678:32, @(foo:16, r2L.b).w), er1
  721. test_h_gr32 0x123496b8, er1 ; 197
  722. mova/l.l @(0x12345678:32, @(foo:16, r2.w).w), er1
  723. test_h_gr32 0x123496b8, er1 ; 198
  724. mova/l.l @(0x12345678:32, @(foo:16, er2.l).w), er1
  725. test_h_gr32 0x123496b8, er1 ; 199
  726. mov.l #4, er2
  727. mova/l.l @(0x12345678:32, @(foo:32, er2).w), er1
  728. test_h_gr32 0x123496b8, er1 ; 195
  729. shar.l er2
  730. mova/l.l @(0x12345678:32, @(foo:32, r2L.b).w), er1
  731. test_h_gr32 0x123496b8, er1 ; 197
  732. mova/l.l @(0x12345678:32, @(foo:32, r2.w).w), er1
  733. test_h_gr32 0x123496b8, er1 ; 198
  734. mova/l.l @(0x12345678:32, @(foo:32, er2.l).w), er1
  735. test_h_gr32 0x123496b8, er1 ; 199
  736. mova/l.l @(0x12345678:32,@foo:16.w),er1
  737. test_h_gr32 0x12345a7c, er1 ; 203
  738. mova/l.l @(0x12345678:32,@foo:32.w),er1
  739. test_h_gr32 0x12345a7c, er1 ; 204
  740. test_gr_a5a5 0
  741. test_h_gr32 2, er2
  742. test_h_gr32 0x01010101, er3
  743. test_gr_a5a5 4
  744. test_gr_a5a5 5
  745. test_gr_a5a5 6
  746. test_gr_a5a5 7
  747. pass
  748. exit 0