fpu64-ps-sb1.s 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. # mips test sanity, expected to pass.
  2. # mach: sb1
  3. # as: -mabi=eabi
  4. # ld: -N -Ttext=0x80010000
  5. # output: *\\npass\\n
  6. .include "testutils.inc"
  7. .macro check_ps psval, upperval, lowerval
  8. .set push
  9. .set noreorder
  10. cvt.s.pu $f0, \psval # upper
  11. cvt.s.pl $f2, \psval # lower
  12. li.s $f4, \upperval
  13. li.s $f6, \lowerval
  14. c.eq.s $fcc0, $f0, $f4
  15. bc1f $fcc0, _fail
  16. c.eq.s $fcc0, $f2, $f6
  17. bc1f $fcc0, _fail
  18. nop
  19. .set pop
  20. .endm
  21. setup
  22. .set noreorder
  23. .ent DIAG
  24. DIAG:
  25. # make sure that Status.FR, .CU1, and .SBX are set.
  26. mfc0 $2, $12
  27. or $2, $2, (1 << 26) | (1 << 29) | (1 << 16)
  28. mtc0 $2, $12
  29. li.s $f10, 4.0
  30. li.s $f12, 16.0
  31. cvt.ps.s $f20, $f10, $f12 # $f20: u=4.0, l=16.0
  32. li.s $f10, -1.0
  33. li.s $f12, 2.0
  34. cvt.ps.s $f22, $f10, $f12 # $f22: u=-1.0, l=2.0
  35. writemsg "div.ps"
  36. div.ps $f8, $f20, $f22
  37. check_ps $f8, -4.0, 8.0
  38. writemsg "recip.ps"
  39. recip.ps $f8, $f20
  40. check_ps $f8, 0.25, 0.0625
  41. writemsg "rsqrt.ps"
  42. rsqrt.ps $f8, $f20
  43. check_ps $f8, 0.5, 0.25
  44. writemsg "sqrt.ps"
  45. sqrt.ps $f8, $f20
  46. check_ps $f8, 2.0, 4.0
  47. pass
  48. .end DIAG