987a74
diff -rup binutils.orig/gas/config/tc-s390.c binutils-2.30/gas/config/tc-s390.c
987a74
--- binutils.orig/gas/config/tc-s390.c	2021-09-29 15:59:10.710209740 +0100
987a74
+++ binutils-2.30/gas/config/tc-s390.c	2021-09-29 16:03:03.951577660 +0100
987a74
@@ -293,6 +293,8 @@ s390_parse_cpu (const char *         arg
987a74
     { STRING_COMMA_LEN ("z14"), STRING_COMMA_LEN ("arch12"),
987a74
       S390_INSTR_FLAG_HTM | S390_INSTR_FLAG_VX },
987a74
     { STRING_COMMA_LEN (""), STRING_COMMA_LEN ("arch13"),
987a74
+      S390_INSTR_FLAG_HTM | S390_INSTR_FLAG_VX },
987a74
+    { STRING_COMMA_LEN (""), STRING_COMMA_LEN ("arch14"),
987a74
       S390_INSTR_FLAG_HTM | S390_INSTR_FLAG_VX }
987a74
   };
987a74
   static struct
987a74
diff -rup binutils.orig/gas/doc/c-s390.texi binutils-2.30/gas/doc/c-s390.texi
987a74
--- binutils.orig/gas/doc/c-s390.texi	2021-09-29 15:59:10.710209740 +0100
987a74
+++ binutils-2.30/gas/doc/c-s390.texi	2021-09-29 16:04:39.597908390 +0100
987a74
@@ -18,7 +18,7 @@ and eleven chip levels. The architecture
987a74
 Architecture (ESA) and the newer z/Architecture mode. The chip levels
987a74
 are g5 (or arch3), g6, z900 (or arch5), z990 (or arch6), z9-109, z9-ec
987a74
 (or arch7), z10 (or arch8), z196 (or arch9), zEC12 (or arch10), z13
987a74
-(or arch11), z14 (or arch12), and arch13.
987a74
+(or arch11), z14 (or arch12), z15 (or arch13), or arch14.
987a74
 
987a74
 @menu
987a74
 * s390 Options::                Command-line Options.
987a74
@@ -70,8 +70,9 @@ are recognized:
987a74
 @code{z196} (or @code{arch9}),
987a74
 @code{zEC12} (or @code{arch10}),
987a74
 @code{z13} (or @code{arch11}),
987a74
-@code{z14} (or @code{arch12}), and
987a74
-@code{arch13}).
987a74
+@code{z14} (or @code{arch12}),
987a74
+@code{z15} (or @code{arch13}), and
987a74
+@code{arch14}.
987a74
 
987a74
 Assembling an instruction that is not supported on the target
987a74
 processor results in an error message.
987a74
@@ -312,7 +313,7 @@ field. The notation changes as follows:
987a74
 @cindex instruction formats, s390
987a74
 @cindex s390 instruction formats
987a74
 
987a74
-The Principles of Operation manuals lists 26 instruction formats where
987a74
+The Principles of Operation manuals lists 35 instruction formats where
987a74
 some of the formats have multiple variants. For the @samp{.insn}
987a74
 pseudo directive the assembler recognizes some of the formats.
987a74
 Typically, the most general variant of the instruction format is used
987a74
@@ -544,6 +545,54 @@ with the @samp{.insn} pseudo directive:
987a74
 0        8    12   16   20            32   36           47
987a74
 @end verbatim
987a74
 
987a74
+@item VRV format: <insn> V1,D2(V2,B2),M3
987a74
+@verbatim
987a74
++--------+----+----+----+-------------+----+------------+
987a74
+| OpCode | V1 | V2 | B2 |     D2      | M3 |   Opcode   |
987a74
++--------+----+----+----+-------------+----+------------+
987a74
+0        8    12   16   20            32   36           47
987a74
+@end verbatim
987a74
+
987a74
+@item VRI format: <insn> V1,V2,I3,M4,M5
987a74
+@verbatim
987a74
++--------+----+----+-------------+----+----+------------+
987a74
+| OpCode | V1 | V2 |     I3      | M5 | M4 |   Opcode   |
987a74
++--------+----+----+-------------+----+----+------------+
987a74
+0        8    12   16            28   32   36           47
987a74
+@end verbatim
987a74
+
987a74
+@item VRX format: <insn> V1,D2(R2,B2),M3
987a74
+@verbatim
987a74
++--------+----+----+----+-------------+----+------------+
987a74
+| OpCode | V1 | R2 | B2 |     D2      | M3 |   Opcode   |
987a74
++--------+----+----+----+-------------+----+------------+
987a74
+0        8    12   16   20            32   36           47
987a74
+@end verbatim
987a74
+
987a74
+@item VRS format: <insn> R1,V3,D2(B2),M4
987a74
+@verbatim
987a74
++--------+----+----+----+-------------+----+------------+
987a74
+| OpCode | R1 | V3 | B2 |     D2      | M4 |   Opcode   |
987a74
++--------+----+----+----+-------------+----+------------+
987a74
+0        8    12   16   20            32   36           47
987a74
+@end verbatim
987a74
+
987a74
+@item VRR format: <insn> V1,V2,V3,M4,M5,M6
987a74
+@verbatim
987a74
++--------+----+----+----+---+----+----+----+------------+
987a74
+| OpCode | V1 | V2 | V3 |///| M6 | M5 | M4 |   Opcode   |
987a74
++--------+----+----+----+---+----+----+----+------------+
987a74
+0        8    12   16       24   28   32   36           47
987a74
+@end verbatim
987a74
+
987a74
+@item VSI format: <insn> V1,D2(B2),I3
987a74
+@verbatim
987a74
++--------+---------+----+-------------+----+------------+
987a74
+| OpCode |   I3    | B2 |     D2      | V1 |   Opcode   |
987a74
++--------+---------+----+-------------+----+------------+
987a74
+0        8         16   20            32   36           47
987a74
+@end verbatim
987a74
+
987a74
 @end table
987a74
 
987a74
 For the complete list of all instruction format variants see the
987a74
diff -rup binutils.orig/gas/testsuite/gas/s390/esa-g5.d binutils-2.30/gas/testsuite/gas/s390/esa-g5.d
987a74
--- binutils.orig/gas/testsuite/gas/s390/esa-g5.d	2021-09-29 15:59:10.716209698 +0100
987a74
+++ binutils-2.30/gas/testsuite/gas/s390/esa-g5.d	2021-09-29 16:00:26.051682531 +0100
987a74
@@ -78,10 +78,14 @@ Disassembly of section .text:
987a74
 .*:	07 29 [	 ]*bhr	%r9
987a74
 .*:	07 f9 [	 ]*br	%r9
987a74
 .*:	a7 95 00 00 [	 ]*bras	%r9,e2 <foo\+0xe2>
987a74
-.*:	a7 64 00 00 [	 ]*jlh	e6 <foo\+0xe6>
987a74
-.*:	a7 66 00 00 [	 ]*brct	%r6,ea <foo\+0xea>
987a74
-.*:	84 69 00 00 [	 ]*brxh	%r6,%r9,ee <foo\+0xee>
987a74
-.*:	85 69 00 00 [	 ]*brxle	%r6,%r9,f2 <foo\+0xf2>
987a74
+.*:	a7 65 00 00 [	 ]*bras	%r6,e6 <foo\+0xe6>
987a74
+.*:	a7 64 00 00 [	 ]*jlh	ea <foo\+0xea>
987a74
+.*:	a7 66 00 00 [	 ]*brct	%r6,ee <foo\+0xee>
987a74
+.*:	a7 66 00 00 [	 ]*brct	%r6,f2 <foo\+0xf2>
987a74
+.*:	84 69 00 00 [	 ]*brxh	%r6,%r9,f6 <foo\+0xf6>
987a74
+.*:	84 69 00 00 [	 ]*brxh	%r6,%r9,fa <foo\+0xfa>
987a74
+.*:	85 69 00 00 [	 ]*brxle	%r6,%r9,fe <foo\+0xfe>
987a74
+.*:	85 69 00 00 [	 ]*brxle	%r6,%r9,102 <foo\+0x102>
987a74
 .*:	b2 5a 00 69 [	 ]*bsa	%r6,%r9
987a74
 .*:	b2 58 00 69 [	 ]*bsg	%r6,%r9
987a74
 .*:	0b 69 [	 ]*bsm	%r6,%r9
987a74
@@ -180,27 +184,49 @@ Disassembly of section .text:
987a74
 .*:	b2 21 00 69 [	 ]*ipte	%r6,%r9
987a74
 .*:	b2 29 00 69 [	 ]*iske	%r6,%r9
987a74
 .*:	b2 23 00 69 [	 ]*ivsk	%r6,%r9
