[12/20] s390: stpq operand R1 must be a register pair

Message ID 20260930081834.2948939-34-jremus@linux.ibm.com
State New
Headers
Series s390: Instruction cleanups |

Commit Message

Jens Remus Sept. 30, 2026, 8:18 a.m. UTC
  stpq R1,D2(X2,B2) operand R1 must designate an even-odd pair of general
registers and must designate an even-numbered register; otherwise, a
specification exception is recognized. [1]

[1]: IBM z/Architecture Principles of Operation, SA22-7832-14, IBM z17,
     https://www.ibm.com/docs/en/module_1678991624569/pdf/SA22-7832-14.pdf

opcodes/
	* s390-opc.txt (stpq): Use RXE_RERRD and RXY_RERRD instruction
	formats.

gas/testsuite/
	* gas/s390/zarch-z900.d (stpq): Operand R1 must designate an
	even-odd register pair.
	* gas/s390/zarch-z900.s (stpq): Likewise.

Signed-off-by: Jens Remus <jremus@linux.ibm.com>
---
 gas/testsuite/gas/s390/zarch-z900.d | 2 +-
 gas/testsuite/gas/s390/zarch-z900.s | 2 +-
 opcodes/s390-opc.txt                | 4 ++--
 3 files changed, 4 insertions(+), 4 deletions(-)
  

Patch

diff --git a/gas/testsuite/gas/s390/zarch-z900.d b/gas/testsuite/gas/s390/zarch-z900.d
index 5f993865da50..204c3e0f2419 100644
--- a/gas/testsuite/gas/s390/zarch-z900.d
+++ b/gas/testsuite/gas/s390/zarch-z900.d
@@ -141,7 +141,7 @@  Disassembly of section .text:
 .*:	e3 95 af ff 00 24 [ 	]*stg	%r9,4095\(%r5,%r10\)
 .*:	eb 96 5f ff 00 24 [ 	]*stmg	%r9,%r6,4095\(%r5\)
 .*:	eb 96 5f ff 00 26 [ 	]*stmh	%r9,%r6,4095\(%r5\)
-.*:	e3 95 af ff 00 8e [ 	]*stpq	%r9,4095\(%r5,%r10\)
+.*:	e3 85 af ff 00 8e [ 	]*stpq	%r8,4095\(%r5,%r10\)
 .*:	e5 02 5f ff 9f ff [ 	]*strag	4095\(%r5\),4095\(%r9\)
 .*:	e3 95 af ff 00 2f [ 	]*strvg	%r9,4095\(%r5,%r10\)
 .*:	b9 25 00 96 [ 	]*sturg	%r9,%r6
diff --git a/gas/testsuite/gas/s390/zarch-z900.s b/gas/testsuite/gas/s390/zarch-z900.s
index 8890fbb78a0c..82db22bef723 100644
--- a/gas/testsuite/gas/s390/zarch-z900.s
+++ b/gas/testsuite/gas/s390/zarch-z900.s
@@ -135,7 +135,7 @@  foo:
 	stg	%r9,4095(%r5,%r10)
 	stmg	%r9,%r6,4095(%r5)
 	stmh	%r9,%r6,4095(%r5)
-	stpq	%r9,4095(%r5,%r10)
+	stpq	%r8,4095(%r5,%r10)
 	strag	4095(%r5),4095(%r9)
 	strvg	%r9,4095(%r5,%r10)
 	sturg	%r9,%r6
diff --git a/opcodes/s390-opc.txt b/opcodes/s390-opc.txt
index cc1a18beba84..9100b847135c 100644
--- a/opcodes/s390-opc.txt
+++ b/opcodes/s390-opc.txt
@@ -560,7 +560,7 @@  e30000000086 mlg RXE_RERRD "multiply logical 64" z900 zarch
 e30000000087 dlg RXE_RERRD "divide logical 64" z900 zarch
 e30000000088 alcg RXE_RRRD "add logical with carry 64" z900 zarch
 e30000000089 slbg RXE_RRRD "subtract logical with borrow 64" z900 zarch
-e3000000008e stpq RXE_RRRD "store pair to quadword" z900 zarch
+e3000000008e stpq RXE_RERRD "store pair to quadword" z900 zarch
 e3000000008f lpq RXE_RERRD "load pair from quadword" z900 zarch
 e30000000096 ml RXE_RERRD "multiply logical 32" z900 esa,zarch
 e30000000097 dl RXE_RERRD "divide logical 32" z900 esa,zarch
@@ -692,7 +692,7 @@  e30000000086 mlg RXY_RERRD "multiply logical 64" z990 zarch
 e30000000087 dlg RXY_RERRD "divide logical 64" z990 zarch
 e30000000088 alcg RXY_RRRD "add logical with carry 64" z990 zarch
 e30000000089 slbg RXY_RRRD "subtract logical with borrow 64" z990 zarch
-e3000000008e stpq RXY_RRRD "store pair to quadword" z990 zarch
+e3000000008e stpq RXY_RERRD "store pair to quadword" z990 zarch
 e3000000008f lpq RXY_RERRD "load pair from quadword" z990 zarch
 e30000000090 llgc RXY_RRRD "load logical character" z990 zarch
 e30000000091 llgh RXY_RRRD "load logical halfword" z990 zarch