fpu.asm 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. ;Testname=test; Arguments=-fbin -ofpu.bin; Files=stdout stderr fpu.bin
  2. ; relaxed encodings for FPU instructions, which NASM should support
  3. ; -----------------------------------------------------------------
  4. %define void
  5. %define reg_fpu0 st0
  6. %define reg_fpu st1
  7. ; no operands instead of one operand:
  8. ; F(U)COM(P), FCOM2, FCOMP3, FCOMP5
  9. FCOM void
  10. FCOMP void
  11. FUCOM void
  12. FUCOMP void
  13. ; FCOM2 void
  14. ; FCOMP3 void
  15. ; FCOMP5 void
  16. ; FLD, FST, FSTP, FSTP1, FSTP8, FSTP9
  17. FLD void
  18. FST void
  19. FSTP void
  20. ; FSTP1 void
  21. ; FSTP8 void
  22. ; FSTP9 void
  23. ; FXCH, FXCH4, FXCH7, FFREE, FFREEP
  24. FXCH void
  25. ; FXCH4 void
  26. ; FXCH7 void
  27. FFREE void
  28. FFREEP void
  29. ; no operands instead of two operands:
  30. ; FADD(P), FMUL(P), FSUBR(P), FSUB(P), FDIVR(P), FDIV(P)
  31. FADD void
  32. FADDP void
  33. FMUL void
  34. FMULP void
  35. FSUBR void
  36. FSUBRP void
  37. FSUB void
  38. FSUBP void
  39. FDIVR void
  40. FDIVRP void
  41. FDIV void
  42. FDIVP void
  43. ; one operand instead of two operands:
  44. ; FADD, FMUL, FSUB, FSUBR, FDIV, FDIVR
  45. FADD reg_fpu
  46. FMUL reg_fpu
  47. FSUB reg_fpu
  48. FSUBR reg_fpu
  49. FDIV reg_fpu
  50. FDIVR reg_fpu
  51. ; FADD, FMUL, FSUBR, FSUB, FDIVR, FDIV (with TO qualifier)
  52. FADD to reg_fpu
  53. FMUL to reg_fpu
  54. FSUBR to reg_fpu
  55. FSUB to reg_fpu
  56. FDIVR to reg_fpu
  57. FDIV to reg_fpu
  58. ; FADDP, FMULP, FSUBRP, FSUBP, FDIVRP, FDIVP
  59. FADDP reg_fpu
  60. FMULP reg_fpu
  61. FSUBRP reg_fpu
  62. FSUBP reg_fpu
  63. FDIVRP reg_fpu
  64. FDIVP reg_fpu
  65. ; FCMOV(N)B, FCMOV(N)E, FCMOV(N)BE, FCMOV(N)U, and F(U)COMI(P)
  66. FCMOVB reg_fpu
  67. FCMOVNB reg_fpu
  68. FCMOVE reg_fpu
  69. FCMOVNE reg_fpu
  70. FCMOVBE reg_fpu
  71. FCMOVNBE reg_fpu
  72. FCMOVU reg_fpu
  73. FCMOVNU reg_fpu
  74. FCOMI reg_fpu
  75. FCOMIP reg_fpu
  76. FUCOMI reg_fpu
  77. FUCOMIP reg_fpu
  78. ; two operands instead of one operand:
  79. ; these don't really exist, and thus are _NOT_ supported:
  80. ; FCOM reg_fpu,reg_fpu0
  81. ; FCOM reg_fpu0,reg_fpu
  82. ; FUCOM reg_fpu,reg_fpu0
  83. ; FUCOM reg_fpu0,reg_fpu
  84. ; FCOMP reg_fpu,reg_fpu0
  85. ; FCOMP reg_fpu0,reg_fpu
  86. ; FUCOMP reg_fpu,reg_fpu0
  87. ; FUCOMP reg_fpu0,reg_fpu
  88. ; FCOM2 reg_fpu,reg_fpu0
  89. ; FCOM2 reg_fpu0,reg_fpu
  90. ; FCOMP3 reg_fpu,reg_fpu0
  91. ; FCOMP3 reg_fpu0,reg_fpu
  92. ; FCOMP5 reg_fpu,reg_fpu0
  93. ; FCOMP5 reg_fpu0,reg_fpu
  94. ; FXCH reg_fpu,reg_fpu0
  95. ; FXCH reg_fpu0,reg_fpu
  96. ; FXCH4 reg_fpu,reg_fpu0
  97. ; FXCH4 reg_fpu0,reg_fpu
  98. ; FXCH7 reg_fpu,reg_fpu0
  99. ; FXCH7 reg_fpu0,reg_fpu
  100. ; EOF