fminnm.s 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. # mach: aarch64
  2. # Check the FP min/max number instructions: fminnm, fmaxnm, dminnm, dmaxnm.
  3. # For min, check 2/1, 1/0, -1/-Inf.
  4. # For max, check 1/2, -1/0, 1/+inf.
  5. .include "testutils.inc"
  6. start
  7. fmov s0, #2.0
  8. fmov s1, #1.0
  9. fminnm s2, s0, s1
  10. fcmp s2, s1
  11. bne .Lfailure
  12. fmov d0, #2.0
  13. fmov d1, #1.0
  14. fminnm d2, d0, d1
  15. fcmp d2, d1
  16. bne .Lfailure
  17. fmov s0, #1.0
  18. fmov s1, wzr
  19. fminnm s2, s0, s1
  20. fcmp s2, s1
  21. bne .Lfailure
  22. fmov d0, #1.0
  23. fmov d1, xzr
  24. fminnm d2, d0, d1
  25. fcmp d2, d1
  26. bne .Lfailure
  27. fmov s0, #-1.0
  28. fmov s1, wzr
  29. fdiv s1, s0, s1
  30. fminnm s2, s0, s1
  31. fcmp s2, s1
  32. bne .Lfailure
  33. fmov d0, #-1.0
  34. fmov d1, xzr
  35. fdiv d1, d0, d1
  36. fminnm d1, d0, d1
  37. fcmp d0, d0
  38. bne .Lfailure
  39. fmov s0, #1.0
  40. fmov s1, #2.0
  41. fmaxnm s2, s0, s1
  42. fcmp s2, s1
  43. bne .Lfailure
  44. fmov d0, #1.0
  45. fmov d1, #2.0
  46. fmaxnm d2, d0, d1
  47. fcmp d2, d1
  48. bne .Lfailure
  49. fmov s0, #-1.0
  50. fmov s1, wzr
  51. fmaxnm s2, s0, s1
  52. fcmp s2, s1
  53. bne .Lfailure
  54. fmov d0, #-1.0
  55. fmov d1, xzr
  56. fmaxnm d2, d0, d1
  57. fcmp d2, d1
  58. bne .Lfailure
  59. fmov s0, #1.0
  60. fmov s1, wzr
  61. fdiv s1, s0, s1
  62. fmaxnm s2, s0, s1
  63. fcmp s2, s1
  64. bne .Lfailure
  65. fmov d0, #1.0
  66. fmov d1, xzr
  67. fdiv d1, d0, d1
  68. fmaxnm d1, d0, d1
  69. fcmp d0, d0
  70. bne .Lfailure
  71. pass
  72. .Lfailure:
  73. fail