s18.s 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. // Immediate dual 16b SHIFT test program.
  2. // Test r4 = ASHIFT/ASHIFT (r2 by 10);
  3. // Test r4 = ASHIFT/ASHIFT (r2 by 10) S;
  4. // Test r4 = LSHIFT/LSHIFT (r2 by 10);
  5. # mach: bfin
  6. .include "testutils.inc"
  7. start
  8. // arithmetic
  9. // left by largest positive magnitude of 15 (0xf)
  10. // 8001 -> 8000
  11. R7 = 0;
  12. ASTAT = R7;
  13. R0.L = 0x8001;
  14. R0.H = 0x0100;
  15. R6 = R0 << 15 (V);
  16. DBGA ( R6.L , 0x8000 );
  17. DBGA ( R6.H , 0x0000 );
  18. CC = AZ; R7 = CC; DBGA ( R7.L , 0x1 );
  19. CC = AN; R7 = CC; DBGA ( R7.L , 0x1 );
  20. CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 );
  21. CC = AV0; R7 = CC; DBGA ( R7.L , 0x0 );
  22. CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 );
  23. // arithmetic
  24. // left by largest positive magnitude of 15 (0xf) with saturation
  25. R7 = 0;
  26. ASTAT = R7;
  27. R0.L = 0x8001;
  28. R0.H = 0x0100;
  29. R6 = R0 << 15 (V , S);
  30. DBGA ( R6.L , 0x8000 );
  31. DBGA ( R6.H , 0x7fff );
  32. CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 );
  33. CC = AN; R7 = CC; DBGA ( R7.L , 0x1 );
  34. CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 );
  35. CC = AV0; R7 = CC; DBGA ( R7.L , 0x0 );
  36. CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 );
  37. // arithmetic
  38. // left by 1
  39. R7 = 0;
  40. ASTAT = R7;
  41. R0.L = 0x8001;
  42. R0.H = 0x0100;
  43. R6 = R0 << 1 (V);
  44. DBGA ( R6.L , 0x0002 );
  45. DBGA ( R6.H , 0x0200 );
  46. CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 );
  47. CC = AN; R7 = CC; DBGA ( R7.L , 0x0 );
  48. CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 );
  49. CC = AV0; R7 = CC; DBGA ( R7.L , 0x0 );
  50. CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 );
  51. // arithmetic
  52. // left by 1 saturating
  53. R7 = 0;
  54. ASTAT = R7;
  55. R0.L = 0x8001;
  56. R0.H = 0x0100;
  57. R6 = R0 << 1 (V , S);
  58. DBGA ( R6.L , 0x8000 );
  59. DBGA ( R6.H , 0x0200 );
  60. CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 );
  61. CC = AN; R7 = CC; DBGA ( R7.L , 0x1 );
  62. CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 );
  63. CC = AV0; R7 = CC; DBGA ( R7.L , 0x0 );
  64. CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 );
  65. // arithmetic
  66. // left by 15 saturating
  67. R7 = 0;
  68. ASTAT = R7;
  69. R0.L = 0xfff0;
  70. R0.H = 0x0000;
  71. R6 = R0 << 15 (V , S);
  72. DBGA ( R6.L , 0x8000 );
  73. DBGA ( R6.H , 0x0000 );
  74. CC = AZ; R7 = CC; DBGA ( R7.L , 0x1 );
  75. CC = AN; R7 = CC; DBGA ( R7.L , 0x1 );
  76. CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 );
  77. CC = AV0; R7 = CC; DBGA ( R7.L , 0x0 );
  78. CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 );
  79. // arithmetic
  80. // right by 15
  81. R7 = 0;
  82. ASTAT = R7;
  83. R0.L = 0x8000;
  84. R0.H = 0x0100;
  85. R6 = R0 >>> 15 (V);
  86. DBGA ( R6.L , 0xffff );
  87. DBGA ( R6.H , 0x0000 );
  88. CC = AZ; R7 = CC; DBGA ( R7.L , 0x1 );
  89. CC = AN; R7 = CC; DBGA ( R7.L , 0x1 );
  90. CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 );
  91. CC = AV0; R7 = CC; DBGA ( R7.L , 0x0 );
  92. CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 );
  93. // arithmetic
  94. // right by 15 (sat has no effect)
  95. R7 = 0;
  96. ASTAT = R7;
  97. R0.L = 0x8000;
  98. R0.H = 0x0100;
  99. R6 = R0 >>> 15 (V);
  100. DBGA ( R6.L , 0xffff );
  101. DBGA ( R6.H , 0x0000 );
  102. CC = AZ; R7 = CC; DBGA ( R7.L , 0x1 );
  103. CC = AN; R7 = CC; DBGA ( R7.L , 0x1 );
  104. CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 );
  105. CC = AV0; R7 = CC; DBGA ( R7.L , 0x0 );
  106. CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 );
  107. // logic
  108. // right by 15
  109. R7 = 0;
  110. ASTAT = R7;
  111. R0.L = 0x8000;
  112. R0.H = 0x0100;
  113. R6 = R0 >> 15 (V);
  114. DBGA ( R6.L , 0x0001 );
  115. DBGA ( R6.H , 0x0000 );
  116. CC = AZ; R7 = CC; DBGA ( R7.L , 0x1 );
  117. CC = AN; R7 = CC; DBGA ( R7.L , 0x0 );
  118. CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 );
  119. CC = AV0; R7 = CC; DBGA ( R7.L , 0x0 );
  120. CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 );
  121. pass