[llvm-branch-commits] [llvm] f03c21d - [SystemZ] Adding extra extended mnemonics for SystemZ target
Kai Nacke via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Wed Dec 2 05:32:05 PST 2020
Author: Anirudh Prasad
Date: 2020-12-02T08:25:31-05:00
New Revision: f03c21df7b845e2ffcef42f242764f36603fdbb4
URL: https://github.com/llvm/llvm-project/commit/f03c21df7b845e2ffcef42f242764f36603fdbb4
DIFF: https://github.com/llvm/llvm-project/commit/f03c21df7b845e2ffcef42f242764f36603fdbb4.diff
LOG: [SystemZ] Adding extra extended mnemonics for SystemZ target
This patch consists of the addition of some common additional
extended mnemonics to the SystemZ target.
- These are jnop, jct, jctg, jas, jasl, jxh, jxhg, jxle,
jxleg, bru, brul, br*, br*l.
- These mnemonics and the instructions they map to are
defined here, Chapter 4 - Branching with extended
mnemonic codes.
- Except for jnop (which is a variant of brc 0, label), every
other mnemonic is marked as a MnemonicAlias since there is
already a "defined" instruction with the same encoding
and/or condition mask values.
- brc 0, label doesn't have a defined extended mnemonic, thus
jnop is defined using as an InstAlias. Furthermore, the
applyMnemonicAliases function is called in the overridden
parseInstruction function in SystemZAsmParser.cpp to ensure
any mnemonic aliases are applied before any further
processing on the instruction is done.
Reviewed By: uweigand
Differential Revision: https://reviews.llvm.org/D92185
Added:
Modified:
llvm/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp
llvm/lib/Target/SystemZ/SystemZInstrFormats.td
llvm/lib/Target/SystemZ/SystemZInstrInfo.td
llvm/test/MC/SystemZ/insn-bad.s
llvm/test/MC/SystemZ/insn-good.s
Removed:
################################################################################
diff --git a/llvm/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp b/llvm/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp
index 8da460381783..2b815a366ccd 100644
--- a/llvm/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp
+++ b/llvm/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp
@@ -1322,6 +1322,11 @@ OperandMatchResultTy SystemZAsmParser::tryParseRegister(unsigned &RegNo,
bool SystemZAsmParser::ParseInstruction(ParseInstructionInfo &Info,
StringRef Name, SMLoc NameLoc,
OperandVector &Operands) {
+
+ // Apply mnemonic aliases first, before doing anything else, in
+ // case the target uses it.
+ applyMnemonicAliases(Name, getAvailableFeatures(), 0 /*VariantID*/);
+
Operands.push_back(SystemZOperand::createToken(Name, NameLoc));
// Read the remaining operands.
diff --git a/llvm/lib/Target/SystemZ/SystemZInstrFormats.td b/llvm/lib/Target/SystemZ/SystemZInstrFormats.td
index 4aac2eec655f..95e94c4c8e1c 100644
--- a/llvm/lib/Target/SystemZ/SystemZInstrFormats.td
+++ b/llvm/lib/Target/SystemZ/SystemZInstrFormats.td
@@ -1911,6 +1911,11 @@ class ICV<string name>
!cast<CondVariant>("IntCondVariant"#name).suffix,
!cast<CondVariant>("IntCondVariant"#name).alternate>;
+// Defines a class that makes it easier to define
+// a MnemonicAlias when CondVariant's are involved.
+class MnemonicCondBranchAlias<CondVariant V, string from, string to>
+ : MnemonicAlias<!subst("#", V.suffix, from), !subst("#", V.suffix, to)>;
+
//===----------------------------------------------------------------------===//
// Instruction definitions with semantics
//===----------------------------------------------------------------------===//
diff --git a/llvm/lib/Target/SystemZ/SystemZInstrInfo.td b/llvm/lib/Target/SystemZ/SystemZInstrInfo.td
index d11404ed7c1b..c37e30556ddb 100644
--- a/llvm/lib/Target/SystemZ/SystemZInstrInfo.td
+++ b/llvm/lib/Target/SystemZ/SystemZInstrInfo.td
@@ -110,6 +110,12 @@ let isAsmParserOnly = 1, hasNoSchedulingInfo = 1, M1 = 0, XBD2 = 0 in
def NOPR : InstAlias<"nopr\t$R", (BCRAsm 0, GR64:$R), 0>;
def NOPR_bare : InstAlias<"nopr", (BCRAsm 0, R0D), 0>;
+// An alias of BRC 0, label
+def JNOP : InstAlias<"jnop\t$RI2", (BRCAsm 0, brtarget16:$RI2), 0>;
+
+// An alias of BRCL 0, label
+def JGNOP : InstAlias<"jgnop\t$RI2", (BRCLAsm 0, brtarget32:$RI2), 0>;
+
// Fused compare-and-branch instructions.
//
// These instructions do not use or clobber the condition codes.
@@ -2338,3 +2344,25 @@ defm : BlockLoadStore<anyextloadi32, i64, MVCSequence, NCSequence, OCSequence,
XCSequence, 4>;
defm : BlockLoadStore<load, i64, MVCSequence, NCSequence, OCSequence,
XCSequence, 8>;
+
+//===----------------------------------------------------------------------===//
+// Mnemonic Aliases
+//===----------------------------------------------------------------------===//
+
+def JCT : MnemonicAlias<"jct", "brct">;
+def JCTG : MnemonicAlias<"jctg", "brctg">;
+def JAS : MnemonicAlias<"jas", "bras">;
+def JASL : MnemonicAlias<"jasl", "brasl">;
+def JXH : MnemonicAlias<"jxh", "brxh">;
+def JXLE : MnemonicAlias<"jxle", "brxle">;
+def JXHG : MnemonicAlias<"jxhg", "brxhg">;
+def JXLEG : MnemonicAlias<"jxleg", "brxlg">;
+
+def BRU : MnemonicAlias<"bru", "j">;
+def BRUL : MnemonicAlias<"brul", "jg">;
+
+foreach V = [ "E", "NE", "H", "NH", "L", "NL", "HE", "NHE", "LE", "NLE",
+ "Z", "NZ", "P", "NP", "M", "NM", "LH", "NLH", "O", "NO" ] in {
+ def BRUAsm#V : MnemonicCondBranchAlias <CV<V>, "br#", "j#">;
+ def BRULAsm#V : MnemonicCondBranchAlias <CV<V>, "br#l", "jg#">;
+}
diff --git a/llvm/test/MC/SystemZ/insn-bad.s b/llvm/test/MC/SystemZ/insn-bad.s
index 59174067c4b2..4637a2f0dbc3 100644
--- a/llvm/test/MC/SystemZ/insn-bad.s
+++ b/llvm/test/MC/SystemZ/insn-bad.s
@@ -491,11 +491,23 @@
#CHECK: bras %r0, 1
#CHECK: error: offset out of range
#CHECK: bras %r0, 0x10000
+#CHECK: error: offset out of range
+#CHECK: jas %r0, -0x100002
+#CHECK: error: offset out of range
+#CHECK: jas %r0, -1
+#CHECK: error: offset out of range
+#CHECK: jas %r0, 1
+#CHECK: error: offset out of range
+#CHECK: jas %r0, 0x10000
bras %r0, -0x100002
bras %r0, -1
bras %r0, 1
bras %r0, 0x10000
+ jas %r0, -0x100002
+ jas %r0, -1
+ jas %r0, 1
+ jas %r0, 0x10000
#CHECK: error: offset out of range
#CHECK: brasl %r0, -0x1000000002
@@ -505,11 +517,23 @@
#CHECK: brasl %r0, 1
#CHECK: error: offset out of range
#CHECK: brasl %r0, 0x100000000
+#CHECK: error: offset out of range
+#CHECK: jasl %r0, -0x1000000002
+#CHECK: error: offset out of range
+#CHECK: jasl %r0, -1
+#CHECK: error: offset out of range
+#CHECK: jasl %r0, 1
+#CHECK: error: offset out of range
+#CHECK: jasl %r0, 0x100000000
brasl %r0, -0x1000000002
brasl %r0, -1
brasl %r0, 1
brasl %r0, 0x100000000
+ jasl %r0, -0x1000000002
+ jasl %r0, -1
+ jasl %r0, 1
+ jasl %r0, 0x100000000
#CHECK: error: offset out of range
#CHECK: brc 0, -0x100002
@@ -519,11 +543,23 @@
#CHECK: brc 0, 1
#CHECK: error: offset out of range
#CHECK: brc 0, 0x10000
+#CHECK: error: offset out of range
+#CHECK: jnop -0x100002
+#CHECK: error: offset out of range
+#CHECK: jnop -1
+#CHECK: error: offset out of range
+#CHECK: jnop 1
+#CHECK: error: offset out of range
+#CHECK: jnop 0x10000
brc 0, -0x100002
brc 0, -1
brc 0, 1
brc 0, 0x10000
+ jnop -0x100002
+ jnop -1
+ jnop 1
+ jnop 0x10000
#CHECK: error: invalid operand
#CHECK: brc foo, bar
@@ -544,11 +580,23 @@
#CHECK: brcl 0, 1
#CHECK: error: offset out of range
#CHECK: brcl 0, 0x100000000
+#CHECK: error: offset out of range
+#CHECK: jgnop -0x1000000002
+#CHECK: error: offset out of range
+#CHECK: jgnop -1
+#CHECK: error: offset out of range
+#CHECK: jgnop 1
+#CHECK: error: offset out of range
+#CHECK: jgnop 0x100000000
brcl 0, -0x1000000002
brcl 0, -1
brcl 0, 1
brcl 0, 0x100000000
+ jgnop -0x1000000002
+ jgnop -1
+ jgnop 1
+ jgnop 0x100000000
#CHECK: error: invalid operand
#CHECK: brcl foo, bar
@@ -602,11 +650,23 @@
#CHECK: brxh %r0, %r2, 1
#CHECK: error: offset out of range
#CHECK: brxh %r0, %r2, 0x10000
+#CHECK: error: offset out of range
+#CHECK: jxh %r0, %r2, -0x100002
+#CHECK: error: offset out of range
+#CHECK: jxh %r0, %r2, -1
+#CHECK: error: offset out of range
+#CHECK: jxh %r0, %r2, 1
+#CHECK: error: offset out of range
+#CHECK: jxh %r0, %r2, 0x10000
brxh %r0, %r2, -0x100002
brxh %r0, %r2, -1
brxh %r0, %r2, 1
brxh %r0, %r2, 0x10000
+ jxh %r0, %r2, -0x100002
+ jxh %r0, %r2, -1
+ jxh %r0, %r2, 1
+ jxh %r0, %r2, 0x10000
#CHECK: error: offset out of range
#CHECK: brxhg %r0, %r2, -0x100002
@@ -616,11 +676,23 @@
#CHECK: brxhg %r0, %r2, 1
#CHECK: error: offset out of range
#CHECK: brxhg %r0, %r2, 0x10000
+#CHECK: error: offset out of range
+#CHECK: jxhg %r0, %r2, -0x100002
+#CHECK: error: offset out of range
+#CHECK: jxhg %r0, %r2, -1
+#CHECK: error: offset out of range
+#CHECK: jxhg %r0, %r2, 1
+#CHECK: error: offset out of range
+#CHECK: jxhg %r0, %r2, 0x10000
brxhg %r0, %r2, -0x100002
brxhg %r0, %r2, -1
brxhg %r0, %r2, 1
brxhg %r0, %r2, 0x10000
+ jxhg %r0, %r2, -0x100002
+ jxhg %r0, %r2, -1
+ jxhg %r0, %r2, 1
+ jxhg %r0, %r2, 0x10000
#CHECK: error: offset out of range
#CHECK: brxle %r0, %r2, -0x100002
@@ -630,11 +702,23 @@
#CHECK: brxle %r0, %r2, 1
#CHECK: error: offset out of range
#CHECK: brxle %r0, %r2, 0x10000
+#CHECK: error: offset out of range
+#CHECK: jxle %r0, %r2, -0x100002
+#CHECK: error: offset out of range
+#CHECK: jxle %r0, %r2, -1
+#CHECK: error: offset out of range
+#CHECK: jxle %r0, %r2, 1
+#CHECK: error: offset out of range
+#CHECK: jxle %r0, %r2, 0x10000
brxle %r0, %r2, -0x100002
brxle %r0, %r2, -1
brxle %r0, %r2, 1
brxle %r0, %r2, 0x10000
+ jxle %r0, %r2, -0x100002
+ jxle %r0, %r2, -1
+ jxle %r0, %r2, 1
+ jxle %r0, %r2, 0x10000
#CHECK: error: offset out of range
#CHECK: brxlg %r0, %r2, -0x100002
@@ -644,11 +728,23 @@
#CHECK: brxlg %r0, %r2, 1
#CHECK: error: offset out of range
#CHECK: brxlg %r0, %r2, 0x10000
+#CHECK: error: offset out of range
+#CHECK: jxleg %r0, %r2, -0x100002
+#CHECK: error: offset out of range
+#CHECK: jxleg %r0, %r2, -1
+#CHECK: error: offset out of range
+#CHECK: jxleg %r0, %r2, 1
+#CHECK: error: offset out of range
+#CHECK: jxleg %r0, %r2, 0x10000
brxlg %r0, %r2, -0x100002
brxlg %r0, %r2, -1
brxlg %r0, %r2, 1
brxlg %r0, %r2, 0x10000
+ jxleg %r0, %r2, -0x100002
+ jxleg %r0, %r2, -1
+ jxleg %r0, %r2, 1
+ jxleg %r0, %r2, 0x10000
#CHECK: error: invalid operand
#CHECK: bxh %r0, %r0, 4096
diff --git a/llvm/test/MC/SystemZ/insn-good.s b/llvm/test/MC/SystemZ/insn-good.s
index f75db59211b3..ce610b529f8e 100644
--- a/llvm/test/MC/SystemZ/insn-good.s
+++ b/llvm/test/MC/SystemZ/insn-good.s
@@ -1172,19 +1172,40 @@
br %r14
br %r15
+#CHECK: bras %r0, .[[LAB:L.*]]-65536 # encoding: [0xa7,0x05,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-65536)+2, kind: FK_390_PC16DBL
#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
+ jas %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
#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
+ jas %r0, -2
+
+#CHECK: bras %r0, .[[LAB:L.*]] # encoding: [0xa7,0x05,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC16DBL
#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
+ jas %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
#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
+ jas %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]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: bras %r15, foo # encoding: [0xa7,0xf5,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
#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]
@@ -1194,7 +1215,16 @@
bras %r0,foo
bras %r14,foo
bras %r15,foo
+ jas %r0,foo
+ jas %r14,foo
+ jas %r15,foo
+#CHECK: bras %r0, bar+100 # encoding: [0xa7,0x05,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
+#CHECK: bras %r14, bar+100 # encoding: [0xa7,0xe5,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
+#CHECK: bras %r15, bar+100 # encoding: [0xa7,0xf5,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
#CHECK: bras %r0, bar+100 # encoding: [0xa7,0x05,A,A]
#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
#CHECK: bras %r14, bar+100 # encoding: [0xa7,0xe5,A,A]
@@ -1204,7 +1234,16 @@
bras %r0,bar+100
bras %r14,bar+100
bras %r15,bar+100
+ jas %r0,bar+100
+ jas %r14,bar+100
+ jas %r15,bar+100
+#CHECK: bras %r0, bar at PLT # encoding: [0xa7,0x05,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
+#CHECK: bras %r14, bar at PLT # encoding: [0xa7,0xe5,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
+#CHECK: bras %r15, bar at PLT # encoding: [0xa7,0xf5,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
#CHECK: bras %r0, bar at PLT # encoding: [0xa7,0x05,A,A]
#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
#CHECK: bras %r14, bar at PLT # encoding: [0xa7,0xe5,A,A]
@@ -1214,20 +1253,41 @@
bras %r0,bar at PLT
bras %r14,bar at PLT
bras %r15,bar at PLT
+ jas %r0,bar at PLT
+ jas %r14,bar at PLT
+ jas %r15,bar at PLT
+#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
#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
+ jasl %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
#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
+ jasl %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
#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
+ jasl %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
#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
+ jasl %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]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: brasl %r15, foo # encoding: [0xc0,0xf5,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
#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]
@@ -1237,7 +1297,16 @@
brasl %r0,foo
brasl %r14,foo
brasl %r15,foo
+ jasl %r0,foo
+ jasl %r14,foo
+ jasl %r15,foo
+#CHECK: brasl %r0, bar+100 # encoding: [0xc0,0x05,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+#CHECK: brasl %r14, bar+100 # encoding: [0xc0,0xe5,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
+#CHECK: brasl %r15, bar+100 # encoding: [0xc0,0xf5,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
#CHECK: brasl %r0, bar+100 # encoding: [0xc0,0x05,A,A,A,A]
#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
#CHECK: brasl %r14, bar+100 # encoding: [0xc0,0xe5,A,A,A,A]
@@ -1247,7 +1316,16 @@
brasl %r0,bar+100
brasl %r14,bar+100
brasl %r15,bar+100
+ jasl %r0,bar+100
+ jasl %r14,bar+100
+ jasl %r15,bar+100
+#CHECK: brasl %r0, bar at PLT # encoding: [0xc0,0x05,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC32DBL
+#CHECK: brasl %r14, bar at PLT # encoding: [0xc0,0xe5,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC32DBL
+#CHECK: brasl %r15, bar at PLT # encoding: [0xc0,0xf5,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC32DBL
#CHECK: brasl %r0, bar at PLT # encoding: [0xc0,0x05,A,A,A,A]
#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC32DBL
#CHECK: brasl %r14, bar at PLT # encoding: [0xc0,0xe5,A,A,A,A]
@@ -1257,542 +1335,897 @@
brasl %r0,bar at PLT
brasl %r14,bar at PLT
brasl %r15,bar at PLT
+ jasl %r0,bar at PLT
+ jasl %r14,bar at PLT
+ jasl %r15,bar at PLT
+#CHECK: brc 0, .[[LAB:L.*]]-65536 # encoding: [0xa7,0x04,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-65536)+2, kind: FK_390_PC16DBL
#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
+ jnop -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
#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
+ jnop -2
+
+#CHECK: brc 0, .[[LAB:L.*]] # encoding: [0xa7,0x04,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC16DBL
#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
+ jnop 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
#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
+ jnop 0xfffe
+#CHECK: brc 0, foo # encoding: [0xa7,0x04,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
#CHECK: brc 0, foo # encoding: [0xa7,0x04,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
brc 0, foo
+ jnop foo
#CHECK: brc 1, foo # encoding: [0xa7,0x14,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
#CHECK: jo foo # encoding: [0xa7,0x14,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: jo foo # encoding: [0xa7,0x14,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
brc 1, foo
jo foo
+ bro foo
#CHECK: brc 2, foo # encoding: [0xa7,0x24,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
#CHECK: jh foo # encoding: [0xa7,0x24,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
#CHECK: jp foo # encoding: [0xa7,0x24,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: jh foo # encoding: [0xa7,0x24,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: jp foo # encoding: [0xa7,0x24,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
brc 2, foo
jh foo
jp foo
+ brh foo
+ brp foo
#CHECK: brc 3, foo # encoding: [0xa7,0x34,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
#CHECK: jnle foo # encoding: [0xa7,0x34,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: jnle foo # encoding: [0xa7,0x34,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
brc 3, foo
jnle foo
+ brnle foo
#CHECK: brc 4, foo # encoding: [0xa7,0x44,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
#CHECK: jl foo # encoding: [0xa7,0x44,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
#CHECK: jm foo # encoding: [0xa7,0x44,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: jl foo # encoding: [0xa7,0x44,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: jm foo # encoding: [0xa7,0x44,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
brc 4, foo
jl foo
jm foo
+ brl foo
+ brm foo
#CHECK: brc 5, foo # encoding: [0xa7,0x54,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
#CHECK: jnhe foo # encoding: [0xa7,0x54,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: jnhe foo # encoding: [0xa7,0x54,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
brc 5, foo
jnhe foo
+ brnhe foo
#CHECK: brc 6, foo # encoding: [0xa7,0x64,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
#CHECK: jlh foo # encoding: [0xa7,0x64,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: jlh foo # encoding: [0xa7,0x64,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
brc 6, foo
jlh foo
+ brlh foo
#CHECK: brc 7, foo # encoding: [0xa7,0x74,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
#CHECK: jne foo # encoding: [0xa7,0x74,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
#CHECK: jnz foo # encoding: [0xa7,0x74,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: jne foo # encoding: [0xa7,0x74,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: jnz foo # encoding: [0xa7,0x74,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
brc 7, foo
jne foo
jnz foo
+ brne foo
+ brnz foo
+
#CHECK: brc 8, foo # encoding: [0xa7,0x84,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
#CHECK: je foo # encoding: [0xa7,0x84,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
#CHECK: jz foo # encoding: [0xa7,0x84,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: je foo # encoding: [0xa7,0x84,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: jz foo # encoding: [0xa7,0x84,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
brc 8, foo
je foo
jz foo
+ bre foo
+ brz foo
#CHECK: brc 9, foo # encoding: [0xa7,0x94,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
#CHECK: jnlh foo # encoding: [0xa7,0x94,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: jnlh foo # encoding: [0xa7,0x94,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
brc 9, foo
jnlh foo
+ brnlh foo
#CHECK: brc 10, foo # encoding: [0xa7,0xa4,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
#CHECK: jhe foo # encoding: [0xa7,0xa4,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: jhe foo # encoding: [0xa7,0xa4,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
brc 10, foo
jhe foo
+ brhe foo
#CHECK: brc 11, foo # encoding: [0xa7,0xb4,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
#CHECK: jnl foo # encoding: [0xa7,0xb4,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
#CHECK: jnm foo # encoding: [0xa7,0xb4,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: jnl foo # encoding: [0xa7,0xb4,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: jnm foo # encoding: [0xa7,0xb4,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
brc 11, foo
jnl foo
jnm foo
+ brnl foo
+ brnm foo
#CHECK: brc 12, foo # encoding: [0xa7,0xc4,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
#CHECK: jle foo # encoding: [0xa7,0xc4,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: jle foo # encoding: [0xa7,0xc4,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
brc 12, foo
jle foo
+ brle foo
#CHECK: brc 13, foo # encoding: [0xa7,0xd4,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
#CHECK: jnh foo # encoding: [0xa7,0xd4,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
#CHECK: jnp foo # encoding: [0xa7,0xd4,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: jnh foo # encoding: [0xa7,0xd4,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: jnp foo # encoding: [0xa7,0xd4,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
brc 13, foo
jnh foo
jnp foo
+ brnh foo
+ brnp foo
#CHECK: brc 14, foo # encoding: [0xa7,0xe4,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
#CHECK: jno foo # encoding: [0xa7,0xe4,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: jno foo # encoding: [0xa7,0xe4,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
brc 14, foo
jno foo
+ brno foo
#CHECK: brc 15, foo # encoding: [0xa7,0xf4,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
#CHECK: j foo # encoding: [0xa7,0xf4,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: j foo # encoding: [0xa7,0xf4,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
brc 15, foo
j foo
+ bru foo
+#CHECK: brc 0, bar+100 # encoding: [0xa7,0x04,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
#CHECK: brc 0, bar+100 # encoding: [0xa7,0x04,A,A]
#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
brc 0, bar+100
+ jnop bar+100
+#CHECK: jo bar+100 # encoding: [0xa7,0x14,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
#CHECK: jo bar+100 # encoding: [0xa7,0x14,A,A]
#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
jo bar+100
+ bro bar+100
+#CHECK: jh bar+100 # encoding: [0xa7,0x24,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
#CHECK: jh bar+100 # encoding: [0xa7,0x24,A,A]
#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
jh bar+100
+ brh bar+100
+#CHECK: jnle bar+100 # encoding: [0xa7,0x34,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
#CHECK: jnle bar+100 # encoding: [0xa7,0x34,A,A]
#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
jnle bar+100
+ brnle bar+100
+#CHECK: jl bar+100 # encoding: [0xa7,0x44,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
#CHECK: jl bar+100 # encoding: [0xa7,0x44,A,A]
#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
jl bar+100
+ brl bar+100
+#CHECK: jnhe bar+100 # encoding: [0xa7,0x54,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
#CHECK: jnhe bar+100 # encoding: [0xa7,0x54,A,A]
#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
jnhe bar+100
+ brnhe bar+100
+#CHECK: jlh bar+100 # encoding: [0xa7,0x64,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
#CHECK: jlh bar+100 # encoding: [0xa7,0x64,A,A]
#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
jlh bar+100
+ brlh bar+100
+#CHECK: jne bar+100 # encoding: [0xa7,0x74,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
#CHECK: jne bar+100 # encoding: [0xa7,0x74,A,A]
#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
jne bar+100
+ brne bar+100
+#CHECK: je bar+100 # encoding: [0xa7,0x84,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
#CHECK: je bar+100 # encoding: [0xa7,0x84,A,A]
#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
je bar+100
+ bre bar+100
+#CHECK: jnlh bar+100 # encoding: [0xa7,0x94,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
#CHECK: jnlh bar+100 # encoding: [0xa7,0x94,A,A]
#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
jnlh bar+100
+ brnlh bar+100
+#CHECK: jhe bar+100 # encoding: [0xa7,0xa4,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
#CHECK: jhe bar+100 # encoding: [0xa7,0xa4,A,A]
#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
jhe bar+100
+ brhe bar+100
+#CHECK: jnl bar+100 # encoding: [0xa7,0xb4,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
#CHECK: jnl bar+100 # encoding: [0xa7,0xb4,A,A]
#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
jnl bar+100
+ brnl bar+100
+#CHECK: jle bar+100 # encoding: [0xa7,0xc4,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
#CHECK: jle bar+100 # encoding: [0xa7,0xc4,A,A]
#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
jle bar+100
+ brle bar+100
+#CHECK: jnh bar+100 # encoding: [0xa7,0xd4,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
#CHECK: jnh bar+100 # encoding: [0xa7,0xd4,A,A]
#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
jnh bar+100
+ brnh bar+100
+#CHECK: jno bar+100 # encoding: [0xa7,0xe4,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
#CHECK: jno bar+100 # encoding: [0xa7,0xe4,A,A]
#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
jno bar+100
+ brno bar+100
+#CHECK: j bar+100 # encoding: [0xa7,0xf4,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
#CHECK: j bar+100 # encoding: [0xa7,0xf4,A,A]
#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
j bar+100
+ bru bar+100
+#CHECK: brc 0, bar at PLT # encoding: [0xa7,0x04,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
#CHECK: brc 0, bar at PLT # encoding: [0xa7,0x04,A,A]
#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
brc 0, bar at PLT
+ jnop bar at PLT
+#CHECK: jo bar at PLT # encoding: [0xa7,0x14,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
#CHECK: jo bar at PLT # encoding: [0xa7,0x14,A,A]
#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
jo bar at PLT
+ bro bar at PLT
+#CHECK: jh bar at PLT # encoding: [0xa7,0x24,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
#CHECK: jh bar at PLT # encoding: [0xa7,0x24,A,A]
#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
jh bar at PLT
+ brh bar at PLT
+#CHECK: jnle bar at PLT # encoding: [0xa7,0x34,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
#CHECK: jnle bar at PLT # encoding: [0xa7,0x34,A,A]
#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
jnle bar at PLT
+ brnle bar at PLT
+#CHECK: jl bar at PLT # encoding: [0xa7,0x44,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
#CHECK: jl bar at PLT # encoding: [0xa7,0x44,A,A]
#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
jl bar at PLT
+ brl bar at PLT
+#CHECK: jnhe bar at PLT # encoding: [0xa7,0x54,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
#CHECK: jnhe bar at PLT # encoding: [0xa7,0x54,A,A]
#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
jnhe bar at PLT
+ brnhe bar at PLT
+#CHECK: jlh bar at PLT # encoding: [0xa7,0x64,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
#CHECK: jlh bar at PLT # encoding: [0xa7,0x64,A,A]
#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
jlh bar at PLT
+ brlh bar at PLT
+#CHECK: jne bar at PLT # encoding: [0xa7,0x74,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
#CHECK: jne bar at PLT # encoding: [0xa7,0x74,A,A]
#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
jne bar at PLT
+ brne bar at PLT
+#CHECK: je bar at PLT # encoding: [0xa7,0x84,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
#CHECK: je bar at PLT # encoding: [0xa7,0x84,A,A]
#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
je bar at PLT
+ bre bar at PLT
+#CHECK: jnlh bar at PLT # encoding: [0xa7,0x94,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
#CHECK: jnlh bar at PLT # encoding: [0xa7,0x94,A,A]
#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
jnlh bar at PLT
+ brnlh bar at PLT
+#CHECK: jhe bar at PLT # encoding: [0xa7,0xa4,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
#CHECK: jhe bar at PLT # encoding: [0xa7,0xa4,A,A]
#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
jhe bar at PLT
+ brhe bar at PLT
+#CHECK: jnl bar at PLT # encoding: [0xa7,0xb4,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
#CHECK: jnl bar at PLT # encoding: [0xa7,0xb4,A,A]
#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
jnl bar at PLT
+ brnl bar at PLT
+#CHECK: jle bar at PLT # encoding: [0xa7,0xc4,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
#CHECK: jle bar at PLT # encoding: [0xa7,0xc4,A,A]
#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
jle bar at PLT
+ brle bar at PLT
+#CHECK: jnh bar at PLT # encoding: [0xa7,0xd4,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
#CHECK: jnh bar at PLT # encoding: [0xa7,0xd4,A,A]
#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
jnh bar at PLT
+ brnh bar at PLT
+#CHECK: jno bar at PLT # encoding: [0xa7,0xe4,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
#CHECK: jno bar at PLT # encoding: [0xa7,0xe4,A,A]
#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
jno bar at PLT
+ brno bar at PLT
+#CHECK: j bar at PLT # encoding: [0xa7,0xf4,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
#CHECK: j bar at PLT # encoding: [0xa7,0xf4,A,A]
#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
j bar at PLT
+ bru bar at PLT
+#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
#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
+ jgnop -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
#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
+ jgnop -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
#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
+ jgnop 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
#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
+ jgnop 0xfffffffe
+#CHECK: brcl 0, foo # encoding: [0xc0,0x04,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
#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
+ jgnop foo
#CHECK: brcl 1, foo # encoding: [0xc0,0x14,A,A,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
#CHECK: jgo foo # encoding: [0xc0,0x14,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: jgo foo # encoding: [0xc0,0x14,A,A,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
brcl 1, foo
jgo foo
+ brol foo
#CHECK: brcl 2, foo # encoding: [0xc0,0x24,A,A,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
#CHECK: jgh foo # encoding: [0xc0,0x24,A,A,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
#CHECK: jgp foo # encoding: [0xc0,0x24,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: jgh foo # encoding: [0xc0,0x24,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: jgp foo # encoding: [0xc0,0x24,A,A,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
brcl 2, foo
jgh foo
jgp foo
+ brhl foo
+ brpl foo
#CHECK: brcl 3, foo # encoding: [0xc0,0x34,A,A,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
#CHECK: jgnle foo # encoding: [0xc0,0x34,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: jgnle foo # encoding: [0xc0,0x34,A,A,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
brcl 3, foo
jgnle foo
+ brnlel foo
#CHECK: brcl 4, foo # encoding: [0xc0,0x44,A,A,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
#CHECK: jgl foo # encoding: [0xc0,0x44,A,A,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
#CHECK: jgm foo # encoding: [0xc0,0x44,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: jgl foo # encoding: [0xc0,0x44,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: jgm foo # encoding: [0xc0,0x44,A,A,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
brcl 4, foo
jgl foo
jgm foo
+ brll foo
+ brml foo
#CHECK: brcl 5, foo # encoding: [0xc0,0x54,A,A,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
#CHECK: jgnhe foo # encoding: [0xc0,0x54,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: jgnhe foo # encoding: [0xc0,0x54,A,A,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
brcl 5, foo
jgnhe foo
+ brnhel foo
#CHECK: brcl 6, foo # encoding: [0xc0,0x64,A,A,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
#CHECK: jglh foo # encoding: [0xc0,0x64,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: jglh foo # encoding: [0xc0,0x64,A,A,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
brcl 6, foo
jglh foo
+ brlhl foo
#CHECK: brcl 7, foo # encoding: [0xc0,0x74,A,A,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
#CHECK: jgne foo # encoding: [0xc0,0x74,A,A,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
#CHECK: jgnz foo # encoding: [0xc0,0x74,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: jgne foo # encoding: [0xc0,0x74,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: jgnz foo # encoding: [0xc0,0x74,A,A,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
brcl 7, foo
jgne foo
jgnz foo
+ brnel foo
+ brnzl foo
#CHECK: brcl 8, foo # encoding: [0xc0,0x84,A,A,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
#CHECK: jge foo # encoding: [0xc0,0x84,A,A,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
#CHECK: jgz foo # encoding: [0xc0,0x84,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: jge foo # encoding: [0xc0,0x84,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: jgz foo # encoding: [0xc0,0x84,A,A,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
brcl 8, foo
jge foo
jgz foo
+ brel foo
+ brzl foo
#CHECK: brcl 9, foo # encoding: [0xc0,0x94,A,A,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
#CHECK: jgnlh foo # encoding: [0xc0,0x94,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: jgnlh foo # encoding: [0xc0,0x94,A,A,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
brcl 9, foo
jgnlh foo
+ brnlhl foo
#CHECK: brcl 10, foo # encoding: [0xc0,0xa4,A,A,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
#CHECK: jghe foo # encoding: [0xc0,0xa4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: jghe foo # encoding: [0xc0,0xa4,A,A,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
brcl 10, foo
jghe foo
+ brhel foo
#CHECK: brcl 11, foo # encoding: [0xc0,0xb4,A,A,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
#CHECK: jgnl foo # encoding: [0xc0,0xb4,A,A,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
#CHECK: jgnm foo # encoding: [0xc0,0xb4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: jgnl foo # encoding: [0xc0,0xb4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: jgnm foo # encoding: [0xc0,0xb4,A,A,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
brcl 11, foo
jgnl foo
jgnm foo
+ brnll foo
+ brnml foo
#CHECK: brcl 12, foo # encoding: [0xc0,0xc4,A,A,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
#CHECK: jgle foo # encoding: [0xc0,0xc4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: jgle foo # encoding: [0xc0,0xc4,A,A,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
brcl 12, foo
jgle foo
+ brlel foo
#CHECK: brcl 13, foo # encoding: [0xc0,0xd4,A,A,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
#CHECK: jgnh foo # encoding: [0xc0,0xd4,A,A,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
#CHECK: jgnp foo # encoding: [0xc0,0xd4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: jgnh foo # encoding: [0xc0,0xd4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: jgnp foo # encoding: [0xc0,0xd4,A,A,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
brcl 13, foo
jgnh foo
jgnp foo
+ brnhl foo
+ brnpl foo
#CHECK: brcl 14, foo # encoding: [0xc0,0xe4,A,A,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
#CHECK: jgno foo # encoding: [0xc0,0xe4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: jgno foo # encoding: [0xc0,0xe4,A,A,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
brcl 14, foo
jgno foo
+ brnol foo
#CHECK: brcl 15, foo # encoding: [0xc0,0xf4,A,A,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
#CHECK: jg foo # encoding: [0xc0,0xf4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
+#CHECK: jg foo # encoding: [0xc0,0xf4,A,A,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
brcl 15, foo
jg foo
+ brul foo
+#CHECK: brcl 0, bar+100 # encoding: [0xc0,0x04,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
#CHECK: brcl 0, bar+100 # encoding: [0xc0,0x04,A,A,A,A]
#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
brcl 0, bar+100
+ jgnop bar+100
+#CHECK: jgo bar+100 # encoding: [0xc0,0x14,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
#CHECK: jgo bar+100 # encoding: [0xc0,0x14,A,A,A,A]
#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
jgo bar+100
+ brol bar+100
+#CHECK: jgh bar+100 # encoding: [0xc0,0x24,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
#CHECK: jgh bar+100 # encoding: [0xc0,0x24,A,A,A,A]
#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
jgh bar+100
+ brhl bar+100
+#CHECK: jgnle bar+100 # encoding: [0xc0,0x34,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
#CHECK: jgnle bar+100 # encoding: [0xc0,0x34,A,A,A,A]
#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
jgnle bar+100
+ brnlel bar+100
+#CHECK: jgl bar+100 # encoding: [0xc0,0x44,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
#CHECK: jgl bar+100 # encoding: [0xc0,0x44,A,A,A,A]
#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
jgl bar+100
+ brll bar+100
+#CHECK: jgnhe bar+100 # encoding: [0xc0,0x54,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
#CHECK: jgnhe bar+100 # encoding: [0xc0,0x54,A,A,A,A]
#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
jgnhe bar+100
+ brnhel bar+100
+#CHECK: jglh bar+100 # encoding: [0xc0,0x64,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
#CHECK: jglh bar+100 # encoding: [0xc0,0x64,A,A,A,A]
#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
jglh bar+100
+ brlhl bar+100
+#CHECK: jgne bar+100 # encoding: [0xc0,0x74,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
#CHECK: jgne bar+100 # encoding: [0xc0,0x74,A,A,A,A]
#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
jgne bar+100
+ brnel bar+100
+#CHECK: jge bar+100 # encoding: [0xc0,0x84,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
#CHECK: jge bar+100 # encoding: [0xc0,0x84,A,A,A,A]
#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
jge bar+100
+ brel bar+100
+#CHECK: jgnlh bar+100 # encoding: [0xc0,0x94,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
#CHECK: jgnlh bar+100 # encoding: [0xc0,0x94,A,A,A,A]
#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
jgnlh bar+100
+ brnlhl bar+100
+#CHECK: jghe bar+100 # encoding: [0xc0,0xa4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
#CHECK: jghe bar+100 # encoding: [0xc0,0xa4,A,A,A,A]
#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
jghe bar+100
+ brhel bar+100
+#CHECK: jgnl bar+100 # encoding: [0xc0,0xb4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
#CHECK: jgnl bar+100 # encoding: [0xc0,0xb4,A,A,A,A]
#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
jgnl bar+100
+ brnll bar+100
+#CHECK: jgle bar+100 # encoding: [0xc0,0xc4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
#CHECK: jgle bar+100 # encoding: [0xc0,0xc4,A,A,A,A]
#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
jgle bar+100
+ brlel bar+100
+#CHECK: jgnh bar+100 # encoding: [0xc0,0xd4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
#CHECK: jgnh bar+100 # encoding: [0xc0,0xd4,A,A,A,A]
#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
jgnh bar+100
+ brnhl bar+100
+#CHECK: jgno bar+100 # encoding: [0xc0,0xe4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
#CHECK: jgno bar+100 # encoding: [0xc0,0xe4,A,A,A,A]
#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
jgno bar+100
+ brnol bar+100
+#CHECK: jg bar+100 # encoding: [0xc0,0xf4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
#CHECK: jg bar+100 # encoding: [0xc0,0xf4,A,A,A,A]
#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC32DBL
jg bar+100
+ brul bar+100
+#CHECK: brcl 0, bar at PLT # encoding: [0xc0,0x04,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC32DBL
#CHECK: brcl 0, bar at PLT # encoding: [0xc0,0x04,A,A,A,A]
#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC32DBL
brcl 0, bar at PLT
+ jgnop bar at PLT
+#CHECK: jgo bar at PLT # encoding: [0xc0,0x14,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC32DBL
#CHECK: jgo bar at PLT # encoding: [0xc0,0x14,A,A,A,A]
#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC32DBL
jgo bar at PLT
+ brol bar at PLT
+#CHECK: jgh bar at PLT # encoding: [0xc0,0x24,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC32DBL
#CHECK: jgh bar at PLT # encoding: [0xc0,0x24,A,A,A,A]
#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC32DBL
jgh bar at PLT
+ brhl bar at PLT
+#CHECK: jgnle bar at PLT # encoding: [0xc0,0x34,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC32DBL
#CHECK: jgnle bar at PLT # encoding: [0xc0,0x34,A,A,A,A]
#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC32DBL
jgnle bar at PLT
+ brnlel bar at PLT
+#CHECK: jgl bar at PLT # encoding: [0xc0,0x44,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC32DBL
#CHECK: jgl bar at PLT # encoding: [0xc0,0x44,A,A,A,A]
#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC32DBL
jgl bar at PLT
+ brll bar at PLT
+#CHECK: jgnhe bar at PLT # encoding: [0xc0,0x54,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC32DBL
#CHECK: jgnhe bar at PLT # encoding: [0xc0,0x54,A,A,A,A]
#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC32DBL
jgnhe bar at PLT
+ brnhel bar at PLT
+#CHECK: jglh bar at PLT # encoding: [0xc0,0x64,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC32DBL
#CHECK: jglh bar at PLT # encoding: [0xc0,0x64,A,A,A,A]
#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC32DBL
jglh bar at PLT
+ brlhl bar at PLT
+#CHECK: jgne bar at PLT # encoding: [0xc0,0x74,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC32DBL
#CHECK: jgne bar at PLT # encoding: [0xc0,0x74,A,A,A,A]
#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC32DBL
jgne bar at PLT
+ brnel bar at PLT
+#CHECK: jge bar at PLT # encoding: [0xc0,0x84,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC32DBL
#CHECK: jge bar at PLT # encoding: [0xc0,0x84,A,A,A,A]
#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC32DBL
jge bar at PLT
+ brel bar at PLT
+#CHECK: jgnlh bar at PLT # encoding: [0xc0,0x94,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC32DBL
#CHECK: jgnlh bar at PLT # encoding: [0xc0,0x94,A,A,A,A]
#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC32DBL
jgnlh bar at PLT
+ brnlhl bar at PLT
+#CHECK: jghe bar at PLT # encoding: [0xc0,0xa4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC32DBL
#CHECK: jghe bar at PLT # encoding: [0xc0,0xa4,A,A,A,A]
#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC32DBL
jghe bar at PLT
+ brhel bar at PLT
+#CHECK: jgnl bar at PLT # encoding: [0xc0,0xb4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC32DBL
#CHECK: jgnl bar at PLT # encoding: [0xc0,0xb4,A,A,A,A]
#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC32DBL
jgnl bar at PLT
+ brnll bar at PLT
+#CHECK: jgle bar at PLT # encoding: [0xc0,0xc4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC32DBL
#CHECK: jgle bar at PLT # encoding: [0xc0,0xc4,A,A,A,A]
#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC32DBL
jgle bar at PLT
+ brlel bar at PLT
+#CHECK: jgnh bar at PLT # encoding: [0xc0,0xd4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC32DBL
#CHECK: jgnh bar at PLT # encoding: [0xc0,0xd4,A,A,A,A]
#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC32DBL
jgnh bar at PLT
+ brnhl bar at PLT
+#CHECK: jgno bar at PLT # encoding: [0xc0,0xe4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC32DBL
#CHECK: jgno bar at PLT # encoding: [0xc0,0xe4,A,A,A,A]
#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC32DBL
jgno bar at PLT
+ brnol bar at PLT
+#CHECK: jg bar at PLT # encoding: [0xc0,0xf4,A,A,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC32DBL
#CHECK: jg bar at PLT # encoding: [0xc0,0xf4,A,A,A,A]
#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC32DBL
jg bar at PLT
+ brul bar at PLT
#CHECK: bct %r0, 0 # encoding: [0x46,0x00,0x00,0x00]
#CHECK: bct %r0, 4095 # encoding: [0x46,0x00,0x0f,0xff]
@@ -1852,37 +2285,69 @@
bctgr %r15,%r0
bctgr %r15,%r9
+#CHECK: brct %r0, .[[LAB:L.*]]-65536 # encoding: [0xa7,0x06,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-65536)+2, kind: FK_390_PC16DBL
#CHECK: brct %r0, .[[LAB:L.*]]-65536 # encoding: [0xa7,0x06,A,A]
#CHECK: fixup A - offset: 2, value: (.[[LAB]]-65536)+2, kind: FK_390_PC16DBL
brct %r0, -0x10000
+ jct %r0, -0x10000
+#CHECK: brct %r0, .[[LAB:L.*]]-2 # encoding: [0xa7,0x06,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC16DBL
#CHECK: brct %r0, .[[LAB:L.*]]-2 # encoding: [0xa7,0x06,A,A]
#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC16DBL
brct %r0, -2
+ jct %r0, -2
+#CHECK: brct %r0, .[[LAB:L.*]] # encoding: [0xa7,0x06,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC16DBL
#CHECK: brct %r0, .[[LAB:L.*]] # encoding: [0xa7,0x06,A,A]
#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC16DBL
brct %r0, 0
+ jct %r0, 0
+#CHECK: brct %r0, .[[LAB:L.*]]+65534 # encoding: [0xa7,0x06,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+65534)+2, kind: FK_390_PC16DBL
#CHECK: brct %r0, .[[LAB:L.*]]+65534 # encoding: [0xa7,0x06,A,A]
#CHECK: fixup A - offset: 2, value: (.[[LAB]]+65534)+2, kind: FK_390_PC16DBL
brct %r0, 0xfffe
+ jct %r0, 0xfffe
+#CHECK: brct %r15, .[[LAB:L.*]] # encoding: [0xa7,0xf6,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC16DBL
#CHECK: brct %r15, .[[LAB:L.*]] # encoding: [0xa7,0xf6,A,A]
#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC16DBL
brct %r15, 0
+ jct %r15, 0
+#CHECK: brctg %r0, .[[LAB:L.*]]-65536 # encoding: [0xa7,0x07,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-65536)+2, kind: FK_390_PC16DBL
#CHECK: brctg %r0, .[[LAB:L.*]]-65536 # encoding: [0xa7,0x07,A,A]
#CHECK: fixup A - offset: 2, value: (.[[LAB]]-65536)+2, kind: FK_390_PC16DBL
brctg %r0, -0x10000
+ jctg %r0, -0x10000
+#CHECK: brctg %r0, .[[LAB:L.*]]-2 # encoding: [0xa7,0x07,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC16DBL
#CHECK: brctg %r0, .[[LAB:L.*]]-2 # encoding: [0xa7,0x07,A,A]
#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC16DBL
brctg %r0, -2
+ jctg %r0, -2
+#CHECK: brctg %r0, .[[LAB:L.*]] # encoding: [0xa7,0x07,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC16DBL
#CHECK: brctg %r0, .[[LAB:L.*]] # encoding: [0xa7,0x07,A,A]
#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC16DBL
brctg %r0, 0
+ jctg %r0, 0
+#CHECK: brctg %r0, .[[LAB:L.*]]+65534 # encoding: [0xa7,0x07,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+65534)+2, kind: FK_390_PC16DBL
#CHECK: brctg %r0, .[[LAB:L.*]]+65534 # encoding: [0xa7,0x07,A,A]
#CHECK: fixup A - offset: 2, value: (.[[LAB]]+65534)+2, kind: FK_390_PC16DBL
brctg %r0, 0xfffe
+ jctg %r0, 0xfffe
+#CHECK: brctg %r15, .[[LAB:L.*]] # encoding: [0xa7,0xf7,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC16DBL
#CHECK: brctg %r15, .[[LAB:L.*]] # encoding: [0xa7,0xf7,A,A]
#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC16DBL
brctg %r15, 0
+ jctg %r15, 0
+
+
#CHECK: bxh %r0, %r0, 0 # encoding: [0x86,0x00,0x00,0x00]
#CHECK: bxh %r0, %r15, 0 # encoding: [0x86,0x0f,0x00,0x00]
@@ -1934,19 +2399,37 @@
bxhg %r0,%r0,524287(%r1)
bxhg %r0,%r0,524287(%r15)
+#CHECK: brxh %r0, %r2, .[[LAB:L.*]]-65536 # encoding: [0x84,0x02,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-65536)+2, kind: FK_390_PC16DBL
#CHECK: brxh %r0, %r2, .[[LAB:L.*]]-65536 # encoding: [0x84,0x02,A,A]
#CHECK: fixup A - offset: 2, value: (.[[LAB]]-65536)+2, kind: FK_390_PC16DBL
brxh %r0,%r2, -0x10000
+ jxh %r0,%r2, -0x10000
+#CHECK: brxh %r0, %r2, .[[LAB:L.*]]-2 # encoding: [0x84,0x02,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC16DBL
#CHECK: brxh %r0, %r2, .[[LAB:L.*]]-2 # encoding: [0x84,0x02,A,A]
#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC16DBL
brxh %r0, %r2, -2
+ jxh %r0, %r2, -2
+#CHECK: brxh %r0, %r2, .[[LAB:L.*]] # encoding: [0x84,0x02,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC16DBL
#CHECK: brxh %r0, %r2, .[[LAB:L.*]] # encoding: [0x84,0x02,A,A]
#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC16DBL
brxh %r0,%r2, 0
+ jxh %r0,%r2, 0
+#CHECK: brxh %r0, %r2, .[[LAB:L.*]]+65534 # encoding: [0x84,0x02,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+65534)+2, kind: FK_390_PC16DBL
#CHECK: brxh %r0, %r2, .[[LAB:L.*]]+65534 # encoding: [0x84,0x02,A,A]
#CHECK: fixup A - offset: 2, value: (.[[LAB]]+65534)+2, kind: FK_390_PC16DBL
brxh %r0,%r2, 0xfffe
+ jxh %r0,%r2, 0xfffe
+#CHECK: brxh %r0, %r2, foo # encoding: [0x84,0x02,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: brxh %r14, %r2, foo # encoding: [0x84,0xe2,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: brxh %r15, %r2, foo # encoding: [0x84,0xf2,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
#CHECK: brxh %r0, %r2, foo # encoding: [0x84,0x02,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
#CHECK: brxh %r14, %r2, foo # encoding: [0x84,0xe2,A,A]
@@ -1956,7 +2439,16 @@
brxh %r0,%r2,foo
brxh %r14,%r2,foo
brxh %r15,%r2,foo
+ jxh %r0,%r2,foo
+ jxh %r14,%r2,foo
+ jxh %r15,%r2,foo
+#CHECK: brxh %r0, %r2, bar+100 # encoding: [0x84,0x02,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
+#CHECK: brxh %r14, %r2, bar+100 # encoding: [0x84,0xe2,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
+#CHECK: brxh %r15, %r2, bar+100 # encoding: [0x84,0xf2,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
#CHECK: brxh %r0, %r2, bar+100 # encoding: [0x84,0x02,A,A]
#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
#CHECK: brxh %r14, %r2, bar+100 # encoding: [0x84,0xe2,A,A]
@@ -1966,7 +2458,16 @@
brxh %r0,%r2,bar+100
brxh %r14,%r2,bar+100
brxh %r15,%r2,bar+100
+ jxh %r0,%r2,bar+100
+ jxh %r14,%r2,bar+100
+ jxh %r15,%r2,bar+100
+#CHECK: brxh %r0, %r2, bar at PLT # encoding: [0x84,0x02,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
+#CHECK: brxh %r14, %r2, bar at PLT # encoding: [0x84,0xe2,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
+#CHECK: brxh %r15, %r2, bar at PLT # encoding: [0x84,0xf2,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
#CHECK: brxh %r0, %r2, bar at PLT # encoding: [0x84,0x02,A,A]
#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
#CHECK: brxh %r14, %r2, bar at PLT # encoding: [0x84,0xe2,A,A]
@@ -1976,20 +2477,41 @@
brxh %r0,%r2,bar at PLT
brxh %r14,%r2,bar at PLT
brxh %r15,%r2,bar at PLT
+ jxh %r0,%r2,bar at PLT
+ jxh %r14,%r2,bar at PLT
+ jxh %r15,%r2,bar at PLT
+#CHECK: brxhg %r0, %r2, .[[LAB:L.*]]-65536 # encoding: [0xec,0x02,A,A,0x00,0x44]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-65536)+2, kind: FK_390_PC16DBL
#CHECK: brxhg %r0, %r2, .[[LAB:L.*]]-65536 # encoding: [0xec,0x02,A,A,0x00,0x44]
#CHECK: fixup A - offset: 2, value: (.[[LAB]]-65536)+2, kind: FK_390_PC16DBL
brxhg %r0,%r2, -0x10000
+ jxhg %r0,%r2, -0x10000
+#CHECK: brxhg %r0, %r2, .[[LAB:L.*]]-2 # encoding: [0xec,0x02,A,A,0x00,0x44]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC16DBL
#CHECK: brxhg %r0, %r2, .[[LAB:L.*]]-2 # encoding: [0xec,0x02,A,A,0x00,0x44]
#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC16DBL
brxhg %r0, %r2, -2
+ jxhg %r0, %r2, -2
+#CHECK: brxhg %r0, %r2, .[[LAB:L.*]] # encoding: [0xec,0x02,A,A,0x00,0x44]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC16DBL
#CHECK: brxhg %r0, %r2, .[[LAB:L.*]] # encoding: [0xec,0x02,A,A,0x00,0x44]
#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC16DBL
brxhg %r0,%r2, 0
+ jxhg %r0,%r2, 0
+#CHECK: brxhg %r0, %r2, .[[LAB:L.*]]+65534 # encoding: [0xec,0x02,A,A,0x00,0x44]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+65534)+2, kind: FK_390_PC16DBL
#CHECK: brxhg %r0, %r2, .[[LAB:L.*]]+65534 # encoding: [0xec,0x02,A,A,0x00,0x44]
#CHECK: fixup A - offset: 2, value: (.[[LAB]]+65534)+2, kind: FK_390_PC16DBL
brxhg %r0,%r2, 0xfffe
+ jxhg %r0,%r2, 0xfffe
+#CHECK: brxhg %r0, %r2, foo # encoding: [0xec,0x02,A,A,0x00,0x44]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: brxhg %r14, %r2, foo # encoding: [0xec,0xe2,A,A,0x00,0x44]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: brxhg %r15, %r2, foo # encoding: [0xec,0xf2,A,A,0x00,0x44]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
#CHECK: brxhg %r0, %r2, foo # encoding: [0xec,0x02,A,A,0x00,0x44]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
#CHECK: brxhg %r14, %r2, foo # encoding: [0xec,0xe2,A,A,0x00,0x44]
@@ -1999,7 +2521,16 @@
brxhg %r0,%r2,foo
brxhg %r14,%r2,foo
brxhg %r15,%r2,foo
+ jxhg %r0,%r2,foo
+ jxhg %r14,%r2,foo
+ jxhg %r15,%r2,foo
+#CHECK: brxhg %r0, %r2, bar+100 # encoding: [0xec,0x02,A,A,0x00,0x44]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
+#CHECK: brxhg %r14, %r2, bar+100 # encoding: [0xec,0xe2,A,A,0x00,0x44]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
+#CHECK: brxhg %r15, %r2, bar+100 # encoding: [0xec,0xf2,A,A,0x00,0x44]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
#CHECK: brxhg %r0, %r2, bar+100 # encoding: [0xec,0x02,A,A,0x00,0x44]
#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
#CHECK: brxhg %r14, %r2, bar+100 # encoding: [0xec,0xe2,A,A,0x00,0x44]
@@ -2009,7 +2540,16 @@
brxhg %r0,%r2,bar+100
brxhg %r14,%r2,bar+100
brxhg %r15,%r2,bar+100
+ jxhg %r0,%r2,bar+100
+ jxhg %r14,%r2,bar+100
+ jxhg %r15,%r2,bar+100
+#CHECK: brxhg %r0, %r2, bar at PLT # encoding: [0xec,0x02,A,A,0x00,0x44]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
+#CHECK: brxhg %r14, %r2, bar at PLT # encoding: [0xec,0xe2,A,A,0x00,0x44]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
+#CHECK: brxhg %r15, %r2, bar at PLT # encoding: [0xec,0xf2,A,A,0x00,0x44]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
#CHECK: brxhg %r0, %r2, bar at PLT # encoding: [0xec,0x02,A,A,0x00,0x44]
#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
#CHECK: brxhg %r14, %r2, bar at PLT # encoding: [0xec,0xe2,A,A,0x00,0x44]
@@ -2019,6 +2559,10 @@
brxhg %r0,%r2,bar at PLT
brxhg %r14,%r2,bar at PLT
brxhg %r15,%r2,bar at PLT
+ jxhg %r0,%r2,bar at PLT
+ jxhg %r14,%r2,bar at PLT
+ jxhg %r15,%r2,bar at PLT
+
#CHECK: bxle %r0, %r0, 0 # encoding: [0x87,0x00,0x00,0x00]
#CHECK: bxle %r0, %r15, 0 # encoding: [0x87,0x0f,0x00,0x00]
@@ -2070,19 +2614,37 @@
bxleg %r0,%r0,524287(%r1)
bxleg %r0,%r0,524287(%r15)
+#CHECK: brxle %r0, %r2, .[[LAB:L.*]]-65536 # encoding: [0x85,0x02,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-65536)+2, kind: FK_390_PC16DBL
#CHECK: brxle %r0, %r2, .[[LAB:L.*]]-65536 # encoding: [0x85,0x02,A,A]
#CHECK: fixup A - offset: 2, value: (.[[LAB]]-65536)+2, kind: FK_390_PC16DBL
brxle %r0,%r2, -0x10000
+ jxle %r0,%r2, -0x10000
+#CHECK: brxle %r0, %r2, .[[LAB:L.*]]-2 # encoding: [0x85,0x02,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC16DBL
#CHECK: brxle %r0, %r2, .[[LAB:L.*]]-2 # encoding: [0x85,0x02,A,A]
#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC16DBL
brxle %r0, %r2, -2
+ jxle %r0, %r2, -2
+#CHECK: brxle %r0, %r2, .[[LAB:L.*]] # encoding: [0x85,0x02,A,A]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC16DBL
#CHECK: brxle %r0, %r2, .[[LAB:L.*]] # encoding: [0x85,0x02,A,A]
#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC16DBL
brxle %r0,%r2, 0
+ jxle %r0,%r2, 0
+#CHECK: brxle %r0, %r2, .[[LAB:L.*]]+65534 # encoding: [0x85,0x02,A,A]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+65534)+2, kind: FK_390_PC16DBL
#CHECK: brxle %r0, %r2, .[[LAB:L.*]]+65534 # encoding: [0x85,0x02,A,A]
#CHECK: fixup A - offset: 2, value: (.[[LAB]]+65534)+2, kind: FK_390_PC16DBL
brxle %r0,%r2, 0xfffe
+ jxle %r0,%r2, 0xfffe
+#CHECK: brxle %r0, %r2, foo # encoding: [0x85,0x02,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: brxle %r14, %r2, foo # encoding: [0x85,0xe2,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: brxle %r15, %r2, foo # encoding: [0x85,0xf2,A,A]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
#CHECK: brxle %r0, %r2, foo # encoding: [0x85,0x02,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
#CHECK: brxle %r14, %r2, foo # encoding: [0x85,0xe2,A,A]
@@ -2092,7 +2654,16 @@
brxle %r0,%r2,foo
brxle %r14,%r2,foo
brxle %r15,%r2,foo
+ jxle %r0,%r2,foo
+ jxle %r14,%r2,foo
+ jxle %r15,%r2,foo
+#CHECK: brxle %r0, %r2, bar+100 # encoding: [0x85,0x02,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
+#CHECK: brxle %r14, %r2, bar+100 # encoding: [0x85,0xe2,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
+#CHECK: brxle %r15, %r2, bar+100 # encoding: [0x85,0xf2,A,A]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
#CHECK: brxle %r0, %r2, bar+100 # encoding: [0x85,0x02,A,A]
#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
#CHECK: brxle %r14, %r2, bar+100 # encoding: [0x85,0xe2,A,A]
@@ -2102,7 +2673,16 @@
brxle %r0,%r2,bar+100
brxle %r14,%r2,bar+100
brxle %r15,%r2,bar+100
+ jxle %r0,%r2,bar+100
+ jxle %r14,%r2,bar+100
+ jxle %r15,%r2,bar+100
+#CHECK: brxle %r0, %r2, bar at PLT # encoding: [0x85,0x02,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
+#CHECK: brxle %r14, %r2, bar at PLT # encoding: [0x85,0xe2,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
+#CHECK: brxle %r15, %r2, bar at PLT # encoding: [0x85,0xf2,A,A]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
#CHECK: brxle %r0, %r2, bar at PLT # encoding: [0x85,0x02,A,A]
#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
#CHECK: brxle %r14, %r2, bar at PLT # encoding: [0x85,0xe2,A,A]
@@ -2112,20 +2692,41 @@
brxle %r0,%r2,bar at PLT
brxle %r14,%r2,bar at PLT
brxle %r15,%r2,bar at PLT
+ jxle %r0,%r2,bar at PLT
+ jxle %r14,%r2,bar at PLT
+ jxle %r15,%r2,bar at PLT
+#CHECK: brxlg %r0, %r2, .[[LAB:L.*]]-65536 # encoding: [0xec,0x02,A,A,0x00,0x45]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-65536)+2, kind: FK_390_PC16DBL
#CHECK: brxlg %r0, %r2, .[[LAB:L.*]]-65536 # encoding: [0xec,0x02,A,A,0x00,0x45]
#CHECK: fixup A - offset: 2, value: (.[[LAB]]-65536)+2, kind: FK_390_PC16DBL
brxlg %r0,%r2, -0x10000
+ jxleg %r0,%r2, -0x10000
+#CHECK: brxlg %r0, %r2, .[[LAB:L.*]]-2 # encoding: [0xec,0x02,A,A,0x00,0x45]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC16DBL
#CHECK: brxlg %r0, %r2, .[[LAB:L.*]]-2 # encoding: [0xec,0x02,A,A,0x00,0x45]
#CHECK: fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC16DBL
brxlg %r0, %r2, -2
+ jxleg %r0, %r2, -2
+#CHECK: brxlg %r0, %r2, .[[LAB:L.*]] # encoding: [0xec,0x02,A,A,0x00,0x45]
+#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC16DBL
#CHECK: brxlg %r0, %r2, .[[LAB:L.*]] # encoding: [0xec,0x02,A,A,0x00,0x45]
#CHECK: fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC16DBL
brxlg %r0,%r2, 0
+ jxleg %r0,%r2, 0
+#CHECK: brxlg %r0, %r2, .[[LAB:L.*]]+65534 # encoding: [0xec,0x02,A,A,0x00,0x45]
+#CHECK: fixup A - offset: 2, value: (.[[LAB]]+65534)+2, kind: FK_390_PC16DBL
#CHECK: brxlg %r0, %r2, .[[LAB:L.*]]+65534 # encoding: [0xec,0x02,A,A,0x00,0x45]
#CHECK: fixup A - offset: 2, value: (.[[LAB]]+65534)+2, kind: FK_390_PC16DBL
brxlg %r0,%r2, 0xfffe
+ jxleg %r0,%r2, 0xfffe
+#CHECK: brxlg %r0, %r2, foo # encoding: [0xec,0x02,A,A,0x00,0x45]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: brxlg %r14, %r2, foo # encoding: [0xec,0xe2,A,A,0x00,0x45]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
+#CHECK: brxlg %r15, %r2, foo # encoding: [0xec,0xf2,A,A,0x00,0x45]
+#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
#CHECK: brxlg %r0, %r2, foo # encoding: [0xec,0x02,A,A,0x00,0x45]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
#CHECK: brxlg %r14, %r2, foo # encoding: [0xec,0xe2,A,A,0x00,0x45]
@@ -2135,7 +2736,16 @@
brxlg %r0,%r2,foo
brxlg %r14,%r2,foo
brxlg %r15,%r2,foo
+ jxleg %r0,%r2,foo
+ jxleg %r14,%r2,foo
+ jxleg %r15,%r2,foo
+#CHECK: brxlg %r0, %r2, bar+100 # encoding: [0xec,0x02,A,A,0x00,0x45]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
+#CHECK: brxlg %r14, %r2, bar+100 # encoding: [0xec,0xe2,A,A,0x00,0x45]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
+#CHECK: brxlg %r15, %r2, bar+100 # encoding: [0xec,0xf2,A,A,0x00,0x45]
+#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
#CHECK: brxlg %r0, %r2, bar+100 # encoding: [0xec,0x02,A,A,0x00,0x45]
#CHECK: fixup A - offset: 2, value: (bar+100)+2, kind: FK_390_PC16DBL
#CHECK: brxlg %r14, %r2, bar+100 # encoding: [0xec,0xe2,A,A,0x00,0x45]
@@ -2145,7 +2755,16 @@
brxlg %r0,%r2,bar+100
brxlg %r14,%r2,bar+100
brxlg %r15,%r2,bar+100
+ jxleg %r0,%r2,bar+100
+ jxleg %r14,%r2,bar+100
+ jxleg %r15,%r2,bar+100
+#CHECK: brxlg %r0, %r2, bar at PLT # encoding: [0xec,0x02,A,A,0x00,0x45]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
+#CHECK: brxlg %r14, %r2, bar at PLT # encoding: [0xec,0xe2,A,A,0x00,0x45]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
+#CHECK: brxlg %r15, %r2, bar at PLT # encoding: [0xec,0xf2,A,A,0x00,0x45]
+#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
#CHECK: brxlg %r0, %r2, bar at PLT # encoding: [0xec,0x02,A,A,0x00,0x45]
#CHECK: fixup A - offset: 2, value: bar at PLT+2, kind: FK_390_PC16DBL
#CHECK: brxlg %r14, %r2, bar at PLT # encoding: [0xec,0xe2,A,A,0x00,0x45]
@@ -2155,6 +2774,9 @@
brxlg %r0,%r2,bar at PLT
brxlg %r14,%r2,bar at PLT
brxlg %r15,%r2,bar at PLT
+ jxleg %r0,%r2,bar at PLT
+ jxleg %r14,%r2,bar at PLT
+ jxleg %r15,%r2,bar at PLT
#CHECK: c %r0, 0 # encoding: [0x59,0x00,0x00,0x00]
#CHECK: c %r0, 4095 # encoding: [0x59,0x00,0x0f,0xff]
More information about the llvm-branch-commits
mailing list