t-sub.s 748 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. # mach: all
  2. # output:
  3. # sim: --environment operating
  4. .include "t-macros.i"
  5. start
  6. ;; The d10v implements negated addition for subtraction
  7. .macro check_sub s x y r c
  8. ;; clear carry
  9. ldi r6,#0x8004
  10. mvtc r6,cr0
  11. ;; subtract
  12. ldi r10,#\x
  13. ldi r11,#\y
  14. sub r10, r11
  15. ;; verify result
  16. ldi r12, #\r
  17. cmpeq r10, r12
  18. brf0t 1f
  19. ldi r6, 1
  20. ldi r2, #\s
  21. trap 15
  22. 1:
  23. ;; verify carry
  24. mvfc r6, cr0
  25. and3 r6, r6, #1
  26. cmpeqi r6, #\c
  27. brf0t 1f
  28. ldi r6, 1
  29. ldi r2, #\s
  30. trap 15
  31. 1:
  32. .endm
  33. check_sub 1 0x0000 0x0000 0x0000 1
  34. check_sub 2 0x0000 0x0001 0xffff 0
  35. check_sub 3 0x0001 0x0000 0x0001 1
  36. check_sub 4 0x0001 0x0001 0x0000 1
  37. check_sub 5 0x0000 0x8000 0x8000 0
  38. check_sub 6 0x8000 0x0001 0x7fff 1
  39. check_sub 7 0x7fff 0x7fff 0x0000 1
  40. exit0