[2/5] x86-64: adjust stack insn test case

Message ID 6aa88ecd-8ad2-ce50-4819-630b35f58b17@suse.com
State New
Headers show
Series
  • x86: (mainly) limit suffix emission for stack accessing and branch insns
Related show

Commit Message

Jan Beulich July 14, 2020, 10:12 a.m.
The value chosen for the 16-/32-bit immediate cases didn't work well
with the subsequent insn's REX prefix - we ought to pick a value the
upper two bytes of which evaluate to a 2-byte insn. Bump the values
accordingly, allowing the subsequent insn to actually have the intended
REX.W.

gas/
2020-07-XX  Jan Beulich  <jbeulich@suse.com>

	* testsuite/gas/i386/x86-64-stack.s: Adjust 32-bit push
	immediate.
	* testsuite/gas/i386/x86-64-stack-intel.d,
	testsuite/gas/i386/x86-64-stack-suffix.d,
	testsuite/gas/i386/x86-64-stack.d: Adjust expectations.

Comments

H.J. Lu via Binutils July 14, 2020, 1:07 p.m. | #1
On Tue, Jul 14, 2020 at 12:12:56PM +0200, Jan Beulich wrote:
> The value chosen for the 16-/32-bit immediate cases didn't work well

> with the subsequent insn's REX prefix - we ought to pick a value the

> upper two bytes of which evaluate to a 2-byte insn. Bump the values

> accordingly, allowing the subsequent insn to actually have the intended

> REX.W.

> 

> gas/

> 2020-07-XX  Jan Beulich  <jbeulich@suse.com>

> 

> 	* testsuite/gas/i386/x86-64-stack.s: Adjust 32-bit push

> 	immediate.

> 	* testsuite/gas/i386/x86-64-stack-intel.d,

> 	testsuite/gas/i386/x86-64-stack-suffix.d,

> 	testsuite/gas/i386/x86-64-stack.d: Adjust expectations.

> 


OK.

Thanks.

H.J.

Patch

--- a/gas/testsuite/gas/i386/x86-64-stack-intel.d
+++ b/gas/testsuite/gas/i386/x86-64-stack-intel.d
@@ -51,11 +51,11 @@  Disassembly of section .text:
 [ 	]*[a-f0-9]+:	66 6a ff             	pushw  0xffff
 [ 	]*[a-f0-9]+:	48 6a ff             	rex.W push 0xffffffffffffffff
 [ 	]*[a-f0-9]+:	66 48 6a ff          	data16 rex.W push 0xffffffffffffffff
-[ 	]*[a-f0-9]+:	68 01 02 03 04       	push   0x4030201
-[ 	]*[a-f0-9]+:	66 68 01 02          	pushw  0x201
-[ 	]*[a-f0-9]+:	03 04 48             	add    eax,DWORD PTR \[rax\+rcx\*2\]
-[ 	]*[a-f0-9]+:	68 01 02 03 04       	push   0x4030201
-[ 	]*[a-f0-9]+:	66 48 68 01 02 03 04 	data16 rex.W push 0x4030201
+[ 	]*[a-f0-9]+:	68 02 03 04 05       	push   0x5040302
+[ 	]*[a-f0-9]+:	66 68 02 03          	pushw  0x302
+[ 	]*[a-f0-9]+:	04 05                	add    al,0x5
+[ 	]*[a-f0-9]+:	48 68 02 03 04 05    	rex\.W push 0x5040302
+[ 	]*[a-f0-9]+:	66 48 68 02 03 04 05 	data16 rex\.W push 0x5040302
 [ 	]*[a-f0-9]+:	0f a8                	push   gs
 [ 	]*[a-f0-9]+:	66 0f a8             	pushw  gs
 [ 	]*[a-f0-9]+:	48 0f a8             	rex.W push gs
