c_dsp32mac_dr_a1_m.s 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. //Original:/testcases/core/c_dsp32mac_dr_a1_m/c_dsp32mac_dr_a1_m.dsp
  2. // Spec Reference: dsp32mac dr a1 m
  3. # mach: bfin
  4. .include "testutils.inc"
  5. start
  6. imm32 r0, 0xab235675;
  7. imm32 r1, 0xcfba5127;
  8. imm32 r2, 0x13246705;
  9. imm32 r3, 0x00060007;
  10. imm32 r4, 0x90abcd09;
  11. imm32 r5, 0x10acefdb;
  12. imm32 r6, 0x000c000d;
  13. imm32 r7, 0x1246700f;
  14. A1 = A0 = 0;
  15. // The result accumulated in A1 , and stored to a reg half
  16. imm32 r0, 0x13545abd;
  17. imm32 r1, 0xadbcfec7;
  18. imm32 r2, 0xa1245679;
  19. imm32 r3, 0x00060007;
  20. imm32 r4, 0xefbc4569;
  21. imm32 r5, 0x1235000b;
  22. imm32 r6, 0x000c000d;
  23. imm32 r7, 0x678e000f;
  24. R0.H = ( A1 += R1.L * R0.L ), A0 = R1.L * R0.L;
  25. R1 = A1.w;
  26. R2.H = ( A1 = R2.L * R3.H ), A0 = R2.H * R3.L;
  27. R3 = A1.w;
  28. R4.H = ( A1 = R4.H * R5.L ), A0 += R4.H * R5.H;
  29. R5 = A1.w;
  30. R6.H = ( A1 += R6.H * R7.H ), A0 += R6.L * R7.H;
  31. R7 = A1.w;
  32. CHECKREG r0, 0xFF225ABD;
  33. CHECKREG r1, 0xFF221DD6;
  34. CHECKREG r2, 0x00045679;
  35. CHECKREG r3, 0x00040DAC;
  36. CHECKREG r4, 0xFFFF4569;
  37. CHECKREG r5, 0xFFFE9A28;
  38. CHECKREG r6, 0x0008000D;
  39. CHECKREG r7, 0x00084F78;
  40. // The result accumulated in A1, and stored to a reg half (MNOP)
  41. imm32 r0, 0x13545abd;
  42. imm32 r1, 0xadbcfec7;
  43. imm32 r2, 0xa1245679;
  44. imm32 r3, 0x00060007;
  45. imm32 r4, 0xefbc4569;
  46. imm32 r5, 0x1235000b;
  47. imm32 r6, 0x000c000d;
  48. imm32 r7, 0x678e000f;
  49. R0.H = ( A1 += R1.L * R0.L );
  50. R1 = A1.w;
  51. R2.H = ( A1 = R2.L * R3.H );
  52. R3 = A1.w;
  53. R4.H = ( A1 += R4.H * R5.L );
  54. R5 = A1.w;
  55. R6.H = ( A1 = R6.H * R7.H );
  56. R7 = A1.w;
  57. CHECKREG r0, 0xFF2A5ABD;
  58. CHECKREG r1, 0xFF2A6D4E;
  59. CHECKREG r2, 0x00045679;
  60. CHECKREG r3, 0x00040DAC;
  61. CHECKREG r4, 0x00034569;
  62. CHECKREG r5, 0x0002A7D4;
  63. CHECKREG r6, 0x000A000D;
  64. CHECKREG r7, 0x0009B550;
  65. // The result accumulated in A1 , and stored to a reg half (MNOP)
  66. imm32 r0, 0x13545abd;
  67. imm32 r1, 0xadbcfec7;
  68. imm32 r2, 0xa1245679;
  69. imm32 r3, 0x00060007;
  70. imm32 r4, 0xefbc4569;
  71. imm32 r5, 0x1235000b;
  72. imm32 r6, 0x000c000d;
  73. imm32 r7, 0x678e000f;
  74. R0.H = A1 , A0 += R1.L * R0.L;
  75. R1 = A1.w;
  76. R2.H = A1 , A0 = R2.H * R3.L;
  77. R3 = A1.w;
  78. R4.H = A1 , A0 = R4.H * R5.H;
  79. R5 = A1.w;
  80. R6.H = A1 , A0 += R6.L * R7.H;
  81. R7 = A1.w;
  82. CHECKREG r0, 0x000A5ABD;
  83. CHECKREG r1, 0x0009B550;
  84. CHECKREG r2, 0x000A5679;
  85. CHECKREG r3, 0x0009B550;
  86. CHECKREG r4, 0x000A4569;
  87. CHECKREG r5, 0x0009B550;
  88. CHECKREG r6, 0x000A000D;
  89. CHECKREG r7, 0x0009B550;
  90. // The result accumulated in A1 , and stored to a reg half
  91. imm32 r0, 0x13545abd;
  92. imm32 r1, 0xadbcfec7;
  93. imm32 r2, 0xa1245679;
  94. imm32 r3, 0x00060007;
  95. imm32 r4, 0xefbc4569;
  96. imm32 r5, 0x1235000b;
  97. imm32 r6, 0x000c000d;
  98. imm32 r7, 0x678e000f;
  99. R4.H = ( A1 += R1.L * R0.L ) (M), A0 = R1.L * R0.L;
  100. R5 = A1.w;
  101. R6.H = ( A1 = R2.L * R3.H ) (M), A0 += R2.H * R3.L;
  102. R7 = A1.w;
  103. R0.H = ( A1 = R4.H * R5.L ) (M), A0 = R4.H * R5.H;
  104. R1 = A1.w;
  105. R2.H = ( A1 = R6.H * R7.H ) (M), A0 += R6.L * R7.H;
  106. R3 = A1.w;
  107. CHECKREG r0, 0xFFB35ABD;
  108. CHECKREG r1, 0xFFB294B9;
  109. CHECKREG r2, 0x00005679;
  110. CHECKREG r3, 0x00000004;
  111. CHECKREG r4, 0xFF9B4569;
  112. CHECKREG r5, 0xFF9AC43B;
  113. CHECKREG r6, 0x0002000D;
  114. CHECKREG r7, 0x000206D6;
  115. // The result accumulated in A1 MM=0, and stored to a reg half (MNOP)
  116. imm32 r0, 0x83545abd;
  117. imm32 r1, 0xa8bcfec7;
  118. imm32 r2, 0xc1845679;
  119. imm32 r3, 0x1c080007;
  120. imm32 r4, 0xe1cc8569;
  121. imm32 r5, 0x121c080b;
  122. imm32 r6, 0x7001008d;
  123. imm32 r7, 0x678e1008;
  124. R6.H = ( A1 += R1.L * R0.L ) (M);
  125. R7 = A1.w;
  126. R2.H = ( A1 = R2.L * R3.H ) (M);
  127. R3 = A1.w;
  128. R0.H = ( A1 += R4.H * R5.L ) (M);
  129. R1 = A1.w;
  130. R4.H = ( A1 = R6.H * R7.H ) (M);
  131. R5 = A1.w;
  132. CHECKREG r0, 0x08855ABD;
  133. CHECKREG r1, 0x0885038C;
  134. CHECKREG r2, 0x09785679;
  135. CHECKREG r3, 0x0977EFC8;
  136. CHECKREG r4, 0xFF918569;
  137. CHECKREG r5, 0xFF913021;
  138. CHECKREG r6, 0xFF91008D;
  139. CHECKREG r7, 0xFF910EEF;
  140. imm32 r0, 0x03545abd;
  141. imm32 r1, 0xa0bcfec7;
  142. imm32 r2, 0xa1045679;
  143. imm32 r3, 0x00000007;
  144. imm32 r4, 0xefbc0569;
  145. imm32 r5, 0x1235100b;
  146. imm32 r6, 0x000c020d;
  147. imm32 r7, 0x678e003f;
  148. R4.H = ( A1 -= R1.L * R0.L ) (M), A0 -= R1.L * R0.L;
  149. R5 = A1.w;
  150. R6.H = ( A1 -= R2.L * R3.H ) (M), A0 += R2.H * R3.L;
  151. R7 = A1.w;
  152. R0.H = ( A1 += R4.H * R5.L ) (M), A0 -= R4.H * R5.H;
  153. R1 = A1.w;
  154. R2.H = ( A1 -= R6.H * R7.H ) (M), A0 -= R6.L * R7.H;
  155. R3 = A1.w;
  156. CHECKREG r0, 0x00005ABD;
  157. CHECKREG r1, 0x00002136;
  158. CHECKREG r2, 0x00005679;
  159. CHECKREG r3, 0x00002136;
  160. CHECKREG r4, 0x00000569;
  161. CHECKREG r5, 0x00002136;
  162. CHECKREG r6, 0x0000020D;
  163. CHECKREG r7, 0x00002136;
  164. // The result accumulated in A1 MM=0, and stored to a reg half (MNOP)
  165. imm32 r0, 0x83545abd;
  166. imm32 r1, 0xa8bcfec7;
  167. imm32 r2, 0xc1845679;
  168. imm32 r3, 0x1c080007;
  169. imm32 r4, 0xe1cc8569;
  170. imm32 r5, 0x121c080b;
  171. imm32 r6, 0x7001008d;
  172. imm32 r7, 0x678e1008;
  173. R6.H = ( A1 -= R1.L * R0.L ) (M);
  174. R7 = A1.w;
  175. R2.H = ( A1 -= R2.L * R3.H ) (M);
  176. R3 = A1.w;
  177. R0.H = ( A1 -= R4.H * R5.L ) (M);
  178. R1 = A1.w;
  179. R4.H = ( A1 -= R6.H * R7.H ) (M);
  180. R5 = A1.w;
  181. CHECKREG r0, 0xF7EA5ABD;
  182. CHECKREG r1, 0xF7EA0EBF;
  183. CHECKREG r2, 0xF6F75679;
  184. CHECKREG r3, 0xF6F72283;
  185. CHECKREG r4, 0xF7EA8569;
  186. CHECKREG r5, 0xF7E9DE9E;
  187. CHECKREG r6, 0x006F008D;
  188. CHECKREG r7, 0x006F124B;
  189. pass