987a74
-.*:	a7 f4 00 00 [	 ]*j	278 <foo\+0x278>
987a74
-.*:	a7 84 00 00 [	 ]*je	27c <foo\+0x27c>
987a74
-.*:	a7 24 00 00 [	 ]*jh	280 <foo\+0x280>
987a74
-.*:	a7 a4 00 00 [	 ]*jhe	284 <foo\+0x284>
987a74
-.*:	a7 44 00 00 [	 ]*jl	288 <foo\+0x288>
987a74
-.*:	a7 c4 00 00 [	 ]*jle	28c <foo\+0x28c>
987a74
-.*:	a7 64 00 00 [	 ]*jlh	290 <foo\+0x290>
987a74
-.*:	a7 44 00 00 [	 ]*jl	294 <foo\+0x294>
987a74
-.*:	a7 74 00 00 [	 ]*jne	298 <foo\+0x298>
987a74
-.*:	a7 d4 00 00 [	 ]*jnh	29c <foo\+0x29c>
987a74
-.*:	a7 54 00 00 [	 ]*jnhe	2a0 <foo\+0x2a0>
987a74
-.*:	a7 b4 00 00 [	 ]*jnl	2a4 <foo\+0x2a4>
987a74
-.*:	a7 34 00 00 [	 ]*jnle	2a8 <foo\+0x2a8>
987a74
-.*:	a7 94 00 00 [	 ]*jnlh	2ac <foo\+0x2ac>
987a74
-.*:	a7 b4 00 00 [	 ]*jnl	2b0 <foo\+0x2b0>
987a74
-.*:	a7 e4 00 00 [	 ]*jno	2b4 <foo\+0x2b4>
987a74
-.*:	a7 d4 00 00 [	 ]*jnh	2b8 <foo\+0x2b8>
987a74
-.*:	a7 74 00 00 [	 ]*jne	2bc <foo\+0x2bc>
987a74
-.*:	a7 14 00 00 [	 ]*jo	2c0 <foo\+0x2c0>
987a74
-.*:	a7 24 00 00 [	 ]*jh	2c4 <foo\+0x2c4>
987a74
-.*:	a7 84 00 00 [	 ]*je	2c8 <foo\+0x2c8>
987a74
+.*:	a7 f4 00 00 [	 ]*j	288 <foo\+0x288>
987a74
+.*:	a7 84 00 00 [	 ]*je	28c <foo\+0x28c>
987a74
+.*:	a7 24 00 00 [	 ]*jh	290 <foo\+0x290>
987a74
+.*:	a7 a4 00 00 [	 ]*jhe	294 <foo\+0x294>
987a74
+.*:	a7 44 00 00 [	 ]*jl	298 <foo\+0x298>
987a74
+.*:	a7 c4 00 00 [	 ]*jle	29c <foo\+0x29c>
987a74
+.*:	a7 64 00 00 [	 ]*jlh	2a0 <foo\+0x2a0>
987a74
+.*:	a7 44 00 00 [	 ]*jl	2a4 <foo\+0x2a4>
987a74
+.*:	a7 74 00 00 [	 ]*jne	2a8 <foo\+0x2a8>
987a74
+.*:	a7 d4 00 00 [	 ]*jnh	2ac <foo\+0x2ac>
987a74
+.*:	a7 54 00 00 [	 ]*jnhe	2b0 <foo\+0x2b0>
987a74
+.*:	a7 b4 00 00 [	 ]*jnl	2b4 <foo\+0x2b4>
987a74
+.*:	a7 34 00 00 [	 ]*jnle	2b8 <foo\+0x2b8>
987a74
+.*:	a7 94 00 00 [	 ]*jnlh	2bc <foo\+0x2bc>
987a74
+.*:	a7 b4 00 00 [	 ]*jnl	2c0 <foo\+0x2c0>
987a74
+.*:	a7 e4 00 00 [	 ]*jno	2c4 <foo\+0x2c4>
987a74
+.*:	a7 d4 00 00 [	 ]*jnh	2c8 <foo\+0x2c8>
987a74
+.*:	a7 74 00 00 [	 ]*jne	2cc <foo\+0x2cc>
987a74
+.*:	a7 14 00 00 [	 ]*jo	2d0 <foo\+0x2d0>
987a74
+.*:	a7 24 00 00 [	 ]*jh	2d4 <foo\+0x2d4>
987a74
+.*:	a7 84 00 00 [	 ]*je	2d8 <foo\+0x2d8>
987a74
+.*:	a7 04 00 00 [	 ]*jnop	2dc <foo\+0x2dc>
987a74
+.*:	a7 14 00 00 [	 ]*jo	2e0 <foo\+0x2e0>
987a74
+.*:	a7 24 00 00 [	 ]*jh	2e4 <foo\+0x2e4>
987a74
+.*:	a7 24 00 00 [	 ]*jh	2e8 <foo\+0x2e8>
987a74
+.*:	a7 34 00 00 [	 ]*jnle	2ec <foo\+0x2ec>
987a74
+.*:	a7 44 00 00 [	 ]*jl	2f0 <foo\+0x2f0>
987a74
+.*:	a7 44 00 00 [	 ]*jl	2f4 <foo\+0x2f4>
987a74
+.*:	a7 54 00 00 [	 ]*jnhe	2f8 <foo\+0x2f8>
987a74
+.*:	a7 64 00 00 [	 ]*jlh	2fc <foo\+0x2fc>
987a74
+.*:	a7 74 00 00 [	 ]*jne	300 <foo\+0x300>
987a74
+.*:	a7 74 00 00 [	 ]*jne	304 <foo\+0x304>
987a74
+.*:	a7 84 00 00 [	 ]*je	308 <foo\+0x308>
987a74
+.*:	a7 84 00 00 [	 ]*je	30c <foo\+0x30c>
987a74
+.*:	a7 94 00 00 [	 ]*jnlh	310 <foo\+0x310>
987a74
+.*:	a7 a4 00 00 [	 ]*jhe	314 <foo\+0x314>
987a74
+.*:	a7 b4 00 00 [	 ]*jnl	318 <foo\+0x318>
987a74
+.*:	a7 b4 00 00 [	 ]*jnl	31c <foo\+0x31c>
987a74
+.*:	a7 c4 00 00 [	 ]*jle	320 <foo\+0x320>
987a74
+.*:	a7 d4 00 00 [	 ]*jnh	324 <foo\+0x324>
987a74
+.*:	a7 d4 00 00 [	 ]*jnh	328 <foo\+0x328>
987a74
+.*:	a7 e4 00 00 [	 ]*jno	32c <foo\+0x32c>
987a74
+.*:	a7 f4 00 00 [	 ]*j	330 <foo\+0x330>
987a74
 .*:	ed 65 af ff 00 18 [	 ]*kdb	%f6,4095\(%r5,%r10\)
987a74
 .*:	b3 18 00 69 [	 ]*kdbr	%f6,%f9
987a74
 .*:	ed 65 af ff 00 08 [	 ]*keb	%f6,4095\(%r5,%r10\)
987a74
@@ -483,4 +509,4 @@ Disassembly of section .text:
987a74
 .*:	f8 58 5f ff af ff [	 ]*zap	4095\(6,%r5\),4095\(9,%r10\)
987a74
 .*:	b2 21 b0 69 [	 ]*ipte	%r6,%r9,%r11
987a74
 .*:	b2 21 bd 69 [	 ]*ipte	%r6,%r9,%r11,13
987a74
-.*:	07 07 [ 	]*nopr	%r7
987a74
+.*:	07 07 [	 ]*nopr	%r7
987a74
diff -rup binutils.orig/gas/testsuite/gas/s390/esa-g5.s binutils-2.30/gas/testsuite/gas/s390/esa-g5.s
987a74
--- binutils.orig/gas/testsuite/gas/s390/esa-g5.s	2021-09-29 15:59:10.716209698 +0100
987a74
+++ binutils-2.30/gas/testsuite/gas/s390/esa-g5.s	2021-09-29 16:00:26.052682524 +0100
987a74
@@ -72,10 +72,14 @@ foo:
987a74
 	bpr	%r9
987a74
 	br	%r9
987a74
 	bras	%r9,.
987a74
+	jas	%r6,.
987a74
 	brc	6,.
987a74
 	brct	6,.
987a74
+	jct	%r6,.
987a74
 	brxh	%r6,%r9,.
987a74
+	jxh	%r6,%r9,.
987a74
 	brxle	%r6,%r9,.
987a74
+	jxle	%r6,%r9,.
987a74
 	bsa	%r6,%r9
987a74
 	bsg	%r6,%r9
987a74
 	bsm	%r6,%r9
987a74
@@ -195,6 +199,28 @@ foo:
987a74
 	jo	.
987a74
 	jp	.
987a74
 	jz	.
987a74
+	jnop	.
987a74
+	bro	.
987a74
+	brh	.
987a74
+	brp	.
987a74
+	brnle	.
987a74
+	brl	.
987a74
+	brm	.
987a74
+	brnhe	.
987a74
+	brlh	.
987a74
+	brne	.
987a74
+	brnz	.
987a74
+	bre	.
987a74
+	brz	.
987a74
+	brnlh	.
987a74
+	brhe	.
987a74
+	brnl	.
987a74
+	brnm	.
987a74
+	brle	.
987a74
+	brnh	.
987a74
+	brnp	.
987a74
+	brno	.
987a74
+	bru	.
987a74
 	kdb	%f6,4095(%r5,%r10)
987a74
 	kdbr	%f6,%f9
987a74
 	keb	%f6,4095(%r5,%r10)
