c_ccflag_dr_imm3.s 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. //Original:/proj/frio/dv/testcases/core/c_ccflag_dr_imm3/c_ccflag_dr_imm3.dsp
  2. // Spec Reference: ccflag dr-imm3
  3. # mach: bfin
  4. .include "testutils.inc"
  5. start
  6. imm32 r0, 0x00000001;
  7. imm32 r1, 0x00000002;
  8. imm32 r2, 0x00000003;
  9. imm32 r3, 0x00000004;
  10. imm32 r4, 0x00770088;
  11. imm32 r5, 0x009900aa;
  12. imm32 r6, 0x00bb00cc;
  13. imm32 r7, 0x00000000;
  14. ASTAT = R7;
  15. R4 = ASTAT;
  16. // positive dreg EQUAL to positive imm3
  17. CC = R0 == 1;
  18. R5 = ASTAT;
  19. CC = R0 < 1;
  20. R6 = ASTAT;
  21. CHECKREG r4, 0x00000000;
  22. CHECKREG r5, 0x00001025;
  23. CHECKREG r6, 0x00001005;
  24. CC = R0 <= 1;
  25. R5 = ASTAT;
  26. CC = R0 < 1;
  27. R6 = ASTAT;
  28. CC = R0 <= 1;
  29. R7 = ASTAT;
  30. CHECKREG r5, 0x00001025;
  31. CHECKREG r6, 0x00001005;
  32. CHECKREG r7, 0x00001025;
  33. // positive dreg GREATER than to positive imm3
  34. CC = R1 == 1;
  35. R5 = ASTAT;
  36. CC = R1 < 1;
  37. R6 = ASTAT;
  38. CC = R1 <= 1;
  39. R7 = ASTAT;
  40. CHECKREG r5, 0x00001004; // carry
  41. CHECKREG r6, 0x00001004;
  42. CHECKREG r7, 0x00001004;
  43. // positive dreg LESS than to positive imm3
  44. CC = R0 == 2;
  45. R5 = ASTAT;
  46. CC = R0 < 2;
  47. R6 = ASTAT;
  48. CC = R0 <= 2;
  49. R7 = ASTAT;
  50. CHECKREG r5, 0x00000002;
  51. CHECKREG r6, 0x00000022;
  52. CHECKREG r7, 0x00000022;
  53. // positive dreg GREATER than to neg imm3
  54. CC = R2 == -4;
  55. R5 = ASTAT;
  56. CC = R2 < -4;
  57. R6 = ASTAT;
  58. CC = R2 <= -4;
  59. R7 = ASTAT;
  60. CHECKREG r5, 0x00000000;
  61. CHECKREG r6, 0x00000000;
  62. CHECKREG r7, 0x00000000;
  63. imm32 r0, -1;
  64. imm32 r1, -2;
  65. imm32 r2, -3;
  66. imm32 r3, -4;
  67. // negative dreg and positive imm3
  68. R7 = 0;
  69. ASTAT = R7;
  70. R4 = ASTAT;
  71. CC = R3 == 1;
  72. R5 = ASTAT;
  73. CC = R3 < 1;
  74. R6 = ASTAT;
  75. CC = R3 <= 1;
  76. R7 = ASTAT;
  77. CHECKREG r4, 0x00000000;
  78. CHECKREG r5, 0x00001006;
  79. CHECKREG r6, 0x00001026;
  80. CHECKREG r7, 0x00001026;
  81. // negative dreg LESS than neg imm3
  82. CC = R2 == -1;
  83. R4 = ASTAT;
  84. CC = R2 < -1;
  85. R5 = ASTAT;
  86. CC = R2 <= -1;
  87. R6 = ASTAT;
  88. CHECKREG r4, 0x00000002;
  89. CHECKREG r5, 0x00000022;
  90. CHECKREG r6, 0x00000022;
  91. // negative dreg GREATER neg imm3
  92. CC = R0 == -4;
  93. R4 = ASTAT;
  94. CC = R0 < -4;
  95. R5 = ASTAT;
  96. CC = R0 <= -4;
  97. R6 = ASTAT;
  98. CHECKREG r4, 0x00001004;
  99. CHECKREG r5, 0x00001004;
  100. CHECKREG r6, 0x00001004;
  101. imm32 r0, 0x00000000;
  102. imm32 r1, 0x00000000;
  103. imm32 r2, 0x00000000;
  104. imm32 r3, 0x00000000;
  105. imm32 r4, 0x00000001;
  106. imm32 r5, 0x00000002;
  107. imm32 r6, 0x00000003;
  108. imm32 r7, 0x00000004;
  109. ASTAT = R0;
  110. R3 = ASTAT;
  111. // positive dreg EQUAL to positive imm3
  112. CC = R4 == 1;
  113. R1 = ASTAT;
  114. CC = R4 < 1;
  115. R2 = ASTAT;
  116. CHECKREG r0, 0x00000000;
  117. CHECKREG r1, 0x00001025;
  118. CHECKREG r2, 0x00001005;
  119. CC = R4 <= 1;
  120. R1 = ASTAT;
  121. CC = R4 < 1;
  122. R2 = ASTAT;
  123. CC = R4 <= 1;
  124. R3 = ASTAT;
  125. CHECKREG r1, 0x00001025;
  126. CHECKREG r2, 0x00001005;
  127. CHECKREG r3, 0x00001025;
  128. // positive dreg GREATER than to positive imm3
  129. CC = R5 == 1;
  130. R1 = ASTAT;
  131. CC = R5 < 1;
  132. R2 = ASTAT;
  133. CC = R5 <= 1;
  134. R3 = ASTAT;
  135. CHECKREG r1, 0x00001004; // carry
  136. CHECKREG r2, 0x00001004;
  137. CHECKREG r3, 0x00001004;
  138. // positive dreg LESS than to positive imm3
  139. CC = R6 == 2;
  140. R1 = ASTAT;
  141. CC = R6 < 2;
  142. R2 = ASTAT;
  143. CC = R6 <= 2;
  144. R3 = ASTAT;
  145. CHECKREG r1, 0x00001004;
  146. CHECKREG r2, 0x00001004;
  147. CHECKREG r3, 0x00001004;
  148. // positive dreg GREATER than to neg imm3
  149. CC = R6 == -4;
  150. R1 = ASTAT;
  151. CC = R6 < -4;
  152. R2 = ASTAT;
  153. CC = R6 <= -4;
  154. R3 = ASTAT;
  155. CHECKREG r1, 0x00000000;
  156. CHECKREG r2, 0x00000000;
  157. CHECKREG r3, 0x00000000;
  158. imm32 r4, -1;
  159. imm32 r5, -2;
  160. imm32 r6, -3;
  161. imm32 r7, -4;
  162. // negative dreg and positive imm3
  163. R3 = 0;
  164. ASTAT = R3;
  165. R0 = ASTAT;
  166. CC = R7 == 1;
  167. R1 = ASTAT;
  168. CC = R7 < 1;
  169. R2 = ASTAT;
  170. CC = R7 <= 1;
  171. R3 = ASTAT;
  172. CHECKREG r0, 0x00000000;
  173. CHECKREG r1, 0x00001006;
  174. CHECKREG r2, 0x00001026;
  175. CHECKREG r3, 0x00001026;
  176. // negative dreg LESS than neg imm3
  177. CC = R6 == -1;
  178. R0 = ASTAT;
  179. CC = R6 < -1;
  180. R1 = ASTAT;
  181. CC = R6 <= -1;
  182. R2 = ASTAT;
  183. CHECKREG r0, 0x00000002;
  184. CHECKREG r1, 0x00000022;
  185. CHECKREG r2, 0x00000022;
  186. // negative dreg GREATER neg imm3
  187. CC = R4 == -4;
  188. R0 = ASTAT;
  189. CC = R4 < -4;
  190. R1 = ASTAT;
  191. CC = R4 <= -4;
  192. R2 = ASTAT;
  193. CHECKREG r0, 0x00001004;
  194. CHECKREG r1, 0x00001004;
  195. CHECKREG r2, 0x00001004;
  196. pass;