byteunpack.s 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. # Blackfin testcase for playing with BYTEUNPACK
  2. # mach: bfin
  3. .include "testutils.inc"
  4. start
  5. .macro _bu_pre_test i0:req, src0:req, src1:req
  6. dmm32 I0, \i0
  7. imm32 R0, \src0
  8. imm32 R1, \src1
  9. .endm
  10. .macro _bu_chk_test dst0:req, dst1:req
  11. imm32 R2, \dst0
  12. imm32 R3, \dst1
  13. CC = R5 == R2;
  14. IF !CC jump 1f;
  15. CC = R6 == R3;
  16. IF !CC jump 1f;
  17. .endm
  18. .macro bu_test i0:req, dst0:req, dst1:req, src0:req, src1:req
  19. _bu_pre_test \i0, \src0, \src1
  20. (R6, R5) = BYTEUNPACK R1:0;
  21. _bu_chk_test \dst0, \dst1
  22. .endm
  23. .macro bu_r_test i0:req, dst0:req, dst1:req, src0:req, src1:req
  24. _bu_pre_test \i0, \src0, \src1
  25. (R6, R5) = BYTEUNPACK R1:0 (R);
  26. _bu_chk_test \dst0, \dst1
  27. .endm
  28. # Taken from PRM
  29. bu_test 0, 0x00BA00DD, 0x00BE00EF, 0xBEEFBADD, 0xFEEDFACE
  30. bu_test 1, 0x00EF00BA, 0x00CE00BE, 0xBEEFBADD, 0xFEEDFACE
  31. bu_test 2, 0x00BE00EF, 0x00FA00CE, 0xBEEFBADD, 0xFEEDFACE
  32. bu_test 3, 0x00CE00BE, 0x00ED00FA, 0xBEEFBADD, 0xFEEDFACE
  33. # Taken from PRM
  34. bu_r_test 0, 0x00FA00CE, 0x00FE00ED, 0xBEEFBADD, 0xFEEDFACE
  35. bu_r_test 1, 0x00ED00FA, 0x00DD00FE, 0xBEEFBADD, 0xFEEDFACE
  36. bu_r_test 2, 0x00FE00ED, 0x00BA00DD, 0xBEEFBADD, 0xFEEDFACE
  37. bu_r_test 3, 0x00DD00FE, 0x00EF00BA, 0xBEEFBADD, 0xFEEDFACE
  38. pass
  39. 1: fail