FADD fpureg \1\xD8\10\xC0 8086,FPU
FADD fpureg,fpu0 \1\xDC\10\xC0 8086,FPU
FADD fpu0,fpureg \1\xD8\11\xC0 8086,FPU
+FADD void \2\xDE\xC1 8086,FPU,ND
FADDP fpureg \1\xDE\10\xC0 8086,FPU
FADDP fpureg,fpu0 \1\xDE\10\xC0 8086,FPU
+FADDP void \2\xDE\xC1 8086,FPU,ND
FBLD mem80 \1\xDF\204 8086,FPU
FBLD mem \1\xDF\204 8086,FPU
FBSTP mem80 \1\xDF\206 8086,FPU
FCLEX void \3\x9B\xDB\xE2 8086,FPU
FCMOVB fpureg \1\xDA\10\xC0 P6,FPU
FCMOVB fpu0,fpureg \1\xDA\11\xC0 P6,FPU
+FCMOVB void \2\xDA\xC1 P6,FPU,ND
FCMOVBE fpureg \1\xDA\10\xD0 P6,FPU
FCMOVBE fpu0,fpureg \1\xDA\11\xD0 P6,FPU
+FCMOVBE void \2\xDA\xD1 P6,FPU,ND
FCMOVE fpureg \1\xDA\10\xC8 P6,FPU
FCMOVE fpu0,fpureg \1\xDA\11\xC8 P6,FPU
+FCMOVE void \2\xDA\xC9 P6,FPU,ND
FCMOVNB fpureg \1\xDB\10\xC0 P6,FPU
FCMOVNB fpu0,fpureg \1\xDB\11\xC0 P6,FPU
+FCMOVNB void \2\xDB\xC1 P6,FPU,ND
FCMOVNBE fpureg \1\xDB\10\xD0 P6,FPU
FCMOVNBE fpu0,fpureg \1\xDB\11\xD0 P6,FPU
+FCMOVNBE void \2\xDB\xD1 P6,FPU,ND
FCMOVNE fpureg \1\xDB\10\xC8 P6,FPU
FCMOVNE fpu0,fpureg \1\xDB\11\xC8 P6,FPU
+FCMOVNE void \2\xDB\xC9 P6,FPU,ND
FCMOVNU fpureg \1\xDB\10\xD8 P6,FPU
FCMOVNU fpu0,fpureg \1\xDB\11\xD8 P6,FPU
+FCMOVNU void \2\xDB\xD9 P6,FPU,ND
FCMOVU fpureg \1\xDA\10\xD8 P6,FPU
FCMOVU fpu0,fpureg \1\xDA\11\xD8 P6,FPU
+FCMOVU void \2\xDA\xD9 P6,FPU,ND
FCOM mem32 \1\xD8\202 8086,FPU
FCOM mem64 \1\xDC\202 8086,FPU
FCOM fpureg \1\xD8\10\xD0 8086,FPU
FCOM fpu0,fpureg \1\xD8\11\xD0 8086,FPU
+FCOM void \2\xD8\xD1 8086,FPU,ND
FCOMI fpureg \1\xDB\10\xF0 P6,FPU
FCOMI fpu0,fpureg \1\xDB\11\xF0 P6,FPU
+FCOMI void \2\xDB\xF1 P6,FPU,ND
FCOMIP fpureg \1\xDF\10\xF0 P6,FPU
FCOMIP fpu0,fpureg \1\xDF\11\xF0 P6,FPU
+FCOMIP void \2\xDF\xF1 P6,FPU,ND
FCOMP mem32 \1\xD8\203 8086,FPU
FCOMP mem64 \1\xDC\203 8086,FPU
FCOMP fpureg \1\xD8\10\xD8 8086,FPU
FCOMP fpu0,fpureg \1\xD8\11\xD8 8086,FPU
+FCOMP void \2\xD8\xD9 8086,FPU,ND
FCOMPP void \2\xDE\xD9 8086,FPU
FCOS void \2\xD9\xFF 386,FPU
FDECSTP void \2\xD9\xF6 8086,FPU
FDIV mem32 \1\xD8\206 8086,FPU
FDIV mem64 \1\xDC\206 8086,FPU
FDIV fpureg|to \1\xDC\10\xF8 8086,FPU
-FDIV fpureg,fpu0 \1\xDC\10\xF8 8086,FPU
FDIV fpureg \1\xD8\10\xF0 8086,FPU
+FDIV fpureg,fpu0 \1\xDC\10\xF8 8086,FPU
FDIV fpu0,fpureg \1\xD8\11\xF0 8086,FPU
-FDIVP fpureg,fpu0 \1\xDE\10\xF8 8086,FPU
+FDIV void \2\xDE\xF9 8086,FPU,ND
FDIVP fpureg \1\xDE\10\xF8 8086,FPU
+FDIVP fpureg,fpu0 \1\xDE\10\xF8 8086,FPU
+FDIVP void \2\xDE\xF9 8086,FPU,ND
FDIVR mem32 \1\xD8\207 8086,FPU
FDIVR mem64 \1\xDC\207 8086,FPU
FDIVR fpureg|to \1\xDC\10\xF0 8086,FPU
FDIVR fpureg,fpu0 \1\xDC\10\xF0 8086,FPU
FDIVR fpureg \1\xD8\10\xF8 8086,FPU
FDIVR fpu0,fpureg \1\xD8\11\xF8 8086,FPU
+FDIVR void \2\xDE\xF1 8086,FPU,ND
FDIVRP fpureg \1\xDE\10\xF0 8086,FPU
FDIVRP fpureg,fpu0 \1\xDE\10\xF0 8086,FPU
+FDIVRP void \2\xDE\xF1 8086,FPU,ND
FEMMS void \2\x0F\x0E PENT,3DNOW
FENI void \3\x9B\xDB\xE0 8086,FPU
FFREE fpureg \1\xDD\10\xC0 8086,FPU
+FFREE void \2\xDD\xC1 8086,FPU
FFREEP fpureg \1\xDF\10\xC0 286,FPU,UNDOC
+FFREEP void \2\xDF\xC1 286,FPU,UNDOC
FIADD mem32 \1\xDA\200 8086,FPU
FIADD mem16 \1\xDE\200 8086,FPU
FICOM mem32 \1\xDA\202 8086,FPU
FLD mem64 \1\xDD\200 8086,FPU
FLD mem80 \1\xDB\205 8086,FPU
FLD fpureg \1\xD9\10\xC0 8086,FPU
+FLD void \2\xD9\xC1 8086,FPU,ND
FLD1 void \2\xD9\xE8 8086,FPU
FLDCW mem \1\xD9\205 8086,FPU,SW
FLDENV mem \1\xD9\204 8086,FPU
FMUL fpureg,fpu0 \1\xDC\10\xC8 8086,FPU
FMUL fpureg \1\xD8\10\xC8 8086,FPU
FMUL fpu0,fpureg \1\xD8\11\xC8 8086,FPU
+FMUL void \2\xDE\xC9 8086,FPU,ND
FMULP fpureg \1\xDE\10\xC8 8086,FPU
FMULP fpureg,fpu0 \1\xDE\10\xC8 8086,FPU
+FMULP void \2\xDE\xC9 8086,FPU,ND
FNCLEX void \2\xDB\xE2 8086,FPU
FNDISI void \2\xDB\xE1 8086,FPU
FNENI void \2\xDB\xE0 8086,FPU
FST mem32 \1\xD9\202 8086,FPU
FST mem64 \1\xDD\202 8086,FPU
FST fpureg \1\xDD\10\xD0 8086,FPU
+FST void \2\xDD\xD1 8086,FPU,ND
FSTCW mem \2\x9B\xD9\207 8086,FPU,SW
FSTENV mem \2\x9B\xD9\206 8086,FPU
FSTP mem32 \1\xD9\203 8086,FPU
FSTP mem64 \1\xDD\203 8086,FPU
FSTP mem80 \1\xDB\207 8086,FPU
FSTP fpureg \1\xDD\10\xD8 8086,FPU
+FSTP void \2\xDD\xD9 8086,FPU,ND
FSTSW mem \2\x9B\xDD\207 8086,FPU,SW
FSTSW reg_ax \3\x9B\xDF\xE0 286,FPU
FSUB mem32 \1\xD8\204 8086,FPU
FSUB fpureg,fpu0 \1\xDC\10\xE8 8086,FPU
FSUB fpureg \1\xD8\10\xE0 8086,FPU
FSUB fpu0,fpureg \1\xD8\11\xE0 8086,FPU
+FSUB void \2\xDE\xE9 8086,FPU,ND
FSUBP fpureg \1\xDE\10\xE8 8086,FPU
FSUBP fpureg,fpu0 \1\xDE\10\xE8 8086,FPU
+FSUBP void \2\xDE\xE9 8086,FPU,ND
FSUBR mem32 \1\xD8\205 8086,FPU
FSUBR mem64 \1\xDC\205 8086,FPU
FSUBR fpureg|to \1\xDC\10\xE0 8086,FPU
FSUBR fpureg,fpu0 \1\xDC\10\xE0 8086,FPU
FSUBR fpureg \1\xD8\10\xE8 8086,FPU
FSUBR fpu0,fpureg \1\xD8\11\xE8 8086,FPU
+FSUBR void \2\xDE\xE1 8086,FPU,ND
FSUBRP fpureg \1\xDE\10\xE0 8086,FPU
FSUBRP fpureg,fpu0 \1\xDE\10\xE0 8086,FPU
+FSUBRP void \2\xDE\xE1 8086,FPU,ND
FTST void \2\xD9\xE4 8086,FPU
FUCOM fpureg \1\xDD\10\xE0 386,FPU
FUCOM fpu0,fpureg \1\xDD\11\xE0 386,FPU
+FUCOM void \2\xDD\xE1 386,FPU,ND
FUCOMI fpureg \1\xDB\10\xE8 P6,FPU
FUCOMI fpu0,fpureg \1\xDB\11\xE8 P6,FPU
+FUCOMI void \2\xDB\xE9 P6,FPU,ND
FUCOMIP fpureg \1\xDF\10\xE8 P6,FPU
FUCOMIP fpu0,fpureg \1\xDF\11\xE8 P6,FPU
+FUCOMIP void \2\xDF\xE9 P6,FPU,ND
FUCOMP fpureg \1\xDD\10\xE8 386,FPU
FUCOMP fpu0,fpureg \1\xDD\11\xE8 386,FPU
+FUCOMP void \2\xDD\xE9 386,FPU,ND
FUCOMPP void \2\xDA\xE9 386,FPU
FXAM void \2\xD9\xE5 8086,FPU
-FXCH void \2\xD9\xC9 8086,FPU
FXCH fpureg \1\xD9\10\xC8 8086,FPU
FXCH fpureg,fpu0 \1\xD9\10\xC8 8086,FPU
FXCH fpu0,fpureg \1\xD9\11\xC8 8086,FPU
+FXCH void \2\xD9\xC9 8086,FPU,ND
FXTRACT void \2\xD9\xF4 8086,FPU
FYL2X void \2\xD9\xF1 8086,FPU
FYL2XP1 void \2\xD9\xF9 8086,FPU
--- /dev/null
+; relaxed encodings for FPU instructions, which NASM should support
+; -----------------------------------------------------------------
+
+%define void
+%define reg_fpu0 st0
+%define reg_fpu st1
+
+; no operands instead of one operand:
+
+ ; F(U)COM(P), FCOM2, FCOMP3, FCOMP5
+
+ FCOM void
+ FCOMP void
+ FUCOM void
+ FUCOMP void
+; FCOM2 void
+; FCOMP3 void
+; FCOMP5 void
+
+ ; FLD, FST, FSTP, FSTP1, FSTP8, FSTP9
+
+ FLD void
+ FST void
+ FSTP void
+; FSTP1 void
+; FSTP8 void
+; FSTP9 void
+
+ ; FXCH, FXCH4, FXCH7, FFREE, FFREEP
+
+ FXCH void
+; FXCH4 void
+; FXCH7 void
+ FFREE void
+ FFREEP void
+
+; no operands instead of two operands:
+
+ ; FADD(P), FMUL(P), FSUBR(P), FSUB(P), FDIVR(P), FDIV(P)
+
+ FADD void
+ FADDP void
+ FMUL void
+ FMULP void
+ FSUBR void
+ FSUBRP void
+ FSUB void
+ FSUBP void
+ FDIVR void
+ FDIVRP void
+ FDIV void
+ FDIVP void
+
+; one operand instead of two operands:
+
+ ; FADD, FMUL, FSUB, FSUBR, FDIV, FDIVR
+
+ FADD reg_fpu
+ FMUL reg_fpu
+ FSUB reg_fpu
+ FSUBR reg_fpu
+ FDIV reg_fpu
+ FDIVR reg_fpu
+
+ ; FADD, FMUL, FSUBR, FSUB, FDIVR, FDIV (with TO qualifier)
+
+ FADD to reg_fpu
+ FMUL to reg_fpu
+ FSUBR to reg_fpu
+ FSUB to reg_fpu
+ FDIVR to reg_fpu
+ FDIV to reg_fpu
+
+ ; FADDP, FMULP, FSUBRP, FSUBP, FDIVRP, FDIVP
+
+ FADDP reg_fpu
+ FMULP reg_fpu
+ FSUBRP reg_fpu
+ FSUBP reg_fpu
+ FDIVRP reg_fpu
+ FDIVP reg_fpu
+
+ ; FCMOV(N)B, FCMOV(N)E, FCMOV(N)BE, FCMOV(N)U, and F(U)COMI(P)
+
+ FCMOVB reg_fpu
+ FCMOVNB reg_fpu
+ FCMOVE reg_fpu
+ FCMOVNE reg_fpu
+ FCMOVBE reg_fpu
+ FCMOVNBE reg_fpu
+ FCMOVU reg_fpu
+ FCMOVNU reg_fpu
+ FCOMI reg_fpu
+ FCOMIP reg_fpu
+ FUCOMI reg_fpu
+ FUCOMIP reg_fpu
+
+; two operands instead of one operand:
+
+ ; these don't really exist, and thus are _NOT_ supported:
+
+; FCOM reg_fpu,reg_fpu0
+; FCOM reg_fpu0,reg_fpu
+; FUCOM reg_fpu,reg_fpu0
+; FUCOM reg_fpu0,reg_fpu
+; FCOMP reg_fpu,reg_fpu0
+; FCOMP reg_fpu0,reg_fpu
+; FUCOMP reg_fpu,reg_fpu0
+; FUCOMP reg_fpu0,reg_fpu
+
+; FCOM2 reg_fpu,reg_fpu0
+; FCOM2 reg_fpu0,reg_fpu
+; FCOMP3 reg_fpu,reg_fpu0
+; FCOMP3 reg_fpu0,reg_fpu
+; FCOMP5 reg_fpu,reg_fpu0
+; FCOMP5 reg_fpu0,reg_fpu
+
+; FXCH reg_fpu,reg_fpu0
+; FXCH reg_fpu0,reg_fpu
+; FXCH4 reg_fpu,reg_fpu0
+; FXCH4 reg_fpu0,reg_fpu
+; FXCH7 reg_fpu,reg_fpu0
+; FXCH7 reg_fpu0,reg_fpu
+
+; EOF