aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gas/testsuite/ChangeLog6
-rw-r--r--gas/testsuite/gas/i386/intelok.d3
-rw-r--r--gas/testsuite/gas/i386/intelok.s6
-rw-r--r--include/opcode/ChangeLog7
-rw-r--r--include/opcode/i386.h14
5 files changed, 26 insertions, 10 deletions
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 37e74ec..9e031b6 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2005-02-09 Jan Beulich <jbeulich@novell.com>
+
+ * gas/i386/intelok.s: Remove comments disabling alternative forms of
+ fbld, fbstp, and fldcw.
+ * gas/i386/intelok.d: Expect two instances of fbld, fbstp, and fldcw.
+
2005-02-07 Inderpreet Singh <inderpreetb@noida.hcltech.com>
* gas/maxq10/jump.d: Fixed relative jump offset.
diff --git a/gas/testsuite/gas/i386/intelok.d b/gas/testsuite/gas/i386/intelok.d
index 02ad234..265aaa2 100644
--- a/gas/testsuite/gas/i386/intelok.d
+++ b/gas/testsuite/gas/i386/intelok.d
@@ -34,6 +34,8 @@ Disassembly of section .text:
[ ]*[0-9a-f]+: d8 00[ ]+fadd[ ]+DWORD PTR \[eax\]
[ ]*[0-9a-f]+: dc 00[ ]+fadd[ ]+QWORD PTR \[eax\]
[ ]*[0-9a-f]+: df 20[ ]+fbld[ ]+(TBYTE PTR )?\[eax\]
+[ ]*[0-9a-f]+: df 20[ ]+fbld[ ]+(TBYTE PTR )?\[eax\]
+[ ]*[0-9a-f]+: df 30[ ]+fbstp[ ]+(TBYTE PTR )?\[eax\]
[ ]*[0-9a-f]+: df 30[ ]+fbstp[ ]+(TBYTE PTR )?\[eax\]
[ ]*[0-9a-f]+: da 00[ ]+fiadd[ ]+DWORD PTR \[eax\]
[ ]*[0-9a-f]+: de 00[ ]+fiadd[ ]+WORD PTR \[eax\]
@@ -52,6 +54,7 @@ Disassembly of section .text:
[ ]*[0-9a-f]+: dd 00[ ]+fld[ ]+QWORD PTR \[eax\]
[ ]*[0-9a-f]+: db 28[ ]+fld[ ]+TBYTE PTR \[eax\]
[ ]*[0-9a-f]+: d9 28[ ]+fldcw[ ]+(WORD PTR )?\[eax\]
+[ ]*[0-9a-f]+: d9 28[ ]+fldcw[ ]+(WORD PTR )?\[eax\]
[ ]*[0-9a-f]+: d9 20[ ]+fldenvd?[ ]+\[eax\]
[ ]*[0-9a-f]+: d9 20[ ]+fldenvd?[ ]+\[eax\]
[ ]*[0-9a-f]+: 66 d9 20[ ]+fldenvw[ ]+\[eax\]
diff --git a/gas/testsuite/gas/i386/intelok.s b/gas/testsuite/gas/i386/intelok.s
index e0a0792..f13793a 100644
--- a/gas/testsuite/gas/i386/intelok.s
+++ b/gas/testsuite/gas/i386/intelok.s
@@ -28,9 +28,9 @@ start:
fadd dword ptr [eax]
fadd qword ptr [eax]
fbld [eax]
-#XXX fbld tbyte ptr [eax]
+ fbld tbyte ptr [eax]
fbstp [eax]
-#XXX fbstp tbyte ptr [eax]
+ fbstp tbyte ptr [eax]
fiadd dword ptr [eax]
fiadd word ptr [eax]
fild dword ptr [eax]
@@ -48,7 +48,7 @@ start:
fld qword ptr [eax]
fld tbyte ptr [eax]
fldcw [eax]
-#XXX fldcw word ptr [eax]
+ fldcw word ptr [eax]
fldenv [eax]
fldenvd [eax]
fldenvw [eax]
diff --git a/include/opcode/ChangeLog b/include/opcode/ChangeLog
index 44c7dc4..7844fee 100644
--- a/include/opcode/ChangeLog
+++ b/include/opcode/ChangeLog
@@ -1,3 +1,10 @@
+2005-02-09 Jan Beulich <jbeulich@novell.com>
+
+ PR gas/707
+ * i386.h (i386_optab): Add x_Suf to fbld and fbstp. Add w_Suf and
+ FloatMF to fldcw, fstcw, fnstcw, and the memory formas of fstsw and
+ fnstsw.
+
2005-01-25 Alexandre Oliva <aoliva@redhat.com>
2004-11-10 Alexandre Oliva <aoliva@redhat.com>
diff --git a/include/opcode/i386.h b/include/opcode/i386.h
index bceedfc..0717787 100644
--- a/include/opcode/i386.h
+++ b/include/opcode/i386.h
@@ -601,7 +601,7 @@ static const template i386_optab[] =
{"fild", 1, 0xdf, 5, 0, q_FP|Modrm, { LLongMem, 0, 0} },
{"fildll", 1, 0xdf, 5, 0, FP|Modrm, { LLongMem, 0, 0} },
{"fldt", 1, 0xdb, 5, 0, FP|Modrm, { LLongMem, 0, 0} },
-{"fbld", 1, 0xdf, 4, 0, FP|Modrm, { LLongMem, 0, 0} },
+{"fbld", 1, 0xdf, 4, 0, x_Suf|Modrm, { LLongMem, 0, 0} },
/* store (no pop) */
{"fst", 1, 0xddd0, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
@@ -619,7 +619,7 @@ static const template i386_optab[] =
{"fistp", 1, 0xdf, 7, 0, q_FP|Modrm, { LLongMem, 0, 0} },
{"fistpll",1, 0xdf, 7, 0, FP|Modrm, { LLongMem, 0, 0} },
{"fstpt", 1, 0xdb, 7, 0, FP|Modrm, { LLongMem, 0, 0} },
-{"fbstp", 1, 0xdf, 6, 0, FP|Modrm, { LLongMem, 0, 0} },
+{"fbstp", 1, 0xdf, 6, 0, x_Suf|Modrm, { LLongMem, 0, 0} },
/* exchange %st<n> with %st0 */
{"fxch", 1, 0xd9c8, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
@@ -812,16 +812,16 @@ static const template i386_optab[] =
/* processor control */
{"fninit", 0, 0xdbe3, X, 0, FP, { 0, 0, 0} },
{"finit", 0, 0xdbe3, X, 0, FP|FWait, { 0, 0, 0} },
-{"fldcw", 1, 0xd9, 5, 0, FP|Modrm, { ShortMem, 0, 0} },
-{"fnstcw", 1, 0xd9, 7, 0, FP|Modrm, { ShortMem, 0, 0} },
-{"fstcw", 1, 0xd9, 7, 0, FP|FWait|Modrm, { ShortMem, 0, 0} },
+{"fldcw", 1, 0xd9, 5, 0, w_Suf|FloatMF|Modrm, { ShortMem, 0, 0} },
+{"fnstcw", 1, 0xd9, 7, 0, w_Suf|FloatMF|Modrm, { ShortMem, 0, 0} },
+{"fstcw", 1, 0xd9, 7, 0, w_Suf|FloatMF|FWait|Modrm, { ShortMem, 0, 0} },
/* XXX should reject %al, %eax, and %rax */
{"fnstsw", 1, 0xdfe0, X, 0, FP|IgnoreSize, { Acc, 0, 0} },
-{"fnstsw", 1, 0xdd, 7, 0, FP|Modrm, { ShortMem, 0, 0} },
+{"fnstsw", 1, 0xdd, 7, 0, w_Suf|FloatMF|Modrm, { ShortMem, 0, 0} },
{"fnstsw", 0, 0xdfe0, X, 0, FP, { 0, 0, 0} },
/* XXX should reject %al, %eax, and %rax */
{"fstsw", 1, 0xdfe0, X, 0, FP|FWait|IgnoreSize, { Acc, 0, 0} },
-{"fstsw", 1, 0xdd, 7, 0, FP|FWait|Modrm, { ShortMem, 0, 0} },
+{"fstsw", 1, 0xdd, 7, 0, w_Suf|FloatMF|FWait|Modrm, { ShortMem, 0, 0} },
{"fstsw", 0, 0xdfe0, X, 0, FP|FWait, { 0, 0, 0} },
{"fnclex", 0, 0xdbe2, X, 0, FP, { 0, 0, 0} },
{"fclex", 0, 0xdbe2, X, 0, FP|FWait, { 0, 0, 0} },