[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
This commit is contained in:
Richard Sandiford 2013-05-14 09:47:26 +00:00
parent 58b854d7e9
commit b594c4c873
31 changed files with 425 additions and 130 deletions

View File

@ -8,6 +8,7 @@
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
#include "MCTargetDesc/SystemZMCTargetDesc.h" #include "MCTargetDesc/SystemZMCTargetDesc.h"
#include "llvm/MC/MCContext.h"
#include "llvm/MC/MCExpr.h" #include "llvm/MC/MCExpr.h"
#include "llvm/MC/MCInst.h" #include "llvm/MC/MCInst.h"
#include "llvm/MC/MCParser/MCParsedAsmOperand.h" #include "llvm/MC/MCParser/MCParsedAsmOperand.h"
@ -368,6 +369,17 @@ public:
} }
OperandMatchResultTy OperandMatchResultTy
parseAccessReg(SmallVectorImpl<MCParsedAsmOperand*> &Operands); parseAccessReg(SmallVectorImpl<MCParsedAsmOperand*> &Operands);
OperandMatchResultTy
parsePCRel(SmallVectorImpl<MCParsedAsmOperand*> &Operands,
int64_t MinVal, int64_t MaxVal);
OperandMatchResultTy
parsePCRel16(SmallVectorImpl<MCParsedAsmOperand*> &Operands) {
return parsePCRel(Operands, -(1LL << 16), (1LL << 16) - 1);
}
OperandMatchResultTy
parsePCRel32(SmallVectorImpl<MCParsedAsmOperand*> &Operands) {
return parsePCRel(Operands, -(1LL << 32), (1LL << 32) - 1);
}
}; };
} }
@ -653,6 +665,37 @@ parseAccessReg(SmallVectorImpl<MCParsedAsmOperand*> &Operands) {
return MatchOperand_Success; return MatchOperand_Success;
} }
SystemZAsmParser::OperandMatchResultTy SystemZAsmParser::
parsePCRel(SmallVectorImpl<MCParsedAsmOperand*> &Operands,
int64_t MinVal, int64_t MaxVal) {
MCContext &Ctx = getContext();
MCStreamer &Out = getStreamer();
const MCExpr *Expr;
SMLoc StartLoc = Parser.getTok().getLoc();
if (getParser().parseExpression(Expr))
return MatchOperand_NoMatch;
// For consistency with the GNU assembler, treat immediates as offsets
// from ".".
if (const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(Expr)) {
int64_t Value = CE->getValue();
if ((Value & 1) || Value < MinVal || Value > MaxVal) {
Error(StartLoc, "offset out of range");
return MatchOperand_ParseFail;
}
MCSymbol *Sym = Ctx.CreateTempSymbol();
Out.EmitLabel(Sym);
const MCExpr *Base = MCSymbolRefExpr::Create(Sym, MCSymbolRefExpr::VK_None,
Ctx);
Expr = Value == 0 ? Base : MCBinaryExpr::CreateAdd(Base, Expr, Ctx);
}
SMLoc EndLoc =
SMLoc::getFromPointer(Parser.getTok().getLoc().getPointer() - 1);
Operands.push_back(SystemZOperand::createImm(Expr, StartLoc, EndLoc));
return MatchOperand_Success;
}
// Force static initialization. // Force static initialization.
extern "C" void LLVMInitializeSystemZAsmParser() { extern "C" void LLVMInitializeSystemZAsmParser() {
RegisterMCAsmParser<SystemZAsmParser> X(TheSystemZTarget); RegisterMCAsmParser<SystemZAsmParser> X(TheSystemZTarget);

View File

@ -162,19 +162,19 @@ SystemZMCCodeEmitter::getPCRelEncoding(const MCInst &MI, unsigned OpNum,
SmallVectorImpl<MCFixup> &Fixups, SmallVectorImpl<MCFixup> &Fixups,
unsigned Kind, int64_t Offset) const { unsigned Kind, int64_t Offset) const {
const MCOperand &MO = MI.getOperand(OpNum); const MCOperand &MO = MI.getOperand(OpNum);
// For compatibility with the GNU assembler, treat constant operands as const MCExpr *Expr;
// unadjusted PC-relative offsets.
if (MO.isImm()) if (MO.isImm())
return MO.getImm() / 2; Expr = MCConstantExpr::Create(MO.getImm() + Offset, Ctx);
else {
const MCExpr *Expr = MO.getExpr(); Expr = MO.getExpr();
if (Offset) { if (Offset) {
// The operand value is relative to the start of MI, but the fixup // The operand value is relative to the start of MI, but the fixup
// is relative to the operand field itself, which is Offset bytes // is relative to the operand field itself, which is Offset bytes
// into MI. Add Offset to the relocation value to cancel out // into MI. Add Offset to the relocation value to cancel out
// this difference. // this difference.
const MCExpr *OffsetExpr = MCConstantExpr::Create(Offset, Ctx); const MCExpr *OffsetExpr = MCConstantExpr::Create(Offset, Ctx);
Expr = MCBinaryExpr::CreateAdd(Expr, OffsetExpr, Ctx); Expr = MCBinaryExpr::CreateAdd(Expr, OffsetExpr, Ctx);
}
} }
Fixups.push_back(MCFixup::Create(Offset, Expr, (MCFixupKind)Kind)); Fixups.push_back(MCFixup::Create(Offset, Expr, (MCFixupKind)Kind));
return 0; return 0;

View File

@ -27,11 +27,25 @@ class Immediate<ValueType vt, code pred, SDNodeXForm xform, string asmop>
let ParserMatchClass = !cast<AsmOperandClass>(asmop); let ParserMatchClass = !cast<AsmOperandClass>(asmop);
} }
// Constructs an asm operand for a PC-relative address. SIZE says how
// many bits there are.
class PCRelAsmOperand<string size> : ImmediateAsmOperand<"PCRel"##size> {
let PredicateMethod = "isImm";
let ParserMethod = "parsePCRel"##size;
}
// Constructs an operand for a PC-relative address with address type VT.
// ASMOP is the associated asm operand.
class PCRelOperand<ValueType vt, AsmOperandClass asmop> : Operand<vt> {
let ParserMatchClass = asmop;
}
// Constructs both a DAG pattern and instruction operand for a PC-relative // Constructs both a DAG pattern and instruction operand for a PC-relative
// address with address size VT. SELF is the name of the operand. // address with address size VT. SELF is the name of the operand and
class PCRelAddress<ValueType vt, string self> // ASMOP is the associated asm operand.
class PCRelAddress<ValueType vt, string self, AsmOperandClass asmop>
: ComplexPattern<vt, 1, "selectPCRelAddress", [z_pcrel_wrapper]>, : ComplexPattern<vt, 1, "selectPCRelAddress", [z_pcrel_wrapper]>,
Operand<vt> { PCRelOperand<vt, asmop> {
let MIOperandInfo = (ops !cast<Operand>(self)); let MIOperandInfo = (ops !cast<Operand>(self));
} }
@ -337,28 +351,32 @@ def fpimmneg0 : PatLeaf<(fpimm), [{ return N->isExactlyValue(-0.0); }]>;
// Symbolic address operands // Symbolic address operands
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
// PC-relative asm operands.
def PCRel16 : PCRelAsmOperand<"16">;
def PCRel32 : PCRelAsmOperand<"32">;
// PC-relative offsets of a basic block. The offset is sign-extended // PC-relative offsets of a basic block. The offset is sign-extended
// and multiplied by 2. // and multiplied by 2.
def brtarget16 : Operand<OtherVT> { def brtarget16 : PCRelOperand<OtherVT, PCRel16> {
let EncoderMethod = "getPC16DBLEncoding"; let EncoderMethod = "getPC16DBLEncoding";
} }
def brtarget32 : Operand<OtherVT> { def brtarget32 : PCRelOperand<OtherVT, PCRel32> {
let EncoderMethod = "getPC32DBLEncoding"; let EncoderMethod = "getPC32DBLEncoding";
} }
// A PC-relative offset of a global value. The offset is sign-extended // A PC-relative offset of a global value. The offset is sign-extended
// and multiplied by 2. // and multiplied by 2.
def pcrel32 : PCRelAddress<i64, "pcrel32"> { def pcrel32 : PCRelAddress<i64, "pcrel32", PCRel32> {
let EncoderMethod = "getPC32DBLEncoding"; let EncoderMethod = "getPC32DBLEncoding";
} }
// A PC-relative offset of a global value when the value is used as a // A PC-relative offset of a global value when the value is used as a
// call target. The offset is sign-extended and multiplied by 2. // call target. The offset is sign-extended and multiplied by 2.
def pcrel16call : PCRelAddress<i64, "pcrel16call"> { def pcrel16call : PCRelAddress<i64, "pcrel16call", PCRel16> {
let PrintMethod = "printCallOperand"; let PrintMethod = "printCallOperand";
let EncoderMethod = "getPLT16DBLEncoding"; let EncoderMethod = "getPLT16DBLEncoding";
} }
def pcrel32call : PCRelAddress<i64, "pcrel32call"> { def pcrel32call : PCRelAddress<i64, "pcrel32call", PCRel32> {
let PrintMethod = "printCallOperand"; let PrintMethod = "printCallOperand";
let EncoderMethod = "getPLT32DBLEncoding"; let EncoderMethod = "getPLT32DBLEncoding";
} }

