Merge [1593] from trunk.

svn path=/branches/yasm-0.5.x/; revision=1594
diff --git a/modules/arch/x86/tests/gas32/gas-farithr.asm b/modules/arch/x86/tests/gas32/gas-farithr.asm
index ded3800..4b1ca13 100644
--- a/modules/arch/x86/tests/gas32/gas-farithr.asm
+++ b/modules/arch/x86/tests/gas32/gas-farithr.asm
@@ -1,10 +1,18 @@
 .text
         fsub %st(0),%st(1)
+	fsub %st(3),%st
         fsubp %st(0),%st(1)
+	#fsubp %st(3),%st
         fsubr %st(0),%st(1)
+        fsubr %st(3),%st
         fsubrp %st(0),%st(1)
+        #fsubrp %st(3),%st
         fdiv %st(0),%st(1)
+        fdiv %st(3),%st
         fdivp %st(0),%st(1)
+        #fdivp %st(3),%st
         fdivr %st(0),%st(1)
+        fdivr %st(3),%st
         fdivrp %st(0),%st(1)
+        #fdivrp %st(3),%st
 
diff --git a/modules/arch/x86/tests/gas32/gas-farithr.hex b/modules/arch/x86/tests/gas32/gas-farithr.hex
index 8b80289..f0f4bdd 100644
--- a/modules/arch/x86/tests/gas32/gas-farithr.hex
+++ b/modules/arch/x86/tests/gas32/gas-farithr.hex
@@ -64,18 +64,26 @@
 00 
 dc 
 e1 
+d8 
+e3 
 de 
 e1 
 dc 
 e9 
+d8 
+eb 
 de 
 e9 
 dc 
 f1 
+d8 
+f3 
 de 
 f1 
 dc 
 f9 
+d8 
+fb 
 de 
 f9 
 00 
@@ -206,14 +214,6 @@
 00 
 00 
 00 
-00 
-00 
-00 
-00 
-00 
-00 
-00 
-00 
 17 
 00 
 00 
@@ -230,7 +230,7 @@
 00 
 00 
 00 
-50 
+58 
 00 
 00 
 00 
@@ -270,7 +270,7 @@
 00 
 00 
 00 
-74 
+7c 
 00 
 00 
 00 
@@ -310,7 +310,7 @@
 00 
 00 
 00 
-78 
+80 
 00 
 00 
 00 
@@ -354,7 +354,7 @@
 00 
 00 
 00 
-10 
+18 
 00 
 00 
 00 
diff --git a/modules/arch/x86/x86id.c b/modules/arch/x86/x86id.c
index 5262f1e..3dbfb00 100644
--- a/modules/arch/x86/x86id.c
+++ b/modules/arch/x86/x86id.c
@@ -1494,8 +1494,10 @@
       {OPT_ST0|OPS_80|OPA_None, OPT_Reg|OPS_80|OPA_Op1Add, 0} },
     { CPU_FPU, MOD_Op1Add, 0, 0, 0, 2, {0xDC, 0x00, 0}, 0, 1,
       {OPT_Reg|OPS_80|OPTM_To|OPA_Op1Add, 0, 0} },
-    { CPU_FPU, MOD_Op1Add, 0, 0, 0, 2, {0xDC, 0x00, 0}, 0, 2,
-      {OPT_Reg|OPS_80|OPA_Op1Add, OPT_ST0|OPS_80|OPA_None, 0} }
+    { CPU_FPU, MOD_Op1Add|MOD_GasIllegal, 0, 0, 0, 2, {0xDC, 0x00, 0}, 0, 2,
+      {OPT_Reg|OPS_80|OPA_Op1Add, OPT_ST0|OPS_80|OPA_None, 0} },
+    { CPU_FPU, MOD_Gap0|MOD_Op1Add|MOD_GasOnly, 0, 0, 0, 2, {0xDC, 0x00, 0},
+      0, 2, {OPT_Reg|OPS_80|OPA_Op1Add, OPT_ST0|OPS_80|OPA_None, 0} }
 };
 static const x86_insn_info farithp_insn[] = {
     { CPU_FPU, MOD_Op1Add, 0, 0, 0, 2, {0xDE, 0x01, 0}, 0, 0, {0, 0, 0} },
diff --git a/modules/arch/x86/x86parse.gap b/modules/arch/x86/x86parse.gap
index b8b5e3c..ce4e4f9 100644
--- a/modules/arch/x86/x86parse.gap
+++ b/modules/arch/x86/x86parse.gap
@@ -347,26 +347,22 @@
 INSN	-	fadd	"ls"	farith	0x00C0C0	CPU_FPU
 INSN	-	faddp	NONE	farithp	0xC0		CPU_FPU
 INSN	-	fiadd	"ls"	fiarith	0x00DA		CPU_FPU
-INSN	nasm	fsub	NONE	farith	0x04E0E8	CPU_FPU
-INSN	gas	fsub	"ls"	farith	0x04E8E0	CPU_FPU
+INSN	-	fsub	"ls"	farith	0x04E0E8	CPU_FPU
 INSN	-	fisub	"ls"	fiarith	0x04DA		CPU_FPU
 INSN	nasm	fsubp	NONE	farithp	0xE8		CPU_FPU
 INSN	gas	fsubp	NONE	farithp	0xE0		CPU_FPU
-INSN	nasm	fsubr	NONE	farith	0x05E8E0	CPU_FPU
-INSN	gas	fsubr	"ls"	farith	0x05E0E8	CPU_FPU
+INSN	-	fsubr	"ls"	farith	0x05E8E0	CPU_FPU
 INSN	-	fisubr	"ls"	fiarith	0x05DA		CPU_FPU
 INSN	nasm	fsubrp	NONE	farithp	0xE0		CPU_FPU
 INSN	gas	fsubrp	NONE	farithp	0xE8		CPU_FPU
 INSN	-	fmul	"ls"	farith	0x01C8C8	CPU_FPU
 INSN	-	fimul	"ls"	fiarith	0x01DA		CPU_FPU
 INSN	-	fmulp	NONE	farithp	0xC8		CPU_FPU
-INSN	nasm	fdiv	NONE	farith	0x06F0F8	CPU_FPU
-INSN	gas	fdiv	"ls"	farith	0x06F8F0	CPU_FPU
+INSN	-	fdiv	"ls"	farith	0x06F0F8	CPU_FPU
 INSN	-	fidiv	"ls"	fiarith	0x06DA		CPU_FPU
 INSN	nasm	fdivp	NONE	farithp	0xF8		CPU_FPU
 INSN	gas	fdivp	NONE	farithp	0xF0		CPU_FPU
-INSN	nasm	fdivr	NONE	farith	0x07F8F0	CPU_FPU
-INSN	gas	fdivr	"ls"	farith	0x07F0F8	CPU_FPU
+INSN	-	fdivr	"ls"	farith	0x07F8F0	CPU_FPU
 INSN	-	fidivr	"ls"	fiarith	0x07DA		CPU_FPU
 INSN	nasm	fdivrp	NONE	farithp	0xF0		CPU_FPU
 INSN	gas	fdivrp	NONE	farithp	0xF8		CPU_FPU