m10.s 970 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. # mach: bfin
  2. // Test extraction from accumulators:
  3. // ROUND/TRUNCATE in UNSIGNED FRACTIONAL mode
  4. // test ops: "+="
  5. .include "testutils.inc"
  6. start
  7. // load r0=0xfffef000
  8. // load r1=0xfffff000
  9. // load r2=0x00008000
  10. // load r3=0x00018000
  11. // load r4=0x0000007f
  12. loadsym P0, data0
  13. R0 = [ P0 ++ ];
  14. R1 = [ P0 ++ ];
  15. R2 = [ P0 ++ ];
  16. R3 = [ P0 ++ ];
  17. R4 = [ P0 ++ ];
  18. // round
  19. // 0x00fffef000 -> 0xffff
  20. A1 = A0 = 0;
  21. A1.w = R0;
  22. A0.w = R0;
  23. R5.H = A1, R5.L = A0 (FU);
  24. DBGA ( R5.L , 0xffff );
  25. DBGA ( R5.H , 0xffff );
  26. // truncate
  27. // 0x00fffef00 -> 0xfffe
  28. A1 = A0 = 0;
  29. A1.w = R0;
  30. A0.w = R0;
  31. R5.H = A1, R5.L = A0 (TFU);
  32. DBGA ( R5.L , 0xfffe );
  33. DBGA ( R5.H , 0xfffe );
  34. // round
  35. // 0x00fffff000 -> 0xffff
  36. A1 = A0 = 0;
  37. A1.w = R1;
  38. A0.w = R1;
  39. R5.H = A1, R5.L = A0 (FU);
  40. DBGA ( R5.L , 0xffff );
  41. DBGA ( R5.H , 0xffff );
  42. pass
  43. .data;
  44. data0:
  45. .dw 0xf000
  46. .dw 0xfffe
  47. .dw 0xf000
  48. .dw 0xffff
  49. .dw 0x8000
  50. .dw 0x0000
  51. .dw 0x8000
  52. .dw 0x0001
  53. .dw 0x007f
  54. .dw 0x0000