View File

@ -1,5 +1,18 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s # 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: bras %r0, foo # encoding: [0xa7,0x05,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL #CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
#CHECK: bras %r14, foo # encoding: [0xa7,0xe5,A,A] #CHECK: bras %r14, foo # encoding: [0xa7,0xe5,A,A]

View File

@ -1,5 +1,18 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s # 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: brasl %r0, foo # encoding: [0xc0,0x05,A,A,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL #CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
#CHECK: brasl %r14, foo # encoding: [0xc0,0xe5,A,A,A,A] #CHECK: brasl %r14, foo # encoding: [0xc0,0xe5,A,A,A,A]

View File

@ -1,5 +1,18 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s # 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: brc 0, foo # encoding: [0xa7,0x04,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL #CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
brc 0, foo brc 0, foo

View File

@ -1,6 +1,20 @@
# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t # RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
# RUN: FileCheck < %t %s # 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: error: invalid operand
#CHECK: brc foo, bar #CHECK: brc foo, bar
#CHECK: error: invalid operand #CHECK: error: invalid operand

View File

@ -1,5 +1,18 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s # 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: brcl 0, foo # encoding: [0xc0,0x04,A,A,A,A]
#CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL #CHECK: fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
brcl 0, foo brcl 0, foo

View File

@ -1,6 +1,20 @@
# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t # RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
# RUN: FileCheck < %t %s # 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: error: invalid operand
#CHECK: brcl foo, bar #CHECK: brcl foo, bar
#CHECK: error: invalid operand #CHECK: error: invalid operand

View File

@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s # 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 %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x0c,A,A,A,A]
#CHECK: cgfrl %r15, 2864434397 # encoding: [0xc6,0xfc,0x55,0x5d,0xe6,0x6e] #CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
cgfrl %r0, -0x100000000
cgfrl %r0,0xaabbccdd #CHECK: cgfrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc6,0x0c,A,A,A,A]
cgfrl %r15,0xaabbccdd #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] #CHECK: cgfrl %r0, foo # encoding: [0xc6,0x0c,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

View File

@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s # 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 %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x04,A,A,A,A]
#CHECK: cghrl %r15, 2864434397 # encoding: [0xc6,0xf4,0x55,0x5d,0xe6,0x6e] #CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
cghrl %r0, -0x100000000
cghrl %r0,0xaabbccdd #CHECK: cghrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc6,0x04,A,A,A,A]
cghrl %r15,0xaabbccdd #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] #CHECK: cghrl %r0, foo # encoding: [0xc6,0x04,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

View File

@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s # 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 %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x08,A,A,A,A]
#CHECK: cgrl %r15, 2864434397 # encoding: [0xc6,0xf8,0x55,0x5d,0xe6,0x6e] #CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
cgrl %r0, -0x100000000
cgrl %r0,0xaabbccdd #CHECK: cgrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc6,0x08,A,A,A,A]
cgrl %r15,0xaabbccdd #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] #CHECK: cgrl %r0, foo # encoding: [0xc6,0x08,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

View File

@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s # 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 %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x05,A,A,A,A]
#CHECK: chrl %r15, 2864434397 # encoding: [0xc6,0xf5,0x55,0x5d,0xe6,0x6e] #CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
chrl %r0, -0x100000000
chrl %r0,0xaabbccdd #CHECK: chrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc6,0x05,A,A,A,A]
chrl %r15,0xaabbccdd #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] #CHECK: chrl %r0, foo # encoding: [0xc6,0x05,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

View File

@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s # 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 %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x0e,A,A,A,A]
#CHECK: clgfrl %r15, 2864434397 # encoding: [0xc6,0xfe,0x55,0x5d,0xe6,0x6e] #CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
clgfrl %r0, -0x100000000
clgfrl %r0,0xaabbccdd #CHECK: clgfrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc6,0x0e,A,A,A,A]
clgfrl %r15,0xaabbccdd #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] #CHECK: clgfrl %r0, foo # encoding: [0xc6,0x0e,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

View File

@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s # 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 %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x06,A,A,A,A]
#CHECK: clghrl %r15, 2864434397 # encoding: [0xc6,0xf6,0x55,0x5d,0xe6,0x6e] #CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
clghrl %r0, -0x100000000
clghrl %r0,0xaabbccdd #CHECK: clghrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc6,0x06,A,A,A,A]
clghrl %r15,0xaabbccdd #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] #CHECK: clghrl %r0, foo # encoding: [0xc6,0x06,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

View File

@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s # 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 %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x0a,A,A,A,A]
#CHECK: clgrl %r15, 2864434397 # encoding: [0xc6,0xfa,0x55,0x5d,0xe6,0x6e] #CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
clgrl %r0, -0x100000000
clgrl %r0,0xaabbccdd #CHECK: clgrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc6,0x0a,A,A,A,A]
clgrl %r15,0xaabbccdd #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] #CHECK: clgrl %r0, foo # encoding: [0xc6,0x0a,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

View File

@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s # 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 %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x07,A,A,A,A]
#CHECK: clhrl %r15, 2864434397 # encoding: [0xc6,0xf7,0x55,0x5d,0xe6,0x6e] #CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
clhrl %r0, -0x100000000
clhrl %r0,0xaabbccdd #CHECK: clhrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc6,0x07,A,A,A,A]
clhrl %r15,0xaabbccdd #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] #CHECK: clhrl %r0, foo # encoding: [0xc6,0x07,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

View File

@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s # 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 %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x0f,A,A,A,A]
#CHECK: clrl %r15, 2864434397 # encoding: [0xc6,0xff,0x55,0x5d,0xe6,0x6e] #CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
clrl %r0, -0x100000000
clrl %r0,0xaabbccdd #CHECK: clrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc6,0x0f,A,A,A,A]
clrl %r15,0xaabbccdd #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] #CHECK: clrl %r0, foo # encoding: [0xc6,0x0f,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

View File

@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s # 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 %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x0d,A,A,A,A]
#CHECK: crl %r15, 2864434397 # encoding: [0xc6,0xfd,0x55,0x5d,0xe6,0x6e] #CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
crl %r0, -0x100000000
crl %r0,0xaabbccdd #CHECK: crl %r0, .[[LAB:L.*]]-2 # encoding: [0xc6,0x0d,A,A,A,A]
crl %r15,0xaabbccdd #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] #CHECK: crl %r0, foo # encoding: [0xc6,0x0d,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

View File

@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s # 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 %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc0,0x00,A,A,A,A]
#CHECK: larl %r15, 2864434397 # encoding: [0xc0,0xf0,0x55,0x5d,0xe6,0x6e] #CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
larl %r0, -0x100000000
larl %r0,0xaabbccdd #CHECK: larl %r0, .[[LAB:L.*]]-2 # encoding: [0xc0,0x00,A,A,A,A]
larl %r15,0xaabbccdd #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] #CHECK: larl %r0, foo # encoding: [0xc0,0x00,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

View File

@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s # 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 %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x0c,A,A,A,A]
#CHECK: lgfrl %r15, 2864434397 # encoding: [0xc4,0xfc,0x55,0x5d,0xe6,0x6e] #CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
lgfrl %r0, -0x100000000
lgfrl %r0,0xaabbccdd #CHECK: lgfrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc4,0x0c,A,A,A,A]
lgfrl %r15,0xaabbccdd #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] #CHECK: lgfrl %r0, foo # encoding: [0xc4,0x0c,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

View File

@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s # 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 %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x04,A,A,A,A]
#CHECK: lghrl %r15, 2864434397 # encoding: [0xc4,0xf4,0x55,0x5d,0xe6,0x6e] #CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
lghrl %r0, -0x100000000
lghrl %r0,0xaabbccdd #CHECK: lghrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc4,0x04,A,A,A,A]
lghrl %r15,0xaabbccdd #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] #CHECK: lghrl %r0, foo # encoding: [0xc4,0x04,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

View File

@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s # 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 %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x08,A,A,A,A]
#CHECK: lgrl %r15, 2864434397 # encoding: [0xc4,0xf8,0x55,0x5d,0xe6,0x6e] #CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
lgrl %r0, -0x100000000
lgrl %r0,0xaabbccdd #CHECK: lgrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc4,0x08,A,A,A,A]
lgrl %r15,0xaabbccdd #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] #CHECK: lgrl %r0, foo # encoding: [0xc4,0x08,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

View File

@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s # 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 %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x05,A,A,A,A]
#CHECK: lhrl %r15, 2864434397 # encoding: [0xc4,0xf5,0x55,0x5d,0xe6,0x6e] #CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
lhrl %r0, -0x100000000
lhrl %r0,0xaabbccdd #CHECK: lhrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc4,0x05,A,A,A,A]
lhrl %r15,0xaabbccdd #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] #CHECK: lhrl %r0, foo # encoding: [0xc4,0x05,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

View File

@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s # 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 %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x0e,A,A,A,A]
#CHECK: llgfrl %r15, 2864434397 # encoding: [0xc4,0xfe,0x55,0x5d,0xe6,0x6e] #CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
llgfrl %r0, -0x100000000
llgfrl %r0,0xaabbccdd #CHECK: llgfrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc4,0x0e,A,A,A,A]
llgfrl %r15,0xaabbccdd #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] #CHECK: llgfrl %r0, foo # encoding: [0xc4,0x0e,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

View File

@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s # 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 %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x06,A,A,A,A]
#CHECK: llghrl %r15, 2864434397 # encoding: [0xc4,0xf6,0x55,0x5d,0xe6,0x6e] #CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
llghrl %r0, -0x100000000
llghrl %r0,0xaabbccdd #CHECK: llghrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc4,0x06,A,A,A,A]
llghrl %r15,0xaabbccdd #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] #CHECK: llghrl %r0, foo # encoding: [0xc4,0x06,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

View File

@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s # 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 %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x02,A,A,A,A]
#CHECK: llhrl %r15, 2864434397 # encoding: [0xc4,0xf2,0x55,0x5d,0xe6,0x6e] #CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
llhrl %r0, -0x100000000
llhrl %r0,0xaabbccdd #CHECK: llhrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc4,0x02,A,A,A,A]
llhrl %r15,0xaabbccdd #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] #CHECK: llhrl %r0, foo # encoding: [0xc4,0x02,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

View File

@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s # 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 %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x0d,A,A,A,A]
#CHECK: lrl %r15, 2864434397 # encoding: [0xc4,0xfd,0x55,0x5d,0xe6,0x6e] #CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
lrl %r0, -0x100000000
lrl %r0,0xaabbccdd #CHECK: lrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc4,0x0d,A,A,A,A]
lrl %r15,0xaabbccdd #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] #CHECK: lrl %r0, foo # encoding: [0xc4,0x0d,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

View File

@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s # 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 %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x0b,A,A,A,A]
#CHECK: stgrl %r15, 2864434397 # encoding: [0xc4,0xfb,0x55,0x5d,0xe6,0x6e] #CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
stgrl %r0, -0x100000000
stgrl %r0,0xaabbccdd #CHECK: stgrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc4,0x0b,A,A,A,A]
stgrl %r15,0xaabbccdd #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] #CHECK: stgrl %r0, foo # encoding: [0xc4,0x0b,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

View File

@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s # 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 %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x07,A,A,A,A]
#CHECK: sthrl %r15, 2864434397 # encoding: [0xc4,0xf7,0x55,0x5d,0xe6,0x6e] #CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
sthrl %r0, -0x100000000
sthrl %r0,0xaabbccdd #CHECK: sthrl %r0, .[[LAB:L.*]]-2 # encoding: [0xc4,0x07,A,A,A,A]
sthrl %r15,0xaabbccdd #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] #CHECK: sthrl %r0, foo # encoding: [0xc4,0x07,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

View File

@ -1,10 +1,17 @@
# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s # 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 %r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x0f,A,A,A,A]
#CHECK: strl %r15, 2864434397 # encoding: [0xc4,0xff,0x55,0x5d,0xe6,0x6e] #CHECK: fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
strl %r0, -0x100000000
strl %r0,0xaabbccdd #CHECK: strl %r0, .[[LAB:L.*]]-2 # encoding: [0xc4,0x0f,A,A,A,A]
strl %r15,0xaabbccdd #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] #CHECK: strl %r0, foo # encoding: [0xc4,0x0f,A,A,A,A]
# fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL