s3.s 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. // SHIFT test program.
  2. // Test A0 = ASHIFT (A0 by r3);
  3. # mach: bfin
  4. .include "testutils.inc"
  5. start
  6. // load r0=0x0000001f
  7. // load r1=0x00000020
  8. // load r2=0x00000000
  9. // load r3=0x00000000
  10. // load r4=0x00000001
  11. // load r5=0x00000080
  12. loadsym P0, data0;
  13. P1 = P0;
  14. R0 = [ P0 ++ ];
  15. R1 = [ P0 ++ ];
  16. R2 = [ P0 ++ ];
  17. R3 = [ P0 ++ ];
  18. R4 = [ P0 ++ ];
  19. R5 = [ P0 ++ ];
  20. // left by largest positive magnitude of 31 (0x1f)
  21. // A0: 80 0000 0001 -> 80 0000 0000
  22. R7 = 0;
  23. ASTAT = R7;
  24. A0.w = R4;
  25. A0.x = R5.L;
  26. A0 = ASHIFT A0 BY R0.L;
  27. R6 = A0.w;
  28. R7.L = A0.x;
  29. DBGA ( R6.L , 0x0000 );
  30. DBGA ( R6.H , 0x8000 );
  31. DBGA ( R7.L , 0x0000 );
  32. CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 );
  33. CC = AN; R7 = CC; DBGA ( R7.L , 0x0 );
  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. // left by largest positive magnitude + 1 = 32 (0x20), which is -32
  38. // A0: 80 0000 0001 ->
  39. R7 = 0;
  40. ASTAT = R7;
  41. A0.w = R4;
  42. A0.x = R5.L;
  43. A0 = ASHIFT A0 BY R1.L;
  44. R6 = A0.w;
  45. R7.L = A0.x;
  46. DBGA ( R6.L , 0xff80 );
  47. DBGA ( R6.H , 0xffff );
  48. DBGA ( R7.L , 0xffff );
  49. CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 );
  50. CC = AN; R7 = CC; DBGA ( R7.L , 0x1 );
  51. CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 );
  52. CC = AV0; R7 = CC; DBGA ( R7.L , 0x0 );
  53. CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 );
  54. // by -1
  55. // A0: 80 0000 0001 -> c0 0000 0000
  56. A0.w = R4;
  57. A0.x = R5.L;
  58. R3.L = 0x00ff;
  59. A0 = ASHIFT A0 BY R3.L;
  60. R6 = A0.w;
  61. R7.L = A0.x;
  62. DBGA ( R6.L , 0x0000 );
  63. DBGA ( R6.H , 0x0000 );
  64. DBGA ( R7.L , 0xffc0 );
  65. pass
  66. .data
  67. data0:
  68. .dw 0x001f
  69. .dw 0x0000
  70. .dw 0x0020
  71. .dw 0x0000
  72. .dw 0x0059
  73. .dw 0x0000
  74. .dw 0x005a
  75. .dw 0x0000
  76. .dw 0x0001
  77. .dw 0x0000
  78. .dw 0x0080
  79. .dw 0x0000