c_dsp32shift_align24.s 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. //Original:/testcases/core/c_dsp32shift_align24/c_dsp32shift_align24.dsp
  2. // Spec Reference: dsp32shift align24
  3. # mach: bfin
  4. .include "testutils.inc"
  5. start
  6. imm32 r0, 0x00000001;
  7. imm32 r1, 0x01000801;
  8. imm32 r2, 0x08200802;
  9. imm32 r3, 0x08030803;
  10. imm32 r4, 0x08004804;
  11. imm32 r5, 0x08000505;
  12. imm32 r6, 0x08000866;
  13. imm32 r7, 0x08000807;
  14. R1 = ALIGN24 ( R1 , R0 );
  15. R2 = ALIGN24 ( R2 , R0 );
  16. R3 = ALIGN24 ( R3 , R0 );
  17. R4 = ALIGN24 ( R4 , R0 );
  18. R5 = ALIGN24 ( R5 , R0 );
  19. R6 = ALIGN24 ( R6 , R0 );
  20. R7 = ALIGN24 ( R7 , R0 );
  21. R0 = ALIGN24 ( R0 , R0 );
  22. CHECKREG r0, 0x00000100;
  23. CHECKREG r1, 0x00080100;
  24. CHECKREG r2, 0x20080200;
  25. CHECKREG r3, 0x03080300;
  26. CHECKREG r4, 0x00480400;
  27. CHECKREG r5, 0x00050500;
  28. CHECKREG r6, 0x00086600;
  29. CHECKREG r7, 0x00080700;
  30. imm32 r0, 0x0900d001;
  31. imm32 r1, 0x09000002;
  32. imm32 r2, 0x09400002;
  33. imm32 r3, 0x09100003;
  34. imm32 r4, 0x09020004;
  35. imm32 r5, 0x09003005;
  36. imm32 r6, 0x09000406;
  37. imm32 r7, 0x09000057;
  38. R0 = ALIGN24 ( R0 , R1 );
  39. R2 = ALIGN24 ( R2 , R1 );
  40. R3 = ALIGN24 ( R3 , R1 );
  41. R4 = ALIGN24 ( R4 , R1 );
  42. R5 = ALIGN24 ( R5 , R1 );
  43. R6 = ALIGN24 ( R6 , R1 );
  44. R7 = ALIGN24 ( R7 , R1 );
  45. R1 = ALIGN24 ( R1 , R1 );
  46. CHECKREG r0, 0x00D00109;
  47. CHECKREG r1, 0x00000209;
  48. CHECKREG r2, 0x40000209;
  49. CHECKREG r3, 0x10000309;
  50. CHECKREG r4, 0x02000409;
  51. CHECKREG r5, 0x00300509;
  52. CHECKREG r6, 0x00040609;
  53. CHECKREG r7, 0x00005709;
  54. imm32 r0, 0x0a00e001;
  55. imm32 r1, 0x0a00e001;
  56. imm32 r2, 0x0a00000f;
  57. imm32 r3, 0x0a400010;
  58. imm32 r4, 0x0a05e004;
  59. imm32 r5, 0x0a006005;
  60. imm32 r6, 0x0a00e706;
  61. imm32 r7, 0x0a00e087;
  62. R0 = ALIGN24 ( R0 , R2 );
  63. R1 = ALIGN24 ( R1 , R2 );
  64. R3 = ALIGN24 ( R3 , R2 );
  65. R4 = ALIGN24 ( R4 , R2 );
  66. R5 = ALIGN24 ( R5 , R2 );
  67. R6 = ALIGN24 ( R6 , R2 );
  68. R7 = ALIGN24 ( R7 , R2 );
  69. R2 = ALIGN24 ( R2 , R2 );
  70. CHECKREG r0, 0x00E0010A;
  71. CHECKREG r1, 0x00E0010A;
  72. CHECKREG r2, 0x00000F0A;
  73. CHECKREG r3, 0x4000100A;
  74. CHECKREG r4, 0x05E0040A;
  75. CHECKREG r5, 0x0060050A;
  76. CHECKREG r6, 0x00E7060A;
  77. CHECKREG r7, 0x00E0870A;
  78. imm32 r0, 0x2b00f001;
  79. imm32 r1, 0x0300f001;
  80. imm32 r2, 0x0b40f002;
  81. imm32 r3, 0x0b050010;
  82. imm32 r4, 0x0b006004;
  83. imm32 r5, 0x0b00f705;
  84. imm32 r6, 0x0b00f086;
  85. imm32 r7, 0x0b00f009;
  86. R0 = ALIGN24 ( R0 , R3 );
  87. R1 = ALIGN24 ( R1 , R3 );
  88. R2 = ALIGN24 ( R2 , R3 );
  89. R4 = ALIGN24 ( R4 , R3 );
  90. R5 = ALIGN24 ( R5 , R3 );
  91. R6 = ALIGN24 ( R6 , R3 );
  92. R7 = ALIGN24 ( R7 , R3 );
  93. R3 = ALIGN24 ( R3 , R3 );
  94. CHECKREG r0, 0x00F0010B;
  95. CHECKREG r1, 0x00F0010B;
  96. CHECKREG r2, 0x40F0020B;
  97. CHECKREG r3, 0x0500100B;
  98. CHECKREG r4, 0x0060040B;
  99. CHECKREG r5, 0x00F7050B;
  100. CHECKREG r6, 0x00F0860B;
  101. CHECKREG r7, 0x00F0090B;
  102. imm32 r0, 0x4c0000c0;
  103. imm32 r1, 0x050100c0;
  104. imm32 r2, 0x0c6200c0;
  105. imm32 r3, 0x0c0700c0;
  106. imm32 r4, 0x0c04800c;
  107. imm32 r5, 0x0c0509c0;
  108. imm32 r6, 0x0c060000;
  109. imm32 r7, 0x0c0700ca;
  110. R0 = ALIGN24 ( R0 , R4 );
  111. R1 = ALIGN24 ( R1 , R4 );
  112. R2 = ALIGN24 ( R2 , R4 );
  113. R3 = ALIGN24 ( R3 , R4 );
  114. R5 = ALIGN24 ( R5 , R4 );
  115. R6 = ALIGN24 ( R6 , R4 );
  116. R7 = ALIGN24 ( R7 , R4 );
  117. R4 = ALIGN24 ( R4 , R4 );
  118. CHECKREG r0, 0x0000C00C;
  119. CHECKREG r1, 0x0100C00C;
  120. CHECKREG r2, 0x6200C00C;
  121. CHECKREG r3, 0x0700C00C;
  122. CHECKREG r4, 0x04800C0C;
  123. CHECKREG r5, 0x0509C00C;
  124. CHECKREG r6, 0x0600000C;
  125. CHECKREG r7, 0x0700CA0C;
  126. imm32 r0, 0xa00100d0;
  127. imm32 r1, 0xa00100d1;
  128. imm32 r2, 0xa00200d0;
  129. imm32 r3, 0xa00300d0;
  130. imm32 r4, 0xa00400d0;
  131. imm32 r5, 0xa0050007;
  132. imm32 r6, 0xa00600d0;
  133. imm32 r7, 0xa00700d0;
  134. R0 = ALIGN24 ( R0 , R5 );
  135. R1 = ALIGN24 ( R1 , R5 );
  136. R2 = ALIGN24 ( R2 , R5 );
  137. R3 = ALIGN24 ( R3 , R5 );
  138. R4 = ALIGN24 ( R4 , R5 );
  139. R6 = ALIGN24 ( R6 , R5 );
  140. R7 = ALIGN24 ( R7 , R5 );
  141. R5 = ALIGN24 ( R5 , R5 );
  142. CHECKREG r0, 0x0100D0A0;
  143. CHECKREG r1, 0x0100D1A0;
  144. CHECKREG r2, 0x0200D0A0;
  145. CHECKREG r3, 0x0300D0A0;
  146. CHECKREG r4, 0x0400D0A0;
  147. CHECKREG r5, 0x050007A0;
  148. CHECKREG r6, 0x0600D0A0;
  149. CHECKREG r7, 0x0700D0A0;
  150. imm32 r0, 0xb2010000;
  151. imm32 r1, 0xb0310000;
  152. imm32 r2, 0xb042000f;
  153. imm32 r3, 0xbf030000;
  154. imm32 r4, 0xba040000;
  155. imm32 r5, 0xbb050000;
  156. imm32 r6, 0xbc060009;
  157. imm32 r7, 0xb0e70000;
  158. R0 = ALIGN24 ( R0 , R6 );
  159. R1 = ALIGN24 ( R1 , R6 );
  160. R2 = ALIGN24 ( R2 , R6 );
  161. R3 = ALIGN24 ( R3 , R6 );
  162. R4 = ALIGN24 ( R4 , R6 );
  163. R5 = ALIGN24 ( R5 , R6 );
  164. R6 = ALIGN24 ( R6 , R6 );
  165. R7 = ALIGN24 ( R7 , R6 );
  166. CHECKREG r0, 0x010000BC;
  167. CHECKREG r1, 0x310000BC;
  168. CHECKREG r2, 0x42000FBC;
  169. CHECKREG r3, 0x030000BC;
  170. CHECKREG r4, 0x040000BC;
  171. CHECKREG r5, 0x050000BC;
  172. CHECKREG r6, 0x060009BC;
  173. CHECKREG r7, 0xE7000006;
  174. imm32 r0, 0xd23100e0;
  175. imm32 r1, 0xd04500e0;
  176. imm32 r2, 0xde32f0e0;
  177. imm32 r3, 0xd90300e0;
  178. imm32 r4, 0xd07400e0;
  179. imm32 r5, 0xdef500e0;
  180. imm32 r6, 0xd06600e0;
  181. imm32 r7, 0xd0080023;
  182. R1 = ALIGN24 ( R0 , R7 );
  183. R2 = ALIGN24 ( R1 , R7 );
  184. R3 = ALIGN24 ( R2 , R7 );
  185. R4 = ALIGN24 ( R3 , R7 );
  186. R5 = ALIGN24 ( R4 , R7 );
  187. R6 = ALIGN24 ( R5 , R7 );
  188. R7 = ALIGN24 ( R6 , R7 );
  189. R0 = ALIGN24 ( R7 , R7 );
  190. CHECKREG r0, 0xD0D0D0D0;
  191. CHECKREG r1, 0x3100E0D0;
  192. CHECKREG r2, 0x00E0D0D0;
  193. CHECKREG r3, 0xE0D0D0D0;
  194. CHECKREG r4, 0xD0D0D0D0;
  195. CHECKREG r5, 0xD0D0D0D0;
  196. CHECKREG r6, 0xD0D0D0D0;
  197. CHECKREG r7, 0xD0D0D0D0;
  198. pass