c_cc2stat_cc_aq.s 4.0 KB

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