c_ldstpmod_ld_h_xh.s 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458
  1. //Original:testcases/core/c_ldstpmod_ld_h_xh/c_ldstpmod_ld_h_xh.dsp
  2. // Spec Reference: c_ldstpmod load dreg h & xh
  3. # mach: bfin
  4. .include "testutils.inc"
  5. start
  6. // set all regs
  7. init_i_regs 0;
  8. init_b_regs 0;
  9. init_l_regs 0;
  10. init_m_regs 0;
  11. INIT_R_REGS 0;
  12. I0 = P3;
  13. I2 = SP;
  14. // initial values
  15. P1 = 0x0002;
  16. P2 = 0x0002;
  17. P3 = 0x0002;
  18. P4 = 0x0002;
  19. FP = 0x0002;
  20. SP = 0x0002;
  21. I1 = P3; P3 = I0; I3 = SP; SP = I2;
  22. loadsym p5, DATA_ADDR_1, 0x00;
  23. P3 = I1; SP = I3;
  24. R0 = W [ P5 ++ P1 ] (Z);
  25. R1 = W [ P5 ++ P1 ] (Z);
  26. R2 = W [ P5 ++ P2 ] (Z);
  27. R3 = W [ P5 ++ P3 ] (Z);
  28. R4 = W [ P5 ++ P4 ] (Z);
  29. R5 = W [ P5 ++ SP ] (Z);
  30. R6 = W [ P5 ++ FP ] (Z);
  31. CHECKREG r0, 0x0000A203;
  32. CHECKREG r1, 0x00000001;
  33. CHECKREG r2, 0x0000B607;
  34. CHECKREG r3, 0x00009405;
  35. CHECKREG r4, 0x00000A0B;
  36. CHECKREG r5, 0x00000809;
  37. CHECKREG r6, 0x0000CE0F;
  38. // initial values
  39. P5 = 0x0002;
  40. P2 = 0x0002;
  41. P3 = 0x0004;
  42. P4 = 0x0004;
  43. FP = 0x0004;
  44. SP = 0x0004;
  45. I1 = P3; P3 = I0; I3 = SP; SP = I2;
  46. loadsym p1, DATA_ADDR_1, 0x00;
  47. P3 = I1; SP = I3;
  48. R0 = W [ P1 ++ P5 ] (X);
  49. R1 = W [ P1 ++ P2 ] (X);
  50. R2 = W [ P1 ++ P2 ] (X);
  51. R3 = W [ P1 ++ P3 ] (X);
  52. R4 = W [ P1 ++ P4 ] (X);
  53. R5 = W [ P1 ++ SP ] (X);
  54. R6 = W [ P1 ++ FP ] (X);
  55. CHECKREG r0, 0xFFFFA203;
  56. CHECKREG r1, 0x00000001;
  57. CHECKREG r2, 0xFFFFB607;
  58. CHECKREG r3, 0xFFFF9405;
  59. CHECKREG r4, 0x00000809;
  60. CHECKREG r5, 0xFFFFAC0D;
  61. CHECKREG r6, 0x00001011;
  62. // initial values
  63. P5 = 0x0002;
  64. P1 = 0x0002;
  65. P3 = 0x0002;
  66. P4 = 0x0004;
  67. FP = 0x0006;
  68. SP = 0x0002;
  69. I1 = P3; P3 = I0; I3 = SP; SP = I2;
  70. loadsym p2, DATA_ADDR_3, 0x06;
  71. P3 = I1; SP = I3;
  72. R0 = W [ P2 ++ P5 ] (Z);
  73. R1 = W [ P2 ++ P1 ] (Z);
  74. R2 = W [ P2 ++ P2 ] (Z);
  75. R3 = W [ P2 ++ P3 ] (Z);
  76. R4 = W [ P2 ++ P4 ] (Z);
  77. R5 = W [ P2 ++ SP ] (Z);
  78. R6 = W [ P2 ++ FP ] (Z);
  79. CHECKREG r0, 0x00008445;
  80. CHECKREG r1, 0x00004A4B;
  81. CHECKREG r2, 0x00004849;
  82. CHECKREG r3, 0x00004849;
  83. CHECKREG r4, 0x00004E4F;
  84. CHECKREG r5, 0x00005253;
  85. CHECKREG r6, 0x00005051;
  86. // initial values
  87. P5 = 0x0004;
  88. P1 = 0x0002;
  89. P2 = 0x0002;
  90. P4 = 0x0004;
  91. FP = 0x1002 (X);
  92. SP = 0x0002;
  93. I1 = P3; P3 = I0; I3 = SP; SP = I2;
  94. loadsym i1, DATA_ADDR_1, 0x02;
  95. P3 = I1; SP = I3;
  96. R0 = W [ P3 ++ P5 ] (X);
  97. R1 = W [ P3 ++ P1 ] (X);
  98. R2 = W [ P3 ++ P2 ] (X);
  99. R3 = W [ P3 ++ P3 ] (X);
  100. R4 = W [ P3 ++ P4 ] (X);
  101. R5 = W [ P3 ++ SP ] (X);
  102. R6 = W [ P3 ++ FP ] (X);
  103. CHECKREG r0, 0x00000001;
  104. CHECKREG r1, 0xFFFF9405;
  105. CHECKREG r2, 0x00000A0B;
  106. CHECKREG r3, 0x00000809;
  107. CHECKREG r4, 0x00000809;
  108. CHECKREG r5, 0xFFFFAC0D;
  109. CHECKREG r6, 0x00001213;
  110. // initial values
  111. P5 = 0x0002;
  112. P1 = 0x0002;
  113. P2 = 0x0002;
  114. P3 = 0x0002;
  115. FP = 0x0002;
  116. SP = 0x0002;
  117. I1 = P3; P3 = I0; I3 = SP; SP = I2;
  118. loadsym p4, DATA_ADDR_2, 0x00;
  119. P3 = I1; SP = I3;
  120. R0 = W [ P4 ++ P5 ] (Z);
  121. R1 = W [ P4 ++ P1 ] (X);
  122. R2 = W [ P4 ++ P2 ] (X);
  123. R3 = W [ P4 ++ P3 ] (Z);
  124. R4 = W [ P4 ++ P4 ] (Z);
  125. R5 = W [ P4 ++ SP ] (X);
  126. R6 = W [ P4 ++ FP ] (X);
  127. CHECKREG r0, 0x00002223;
  128. CHECKREG r1, 0x00002021;
  129. CHECKREG r2, 0x00002627;
  130. CHECKREG r3, 0x0000A425;
  131. CHECKREG r4, 0x00002A2B;
  132. CHECKREG r5, 0x00002A2B;
  133. CHECKREG r6, 0xFFFF8829;
  134. // initial values
  135. P5 = 0x0000;
  136. P1 = 0x0002;
  137. P2 = 0x0002;
  138. P3 = 0x0002;
  139. P4 = 0x0002;
  140. SP = 0x0004;
  141. I1 = P3; P3 = I0; I3 = SP; SP = I2;
  142. loadsym fp, DATA_ADDR_1, 0x02;
  143. P3 = I1; SP = I3;
  144. R0 = W [ FP ++ P5 ] (X);
  145. R1 = W [ FP ++ P1 ] (X);
  146. R2 = W [ FP ++ P2 ] (X);
  147. R3 = W [ FP ++ P3 ] (X);
  148. R4 = W [ FP ++ P4 ] (Z);
  149. R5 = W [ FP ++ SP ] (Z);
  150. R6 = W [ FP ++ FP ] (X);
  151. CHECKREG r0, 0x00000001;
  152. CHECKREG r1, 0x00000001;
  153. CHECKREG r2, 0xFFFFB607;
  154. CHECKREG r3, 0xFFFF9405;
  155. CHECKREG r4, 0x00000A0B;
  156. CHECKREG r5, 0x00000809;
  157. CHECKREG r6, 0xFFFFAC0D;
  158. // initial values
  159. P5 = 0x0000;
  160. P1 = 0x0002;
  161. P2 = 0x0002;
  162. P3 = 0x0002;
  163. P4 = 0x0002;
  164. FP = 0x0002;
  165. I1 = P3; P3 = I0; I3 = SP; SP = I2;
  166. loadsym i3, DATA_ADDR_1, 0x04;
  167. P3 = I1; SP = I3;
  168. R0 = W [ SP ++ P5 ] (Z);
  169. R1 = W [ SP ++ P1 ] (X);
  170. R2 = W [ SP ++ P2 ] (Z);
  171. R3 = W [ SP ++ P3 ] (X);
  172. R4 = W [ SP ++ P4 ] (Z);
  173. R5 = W [ SP ++ P1 ] (X);
  174. R6 = W [ SP ++ FP ] (Z);
  175. CHECKREG r0, 0x0000B607;
  176. CHECKREG r1, 0xFFFFB607;
  177. CHECKREG r2, 0x00009405;
  178. CHECKREG r3, 0x00000A0B;
  179. CHECKREG r4, 0x00000809;
  180. CHECKREG r5, 0xFFFFCE0F;
  181. CHECKREG r6, 0x0000AC0D;
  182. P3 = I0; SP = I2;
  183. pass
  184. // Pre-load memory with known data
  185. // More data is defined than will actually be used
  186. .data
  187. .space (0x2000);
  188. DATA_ADDR_1:
  189. .dd 0x0001a203
  190. .dd 0x9405b607
  191. .dd 0x08090A0B
  192. .dd 0xaC0DcE0F
  193. .dd 0x10111213
  194. .dd 0xb415c617
  195. .dd 0x18191A1B
  196. .dd 0x1C1D1E1F
  197. .dd 0x11223344
  198. .dd 0x55667788
  199. .dd 0x99717273
  200. .dd 0x74757677
  201. .dd 0x82838485
  202. .dd 0x86878889
  203. .dd 0x80818283
  204. .dd 0x84858687
  205. .dd 0x01020304
  206. .dd 0xa5060708
  207. .dd 0x09101112
  208. .dd 0x14151617
  209. .dd 0xc8192021
  210. .dd 0x22232425
  211. .dd 0x26272829
  212. .dd 0xb0313233
  213. .dd 0x34353637
  214. .dd 0xd8394041
  215. .dd 0x42434445
  216. .dd 0x46474849
  217. .dd 0xf0515253
  218. .dd 0x54555657
  219. .dd 0xe8596061
  220. .dd 0x62636465
  221. .dd 0xf6676869
  222. .dd 0x74555657
  223. .dd 0xa8596067
  224. .dd 0x72636467
  225. .dd 0x76676867
  226. DATA_ADDR_2:
  227. .dd 0x20212223
  228. .dd 0xa4252627
  229. .dd 0x88292A2B
  230. .dd 0x2C2D2E2F
  231. .dd 0x30313233
  232. .dd 0x34353637
  233. .dd 0x38393A3B
  234. .dd 0x3C3D3E3F
  235. .dd 0x91929394
  236. .dd 0x95969798
  237. .dd 0x99A1A2A3
  238. .dd 0xA5A6A7A8
  239. .dd 0xA9B0B1B2
  240. .dd 0xB3B4B5B6
  241. .dd 0xB7B8B9C0
  242. .dd 0x70717273
  243. .dd 0x74757677
  244. .dd 0x78798081
  245. .dd 0x82838485
  246. .dd 0x86C283C4
  247. .dd 0x81C283C4
  248. .dd 0x82C283C4
  249. .dd 0x83C283C4
  250. .dd 0x84C283C4
  251. .dd 0x85C283C4
  252. .dd 0x86C283C4
  253. .dd 0x87C288C4
  254. .dd 0x88C283C4
  255. .dd 0x89C283C4
  256. .dd 0x80C283C4
  257. .dd 0x81C283C4
  258. .dd 0x82C288C4
  259. .dd 0x94555659
  260. .dd 0x98596069
  261. .dd 0x92636469
  262. .dd 0x96676869
  263. DATA_ADDR_3:
  264. .dd 0x40414243
  265. .dd 0x84454647
  266. .dd 0x48494A4B
  267. .dd 0x9C4D4E4F
  268. .dd 0x50515253
  269. .dd 0xa4555657
  270. .dd 0xb8595A5B
  271. .dd 0xC5C6C7C8
  272. .dd 0xC9CACBCD
  273. .dd 0xCFD0D1D2
  274. .dd 0xD3D4D5D6
  275. .dd 0xD7D8D9DA
  276. .dd 0xDBDCDDDE
  277. .dd 0xDFE0E1E2
  278. .dd 0xE3E4E5E6
  279. .dd 0x91E899EA
  280. .dd 0x92E899EA
  281. .dd 0x93E899EA
  282. .dd 0x94E899EA
  283. .dd 0x95E899EA
  284. .dd 0x96E899EA
  285. .dd 0x97E899EA
  286. .dd 0x98E899EA
  287. .dd 0x99E899EA
  288. .dd 0x91E899EA
  289. .dd 0x92E899EA
  290. .dd 0x93E899EA
  291. .dd 0x94E899EA
  292. .dd 0x95E899EA
  293. .dd 0x96E899EA
  294. .dd 0x977899EA
  295. .dd 0xa455565a
  296. .dd 0xa859606a
  297. .dd 0xa263646a
  298. .dd 0xa667686a
  299. DATA_ADDR_4:
  300. .dd 0x90616263
  301. .dd 0x64656667
  302. .dd 0xa8696A6B
  303. .dd 0x6C6D6E6F
  304. .dd 0x70717273
  305. .dd 0xd4757677
  306. .dd 0x78797A7B
  307. .dd 0x7C7D7E7F
  308. .dd 0xEBECEDEE
  309. .dd 0xF3F4F5F6
  310. .dd 0xF7F8F9FA
  311. .dd 0xFBFCFDFE
  312. .dd 0xFF000102
  313. .dd 0x03040506
  314. .dd 0x0708090A
  315. .dd 0x0B0CAD0E
  316. .dd 0xAB0CAD01
  317. .dd 0xAB0CAD02
  318. .dd 0xAB0CAD03
  319. .dd 0xAB0CAD04
  320. .dd 0xAB0CAD05
  321. .dd 0xAB0CAD06
  322. .dd 0xAB0CAA07
  323. .dd 0xAB0CAD08
  324. .dd 0xAB0CAD09
  325. .dd 0xA00CAD1E
  326. .dd 0xA10CAD2E
  327. .dd 0xA20CAD3E
  328. .dd 0xA30CAD4E
  329. .dd 0xA40CAD5E
  330. .dd 0xA50CAD6E
  331. .dd 0xA60CAD7E
  332. .dd 0xB455565B
  333. .dd 0xB859606B
  334. .dd 0xB263646B
  335. .dd 0xB667686B
  336. DATA_ADDR_5:
  337. .dd 0x80818283
  338. .dd 0x84858687
  339. .dd 0x08898A8B
  340. .dd 0x8C8D8E8F
  341. .dd 0x90919293
  342. .dd 0x54959697
  343. .dd 0x98999A9B
  344. .dd 0x9C9D9E9F
  345. .dd 0x0F101213
  346. .dd 0x14151617
  347. .dd 0x18191A1B
  348. .dd 0x1C1D1E1F
  349. .dd 0x20212223
  350. .dd 0x24252627
  351. .dd 0x28292A2B
  352. .dd 0x2C2D2E2F
  353. .dd 0xBC0DBE21
  354. .dd 0xBC1DBE22
  355. .dd 0xBC2DBE23
  356. .dd 0xBC3DBE24
  357. .dd 0xBC4DBE65
  358. .dd 0xBC5DBE27
  359. .dd 0xBC6DBE28
  360. .dd 0xBC7DBE29
  361. .dd 0xBC8DBE2F
  362. .dd 0xBC9DBE20
  363. .dd 0xBCADBE21
  364. .dd 0xBCBDBE2F
  365. .dd 0xBCCDBE23
  366. .dd 0xBCDDBE24
  367. .dd 0xBCFDBE25
  368. .dd 0xC455565C
  369. .dd 0xC859606C
  370. .dd 0xC263646C
  371. .dd 0xC667686C
  372. .dd 0xCC0DBE2C
  373. DATA_ADDR_6:
  374. .dd 0x00010203
  375. .dd 0xa4050607
  376. .dd 0x08090A0B
  377. .dd 0xfC0D0E0F
  378. .dd 0x10111213
  379. .dd 0x14151617
  380. .dd 0x98191A1B
  381. .dd 0x1C1D1E1F
  382. .dd 0x20212223
  383. .dd 0x74252627
  384. .dd 0x28292A2B
  385. .dd 0x8C2D2E2F
  386. .dd 0x30313233
  387. .dd 0x34353637
  388. .dd 0x98393A3B
  389. .dd 0x3C3D3E3F
  390. .dd 0xb0414243
  391. .dd 0x44454647
  392. .dd 0x48494A4B
  393. .dd 0xdC4D4E4F
  394. .dd 0x50515253
  395. .dd 0x94555657
  396. .dd 0x58595A5B
  397. .dd 0x5C5D5E5F
  398. .dd 0xf0616263
  399. .dd 0xf4656667
  400. .dd 0xf8696A6B
  401. .dd 0x6C6D6E6F
  402. .dd 0x70717273
  403. .dd 0x74757677
  404. .dd 0x78797A7B
  405. .dd 0x7C7D7E7F
  406. DATA_ADDR_7:
  407. .dd 0x80818283
  408. .dd 0x84858687
  409. .dd 0x88898A8B
  410. .dd 0x8C8D8E8F
  411. .dd 0x10919293
  412. .dd 0x24959697
  413. .dd 0x38999A9B
  414. .dd 0x9C9D9E9F
  415. .dd 0xA0A1A2A3
  416. .dd 0x54A5A6A7
  417. .dd 0x68A9AAAB
  418. .dd 0x7CADAEAF
  419. .dd 0xB0B1B2B3
  420. .dd 0x84B5B6B7
  421. .dd 0xB8B9BABB
  422. .dd 0x4CBDBEBF
  423. .dd 0xC0C1C2C3
  424. .dd 0x34C5C6C7
  425. .dd 0xC8C9CACB
  426. .dd 0xCCCDCECF
  427. .dd 0x20D1D2D3
  428. .dd 0xD4D5D6D7
  429. .dd 0x18D9DADB
  430. .dd 0xDCDDDEDF
  431. .dd 0x00E1E2E3
  432. .dd 0xE4E5E6E7
  433. .dd 0x18E9EAEB
  434. .dd 0xECEDEEEF
  435. .dd 0xF0F1F2F3
  436. .dd 0xF4F5F6F7
  437. .dd 0xF8F9FAFB
  438. .dd 0xFCFDFEFF