[PATCH 09/20] s390: km/kmc operand R1 must be even and R2 must be a register pair

Jens Remus jremus@linux.ibm.com
Wed Sep 30 08:18:44 GMT 2026


km R1,R2 and kmc R1,R2 operand R1 must designate a general register
and must designate an even-numbered register other than general
register 0; otherwise, a specification exception is recognized.
Operand R2 must designate an even-odd pair of general registers and
must designate an even-numbered register other than general register 0;
otherwise, a specification exception is recognized. [1, 2]

For now do not enforce the operands R1 and R2 not to designate general
register 0.

[1]: IBM ESA/390 Principles of Operation, SA22-7201-08, z990,
     https://publibfp.dhe.ibm.com/epubs/pdf/dz9ar008.pdf

[2]: 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 (km, kmc): Use RRE_RERE instruction format.

gas/testsuite/
	* gas/s390/esa-z990.d (km, kmc): Operands R1 and R2 must
	designate an even register.
	* gas/s390/esa-z990.s (km, kmc): Likewise.

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

diff --git a/gas/testsuite/gas/s390/esa-z990.d b/gas/testsuite/gas/s390/esa-z990.d
index 3d05cd7e30e0..85612ad34192 100644
--- a/gas/testsuite/gas/s390/esa-z990.d
+++ b/gas/testsuite/gas/s390/esa-z990.d
@@ -6,8 +6,8 @@
 Disassembly of section .text:
 
 .* <foo>:
-.*:	b9 2e 00 69 [	 ]*km	%r6,%r9
-.*:	b9 2f 00 69 [	 ]*kmc	%r6,%r9
+.*:	b9 2e 00 68 [	 ]*km	%r6,%r8
+.*:	b9 2f 00 68 [	 ]*kmc	%r6,%r8
 .*:	b9 3e 00 69 [	 ]*kimd	%r6,%r9
 .*:	b9 3f 00 69 [	 ]*klmd	%r6,%r9
 .*:	b9 1e 00 69 [	 ]*kmac	%r6,%r9
diff --git a/gas/testsuite/gas/s390/esa-z990.s b/gas/testsuite/gas/s390/esa-z990.s
index 2156e83c56db..d4da66722ef1 100644
--- a/gas/testsuite/gas/s390/esa-z990.s
+++ b/gas/testsuite/gas/s390/esa-z990.s
@@ -1,7 +1,7 @@
 .text
 foo:
-	km	%r6,%r9
-	kmc	%r6,%r9
+	km	%r6,%r8
+	kmc	%r6,%r8
 	kimd	%r6,%r9
 	klmd	%r6,%r9
 	kmac	%r6,%r9
diff --git a/opcodes/s390-opc.txt b/opcodes/s390-opc.txt
index 57bee389d4a8..ab88a83f76bc 100644
--- a/opcodes/s390-opc.txt
+++ b/opcodes/s390-opc.txt
@@ -733,8 +733,8 @@ b33f msdr RRF_F0FF "multiply and subtract long hfp" z990 esa,zarch
 ed000000003f msd RXF_FRRDF "multiply and subtract long hfp" z990 esa,zarch
 b32f mser RRF_F0FF "mutliply and subtract short hfp" z990 esa,zarch
 ed000000002f mse RXF_FRRDF "multiply and subttract short hfp" z990 esa,zarch
-b92e km RRE_RR "cipher message" z990 esa,zarch
-b92f kmc RRE_RR "cipher message with chaining" z990 esa,zarch
+b92e km RRE_RERE "cipher message" z990 esa,zarch
+b92f kmc RRE_RERE "cipher message with chaining" z990 esa,zarch
 b93e kimd RRE_RR "compute intermediate message digest" z990 esa,zarch
 b93f klmd RRE_RR "compute last message digest" z990 esa,zarch
 b91e kmac RRE_RR "compute message authentication code" z990 esa,zarch
-- 
2.53.0



More information about the Binutils mailing list