shift.S 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541
  1. /* Tests the shift instructions.
  2. Copyright (C) 2017-2022 Free Software Foundation, Inc.
  3. This program is free software; you can redistribute it and/or modify
  4. it under the terms of the GNU General Public License as published by
  5. the Free Software Foundation; either version 3 of the License, or
  6. (at your option) any later version.
  7. This program is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. GNU General Public License for more details.
  11. You should have received a copy of the GNU General Public License
  12. along with this program. If not, see <http://www.gnu.org/licenses/>. */
  13. # mach: or1k
  14. # output: report(0xb38f0f83);\n
  15. # output: report(0x00000000);\n
  16. # output: report(0xb38f0f83);\n
  17. # output: \n
  18. # output: report(0xb38f0f83);\n
  19. # output: report(0x00000001);\n
  20. # output: report(0x671e1f06);\n
  21. # output: \n
  22. # output: report(0xb38f0f83);\n
  23. # output: report(0x00000004);\n
  24. # output: report(0x38f0f830);\n
  25. # output: \n
  26. # output: report(0xb38f0f83);\n
  27. # output: report(0x00000010);\n
  28. # output: report(0x0f830000);\n
  29. # output: \n
  30. # output: report(0xb38f0f83);\n
  31. # output: report(0x0000001f);\n
  32. # output: report(0x80000000);\n
  33. # output: \n
  34. # output: report(0xb38f0f83);\n
  35. # output: report(0x00000021);\n
  36. # output: report(0x671e1f06);\n
  37. # output: \n
  38. # output: report(0xb38f0f83);\n
  39. # output: report(0x00002224);\n
  40. # output: report(0x38f0f830);\n
  41. # output: \n
  42. # output: report(0xb38f0f83);\n
  43. # output: report(0x00f789f0);\n
  44. # output: report(0x0f830000);\n
  45. # output: \n
  46. # output: report(0xb38f0f83);\n
  47. # output: report(0xffffffff);\n
  48. # output: report(0x80000000);\n
  49. # output: \n
  50. # output: report(0xb38f0f83);\n
  51. # output: report(0x00000000);\n
  52. # output: report(0xb38f0f83);\n
  53. # output: \n
  54. # output: report(0xb38f0f83);\n
  55. # output: report(0x00000001);\n
  56. # output: report(0x671e1f06);\n
  57. # output: \n
  58. # output: report(0xb38f0f83);\n
  59. # output: report(0x00000004);\n
  60. # output: report(0x38f0f830);\n
  61. # output: \n
  62. # output: report(0xb38f0f83);\n
  63. # output: report(0x00000010);\n
  64. # output: report(0x0f830000);\n
  65. # output: \n
  66. # output: report(0xb38f0f83);\n
  67. # output: report(0x0000001f);\n
  68. # output: report(0x80000000);\n
  69. # output: \n
  70. # output: report(0xb38f0f83);\n
  71. # output: report(0x00000021);\n
  72. # output: report(0x671e1f06);\n
  73. # output: \n
  74. # output: report(0xb38f0f83);\n
  75. # output: report(0x00000024);\n
  76. # output: report(0x38f0f830);\n
  77. # output: \n
  78. # output: report(0xb38f0f83);\n
  79. # output: report(0x00000030);\n
  80. # output: report(0x0f830000);\n
  81. # output: \n
  82. # output: report(0xb38f0f83);\n
  83. # output: report(0x0000003f);\n
  84. # output: report(0x80000000);\n
  85. # output: \n
  86. # output: report(0xb38f0f83);\n
  87. # output: report(0x00000000);\n
  88. # output: report(0xb38f0f83);\n
  89. # output: \n
  90. # output: report(0xb38f0f83);\n
  91. # output: report(0x00000001);\n
  92. # output: report(0xd9c787c1);\n
  93. # output: \n
  94. # output: report(0xb38f0f83);\n
  95. # output: report(0x00000004);\n
  96. # output: report(0xfb38f0f8);\n
  97. # output: \n
  98. # output: report(0xb38f0f83);\n
  99. # output: report(0x00000010);\n
  100. # output: report(0xffffb38f);\n
  101. # output: \n
  102. # output: report(0xb38f0f83);\n
  103. # output: report(0x0000001f);\n
  104. # output: report(0xffffffff);\n
  105. # output: \n
  106. # output: report(0x4c70f07c);\n
  107. # output: report(0x00000001);\n
  108. # output: report(0x2638783e);\n
  109. # output: \n
  110. # output: report(0x4c70f07c);\n
  111. # output: report(0x00000004);\n
  112. # output: report(0x04c70f07);\n
  113. # output: \n
  114. # output: report(0x4c70f07c);\n
  115. # output: report(0x00000010);\n
  116. # output: report(0x00004c70);\n
  117. # output: \n
  118. # output: report(0x4c70f07c);\n
  119. # output: report(0x0000001f);\n
  120. # output: report(0x00000000);\n
  121. # output: \n
  122. # output: report(0xb38f0f83);\n
  123. # output: report(0x00000021);\n
  124. # output: report(0xd9c787c1);\n
  125. # output: \n
  126. # output: report(0xb38f0f83);\n
  127. # output: report(0x00002224);\n
  128. # output: report(0xfb38f0f8);\n
  129. # output: \n
  130. # output: report(0xb38f0f83);\n
  131. # output: report(0x00f789f0);\n
  132. # output: report(0xffffb38f);\n
  133. # output: \n
  134. # output: report(0xb38f0f83);\n
  135. # output: report(0xffffffff);\n
  136. # output: report(0xffffffff);\n
  137. # output: \n
  138. # output: report(0x4c70f07c);\n
  139. # output: report(0x00000021);\n
  140. # output: report(0x2638783e);\n
  141. # output: \n
  142. # output: report(0x4c70f07c);\n
  143. # output: report(0x00002224);\n
  144. # output: report(0x04c70f07);\n
  145. # output: \n
  146. # output: report(0x4c70f07c);\n
  147. # output: report(0x00f789f0);\n
  148. # output: report(0x00004c70);\n
  149. # output: \n
  150. # output: report(0x4c70f07c);\n
  151. # output: report(0xffffffff);\n
  152. # output: report(0x00000000);\n
  153. # output: \n
  154. # output: report(0xb38f0f83);\n
  155. # output: report(0x00000000);\n
  156. # output: report(0xb38f0f83);\n
  157. # output: \n
  158. # output: report(0xb38f0f83);\n
  159. # output: report(0x00000001);\n
  160. # output: report(0xd9c787c1);\n
  161. # output: \n
  162. # output: report(0xb38f0f83);\n
  163. # output: report(0x00000004);\n
  164. # output: report(0xfb38f0f8);\n
  165. # output: \n
  166. # output: report(0xb38f0f83);\n
  167. # output: report(0x00000010);\n
  168. # output: report(0xffffb38f);\n
  169. # output: \n
  170. # output: report(0xb38f0f83);\n
  171. # output: report(0x0000001f);\n
  172. # output: report(0xffffffff);\n
  173. # output: \n
  174. # output: report(0x4c70f07c);\n
  175. # output: report(0x00000001);\n
  176. # output: report(0x2638783e);\n
  177. # output: \n
  178. # output: report(0x4c70f07c);\n
  179. # output: report(0x00000004);\n
  180. # output: report(0x04c70f07);\n
  181. # output: \n
  182. # output: report(0x4c70f07c);\n
  183. # output: report(0x00000010);\n
  184. # output: report(0x00004c70);\n
  185. # output: \n
  186. # output: report(0x4c70f07c);\n
  187. # output: report(0x0000001f);\n
  188. # output: report(0x00000000);\n
  189. # output: \n
  190. # output: report(0xb38f0f83);\n
  191. # output: report(0x00000021);\n
  192. # output: report(0xd9c787c1);\n
  193. # output: \n
  194. # output: report(0xb38f0f83);\n
  195. # output: report(0x00000024);\n
  196. # output: report(0xfb38f0f8);\n
  197. # output: \n
  198. # output: report(0xb38f0f83);\n
  199. # output: report(0x00000030);\n
  200. # output: report(0xffffb38f);\n
  201. # output: \n
  202. # output: report(0xb38f0f83);\n
  203. # output: report(0x0000003f);\n
  204. # output: report(0xffffffff);\n
  205. # output: \n
  206. # output: report(0x4c70f07c);\n
  207. # output: report(0x00000021);\n
  208. # output: report(0x2638783e);\n
  209. # output: \n
  210. # output: report(0x4c70f07c);\n
  211. # output: report(0x00000024);\n
  212. # output: report(0x04c70f07);\n
  213. # output: \n
  214. # output: report(0x4c70f07c);\n
  215. # output: report(0x00000030);\n
  216. # output: report(0x00004c70);\n
  217. # output: \n
  218. # output: report(0x4c70f07c);\n
  219. # output: report(0x0000003f);\n
  220. # output: report(0x00000000);\n
  221. # output: \n
  222. # output: report(0xb38f0f83);\n
  223. # output: report(0x00000000);\n
  224. # output: report(0xb38f0f83);\n
  225. # output: \n
  226. # output: report(0xb38f0f83);\n
  227. # output: report(0x00000001);\n
  228. # output: report(0x59c787c1);\n
  229. # output: \n
  230. # output: report(0xb38f0f83);\n
  231. # output: report(0x00000004);\n
  232. # output: report(0x0b38f0f8);\n
  233. # output: \n
  234. # output: report(0xb38f0f83);\n
  235. # output: report(0x00000010);\n
  236. # output: report(0x0000b38f);\n
  237. # output: \n
  238. # output: report(0xb38f0f83);\n
  239. # output: report(0x0000001f);\n
  240. # output: report(0x00000001);\n
  241. # output: \n
  242. # output: report(0x4c70f07c);\n
  243. # output: report(0x00000001);\n
  244. # output: report(0x2638783e);\n
  245. # output: \n
  246. # output: report(0x4c70f07c);\n
  247. # output: report(0x00000004);\n
  248. # output: report(0x04c70f07);\n
  249. # output: \n
  250. # output: report(0x4c70f07c);\n
  251. # output: report(0x00000010);\n
  252. # output: report(0x00004c70);\n
  253. # output: \n
  254. # output: report(0x4c70f07c);\n
  255. # output: report(0x0000001f);\n
  256. # output: report(0x00000000);\n
  257. # output: \n
  258. # output: report(0xb38f0f83);\n
  259. # output: report(0x00000021);\n
  260. # output: report(0x59c787c1);\n
  261. # output: \n
  262. # output: report(0xb38f0f83);\n
  263. # output: report(0x00002224);\n
  264. # output: report(0x0b38f0f8);\n
  265. # output: \n
  266. # output: report(0xb38f0f83);\n
  267. # output: report(0x00f789f0);\n
  268. # output: report(0x0000b38f);\n
  269. # output: \n
  270. # output: report(0xb38f0f83);\n
  271. # output: report(0xffffffff);\n
  272. # output: report(0x00000001);\n
  273. # output: \n
  274. # output: report(0x4c70f07c);\n
  275. # output: report(0x00000021);\n
  276. # output: report(0x2638783e);\n
  277. # output: \n
  278. # output: report(0x4c70f07c);\n
  279. # output: report(0x00002224);\n
  280. # output: report(0x04c70f07);\n
  281. # output: \n
  282. # output: report(0x4c70f07c);\n
  283. # output: report(0x00f789f0);\n
  284. # output: report(0x00004c70);\n
  285. # output: \n
  286. # output: report(0x4c70f07c);\n
  287. # output: report(0xffffffff);\n
  288. # output: report(0x00000000);\n
  289. # output: \n
  290. # output: report(0xb38f0f83);\n
  291. # output: report(0x00000000);\n
  292. # output: report(0xb38f0f83);\n
  293. # output: \n
  294. # output: report(0xb38f0f83);\n
  295. # output: report(0x00000001);\n
  296. # output: report(0x59c787c1);\n
  297. # output: \n
  298. # output: report(0xb38f0f83);\n
  299. # output: report(0x00000004);\n
  300. # output: report(0x0b38f0f8);\n
  301. # output: \n
  302. # output: report(0xb38f0f83);\n
  303. # output: report(0x00000010);\n
  304. # output: report(0x0000b38f);\n
  305. # output: \n
  306. # output: report(0xb38f0f83);\n
  307. # output: report(0x0000001f);\n
  308. # output: report(0x00000001);\n
  309. # output: \n
  310. # output: report(0x4c70f07c);\n
  311. # output: report(0x00000001);\n
  312. # output: report(0x2638783e);\n
  313. # output: \n
  314. # output: report(0x4c70f07c);\n
  315. # output: report(0x00000004);\n
  316. # output: report(0x04c70f07);\n
  317. # output: \n
  318. # output: report(0x4c70f07c);\n
  319. # output: report(0x00000010);\n
  320. # output: report(0x00004c70);\n
  321. # output: \n
  322. # output: report(0x4c70f07c);\n
  323. # output: report(0x0000001f);\n
  324. # output: report(0x00000000);\n
  325. # output: \n
  326. # output: report(0xb38f0f83);\n
  327. # output: report(0x00000021);\n
  328. # output: report(0x59c787c1);\n
  329. # output: \n
  330. # output: report(0xb38f0f83);\n
  331. # output: report(0x00000024);\n
  332. # output: report(0x0b38f0f8);\n
  333. # output: \n
  334. # output: report(0xb38f0f83);\n
  335. # output: report(0x00000030);\n
  336. # output: report(0x0000b38f);\n
  337. # output: \n
  338. # output: report(0xb38f0f83);\n
  339. # output: report(0x0000003f);\n
  340. # output: report(0x00000001);\n
  341. # output: \n
  342. # output: report(0x4c70f07c);\n
  343. # output: report(0x00000021);\n
  344. # output: report(0x2638783e);\n
  345. # output: \n
  346. # output: report(0x4c70f07c);\n
  347. # output: report(0x00000024);\n
  348. # output: report(0x04c70f07);\n
  349. # output: \n
  350. # output: report(0x4c70f07c);\n
  351. # output: report(0x00000030);\n
  352. # output: report(0x00004c70);\n
  353. # output: \n
  354. # output: report(0x4c70f07c);\n
  355. # output: report(0x0000003f);\n
  356. # output: report(0x00000000);\n
  357. # output: \n
  358. # output: exit(0)\n
  359. #include "or1k-asm-test-helpers.h"
  360. .macro TEST_SHIFT opcode, op1, op2
  361. LOAD_IMMEDIATE r5, \op1
  362. LOAD_IMMEDIATE r6, \op2
  363. REPORT_REG_TO_CONSOLE r5
  364. REPORT_REG_TO_CONSOLE r6
  365. \opcode r4, r5, r6
  366. CHECK_CARRY_AND_OVERFLOW_NOT_SET r2, r3
  367. REPORT_REG_TO_CONSOLE r4
  368. PRINT_NEWLINE_TO_CONSOLE
  369. .endm
  370. .macro TEST_SHIFT_I opcode, op1, op2
  371. LOAD_IMMEDIATE r5, \op1
  372. REPORT_REG_TO_CONSOLE r5
  373. REPORT_IMMEDIATE_TO_CONSOLE \op2
  374. \opcode r4, r5, \op2
  375. CHECK_CARRY_AND_OVERFLOW_NOT_SET r2, r3
  376. REPORT_REG_TO_CONSOLE r4
  377. PRINT_NEWLINE_TO_CONSOLE
  378. .endm
  379. STANDARD_TEST_ENVIRONMENT
  380. .section .text
  381. start_tests:
  382. PUSH LINK_REGISTER_R9
  383. /* Always set OVE. We should never trigger an exception, even if
  384. this bit is set. */
  385. SET_SPR_SR_FLAGS SPR_SR_OVE, r2, r3
  386. /* Test l.sll */
  387. /* Shift left by zero. */
  388. TEST_SHIFT l.sll, 0xb38f0f83, 0x00000000
  389. /* Shift left by amounts in the 1-31 range. */
  390. TEST_SHIFT l.sll, 0xb38f0f83, 0x00000001
  391. TEST_SHIFT l.sll, 0xb38f0f83, 0x00000004
  392. TEST_SHIFT l.sll, 0xb38f0f83, 0x00000010
  393. TEST_SHIFT l.sll, 0xb38f0f83, 0x0000001f
  394. /* Shift left by larger amounts - should be masked. */
  395. TEST_SHIFT l.sll, 0xb38f0f83, 0x00000021
  396. TEST_SHIFT l.sll, 0xb38f0f83, 0x00002224
  397. TEST_SHIFT l.sll, 0xb38f0f83, 0x00f789f0
  398. TEST_SHIFT l.sll, 0xb38f0f83, 0xffffffff
  399. /* Test l.slli */
  400. /* Shift left by zero. */
  401. TEST_SHIFT_I l.slli, 0xb38f0f83, 0x0000
  402. /* Shift left by amounts in the 1-31 range. */
  403. TEST_SHIFT_I l.slli, 0xb38f0f83, 0x0001
  404. TEST_SHIFT_I l.slli, 0xb38f0f83, 0x0004
  405. TEST_SHIFT_I l.slli, 0xb38f0f83, 0x0010
  406. TEST_SHIFT_I l.slli, 0xb38f0f83, 0x001f
  407. /* Shift left by larger amounts - should be masked. */
  408. TEST_SHIFT_I l.slli, 0xb38f0f83, 0x0021
  409. TEST_SHIFT_I l.slli, 0xb38f0f83, 0x0024
  410. TEST_SHIFT_I l.slli, 0xb38f0f83, 0x0030
  411. TEST_SHIFT_I l.slli, 0xb38f0f83, 0x003f
  412. /* Test l.sra */
  413. /* Shift right by zero. */
  414. TEST_SHIFT l.sra, 0xb38f0f83, 0x00000000
  415. /* Shift right by amounts in the 1-31 range. */
  416. TEST_SHIFT l.sra, 0xb38f0f83, 0x00000001
  417. TEST_SHIFT l.sra, 0xb38f0f83, 0x00000004
  418. TEST_SHIFT l.sra, 0xb38f0f83, 0x00000010
  419. TEST_SHIFT l.sra, 0xb38f0f83, 0x0000001f
  420. TEST_SHIFT l.sra, 0x4c70f07c, 0x00000001
  421. TEST_SHIFT l.sra, 0x4c70f07c, 0x00000004
  422. TEST_SHIFT l.sra, 0x4c70f07c, 0x00000010
  423. TEST_SHIFT l.sra, 0x4c70f07c, 0x0000001f
  424. /* Shift right by larger amounts - should be masked. */
  425. TEST_SHIFT l.sra, 0xb38f0f83, 0x00000021
  426. TEST_SHIFT l.sra, 0xb38f0f83, 0x00002224
  427. TEST_SHIFT l.sra, 0xb38f0f83, 0x00f789f0
  428. TEST_SHIFT l.sra, 0xb38f0f83, 0xffffffff
  429. TEST_SHIFT l.sra, 0x4c70f07c, 0x00000021
  430. TEST_SHIFT l.sra, 0x4c70f07c, 0x00002224
  431. TEST_SHIFT l.sra, 0x4c70f07c, 0x00f789f0
  432. TEST_SHIFT l.sra, 0x4c70f07c, 0xffffffff
  433. /* Test l.srai */
  434. /* Shift right by zero. */
  435. TEST_SHIFT_I l.srai, 0xb38f0f83, 0x0000
  436. /* Shift right by amounts in the 1-31 range. */
  437. TEST_SHIFT_I l.srai, 0xb38f0f83, 0x0001
  438. TEST_SHIFT_I l.srai, 0xb38f0f83, 0x0004
  439. TEST_SHIFT_I l.srai, 0xb38f0f83, 0x0010
  440. TEST_SHIFT_I l.srai, 0xb38f0f83, 0x001f
  441. TEST_SHIFT_I l.srai, 0x4c70f07c, 0x0001
  442. TEST_SHIFT_I l.srai, 0x4c70f07c, 0x0004
  443. TEST_SHIFT_I l.srai, 0x4c70f07c, 0x0010
  444. TEST_SHIFT_I l.srai, 0x4c70f07c, 0x001f
  445. /* Shift right by larger amounts - should be masked. */
  446. TEST_SHIFT_I l.srai, 0xb38f0f83, 0x0021
  447. TEST_SHIFT_I l.srai, 0xb38f0f83, 0x0024
  448. TEST_SHIFT_I l.srai, 0xb38f0f83, 0x0030
  449. TEST_SHIFT_I l.srai, 0xb38f0f83, 0x003f
  450. TEST_SHIFT_I l.srai, 0x4c70f07c, 0x0021
  451. TEST_SHIFT_I l.srai, 0x4c70f07c, 0x0024
  452. TEST_SHIFT_I l.srai, 0x4c70f07c, 0x0030
  453. TEST_SHIFT_I l.srai, 0x4c70f07c, 0x003f
  454. /* Test l.srl */
  455. /* Shift right by zero. */
  456. TEST_SHIFT l.srl, 0xb38f0f83, 0x00000000
  457. /* Shift right by amounts in the 1-31 range. */
  458. TEST_SHIFT l.srl, 0xb38f0f83, 0x00000001
  459. TEST_SHIFT l.srl, 0xb38f0f83, 0x00000004
  460. TEST_SHIFT l.srl, 0xb38f0f83, 0x00000010
  461. TEST_SHIFT l.srl, 0xb38f0f83, 0x0000001f
  462. TEST_SHIFT l.srl, 0x4c70f07c, 0x00000001
  463. TEST_SHIFT l.srl, 0x4c70f07c, 0x00000004
  464. TEST_SHIFT l.srl, 0x4c70f07c, 0x00000010
  465. TEST_SHIFT l.srl, 0x4c70f07c, 0x0000001f
  466. /* Shift right by larger amounts - should be masked. */
  467. TEST_SHIFT l.srl, 0xb38f0f83, 0x00000021
  468. TEST_SHIFT l.srl, 0xb38f0f83, 0x00002224
  469. TEST_SHIFT l.srl, 0xb38f0f83, 0x00f789f0
  470. TEST_SHIFT l.srl, 0xb38f0f83, 0xffffffff
  471. TEST_SHIFT l.srl, 0x4c70f07c, 0x00000021
  472. TEST_SHIFT l.srl, 0x4c70f07c, 0x00002224
  473. TEST_SHIFT l.srl, 0x4c70f07c, 0x00f789f0
  474. TEST_SHIFT l.srl, 0x4c70f07c, 0xffffffff
  475. /* Test l.srli */
  476. /* Shift right by zero. */
  477. TEST_SHIFT_I l.srli, 0xb38f0f83, 0x0000
  478. /* Shift right by amounts in the 1-31 range. */
  479. TEST_SHIFT_I l.srli, 0xb38f0f83, 0x0001
  480. TEST_SHIFT_I l.srli, 0xb38f0f83, 0x0004
  481. TEST_SHIFT_I l.srli, 0xb38f0f83, 0x0010
  482. TEST_SHIFT_I l.srli, 0xb38f0f83, 0x001f
  483. TEST_SHIFT_I l.srli, 0x4c70f07c, 0x0001
  484. TEST_SHIFT_I l.srli, 0x4c70f07c, 0x0004
  485. TEST_SHIFT_I l.srli, 0x4c70f07c, 0x0010
  486. TEST_SHIFT_I l.srli, 0x4c70f07c, 0x001f
  487. /* Shift right by larger amounts - should be masked. */
  488. TEST_SHIFT_I l.srli, 0xb38f0f83, 0x0021
  489. TEST_SHIFT_I l.srli, 0xb38f0f83, 0x0024
  490. TEST_SHIFT_I l.srli, 0xb38f0f83, 0x0030
  491. TEST_SHIFT_I l.srli, 0xb38f0f83, 0x003f
  492. TEST_SHIFT_I l.srli, 0x4c70f07c, 0x0021
  493. TEST_SHIFT_I l.srli, 0x4c70f07c, 0x0024
  494. TEST_SHIFT_I l.srli, 0x4c70f07c, 0x0030
  495. TEST_SHIFT_I l.srli, 0x4c70f07c, 0x003f
  496. POP LINK_REGISTER_R9
  497. RETURN_TO_LINK_REGISTER_R9