a21.s 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. // Test ALU RND RND12 RND20
  2. # mach: bfin
  3. .include "testutils.inc"
  4. start
  5. // positive saturation
  6. R0 = 0xffffffff;
  7. A0.w = R0;
  8. A1.w = R0;
  9. R0 = 0x7f (X);
  10. A0.x = R0;
  11. A1.x = R0;
  12. R3 = A1 + A0, R4 = A1 - A0 (S);
  13. DBGA ( R3.H , 0x7fff ); DBGA ( R3.L , 0xffff );
  14. DBGA ( R4.H , 0x0000 ); DBGA ( R4.L , 0x0000 );
  15. // neg saturation
  16. R0 = 0;
  17. A0.w = R0;
  18. A1.w = R0;
  19. R0 = 0x80 (X);
  20. A0.x = R0;
  21. A1.x = R0;
  22. R3 = A1 + A0, R4 = A1 - A0 (S);
  23. DBGA ( R3.H , 0x8000 ); DBGA ( R3.L , 0x0000 );
  24. DBGA ( R4.H , 0x0000 ); DBGA ( R4.L , 0x0000 );
  25. // positive saturation
  26. R0 = 0xfffffff0;
  27. A0.w = R0;
  28. A1.w = R0;
  29. R0 = 0x01;
  30. A0.x = R0;
  31. A1.x = R0;
  32. R3 = A1 + A0, R4 = A1 - A0 (S);
  33. DBGA ( R3.H , 0x7fff ); DBGA ( R3.L , 0xffff );
  34. DBGA ( R4.H , 0x0000 ); DBGA ( R4.L , 0x0000 );
  35. // no sat
  36. R0 = 0xfffffff0;
  37. A0.w = R0;
  38. A1.w = R0;
  39. R0 = 0x01;
  40. A0.x = R0;
  41. A1.x = R0;
  42. R3 = A1 + A0, R4 = A1 - A0 (NS);
  43. DBGA ( R3.H , 0xffff ); DBGA ( R3.L , 0xffe0 );
  44. DBGA ( R4.H , 0x0000 ); DBGA ( R4.L , 0x0000 );
  45. // add and sub +1 -1
  46. R0 = 0x00000001;
  47. A0.w = R0;
  48. R0 = 0xffffffff;
  49. A1.w = R0;
  50. R0 = 0;
  51. A0.x = R0;
  52. R0 = 0xff (X);
  53. A1.x = R0;
  54. R3 = A1 + A0, R4 = A1 - A0 (NS);
  55. DBGA ( R3.H , 0x0000 ); DBGA ( R3.L , 0x0000 ); // 0
  56. DBGA ( R4.H , 0xffff ); DBGA ( R4.L , 0xfffe ); // -2
  57. // should get the same with saturation
  58. R3 = A1 + A0, R4 = A1 - A0 (S);
  59. DBGA ( R3.H , 0x0000 ); DBGA ( R3.L , 0x0000 ); // 0
  60. DBGA ( R4.H , 0xffff ); DBGA ( R4.L , 0xfffe ); // -2
  61. // add and sub -1 +1 but with reverse order of A0 A1
  62. R0 = 0x00000001;
  63. A0.w = R0;
  64. R0 = 0xffffffff;
  65. A1.w = R0;
  66. R0 = 0;
  67. A0.x = R0;
  68. R0 = 0xff (X);
  69. A1.x = R0;
  70. R3 = A0 + A1, R4 = A0 - A1 (NS);
  71. DBGA ( R3.H , 0x0000 ); DBGA ( R3.L , 0x0000 );
  72. DBGA ( R4.H , 0x0000 ); DBGA ( R4.L , 0x0002 );
  73. pass