c_ldstpmod_ld_dreg.s 7.8 KB

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