c_dsp32shiftim_ahalf_rn_s.s 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418
  1. //Original:/testcases/core/c_dsp32shiftim_ahalf_rn_s/c_dsp32shiftim_ahalf_rn_s.dsp
  2. // Spec Reference: dsp32shift ashift
  3. # mach: bfin
  4. .include "testutils.inc"
  5. start
  6. imm32 r0, 0x00000000;
  7. R0.L = -1;
  8. imm32 r1, 0x00008001;
  9. imm32 r2, 0x00008002;
  10. imm32 r3, 0x00008003;
  11. imm32 r4, 0x00008004;
  12. imm32 r5, 0x00008005;
  13. imm32 r6, 0x00008006;
  14. imm32 r7, 0x00008007;
  15. R0.L = R0.L >>> 10;
  16. R1.L = R1.L >>> 10;
  17. R2.L = R2.L >>> 10;
  18. R3.L = R3.L >>> 10;
  19. R4.L = R4.L >>> 10;
  20. R5.L = R5.L >>> 10;
  21. R6.L = R6.L >>> 10;
  22. R7.L = R7.L >>> 10;
  23. CHECKREG r0, 0x0000FFFF;
  24. CHECKREG r1, 0x0000FFE0;
  25. CHECKREG r2, 0x0000FFE0;
  26. CHECKREG r3, 0x0000FFE0;
  27. CHECKREG r4, 0x0000FFE0;
  28. CHECKREG r5, 0x0000FFE0;
  29. CHECKREG r6, 0x0000FFE0;
  30. CHECKREG r7, 0x0000FFE0;
  31. imm32 r0, 0x02008020;
  32. imm32 r0, 0x02008021;
  33. imm32 r2, 0x02008022;
  34. imm32 r3, 0x02008023;
  35. imm32 r4, 0x02008024;
  36. imm32 r5, 0x02008025;
  37. imm32 r6, 0x02008026;
  38. imm32 r7, 0x02008027;
  39. R0.L = R0.L >>> 11;
  40. R1.L = R1.L >>> 11;
  41. R2.L = R2.L >>> 11;
  42. R3.L = R3.L >>> 11;
  43. R4.L = R4.L >>> 11;
  44. R5.L = R5.L >>> 11;
  45. R6.L = R6.L >>> 11;
  46. R7.L = R7.L >>> 11;
  47. CHECKREG r0, 0x0200FFF0;
  48. CHECKREG r1, 0x0000FFFF;
  49. CHECKREG r2, 0x0200FFF0;
  50. CHECKREG r3, 0x0200FFF0;
  51. CHECKREG r4, 0x0200FFF0;
  52. CHECKREG r5, 0x0200FFF0;
  53. CHECKREG r6, 0x0200FFF0;
  54. CHECKREG r7, 0x0200FFF0;
  55. imm32 r0, 0x00308001;
  56. imm32 r1, 0x00308001;
  57. R2.L = -15;
  58. imm32 r3, 0x00308003;
  59. imm32 r4, 0x00308004;
  60. imm32 r5, 0x00308005;
  61. imm32 r6, 0x00308006;
  62. imm32 r7, 0x00308007;
  63. R0.L = R0.L >>> 12;
  64. R1.L = R1.L >>> 12;
  65. R2.L = R2.L >>> 12;
  66. R3.L = R3.L >>> 12;
  67. R4.L = R4.L >>> 12;
  68. R5.L = R5.L >>> 12;
  69. R6.L = R6.L >>> 12;
  70. R7.L = R7.L >>> 12;
  71. CHECKREG r0, 0x0030FFF8;
  72. CHECKREG r1, 0x0030FFF8;
  73. CHECKREG r2, 0x0200FFFF;
  74. CHECKREG r3, 0x0030FFF8;
  75. CHECKREG r4, 0x0030FFF8;
  76. CHECKREG r5, 0x0030FFF8;
  77. CHECKREG r6, 0x0030FFF8;
  78. CHECKREG r7, 0x0030FFF8;
  79. imm32 r0, 0x00008401;
  80. imm32 r1, 0x00008401;
  81. imm32 r2, 0x00008402;
  82. R3.L = -16;
  83. imm32 r4, 0x00008404;
  84. imm32 r5, 0x00008405;
  85. imm32 r6, 0x00008406;
  86. imm32 r7, 0x00008407;
  87. R0.L = R0.L >>> 3;
  88. R1.L = R1.L >>> 3;
  89. R2.L = R2.L >>> 3;
  90. R3.L = R3.L >>> 3;
  91. R4.L = R4.L >>> 3;
  92. R5.L = R5.L >>> 3;
  93. R6.L = R6.L >>> 3;
  94. R7.L = R7.L >>> 3;
  95. CHECKREG r0, 0x0000F080;
  96. CHECKREG r1, 0x0000F080;
  97. CHECKREG r2, 0x0000F080;
  98. CHECKREG r3, 0x0030FFFE;
  99. CHECKREG r4, 0x0000F080;
  100. CHECKREG r5, 0x0000F080;
  101. CHECKREG r6, 0x0000F080;
  102. CHECKREG r7, 0x0000F080;
  103. // d_lo = ashift (d_hi BY d_lo)
  104. // RHx by RLx
  105. imm32 r0, 0x05000500;
  106. imm32 r1, 0x85010500;
  107. imm32 r2, 0x85020500;
  108. imm32 r3, 0x85030500;
  109. imm32 r4, 0x85040500;
  110. imm32 r5, 0x85050500;
  111. imm32 r6, 0x85060500;
  112. imm32 r7, 0x85070500;
  113. R0.L = R0.H >>> 10;
  114. R1.L = R1.H >>> 10;
  115. R2.L = R2.H >>> 10;
  116. R3.L = R3.H >>> 10;
  117. R4.L = R4.H >>> 10;
  118. R5.L = R5.H >>> 10;
  119. R6.L = R6.H >>> 10;
  120. R7.L = R7.H >>> 10;
  121. CHECKREG r0, 0x05000001;
  122. CHECKREG r1, 0x8501FFE1;
  123. CHECKREG r2, 0x8502FFE1;
  124. CHECKREG r3, 0x8503FFE1;
  125. CHECKREG r4, 0x8504FFE1;
  126. CHECKREG r5, 0x8505FFE1;
  127. CHECKREG r6, 0x8506FFE1;
  128. CHECKREG r7, 0x8507FFE1;
  129. imm32 r0, 0x80610000;
  130. R1.L = -1;
  131. imm32 r2, 0x80620000;
  132. imm32 r3, 0x80630000;
  133. imm32 r4, 0x80640000;
  134. imm32 r5, 0x80650000;
  135. imm32 r6, 0x80660000;
  136. imm32 r7, 0x80670000;
  137. R0.L = R0.H >>> 11;
  138. R1.L = R1.H >>> 11;
  139. R2.L = R2.H >>> 11;
  140. R3.L = R3.H >>> 11;
  141. R4.L = R4.H >>> 11;
  142. R5.L = R5.H >>> 11;
  143. R6.L = R6.H >>> 11;
  144. R7.L = R7.H >>> 11;
  145. CHECKREG r0, 0x8061FFF0;
  146. CHECKREG r1, 0x8501FFF0;
  147. CHECKREG r2, 0x8062FFF0;
  148. CHECKREG r3, 0x8063FFF0;
  149. CHECKREG r4, 0x8064FFF0;
  150. CHECKREG r5, 0x8065FFF0;
  151. CHECKREG r6, 0x8066FFF0;
  152. CHECKREG r7, 0x8067FFF0;
  153. imm32 r0, 0xa0010070;
  154. imm32 r1, 0xa0010070;
  155. R2.L = -15;
  156. imm32 r3, 0xa0030070;
  157. imm32 r4, 0xa0040070;
  158. imm32 r5, 0xa0050070;
  159. imm32 r6, 0xa0060070;
  160. imm32 r7, 0xa0070070;
  161. R0.L = R0.H >>> 12;
  162. R1.L = R1.H >>> 12;
  163. R2.L = R2.H >>> 12;
  164. R3.L = R3.H >>> 12;
  165. R4.L = R4.H >>> 12;
  166. R5.L = R5.H >>> 12;
  167. R6.L = R6.H >>> 12;
  168. R7.L = R7.H >>> 12;
  169. CHECKREG r0, 0xA001FFFA;
  170. CHECKREG r1, 0xA001FFFA;
  171. CHECKREG r2, 0x8062FFF8;
  172. CHECKREG r3, 0xA003FFFA;
  173. CHECKREG r4, 0xA004FFFA;
  174. CHECKREG r5, 0xA005FFFA;
  175. CHECKREG r6, 0xA006FFFA;
  176. CHECKREG r7, 0xA007FFFA;
  177. imm32 r0, 0xb8010001;
  178. imm32 r1, 0xb8010001;
  179. imm32 r2, 0xb8020002;
  180. R3.L = -16;
  181. imm32 r4, 0xb8040004;
  182. imm32 r5, 0xb8050005;
  183. imm32 r6, 0xb8060006;
  184. imm32 r7, 0xb8070007;
  185. R0.L = R0.H >>> 13;
  186. R1.L = R1.H >>> 13;
  187. R2.L = R2.H >>> 13;
  188. R3.L = R3.H >>> 13;
  189. R4.L = R4.H >>> 13;
  190. R5.L = R5.H >>> 13;
  191. R6.L = R6.H >>> 13;
  192. R7.L = R7.H >>> 13;
  193. CHECKREG r0, 0xB801FFFD;
  194. CHECKREG r1, 0xB801FFFD;
  195. CHECKREG r2, 0xB802FFFD;
  196. CHECKREG r3, 0xA003FFFD;
  197. CHECKREG r4, 0xB804FFFD;
  198. CHECKREG r5, 0xB805FFFD;
  199. CHECKREG r6, 0xB806FFFD;
  200. CHECKREG r7, 0xB807FFFD;
  201. // d_hi = ashft (d_lo BY d_lo)
  202. // RLx by RLx
  203. imm32 r0, 0x00009001;
  204. imm32 r1, 0x00009001;
  205. imm32 r2, 0x00009002;
  206. imm32 r3, 0x00009003;
  207. imm32 r4, 0x00009000;
  208. imm32 r5, 0x00009005;
  209. imm32 r6, 0x00009006;
  210. imm32 r7, 0x00009007;
  211. R0.H = R0.L >>> 14;
  212. R1.H = R1.L >>> 14;
  213. R2.H = R2.L >>> 14;
  214. R3.H = R3.L >>> 14;
  215. R4.H = R4.L >>> 14;
  216. R5.H = R5.L >>> 14;
  217. R6.H = R6.L >>> 14;
  218. R7.H = R7.L >>> 14;
  219. CHECKREG r0, 0xFFFE9001;
  220. CHECKREG r1, 0xFFFE9001;
  221. CHECKREG r2, 0xFFFE9002;
  222. CHECKREG r3, 0xFFFE9003;
  223. CHECKREG r4, 0xFFFE9000;
  224. CHECKREG r5, 0xFFFE9005;
  225. CHECKREG r6, 0xFFFE9006;
  226. CHECKREG r7, 0xFFFE9007;
  227. imm32 r0, 0xa0008001;
  228. imm32 r1, 0xa0008001;
  229. imm32 r2, 0xa0008002;
  230. imm32 r3, 0xa0008003;
  231. imm32 r4, 0xa0008004;
  232. R5.L = -1;
  233. imm32 r6, 0xa0008006;
  234. imm32 r7, 0xa0008007;
  235. R0.H = R0.L >>> 5;
  236. R1.H = R1.L >>> 5;
  237. R2.H = R2.L >>> 5;
  238. R3.H = R3.L >>> 5;
  239. R4.H = R4.L >>> 5;
  240. R5.H = R5.L >>> 5;
  241. R6.H = R6.L >>> 5;
  242. R7.H = R7.L >>> 5;
  243. CHECKREG r0, 0xFC008001;
  244. CHECKREG r1, 0xFC008001;
  245. CHECKREG r2, 0xFC008002;
  246. CHECKREG r3, 0xFC008003;
  247. CHECKREG r4, 0xFC008004;
  248. CHECKREG r5, 0xFFFFFFFF;
  249. CHECKREG r6, 0xFC008006;
  250. CHECKREG r7, 0xFC008007;
  251. imm32 r0, 0x00009b01;
  252. imm32 r1, 0x00009b01;
  253. imm32 r2, 0x00009b02;
  254. imm32 r3, 0x00009b03;
  255. imm32 r4, 0x00009b04;
  256. imm32 r5, 0x00009b05;
  257. R6.L = -15;
  258. imm32 r7, 0x00009007;
  259. R0.H = R0.L >>> 6;
  260. R1.H = R1.L >>> 6;
  261. R2.H = R2.L >>> 6;
  262. R3.H = R3.L >>> 6;
  263. R4.H = R4.L >>> 6;
  264. R5.H = R5.L >>> 6;
  265. R6.H = R6.L >>> 6;
  266. R7.H = R7.L >>> 6;
  267. CHECKREG r0, 0xFE6C9B01;
  268. CHECKREG r1, 0xFE6C9B01;
  269. CHECKREG r2, 0xFE6C9B02;
  270. CHECKREG r3, 0xFE6C9B03;
  271. CHECKREG r4, 0xFE6C9B04;
  272. CHECKREG r5, 0xFE6C9B05;
  273. CHECKREG r6, 0xFFFFFFF1;
  274. CHECKREG r7, 0xFE409007;
  275. imm32 r0, 0x0000a0c1;
  276. imm32 r1, 0x0000a0c1;
  277. imm32 r2, 0x0000a0c2;
  278. imm32 r3, 0x0000a0c3;
  279. imm32 r4, 0x0000a0c4;
  280. imm32 r5, 0x0000a0c5;
  281. imm32 r6, 0x0000a0c6;
  282. R7.L = -16;
  283. R0.H = R0.L >>> 7;
  284. R1.H = R1.L >>> 7;
  285. R2.H = R2.L >>> 7;
  286. R3.H = R3.L >>> 7;
  287. R4.H = R4.L >>> 7;
  288. R5.H = R5.L >>> 7;
  289. R6.H = R6.L >>> 7;
  290. R7.H = R7.L >>> 7;
  291. CHECKREG r0, 0xFF41A0C1;
  292. CHECKREG r1, 0xFF41A0C1;
  293. CHECKREG r2, 0xFF41A0C2;
  294. CHECKREG r3, 0xFF41A0C3;
  295. CHECKREG r4, 0xFF41A0C4;
  296. CHECKREG r5, 0xFF41A0C5;
  297. CHECKREG r6, 0xFF41A0C6;
  298. CHECKREG r7, 0xFFFFFFF0;
  299. imm32 r0, 0x80010d00;
  300. imm32 r1, 0x80010d00;
  301. imm32 r2, 0x80020d00;
  302. imm32 r3, 0x80030d00;
  303. R4.L = -1;
  304. imm32 r5, 0x80050d00;
  305. imm32 r6, 0x80060d00;
  306. imm32 r7, 0x80070d00;
  307. R0.H = R0.H >>> 14;
  308. R1.H = R1.H >>> 14;
  309. R2.H = R2.H >>> 14;
  310. R3.H = R3.H >>> 14;
  311. R4.H = R4.H >>> 14;
  312. R5.H = R5.H >>> 14;
  313. R6.H = R6.H >>> 14;
  314. R7.H = R7.H >>> 14;
  315. CHECKREG r0, 0xFFFE0D00;
  316. CHECKREG r1, 0xFFFE0D00;
  317. CHECKREG r2, 0xFFFE0D00;
  318. CHECKREG r3, 0xFFFE0D00;
  319. CHECKREG r4, 0xFFFFFFFF;
  320. CHECKREG r5, 0xFFFE0D00;
  321. CHECKREG r6, 0xFFFE0D00;
  322. CHECKREG r7, 0xFFFE0D00;
  323. imm32 r0, 0x8d010000;
  324. imm32 r1, 0x8d010000;
  325. imm32 r2, 0x8d020000;
  326. imm32 r3, 0x8d030000;
  327. imm32 r4, 0x8d040000;
  328. R5.L = -1;
  329. imm32 r6, 0x8d060000;
  330. imm32 r7, 0x8d070000;
  331. R0.H = R0.H >>> 15;
  332. R1.H = R1.H >>> 15;
  333. R2.H = R2.H >>> 15;
  334. R3.H = R3.H >>> 15;
  335. R4.H = R4.H >>> 15;
  336. R5.H = R5.H >>> 15;
  337. R6.H = R6.H >>> 15;
  338. R7.H = R7.H >>> 15;
  339. CHECKREG r0, 0xFFFF0000;
  340. CHECKREG r1, 0xFFFF0000;
  341. CHECKREG r2, 0xFFFF0000;
  342. CHECKREG r3, 0xFFFF0000;
  343. CHECKREG r4, 0xFFFF0000;
  344. CHECKREG r5, 0xFFFFFFFF;
  345. CHECKREG r6, 0xFFFF0000;
  346. CHECKREG r7, 0xFFFF0000;
  347. imm32 r0, 0xde010000;
  348. imm32 r1, 0xde010000;
  349. imm32 r2, 0xde020000;
  350. imm32 r3, 0xde030000;
  351. imm32 r4, 0xde040000;
  352. imm32 r5, 0xde050000;
  353. R6.L = -15;
  354. imm32 r7, 0xd0070000;
  355. R0.L = R0.H >>> 10;
  356. R1.L = R1.H >>> 10;
  357. R2.L = R2.H >>> 10;
  358. R3.L = R3.H >>> 10;
  359. R4.L = R4.H >>> 10;
  360. R5.L = R5.H >>> 10;
  361. R6.L = R6.H >>> 10;
  362. R7.L = R7.H >>> 10;
  363. CHECKREG r0, 0xDE01FFF7;
  364. CHECKREG r1, 0xDE01FFF7;
  365. CHECKREG r2, 0xDE02FFF7;
  366. CHECKREG r3, 0xDE03FFF7;
  367. CHECKREG r4, 0xDE04FFF7;
  368. CHECKREG r5, 0xDE05FFF7;
  369. CHECKREG r6, 0xFFFFFFFF;
  370. CHECKREG r7, 0xD007FFF4;
  371. imm32 r0, 0x9f010c00;
  372. imm32 r1, 0xaf010c00;
  373. imm32 r2, 0xbf020c00;
  374. imm32 r3, 0xcf030c00;
  375. imm32 r4, 0xdf040c00;
  376. imm32 r5, 0xef050c00;
  377. imm32 r6, 0xff060c00;
  378. R7.L = -16;
  379. R0.H = R0.H >>> 5;
  380. R1.H = R1.H >>> 5;
  381. R2.H = R2.H >>> 5;
  382. R3.H = R3.H >>> 5;
  383. R4.H = R4.H >>> 5;
  384. R5.H = R5.H >>> 5;
  385. R6.H = R6.H >>> 5;
  386. R7.H = R7.H >>> 5;
  387. CHECKREG r0, 0xFCF80C00;
  388. CHECKREG r1, 0xFD780C00;
  389. CHECKREG r2, 0xFDF80C00;
  390. CHECKREG r3, 0xFE780C00;
  391. CHECKREG r4, 0xFEF80C00;
  392. CHECKREG r5, 0xFF780C00;
  393. CHECKREG r6, 0xFFF80C00;
  394. CHECKREG r7, 0xFE80FFF0;
  395. pass