c_cc2stat_cc_av0.S 4.2 KB

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