987a74
diff -rup binutils.orig/gas/testsuite/gas/s390/esa-z900.d binutils-2.30/gas/testsuite/gas/s390/esa-z900.d
987a74
--- binutils.orig/gas/testsuite/gas/s390/esa-z900.d	2021-09-29 15:59:10.717209691 +0100
987a74
+++ binutils-2.30/gas/testsuite/gas/s390/esa-z900.d	2021-09-29 16:00:26.052682524 +0100
987a74
@@ -6,29 +6,52 @@
987a74
 Disassembly of section .text:
987a74
 
987a74
 .* <foo>:
987a74
-.*:	c0 f4 00 00 00 00 [	 ]*jg	0 \<foo\>
987a74
-.*:	c0 14 00 00 00 00 [	 ]*jgo	6 \<foo\+0x6>
987a74
-.*:	c0 24 00 00 00 00 [	 ]*jgh	c \<foo\+0xc>
987a74
-.*:	c0 24 00 00 00 00 [	 ]*jgh	12 \<foo\+0x12>
987a74
-.*:	c0 34 00 00 00 00 [	 ]*jgnle	18 \<foo\+0x18>
987a74
-.*:	c0 44 00 00 00 00 [	 ]*jgl	1e \<foo\+0x1e>
987a74
-.*:	c0 44 00 00 00 00 [	 ]*jgl	24 \<foo\+0x24>
987a74
-.*:	c0 54 00 00 00 00 [	 ]*jgnhe	2a \<foo\+0x2a>
987a74
-.*:	c0 64 00 00 00 00 [	 ]*jglh	30 \<foo\+0x30>
987a74
-.*:	c0 74 00 00 00 00 [	 ]*jgne	36 \<foo\+0x36>
987a74
-.*:	c0 74 00 00 00 00 [	 ]*jgne	3c \<foo\+0x3c>
987a74
-.*:	c0 84 00 00 00 00 [	 ]*jge	42 \<foo\+0x42>
987a74
-.*:	c0 84 00 00 00 00 [	 ]*jge	48 \<foo\+0x48>
987a74
-.*:	c0 94 00 00 00 00 [	 ]*jgnlh	4e \<foo\+0x4e>
987a74
-.*:	c0 a4 00 00 00 00 [	 ]*jghe	54 \<foo\+0x54>
987a74
-.*:	c0 b4 00 00 00 00 [	 ]*jgnl	5a \<foo\+0x5a>
987a74
-.*:	c0 b4 00 00 00 00 [	 ]*jgnl	60 \<foo\+0x60>
987a74
-.*:	c0 c4 00 00 00 00 [	 ]*jgle	66 \<foo\+0x66>
987a74
-.*:	c0 d4 00 00 00 00 [	 ]*jgnh	6c \<foo\+0x6c>
987a74
-.*:	c0 d4 00 00 00 00 [	 ]*jgnh	72 \<foo\+0x72>
987a74
-.*:	c0 e4 00 00 00 00 [	 ]*jgno	78 \<foo\+0x78>
987a74
-.*:	c0 f4 00 00 00 00 [	 ]*jg	7e \<foo\+0x7e>
987a74
-.*:	c0 65 00 00 00 00 [	 ]*brasl	%r6,84 \<foo\+0x84>
987a74
+.*:	c0 f4 00 00 00 00 [	 ]*jg	0 <foo>
987a74
+.*:	c0 04 00 00 00 00 [	 ]*jgnop	6 <foo\+0x6>
987a74
+.*:	c0 14 00 00 00 00 [	 ]*jgo	c <foo\+0xc>
987a74
+.*:	c0 24 00 00 00 00 [	 ]*jgh	12 <foo\+0x12>
987a74
+.*:	c0 24 00 00 00 00 [	 ]*jgh	18 <foo\+0x18>
987a74
+.*:	c0 34 00 00 00 00 [	 ]*jgnle	1e <foo\+0x1e>
987a74
+.*:	c0 44 00 00 00 00 [	 ]*jgl	24 <foo\+0x24>
987a74
+.*:	c0 44 00 00 00 00 [	 ]*jgl	2a <foo\+0x2a>
987a74
+.*:	c0 54 00 00 00 00 [	 ]*jgnhe	30 <foo\+0x30>
987a74
+.*:	c0 64 00 00 00 00 [	 ]*jglh	36 <foo\+0x36>
987a74
+.*:	c0 74 00 00 00 00 [	 ]*jgne	3c <foo\+0x3c>
987a74
+.*:	c0 74 00 00 00 00 [	 ]*jgne	42 <foo\+0x42>
987a74
+.*:	c0 84 00 00 00 00 [	 ]*jge	48 <foo\+0x48>
987a74
+.*:	c0 84 00 00 00 00 [	 ]*jge	4e <foo\+0x4e>
987a74
+.*:	c0 94 00 00 00 00 [	 ]*jgnlh	54 <foo\+0x54>
987a74
+.*:	c0 a4 00 00 00 00 [	 ]*jghe	5a <foo\+0x5a>
987a74
+.*:	c0 b4 00 00 00 00 [	 ]*jgnl	60 <foo\+0x60>
987a74
+.*:	c0 b4 00 00 00 00 [	 ]*jgnl	66 <foo\+0x66>
987a74
+.*:	c0 c4 00 00 00 00 [	 ]*jgle	6c <foo\+0x6c>
987a74
+.*:	c0 d4 00 00 00 00 [	 ]*jgnh	72 <foo\+0x72>
987a74
+.*:	c0 d4 00 00 00 00 [	 ]*jgnh	78 <foo\+0x78>
987a74
+.*:	c0 e4 00 00 00 00 [	 ]*jgno	7e <foo\+0x7e>
987a74
+.*:	c0 f4 00 00 00 00 [	 ]*jg	84 <foo\+0x84>
987a74
+.*:	c0 14 00 00 00 00 [	 ]*jgo	8a <foo\+0x8a>
987a74
+.*:	c0 24 00 00 00 00 [	 ]*jgh	90 <foo\+0x90>
987a74
+.*:	c0 24 00 00 00 00 [	 ]*jgh	96 <foo\+0x96>
987a74
+.*:	c0 34 00 00 00 00 [	 ]*jgnle	9c <foo\+0x9c>
987a74
+.*:	c0 44 00 00 00 00 [	 ]*jgl	a2 <foo\+0xa2>
987a74
+.*:	c0 44 00 00 00 00 [	 ]*jgl	a8 <foo\+0xa8>
987a74
+.*:	c0 54 00 00 00 00 [	 ]*jgnhe	ae <foo\+0xae>
987a74
+.*:	c0 64 00 00 00 00 [	 ]*jglh	b4 <foo\+0xb4>
987a74
+.*:	c0 74 00 00 00 00 [	 ]*jgne	ba <foo\+0xba>
987a74
+.*:	c0 74 00 00 00 00 [	 ]*jgne	c0 <foo\+0xc0>
987a74
+.*:	c0 84 00 00 00 00 [	 ]*jge	c6 <foo\+0xc6>
987a74
+.*:	c0 84 00 00 00 00 [	 ]*jge	cc <foo\+0xcc>
987a74
+.*:	c0 94 00 00 00 00 [	 ]*jgnlh	d2 <foo\+0xd2>
987a74
+.*:	c0 a4 00 00 00 00 [	 ]*jghe	d8 <foo\+0xd8>
987a74
+.*:	c0 b4 00 00 00 00 [	 ]*jgnl	de <foo\+0xde>
987a74
+.*:	c0 b4 00 00 00 00 [	 ]*jgnl	e4 <foo\+0xe4>
987a74
+.*:	c0 c4 00 00 00 00 [	 ]*jgle	ea <foo\+0xea>
987a74
+.*:	c0 d4 00 00 00 00 [	 ]*jgnh	f0 <foo\+0xf0>
987a74
+.*:	c0 d4 00 00 00 00 [	 ]*jgnh	f6 <foo\+0xf6>
987a74
+.*:	c0 e4 00 00 00 00 [	 ]*jgno	fc <foo\+0xfc>
987a74
+.*:	c0 f4 00 00 00 00 [	 ]*jg	102 <foo\+0x102>
987a74
+.*:	c0 65 00 00 00 00 [	 ]*brasl	%r6,108 <foo\+0x108>
987a74
+.*:	c0 65 00 00 00 00 [	 ]*brasl	%r6,10e <foo\+0x10e>
987a74
 .*:	01 0b [	 ]*tam
987a74
 .*:	01 0c [	 ]*sam24
987a74
 .*:	01 0d [	 ]*sam31
987a74
@@ -39,7 +62,7 @@ Disassembly of section .text:
987a74
 .*:	b9 97 00 69 [	 ]*dlr	%r6,%r9
987a74
 .*:	b9 98 00 69 [	 ]*alcr	%r6,%r9
987a74
 .*:	b9 99 00 69 [	 ]*slbr	%r6,%r9
987a74
-.*:	c0 60 00 00 00 00 [	 ]*larl	%r6,ac \<foo\+0xac\>
987a74
+.*:	c0 60 00 00 00 00 [	 ]*larl	%r6,136 <foo\+0x136>
987a74
 .*:	e3 65 af ff 00 1e [	 ]*lrv	%r6,4095\(%r5,%r10\)
