nudivi.cgs 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. # frv testcase for nudivi $GRi,$s12,$GRk
  2. # mach: fr500 fr550 frv
  3. .include "testutils.inc"
  4. start
  5. .global nudivi
  6. nudivi:
  7. set_spr_immed 0,gner0
  8. set_spr_immed 0,gner1
  9. ; simple division 12 / 3
  10. set_gr_immed 0x0000000c,gr3
  11. nudivi gr3,3,gr3
  12. test_gr_immed 0x00000004,gr3
  13. test_spr_immed 0,gner0
  14. test_spr_immed 0,gner1
  15. ; random example
  16. set_gr_limmed 0xfedc,0xba98,gr3
  17. nudivi gr3,0x7ff,gr3
  18. test_gr_limmed 0x001f,0xdf93,gr3
  19. test_spr_immed 0,gner0
  20. test_spr_immed 0,gner1
  21. ; random example
  22. set_gr_limmed 0xffff,0xffff,gr3
  23. nudivi gr3,-2048,gr3
  24. test_gr_immed 1,gr3
  25. test_spr_immed 0,gner0
  26. test_spr_immed 0,gner1
  27. or_spr_immed 0x20,isr ; turn on isr.edem
  28. nudivi gr1,0,gr32 ; divide by zero
  29. test_spr_immed 1,gner0
  30. test_spr_immed 0,gner1
  31. and_spr_immed -33,isr ; turn off isr.edem
  32. nudivi gr1,0,gr10 ; divide by zero
  33. test_spr_immed 1,gner0
  34. test_spr_immed 0x00000400,gner1
  35. ; simple division 12 / 3 -- should turn off ne flag
  36. set_gr_immed 12,gr1
  37. nudivi gr1,3,gr10
  38. test_gr_immed 4,gr10
  39. test_spr_immed 1,gner0
  40. test_spr_immed 0,gner1
  41. pass