fsub.s 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. # sh testcase for fsub
  2. # mach: sh
  3. # as(sh): -defsym sim_cpu=0
  4. .include "testutils.inc"
  5. start
  6. fsub_single:
  7. set_grs_a5a5
  8. set_fprs_a5a5
  9. # 0.0 - 0.0 = 0.0.
  10. fldi0 fr0
  11. fldi0 fr1
  12. fsub fr0, fr1
  13. fldi0 fr2
  14. fcmp/eq fr1, fr2
  15. bt .L0
  16. fail
  17. .L0:
  18. # 1.0 - 0.0 = 1.0.
  19. fldi0 fr0
  20. fldi1 fr1
  21. fsub fr0, fr1
  22. fldi1 fr2
  23. fcmp/eq fr1, fr2
  24. bt .L1
  25. fail
  26. .L1:
  27. # 1.0 - 1.0 = 0.0.
  28. fldi1 fr0
  29. fldi1 fr1
  30. fsub fr0, fr1
  31. fldi0 fr2
  32. fcmp/eq fr1, fr2
  33. bt .L2
  34. fail
  35. .L2:
  36. # 0.0 - 1.0 = -1.0.
  37. fldi1 fr0
  38. fldi0 fr1
  39. fsub fr0, fr1
  40. fldi1 fr2
  41. fneg fr2
  42. fcmp/eq fr1, fr2
  43. bt .L3
  44. fail
  45. .L3:
  46. test_grs_a5a5
  47. assert_fpreg_i 1, fr0
  48. assert_fpreg_i -1, fr1
  49. assert_fpreg_i -1, fr2
  50. test_fpr_a5a5 fr3
  51. test_fpr_a5a5 fr4
  52. test_fpr_a5a5 fr5
  53. test_fpr_a5a5 fr6
  54. test_fpr_a5a5 fr7
  55. test_fpr_a5a5 fr8
  56. test_fpr_a5a5 fr9
  57. test_fpr_a5a5 fr10
  58. test_fpr_a5a5 fr11
  59. test_fpr_a5a5 fr12
  60. test_fpr_a5a5 fr13
  61. test_fpr_a5a5 fr14
  62. test_fpr_a5a5 fr15
  63. fsub_double:
  64. set_grs_a5a5
  65. set_fprs_a5a5
  66. double_prec
  67. # 0.0 - 0.0 = 0.0.
  68. fldi0 fr0
  69. fldi0 fr2
  70. _s2d fr0, dr0
  71. _s2d fr2, dr2
  72. fsub dr0, dr2
  73. fldi0 fr4
  74. _s2d fr4, dr4
  75. fcmp/eq dr2, dr4
  76. bt .L10
  77. fail
  78. .L10:
  79. # 1.0 - 0.0 = 1.0.
  80. fldi0 fr0
  81. fldi1 fr2
  82. _s2d fr0, dr0
  83. _s2d fr2, dr2
  84. fsub dr0, dr2
  85. fldi1 fr4
  86. _s2d fr4, dr4
  87. fcmp/eq dr2, dr4
  88. bt .L11
  89. fail
  90. .L11:
  91. # 1.0 - 1.0 = 0.0.
  92. fldi1 fr0
  93. fldi1 fr2
  94. _s2d fr0, dr0
  95. _s2d fr2, dr2
  96. fsub dr0, dr2
  97. fldi0 fr4
  98. _s2d fr4, dr4
  99. fcmp/eq dr2, dr4
  100. bt .L12
  101. fail
  102. .L12:
  103. # 0.0 - 1.0 = -1.0.
  104. fldi1 fr0
  105. fldi0 fr2
  106. _s2d fr0, dr0
  107. _s2d fr2, dr2
  108. fsub dr0, dr2
  109. fldi1 fr4
  110. single_prec
  111. fneg fr4
  112. double_prec
  113. _s2d fr4, dr4
  114. fcmp/eq dr2, dr4
  115. bt .L13
  116. fail
  117. .L13:
  118. test_grs_a5a5
  119. assert_dpreg_i 1, dr0
  120. assert_dpreg_i -1, dr2
  121. assert_dpreg_i -1, dr4
  122. test_fpr_a5a5 fr6
  123. test_fpr_a5a5 fr7
  124. test_fpr_a5a5 fr8
  125. test_fpr_a5a5 fr9
  126. test_fpr_a5a5 fr10
  127. test_fpr_a5a5 fr11
  128. test_fpr_a5a5 fr12
  129. test_fpr_a5a5 fr13
  130. test_fpr_a5a5 fr14
  131. test_fpr_a5a5 fr15
  132. pass
  133. exit 0