987a74
 .*:	e3 65 af ff 00 1f [	 ]*lrvh	%r6,4095\(%r5,%r10\)
987a74
 .*:	e3 65 af ff 00 3e [	 ]*strv	%r6,4095\(%r5,%r10\)
987a74
@@ -49,3 +72,4 @@ Disassembly of section .text:
987a74
 .*:	e3 65 af ff 00 98 [	 ]*alc	%r6,4095\(%r5,%r10\)
987a74
 .*:	e3 65 af ff 00 99 [	 ]*slb	%r6,4095\(%r5,%r10\)
987a74
 .*:	eb 69 5f ff 00 1d [	 ]*rll	%r6,%r9,4095\(%r5\)
987a74
+.*:	07 07 [	 ]*nopr	%r7
987a74
diff -rup binutils.orig/gas/testsuite/gas/s390/esa-z900.s binutils-2.30/gas/testsuite/gas/s390/esa-z900.s
987a74
--- binutils.orig/gas/testsuite/gas/s390/esa-z900.s	2021-09-29 15:59:10.716209698 +0100
987a74
+++ binutils-2.30/gas/testsuite/gas/s390/esa-z900.s	2021-09-29 16:00:26.053682517 +0100
987a74
@@ -1,6 +1,7 @@
987a74
 .text
987a74
 foo:
987a74
 	brcl	15,.
987a74
+	jgnop	.
987a74
 	jgo	.
987a74
 	jgh	.
987a74
 	jgp	.
987a74
@@ -22,7 +23,29 @@ foo:
987a74
 	jgnp	.
987a74
 	jgno	.
987a74
 	jg	.
987a74
+	brol	.
987a74
+	brhl	.
987a74
+	brpl	.
987a74
+	brnlel	.
987a74
+	brll	.
987a74
+	brml	.
987a74
+	brnhel	.
987a74
+	brlhl	.
987a74
+	brnel	.
987a74
+	brnzl	.
987a74
+	brel	.
987a74
+	brzl	.
987a74
+	brnlhl	.
987a74
+	brhel	.
987a74
+	brnll	.
987a74
+	brnml	.
987a74
+	brlel	.
987a74
+	brnhl	.
987a74
+	brnpl	.
987a74
+	brnol	.
987a74
+	brul	.
987a74
 	brasl	%r6,.
987a74
+	jasl	%r6,.
987a74
 	tam
987a74
 	sam24
987a74
 	sam31
