c_multi_issue_dsp_ldst_1.s 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. //Original:/testcases/core/c_multi_issue_dsp_ldst_1/c_multi_issue_dsp_ldst_1.dsp
  2. // Spec Reference: dsp32mac and 2 load/store
  3. # mach: bfin
  4. .include "testutils.inc"
  5. start
  6. INIT_R_REGS 0;
  7. imm32 r0, 0x00000000;
  8. A0 = 0;
  9. A1 = 0;
  10. ASTAT = r0;
  11. loadsym I0, DATA0;
  12. loadsym I1, DATA1;
  13. loadsym P1, DATA0;
  14. loadsym P2, DATA1;
  15. // test the default (signed fraction : left )
  16. imm32 r0, 0x12345678;
  17. imm32 r1, 0x33456789;
  18. imm32 r2, 0x5556789a;
  19. imm32 r3, 0x75678912;
  20. imm32 r4, 0x86789123;
  21. imm32 r5, 0xa7891234;
  22. imm32 r6, 0xc1234567;
  23. imm32 r7, 0xf1234567;
  24. A1 = R0.L * R1.L, A0 = R0.L * R1.L || R0 = [ I0 ++ ] || R1 = [ I1 ++ ];
  25. A1 += R2.L * R3.L, A0 += R2.L * R3.H || R2 = [ I0 ++ ] || R3 = [ I1 ++ ];
  26. A1 += R6.H * R7.H, A0 += R6.H * R7.L || R4 = [ P1 ++ ] || [ I1 ++ ] = R5;
  27. R6 = A0.w;
  28. R7 = A1.w;
  29. CHECKREG r0, 0x000A0000;
  30. CHECKREG r1, 0x00F00100;
  31. CHECKREG r2, 0x000B0001;
  32. CHECKREG r3, 0x00E00101;
  33. CHECKREG r4, 0x000A0000;
  34. CHECKREG r5, 0xA7891234;
  35. CHECKREG r6, 0x92793486;
  36. CHECKREG r7, 0xDD2F9BAA;
  37. imm32 r0, 0x12245618;
  38. imm32 r1, 0x23256719;
  39. imm32 r2, 0x3426781a;
  40. imm32 r3, 0x45278912;
  41. imm32 r4, 0x56289113;
  42. imm32 r5, 0x67291214;
  43. imm32 r6, 0xa1234517;
  44. imm32 r7, 0xc1234517;
  45. A1 = R0.L * R1.L, A0 = R0.L * R1.L || R4 = [ P1 ++ ] || [ I0 ++ ] = R6;
  46. A1 -= R2.L * R3.L, A0 += R2.L * R3.H || R2 = [ P2 ++ ] || [ I1 ++ ] = R3;
  47. A1 += R4.H * R6.H, A0 -= R4.H * R6.L || [ P2 ++ ] = R5 || R7 = [ I1 ++ ];
  48. R6 = A0.w;
  49. R7 = A1.w;
  50. CHECKREG r0, 0x12245618;
  51. CHECKREG r1, 0x23256719;
  52. CHECKREG r2, 0x00F00100;
  53. CHECKREG r3, 0x45278912;
  54. CHECKREG r4, 0x000B0001;
  55. CHECKREG r5, 0x67291214;
  56. CHECKREG r6, 0x8634CCA2;
  57. CHECKREG r7, 0xB4E7420A;
  58. imm32 r0, 0x15245648;
  59. imm32 r1, 0x25256749;
  60. imm32 r2, 0x3526784a;
  61. imm32 r3, 0x45278942;
  62. imm32 r4, 0x55389143;
  63. imm32 r5, 0x65391244;
  64. imm32 r6, 0xa5334547;
  65. imm32 r7, 0xc5334547;
  66. A1 += R0.H * R1.H, A0 += R0.L * R1.L || R2 = [ P1 ++ ] || [ I1 -- ] = R3;
  67. A1 += R2.H * R3.H, A0 += R2.L * R3.H || NOP || [ I0 ++ ] = R2;
  68. A1 = R4.H * R5.L, A0 += R4.H * R5.L || R3 = [ P2 -- ] || R6 = [ I0 -- ];
  69. R6 = A0.w;
  70. R7 = A1.w;
  71. CHECKREG r0, 0x15245648;
  72. CHECKREG r1, 0x25256749;
  73. CHECKREG r2, 0xA1234517;
  74. CHECKREG r3, 0xA7891234;
  75. CHECKREG r4, 0x55389143;
  76. CHECKREG r5, 0x65391244;
  77. CHECKREG r6, 0xFD508A74;
  78. CHECKREG r7, 0x0C2925C0;
  79. imm32 r1, 0x02450789;
  80. imm32 r2, 0x0356089a;
  81. imm32 r3, 0x04670912;
  82. imm32 r4, 0x05780123;
  83. imm32 r5, 0x06890234;
  84. imm32 r6, 0x07230567;
  85. imm32 r7, 0x00230567;
  86. R2 = R0 +|+ R7, R4 = R0 -|- R7 (ASR) || R0 = [ I1 ++ ] || [ I0 -- ] = R2;
  87. R1 = R6 +|+ R3, R5 = R6 -|- R3 || R6 = [ P1 ] || [ I0 -- ] = R3;
  88. R5 = R4 +|+ R2, R0 = R4 -|- R2 (CO) || NOP || [ I0 ++ ] = R5;
  89. CHECKREG r0, 0xFA99FFDD;
  90. CHECKREG r1, 0x0B8A0E79;
  91. CHECKREG r2, 0x0AA32DD7;
  92. CHECKREG r3, 0x04670912;
  93. CHECKREG r4, 0x0A802870;
  94. CHECKREG r5, 0x15235647;
  95. CHECKREG r6, 0x0356089A;
  96. CHECKREG r7, 0x00230567;
  97. pass
  98. .data
  99. DATA0:
  100. .dd 0x000a0000
  101. .dd 0x000b0001
  102. .dd 0x000c0002
  103. .dd 0x000d0003
  104. .dd 0x000e0004
  105. .dd 0x000f0005
  106. .dd 0x00100006
  107. .dd 0x00200007
  108. .dd 0x00300008
  109. .dd 0x00400009
  110. .dd 0x0050000a
  111. .dd 0x0060000b
  112. .dd 0x0070000c
  113. .dd 0x0080000d
  114. .dd 0x0090000e
  115. .dd 0x0100000f
  116. .dd 0x02000010
  117. .dd 0x03000011
  118. .dd 0x04000012
  119. .dd 0x05000013
  120. .dd 0x06000014
  121. .dd 0x001a0000
  122. .dd 0x001b0001
  123. .dd 0x001c0002
  124. .dd 0x001d0003
  125. .dd 0x00010004
  126. .dd 0x00010005
  127. .dd 0x02100006
  128. .dd 0x02200007
  129. .dd 0x02300008
  130. .dd 0x02200009
  131. .dd 0x0250000a
  132. .dd 0x0260000b
  133. .dd 0x0270000c
  134. .dd 0x0280000d
  135. .dd 0x0290000e
  136. .dd 0x2100000f
  137. .dd 0x22000010
  138. .dd 0x22000011
  139. .dd 0x24000012
  140. .dd 0x25000013
  141. .dd 0x26000014
  142. DATA1:
  143. .dd 0x00f00100
  144. .dd 0x00e00101
  145. .dd 0x00d00102
  146. .dd 0x00c00103
  147. .dd 0x00b00104
  148. .dd 0x00a00105
  149. .dd 0x00900106
  150. .dd 0x00800107
  151. .dd 0x00100108
  152. .dd 0x00200109
  153. .dd 0x0030010a
  154. .dd 0x0040010b
  155. .dd 0x0050011c
  156. .dd 0x0060010d
  157. .dd 0x0070010e
  158. .dd 0x0080010f
  159. .dd 0x00900110
  160. .dd 0x01000111
  161. .dd 0x02000112
  162. .dd 0x03000113
  163. .dd 0x04000114
  164. .dd 0x05000115
  165. .dd 0x03f00100
  166. .dd 0x03e00101
  167. .dd 0x03d00102
  168. .dd 0x03c00103
  169. .dd 0x03b00104
  170. .dd 0x03a00105
  171. .dd 0x03900106
  172. .dd 0x03800107
  173. .dd 0x03100108
  174. .dd 0x03200109
  175. .dd 0x0330010a
  176. .dd 0x0330010b
  177. .dd 0x0350011c
  178. .dd 0x0360010d
  179. .dd 0x0370010e
  180. .dd 0x0380010f
  181. .dd 0x03900110
  182. .dd 0x31000111
  183. .dd 0x32000112
  184. .dd 0x33000113
  185. .dd 0x34000114