c_logi2op_log_l_shft.s 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. //Original:/testcases/core/c_logi2op_log_l_shft/c_logi2op_log_l_shft.dsp
  2. // Spec Reference: Logi2op <<=
  3. # mach: bfin
  4. .include "testutils.inc"
  5. start
  6. // Logical <<= : negative data
  7. // bit 0-7
  8. imm32 r0, 0x81111111;
  9. imm32 r1, 0x81111111;
  10. imm32 r2, 0x81111111;
  11. imm32 r3, 0x81111111;
  12. imm32 r4, 0x81111111;
  13. imm32 r5, 0x81111111;
  14. imm32 r6, 0x81111111;
  15. imm32 r7, 0x81111111;
  16. R0 <<= 0; /* r0 = 0x81111111 */
  17. R1 <<= 1; /* r1 = 0x40888888 */
  18. R2 <<= 2; /* r2 = 0x20444444 */
  19. R3 <<= 3; /* r3 = 0x10222222 */
  20. R4 <<= 4; /* r4 = 0x08111111 */
  21. R5 <<= 5; /* r5 = 0x04088888 */
  22. R6 <<= 6; /* r6 = 0x02044444 */
  23. R7 <<= 7; /* r7 = 0x01022222 */
  24. CHECKREG r0, 0x81111111;
  25. CHECKREG r1, 0x02222222;
  26. CHECKREG r2, 0x04444444;
  27. CHECKREG r3, 0x08888888;
  28. CHECKREG r4, 0x11111110;
  29. CHECKREG r5, 0x22222220;
  30. CHECKREG r6, 0x44444440;
  31. CHECKREG r7, 0x88888880;
  32. // bit 8-15
  33. imm32 r0, 0x82222222;
  34. imm32 r1, 0x82222222;
  35. imm32 r2, 0x82222222;
  36. imm32 r3, 0x82222222;
  37. imm32 r4, 0x82222222;
  38. imm32 r5, 0x82222222;
  39. imm32 r6, 0x82222222;
  40. imm32 r7, 0x82222222;
  41. R0 <<= 8;
  42. R1 <<= 9;
  43. R2 <<= 10;
  44. R3 <<= 11;
  45. R4 <<= 12;
  46. R5 <<= 13;
  47. R6 <<= 14;
  48. R7 <<= 15;
  49. CHECKREG r0, 0x22222200;
  50. CHECKREG r1, 0x44444400;
  51. CHECKREG r2, 0x88888800;
  52. CHECKREG r3, 0x11111000;
  53. CHECKREG r4, 0x22222000;
  54. CHECKREG r5, 0x44444000;
  55. CHECKREG r6, 0x88888000;
  56. CHECKREG r7, 0x11110000;
  57. // bit 16-23
  58. imm32 r0, 0x83333333;
  59. imm32 r1, 0x83333333;
  60. imm32 r2, 0x83333333;
  61. imm32 r3, 0x83333333;
  62. imm32 r4, 0x83333333;
  63. imm32 r5, 0x83333333;
  64. imm32 r6, 0x83333333;
  65. imm32 r7, 0x83333333;
  66. R0 <<= 16;
  67. R1 <<= 17;
  68. R2 <<= 18;
  69. R3 <<= 19;
  70. R4 <<= 20;
  71. R5 <<= 21;
  72. R6 <<= 22;
  73. R7 <<= 23;
  74. CHECKREG r0, 0x33330000;
  75. CHECKREG r1, 0x66660000;
  76. CHECKREG r2, 0xCCCC0000;
  77. CHECKREG r3, 0x99980000;
  78. CHECKREG r4, 0x33300000;
  79. CHECKREG r5, 0x66600000;
  80. CHECKREG r6, 0xCCC00000;
  81. CHECKREG r7, 0x99800000;
  82. // bit 24-31
  83. imm32 r0, 0x84444444;
  84. imm32 r1, 0x84444444;
  85. imm32 r2, 0x84444444;
  86. imm32 r3, 0x84444444;
  87. imm32 r4, 0x84444444;
  88. imm32 r5, 0x84444444;
  89. imm32 r6, 0x84444444;
  90. imm32 r7, 0x84444444;
  91. R0 <<= 24;
  92. R1 <<= 25;
  93. R2 <<= 26;
  94. R3 <<= 27;
  95. R4 <<= 28;
  96. R5 <<= 29;
  97. R6 <<= 30;
  98. R7 <<= 31;
  99. CHECKREG r0, 0x44000000;
  100. CHECKREG r1, 0x88000000;
  101. CHECKREG r2, 0x10000000;
  102. CHECKREG r3, 0x20000000;
  103. CHECKREG r4, 0x40000000;
  104. CHECKREG r5, 0x80000000;
  105. CHECKREG r6, 0x00000000;
  106. CHECKREG r7, 0x00000000;
  107. // Arithmetic <<= : positive data
  108. // bit 0-7
  109. imm32 r0, 0x41111111;
  110. imm32 r1, 0x41111111;
  111. imm32 r2, 0x41111111;
  112. imm32 r3, 0x41111111;
  113. imm32 r4, 0x41111111;
  114. imm32 r5, 0x41111111;
  115. imm32 r6, 0x41111111;
  116. imm32 r7, 0x41111111;
  117. R0 <<= 0;
  118. R1 <<= 1;
  119. R2 <<= 2;
  120. R3 <<= 3;
  121. R4 <<= 4;
  122. R5 <<= 5;
  123. R6 <<= 6;
  124. R7 <<= 7;
  125. CHECKREG r0, 0x41111111;
  126. CHECKREG r1, 0x82222222;
  127. CHECKREG r2, 0x04444444;
  128. CHECKREG r3, 0x08888888;
  129. CHECKREG r4, 0x11111110;
  130. CHECKREG r5, 0x22222220;
  131. CHECKREG r6, 0x44444440;
  132. CHECKREG r7, 0x88888880;
  133. // bit 8-15
  134. imm32 r0, 0x42222222;
  135. imm32 r1, 0x42222222;
  136. imm32 r2, 0x42222222;
  137. imm32 r3, 0x42222222;
  138. imm32 r4, 0x42222222;
  139. imm32 r5, 0x42222222;
  140. imm32 r6, 0x42222222;
  141. imm32 r7, 0x42222222;
  142. R0 <<= 8;
  143. R1 <<= 9;
  144. R2 <<= 10;
  145. R3 <<= 11;
  146. R4 <<= 12;
  147. R5 <<= 13;
  148. R6 <<= 14;
  149. R7 <<= 15;
  150. CHECKREG r0, 0x22222200;
  151. CHECKREG r1, 0x44444400;
  152. CHECKREG r2, 0x88888800;
  153. CHECKREG r3, 0x11111000;
  154. CHECKREG r4, 0x22222000;
  155. CHECKREG r5, 0x44444000;
  156. CHECKREG r6, 0x88888000;
  157. CHECKREG r7, 0x11110000;
  158. // bit 16-23
  159. imm32 r0, 0x43333333;
  160. imm32 r1, 0x43333333;
  161. imm32 r2, 0x43333333;
  162. imm32 r3, 0x43333333;
  163. imm32 r4, 0x43333333;
  164. imm32 r5, 0x43333333;
  165. imm32 r6, 0x43333333;
  166. imm32 r7, 0x43333333;
  167. R0 <<= 16;
  168. R1 <<= 17;
  169. R2 <<= 18;
  170. R3 <<= 19;
  171. R4 <<= 20;
  172. R5 <<= 21;
  173. R6 <<= 22;
  174. R7 <<= 23;
  175. CHECKREG r0, 0x33330000;
  176. CHECKREG r1, 0x66660000;
  177. CHECKREG r2, 0xCCCC0000;
  178. CHECKREG r3, 0x99980000;
  179. CHECKREG r4, 0x33300000;
  180. CHECKREG r5, 0x66600000;
  181. CHECKREG r6, 0xCCC00000;
  182. CHECKREG r7, 0x99800000;
  183. // bit 24-31
  184. imm32 r0, 0x44444444;
  185. imm32 r1, 0x44444444;
  186. imm32 r2, 0x44444444;
  187. imm32 r3, 0x44444444;
  188. imm32 r4, 0x44444444;
  189. imm32 r5, 0x44444444;
  190. imm32 r6, 0x44444444;
  191. imm32 r7, 0x44444444;
  192. R0 <<= 24;
  193. R1 <<= 25;
  194. R2 <<= 26;
  195. R3 <<= 27;
  196. R4 <<= 28;
  197. R5 <<= 29;
  198. R6 <<= 30;
  199. R7 <<= 31;
  200. CHECKREG r0, 0x44000000;
  201. CHECKREG r1, 0x88000000;
  202. CHECKREG r2, 0x10000000;
  203. CHECKREG r3, 0x20000000;
  204. CHECKREG r4, 0x40000000;
  205. CHECKREG r5, 0x80000000;
  206. CHECKREG r6, 0x00000000;
  207. CHECKREG r7, 0x00000000;
  208. pass