You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
4.6 KiB
99 lines
4.6 KiB
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001 |
|
From: Andreas Krebbel <krebbel@linux.ibm.com> |
|
Date: Thu, 3 Dec 2020 16:31:15 +0100 |
|
Subject: gdb-rhbz2012819-ibmz-update-1of5.patch |
|
|
|
;; IBM Z: Add support for HLASM extended mnemonics |
|
;; (Andreas Krebbel, RHBZ 2012819) |
|
|
|
Add extended mnemonics used in the HLASM assembler. All of them are |
|
just aliases for instructions we already support and help when |
|
assembling code which was written for the HLASM assembler. |
|
|
|
The HLASM mnemonics are documented here: |
|
https://www.ibm.com/support/knowledgecenter/SSENW6_1.6.0/com.ibm.hlasm.v1r6.asm/asmr1023.pdf |
|
|
|
See the 'Branching with extended mnemonic codes' chapter. |
|
|
|
objdump will still print the existing mnemonics with the exception of |
|
relative nop branches (i.e. conditional branches with an empty |
|
condition code mask). Now we have jnop and jgnop which will be used |
|
by objdump when possible. |
|
|
|
The same change have been applied to the LLVM assembler: |
|
https://reviews.llvm.org/D92185 |
|
|
|
opcodes/ |
|
|
|
* s390-opc.txt: Add extended mnemonics. |
|
|
|
gas/ |
|
|
|
* testsuite/gas/s390/esa-g5.s: Test new extended mnemonics. |
|
* testsuite/gas/s390/esa-g5.d: Likewise. |
|
* testsuite/gas/s390/esa-z900.s: Likewise. |
|
* testsuite/gas/s390/esa-z900.d: Likewise. |
|
* testsuite/gas/s390/zarch-z900.s: Likewise. |
|
* testsuite/gas/s390/zarch-z900.d: Likewise. |
|
|
|
ld/ |
|
|
|
* testsuite/ld-s390/tlsbin_64.dd: The newly added jgnop mnemonic |
|
replaces long relative branches with empty condition code mask. |
|
|
|
diff --git a/opcodes/s390-opc.txt b/opcodes/s390-opc.txt |
|
--- a/opcodes/s390-opc.txt |
|
+++ b/opcodes/s390-opc.txt |
|
@@ -246,10 +246,14 @@ d7 xc SS_L0RDRD "exclusive OR" g5 esa,zarch |
|
f8 zap SS_LLRDRD "zero and add" g5 esa,zarch |
|
a70a ahi RI_RI "add halfword immediate" g5 esa,zarch |
|
84 brxh RSI_RRP "branch relative on index high" g5 esa,zarch |
|
+84 jxh RSI_RRP "branch relative on index high" g5 esa,zarch |
|
85 brxle RSI_RRP "branch relative on index low or equal" g5 esa,zarch |
|
+85 jxle RSI_RRP "branch relative on index low or equal" g5 esa,zarch |
|
a705 bras RI_RP "branch relative and save" g5 esa,zarch |
|
+a705 jas RI_RP "branch relative and save" g5 esa,zarch |
|
a704 brc RI_UP "branch relative on condition" g5 esa,zarch |
|
a706 brct RI_RP "branch relative on count" g5 esa,zarch |
|
+a706 jct RI_RP "branch relative on count" g5 esa,zarch |
|
b241 cksm RRE_RR "checksum" g5 esa,zarch |
|
a70e chi RI_RI "compare halfword immediate" g5 esa,zarch |
|
a9 clcle RS_RRRD "compare logical long extended" g5 esa,zarch |
|
@@ -268,8 +272,11 @@ a701 tml RI_RU "test under mask low" g5 esa,zarch |
|
4700 nop RX_0RRD "no operation" g5 esa,zarch optparm |
|
4700 b*8 RX_0RRD "conditional branch" g5 esa,zarch |
|
47f0 b RX_0RRD "unconditional branch" g5 esa,zarch |
|
+a704 jnop RI_0P "nop jump" g5 esa,zarch |
|
a704 j*8 RI_0P "conditional jump" g5 esa,zarch |
|
+a704 br*8 RI_0P "conditional jump" g5 esa,zarch |
|
a7f4 j RI_0P "unconditional jump" g5 esa,zarch |
|
+a7f4 bru RI_0P "unconditional jump" g5 esa,zarch |
|
b34a axbr RRE_FEFE "add extended bfp" g5 esa,zarch |
|
b31a adbr RRE_FF "add long bfp" g5 esa,zarch |
|
ed000000001a adb RXE_FRRD "add long bfp" g5 esa,zarch |
|
@@ -437,7 +444,9 @@ e3000000001b slgf RXE_RRRD "subtract logical 64<32" z900 zarch |
|
e3000000000c msg RXE_RRRD "multiply single 64" z900 zarch |
|
e3000000001c msgf RXE_RRRD "multiply single 64<32" z900 zarch |
|
ec0000000044 brxhg RIE_RRP "branch relative on index high 64" z900 zarch |
|
+ec0000000044 jxhg RIE_RRP "branch relative on index high 64" z900 zarch |
|
ec0000000045 brxlg RIE_RRP "branch relative on index low or equal 64" z900 zarch |
|
+ec0000000045 jxleg RIE_RRP "branch relative on index low or equal 64" z900 zarch |
|
eb0000000044 bxhg RSE_RRRD "branch on index high 64" z900 zarch |
|
eb0000000045 bxleg RSE_RRRD "branch on index low or equal 64" z900 zarch |
|
eb000000000c srlg RSE_RRRD "shift right single logical 64" z900 zarch |
|
@@ -462,10 +471,15 @@ eb0000000080 icmh RSE_RURD "insert characters under mask high" z900 zarch |
|
a702 tmhh RI_RU "test under mask high high" z900 zarch |
|
a703 tmhl RI_RU "test under mask high low" z900 zarch |
|
c004 brcl RIL_UP "branch relative on condition long" z900 esa,zarch |
|
+c004 jgnop RIL_0P "nop jump long" z900 esa,zarch |
|
c004 jg*8 RIL_0P "conditional jump long" z900 esa,zarch |
|
+c004 br*8l RIL_0P "conditional jump long" z900 esa,zarch |
|
c0f4 jg RIL_0P "unconditional jump long" z900 esa,zarch |
|
+c0f4 brul RIL_0P "unconditional jump long" z900 esa,zarch |
|
c005 brasl RIL_RP "branch relative and save long" z900 esa,zarch |
|
+c005 jasl RIL_RP "branch relative and save long" z900 esa,zarch |
|
a707 brctg RI_RP "branch relative on count 64" z900 zarch |
|
+a707 jctg RI_RP "branch relative on count 64" z900 zarch |
|
a709 lghi RI_RI "load halfword immediate 64" z900 zarch |
|
a70b aghi RI_RI "add halfword immediate 64" z900 zarch |
|
a70d mghi RI_RI "multiply halfword immediate 64" z900 zarch
|
|
|