This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] x86: PR gas/707


Forms of fldcw, fstcw, fnstcw, fstsw, fnstsw, fbld, and fbstp
explicitly
specifying the size of their operands in Intel syntax (word ptr or
tbyte ptr
respectively) did not work anymore due to an omission of the original
Intel
syntax patch.

Built and tested on i686-pc-linux-gnu.

Jan

gas/testsuite/
2005-02-08  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.

include/opcode/
2005-02-08  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.

---
/home/jbeulich/src/binutils/mainline/2005-02-08/gas/testsuite/gas/i386/intelok.d	2005-01-18
10:43:35.000000000 +0100
+++ 2005-02-08/gas/testsuite/gas/i386/intelok.d	2005-02-08
13:56:14.114340448 +0100
@@ -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\]
---
/home/jbeulich/src/binutils/mainline/2005-02-08/gas/testsuite/gas/i386/intelok.s	2004-11-18
15:05:42.000000000 +0100
+++ 2005-02-08/gas/testsuite/gas/i386/intelok.s	2005-02-08
13:56:38.715600488 +0100
@@ -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]
---
/home/jbeulich/src/binutils/mainline/2005-02-08/include/opcode/i386.h	2004-11-23
09:44:32.000000000 +0100
+++ 2005-02-08/include/opcode/i386.h	2005-02-08 14:24:14.308912048
+0100
@@ -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} },

Attachment: binutils-mainline-x86-pr707.patch
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]