c_dsp32mult_pair_is.s 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. //Original:/testcases/core/c_dsp32mult_pair_is/c_dsp32mult_pair_is.dsp
  2. // Spec Reference: dsp32mult pair is
  3. # mach: bfin
  4. .include "testutils.inc"
  5. start
  6. imm32 r0, 0x8b235625;
  7. imm32 r1, 0x93ba5127;
  8. imm32 r2, 0xa3446725;
  9. imm32 r3, 0x00050027;
  10. imm32 r4, 0xb0ab6d29;
  11. imm32 r5, 0x10ace72b;
  12. imm32 r6, 0xc00c008d;
  13. imm32 r7, 0xd2467029;
  14. R1 = R0.L * R0.L, R0 = R0.L * R0.L (ISS2);
  15. R3 = R0.L * R1.L, R2 = R0.L * R1.H (ISS2);
  16. R5 = R1.L * R0.L, R4 = R1.H * R0.L (ISS2);
  17. R7 = R1.L * R1.L, R6 = R1.H * R1.H (ISS2);
  18. CHECKREG r0, 0x39F9C2B2;
  19. CHECKREG r1, 0x39F9C2B2;
  20. CHECKREG r2, 0xE43C0244;
  21. CHECKREG r3, 0x1D5C8788;
  22. CHECKREG r4, 0xE43C0244;
  23. CHECKREG r5, 0x1D5C8788;
  24. CHECKREG r6, 0x1A41A862;
  25. CHECKREG r7, 0x1D5C8788;
  26. imm32 r0, 0x5b33a635;
  27. imm32 r1, 0x6fbe5137;
  28. imm32 r2, 0x1324b735;
  29. imm32 r3, 0x9006d037;
  30. imm32 r4, 0x80abcb39;
  31. imm32 r5, 0xb0acef3b;
  32. imm32 r6, 0xa00c00dd;
  33. imm32 r7, 0x12469003;
  34. R1 = R2.L * R2.L, R0 = R2.L * R2.L (ISS2);
  35. R3 = R2.L * R3.L, R2 = R2.L * R3.H (ISS2);
  36. R5 = R3.L * R2.L, R4 = R3.H * R2.L (ISS2);
  37. R7 = R3.L * R3.L, R6 = R3.H * R3.H (ISS2);
  38. CHECKREG r0, 0x2965A1F2;
  39. CHECKREG r1, 0x2965A1F2;
  40. CHECKREG r2, 0x3FAE367C;
  41. CHECKREG r3, 0x1B2CD8C6;
  42. CHECKREG r4, 0x0B90E2A0;
  43. CHECKREG r5, 0xEF4D87D0;
  44. CHECKREG r6, 0x05C49F20;
  45. CHECKREG r7, 0x0C057248;
  46. imm32 r0, 0x1b235655;
  47. imm32 r1, 0xc4ba5157;
  48. imm32 r2, 0x63246755;
  49. imm32 r3, 0x00060055;
  50. imm32 r4, 0x90abc509;
  51. imm32 r5, 0x10acef5b;
  52. imm32 r6, 0xb00c005d;
  53. imm32 r7, 0x1246705f;
  54. R1 = R4.L * R4.L, R0 = R4.L * R4.L (ISS2);
  55. R3 = R4.L * R5.L, R2 = R4.L * R5.H (ISS2);
  56. R5 = R5.L * R4.L, R4 = R5.H * R4.L (ISS2);
  57. R7 = R5.L * R5.L, R6 = R5.H * R5.H (ISS2);
  58. CHECKREG r0, 0x1B29B4A2;
  59. CHECKREG r1, 0x1B29B4A2;
  60. CHECKREG r2, 0xF851E418;
  61. CHECKREG r3, 0x07AAE266;
  62. CHECKREG r4, 0xF851E418;
  63. CHECKREG r5, 0x07AAE266;
  64. CHECKREG r6, 0x007579C8;
  65. CHECKREG r7, 0x06D88148;
  66. imm32 r0, 0xab235666;
  67. imm32 r1, 0xeaba5166;
  68. imm32 r2, 0x13d48766;
  69. imm32 r3, 0xf00b0066;
  70. imm32 r4, 0x90ab9d69;
  71. imm32 r5, 0x10ac5f6b;
  72. imm32 r6, 0x800cb66d;
  73. imm32 r7, 0x1246707f;
  74. R1 = R6.L * R6.L, R0 = R6.L * R6.L (ISS2);
  75. R3 = R6.L * R7.L, R2 = R6.L * R7.H (ISS2);
  76. R5 = R7.L * R6.L, R4 = R7.H * R6.L (ISS2);
  77. R7 = R7.L * R7.L, R6 = R7.H * R7.H (ISS2);
  78. CHECKREG r0, 0x2A4A54D2;
  79. CHECKREG r1, 0x2A4A54D2;
  80. CHECKREG r2, 0xF57F179C;
  81. CHECKREG r3, 0xBF566026;
  82. CHECKREG r4, 0xF57F179C;
  83. CHECKREG r5, 0xBF566026;
  84. CHECKREG r6, 0x029BD648;
  85. CHECKREG r7, 0x62DEBE02;
  86. // mix order
  87. imm32 r0, 0xab23a675;
  88. imm32 r1, 0xcfba5127;
  89. imm32 r2, 0x13246705;
  90. imm32 r3, 0x00060007;
  91. imm32 r4, 0x90abcd09;
  92. imm32 r5, 0x10acdfdb;
  93. imm32 r6, 0x000c000d;
  94. imm32 r7, 0x1246f00f;
  95. R1 = R3.L * R2.L (M), R0 = R3.L * R2.H (ISS2);
  96. R3 = R1.L * R0.H, R2 = R1.H * R0.L (ISS2);
  97. R5 = R7.H * R4.L, R4 = R7.H * R4.L (ISS2);
  98. R7 = R5.L * R6.L (M), R6 = R5.H * R6.L (ISS2);
  99. CHECKREG r0, 0x00010BF8;
  100. CHECKREG r1, 0x0005A246;
  101. CHECKREG r2, 0x000077B0;
  102. CHECKREG r3, 0xFFFF448C;
  103. CHECKREG r4, 0xF8B964EC;
  104. CHECKREG r5, 0xF8B964EC;
  105. CHECKREG r6, 0xFFFF42CA;
  106. CHECKREG r7, 0x000A3FF8;
  107. imm32 r0, 0x9b235a75;
  108. imm32 r1, 0xc9ba5127;
  109. imm32 r2, 0x13946905;
  110. imm32 r3, 0x00090007;
  111. imm32 r4, 0x90ab9d09;
  112. imm32 r5, 0x10ace9db;
  113. imm32 r6, 0x000c0d9d;
  114. imm32 r7, 0x12467009;
  115. R3 = R6.L * R5.L, R2 = R6.L * R5.H (ISS2);
  116. R1 = R3.L * R0.H (M), R0 = R3.H * R0.L (ISS2);
  117. R5 = R1.L * R4.L (M), R4 = R1.H * R4.L (ISS2);
  118. R7 = R2.H * R7.L, R6 = R2.H * R7.L (ISS2);
  119. CHECKREG r0, 0xFE55DCD2;
  120. CHECKREG r1, 0x18FCF734;
  121. CHECKREG r2, 0x01C5EAF8;
  122. CHECKREG r3, 0xFDA5149E;
  123. CHECKREG r4, 0xECAED9B8;
  124. CHECKREG r5, 0xF53529A8;
  125. CHECKREG r6, 0x018C7FDA;
  126. CHECKREG r7, 0x018C7FDA;
  127. imm32 r0, 0x8b235675;
  128. imm32 r1, 0xc8ba5127;
  129. imm32 r2, 0x13846705;
  130. imm32 r3, 0x00080007;
  131. imm32 r4, 0x90ab8d09;
  132. imm32 r5, 0x10ace8db;
  133. imm32 r6, 0x000c008d;
  134. imm32 r7, 0x12467008;
  135. R3 = R6.H * R5.L, R2 = R6.L * R5.H (ISS2);
  136. R7 = R2.L * R0.H (M), R6 = R2.H * R0.L (ISS2);
  137. R5 = R1.L * R3.L (M), R4 = R1.H * R3.L (ISS2);
  138. R1 = R2.H * R7.L, R0 = R2.L * R7.H (ISS2);
  139. CHECKREG r0, 0x4A306970;
  140. CHECKREG r1, 0xFFFB5540;
  141. CHECKREG r2, 0x00125D78;
  142. CHECKREG r3, 0xFFFDD488;
  143. CHECKREG r4, 0x12C555A0;
  144. CHECKREG r5, 0x7FFFFFFF;
  145. CHECKREG r6, 0x000C2874;
  146. CHECKREG r7, 0x6599DED0;
  147. imm32 r0, 0xeb235675;
  148. imm32 r1, 0xceba5127;
  149. imm32 r2, 0x13e46705;
  150. imm32 r3, 0x000e0007;
  151. imm32 r4, 0x90abed09;
  152. imm32 r5, 0x10aceedb;
  153. imm32 r6, 0x000c00ed;
  154. imm32 r7, 0x1246700e;
  155. R1 = R1.H * R4.L, R0 = R1.H * R4.L (ISS2);
  156. R3 = R2.L * R5.L, R2 = R2.L * R5.H (ISS2);
  157. R5 = R3.H * R6.L, R4 = R3.L * R6.L (ISS2);
  158. R7 = R4.L * R0.H, R6 = R4.H * R0.L (ISS2);
  159. CHECKREG r0, 0x074CED14;
  160. CHECKREG r1, 0x074CED14;
  161. CHECKREG r2, 0x0D6B0EB8;
  162. CHECKREG r3, 0xF2338E8E;
  163. CHECKREG r4, 0xFF2DF2EC;
  164. CHECKREG r5, 0xFFE6726E;
  165. CHECKREG r6, 0x001F3108;
  166. CHECKREG r7, 0xFF412420;
  167. pass