987a74
diff -rup binutils.orig/gas/testsuite/gas/s390/s390.exp binutils-2.30/gas/testsuite/gas/s390/s390.exp
987a74
--- binutils.orig/gas/testsuite/gas/s390/s390.exp	2021-09-29 15:59:10.716209698 +0100
987a74
+++ binutils-2.30/gas/testsuite/gas/s390/s390.exp	2021-09-29 16:01:42.244149395 +0100
987a74
@@ -30,6 +30,7 @@ if [expr [istarget "s390-*-*"] ||  [ista
987a74
     run_dump_test "zarch-z13" "{as -m64} {as -march=z13}"
987a74
     run_dump_test "zarch-arch12" "{as -m64} {as -march=arch12}"
987a74
     run_dump_test "zarch-arch13" "{as -m64} {as -march=arch13}"
987a74
+    run_dump_test "zarch-arch14" "{as -m64} {as -march=arch14}"
987a74
     run_dump_test "zarch-reloc" "{as -m64}"
987a74
     run_dump_test "zarch-operands" "{as -m64} {as -march=z9-109}"
987a74
     run_dump_test "zarch-machine" "{as -m64} {as -march=z900}"
987a74
diff -rup binutils.orig/gas/testsuite/gas/s390/zarch-z10.d binutils-2.30/gas/testsuite/gas/s390/zarch-z10.d
987a74
--- binutils.orig/gas/testsuite/gas/s390/zarch-z10.d	2021-09-29 15:59:10.716209698 +0100
987a74
+++ binutils-2.30/gas/testsuite/gas/s390/zarch-z10.d	2021-09-29 16:01:16.115332226 +0100
987a74
@@ -362,11 +362,13 @@ Disassembly of section .text:
987a74
 .*:	ec 67 d2 dc e6 54 [	 ]*rnsbg	%r6,%r7,210,220,230
987a74
 .*:	ec 67 d2 dc e6 57 [	 ]*rxsbg	%r6,%r7,210,220,230
987a74
 .*:	ec 67 d2 dc e6 56 [	 ]*rosbg	%r6,%r7,210,220,230
987a74
-.*:	ec 67 d2 dc e6 55 [	 ]*risbg	%r6,%r7,210,220,230
987a74
-.*:	c4 6f 00 00 00 00 [	 ]*strl	%r6,7f6 <foo\+0x7f6>
987a74
-.*:	c4 6b 00 00 00 00 [	 ]*stgrl	%r6,7fc <foo\+0x7fc>
987a74
-.*:	c4 67 00 00 00 00 [	 ]*sthrl	%r6,802 <foo\+0x802>
987a74
-.*:	c6 60 00 00 00 00 [	 ]*exrl	%r6,808 <foo\+0x808>
987a74
+.*:	ec 67 d2 14 e6 55 [	 ]*risbg	%r6,%r7,210,20,230
987a74
+.*:	ec 67 d2 bc e6 55 [	 ]*risbgz	%r6,%r7,210,60,230
987a74
+.*:	ec 67 d2 94 e6 55 [	 ]*risbgz	%r6,%r7,210,20,230
987a74
+.*:	c4 6f 00 00 00 00 [	 ]*strl	%r6,802 <foo\+0x802>
987a74
+.*:	c4 6b 00 00 00 00 [	 ]*stgrl	%r6,808 <foo\+0x808>
987a74
+.*:	c4 67 00 00 00 00 [	 ]*sthrl	%r6,80e <foo\+0x80e>
987a74
+.*:	c6 60 00 00 00 00 [	 ]*exrl	%r6,814 <foo\+0x814>
987a74
 .*:	af ee 6d 05 [	 ]*mc	3333\(%r6\),238
987a74
 .*:	b9 a2 00 60 [	 ]*ptf	%r6
987a74
 .*:	b9 af 00 67 [	 ]*pfmf	%r6,%r7
987a74
diff -rup binutils.orig/gas/testsuite/gas/s390/zarch-z10.s binutils-2.30/gas/testsuite/gas/s390/zarch-z10.s
987a74
--- binutils.orig/gas/testsuite/gas/s390/zarch-z10.s	2021-09-29 15:59:10.716209698 +0100
987a74
+++ binutils-2.30/gas/testsuite/gas/s390/zarch-z10.s	2021-09-29 16:01:16.116332219 +0100
987a74
@@ -356,7 +356,9 @@ foo:
987a74
 	rnsbg	%r6,%r7,210,220,230
987a74
 	rxsbg	%r6,%r7,210,220,230
987a74
 	rosbg	%r6,%r7,210,220,230
987a74
-	risbg	%r6,%r7,210,220,230
987a74
+	risbg	%r6,%r7,210,20,230
987a74
+	risbg	%r6,%r7,210,188,230
987a74
+	risbgz	%r6,%r7,210,20,230
987a74
 	strl	%r6,.
987a74
 	stgrl	%r6,.
987a74
 	sthrl	%r6,.
987a74
diff -rup binutils.orig/gas/testsuite/gas/s390/zarch-z900.d binutils-2.30/gas/testsuite/gas/s390/zarch-z900.d
987a74
--- binutils.orig/gas/testsuite/gas/s390/zarch-z900.d	2021-09-29 15:59:10.717209691 +0100
987a74
+++ binutils-2.30/gas/testsuite/gas/s390/zarch-z900.d	2021-09-29 16:00:26.053682517 +0100
987a74
@@ -20,8 +20,11 @@ Disassembly of section .text:
987a74
 .*:	e3 95 af ff 00 46 [ 	]*bctg	%r9,4095\(%r5,%r10\)
987a74
 .*:	b9 46 00 96 [ 	]*bctgr	%r9,%r6
987a74
 .*:	a7 97 00 00 [	 ]*brctg	%r9,40 \<foo\+0x40\>
987a74
-.*:	ec 96 00 00 00 44 [ 	]*brxhg	%r9,%r6,44 <foo\+0x44>
987a74
-.*:	ec 96 00 00 00 45 [ 	]*brxlg	%r9,%r6,4a <foo\+0x4a>
987a74
+.*:	a7 67 00 00 [	 ]*brctg	%r6,44 <foo\+0x44>
987a74
+.*:	ec 96 00 00 00 44 [ 	]*brxhg	%r9,%r6,48 <foo\+0x48>
987a74
+.*:	ec 69 00 00 00 44 [	 ]*brxhg	%r6,%r9,4e <foo\+0x4e>
987a74
+.*:	ec 96 00 00 00 45 [ 	]*brxlg	%r9,%r6,54 <foo\+0x54>
987a74
+.*:	ec 69 00 00 00 45 [	 ]*brxlg	%r6,%r9,5a <foo\+0x5a>
987a74
 .*:	eb 96 5f ff 00 44 [ 	]*bxhg	%r9,%r6,4095\(%r5\)
987a74
 .*:	eb 96 5f ff 00 45 [ 	]*bxleg	%r9,%r6,4095\(%r5\)
987a74
 .*:	b3 a5 00 96 [ 	]*cdgbr	%f9,%r6
987a74
diff -rup binutils.orig/gas/testsuite/gas/s390/zarch-z900.s binutils-2.30/gas/testsuite/gas/s390/zarch-z900.s
987a74
--- binutils.orig/gas/testsuite/gas/s390/zarch-z900.s	2021-09-29 15:59:10.716209698 +0100
987a74
+++ binutils-2.30/gas/testsuite/gas/s390/zarch-z900.s	2021-09-29 16:00:26.053682517 +0100
987a74
@@ -14,8 +14,11 @@ foo:
987a74
 	bctg	%r9,4095(%r5,%r10)
987a74
 	bctgr	%r9,%r6
987a74
 	brctg	%r9,.
987a74
+	jctg	%r6,.
987a74
 	brxhg	%r9,%r6,.
987a74
+	jxhg	%r6,%r9,.
987a74
 	brxlg	%r9,%r6,.
987a74
+	jxleg	%r6,%r9,.
987a74
 	bxhg	%r9,%r6,4095(%r5)
987a74
 	bxleg	%r9,%r6,4095(%r5)
987a74
 	cdgbr	%f9,%r6
987a74
diff -rup binutils.orig/gas/testsuite/gas/s390/zarch-zEC12.d binutils-2.30/gas/testsuite/gas/s390/zarch-zEC12.d
987a74
--- binutils.orig/gas/testsuite/gas/s390/zarch-zEC12.d	2021-09-29 15:59:10.716209698 +0100
987a74
+++ binutils-2.30/gas/testsuite/gas/s390/zarch-zEC12.d	2021-09-29 16:01:16.116332219 +0100
987a74
@@ -47,6 +47,8 @@ Disassembly of section .text:
987a74
 .*:	eb 6c 7a 4d fe 2b [	 ]*clgtnh	%r6,-5555\(%r7\)
987a74
 .*:	eb 6c 7a 4d fe 2b [	 ]*clgtnh	%r6,-5555\(%r7\)
987a74
 .*:	ec 67 0c 0d 0e 59 [	 ]*risbgn	%r6,%r7,12,13,14
987a74
+.*:	ec 67 0c bc 0e 59 [	 ]*risbgnz	%r6,%r7,12,60,14
987a74
+.*:	ec 67 0c 94 0e 59 [	 ]*risbgnz	%r6,%r7,12,20,14
987a74
 .*:	ed 0f 8f a0 6d aa [	 ]*cdzt	%f6,4000\(16,%r8\),13
987a74
 .*:	ed 21 8f a0 4d ab [	 ]*cxzt	%f4,4000\(34,%r8\),13
987a74
 .*:	ed 0f 8f a0 6d a8 [	 ]*czdt	%f6,4000\(16,%r8\),13
987a74
@@ -54,16 +56,16 @@ Disassembly of section .text:
987a74
 .*:	b2 e8 c0 56 [	 ]*ppa	%r5,%r6,12
987a74
 .*:	b9 8f 60 59 [	 ]*crdte	%r5,%r6,%r9
987a74
 .*:	b9 8f 61 59 [	 ]*crdte	%r5,%r6,%r9,1
987a74
-.*:	c5 a0 0c 00 00 0c [	 ]*bprp	10,12a <bar>,12a <bar>
987a74
-.*:	c5 a0 00 00 00 00 [	 ]*bprp	10,118 <foo\+0x118>,118 <foo\+0x118>
987a74
-[	 ]*119: R_390_PLT12DBL	bar\+0x1
987a74
-[	 ]*11b: R_390_PLT24DBL	bar\+0x3
987a74
-.*:	c7 a0 00 00 00 00 [	 ]*bpp	10,11e <foo\+0x11e>,0
987a74
-[	 ]*122: R_390_PLT16DBL	bar\+0x4
987a74
-.*:	c7 a0 00 00 00 00 [	 ]*bpp	10,124 <foo\+0x124>,0
987a74
-[	 ]*128: R_390_PC16DBL	baz\+0x4
987a74
+.*:	c5 a0 0c 00 00 0c [	 ]*bprp	10,136 <bar>,136 <bar>
987a74
+.*:	c5 a0 00 00 00 00 [	 ]*bprp	10,124 <foo\+0x124>,124 <foo\+0x124>
987a74
+[	 ]*125: R_390_PLT12DBL	bar\+0x1
987a74
+[	 ]*127: R_390_PLT24DBL	bar\+0x3
987a74
+.*:	c7 a0 00 00 00 00 [	 ]*bpp	10,12a <foo\+0x12a>,0
987a74
+[	 ]*12e: R_390_PLT16DBL	bar\+0x4
987a74
+.*:	c7 a0 00 00 00 00 [	 ]*bpp	10,130 <foo\+0x130>,0
987a74
+[	 ]*134: R_390_PC16DBL	baz\+0x4
987a74
 
987a74
 
987a74
-000000000000012a <bar>:
987a74
+0000000000000136 <bar>:
987a74
 
987a74
 .*:	07 07 [	 ]*nopr	%r7
987a74
diff -rup binutils.orig/gas/testsuite/gas/s390/zarch-zEC12.s binutils-2.30/gas/testsuite/gas/s390/zarch-zEC12.s
987a74
--- binutils.orig/gas/testsuite/gas/s390/zarch-zEC12.s	2021-09-29 15:59:10.716209698 +0100
987a74
+++ binutils-2.30/gas/testsuite/gas/s390/zarch-zEC12.s	2021-09-29 16:01:16.116332219 +0100
987a74
@@ -44,6 +44,9 @@ foo:
987a74
 	clgtnh	%r6,-5555(%r7)
987a74
 
987a74
 	risbgn	%r6,%r7,12,13,14
987a74
+	risbgn	%r6,%r7,12,188,14
987a74
+	risbgnz	%r6,%r7,12,20,14
987a74
+
987a74
 	cdzt	%f6,4000(16,%r8),13
987a74
 	cxzt	%f4,4000(34,%r8),13
987a74
 	czdt	%f6,4000(16,%r8),13
987a74
diff -rup binutils.orig/include/opcode/s390.h binutils-2.30/include/opcode/s390.h
987a74
--- binutils.orig/include/opcode/s390.h	2021-09-29 15:59:10.908208355 +0100
987a74
+++ binutils-2.30/include/opcode/s390.h	2021-09-29 16:01:42.245149388 +0100
987a74
@@ -44,6 +44,7 @@ enum s390_opcode_cpu_val
987a74
     S390_OPCODE_Z13,
987a74
     S390_OPCODE_ARCH12,
987a74
     S390_OPCODE_ARCH13,
987a74
+    S390_OPCODE_ARCH14,
987a74
     S390_OPCODE_MAXCPU
987a74
   };
987a74
 
987a74
diff -rup binutils.orig/ld/ChangeLog.orig binutils-2.30/ld/ChangeLog.orig
987a74
--- binutils.orig/ld/ChangeLog.orig	2021-09-29 15:59:10.935208166 +0100
987a74
+++ binutils-2.30/ld/ChangeLog.orig	2021-09-29 16:00:26.053682517 +0100
987a74
@@ -1,3 +1,27 @@
987a74
+2018-01-27  Nick Clifton  <nickc@redhat.com>
987a74
+
987a74
+	This is the 2.30 release:
987a74
+
987a74
+	* configure: Regenerate.
987a74
+	* po/ld.pot: Regenerate.
987a74
+
987a74
+2018-01-27  Nick Clifton  <nickc@redhat.com>
987a74
+
987a74
+	PR 22751
987a74
+	Revert this change as a temporary solution for this PR:
987a74
+
987a74
+	2017-09-02  Alan Modra  <amodra@gmail.com>
987a74
+
987a74
+	* ldlang.h (lang_input_statement_type): Expand comments.
987a74
+	(LANG_FOR_EACH_INPUT_STATEMENT): Rewrite without casts.
987a74
+	* ldlang.c (lang_for_each_input_file): Likewise.
987a74
+	(load_symbols): Set usrdata for archives.
987a74
+	(find_rescan_insertion): New function.
987a74
+	(lang_process): Trim off and reinsert entries added to file chain
987a74
+	when rescanning archives for LTO.
987a74
+	* ldmain.c (add_archive_element): Set my_archive input_statement
987a74
+	next pointer to last element added.
987a74
+
987a74
 2018-01-25  Eric Botcazou  <ebotcazou@adacore.com>
987a74
 
987a74
 	* testsuite/ld-sparc/sparc.exp (32-bit: Helper shared library):
987a74
diff -rup binutils.orig/ld/ChangeLog.rej binutils-2.30/ld/ChangeLog.rej
987a74
--- binutils.orig/ld/ChangeLog.rej	2021-09-29 15:59:10.935208166 +0100
987a74
+++ binutils-2.30/ld/ChangeLog.rej	2021-09-29 16:00:26.053682517 +0100
987a74
@@ -1,18 +1,11 @@
987a74
 --- ld/ChangeLog
987a74
 +++ ld/ChangeLog
987a74
-@@ -1,15 +1,3 @@
987a74
--2017-09-02  Alan Modra  <amodra@gmail.com>
987a74
--
987a74
--	* ldlang.h (lang_input_statement_type): Expand comments.
987a74
--	(LANG_FOR_EACH_INPUT_STATEMENT): Rewrite without casts.
987a74
--	* ldlang.c (lang_for_each_input_file): Likewise.
987a74
--	(load_symbols): Set usrdata for archives.
987a74
--	(find_rescan_insertion): New function.
987a74
--	(lang_process): Trim off and reinsert entries added to file chain
987a74
--	when rescanning archives for LTO.
987a74
--	* ldmain.c (add_archive_element): Set my_archive input_statement
987a74
--	next pointer to last element added.
987a74
--
987a74
- 2017-09-01  H.J. Lu  <hongjiu.lu@intel.com>
987a74
+@@ -1,3 +1,8 @@
987a74
++2020-12-03  Andreas Krebbel  <krebbel@linux.ibm.com>
987a74
++
987a74
++	* testsuite/ld-s390/tlsbin_64.dd: The newly added jgnop mnemonic
987a74
++	replaces long relative branches with empty condition code masks.
987a74
++
987a74
+ 2020-12-03  Maciej W. Rozycki  <macro@linux-mips.org>
987a74
  
987a74
- 	PR ld/22064
987a74
+ 	* testsuite/ld-vax-elf/vax-elf.exp: Wrap excessively long lines
987a74
diff -rup binutils.orig/ld/testsuite/ld-s390/tlsbin_64.dd binutils-2.30/ld/testsuite/ld-s390/tlsbin_64.dd
987a74
--- binutils.orig/ld/testsuite/ld-s390/tlsbin_64.dd	2021-09-29 15:59:10.988207795 +0100
987a74
+++ binutils-2.30/ld/testsuite/ld-s390/tlsbin_64.dd	2021-09-29 16:00:26.053682517 +0100
987a74
@@ -87,26 +87,26 @@ Disassembly of section .text:
987a74
  +[0-9a-f]+:	41 22 90 00       	la	%r2,0\(%r2,%r9\)
987a74
 # GD -> LE with global variable defined in executable
987a74
  +[0-9a-f]+:	e3 20 d0 10 00 04 	lg	%r2,16\(%r13\)
987a74
- +[0-9a-f]+:	c0 04 00 00 00 00 	brcl	0,[0-9a-f]+ <fn2\+0xca>
987a74
+ +[0-9a-f]+:	c0 04 00 00 00 00 	jgnop	[0-9a-f]+ <fn2\+0xca>
987a74
  +[0-9a-f]+:	41 22 90 00       	la	%r2,0\(%r2,%r9\)
987a74
 # GD -> LE with local variable defined in executable
987a74
  +[0-9a-f]+:	e3 20 d0 18 00 04 	lg	%r2,24\(%r13\)
987a74
- +[0-9a-f]+:	c0 04 00 00 00 00 	brcl	0,[0-9a-f]+ <fn2\+0xda>
987a74
+ +[0-9a-f]+:	c0 04 00 00 00 00 	jgnop	[0-9a-f]+ <fn2\+0xda>
987a74
  +[0-9a-f]+:	41 22 90 00       	la	%r2,0\(%r2,%r9\)
987a74
 # GD -> LE with hidden variable defined in executable
987a74
  +[0-9a-f]+:	e3 20 d0 20 00 04 	lg	%r2,32\(%r13\)
987a74
- +[0-9a-f]+:	c0 04 00 00 00 00 	brcl	0,[0-9a-f]+ <fn2\+0xea>
987a74
+ +[0-9a-f]+:	c0 04 00 00 00 00 	jgnop	[0-9a-f]+ <fn2\+0xea>
987a74
  +[0-9a-f]+:	41 22 90 00       	la	%r2,0\(%r2,%r9\)
987a74
 # LD -> LE
987a74
  +[0-9a-f]+:	e3 20 d0 28 00 04 	lg	%r2,40\(%r13\)
987a74
- +[0-9a-f]+:	c0 04 00 00 00 00 	brcl	0,[0-9a-f]+ <fn2\+0xfa>
987a74
+ +[0-9a-f]+:	c0 04 00 00 00 00 	jgnop	[0-9a-f]+ <fn2\+0xfa>
987a74
  +[0-9a-f]+:	41 32 90 00       	la	%r3,0\(%r2,%r9\)
987a74
  +[0-9a-f]+:	e3 40 d0 30 00 04 	lg	%r4,48\(%r13\)
987a74
  +[0-9a-f]+:	41 54 30 00       	la	%r5,0\(%r4,%r3\)
987a74
  +[0-9a-f]+:	e3 40 d0 38 00 04 	lg	%r4,56\(%r13\)
987a74
  +[0-9a-f]+:	41 54 30 00       	la	%r5,0\(%r4,%r3\)
987a74
  +[0-9a-f]+:	e3 20 d0 40 00 04 	lg	%r2,64\(%r13\)
987a74
- +[0-9a-f]+:	c0 04 00 00 00 00 	brcl	0,[0-9a-f]+ <fn2\+0x11e>
987a74
+ +[0-9a-f]+:	c0 04 00 00 00 00 	jgnop	[0-9a-f]+ <fn2\+0x11e>
987a74
  +[0-9a-f]+:	41 32 90 00       	la	%r3,0\(%r2,%r9\)
987a74
  +[0-9a-f]+:	e3 40 d0 48 00 04 	lg	%r4,72\(%r13\)
987a74
  +[0-9a-f]+:	41 54 30 00       	la	%r5,0\(%r4,%r3\)
987a74
diff -rup binutils.orig/opcodes/s390-mkopc.c binutils-2.30/opcodes/s390-mkopc.c
987a74
--- binutils.orig/opcodes/s390-mkopc.c	2021-09-29 15:59:10.934208173 +0100
987a74
+++ binutils-2.30/opcodes/s390-mkopc.c	2021-09-29 16:01:42.245149388 +0100
987a74
@@ -379,6 +379,8 @@ main (void)
987a74
 	min_cpu = S390_OPCODE_ARCH12;
987a74
       else if (strcmp (cpu_string, "arch13") == 0)
987a74
 	min_cpu = S390_OPCODE_ARCH13;
987a74
+      else if (strcmp (cpu_string, "arch14") == 0)
987a74
+	min_cpu = S390_OPCODE_ARCH14;
987a74
       else {
987a74
 	fprintf (stderr, "Couldn't parse cpu string %s\n", cpu_string);
987a74
 	exit (1);
987a74
diff -rup binutils.orig/opcodes/s390-opc.c binutils-2.30/opcodes/s390-opc.c
987a74
--- binutils.orig/opcodes/s390-opc.c	2021-09-29 15:59:10.928208215 +0100
987a74
+++ binutils-2.30/opcodes/s390-opc.c	2021-09-29 16:04:54.977800770 +0100
987a74
@@ -218,32 +218,34 @@ const struct s390_operand s390_operands[
987a74
   { 8, 8, 0 },
987a74
 #define U8_16       68            /* 8 bit unsigned value starting at 16 */
987a74
   { 8, 16, 0 },
987a74
-#define U8_24       69            /* 8 bit unsigned value starting at 24 */
987a74
+#define U6_26       69            /* 6 bit unsigned value starting at 26 */
987a74
+  { 6, 26, 0 },
987a74
+#define U8_24       70            /* 8 bit unsigned value starting at 24 */
987a74
   { 8, 24, 0 },
987a74
-#define U8_28       70            /* 8 bit unsigned value starting at 28 */
987a74
+#define U8_28       71            /* 8 bit unsigned value starting at 28 */
987a74
   { 8, 28, 0 },
987a74
-#define U8_32       71            /* 8 bit unsigned value starting at 32 */
987a74
+#define U8_32       72            /* 8 bit unsigned value starting at 32 */
987a74
   { 8, 32, 0 },
987a74
-#define U12_16      72            /* 12 bit unsigned value starting at 16 */
987a74
+#define U12_16      73            /* 12 bit unsigned value starting at 16 */
987a74
   { 12, 16, 0 },
987a74
-#define U16_16      73            /* 16 bit unsigned value starting at 16 */
987a74
+#define U16_16      74            /* 16 bit unsigned value starting at 16 */
987a74
   { 16, 16, 0 },
987a74
-#define U16_32      74		  /* 16 bit unsigned value starting at 32 */
987a74
+#define U16_32      75		  /* 16 bit unsigned value starting at 32 */
987a74
   { 16, 32, 0 },
987a74
-#define U32_16      75		  /* 32 bit unsigned value starting at 16 */
987a74
+#define U32_16      76		  /* 32 bit unsigned value starting at 16 */
987a74
   { 32, 16, 0 },
987a74
 
987a74
 /* PC-relative address operands.  */
987a74
 
987a74
-#define J12_12      76            /* 12 bit PC relative offset at 12 */
987a74
+#define J12_12      77            /* 12 bit PC relative offset at 12 */
987a74
   { 12, 12, S390_OPERAND_PCREL },
987a74
-#define J16_16      77            /* 16 bit PC relative offset at 16 */
987a74
+#define J16_16      78            /* 16 bit PC relative offset at 16 */
987a74
   { 16, 16, S390_OPERAND_PCREL },
987a74
-#define J16_32      78            /* 16 bit PC relative offset at 32 */
987a74
+#define J16_32      79            /* 16 bit PC relative offset at 32 */
987a74
   { 16, 32, S390_OPERAND_PCREL },
987a74
-#define J24_24      79            /* 24 bit PC relative offset at 24 */
987a74
+#define J24_24      80            /* 24 bit PC relative offset at 24 */
987a74
   { 24, 24, S390_OPERAND_PCREL },
987a74
-#define J32_16      80            /* 32 bit PC relative offset at 16 */
987a74
+#define J32_16      81            /* 32 bit PC relative offset at 16 */
987a74
   { 32, 16, S390_OPERAND_PCREL },
987a74
 
987a74
 };
987a74
@@ -313,6 +315,7 @@ const struct s390_operand s390_operands[
987a74
 #define INSTR_RIE_R0U0     6, { R_8,U16_16,0,0,0,0 }             /* e.g. clfitne */
987a74
 #define INSTR_RIE_RUI0     6, { R_8,I16_16,U4_12,0,0,0 }         /* e.g. lochi */
987a74
 #define INSTR_RIE_RRUUU    6, { R_8,R_12,U8_16,U8_24,U8_32,0 }   /* e.g. rnsbg */
987a74
+#define INSTR_RIE_RRUUU2   6, { R_8,R_12,U8_16,U6_26,U8_32,0 }   /* e.g. rnsbg */
987a74
 #define INSTR_RIL_0P       6, { J32_16,0,0,0,0 }                 /* e.g. jg    */
987a74
 #define INSTR_RIL_RP       6, { R_8,J32_16,0,0,0,0 }             /* e.g. brasl */
987a74
 #define INSTR_RIL_UP       6, { U4_8,J32_16,0,0,0,0 }            /* e.g. brcl  */
987a74
@@ -439,6 +442,7 @@ const struct s390_operand s390_operands[
987a74
 #define INSTR_RX_URRD      4, { U4_8,D_20,X_12,B_16,0,0 }        /* e.g. bc    */
987a74
 #define INSTR_SI_RD        4, { D_20,B_16,0,0,0,0 }              /* e.g. lpsw  */
987a74
 #define INSTR_SI_URD       4, { D_20,B_16,U8_8,0,0,0 }           /* e.g. cli   */
987a74
+#define INSTR_SIY_RD       6, { D20_20,B_16,0,0,0,0 }            /* e.g. lpswey*/
987a74
 #define INSTR_SIY_URD      6, { D20_20,B_16,U8_8,0,0,0 }         /* e.g. tmy   */
987a74
 #define INSTR_SIY_IRD      6, { D20_20,B_16,I8_8,0,0,0 }         /* e.g. asi   */
987a74
 #define INSTR_SIL_RDI      6, { D_20,B_16,I16_32,0,0,0 }         /* e.g. chhsi */
987a74
@@ -534,6 +538,7 @@ const struct s390_operand s390_operands[
987a74
 #define MASK_RIE_R0U0     { 0xff, 0x0f, 0x00, 0x00, 0xff, 0xff }
987a74
 #define MASK_RIE_RUI0     { 0xff, 0x00, 0x00, 0x00, 0xff, 0xff }
987a74
 #define MASK_RIE_RRUUU    { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff }
987a74
+#define MASK_RIE_RRUUU2   { 0xff, 0x00, 0x00, 0xc0, 0x00, 0xff }
987a74
 #define MASK_RIL_0P       { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }
987a74
 #define MASK_RIL_RP       { 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00 }
987a74
 #define MASK_RIL_UP       { 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00 }
987a74
@@ -660,6 +665,7 @@ const struct s390_operand s390_operands[
987a74
 #define MASK_RX_URRD      { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
987a74
 #define MASK_SI_RD        { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
987a74
 #define MASK_SI_URD       { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }
987a74
+#define MASK_SIY_RD       { 0xff, 0xff, 0x00, 0x00, 0x00, 0xff }
987a74
 #define MASK_SIY_URD      { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff }
987a74
 #define MASK_SIY_IRD      { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff }
987a74
 #define MASK_SIL_RDI      { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }
987a74
diff -rup binutils.orig/opcodes/s390-opc.txt binutils-2.30/opcodes/s390-opc.txt
987a74
--- binutils.orig/opcodes/s390-opc.txt	2021-09-29 15:59:10.933208180 +0100
987a74
+++ binutils-2.30/opcodes/s390-opc.txt	2021-09-29 16:05:08.818703921 +0100
987a74
@@ -246,10 +246,14 @@ d7 xc SS_L0RDRD "exclusive OR" g5 esa,za
987a74
 f8 zap SS_LLRDRD "zero and add" g5 esa,zarch
987a74
 a70a ahi RI_RI "add halfword immediate" g5 esa,zarch
987a74
 84 brxh RSI_RRP "branch relative on index high" g5 esa,zarch
987a74
+84 jxh RSI_RRP "branch relative on index high" g5 esa,zarch
987a74
 85 brxle RSI_RRP "branch relative on index low or equal" g5 esa,zarch
987a74
+85 jxle RSI_RRP "branch relative on index low or equal" g5 esa,zarch
987a74
 a705 bras RI_RP "branch relative and save" g5 esa,zarch
987a74
+a705 jas RI_RP "branch relative and save" g5 esa,zarch
987a74
 a704 brc RI_UP "branch relative on condition" g5 esa,zarch
987a74
 a706 brct RI_RP "branch relative on count" g5 esa,zarch
987a74
+a706 jct RI_RP "branch relative on count" g5 esa,zarch
987a74
 b241 cksm RRE_RR "checksum" g5 esa,zarch
987a74
 a70e chi RI_RI "compare halfword immediate" g5 esa,zarch
987a74
 a9 clcle RS_RRRD "compare logical long extended" g5 esa,zarch
987a74
@@ -268,8 +272,11 @@ a701 tml RI_RU "test under mask low" g5
987a74
 4700 nop RX_0RRD "no operation" g5 esa,zarch optparm
987a74
 4700 b*8 RX_0RRD "conditional branch" g5 esa,zarch
987a74
 47f0 b RX_0RRD "unconditional branch" g5 esa,zarch
987a74
+a704 jnop RI_0P "nop jump" g5 esa,zarch
987a74
 a704 j*8 RI_0P "conditional jump" g5 esa,zarch
987a74
+a704 br*8 RI_0P "conditional jump" g5 esa,zarch
987a74
 a7f4 j RI_0P "unconditional jump" g5 esa,zarch
987a74
+a7f4 bru RI_0P "unconditional jump" g5 esa,zarch
987a74
 b34a axbr RRE_FEFE "add extended bfp" g5 esa,zarch
987a74
 b31a adbr RRE_FF "add long bfp" g5 esa,zarch
987a74
 ed000000001a adb RXE_FRRD "add long bfp" g5 esa,zarch
987a74
@@ -437,7 +444,9 @@ e3000000001b slgf RXE_RRRD "subtract log
987a74
 e3000000000c msg RXE_RRRD "multiply single 64" z900 zarch
987a74
 e3000000001c msgf RXE_RRRD "multiply single 64<32" z900 zarch
987a74
 ec0000000044 brxhg RIE_RRP "branch relative on index high 64" z900 zarch
987a74
+ec0000000044 jxhg RIE_RRP "branch relative on index high 64" z900 zarch
987a74
 ec0000000045 brxlg RIE_RRP "branch relative on index low or equal 64" z900 zarch
987a74
+ec0000000045 jxleg RIE_RRP "branch relative on index low or equal 64" z900 zarch
987a74
 eb0000000044 bxhg RSE_RRRD "branch on index high 64" z900 zarch
987a74
 eb0000000045 bxleg RSE_RRRD "branch on index low or equal 64" z900 zarch
987a74
 eb000000000c srlg RSE_RRRD "shift right single logical 64" z900 zarch
987a74
@@ -462,10 +471,15 @@ eb0000000080 icmh RSE_RURD "insert chara
987a74
 a702 tmhh RI_RU "test under mask high high" z900 zarch
987a74
 a703 tmhl RI_RU "test under mask high low" z900 zarch
987a74
 c004 brcl RIL_UP "branch relative on condition long" z900 esa,zarch
987a74
+c004 jgnop RIL_0P "nop jump long" z900 esa,zarch
987a74
 c004 jg*8 RIL_0P "conditional jump long" z900 esa,zarch
987a74
+c004 br*8l RIL_0P "conditional jump long" z900 esa,zarch
987a74
 c0f4 jg RIL_0P "unconditional jump long" z900 esa,zarch
987a74
+c0f4 brul RIL_0P "unconditional jump long" z900 esa,zarch
987a74
 c005 brasl RIL_RP "branch relative and save long" z900 esa,zarch
987a74
+c005 jasl RIL_RP "branch relative and save long" z900 esa,zarch
987a74
 a707 brctg RI_RP "branch relative on count 64" z900 zarch
987a74
+a707 jctg RI_RP "branch relative on count 64" z900 zarch
987a74
 a709 lghi RI_RI "load halfword immediate 64" z900 zarch
987a74
 a70b aghi RI_RI "add halfword immediate 64" z900 zarch
987a74
 a70d mghi RI_RI "multiply halfword immediate 64" z900 zarch
987a74
@@ -956,6 +970,7 @@ ec0000000054 rnsbg RIE_RRUUU "rotate the
987a74
 ec0000000057 rxsbg RIE_RRUUU "rotate then exclusive or selected bits" z10 zarch
987a74
 ec0000000056 rosbg RIE_RRUUU "rotate then or selected bits" z10 zarch
987a74
 ec0000000055 risbg RIE_RRUUU "rotate then insert selected bits" z10 zarch
987a74
+ec0000800055 risbgz RIE_RRUUU2 "rotate then insert selected bits and zero remaining bits" z10 zarch
987a74
 c40f strl RIL_RP "store relative long (32)" z10 zarch
987a74
 c40b stgrl RIL_RP "store relative long (64)" z10 zarch
987a74
 c407 sthrl RIL_RP "store halfword relative long" z10 zarch
987a74
@@ -1139,6 +1154,7 @@ eb0000000023 clt$12 RSY_R0RD "compare lo
987a74
 eb000000002b clgt RSY_RURD "compare logical and trap 64 bit reg-mem" zEC12 zarch
987a74
 eb000000002b clgt$12 RSY_R0RD "compare logical and trap 64 bit reg-mem" zEC12 zarch
987a74
 ec0000000059 risbgn RIE_RRUUU "rotate then insert selected bits nocc" zEC12 zarch
987a74
+ec0000800059 risbgnz RIE_RRUUU2 "rotate then insert selected bits and zero remaining bits nocc" zEC12 zarch
987a74
 ed00000000aa cdzt RSL_LRDFU "convert from zoned long" zEC12 zarch
987a74
 ed00000000ab cxzt RSL_LRDFEU "convert from zoned extended" zEC12 zarch
987a74
 ed00000000a8 czdt RSL_LRDFU "convert to zoned long" zEC12 zarch
987a74
@@ -2001,3 +2017,33 @@ e60000000052 vcvbg VRR_RV0UU "vector con
987a74
 # Message Security Assist Extension 9
987a74
 
987a74
 b93a kdsa RRE_RR "compute digital signature authentication" arch13 zarch
987a74
+
987a74
+
987a74
+# arch14 instructions
987a74
+
987a74
+e60000000074 vschp VRR_VVV0U0U " " arch14 zarch
987a74
+e60000002074 vschsp VRR_VVV0U0 " " arch14 zarch
987a74
+e60000003074 vschdp VRR_VVV0U0 " " arch14 zarch
987a74
+e60000004074 vschxp VRR_VVV0U0 " " arch14 zarch
987a74
+e6000000007c vscshp VRR_VVV " " arch14 zarch
987a74
+e6000000007d vcsph VRR_VVV0U0 " " arch14 zarch
987a74
+e60000000051 vclzdp VRR_VV0U2 " " arch14 zarch
987a74
+e60000000070 vpkzr VRI_VVV0UU2 " " arch14 zarch
987a74
+e60000000072 vsrpr VRI_VVV0UU2 " " arch14 zarch
987a74
+e60000000054 vupkzh VRR_VV0U2 " " arch14 zarch
987a74
+e6000000005c vupkzl VRR_VV0U2 " " arch14 zarch
987a74
+
987a74
+b93b nnpa RRE_00 " " arch14 zarch
987a74
+e60000000056 vclfnh VRR_VV0UU2 " " arch14 zarch
987a74
+e6000000005e vclfnl VRR_VV0UU2 " " arch14 zarch
987a74
+e60000000075 vcrnf VRR_VVV0UU " " arch14 zarch
987a74
+e6000000005d vcfn VRR_VV0UU2 " " arch14 zarch
987a74
+e60000000055 vcnf VRR_VV0UU2 " " arch14 zarch
987a74
+
987a74
+b98B rdp RRF_RURR2 " " arch14 zarch optparm
987a74
+
987a74
+eb0000000071 lpswey SIY_RD " " arch14 zarch
987a74
+b200 lbear S_RD " " arch14 zarch
987a74
+b201 stbear S_RD " " arch14 zarch
987a74
+
987a74
+b28f qpaci S_RD " " arch14 zarch
987a74
--- /dev/null	2021-09-29 08:55:29.386811947 +0100
987a74
+++ binutils-2.30/gas/testsuite/gas/s390/zarch-arch14.s	2021-09-29 16:05:08.817703928 +0100
987a74
@@ -0,0 +1,25 @@
987a74
+.text
987a74
+foo:
987a74
+	vschp	%v15,%v17,%v20,13,12
987a74
+	vschsp	%v15,%v17,%v20,13
987a74
+	vschdp	%v15,%v17,%v20,13
987a74
+	vschxp	%v15,%v17,%v20,13
987a74
+	vscshp	%v15,%v17,%v20
987a74
+	vcsph	%v15,%v17,%v20,13
987a74
+	vclzdp	%v15,%v17,13
987a74
+	vpkzr	%v15,%v17,%v20,253,12
987a74
+	vsrpr	%v15,%v17,%v20,253,12
987a74
+	vupkzh	%v15,%v17,13
987a74
+	vupkzl	%v15,%v17,13
987a74
+	nnpa
987a74
+	vclfnh	%v15,%v17,13,12
987a74
+	vclfnl	%v15,%v17,13,12
987a74
+	vcrnf	%v15,%v17,%v20,13,12
987a74
+	vcfn	%v15,%v17,13,12
987a74
+	vcnf	%v15,%v17,13,12
987a74
+	rdp	%r6,%r9,%r11
987a74
+	rdp	%r6,%r9,%r11,13
987a74
+	lpswey	-10000(%r6)
987a74
+	lbear	4000(%r6)
987a74
+	stbear	4000(%r6)
987a74
+	qpaci	4095(%r5)
987a74
--- /dev/null	2021-09-29 08:55:29.386811947 +0100
987a74
+++ binutils-2.30/gas/testsuite/gas/s390/zarch-arch14.d	2021-09-29 16:05:08.817703928 +0100
987a74
@@ -0,0 +1,32 @@
987a74
+#name: s390x opcode
987a74
+#objdump: -dr
987a74
+
987a74
+.*: +file format .*
987a74
+
987a74
+Disassembly of section .text:
987a74
+
987a74
+.* <foo>:
987a74
+.*:	e6 f1 40 c0 d6 74 [	 ]*vschp	%v15,%v17,%v20,13,12
987a74
+.*:	e6 f1 40 d0 26 74 [	 ]*vschsp	%v15,%v17,%v20,13
987a74
+.*:	e6 f1 40 d0 36 74 [	 ]*vschdp	%v15,%v17,%v20,13
987a74
+.*:	e6 f1 40 d0 46 74 [	 ]*vschxp	%v15,%v17,%v20,13
987a74
+.*:	e6 f1 40 00 06 7c [	 ]*vscshp	%v15,%v17,%v20
987a74
+.*:	e6 f1 40 d0 06 7d [	 ]*vcsph	%v15,%v17,%v20,13
987a74
+.*:	e6 f1 00 d0 04 51 [	 ]*vclzdp	%v15,%v17,13
987a74
+.*:	e6 f1 40 cf d6 70 [	 ]*vpkzr	%v15,%v17,%v20,253,12
987a74
+.*:	e6 f1 40 cf d6 72 [	 ]*vsrpr	%v15,%v17,%v20,253,12
987a74
+.*:	e6 f1 00 d0 04 54 [	 ]*vupkzh	%v15,%v17,13
987a74
+.*:	e6 f1 00 d0 04 5c [	 ]*vupkzl	%v15,%v17,13
987a74
+.*:	b9 3b 00 00 [	 ]*nnpa
987a74
+.*:	e6 f1 00 0c d4 56 [	 ]*vclfnh	%v15,%v17,13,12
987a74
+.*:	e6 f1 00 0c d4 5e [	 ]*vclfnl	%v15,%v17,13,12
987a74
+.*:	e6 f1 40 0c d6 75 [	 ]*vcrnf	%v15,%v17,%v20,13,12
987a74
+.*:	e6 f1 00 0c d4 5d [	 ]*vcfn	%v15,%v17,13,12
987a74
+.*:	e6 f1 00 0c d4 55 [	 ]*vcnf	%v15,%v17,13,12
987a74
+.*:	b9 8b 90 6b [	 ]*rdp	%r6,%r9,%r11
987a74
+.*:	b9 8b 9d 6b [	 ]*rdp	%r6,%r9,%r11,13
987a74
+.*:	eb 00 68 f0 fd 71 [	 ]*lpswey	-10000\(%r6\)
987a74
+.*:	b2 00 6f a0 [	 ]*lbear	4000\(%r6\)
987a74
+.*:	b2 01 6f a0 [	 ]*stbear	4000\(%r6\)
987a74
+.*:	b2 8f 5f ff [	 ]*qpaci	4095\(%r5\)
987a74
+.*:	07 07 [	 ]*nopr	%r7