--- a/gas/testsuite/gas/i386/x86-64-stack-suffix.d
+++ b/gas/testsuite/gas/i386/x86-64-stack-suffix.d
@@ -51,11 +51,11 @@  Disassembly of section .text:
 [ 	]*[a-f0-9]+:	66 6a ff             	pushw  \$0xffff
 [ 	]*[a-f0-9]+:	48 6a ff             	rex.W pushq \$0xffffffffffffffff
 [ 	]*[a-f0-9]+:	66 48 6a ff          	data16 rex.W pushq \$0xffffffffffffffff
-[ 	]*[a-f0-9]+:	68 01 02 03 04       	pushq  \$0x4030201
-[ 	]*[a-f0-9]+:	66 68 01 02          	pushw  \$0x201
-[ 	]*[a-f0-9]+:	03 04 48             	addl   \(%rax,%rcx,2\),%eax
-[ 	]*[a-f0-9]+:	68 01 02 03 04       	pushq  \$0x4030201
-[ 	]*[a-f0-9]+:	66 48 68 01 02 03 04 	data16 rex.W pushq \$0x4030201
+[ 	]*[a-f0-9]+:	68 02 03 04 05       	pushq  \$0x5040302
+[ 	]*[a-f0-9]+:	66 68 02 03          	pushw  \$0x302
+[ 	]*[a-f0-9]+:	04 05                	addb   \$0x5,%al
+[ 	]*[a-f0-9]+:	48 68 02 03 04 05    	rex\.W pushq \$0x5040302
+[ 	]*[a-f0-9]+:	66 48 68 02 03 04 05 	data16 rex\.W pushq \$0x5040302
 [ 	]*[a-f0-9]+:	0f a8                	pushq  %gs
 [ 	]*[a-f0-9]+:	66 0f a8             	pushw  %gs
 [ 	]*[a-f0-9]+:	48 0f a8             	rex.W pushq %gs
--- a/gas/testsuite/gas/i386/x86-64-stack.d
+++ b/gas/testsuite/gas/i386/x86-64-stack.d
@@ -50,11 +50,11 @@  Disassembly of section .text:
 [ 	]*[a-f0-9]+:	66 6a ff             	pushw  \$0xffff
 [ 	]*[a-f0-9]+:	48 6a ff             	rex\.W push \$0xffffffffffffffff
 [ 	]*[a-f0-9]+:	66 48 6a ff          	data16 rex\.W push \$0xffffffffffffffff
-[ 	]*[a-f0-9]+:	68 01 02 03 04       	push   \$0x4030201
-[ 	]*[a-f0-9]+:	66 68 01 02          	pushw  \$0x201
-[ 	]*[a-f0-9]+:	03 04 48             	add    \(%rax,%rcx,2\),%eax
-[ 	]*[a-f0-9]+:	68 01 02 03 04       	push   \$0x4030201
-[ 	]*[a-f0-9]+:	66 48 68 01 02 03 04 	data16 rex\.W push \$0x4030201
+[ 	]*[a-f0-9]+:	68 02 03 04 05       	push   \$0x5040302
+[ 	]*[a-f0-9]+:	66 68 02 03          	pushw  \$0x302
+[ 	]*[a-f0-9]+:	04 05                	add    \$0x5,%al
+[ 	]*[a-f0-9]+:	48 68 02 03 04 05    	rex\.W push \$0x5040302
+[ 	]*[a-f0-9]+:	66 48 68 02 03 04 05 	data16 rex\.W push \$0x5040302
 [ 	]*[a-f0-9]+:	0f a8                	push   %gs
 [ 	]*[a-f0-9]+:	66 0f a8             	pushw  %gs
 [ 	]*[a-f0-9]+:	48 0f a8             	rex\.W push %gs
--- a/gas/testsuite/gas/i386/x86-64-stack.s
+++ b/gas/testsuite/gas/i386/x86-64-stack.s
@@ -26,8 +26,8 @@  _start:
 	# push with a 1-byte immediate
 	try	0x6a, 0xff
 
-	# push with a 4-byte immediate
-	try	0x68, 0x01, 0x02, 0x03, 0x04
+	# push with a 4-(or 2-)byte immediate
+	try	0x68, 0x02, 0x03, 0x04, 0x05
 
 	# push a segment register
 	try	0x0f, 0xa8