extl.s 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146
  1. # Hitachi H8 testcase 'exts.l, extu.l'
  2. # mach(): h8300h h8300s 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. start
  12. .data
  13. .align 4
  14. pos: .long 0xffff0001
  15. neg: .long 0x00008000
  16. pos2: .long 0xffffff01
  17. neg2: .long 0x00000080
  18. .text
  19. exts_l_reg32_p:
  20. set_grs_a5a5
  21. set_ccr_zero
  22. ;; exts.l ern32
  23. mov.w #1, r0
  24. exts.l er0
  25. ;; Test ccr H=0 N=0 Z=0 V=0 C=0
  26. test_cc_clear
  27. test_h_gr32 0x00000001 er0 ; result of sign extend
  28. test_gr_a5a5 1 ; Make sure other general regs not disturbed
  29. test_gr_a5a5 2
  30. test_gr_a5a5 3
  31. test_gr_a5a5 4
  32. test_gr_a5a5 5
  33. test_gr_a5a5 6
  34. test_gr_a5a5 7
  35. exts_l_reg32_n:
  36. set_grs_a5a5
  37. set_ccr_zero
  38. ;; exts.l ern32
  39. mov.w #0xffff, r0
  40. exts.l er0
  41. ;; Test ccr H=0 N=1 Z=0 V=0 C=0
  42. test_neg_set
  43. test_zero_clear
  44. test_ovf_clear
  45. test_carry_clear
  46. test_h_gr32 0xffffffff er0 ; result of sign extend
  47. test_gr_a5a5 1 ; Make sure other general regs not disturbed
  48. test_gr_a5a5 2
  49. test_gr_a5a5 3
  50. test_gr_a5a5 4
  51. test_gr_a5a5 5
  52. test_gr_a5a5 6
  53. test_gr_a5a5 7
  54. extu_l_reg32_n:
  55. set_grs_a5a5
  56. set_ccr_zero
  57. ;; extu.l ern32
  58. mov.w #0xffff, r0
  59. extu.l er0
  60. ;; Test ccr H=0 N=0 Z=0 V=0 C=0
  61. test_cc_clear
  62. test_h_gr32 0x0000ffff er0 ; result of zero extend
  63. test_gr_a5a5 1 ; Make sure other general regs not disturbed
  64. test_gr_a5a5 2
  65. test_gr_a5a5 3
  66. test_gr_a5a5 4
  67. test_gr_a5a5 5
  68. test_gr_a5a5 6
  69. test_gr_a5a5 7
  70. .if (sim_cpu == h8sx)
  71. exts_l_ind_p:
  72. set_grs_a5a5
  73. set_ccr_zero
  74. ;; exts.l @ern32
  75. mov.l #pos, er1
  76. exts.l @er1
  77. ;; Test ccr H=0 N=0 Z=0 V=0 C=0
  78. test_cc_clear
  79. test_h_gr32 pos er1 ; er1 still contains target address
  80. test_gr_a5a5 0 ; Make sure other general regs not disturbed
  81. test_gr_a5a5 2
  82. test_gr_a5a5 3
  83. test_gr_a5a5 4
  84. test_gr_a5a5 5
  85. test_gr_a5a5 6
  86. test_gr_a5a5 7
  87. cmp.l #0x00000001, @pos
  88. beq .Lslindp
  89. fail
  90. .Lslindp:
  91. mov.l #0xffff0001, @pos ; Restore initial value
  92. exts_l_ind_n:
  93. set_grs_a5a5
  94. set_ccr_zero
  95. ;; exts.l @ern32
  96. mov.l #neg, er1
  97. exts.l @er1
  98. ;; Test ccr H=0 N=1 Z=0 V=0 C=0
  99. test_neg_set
  100. test_zero_clear
  101. test_ovf_clear
  102. test_carry_clear
  103. test_h_gr32 neg er1 ; er1 still contains target address
  104. test_gr_a5a5 0 ; Make sure other general regs not disturbed
  105. test_gr_a5a5 2
  106. test_gr_a5a5 3
  107. test_gr_a5a5 4
  108. test_gr_a5a5 5
  109. test_gr_a5a5 6
  110. test_gr_a5a5 7
  111. cmp.l #0xffff8000, @neg
  112. beq .Lslindn
  113. fail
  114. .Lslindn:
  115. ;;; Note: leave the value as 0xffff8000, so that extu has work to do.
  116. extu_l_ind_n:
  117. set_grs_a5a5
  118. set_ccr_zero
  119. ;; extu.l @ern32
  120. mov.l #neg, er1
  121. extu.l @er1
  122. ;; Test ccr H=0 N=0 Z=0 V=0 C=0
  123. test_cc_clear
  124. test_h_gr32 neg er1 ; er1 still contains target address
  125. test_gr_a5a5 0 ; Make sure other general regs not disturbed
  126. test_gr_a5a5 2
  127. test_gr_a5a5 3
  128. test_gr_a5a5 4
  129. test_gr_a5a5 5
  130. test_gr_a5a5 6
  131. test_gr_a5a5 7
  132. cmp.l #0x00008000, @neg
  133. beq .Lulindn
  134. fail
  135. .Lulindn:
  136. ;;; Note: leave the value as 0x00008000, so that extu has work to do.
  137. exts_l_postinc_p:
  138. set_grs_a5a5
  139. set_ccr_zero
  140. ;; exts.l @ern32+
  141. mov.l #pos, er1
  142. exts.l @er1+
  143. ;; Test ccr H=0 N=0 Z=0 V=0 C=0
  144. test_cc_clear
  145. test_h_gr32 pos+4 er1 ; er1 still contains target address
  146. test_gr_a5a5 0 ; Make sure other general regs not disturbed
  147. test_gr_a5a5 2
  148. test_gr_a5a5 3
  149. test_gr_a5a5 4
  150. test_gr_a5a5 5
  151. test_gr_a5a5 6
  152. test_gr_a5a5 7
  153. cmp.l #0x00000001, @pos
  154. beq .Lslpostincp
  155. fail
  156. .Lslpostincp:
  157. mov.l #0xffff0001, @pos ; Restore initial value
  158. exts_l_postinc_n:
  159. set_grs_a5a5
  160. set_ccr_zero
  161. ;; exts.l @ern32+
  162. mov.l #neg, er1
  163. exts.l @er1+
  164. ;; Test ccr H=0 N=1 Z=0 V=0 C=0
  165. test_neg_set
  166. test_zero_clear
  167. test_ovf_clear
  168. test_carry_clear
  169. test_h_gr32 neg+4 er1 ; er1 still contains target address
  170. test_gr_a5a5 0 ; Make sure other general regs not disturbed
  171. test_gr_a5a5 2
  172. test_gr_a5a5 3
  173. test_gr_a5a5 4
  174. test_gr_a5a5 5
  175. test_gr_a5a5 6
  176. test_gr_a5a5 7
  177. cmp.l #0xffff8000, @neg
  178. beq .Lslpostincn
  179. fail
  180. .Lslpostincn:
  181. ;;; Note: leave the value as 0xffff8000, so that extu has work to do.
  182. extu_l_postinc_n:
  183. set_grs_a5a5
  184. set_ccr_zero
  185. ;; extu.l @ern32+
  186. mov.l #neg, er1
  187. extu.l @er1+
  188. ;; Test ccr H=0 N=0 Z=0 V=0 C=0
  189. test_cc_clear
  190. test_h_gr32 neg+4 er1 ; er1 still contains target address
  191. test_gr_a5a5 0 ; Make sure other general regs not disturbed
  192. test_gr_a5a5 2
  193. test_gr_a5a5 3
  194. test_gr_a5a5 4
  195. test_gr_a5a5 5
  196. test_gr_a5a5 6
  197. test_gr_a5a5 7
  198. cmp.l #0x00008000, @neg
  199. beq .Lulpostincn
  200. fail
  201. .Lulpostincn:
  202. ;;; Note: leave the value as 0x00008000, so that extu has work to do.
  203. exts_l_postdec_p:
  204. set_grs_a5a5
  205. set_ccr_zero
  206. ;; exts.l @ern32-
  207. mov.l #pos, er1
  208. exts.l @er1-
  209. ;; Test ccr H=0 N=0 Z=0 V=0 C=0
  210. test_cc_clear
  211. test_h_gr32 pos-4 er1 ; er1 still contains target address
  212. test_gr_a5a5 0 ; Make sure other general regs not disturbed
  213. test_gr_a5a5 2
  214. test_gr_a5a5 3
  215. test_gr_a5a5 4
  216. test_gr_a5a5 5
  217. test_gr_a5a5 6
  218. test_gr_a5a5 7
  219. cmp.l #0x00000001, @pos
  220. beq .Lslpostdecp
  221. fail
  222. .Lslpostdecp:
  223. mov.l #0xffff0001, @pos ; Restore initial value
  224. exts_l_postdec_n:
  225. set_grs_a5a5
  226. set_ccr_zero
  227. ;; exts.l @ern32-
  228. mov.l #neg, er1
  229. exts.l @er1-
  230. ;; Test ccr H=0 N=1 Z=0 V=0 C=0
  231. test_neg_set
  232. test_zero_clear
  233. test_ovf_clear
  234. test_carry_clear
  235. test_h_gr32 neg-4 er1 ; er1 still contains target address
  236. test_gr_a5a5 0 ; Make sure other general regs not disturbed
  237. test_gr_a5a5 2
  238. test_gr_a5a5 3
  239. test_gr_a5a5 4
  240. test_gr_a5a5 5
  241. test_gr_a5a5 6
  242. test_gr_a5a5 7
  243. cmp.l #0xffff8000, @neg
  244. beq .Lslpostdecn
  245. fail
  246. .Lslpostdecn:
  247. ;;; Note: leave the value as 0xffff8000, so that extu has work to do.
  248. extu_l_postdec_n:
  249. set_grs_a5a5
  250. set_ccr_zero
  251. ;; extu.l @ern32-
  252. mov.l #neg, er1
  253. extu.l @er1-
  254. ;; Test ccr H=0 N=0 Z=0 V=0 C=0
  255. test_cc_clear
  256. test_h_gr32 neg-4 er1 ; er1 still contains target address
  257. test_gr_a5a5 0 ; Make sure other general regs not disturbed
  258. test_gr_a5a5 2
  259. test_gr_a5a5 3
  260. test_gr_a5a5 4
  261. test_gr_a5a5 5
  262. test_gr_a5a5 6
  263. test_gr_a5a5 7
  264. cmp.l #0x00008000, @neg
  265. beq .Lulpostdecn
  266. fail
  267. .Lulpostdecn:
  268. ;;; Note: leave the value as 0x00008000, so that extu has work to do.
  269. exts_l_preinc_p:
  270. set_grs_a5a5
  271. set_ccr_zero
  272. ;; exts.l @+ern32
  273. mov.l #pos-4, er1
  274. exts.l @+er1
  275. ;; Test ccr H=0 N=0 Z=0 V=0 C=0
  276. test_cc_clear
  277. test_h_gr32 pos er1 ; er1 still contains target address
  278. test_gr_a5a5 0 ; Make sure other general regs not disturbed
  279. test_gr_a5a5 2
  280. test_gr_a5a5 3
  281. test_gr_a5a5 4
  282. test_gr_a5a5 5
  283. test_gr_a5a5 6
  284. test_gr_a5a5 7
  285. cmp.l #0x00000001, @pos
  286. beq .Lslpreincp
  287. fail
  288. .Lslpreincp:
  289. mov.l #0xffff0001, @pos ; Restore initial value
  290. exts_l_preinc_n:
  291. set_grs_a5a5
  292. set_ccr_zero
  293. ;; exts.l @+ern32
  294. mov.l #neg-4, er1
  295. exts.l @+er1
  296. ;; Test ccr H=0 N=1 Z=0 V=0 C=0
  297. test_neg_set
  298. test_zero_clear
  299. test_ovf_clear
  300. test_carry_clear
  301. test_h_gr32 neg er1 ; er1 still contains target address
  302. test_gr_a5a5 0 ; Make sure other general regs not disturbed
  303. test_gr_a5a5 2
  304. test_gr_a5a5 3
  305. test_gr_a5a5 4
  306. test_gr_a5a5 5
  307. test_gr_a5a5 6
  308. test_gr_a5a5 7
  309. cmp.l #0xffff8000, @neg
  310. beq .Lslpreincn
  311. fail
  312. .Lslpreincn:
  313. ;;; Note: leave the value as 0xffff8000, so that extu has work to do.
  314. extu_l_preinc_n:
  315. set_grs_a5a5
  316. set_ccr_zero
  317. ;; extu.l @+ern32
  318. mov.l #neg-4, er1
  319. extu.l @+er1
  320. ;; Test ccr H=0 N=0 Z=0 V=0 C=0
  321. test_cc_clear
  322. test_h_gr32 neg er1 ; er1 still contains target address
  323. test_gr_a5a5 0 ; Make sure other general regs not disturbed
  324. test_gr_a5a5 2
  325. test_gr_a5a5 3
  326. test_gr_a5a5 4
  327. test_gr_a5a5 5
  328. test_gr_a5a5 6
  329. test_gr_a5a5 7
  330. cmp.l #0x00008000, @neg
  331. beq .Lulpreincn
  332. fail
  333. .Lulpreincn:
  334. ;;; Note: leave the value as 0x00008000, so that extu has work to do.
  335. exts_l_predec_p:
  336. set_grs_a5a5
  337. set_ccr_zero
  338. ;; exts.l @-ern32
  339. mov.l #pos+4, er1
  340. exts.l @-er1
  341. ;; Test ccr H=0 N=0 Z=0 V=0 C=0
  342. test_cc_clear
  343. test_h_gr32 pos er1 ; er1 still contains target address
  344. test_gr_a5a5 0 ; Make sure other general regs not disturbed
  345. test_gr_a5a5 2
  346. test_gr_a5a5 3
  347. test_gr_a5a5 4
  348. test_gr_a5a5 5
  349. test_gr_a5a5 6
  350. test_gr_a5a5 7
  351. cmp.l #0x00000001, @pos
  352. beq .Lslpredecp
  353. fail
  354. .Lslpredecp:
  355. mov.l #0xffff0001, @pos ; Restore initial value
  356. exts_l_predec_n:
  357. set_grs_a5a5
  358. set_ccr_zero
  359. ;; exts.l @-ern32
  360. mov.l #neg+4, er1
  361. exts.l @-er1
  362. ;; Test ccr H=0 N=1 Z=0 V=0 C=0
  363. test_neg_set
  364. test_zero_clear
  365. test_ovf_clear
  366. test_carry_clear
  367. test_h_gr32 neg er1 ; er1 still contains target address
  368. test_gr_a5a5 0 ; Make sure other general regs not disturbed
  369. test_gr_a5a5 2
  370. test_gr_a5a5 3
  371. test_gr_a5a5 4
  372. test_gr_a5a5 5
  373. test_gr_a5a5 6
  374. test_gr_a5a5 7
  375. cmp.l #0xffff8000, @neg
  376. beq .Lslpredecn
  377. fail
  378. .Lslpredecn:
  379. ;;; Note: leave the value as 0xffff8000, so that extu has work to do.
  380. extu_l_predec_n:
  381. set_grs_a5a5
  382. set_ccr_zero
  383. ;; extu.l @-ern32
  384. mov.l #neg+4, er1
  385. extu.l @-er1
  386. ;; Test ccr H=0 N=0 Z=0 V=0 C=0
  387. test_cc_clear
  388. test_h_gr32 neg er1 ; er1 still contains target address
  389. test_gr_a5a5 0 ; Make sure other general regs not disturbed
  390. test_gr_a5a5 2
  391. test_gr_a5a5 3
  392. test_gr_a5a5 4
  393. test_gr_a5a5 5
  394. test_gr_a5a5 6
  395. test_gr_a5a5 7
  396. cmp.l #0x00008000, @neg
  397. beq .Lulpredecn
  398. fail
  399. .Lulpredecn:
  400. ;;; Note: leave the value as 0x00008000, so that extu has work to do.
  401. extu_l_disp2_n:
  402. set_grs_a5a5
  403. set_ccr_zero
  404. ;; extu.l @(dd:2, ern32)
  405. mov.l #neg-8, er1
  406. extu.l @(8:2, er1)
  407. ;; Test ccr H=0 N=0 Z=0 V=0 C=0
  408. test_cc_clear
  409. test_h_gr32 neg-8 er1 ; er1 still contains target address
  410. test_gr_a5a5 0 ; Make sure other general regs not disturbed
  411. test_gr_a5a5 2
  412. test_gr_a5a5 3
  413. test_gr_a5a5 4
  414. test_gr_a5a5 5
  415. test_gr_a5a5 6
  416. test_gr_a5a5 7
  417. cmp.l #0x00008000, @neg
  418. beq .Luldisp2n
  419. fail
  420. .Luldisp2n:
  421. ;;; Note: leave the value as 0x00008000, so that extu has work to do.
  422. extu_l_disp16_n:
  423. set_grs_a5a5
  424. set_ccr_zero
  425. ;; extu.l @(dd:16, ern32)
  426. mov.l #neg-44, er1
  427. extu.l @(44:16, er1)
  428. ;; Test ccr H=0 N=0 Z=0 V=0 C=0
  429. test_cc_clear
  430. test_h_gr32 neg-44 er1 ; er1 still contains target address
  431. test_gr_a5a5 0 ; Make sure other general regs not disturbed
  432. test_gr_a5a5 2
  433. test_gr_a5a5 3
  434. test_gr_a5a5 4
  435. test_gr_a5a5 5
  436. test_gr_a5a5 6
  437. test_gr_a5a5 7
  438. cmp.l #0x00008000, @neg
  439. beq .Luldisp16n
  440. fail
  441. .Luldisp16n:
  442. ;;; Note: leave the value as 0x00008000, so that extu has work to do.
  443. extu_l_disp32_n:
  444. set_grs_a5a5
  445. set_ccr_zero
  446. ;; extu.l @(dd:32, ern32)
  447. mov.l #neg+444, er1
  448. extu.l @(-444:32, er1)
  449. ;; Test ccr H=0 N=0 Z=0 V=0 C=0
  450. test_cc_clear
  451. test_h_gr32 neg+444 er1 ; er1 still contains target address
  452. test_gr_a5a5 0 ; Make sure other general regs not disturbed
  453. test_gr_a5a5 2
  454. test_gr_a5a5 3
  455. test_gr_a5a5 4
  456. test_gr_a5a5 5
  457. test_gr_a5a5 6
  458. test_gr_a5a5 7
  459. cmp.l #0x00008000, @neg
  460. beq .Luldisp32n
  461. fail
  462. .Luldisp32n:
  463. ;;; Note: leave the value as 0x00008000, so that extu has work to do.
  464. extu_l_abs16_n:
  465. set_grs_a5a5
  466. set_ccr_zero
  467. ;; extu.l @aa:16
  468. extu.l @neg:16
  469. ;; Test ccr H=0 N=0 Z=0 V=0 C=0
  470. test_cc_clear
  471. test_gr_a5a5 0 ; Make sure other general regs not disturbed
  472. test_gr_a5a5 1
  473. test_gr_a5a5 2
  474. test_gr_a5a5 3
  475. test_gr_a5a5 4
  476. test_gr_a5a5 5
  477. test_gr_a5a5 6
  478. test_gr_a5a5 7
  479. cmp.l #0x00008000, @neg
  480. beq .Lulabs16n
  481. fail
  482. .Lulabs16n:
  483. ;;; Note: leave the value as 0x00008000, so that extu has work to do.
  484. extu_l_abs32_n:
  485. set_grs_a5a5
  486. set_ccr_zero
  487. ;; extu.l @aa:32
  488. extu.l @neg:32
  489. ;; Test ccr H=0 N=0 Z=0 V=0 C=0
  490. test_cc_clear
  491. test_gr_a5a5 0 ; Make sure other general regs not disturbed
  492. test_gr_a5a5 1
  493. test_gr_a5a5 2
  494. test_gr_a5a5 3
  495. test_gr_a5a5 4
  496. test_gr_a5a5 5
  497. test_gr_a5a5 6
  498. test_gr_a5a5 7
  499. cmp.l #0x00008000, @neg
  500. beq .Lulabs32n
  501. fail
  502. .Lulabs32n:
  503. ;;; Note: leave the value as 0x00008000, so that extu has work to do.
  504. #
  505. # exts #2, nn
  506. #
  507. exts_l_reg32_2_p:
  508. set_grs_a5a5
  509. set_ccr_zero
  510. ;; exts.l #2, ern32
  511. mov.b #1, r0l
  512. exts.l #2, er0
  513. ;; Test ccr H=0 N=0 Z=0 V=0 C=0
  514. test_cc_clear
  515. test_h_gr32 0x00000001 er0 ; result of sign extend
  516. test_gr_a5a5 1 ; Make sure other general regs not disturbed
  517. test_gr_a5a5 2
  518. test_gr_a5a5 3
  519. test_gr_a5a5 4
  520. test_gr_a5a5 5
  521. test_gr_a5a5 6
  522. test_gr_a5a5 7
  523. exts_l_reg32_2_n:
  524. set_grs_a5a5
  525. set_ccr_zero
  526. ;; exts.l #2, ern32
  527. mov.b #0xff, r0l
  528. exts.l #2, er0
  529. ;; Test ccr H=0 N=1 Z=0 V=0 C=0
  530. test_neg_set
  531. test_ovf_clear
  532. test_zero_clear
  533. test_carry_clear
  534. test_h_gr32 0xffffffff er0 ; result of sign extend
  535. test_gr_a5a5 1 ; Make sure other general regs not disturbed
  536. test_gr_a5a5 2
  537. test_gr_a5a5 3
  538. test_gr_a5a5 4
  539. test_gr_a5a5 5
  540. test_gr_a5a5 6
  541. test_gr_a5a5 7
  542. extu_l_reg32_2_n:
  543. set_grs_a5a5
  544. set_ccr_zero
  545. ;; extu.l #2, ern32
  546. mov.b #0xff, r0l
  547. extu.l #2, er0
  548. ;; Test ccr H=0 N=0 Z=0 V=0 C=0
  549. test_cc_clear
  550. test_h_gr32 0x000000ff er0 ; result of zero extend
  551. test_gr_a5a5 1 ; Make sure other general regs not disturbed
  552. test_gr_a5a5 2
  553. test_gr_a5a5 3
  554. test_gr_a5a5 4
  555. test_gr_a5a5 5
  556. test_gr_a5a5 6
  557. test_gr_a5a5 7
  558. exts_l_ind_2_p:
  559. set_grs_a5a5
  560. set_ccr_zero
  561. ;; exts.l #2, @ern32
  562. mov.l #pos2, er1
  563. exts.l #2, @er1
  564. ;; Test ccr H=0 N=0 Z=0 V=0 C=0
  565. test_cc_clear
  566. test_h_gr32 pos2 er1 ; result of sign extend
  567. test_gr_a5a5 0 ; Make sure other general regs not disturbed
  568. test_gr_a5a5 2
  569. test_gr_a5a5 3
  570. test_gr_a5a5 4
  571. test_gr_a5a5 5
  572. test_gr_a5a5 6
  573. test_gr_a5a5 7
  574. cmp.l #0x00000001, @pos2
  575. beq .Lslindp2
  576. fail
  577. .Lslindp2:
  578. mov.l #0xffffff01, @pos2 ; Restore initial value
  579. exts_l_ind_2_n:
  580. set_grs_a5a5
  581. set_ccr_zero
  582. ;; exts.l #2, @ern32
  583. mov.l #neg2, er1
  584. exts.l #2, @er1
  585. ;; Test ccr H=0 N=1 Z=0 V=0 C=0
  586. test_neg_set
  587. test_ovf_clear
  588. test_zero_clear
  589. test_carry_clear
  590. test_h_gr32 neg2 er1 ; result of sign extend
  591. test_gr_a5a5 0 ; Make sure other general regs not disturbed
  592. test_gr_a5a5 2
  593. test_gr_a5a5 3
  594. test_gr_a5a5 4
  595. test_gr_a5a5 5
  596. test_gr_a5a5 6
  597. test_gr_a5a5 7
  598. cmp.l #0xffffff80, @neg2
  599. beq .Lslindn2
  600. fail
  601. .Lslindn2:
  602. ;;; Note: leave the value as 0xffffff80, so that extu has work to do.
  603. extu_l_ind_2_n:
  604. set_grs_a5a5
  605. set_ccr_zero
  606. ;; extu.l #2, @ern32
  607. mov.l #neg2, er1
  608. extu.l #2, @er1
  609. ;; Test ccr H=0 N=0 Z=0 V=0 C=0
  610. test_cc_clear
  611. test_h_gr32 neg2 er1 ; result of zero extend
  612. test_gr_a5a5 0 ; Make sure other general regs not disturbed
  613. test_gr_a5a5 2
  614. test_gr_a5a5 3
  615. test_gr_a5a5 4
  616. test_gr_a5a5 5
  617. test_gr_a5a5 6
  618. test_gr_a5a5 7
  619. cmp.l #0x00000080, @neg2
  620. beq .Lulindn2
  621. fail
  622. .Lulindn2:
  623. ;;; Note: leave the value as 0x00000080, like it started out.
  624. exts_l_postinc_2_p:
  625. set_grs_a5a5
  626. set_ccr_zero
  627. ;; exts.l #2, @ern32+
  628. mov.l #pos2, er1
  629. exts.l #2, @er1+
  630. ;; Test ccr H=0 N=0 Z=0 V=0 C=0
  631. test_cc_clear
  632. test_h_gr32 pos2+4 er1 ; result of sign extend
  633. test_gr_a5a5 0 ; Make sure other general regs not disturbed
  634. test_gr_a5a5 2
  635. test_gr_a5a5 3
  636. test_gr_a5a5 4
  637. test_gr_a5a5 5
  638. test_gr_a5a5 6
  639. test_gr_a5a5 7
  640. cmp.l #0x00000001, @pos2
  641. beq .Lslpostincp2
  642. fail
  643. .Lslpostincp2:
  644. mov.l #0xffffff01, @pos2 ; Restore initial value
  645. exts_l_postinc_2_n:
  646. set_grs_a5a5
  647. set_ccr_zero
  648. ;; exts.l #2, @ern32+
  649. mov.l #neg2, er1
  650. exts.l #2, @er1+
  651. ;; Test ccr H=0 N=1 Z=0 V=0 C=0
  652. test_neg_set
  653. test_ovf_clear
  654. test_zero_clear
  655. test_carry_clear
  656. test_h_gr32 neg2+4 er1 ; result of sign extend
  657. test_gr_a5a5 0 ; Make sure other general regs not disturbed
  658. test_gr_a5a5 2
  659. test_gr_a5a5 3
  660. test_gr_a5a5 4
  661. test_gr_a5a5 5
  662. test_gr_a5a5 6
  663. test_gr_a5a5 7
  664. cmp.l #0xffffff80, @neg2
  665. beq .Lslpostincn2
  666. fail
  667. .Lslpostincn2:
  668. ;;; Note: leave the value as 0xffffff80, so that extu has work to do.
  669. extu_l_postinc_2_n:
  670. set_grs_a5a5
  671. set_ccr_zero
  672. ;; extu.l #2, @ern32+
  673. mov.l #neg2, er1
  674. extu.l #2, @er1+
  675. ;; Test ccr H=0 N=0 Z=0 V=0 C=0
  676. test_cc_clear
  677. test_h_gr32 neg2+4 er1 ; result of zero extend
  678. test_gr_a5a5 0 ; Make sure other general regs not disturbed
  679. test_gr_a5a5 2
  680. test_gr_a5a5 3
  681. test_gr_a5a5 4
  682. test_gr_a5a5 5
  683. test_gr_a5a5 6
  684. test_gr_a5a5 7
  685. cmp.l #0x00000080, @neg2
  686. beq .Lulpostincn2
  687. fail
  688. .Lulpostincn2:
  689. ;;; Note: leave the value as 0x00000080, like it started out.
  690. exts_l_postdec_2_p:
  691. set_grs_a5a5
  692. set_ccr_zero
  693. ;; exts.l #2, @ern32-
  694. mov.l #pos2, er1
  695. exts.l #2, @er1-
  696. ;; Test ccr H=0 N=0 Z=0 V=0 C=0
  697. test_cc_clear
  698. test_h_gr32 pos2-4 er1 ; result of sign extend
  699. test_gr_a5a5 0 ; Make sure other general regs not disturbed
  700. test_gr_a5a5 2
  701. test_gr_a5a5 3
  702. test_gr_a5a5 4
  703. test_gr_a5a5 5
  704. test_gr_a5a5 6
  705. test_gr_a5a5 7
  706. cmp.l #0x00000001, @pos2
  707. beq .Lslpostdecp2
  708. fail
  709. .Lslpostdecp2:
  710. mov.l #0xffffff01, @pos2 ; Restore initial value
  711. exts_l_postdec_2_n:
  712. set_grs_a5a5
  713. set_ccr_zero
  714. ;; exts.l #2, @ern32-
  715. mov.l #neg2, er1
  716. exts.l #2, @er1-
  717. ;; Test ccr H=0 N=1 Z=0 V=0 C=0
  718. test_neg_set
  719. test_ovf_clear
  720. test_zero_clear
  721. test_carry_clear
  722. test_h_gr32 neg2-4 er1 ; result of sign extend
  723. test_gr_a5a5 0 ; Make sure other general regs not disturbed
  724. test_gr_a5a5 2
  725. test_gr_a5a5 3
  726. test_gr_a5a5 4
  727. test_gr_a5a5 5
  728. test_gr_a5a5 6
  729. test_gr_a5a5 7
  730. cmp.l #0xffffff80, @neg2
  731. beq .Lslpostdecn2
  732. fail
  733. .Lslpostdecn2:
  734. ;;; Note: leave the value as 0xffffff80, so that extu has work to do.
  735. extu_l_postdec_2_n:
  736. set_grs_a5a5
  737. set_ccr_zero
  738. ;; extu.l #2, @ern32-
  739. mov.l #neg2, er1
  740. extu.l #2, @er1-
  741. ;; Test ccr H=0 N=0 Z=0 V=0 C=0
  742. test_cc_clear
  743. test_h_gr32 neg2-4 er1 ; result of zero extend
  744. test_gr_a5a5 0 ; Make sure other general regs not disturbed
  745. test_gr_a5a5 2
  746. test_gr_a5a5 3
  747. test_gr_a5a5 4
  748. test_gr_a5a5 5
  749. test_gr_a5a5 6
  750. test_gr_a5a5 7
  751. cmp.l #0x00000080, @neg2
  752. beq .Lulpostdecn2
  753. fail
  754. .Lulpostdecn2:
  755. ;;; Note: leave the value as 0x00000080, like it started out.
  756. exts_l_preinc_2_p:
  757. set_grs_a5a5
  758. set_ccr_zero
  759. ;; exts.l #2, @+ern32
  760. mov.l #pos2-4, er1
  761. exts.l #2, @+er1
  762. ;; Test ccr H=0 N=0 Z=0 V=0 C=0
  763. test_cc_clear
  764. test_h_gr32 pos2 er1 ; result of sign extend
  765. test_gr_a5a5 0 ; Make sure other general regs not disturbed
  766. test_gr_a5a5 2
  767. test_gr_a5a5 3
  768. test_gr_a5a5 4
  769. test_gr_a5a5 5
  770. test_gr_a5a5 6
  771. test_gr_a5a5 7
  772. cmp.l #0x00000001, @pos2
  773. beq .Lslpreincp2
  774. fail
  775. .Lslpreincp2:
  776. mov.l #0xffffff01, @pos2 ; Restore initial value
  777. exts_l_preinc_2_n:
  778. set_grs_a5a5
  779. set_ccr_zero
  780. ;; exts.l #2, @+ern32
  781. mov.l #neg2-4, er1
  782. exts.l #2, @+er1
  783. ;; Test ccr H=0 N=1 Z=0 V=0 C=0
  784. test_neg_set
  785. test_ovf_clear
  786. test_zero_clear
  787. test_carry_clear
  788. test_h_gr32 neg2 er1 ; result of sign extend
  789. test_gr_a5a5 0 ; Make sure other general regs not disturbed
  790. test_gr_a5a5 2
  791. test_gr_a5a5 3
  792. test_gr_a5a5 4
  793. test_gr_a5a5 5
  794. test_gr_a5a5 6
  795. test_gr_a5a5 7
  796. cmp.l #0xffffff80, @neg2
  797. beq .Lslpreincn2
  798. fail
  799. .Lslpreincn2:
  800. ;;; Note: leave the value as 0xffffff80, so that extu has work to do.
  801. extu_l_preinc_2_n:
  802. set_grs_a5a5
  803. set_ccr_zero
  804. ;; extu.l #2, @+ern32
  805. mov.l #neg2-4, er1
  806. extu.l #2, @+er1
  807. ;; Test ccr H=0 N=0 Z=0 V=0 C=0
  808. test_cc_clear
  809. test_h_gr32 neg2 er1 ; result of zero extend
  810. test_gr_a5a5 0 ; Make sure other general regs not disturbed
  811. test_gr_a5a5 2
  812. test_gr_a5a5 3
  813. test_gr_a5a5 4
  814. test_gr_a5a5 5
  815. test_gr_a5a5 6
  816. test_gr_a5a5 7
  817. cmp.l #0x00000080, @neg2
  818. beq .Lulpreincn2
  819. fail
  820. .Lulpreincn2:
  821. ;;; Note: leave the value as 0x00000080, like it started out.
  822. exts_l_predec_2_p:
  823. set_grs_a5a5
  824. set_ccr_zero
  825. ;; exts.l #2, @-ern32
  826. mov.l #pos2+4, er1
  827. exts.l #2, @-er1
  828. ;; Test ccr H=0 N=0 Z=0 V=0 C=0
  829. test_cc_clear
  830. test_h_gr32 pos2 er1 ; result of sign extend
  831. test_gr_a5a5 0 ; Make sure other general regs not disturbed
  832. test_gr_a5a5 2
  833. test_gr_a5a5 3
  834. test_gr_a5a5 4
  835. test_gr_a5a5 5
  836. test_gr_a5a5 6
  837. test_gr_a5a5 7
  838. cmp.l #0x00000001, @pos2
  839. beq .Lslpredecp2
  840. fail
  841. .Lslpredecp2:
  842. mov.l #0xffffff01, @pos2 ; Restore initial value
  843. exts_l_predec_2_n:
  844. set_grs_a5a5
  845. set_ccr_zero
  846. ;; exts.l #2, @-ern32
  847. mov.l #neg2+4, er1
  848. exts.l #2, @-er1
  849. ;; Test ccr H=0 N=1 Z=0 V=0 C=0
  850. test_neg_set
  851. test_ovf_clear
  852. test_zero_clear
  853. test_carry_clear
  854. test_h_gr32 neg2 er1 ; result of sign extend
  855. test_gr_a5a5 0 ; Make sure other general regs not disturbed
  856. test_gr_a5a5 2
  857. test_gr_a5a5 3
  858. test_gr_a5a5 4
  859. test_gr_a5a5 5
  860. test_gr_a5a5 6
  861. test_gr_a5a5 7
  862. cmp.l #0xffffff80, @neg2
  863. beq .Lslpredecn2
  864. fail
  865. .Lslpredecn2:
  866. ;;; Note: leave the value as 0xffffff80, so that extu has work to do.
  867. extu_l_predec_2_n:
  868. set_grs_a5a5
  869. set_ccr_zero
  870. ;; extu.l #2, @-ern32
  871. mov.l #neg2+4, er1
  872. extu.l #2, @-er1
  873. ;; Test ccr H=0 N=0 Z=0 V=0 C=0
  874. test_cc_clear
  875. test_h_gr32 neg2 er1 ; result of zero extend
  876. test_gr_a5a5 0 ; Make sure other general regs not disturbed
  877. test_gr_a5a5 2
  878. test_gr_a5a5 3
  879. test_gr_a5a5 4
  880. test_gr_a5a5 5
  881. test_gr_a5a5 6
  882. test_gr_a5a5 7
  883. cmp.l #0x00000080, @neg2
  884. beq .Lulpredecn2
  885. fail
  886. .Lulpredecn2:
  887. ;;; Note: leave the value as 0x00000080, like it started out.
  888. extu_l_disp2_2_n:
  889. set_grs_a5a5
  890. set_ccr_zero
  891. ;; extu.l #2, @(dd:2, ern32)
  892. mov.l #neg2-8, er1
  893. extu.l #2, @(8:2, er1)
  894. ;; Test ccr H=0 N=0 Z=0 V=0 C=0
  895. test_cc_clear
  896. test_h_gr32 neg2-8 er1 ; result of zero extend
  897. test_gr_a5a5 0 ; Make sure other general regs not disturbed
  898. test_gr_a5a5 2
  899. test_gr_a5a5 3
  900. test_gr_a5a5 4
  901. test_gr_a5a5 5
  902. test_gr_a5a5 6
  903. test_gr_a5a5 7
  904. cmp.l #0x00000080, @neg2
  905. beq .Luldisp2n2
  906. fail
  907. .Luldisp2n2:
  908. ;;; Note: leave the value as 0x00000080, like it started out.
  909. extu_l_disp16_2_n:
  910. set_grs_a5a5
  911. set_ccr_zero
  912. ;; extu.l #2, @(dd:16, ern32)
  913. mov.l #neg2-44, er1
  914. extu.l #2, @(44:16, er1)
  915. ;; Test ccr H=0 N=0 Z=0 V=0 C=0
  916. test_cc_clear
  917. test_h_gr32 neg2-44 er1 ; result of zero extend
  918. test_gr_a5a5 0 ; Make sure other general regs not disturbed
  919. test_gr_a5a5 2
  920. test_gr_a5a5 3
  921. test_gr_a5a5 4
  922. test_gr_a5a5 5
  923. test_gr_a5a5 6
  924. test_gr_a5a5 7
  925. cmp.l #0x00000080, @neg2
  926. beq .Luldisp16n2
  927. fail
  928. .Luldisp16n2:
  929. ;;; Note: leave the value as 0x00000080, like it started out.
  930. extu_l_disp32_2_n:
  931. set_grs_a5a5
  932. set_ccr_zero
  933. ;; extu.l #2, @(dd:32, ern32)
  934. mov.l #neg2+444, er1
  935. extu.l #2, @(-444:32, er1)
  936. ;; Test ccr H=0 N=0 Z=0 V=0 C=0
  937. test_cc_clear
  938. test_h_gr32 neg2+444 er1 ; result of zero extend
  939. test_gr_a5a5 0 ; Make sure other general regs not disturbed
  940. test_gr_a5a5 2
  941. test_gr_a5a5 3
  942. test_gr_a5a5 4
  943. test_gr_a5a5 5
  944. test_gr_a5a5 6
  945. test_gr_a5a5 7
  946. cmp.l #0x00000080, @neg2
  947. beq .Luldisp32n2
  948. fail
  949. .Luldisp32n2:
  950. ;;; Note: leave the value as 0x00000080, like it started out.
  951. extu_l_abs16_2_n:
  952. set_grs_a5a5
  953. set_ccr_zero
  954. ;; extu.l #2, @aa:16
  955. extu.l #2, @neg2:16
  956. ;; Test ccr H=0 N=0 Z=0 V=0 C=0
  957. test_cc_clear
  958. test_gr_a5a5 0 ; Make sure other general regs not disturbed
  959. test_gr_a5a5 1
  960. test_gr_a5a5 2
  961. test_gr_a5a5 3
  962. test_gr_a5a5 4
  963. test_gr_a5a5 5
  964. test_gr_a5a5 6
  965. test_gr_a5a5 7
  966. cmp.l #0x00000080, @neg2
  967. beq .Lulabs16n2
  968. fail
  969. .Lulabs16n2:
  970. ;;; Note: leave the value as 0x00000080, like it started out.
  971. extu_l_abs32_2_n:
  972. set_grs_a5a5
  973. set_ccr_zero
  974. ;; extu.l #2, @aa:32
  975. extu.l #2, @neg2:32
  976. ;; Test ccr H=0 N=0 Z=0 V=0 C=0
  977. test_cc_clear
  978. test_gr_a5a5 0 ; Make sure other general regs not disturbed
  979. test_gr_a5a5 1
  980. test_gr_a5a5 2
  981. test_gr_a5a5 3
  982. test_gr_a5a5 4
  983. test_gr_a5a5 5
  984. test_gr_a5a5 6
  985. test_gr_a5a5 7
  986. cmp.l #0x00000080, @neg2
  987. beq .Lulabs32n2
  988. fail
  989. .Lulabs32n2:
  990. ;;; Note: leave the value as 0x00000080, like it started out.
  991. .endif
  992. pass
  993. exit 0