fmac.s 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. # sh testcase for fmac
  2. # mach: sh
  3. # as(sh): -defsym sim_cpu=0
  4. .include "testutils.inc"
  5. start
  6. fmac_:
  7. set_grs_a5a5
  8. set_fprs_a5a5
  9. # 0.0 * x + y = y.
  10. fldi0 fr0
  11. fldi1 fr1
  12. fldi1 fr2
  13. fmac fr0, fr1, fr2
  14. # check result.
  15. fldi1 fr0
  16. fcmp/eq fr0, fr2
  17. bt .L0
  18. fail
  19. .L0:
  20. # x * y + 0.0 = x * y.
  21. fldi1 fr0
  22. fldi1 fr1
  23. fldi0 fr2
  24. # double it.
  25. fadd fr1, fr2
  26. fmac fr0, fr1, fr2
  27. # check result.
  28. fldi1 fr0
  29. fadd fr0, fr0
  30. fcmp/eq fr0, fr2
  31. bt .L1
  32. fail
  33. .L1:
  34. # x * 0.0 + y = y.
  35. fldi1 fr0
  36. fldi0 fr1
  37. fldi1 fr2
  38. fadd fr2, fr2
  39. fmac fr0, fr1, fr2
  40. # check result.
  41. fldi1 fr0
  42. # double fr0.
  43. fadd fr0, fr0
  44. fcmp/eq fr0, fr2
  45. bt .L2
  46. fail
  47. .L2:
  48. # x * 0.0 + 0.0 = 0.0
  49. fldi1 fr0
  50. fadd fr0, fr0
  51. fldi0 fr1
  52. fldi0 fr2
  53. fmac fr0, fr1, fr2
  54. # check result.
  55. fldi0 fr0
  56. fcmp/eq fr0, fr2
  57. bt .L3
  58. fail
  59. .L3:
  60. # 0.0 * x + 0.0 = 0.0.
  61. fldi0 fr0
  62. fldi1 fr1
  63. # double it.
  64. fadd fr1, fr1
  65. fldi0 fr2
  66. fmac fr0, fr1, fr2
  67. # check result.
  68. fldi0 fr0
  69. fcmp/eq fr0, fr2
  70. bt .L4
  71. fail
  72. .L4:
  73. test_grs_a5a5
  74. assert_fpreg_i 0, fr0
  75. assert_fpreg_i 2, fr1
  76. assert_fpreg_i 0, fr2
  77. test_fpr_a5a5 fr3
  78. test_fpr_a5a5 fr4
  79. test_fpr_a5a5 fr5
  80. test_fpr_a5a5 fr6
  81. test_fpr_a5a5 fr7
  82. test_fpr_a5a5 fr8
  83. test_fpr_a5a5 fr9
  84. test_fpr_a5a5 fr10
  85. test_fpr_a5a5 fr11
  86. test_fpr_a5a5 fr12
  87. test_fpr_a5a5 fr13
  88. test_fpr_a5a5 fr14
  89. test_fpr_a5a5 fr15
  90. pass
  91. exit 0