c_dsp32mac_dr_a0.s 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. //Original:/testcases/core/c_dsp32mac_dr_a0/c_dsp32mac_dr_a0.dsp
  2. // Spec Reference: dsp32mac dr_a0
  3. # mach: bfin
  4. .include "testutils.inc"
  5. start
  6. imm32 r0, 0xab235675;
  7. imm32 r1, 0xcaba5127;
  8. imm32 r2, 0x13a46705;
  9. imm32 r3, 0x000a0007;
  10. imm32 r4, 0x90abad09;
  11. imm32 r5, 0x10aceadb;
  12. imm32 r6, 0x000c00ad;
  13. imm32 r7, 0x1246700a;
  14. A1 = A0 = 0;
  15. // The result accumulated in A1 , and stored to a reg half
  16. imm32 r0, 0xb3545abd;
  17. imm32 r1, 0xabbcfec7;
  18. imm32 r2, 0xa1b45679;
  19. imm32 r3, 0x000b0007;
  20. imm32 r4, 0xefbcb569;
  21. imm32 r5, 0x12350b0b;
  22. imm32 r6, 0x000c00bd;
  23. imm32 r7, 0x678e000b;
  24. A1 = R1.L * R0.L, R0.L = ( A0 = R1.L * R0.L );
  25. R1 = A0.w;
  26. A1 -= R2.L * R3.L, R2.L = ( A0 = R2.H * R3.L );
  27. R3 = A0.w;
  28. A1 = R4.L * R5.L, R4.L = ( A0 += R4.H * R5.H );
  29. R5 = A0.w;
  30. A1 = R6.L * R7.L, R6.L = ( A0 = R6.L * R7.H );
  31. R7 = A0.w;
  32. CHECKREG r0, 0xB354FF22;
  33. CHECKREG r1, 0xFF221DD6;
  34. CHECKREG r2, 0xA1B4FFFB;
  35. CHECKREG r3, 0xFFFAD7D8;
  36. CHECKREG r4, 0xEFBCFDAB;
  37. CHECKREG r5, 0xFDAA8BB0;
  38. CHECKREG r6, 0x000C0099;
  39. CHECKREG r7, 0x0098E7AC;
  40. imm32 r0, 0xc3545abd;
  41. imm32 r1, 0xacbcfec7;
  42. imm32 r2, 0xa1c45679;
  43. imm32 r3, 0x000c0007;
  44. imm32 r4, 0xefbcc569;
  45. imm32 r5, 0x12350c0b;
  46. imm32 r6, 0x000c00cd;
  47. imm32 r7, 0x678e000c;
  48. A1 = R1.L * R0.H, R0.L = ( A0 = R1.L * R0.L );
  49. R1 = A0.w;
  50. A1 -= R2.L * R3.H, R2.L = ( A0 -= R2.H * R3.L );
  51. R3 = A0.w;
  52. A1 = R4.H * R5.H, R4.L = ( A0 += R4.H * R5.H );
  53. R5 = A0.w;
  54. A1 -= R6.H * R7.H, R6.L = ( A0 += R6.L * R7.H );
  55. R7 = A0.w;
  56. CHECKREG r0, 0xC354FF22;
  57. CHECKREG r1, 0xFF221DD6;
  58. CHECKREG r2, 0xA1C4FF27;
  59. CHECKREG r3, 0xFF27451E;
  60. CHECKREG r4, 0xEFBCFCD7;
  61. CHECKREG r5, 0xFCD6F8F6;
  62. CHECKREG r6, 0x000CFD7D;
  63. CHECKREG r7, 0xFD7CD262;
  64. imm32 r0, 0xd3545abd;
  65. imm32 r1, 0xadbcfec7;
  66. imm32 r2, 0xa1d45679;
  67. imm32 r3, 0x000d0007;
  68. imm32 r4, 0xefbcd569;
  69. imm32 r5, 0x12350d0b;
  70. imm32 r6, 0x000c00dd;
  71. imm32 r7, 0x678e000d;
  72. A1 += R1.H * R0.L, R0.L = ( A0 -= R1.L * R0.L );
  73. R1 = A0.w;
  74. A1 = R2.H * R3.H, R2.L = ( A0 -= R2.H * R3.L );
  75. R3 = A0.w;
  76. A1 -= R4.H * R5.L, R4.L = ( A0 -= R4.H * R5.H );
  77. R5 = A0.w;
  78. A1 += R6.H * R7.L, R6.L = ( A0 = R6.L * R7.H );
  79. R7 = A0.w;
  80. CHECKREG r0, 0xD354FE5B;
  81. CHECKREG r1, 0xFE5AB48C;
  82. CHECKREG r2, 0xA1D4FE60;
  83. CHECKREG r3, 0xFE5FDAF4;
  84. CHECKREG r4, 0xEFBC00B0;
  85. CHECKREG r5, 0x00B0271C;
  86. CHECKREG r6, 0x000C00B3;
  87. CHECKREG r7, 0x00B2CB2C;
  88. imm32 r0, 0xe3545abd;
  89. imm32 r1, 0xaebcfec7;
  90. imm32 r2, 0xa1e45679;
  91. imm32 r3, 0x000e0007;
  92. imm32 r4, 0xefbce569;
  93. imm32 r5, 0x12350e0b;
  94. imm32 r6, 0x000c00ed;
  95. imm32 r7, 0x678e000e;
  96. A1 = R1.H * R0.H, R0.L = ( A0 = R1.L * R0.L );
  97. R1 = A0.w;
  98. A1 += R2.H * R3.H, R2.L = ( A0 += R2.H * R3.L );
  99. R3 = A0.w;
  100. A1 = R4.H * R5.H, R4.L = ( A0 = R4.H * R5.H );
  101. R5 = A0.w;
  102. A1 = R6.H * R7.H, R6.L = ( A0 -= R6.L * R7.H );
  103. R7 = A0.w;
  104. CHECKREG r0, 0xE354FF22;
  105. CHECKREG r1, 0xFF221DD6;
  106. CHECKREG r2, 0xA1E4FF1D;
  107. CHECKREG r3, 0xFF1CF84E;
  108. CHECKREG r4, 0xEFBCFDB0;
  109. CHECKREG r5, 0xFDAFB3D8;
  110. CHECKREG r6, 0x000CFCF0;
  111. CHECKREG r7, 0xFCEFF6EC;
  112. pass