summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorRichard Sandiford <rsandifo@linux.vnet.ibm.com>2013-05-14 09:47:26 +0000
committerRichard Sandiford <rsandifo@linux.vnet.ibm.com>2013-05-14 09:47:26 +0000
commitb594c4c873bd3e2ee560cc83bd50282ec56b01e9 (patch)
treebdd4dcfa31b5febdfcd797614742bc7b99a3fe02 /test
parent58b854d7e9e5fb09a60a4e3a66e8049a7e4a01f6 (diff)
downloadexternal_llvm-b594c4c873bd3e2ee560cc83bd50282ec56b01e9.zip
external_llvm-b594c4c873bd3e2ee560cc83bd50282ec56b01e9.tar.gz
external_llvm-b594c4c873bd3e2ee560cc83bd50282ec56b01e9.tar.bz2
[SystemZ] Rework handling of constant PC-relative operands
The GNU assembler treats things like: brasl %r14, 100 in the same way as: brasl %r14, .+100 rather than as a branch to absolute address 100. We implemented this in LLVM by creating an immediate operand rather than the usual expr operand, and by handling immediate operands specially in the code emitter. This was undesirable for (at least) three reasons: - the specialness of immediate operands was exposed to the backend MC code, rather than being limited to the assembler parser. - in disassembly, an immediate operand really is an absolute address. (Note that this means reassembling printed disassembly can't recreate the original code.) - it would interfere with any assembly manipulation that we might try in future. E.g. operations like branch shortening can change the relative position of instructions, but any code that updates sym+offset addresses wouldn't update an immediate "100" operand in the same way as an explicit ".+100" operand. This patch changes the implementation so that the assembler creates a "." label for immediate PC-relative operands, so that the operand to the MCInst is always the absolute address. The patch also adds some error checking of the offset. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181773 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r--test/MC/SystemZ/insn-bras-01.s13
-rw-r--r--test/MC/SystemZ/insn-brasl-01.s13
-rw-r--r--test/MC/SystemZ/insn-brc-01.s13
-rw-r--r--test/MC/SystemZ/insn-brc-02.s14
-rw-r--r--test/MC/SystemZ/insn-brcl-01.s13
-rw-r--r--test/MC/SystemZ/insn-brcl-02.s14
-rw-r--r--test/MC/SystemZ/insn-cgfrl-01.s17
-rw-r--r--test/MC/SystemZ/insn-cghrl-01.s17
-rw-r--r--test/MC/SystemZ/insn-cgrl-01.s17
-rw-r--r--test/MC/SystemZ/insn-chrl-01.s17
-rw-r--r--test/MC/SystemZ/insn-clgfrl-01.s17
-rw-r--r--test/MC/SystemZ/insn-clghrl-01.s17
-rw-r--r--test/MC/SystemZ/insn-clgrl-01.s17
-rw-r--r--test/MC/SystemZ/insn-clhrl-01.s17
-rw-r--r--test/MC/SystemZ/insn-clrl-01.s17
-rw-r--r--test/MC/SystemZ/insn-crl-01.s17
-rw-r--r--test/MC/SystemZ/insn-larl-01.s17
-rw-r--r--test/MC/SystemZ/insn-lgfrl-01.s17
-rw-r--r--test/MC/SystemZ/insn-lghrl-01.s17
-rw-r--r--test/MC/SystemZ/insn-lgrl-01.s17
-rw-r--r--test/MC/SystemZ/insn-lhrl-01.s17
-rw-r--r--test/MC/SystemZ/insn-llgfrl-01.s17
-rw-r--r--test/MC/SystemZ/insn-llghrl-01.s17
-rw-r--r--test/MC/SystemZ/insn-llhrl-01.s17
-rw-r--r--test/MC/SystemZ/insn-lrl-01.s17
-rw-r--r--test/MC/SystemZ/insn-stgrl-01.s17
-rw-r--r--test/MC/SystemZ/insn-sthrl-01.s17
-rw-r--r--test/MC/SystemZ/insn-strl-01.s17
28 files changed, 344 insertions, 110 deletions
diff --git a/test/MC/SystemZ/insn-bras-01.s b/test/MC/SystemZ/insn-bras-01.s
index 89f7f77..d023da6 100644
--- a/test/MC/SystemZ/insn-bras-01.s
+++ b/test/MC/SystemZ/insn-bras-01.s
@@ -1,5 +1,18 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
+#CHECK: bras %r0, .[[LAB:L.*]]-65536 # encoding: [0xa7,0x05,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-65536)+2, kind: FK_390_PC16DBL
+ bras %r0, -0x10000
+#CHECK: bras %r0, .[[LAB:L.*]]-2 # encoding: [0xa7,0x05,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC16DBL
+ bras %r0, -2
+#CHECK: bras %r0, .[[LAB:L.*]] # encoding: [0xa7,0x05,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC16DBL
+ bras %r0, 0
+#CHECK: bras %r0, .[[LAB:L.*]]+65534 # encoding: [0xa7,0x05,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+65534)+2, kind: FK_390_PC16DBL
+ bras %r0, 0xfffe
+
#CHECK: bras %r0, foo # encoding: [0xa7,0x05,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
#CHECK: bras %r14, foo # encoding: [0xa7,0xe5,A,A]
diff --git a/test/MC/SystemZ/insn-brasl-01.s b/test/MC/SystemZ/insn-brasl-01.s
index 86d0ced..24a19ad 100644
--- a/test/MC/SystemZ/insn-brasl-01.s
+++ b/test/MC/SystemZ/insn-brasl-01.s
@@ -1,5 +1,18 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
+#CHECK: brasl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc0,0x05,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ brasl %r0, -0x100000000
+#CHECK: brasl %r0, .[[LAB:L.*]]-2 # encoding: [0xc0,0x05,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ brasl %r0, -2
+#CHECK: brasl %r0, .[[LAB:L.*]] # encoding: [0xc0,0x05,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ brasl %r0, 0
+#CHECK: brasl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc0,0x05,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ brasl %r0, 0xfffffffe
+
#CHECK: brasl %r0, foo # encoding: [0xc0,0x05,A,A,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
#CHECK: brasl %r14, foo # encoding: [0xc0,0xe5,A,A,A,A]
diff --git a/test/MC/SystemZ/insn-brc-01.s b/test/MC/SystemZ/insn-brc-01.s
index a92ea45..870f1c6 100644
--- a/test/MC/SystemZ/insn-brc-01.s
+++ b/test/MC/SystemZ/insn-brc-01.s
@@ -1,5 +1,18 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
+#CHECK: brc 0, .[[LAB:L.*]]-65536 # encoding: [0xa7,0x04,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-65536)+2, kind: FK_390_PC16DBL
+ brc 0, -0x10000
+#CHECK: brc 0, .[[LAB:L.*]]-2 # encoding: [0xa7,0x04,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC16DBL
+ brc 0, -2
+#CHECK: brc 0, .[[LAB:L.*]] # encoding: [0xa7,0x04,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC16DBL
+ brc 0, 0
+#CHECK: brc 0, .[[LAB:L.*]]+65534 # encoding: [0xa7,0x04,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+65534)+2, kind: FK_390_PC16DBL
+ brc 0, 0xfffe
+
#CHECK: brc 0, foo # encoding: [0xa7,0x04,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
brc 0, foo
diff --git a/test/MC/SystemZ/insn-brc-02.s b/test/MC/SystemZ/insn-brc-02.s
index 941cc459..e0af3b3 100644
--- a/test/MC/SystemZ/insn-brc-02.s
+++ b/test/MC/SystemZ/insn-brc-02.s
@@ -1,6 +1,20 @@
# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
# RUN: FileCheck < %t %s
+#CHECK: error: offset out of range
+#CHECK: brc 0, -0x100002
+#CHECK: error: offset out of range
+#CHECK: brc 0, -1
+#CHECK: error: offset out of range
+#CHECK: brc 0, 1
+#CHECK: error: offset out of range
+#CHECK: brc 0, 0x10000
+
+ brc 0, -0x100002
+ brc 0, -1
+ brc 0, 1
+ brc 0, 0x10000
+
#CHECK: error: invalid operand
#CHECK: brc foo, bar
#CHECK: error: invalid operand
diff --git a/test/MC/SystemZ/insn-brcl-01.s b/test/MC/SystemZ/insn-brcl-01.s
index f7138bf..f38341a 100644
--- a/test/MC/SystemZ/insn-brcl-01.s
+++ b/test/MC/SystemZ/insn-brcl-01.s
@@ -1,5 +1,18 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
+#CHECK: brcl 0, .[[LAB:L.*]]-4294967296 # encoding: [0xc0,0x04,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ brcl 0, -0x100000000
+#CHECK: brcl 0, .[[LAB:L.*]]-2 # encoding: [0xc0,0x04,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ brcl 0, -2
+#CHECK: brcl 0, .[[LAB:L.*]] # encoding: [0xc0,0x04,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ brcl 0, 0
+#CHECK: brcl 0, .[[LAB:L.*]]+4294967294 # encoding: [0xc0,0x04,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ brcl 0, 0xfffffffe
+
#CHECK: brcl 0, foo # encoding: [0xc0,0x04,A,A,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
brcl 0, foo
diff --git a/test/MC/SystemZ/insn-brcl-02.s b/test/MC/SystemZ/insn-brcl-02.s
index ded5f7e..81e2fdc 100644
--- a/test/MC/SystemZ/insn-brcl-02.s
+++ b/test/MC/SystemZ/insn-brcl-02.s
@@ -1,6 +1,20 @@
# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
# RUN: FileCheck < %t %s
+#CHECK: error: offset out of range
+#CHECK: brcl 0, -0x1000000002
+#CHECK: error: offset out of range
+#CHECK: brcl 0, -1
+#CHECK: error: offset out of range
+#CHECK: brcl 0, 1
+#CHECK: error: offset out of range
+#CHECK: brcl 0, 0x100000000
+
+ brcl 0, -0x1000000002
+ brcl 0, -1
+ brcl 0, 1
+ brcl 0, 0x100000000
+
#CHECK: error: invalid operand
#CHECK: brcl foo, bar
#CHECK: error: invalid operand
diff --git a/test/MC/SystemZ/insn-cgfrl-01.s b/test/MC/SystemZ/insn-cgfrl-01.s
index 2792fb4..6526bf5 100644
--- a/test/MC/SystemZ/insn-cgfrl-01.s
+++ b/test/MC/SystemZ/insn-cgfrl-01.s
@@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-#CHECK: cgfrl %r0, 2864434397 # encoding: [0xc6,0x0c,0x55,0x5d,0xe6,0x6e]
-#CHECK: cgfrl %r15, 2864434397 # encoding: [0xc6,0xfc,0x55,0x5d,0xe6,0x6e]
-
- cgfrl %r0,0xaabbccdd
- cgfrl %r15,0xaabbccdd
+#CHECK: cgfrl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x0c,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ cgfrl %r0, -0x100000000
+#CHECK: cgfrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc6,0x0c,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ cgfrl %r0, -2
+#CHECK: cgfrl %r0, .[[LAB:L.*]] # encoding: [0xc6,0x0c,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ cgfrl %r0, 0
+#CHECK: cgfrl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc6,0x0c,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ cgfrl %r0, 0xfffffffe
#CHECK: cgfrl %r0, foo # encoding: [0xc6,0x0c,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
diff --git a/test/MC/SystemZ/insn-cghrl-01.s b/test/MC/SystemZ/insn-cghrl-01.s
index c48c5ec..26b63bd 100644
--- a/test/MC/SystemZ/insn-cghrl-01.s
+++ b/test/MC/SystemZ/insn-cghrl-01.s
@@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-#CHECK: cghrl %r0, 2864434397 # encoding: [0xc6,0x04,0x55,0x5d,0xe6,0x6e]
-#CHECK: cghrl %r15, 2864434397 # encoding: [0xc6,0xf4,0x55,0x5d,0xe6,0x6e]
-
- cghrl %r0,0xaabbccdd
- cghrl %r15,0xaabbccdd
+#CHECK: cghrl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x04,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ cghrl %r0, -0x100000000
+#CHECK: cghrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc6,0x04,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ cghrl %r0, -2
+#CHECK: cghrl %r0, .[[LAB:L.*]] # encoding: [0xc6,0x04,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ cghrl %r0, 0
+#CHECK: cghrl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc6,0x04,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ cghrl %r0, 0xfffffffe
#CHECK: cghrl %r0, foo # encoding: [0xc6,0x04,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
diff --git a/test/MC/SystemZ/insn-cgrl-01.s b/test/MC/SystemZ/insn-cgrl-01.s
index af878cb..b6e61c8 100644
--- a/test/MC/SystemZ/insn-cgrl-01.s
+++ b/test/MC/SystemZ/insn-cgrl-01.s
@@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-#CHECK: cgrl %r0, 2864434397 # encoding: [0xc6,0x08,0x55,0x5d,0xe6,0x6e]
-#CHECK: cgrl %r15, 2864434397 # encoding: [0xc6,0xf8,0x55,0x5d,0xe6,0x6e]
-
- cgrl %r0,0xaabbccdd
- cgrl %r15,0xaabbccdd
+#CHECK: cgrl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x08,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ cgrl %r0, -0x100000000
+#CHECK: cgrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc6,0x08,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ cgrl %r0, -2
+#CHECK: cgrl %r0, .[[LAB:L.*]] # encoding: [0xc6,0x08,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ cgrl %r0, 0
+#CHECK: cgrl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc6,0x08,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ cgrl %r0, 0xfffffffe
#CHECK: cgrl %r0, foo # encoding: [0xc6,0x08,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
diff --git a/test/MC/SystemZ/insn-chrl-01.s b/test/MC/SystemZ/insn-chrl-01.s
index c133a32..2c89d90 100644
--- a/test/MC/SystemZ/insn-chrl-01.s
+++ b/test/MC/SystemZ/insn-chrl-01.s
@@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-#CHECK: chrl %r0, 2864434397 # encoding: [0xc6,0x05,0x55,0x5d,0xe6,0x6e]
-#CHECK: chrl %r15, 2864434397 # encoding: [0xc6,0xf5,0x55,0x5d,0xe6,0x6e]
-
- chrl %r0,0xaabbccdd
- chrl %r15,0xaabbccdd
+#CHECK: chrl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x05,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ chrl %r0, -0x100000000
+#CHECK: chrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc6,0x05,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ chrl %r0, -2
+#CHECK: chrl %r0, .[[LAB:L.*]] # encoding: [0xc6,0x05,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ chrl %r0, 0
+#CHECK: chrl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc6,0x05,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ chrl %r0, 0xfffffffe
#CHECK: chrl %r0, foo # encoding: [0xc6,0x05,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
diff --git a/test/MC/SystemZ/insn-clgfrl-01.s b/test/MC/SystemZ/insn-clgfrl-01.s
index 6fc6d5e..1959b19 100644
--- a/test/MC/SystemZ/insn-clgfrl-01.s
+++ b/test/MC/SystemZ/insn-clgfrl-01.s
@@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-#CHECK: clgfrl %r0, 2864434397 # encoding: [0xc6,0x0e,0x55,0x5d,0xe6,0x6e]
-#CHECK: clgfrl %r15, 2864434397 # encoding: [0xc6,0xfe,0x55,0x5d,0xe6,0x6e]
-
- clgfrl %r0,0xaabbccdd
- clgfrl %r15,0xaabbccdd
+#CHECK: clgfrl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x0e,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ clgfrl %r0, -0x100000000
+#CHECK: clgfrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc6,0x0e,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ clgfrl %r0, -2
+#CHECK: clgfrl %r0, .[[LAB:L.*]] # encoding: [0xc6,0x0e,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ clgfrl %r0, 0
+#CHECK: clgfrl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc6,0x0e,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ clgfrl %r0, 0xfffffffe
#CHECK: clgfrl %r0, foo # encoding: [0xc6,0x0e,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
diff --git a/test/MC/SystemZ/insn-clghrl-01.s b/test/MC/SystemZ/insn-clghrl-01.s
index 41c2580..049511a 100644
--- a/test/MC/SystemZ/insn-clghrl-01.s
+++ b/test/MC/SystemZ/insn-clghrl-01.s
@@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-#CHECK: clghrl %r0, 2864434397 # encoding: [0xc6,0x06,0x55,0x5d,0xe6,0x6e]
-#CHECK: clghrl %r15, 2864434397 # encoding: [0xc6,0xf6,0x55,0x5d,0xe6,0x6e]
-
- clghrl %r0,0xaabbccdd
- clghrl %r15,0xaabbccdd
+#CHECK: clghrl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x06,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ clghrl %r0, -0x100000000
+#CHECK: clghrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc6,0x06,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ clghrl %r0, -2
+#CHECK: clghrl %r0, .[[LAB:L.*]] # encoding: [0xc6,0x06,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ clghrl %r0, 0
+#CHECK: clghrl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc6,0x06,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ clghrl %r0, 0xfffffffe
#CHECK: clghrl %r0, foo # encoding: [0xc6,0x06,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
diff --git a/test/MC/SystemZ/insn-clgrl-01.s b/test/MC/SystemZ/insn-clgrl-01.s
index 439bcd9..2464577 100644
--- a/test/MC/SystemZ/insn-clgrl-01.s
+++ b/test/MC/SystemZ/insn-clgrl-01.s
@@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-#CHECK: clgrl %r0, 2864434397 # encoding: [0xc6,0x0a,0x55,0x5d,0xe6,0x6e]
-#CHECK: clgrl %r15, 2864434397 # encoding: [0xc6,0xfa,0x55,0x5d,0xe6,0x6e]
-
- clgrl %r0,0xaabbccdd
- clgrl %r15,0xaabbccdd
+#CHECK: clgrl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x0a,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ clgrl %r0, -0x100000000
+#CHECK: clgrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc6,0x0a,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ clgrl %r0, -2
+#CHECK: clgrl %r0, .[[LAB:L.*]] # encoding: [0xc6,0x0a,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ clgrl %r0, 0
+#CHECK: clgrl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc6,0x0a,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ clgrl %r0, 0xfffffffe
#CHECK: clgrl %r0, foo # encoding: [0xc6,0x0a,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
diff --git a/test/MC/SystemZ/insn-clhrl-01.s b/test/MC/SystemZ/insn-clhrl-01.s
index b424de8..72c9dfa 100644
--- a/test/MC/SystemZ/insn-clhrl-01.s
+++ b/test/MC/SystemZ/insn-clhrl-01.s
@@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-#CHECK: clhrl %r0, 2864434397 # encoding: [0xc6,0x07,0x55,0x5d,0xe6,0x6e]
-#CHECK: clhrl %r15, 2864434397 # encoding: [0xc6,0xf7,0x55,0x5d,0xe6,0x6e]
-
- clhrl %r0,0xaabbccdd
- clhrl %r15,0xaabbccdd
+#CHECK: clhrl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x07,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ clhrl %r0, -0x100000000
+#CHECK: clhrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc6,0x07,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ clhrl %r0, -2
+#CHECK: clhrl %r0, .[[LAB:L.*]] # encoding: [0xc6,0x07,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ clhrl %r0, 0
+#CHECK: clhrl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc6,0x07,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ clhrl %r0, 0xfffffffe
#CHECK: clhrl %r0, foo # encoding: [0xc6,0x07,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
diff --git a/test/MC/SystemZ/insn-clrl-01.s b/test/MC/SystemZ/insn-clrl-01.s
index 4c6e649..c89c16b 100644
--- a/test/MC/SystemZ/insn-clrl-01.s
+++ b/test/MC/SystemZ/insn-clrl-01.s
@@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-#CHECK: clrl %r0, 2864434397 # encoding: [0xc6,0x0f,0x55,0x5d,0xe6,0x6e]
-#CHECK: clrl %r15, 2864434397 # encoding: [0xc6,0xff,0x55,0x5d,0xe6,0x6e]
-
- clrl %r0,0xaabbccdd
- clrl %r15,0xaabbccdd
+#CHECK: clrl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x0f,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ clrl %r0, -0x100000000
+#CHECK: clrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc6,0x0f,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ clrl %r0, -2
+#CHECK: clrl %r0, .[[LAB:L.*]] # encoding: [0xc6,0x0f,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ clrl %r0, 0
+#CHECK: clrl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc6,0x0f,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ clrl %r0, 0xfffffffe
#CHECK: clrl %r0, foo # encoding: [0xc6,0x0f,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
diff --git a/test/MC/SystemZ/insn-crl-01.s b/test/MC/SystemZ/insn-crl-01.s
index 2451b4c..53f5f89 100644
--- a/test/MC/SystemZ/insn-crl-01.s
+++ b/test/MC/SystemZ/insn-crl-01.s
@@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-#CHECK: crl %r0, 2864434397 # encoding: [0xc6,0x0d,0x55,0x5d,0xe6,0x6e]
-#CHECK: crl %r15, 2864434397 # encoding: [0xc6,0xfd,0x55,0x5d,0xe6,0x6e]
-
- crl %r0,0xaabbccdd
- crl %r15,0xaabbccdd
+#CHECK: crl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x0d,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ crl %r0, -0x100000000
+#CHECK: crl %r0, .[[LAB:L.*]]-2 # encoding: [0xc6,0x0d,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ crl %r0, -2
+#CHECK: crl %r0, .[[LAB:L.*]] # encoding: [0xc6,0x0d,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ crl %r0, 0
+#CHECK: crl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc6,0x0d,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ crl %r0, 0xfffffffe
#CHECK: crl %r0, foo # encoding: [0xc6,0x0d,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
diff --git a/test/MC/SystemZ/insn-larl-01.s b/test/MC/SystemZ/insn-larl-01.s
index 3d0f98f..842f2ff 100644
--- a/test/MC/SystemZ/insn-larl-01.s
+++ b/test/MC/SystemZ/insn-larl-01.s
@@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-#CHECK: larl %r0, 2864434397 # encoding: [0xc0,0x00,0x55,0x5d,0xe6,0x6e]
-#CHECK: larl %r15, 2864434397 # encoding: [0xc0,0xf0,0x55,0x5d,0xe6,0x6e]
-
- larl %r0,0xaabbccdd
- larl %r15,0xaabbccdd
+#CHECK: larl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc0,0x00,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ larl %r0, -0x100000000
+#CHECK: larl %r0, .[[LAB:L.*]]-2 # encoding: [0xc0,0x00,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ larl %r0, -2
+#CHECK: larl %r0, .[[LAB:L.*]] # encoding: [0xc0,0x00,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ larl %r0, 0
+#CHECK: larl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc0,0x00,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ larl %r0, 0xfffffffe
#CHECK: larl %r0, foo # encoding: [0xc0,0x00,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
diff --git a/test/MC/SystemZ/insn-lgfrl-01.s b/test/MC/SystemZ/insn-lgfrl-01.s
index 85c9ea7..a016036 100644
--- a/test/MC/SystemZ/insn-lgfrl-01.s
+++ b/test/MC/SystemZ/insn-lgfrl-01.s
@@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-#CHECK: lgfrl %r0, 2864434397 # encoding: [0xc4,0x0c,0x55,0x5d,0xe6,0x6e]
-#CHECK: lgfrl %r15, 2864434397 # encoding: [0xc4,0xfc,0x55,0x5d,0xe6,0x6e]
-
- lgfrl %r0,0xaabbccdd
- lgfrl %r15,0xaabbccdd
+#CHECK: lgfrl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x0c,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ lgfrl %r0, -0x100000000
+#CHECK: lgfrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc4,0x0c,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ lgfrl %r0, -2
+#CHECK: lgfrl %r0, .[[LAB:L.*]] # encoding: [0xc4,0x0c,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ lgfrl %r0, 0
+#CHECK: lgfrl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc4,0x0c,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ lgfrl %r0, 0xfffffffe
#CHECK: lgfrl %r0, foo # encoding: [0xc4,0x0c,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
diff --git a/test/MC/SystemZ/insn-lghrl-01.s b/test/MC/SystemZ/insn-lghrl-01.s
index 34992e6..1acb848 100644
--- a/test/MC/SystemZ/insn-lghrl-01.s
+++ b/test/MC/SystemZ/insn-lghrl-01.s
@@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-#CHECK: lghrl %r0, 2864434397 # encoding: [0xc4,0x04,0x55,0x5d,0xe6,0x6e]
-#CHECK: lghrl %r15, 2864434397 # encoding: [0xc4,0xf4,0x55,0x5d,0xe6,0x6e]
-
- lghrl %r0,0xaabbccdd
- lghrl %r15,0xaabbccdd
+#CHECK: lghrl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x04,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ lghrl %r0, -0x100000000
+#CHECK: lghrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc4,0x04,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ lghrl %r0, -2
+#CHECK: lghrl %r0, .[[LAB:L.*]] # encoding: [0xc4,0x04,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ lghrl %r0, 0
+#CHECK: lghrl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc4,0x04,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ lghrl %r0, 0xfffffffe
#CHECK: lghrl %r0, foo # encoding: [0xc4,0x04,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
diff --git a/test/MC/SystemZ/insn-lgrl-01.s b/test/MC/SystemZ/insn-lgrl-01.s
index 7a18908..fc71919 100644
--- a/test/MC/SystemZ/insn-lgrl-01.s
+++ b/test/MC/SystemZ/insn-lgrl-01.s
@@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-#CHECK: lgrl %r0, 2864434397 # encoding: [0xc4,0x08,0x55,0x5d,0xe6,0x6e]
-#CHECK: lgrl %r15, 2864434397 # encoding: [0xc4,0xf8,0x55,0x5d,0xe6,0x6e]
-
- lgrl %r0,0xaabbccdd
- lgrl %r15,0xaabbccdd
+#CHECK: lgrl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x08,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ lgrl %r0, -0x100000000
+#CHECK: lgrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc4,0x08,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ lgrl %r0, -2
+#CHECK: lgrl %r0, .[[LAB:L.*]] # encoding: [0xc4,0x08,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ lgrl %r0, 0
+#CHECK: lgrl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc4,0x08,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ lgrl %r0, 0xfffffffe
#CHECK: lgrl %r0, foo # encoding: [0xc4,0x08,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
diff --git a/test/MC/SystemZ/insn-lhrl-01.s b/test/MC/SystemZ/insn-lhrl-01.s
index 87925fe..04fb41a 100644
--- a/test/MC/SystemZ/insn-lhrl-01.s
+++ b/test/MC/SystemZ/insn-lhrl-01.s
@@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-#CHECK: lhrl %r0, 2864434397 # encoding: [0xc4,0x05,0x55,0x5d,0xe6,0x6e]
-#CHECK: lhrl %r15, 2864434397 # encoding: [0xc4,0xf5,0x55,0x5d,0xe6,0x6e]
-
- lhrl %r0,0xaabbccdd
- lhrl %r15,0xaabbccdd
+#CHECK: lhrl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x05,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ lhrl %r0, -0x100000000
+#CHECK: lhrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc4,0x05,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ lhrl %r0, -2
+#CHECK: lhrl %r0, .[[LAB:L.*]] # encoding: [0xc4,0x05,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ lhrl %r0, 0
+#CHECK: lhrl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc4,0x05,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ lhrl %r0, 0xfffffffe
#CHECK: lhrl %r0, foo # encoding: [0xc4,0x05,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
diff --git a/test/MC/SystemZ/insn-llgfrl-01.s b/test/MC/SystemZ/insn-llgfrl-01.s
index 85fc9f4..785dfa6 100644
--- a/test/MC/SystemZ/insn-llgfrl-01.s
+++ b/test/MC/SystemZ/insn-llgfrl-01.s
@@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-#CHECK: llgfrl %r0, 2864434397 # encoding: [0xc4,0x0e,0x55,0x5d,0xe6,0x6e]
-#CHECK: llgfrl %r15, 2864434397 # encoding: [0xc4,0xfe,0x55,0x5d,0xe6,0x6e]
-
- llgfrl %r0,0xaabbccdd
- llgfrl %r15,0xaabbccdd
+#CHECK: llgfrl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x0e,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ llgfrl %r0, -0x100000000
+#CHECK: llgfrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc4,0x0e,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ llgfrl %r0, -2
+#CHECK: llgfrl %r0, .[[LAB:L.*]] # encoding: [0xc4,0x0e,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ llgfrl %r0, 0
+#CHECK: llgfrl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc4,0x0e,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ llgfrl %r0, 0xfffffffe
#CHECK: llgfrl %r0, foo # encoding: [0xc4,0x0e,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
diff --git a/test/MC/SystemZ/insn-llghrl-01.s b/test/MC/SystemZ/insn-llghrl-01.s
index af3fa8b..d9b0d01 100644
--- a/test/MC/SystemZ/insn-llghrl-01.s
+++ b/test/MC/SystemZ/insn-llghrl-01.s
@@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-#CHECK: llghrl %r0, 2864434397 # encoding: [0xc4,0x06,0x55,0x5d,0xe6,0x6e]
-#CHECK: llghrl %r15, 2864434397 # encoding: [0xc4,0xf6,0x55,0x5d,0xe6,0x6e]
-
- llghrl %r0,0xaabbccdd
- llghrl %r15,0xaabbccdd
+#CHECK: llghrl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x06,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ llghrl %r0, -0x100000000
+#CHECK: llghrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc4,0x06,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ llghrl %r0, -2
+#CHECK: llghrl %r0, .[[LAB:L.*]] # encoding: [0xc4,0x06,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ llghrl %r0, 0
+#CHECK: llghrl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc4,0x06,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ llghrl %r0, 0xfffffffe
#CHECK: llghrl %r0, foo # encoding: [0xc4,0x06,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
diff --git a/test/MC/SystemZ/insn-llhrl-01.s b/test/MC/SystemZ/insn-llhrl-01.s
index 30ed4f9..d6bf8b9 100644
--- a/test/MC/SystemZ/insn-llhrl-01.s
+++ b/test/MC/SystemZ/insn-llhrl-01.s
@@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-#CHECK: llhrl %r0, 2864434397 # encoding: [0xc4,0x02,0x55,0x5d,0xe6,0x6e]
-#CHECK: llhrl %r15, 2864434397 # encoding: [0xc4,0xf2,0x55,0x5d,0xe6,0x6e]
-
- llhrl %r0,0xaabbccdd
- llhrl %r15,0xaabbccdd
+#CHECK: llhrl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x02,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ llhrl %r0, -0x100000000
+#CHECK: llhrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc4,0x02,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ llhrl %r0, -2
+#CHECK: llhrl %r0, .[[LAB:L.*]] # encoding: [0xc4,0x02,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ llhrl %r0, 0
+#CHECK: llhrl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc4,0x02,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ llhrl %r0, 0xfffffffe
#CHECK: llhrl %r0, foo # encoding: [0xc4,0x02,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
diff --git a/test/MC/SystemZ/insn-lrl-01.s b/test/MC/SystemZ/insn-lrl-01.s
index 32d0eeb..afe862c 100644
--- a/test/MC/SystemZ/insn-lrl-01.s
+++ b/test/MC/SystemZ/insn-lrl-01.s
@@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-#CHECK: lrl %r0, 2864434397 # encoding: [0xc4,0x0d,0x55,0x5d,0xe6,0x6e]
-#CHECK: lrl %r15, 2864434397 # encoding: [0xc4,0xfd,0x55,0x5d,0xe6,0x6e]
-
- lrl %r0,0xaabbccdd
- lrl %r15,0xaabbccdd
+#CHECK: lrl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x0d,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ lrl %r0, -0x100000000
+#CHECK: lrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc4,0x0d,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ lrl %r0, -2
+#CHECK: lrl %r0, .[[LAB:L.*]] # encoding: [0xc4,0x0d,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ lrl %r0, 0
+#CHECK: lrl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc4,0x0d,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ lrl %r0, 0xfffffffe
#CHECK: lrl %r0, foo # encoding: [0xc4,0x0d,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
diff --git a/test/MC/SystemZ/insn-stgrl-01.s b/test/MC/SystemZ/insn-stgrl-01.s
index 729b01d..dc31a49 100644
--- a/test/MC/SystemZ/insn-stgrl-01.s
+++ b/test/MC/SystemZ/insn-stgrl-01.s
@@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-#CHECK: stgrl %r0, 2864434397 # encoding: [0xc4,0x0b,0x55,0x5d,0xe6,0x6e]
-#CHECK: stgrl %r15, 2864434397 # encoding: [0xc4,0xfb,0x55,0x5d,0xe6,0x6e]
-
- stgrl %r0,0xaabbccdd
- stgrl %r15,0xaabbccdd
+#CHECK: stgrl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x0b,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ stgrl %r0, -0x100000000
+#CHECK: stgrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc4,0x0b,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ stgrl %r0, -2
+#CHECK: stgrl %r0, .[[LAB:L.*]] # encoding: [0xc4,0x0b,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ stgrl %r0, 0
+#CHECK: stgrl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc4,0x0b,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ stgrl %r0, 0xfffffffe
#CHECK: stgrl %r0, foo # encoding: [0xc4,0x0b,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
diff --git a/test/MC/SystemZ/insn-sthrl-01.s b/test/MC/SystemZ/insn-sthrl-01.s
index 0bcdbd4..b0a6194 100644
--- a/test/MC/SystemZ/insn-sthrl-01.s
+++ b/test/MC/SystemZ/insn-sthrl-01.s
@@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-#CHECK: sthrl %r0, 2864434397 # encoding: [0xc4,0x07,0x55,0x5d,0xe6,0x6e]
-#CHECK: sthrl %r15, 2864434397 # encoding: [0xc4,0xf7,0x55,0x5d,0xe6,0x6e]
-
- sthrl %r0,0xaabbccdd
- sthrl %r15,0xaabbccdd
+#CHECK: sthrl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x07,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ sthrl %r0, -0x100000000
+#CHECK: sthrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc4,0x07,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ sthrl %r0, -2
+#CHECK: sthrl %r0, .[[LAB:L.*]] # encoding: [0xc4,0x07,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ sthrl %r0, 0
+#CHECK: sthrl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc4,0x07,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ sthrl %r0, 0xfffffffe
#CHECK: sthrl %r0, foo # encoding: [0xc4,0x07,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
diff --git a/test/MC/SystemZ/insn-strl-01.s b/test/MC/SystemZ/insn-strl-01.s
index 84bd41f..a7d7245 100644
--- a/test/MC/SystemZ/insn-strl-01.s
+++ b/test/MC/SystemZ/insn-strl-01.s
@@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
-#CHECK: strl %r0, 2864434397 # encoding: [0xc4,0x0f,0x55,0x5d,0xe6,0x6e]
-#CHECK: strl %r15, 2864434397 # encoding: [0xc4,0xff,0x55,0x5d,0xe6,0x6e]
-
- strl %r0,0xaabbccdd
- strl %r15,0xaabbccdd
+#CHECK: strl %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x0f,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+ strl %r0, -0x100000000
+#CHECK: strl %r0, .[[LAB:L.*]]-2 # encoding: [0xc4,0x0f,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+ strl %r0, -2
+#CHECK: strl %r0, .[[LAB:L.*]] # encoding: [0xc4,0x0f,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+ strl %r0, 0
+#CHECK: strl %r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc4,0x0f,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+ strl %r0, 0xfffffffe
#CHECK: strl %r0, foo # encoding: [0xc4,0x0f,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL