dsp_s1.s 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. /* SHIFT test program.
  2. * Test r0, r1, A0 >>= BITMUX;
  3. */
  4. # mach: bfin
  5. .include "testutils.inc"
  6. start
  7. init_r_regs 0;
  8. ASTAT = r0;
  9. // load r0=0x80000009
  10. // load r1=0x10000009
  11. // load r2=0x0000000f
  12. // load r3=0x00000000
  13. // load r4=0x80000008
  14. // load r5=0x00000000
  15. loadsym P0, data0;
  16. loadsym P1, data0;
  17. R0 = [ P0 ++ ];
  18. R1 = [ P0 ++ ];
  19. R2 = [ P0 ++ ];
  20. R3 = [ P0 ++ ];
  21. R4 = [ P0 ++ ];
  22. R5 = [ P0 ++ ];
  23. // insert two bits, both equal to 1
  24. // A0: 00 0000 000f -> c0 0000 0003
  25. // r0: 8000 0009 -> 4000 0004
  26. // r1: 1000 0009 -> 0800 0004
  27. R0 = [ P1 + 0 ];
  28. R1 = [ P1 + 4 ];
  29. A0.w = R2;
  30. A0.x = R3.L;
  31. BITMUX( R0 , R1, A0) (ASR);
  32. R6 = A0.w;
  33. R7.L = A0.x;
  34. DBGA ( R6.L , 0x0003 );
  35. DBGA ( R6.H , 0x0000 );
  36. DBGA ( R7.L , 0xffc0 );
  37. DBGA ( R0.L , 0x0004 );
  38. DBGA ( R0.H , 0x4000 );
  39. DBGA ( R1.L , 0x0004 );
  40. DBGA ( R1.H , 0x0800 );
  41. // insert two bits, one equal to 1, other to 0
  42. // A0: 00 0000 000f -> 40 0000 0003
  43. // r0: 8000 0009 -> 4000 0004
  44. // r4: 8000 0008 -> 4000 0004
  45. R0 = [ P1 + 0 ];
  46. R4 = [ P1 + 16 ];
  47. A0.w = R2;
  48. A0.x = R3.L;
  49. BITMUX( R0 , R4, A0) (ASR);
  50. R6 = A0.w;
  51. R7.L = A0.x;
  52. DBGA ( R6.L , 0x0003 );
  53. DBGA ( R6.H , 0x0000 );
  54. DBGA ( R7.L , 0x0040 );
  55. DBGA ( R0.L , 0x0004 );
  56. DBGA ( R0.H , 0x4000 );
  57. DBGA ( R4.L , 0x0004 );
  58. DBGA ( R4.H , 0x4000 );
  59. pass
  60. .data
  61. data0:
  62. .dw 0x0009
  63. .dw 0x8000
  64. .dw 0x0009
  65. .dw 0x1000
  66. .dw 0x000f
  67. .dw 0x0000
  68. .dw 0x0000
  69. .dw 0x0000
  70. .dw 0x0008
  71. .dw 0x8000
  72. .dw 0x0000
  73. .dw 0x0000