[llvm] r181773 - [SystemZ] Rework handling of constant PC-relative operands

Richard Sandiford rsandifo at linux.vnet.ibm.com
Tue May 14 02:47:27 PDT 2013


Author: rsandifo
Date: Tue May 14 04:47:26 2013
New Revision: 181773

URL: http://llvm.org/viewvc/llvm-project?rev=181773&view=rev
Log:
[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.

Modified:
    llvm/trunk/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp
    llvm/trunk/lib/Target/SystemZ/MCTargetDesc/SystemZMCCodeEmitter.cpp
    llvm/trunk/lib/Target/SystemZ/SystemZOperands.td
    llvm/trunk/test/MC/SystemZ/insn-bras-01.s
    llvm/trunk/test/MC/SystemZ/insn-brasl-01.s
    llvm/trunk/test/MC/SystemZ/insn-brc-01.s
    llvm/trunk/test/MC/SystemZ/insn-brc-02.s
    llvm/trunk/test/MC/SystemZ/insn-brcl-01.s
    llvm/trunk/test/MC/SystemZ/insn-brcl-02.s
    llvm/trunk/test/MC/SystemZ/insn-cgfrl-01.s
    llvm/trunk/test/MC/SystemZ/insn-cghrl-01.s
    llvm/trunk/test/MC/SystemZ/insn-cgrl-01.s
    llvm/trunk/test/MC/SystemZ/insn-chrl-01.s
    llvm/trunk/test/MC/SystemZ/insn-clgfrl-01.s
    llvm/trunk/test/MC/SystemZ/insn-clghrl-01.s
    llvm/trunk/test/MC/SystemZ/insn-clgrl-01.s
    llvm/trunk/test/MC/SystemZ/insn-clhrl-01.s
    llvm/trunk/test/MC/SystemZ/insn-clrl-01.s
    llvm/trunk/test/MC/SystemZ/insn-crl-01.s
    llvm/trunk/test/MC/SystemZ/insn-larl-01.s
    llvm/trunk/test/MC/SystemZ/insn-lgfrl-01.s
    llvm/trunk/test/MC/SystemZ/insn-lghrl-01.s
    llvm/trunk/test/MC/SystemZ/insn-lgrl-01.s
    llvm/trunk/test/MC/SystemZ/insn-lhrl-01.s
    llvm/trunk/test/MC/SystemZ/insn-llgfrl-01.s
    llvm/trunk/test/MC/SystemZ/insn-llghrl-01.s
    llvm/trunk/test/MC/SystemZ/insn-llhrl-01.s
    llvm/trunk/test/MC/SystemZ/insn-lrl-01.s
    llvm/trunk/test/MC/SystemZ/insn-stgrl-01.s
    llvm/trunk/test/MC/SystemZ/insn-sthrl-01.s
    llvm/trunk/test/MC/SystemZ/insn-strl-01.s

Modified: llvm/trunk/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp?rev=181773&r1=181772&r2=181773&view=diff
==============================================================================
--- llvm/trunk/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp (original)
+++ llvm/trunk/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp Tue May 14 04:47:26 2013
@@ -8,6 +8,7 @@
 //===----------------------------------------------------------------------===//
 
 #include "MCTargetDesc/SystemZMCTargetDesc.h"
+#include "llvm/MC/MCContext.h"
 #include "llvm/MC/MCExpr.h"
 #include "llvm/MC/MCInst.h"
 #include "llvm/MC/MCParser/MCParsedAsmOperand.h"
@@ -368,6 +369,17 @@ public:
   }
   OperandMatchResultTy
   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<MCParsedA
   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.
 extern "C" void LLVMInitializeSystemZAsmParser() {
   RegisterMCAsmParser<SystemZAsmParser> X(TheSystemZTarget);

Modified: llvm/trunk/lib/Target/SystemZ/MCTargetDesc/SystemZMCCodeEmitter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/SystemZ/MCTargetDesc/SystemZMCCodeEmitter.cpp?rev=181773&r1=181772&r2=181773&view=diff
==============================================================================
--- llvm/trunk/lib/Target/SystemZ/MCTargetDesc/SystemZMCCodeEmitter.cpp (original)
+++ llvm/trunk/lib/Target/SystemZ/MCTargetDesc/SystemZMCCodeEmitter.cpp Tue May 14 04:47:26 2013
@@ -162,19 +162,19 @@ SystemZMCCodeEmitter::getPCRelEncoding(c
                                        SmallVectorImpl<MCFixup> &Fixups,
                                        unsigned Kind, int64_t Offset) const {
   const MCOperand &MO = MI.getOperand(OpNum);
-  // For compatibility with the GNU assembler, treat constant operands as
-  // unadjusted PC-relative offsets.
+  const MCExpr *Expr;
   if (MO.isImm())
-    return MO.getImm() / 2;
-
-  const MCExpr *Expr = MO.getExpr();
-  if (Offset) {
-    // The operand value is relative to the start of MI, but the fixup
-    // is relative to the operand field itself, which is Offset bytes
-    // into MI.  Add Offset to the relocation value to cancel out
-    // this difference.
-    const MCExpr *OffsetExpr = MCConstantExpr::Create(Offset, Ctx);
-    Expr = MCBinaryExpr::CreateAdd(Expr, OffsetExpr, Ctx);
+    Expr = MCConstantExpr::Create(MO.getImm() + Offset, Ctx);
+  else {
+    Expr = MO.getExpr();
+    if (Offset) {
+      // The operand value is relative to the start of MI, but the fixup
+      // is relative to the operand field itself, which is Offset bytes
+      // into MI.  Add Offset to the relocation value to cancel out
+      // this difference.
+      const MCExpr *OffsetExpr = MCConstantExpr::Create(Offset, Ctx);
+      Expr = MCBinaryExpr::CreateAdd(Expr, OffsetExpr, Ctx);
+    }
   }
   Fixups.push_back(MCFixup::Create(Offset, Expr, (MCFixupKind)Kind));
   return 0;

Modified: llvm/trunk/lib/Target/SystemZ/SystemZOperands.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/SystemZ/SystemZOperands.td?rev=181773&r1=181772&r2=181773&view=diff
==============================================================================
--- llvm/trunk/lib/Target/SystemZ/SystemZOperands.td (original)
+++ llvm/trunk/lib/Target/SystemZ/SystemZOperands.td Tue May 14 04:47:26 2013
@@ -27,11 +27,25 @@ class Immediate<ValueType vt, code pred,
   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
-// address with address size VT.  SELF is the name of the operand.
-class PCRelAddress<ValueType vt, string self>
+// address with address size VT.  SELF is the name of the operand and
+// ASMOP is the associated asm operand.
+class PCRelAddress<ValueType vt, string self, AsmOperandClass asmop>
   : ComplexPattern<vt, 1, "selectPCRelAddress", [z_pcrel_wrapper]>,
-    Operand<vt> {
+    PCRelOperand<vt, asmop> {
   let MIOperandInfo = (ops !cast<Operand>(self));
 }
 
@@ -337,28 +351,32 @@ def fpimmneg0 : PatLeaf<(fpimm), [{ retu
 // 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
 // and multiplied by 2.
-def brtarget16 : Operand<OtherVT> {
+def brtarget16 : PCRelOperand<OtherVT, PCRel16> {
   let EncoderMethod = "getPC16DBLEncoding";
 }
-def brtarget32 : Operand<OtherVT> {
+def brtarget32 : PCRelOperand<OtherVT, PCRel32> {
   let EncoderMethod = "getPC32DBLEncoding";
 }
 
 // A PC-relative offset of a global value.  The offset is sign-extended
 // and multiplied by 2.
-def pcrel32 : PCRelAddress<i64, "pcrel32"> {
+def pcrel32 : PCRelAddress<i64, "pcrel32", PCRel32> {
   let EncoderMethod = "getPC32DBLEncoding";
 }
 
 // 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.
-def pcrel16call : PCRelAddress<i64, "pcrel16call"> {
+def pcrel16call : PCRelAddress<i64, "pcrel16call", PCRel16> {
   let PrintMethod = "printCallOperand";
   let EncoderMethod = "getPLT16DBLEncoding";
 }
-def pcrel32call : PCRelAddress<i64, "pcrel32call"> {
+def pcrel32call : PCRelAddress<i64, "pcrel32call", PCRel32> {
   let PrintMethod = "printCallOperand";
   let EncoderMethod = "getPLT32DBLEncoding";
 }

Modified: llvm/trunk/test/MC/SystemZ/insn-bras-01.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/SystemZ/insn-bras-01.s?rev=181773&r1=181772&r2=181773&view=diff
==============================================================================
--- llvm/trunk/test/MC/SystemZ/insn-bras-01.s (original)
+++ llvm/trunk/test/MC/SystemZ/insn-bras-01.s Tue May 14 04:47:26 2013
@@ -1,5 +1,18 @@
 # RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
 
+#CHECK: bras	%r0, .[[LAB:L.*]]-65536	# encoding: [0xa7,0x05,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-65536)+2, kind: FK_390_PC16DBL
+	bras	%r0, -0x10000
+#CHECK: bras	%r0, .[[LAB:L.*]]-2	# encoding: [0xa7,0x05,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC16DBL
+	bras	%r0, -2
+#CHECK: bras	%r0, .[[LAB:L.*]]	# encoding: [0xa7,0x05,A,A]
+#CHECK:  fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC16DBL
+	bras	%r0, 0
+#CHECK: bras	%r0, .[[LAB:L.*]]+65534	# encoding: [0xa7,0x05,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]+65534)+2, kind: FK_390_PC16DBL
+	bras	%r0, 0xfffe
+
 #CHECK: bras	%r0, foo                # encoding: [0xa7,0x05,A,A]
 #CHECK:  fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
 #CHECK: bras	%r14, foo               # encoding: [0xa7,0xe5,A,A]

Modified: llvm/trunk/test/MC/SystemZ/insn-brasl-01.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/SystemZ/insn-brasl-01.s?rev=181773&r1=181772&r2=181773&view=diff
==============================================================================
--- llvm/trunk/test/MC/SystemZ/insn-brasl-01.s (original)
+++ llvm/trunk/test/MC/SystemZ/insn-brasl-01.s Tue May 14 04:47:26 2013
@@ -1,5 +1,18 @@
 # RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
 
+#CHECK: brasl	%r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc0,0x05,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+	brasl	%r0, -0x100000000
+#CHECK: brasl	%r0, .[[LAB:L.*]]-2	# encoding: [0xc0,0x05,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+	brasl	%r0, -2
+#CHECK: brasl	%r0, .[[LAB:L.*]]	# encoding: [0xc0,0x05,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+	brasl	%r0, 0
+#CHECK: brasl	%r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc0,0x05,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+	brasl	%r0, 0xfffffffe
+
 #CHECK: brasl	%r0, foo                # encoding: [0xc0,0x05,A,A,A,A]
 #CHECK:  fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
 #CHECK: brasl	%r14, foo               # encoding: [0xc0,0xe5,A,A,A,A]

Modified: llvm/trunk/test/MC/SystemZ/insn-brc-01.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/SystemZ/insn-brc-01.s?rev=181773&r1=181772&r2=181773&view=diff
==============================================================================
--- llvm/trunk/test/MC/SystemZ/insn-brc-01.s (original)
+++ llvm/trunk/test/MC/SystemZ/insn-brc-01.s Tue May 14 04:47:26 2013
@@ -1,5 +1,18 @@
 # RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
 
+#CHECK: brc	0, .[[LAB:L.*]]-65536	# encoding: [0xa7,0x04,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-65536)+2, kind: FK_390_PC16DBL
+	brc	0, -0x10000
+#CHECK: brc	0, .[[LAB:L.*]]-2	# encoding: [0xa7,0x04,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC16DBL
+	brc	0, -2
+#CHECK: brc	0, .[[LAB:L.*]]		# encoding: [0xa7,0x04,A,A]
+#CHECK:  fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC16DBL
+	brc	0, 0
+#CHECK: brc	0, .[[LAB:L.*]]+65534	# encoding: [0xa7,0x04,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]+65534)+2, kind: FK_390_PC16DBL
+	brc	0, 0xfffe
+
 #CHECK: brc	0, foo                  # encoding: [0xa7,0x04,A,A]
 #CHECK:  fixup A - offset: 2, value: foo+2, kind: FK_390_PC16DBL
 	brc	0, foo

Modified: llvm/trunk/test/MC/SystemZ/insn-brc-02.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/SystemZ/insn-brc-02.s?rev=181773&r1=181772&r2=181773&view=diff
==============================================================================
--- llvm/trunk/test/MC/SystemZ/insn-brc-02.s (original)
+++ llvm/trunk/test/MC/SystemZ/insn-brc-02.s Tue May 14 04:47:26 2013
@@ -1,6 +1,20 @@
 # RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
 # RUN: FileCheck < %t %s
 
+#CHECK: error: offset out of range
+#CHECK: brc	0, -0x100002
+#CHECK: error: offset out of range
+#CHECK: brc	0, -1
+#CHECK: error: offset out of range
+#CHECK: brc	0, 1
+#CHECK: error: offset out of range
+#CHECK: brc	0, 0x10000
+
+	brc	0, -0x100002
+	brc	0, -1
+	brc	0, 1
+	brc	0, 0x10000
+
 #CHECK: error: invalid operand
 #CHECK: brc	foo, bar
 #CHECK: error: invalid operand

Modified: llvm/trunk/test/MC/SystemZ/insn-brcl-01.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/SystemZ/insn-brcl-01.s?rev=181773&r1=181772&r2=181773&view=diff
==============================================================================
--- llvm/trunk/test/MC/SystemZ/insn-brcl-01.s (original)
+++ llvm/trunk/test/MC/SystemZ/insn-brcl-01.s Tue May 14 04:47:26 2013
@@ -1,5 +1,18 @@
 # RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
 
+#CHECK: brcl	0, .[[LAB:L.*]]-4294967296 # encoding: [0xc0,0x04,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+	brcl	0, -0x100000000
+#CHECK: brcl	0, .[[LAB:L.*]]-2	# encoding: [0xc0,0x04,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+	brcl	0, -2
+#CHECK: brcl	0, .[[LAB:L.*]]		# encoding: [0xc0,0x04,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+	brcl	0, 0
+#CHECK: brcl	0, .[[LAB:L.*]]+4294967294 # encoding: [0xc0,0x04,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+	brcl	0, 0xfffffffe
+
 #CHECK: brcl	0, foo                  # encoding: [0xc0,0x04,A,A,A,A]
 #CHECK:  fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL
 	brcl	0, foo

Modified: llvm/trunk/test/MC/SystemZ/insn-brcl-02.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/SystemZ/insn-brcl-02.s?rev=181773&r1=181772&r2=181773&view=diff
==============================================================================
--- llvm/trunk/test/MC/SystemZ/insn-brcl-02.s (original)
+++ llvm/trunk/test/MC/SystemZ/insn-brcl-02.s Tue May 14 04:47:26 2013
@@ -1,6 +1,20 @@
 # RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t
 # RUN: FileCheck < %t %s
 
+#CHECK: error: offset out of range
+#CHECK: brcl	0, -0x1000000002
+#CHECK: error: offset out of range
+#CHECK: brcl	0, -1
+#CHECK: error: offset out of range
+#CHECK: brcl	0, 1
+#CHECK: error: offset out of range
+#CHECK: brcl	0, 0x100000000
+
+	brcl	0, -0x1000000002
+	brcl	0, -1
+	brcl	0, 1
+	brcl	0, 0x100000000
+
 #CHECK: error: invalid operand
 #CHECK: brcl	foo, bar
 #CHECK: error: invalid operand

Modified: llvm/trunk/test/MC/SystemZ/insn-cgfrl-01.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/SystemZ/insn-cgfrl-01.s?rev=181773&r1=181772&r2=181773&view=diff
==============================================================================
--- llvm/trunk/test/MC/SystemZ/insn-cgfrl-01.s (original)
+++ llvm/trunk/test/MC/SystemZ/insn-cgfrl-01.s Tue May 14 04:47:26 2013
@@ -1,10 +1,17 @@
 # RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
 
-#CHECK: cgfrl	%r0, 2864434397         # encoding: [0xc6,0x0c,0x55,0x5d,0xe6,0x6e]
-#CHECK: cgfrl	%r15, 2864434397        # encoding: [0xc6,0xfc,0x55,0x5d,0xe6,0x6e]
-
-	cgfrl	%r0,0xaabbccdd
-	cgfrl	%r15,0xaabbccdd
+#CHECK: cgfrl	%r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x0c,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+	cgfrl	%r0, -0x100000000
+#CHECK: cgfrl	%r0, .[[LAB:L.*]]-2	# encoding: [0xc6,0x0c,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+	cgfrl	%r0, -2
+#CHECK: cgfrl	%r0, .[[LAB:L.*]]	# encoding: [0xc6,0x0c,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+	cgfrl	%r0, 0
+#CHECK: cgfrl	%r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc6,0x0c,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+	cgfrl	%r0, 0xfffffffe
 
 #CHECK: cgfrl	%r0, foo                # encoding: [0xc6,0x0c,A,A,A,A]
 # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

Modified: llvm/trunk/test/MC/SystemZ/insn-cghrl-01.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/SystemZ/insn-cghrl-01.s?rev=181773&r1=181772&r2=181773&view=diff
==============================================================================
--- llvm/trunk/test/MC/SystemZ/insn-cghrl-01.s (original)
+++ llvm/trunk/test/MC/SystemZ/insn-cghrl-01.s Tue May 14 04:47:26 2013
@@ -1,10 +1,17 @@
 # RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
 
-#CHECK: cghrl	%r0, 2864434397         # encoding: [0xc6,0x04,0x55,0x5d,0xe6,0x6e]
-#CHECK: cghrl	%r15, 2864434397        # encoding: [0xc6,0xf4,0x55,0x5d,0xe6,0x6e]
-
-	cghrl	%r0,0xaabbccdd
-	cghrl	%r15,0xaabbccdd
+#CHECK: cghrl	%r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x04,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+	cghrl	%r0, -0x100000000
+#CHECK: cghrl	%r0, .[[LAB:L.*]]-2	# encoding: [0xc6,0x04,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+	cghrl	%r0, -2
+#CHECK: cghrl	%r0, .[[LAB:L.*]]	# encoding: [0xc6,0x04,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+	cghrl	%r0, 0
+#CHECK: cghrl	%r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc6,0x04,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+	cghrl	%r0, 0xfffffffe
 
 #CHECK: cghrl	%r0, foo                # encoding: [0xc6,0x04,A,A,A,A]
 # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

Modified: llvm/trunk/test/MC/SystemZ/insn-cgrl-01.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/SystemZ/insn-cgrl-01.s?rev=181773&r1=181772&r2=181773&view=diff
==============================================================================
--- llvm/trunk/test/MC/SystemZ/insn-cgrl-01.s (original)
+++ llvm/trunk/test/MC/SystemZ/insn-cgrl-01.s Tue May 14 04:47:26 2013
@@ -1,10 +1,17 @@
 # RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
 
-#CHECK: cgrl	%r0, 2864434397         # encoding: [0xc6,0x08,0x55,0x5d,0xe6,0x6e]
-#CHECK: cgrl	%r15, 2864434397        # encoding: [0xc6,0xf8,0x55,0x5d,0xe6,0x6e]
-
-	cgrl	%r0,0xaabbccdd
-	cgrl	%r15,0xaabbccdd
+#CHECK: cgrl	%r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x08,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+	cgrl	%r0, -0x100000000
+#CHECK: cgrl	%r0, .[[LAB:L.*]]-2	# encoding: [0xc6,0x08,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+	cgrl	%r0, -2
+#CHECK: cgrl	%r0, .[[LAB:L.*]]	# encoding: [0xc6,0x08,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+	cgrl	%r0, 0
+#CHECK: cgrl	%r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc6,0x08,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+	cgrl	%r0, 0xfffffffe
 
 #CHECK: cgrl	%r0, foo                # encoding: [0xc6,0x08,A,A,A,A]
 # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

Modified: llvm/trunk/test/MC/SystemZ/insn-chrl-01.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/SystemZ/insn-chrl-01.s?rev=181773&r1=181772&r2=181773&view=diff
==============================================================================
--- llvm/trunk/test/MC/SystemZ/insn-chrl-01.s (original)
+++ llvm/trunk/test/MC/SystemZ/insn-chrl-01.s Tue May 14 04:47:26 2013
@@ -1,10 +1,17 @@
 # RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
 
-#CHECK: chrl	%r0, 2864434397         # encoding: [0xc6,0x05,0x55,0x5d,0xe6,0x6e]
-#CHECK: chrl	%r15, 2864434397        # encoding: [0xc6,0xf5,0x55,0x5d,0xe6,0x6e]
-
-	chrl	%r0,0xaabbccdd
-	chrl	%r15,0xaabbccdd
+#CHECK: chrl	%r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x05,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+	chrl	%r0, -0x100000000
+#CHECK: chrl	%r0, .[[LAB:L.*]]-2	# encoding: [0xc6,0x05,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+	chrl	%r0, -2
+#CHECK: chrl	%r0, .[[LAB:L.*]]	# encoding: [0xc6,0x05,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+	chrl	%r0, 0
+#CHECK: chrl	%r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc6,0x05,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+	chrl	%r0, 0xfffffffe
 
 #CHECK: chrl	%r0, foo                # encoding: [0xc6,0x05,A,A,A,A]
 # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

Modified: llvm/trunk/test/MC/SystemZ/insn-clgfrl-01.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/SystemZ/insn-clgfrl-01.s?rev=181773&r1=181772&r2=181773&view=diff
==============================================================================
--- llvm/trunk/test/MC/SystemZ/insn-clgfrl-01.s (original)
+++ llvm/trunk/test/MC/SystemZ/insn-clgfrl-01.s Tue May 14 04:47:26 2013
@@ -1,10 +1,17 @@
 # RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
 
-#CHECK: clgfrl	%r0, 2864434397         # encoding: [0xc6,0x0e,0x55,0x5d,0xe6,0x6e]
-#CHECK: clgfrl	%r15, 2864434397        # encoding: [0xc6,0xfe,0x55,0x5d,0xe6,0x6e]
-
-	clgfrl	%r0,0xaabbccdd
-	clgfrl	%r15,0xaabbccdd
+#CHECK: clgfrl	%r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x0e,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+	clgfrl	%r0, -0x100000000
+#CHECK: clgfrl	%r0, .[[LAB:L.*]]-2	# encoding: [0xc6,0x0e,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+	clgfrl	%r0, -2
+#CHECK: clgfrl	%r0, .[[LAB:L.*]]	# encoding: [0xc6,0x0e,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+	clgfrl	%r0, 0
+#CHECK: clgfrl	%r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc6,0x0e,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+	clgfrl	%r0, 0xfffffffe
 
 #CHECK: clgfrl	%r0, foo                # encoding: [0xc6,0x0e,A,A,A,A]
 # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

Modified: llvm/trunk/test/MC/SystemZ/insn-clghrl-01.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/SystemZ/insn-clghrl-01.s?rev=181773&r1=181772&r2=181773&view=diff
==============================================================================
--- llvm/trunk/test/MC/SystemZ/insn-clghrl-01.s (original)
+++ llvm/trunk/test/MC/SystemZ/insn-clghrl-01.s Tue May 14 04:47:26 2013
@@ -1,10 +1,17 @@
 # RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
 
-#CHECK: clghrl	%r0, 2864434397         # encoding: [0xc6,0x06,0x55,0x5d,0xe6,0x6e]
-#CHECK: clghrl	%r15, 2864434397        # encoding: [0xc6,0xf6,0x55,0x5d,0xe6,0x6e]
-
-	clghrl	%r0,0xaabbccdd
-	clghrl	%r15,0xaabbccdd
+#CHECK: clghrl	%r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x06,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+	clghrl	%r0, -0x100000000
+#CHECK: clghrl	%r0, .[[LAB:L.*]]-2	# encoding: [0xc6,0x06,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+	clghrl	%r0, -2
+#CHECK: clghrl	%r0, .[[LAB:L.*]]	# encoding: [0xc6,0x06,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+	clghrl	%r0, 0
+#CHECK: clghrl	%r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc6,0x06,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+	clghrl	%r0, 0xfffffffe
 
 #CHECK: clghrl	%r0, foo                # encoding: [0xc6,0x06,A,A,A,A]
 # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

Modified: llvm/trunk/test/MC/SystemZ/insn-clgrl-01.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/SystemZ/insn-clgrl-01.s?rev=181773&r1=181772&r2=181773&view=diff
==============================================================================
--- llvm/trunk/test/MC/SystemZ/insn-clgrl-01.s (original)
+++ llvm/trunk/test/MC/SystemZ/insn-clgrl-01.s Tue May 14 04:47:26 2013
@@ -1,10 +1,17 @@
 # RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
 
-#CHECK: clgrl	%r0, 2864434397         # encoding: [0xc6,0x0a,0x55,0x5d,0xe6,0x6e]
-#CHECK: clgrl	%r15, 2864434397        # encoding: [0xc6,0xfa,0x55,0x5d,0xe6,0x6e]
-
-	clgrl	%r0,0xaabbccdd
-	clgrl	%r15,0xaabbccdd
+#CHECK: clgrl	%r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x0a,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+	clgrl	%r0, -0x100000000
+#CHECK: clgrl	%r0, .[[LAB:L.*]]-2	# encoding: [0xc6,0x0a,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+	clgrl	%r0, -2
+#CHECK: clgrl	%r0, .[[LAB:L.*]]	# encoding: [0xc6,0x0a,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+	clgrl	%r0, 0
+#CHECK: clgrl	%r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc6,0x0a,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+	clgrl	%r0, 0xfffffffe
 
 #CHECK: clgrl	%r0, foo                # encoding: [0xc6,0x0a,A,A,A,A]
 # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

Modified: llvm/trunk/test/MC/SystemZ/insn-clhrl-01.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/SystemZ/insn-clhrl-01.s?rev=181773&r1=181772&r2=181773&view=diff
==============================================================================
--- llvm/trunk/test/MC/SystemZ/insn-clhrl-01.s (original)
+++ llvm/trunk/test/MC/SystemZ/insn-clhrl-01.s Tue May 14 04:47:26 2013
@@ -1,10 +1,17 @@
 # RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
 
-#CHECK: clhrl	%r0, 2864434397         # encoding: [0xc6,0x07,0x55,0x5d,0xe6,0x6e]
-#CHECK: clhrl	%r15, 2864434397        # encoding: [0xc6,0xf7,0x55,0x5d,0xe6,0x6e]
-
-	clhrl	%r0,0xaabbccdd
-	clhrl	%r15,0xaabbccdd
+#CHECK: clhrl	%r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x07,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+	clhrl	%r0, -0x100000000
+#CHECK: clhrl	%r0, .[[LAB:L.*]]-2	# encoding: [0xc6,0x07,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+	clhrl	%r0, -2
+#CHECK: clhrl	%r0, .[[LAB:L.*]]	# encoding: [0xc6,0x07,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+	clhrl	%r0, 0
+#CHECK: clhrl	%r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc6,0x07,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+	clhrl	%r0, 0xfffffffe
 
 #CHECK: clhrl	%r0, foo                # encoding: [0xc6,0x07,A,A,A,A]
 # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

Modified: llvm/trunk/test/MC/SystemZ/insn-clrl-01.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/SystemZ/insn-clrl-01.s?rev=181773&r1=181772&r2=181773&view=diff
==============================================================================
--- llvm/trunk/test/MC/SystemZ/insn-clrl-01.s (original)
+++ llvm/trunk/test/MC/SystemZ/insn-clrl-01.s Tue May 14 04:47:26 2013
@@ -1,10 +1,17 @@
 # RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
 
-#CHECK: clrl	%r0, 2864434397         # encoding: [0xc6,0x0f,0x55,0x5d,0xe6,0x6e]
-#CHECK: clrl	%r15, 2864434397        # encoding: [0xc6,0xff,0x55,0x5d,0xe6,0x6e]
-
-	clrl	%r0,0xaabbccdd
-	clrl	%r15,0xaabbccdd
+#CHECK: clrl	%r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x0f,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+	clrl	%r0, -0x100000000
+#CHECK: clrl	%r0, .[[LAB:L.*]]-2	# encoding: [0xc6,0x0f,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+	clrl	%r0, -2
+#CHECK: clrl	%r0, .[[LAB:L.*]]	# encoding: [0xc6,0x0f,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+	clrl	%r0, 0
+#CHECK: clrl	%r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc6,0x0f,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+	clrl	%r0, 0xfffffffe
 
 #CHECK: clrl	%r0, foo                # encoding: [0xc6,0x0f,A,A,A,A]
 # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

Modified: llvm/trunk/test/MC/SystemZ/insn-crl-01.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/SystemZ/insn-crl-01.s?rev=181773&r1=181772&r2=181773&view=diff
==============================================================================
--- llvm/trunk/test/MC/SystemZ/insn-crl-01.s (original)
+++ llvm/trunk/test/MC/SystemZ/insn-crl-01.s Tue May 14 04:47:26 2013
@@ -1,10 +1,17 @@
 # RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
 
-#CHECK: crl	%r0, 2864434397         # encoding: [0xc6,0x0d,0x55,0x5d,0xe6,0x6e]
-#CHECK: crl	%r15, 2864434397        # encoding: [0xc6,0xfd,0x55,0x5d,0xe6,0x6e]
-
-	crl	%r0,0xaabbccdd
-	crl	%r15,0xaabbccdd
+#CHECK: crl	%r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc6,0x0d,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+	crl	%r0, -0x100000000
+#CHECK: crl	%r0, .[[LAB:L.*]]-2	# encoding: [0xc6,0x0d,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+	crl	%r0, -2
+#CHECK: crl	%r0, .[[LAB:L.*]]	# encoding: [0xc6,0x0d,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+	crl	%r0, 0
+#CHECK: crl	%r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc6,0x0d,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+	crl	%r0, 0xfffffffe
 
 #CHECK: crl	%r0, foo                # encoding: [0xc6,0x0d,A,A,A,A]
 # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

Modified: llvm/trunk/test/MC/SystemZ/insn-larl-01.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/SystemZ/insn-larl-01.s?rev=181773&r1=181772&r2=181773&view=diff
==============================================================================
--- llvm/trunk/test/MC/SystemZ/insn-larl-01.s (original)
+++ llvm/trunk/test/MC/SystemZ/insn-larl-01.s Tue May 14 04:47:26 2013
@@ -1,10 +1,17 @@
 # RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
 
-#CHECK: larl	%r0, 2864434397         # encoding: [0xc0,0x00,0x55,0x5d,0xe6,0x6e]
-#CHECK: larl	%r15, 2864434397        # encoding: [0xc0,0xf0,0x55,0x5d,0xe6,0x6e]
-
-	larl	%r0,0xaabbccdd
-	larl	%r15,0xaabbccdd
+#CHECK: larl	%r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc0,0x00,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+	larl	%r0, -0x100000000
+#CHECK: larl	%r0, .[[LAB:L.*]]-2	# encoding: [0xc0,0x00,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+	larl	%r0, -2
+#CHECK: larl	%r0, .[[LAB:L.*]]	# encoding: [0xc0,0x00,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+	larl	%r0, 0
+#CHECK: larl	%r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc0,0x00,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+	larl	%r0, 0xfffffffe
 
 #CHECK: larl	%r0, foo                # encoding: [0xc0,0x00,A,A,A,A]
 # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

Modified: llvm/trunk/test/MC/SystemZ/insn-lgfrl-01.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/SystemZ/insn-lgfrl-01.s?rev=181773&r1=181772&r2=181773&view=diff
==============================================================================
--- llvm/trunk/test/MC/SystemZ/insn-lgfrl-01.s (original)
+++ llvm/trunk/test/MC/SystemZ/insn-lgfrl-01.s Tue May 14 04:47:26 2013
@@ -1,10 +1,17 @@
 # RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
 
-#CHECK: lgfrl	%r0, 2864434397         # encoding: [0xc4,0x0c,0x55,0x5d,0xe6,0x6e]
-#CHECK: lgfrl	%r15, 2864434397        # encoding: [0xc4,0xfc,0x55,0x5d,0xe6,0x6e]
-
-	lgfrl	%r0,0xaabbccdd
-	lgfrl	%r15,0xaabbccdd
+#CHECK: lgfrl	%r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x0c,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+	lgfrl	%r0, -0x100000000
+#CHECK: lgfrl	%r0, .[[LAB:L.*]]-2	# encoding: [0xc4,0x0c,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+	lgfrl	%r0, -2
+#CHECK: lgfrl	%r0, .[[LAB:L.*]]	# encoding: [0xc4,0x0c,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+	lgfrl	%r0, 0
+#CHECK: lgfrl	%r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc4,0x0c,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+	lgfrl	%r0, 0xfffffffe
 
 #CHECK: lgfrl	%r0, foo                # encoding: [0xc4,0x0c,A,A,A,A]
 # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

Modified: llvm/trunk/test/MC/SystemZ/insn-lghrl-01.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/SystemZ/insn-lghrl-01.s?rev=181773&r1=181772&r2=181773&view=diff
==============================================================================
--- llvm/trunk/test/MC/SystemZ/insn-lghrl-01.s (original)
+++ llvm/trunk/test/MC/SystemZ/insn-lghrl-01.s Tue May 14 04:47:26 2013
@@ -1,10 +1,17 @@
 # RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
 
-#CHECK: lghrl	%r0, 2864434397         # encoding: [0xc4,0x04,0x55,0x5d,0xe6,0x6e]
-#CHECK: lghrl	%r15, 2864434397        # encoding: [0xc4,0xf4,0x55,0x5d,0xe6,0x6e]
-
-	lghrl	%r0,0xaabbccdd
-	lghrl	%r15,0xaabbccdd
+#CHECK: lghrl	%r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x04,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+	lghrl	%r0, -0x100000000
+#CHECK: lghrl	%r0, .[[LAB:L.*]]-2	# encoding: [0xc4,0x04,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+	lghrl	%r0, -2
+#CHECK: lghrl	%r0, .[[LAB:L.*]]	# encoding: [0xc4,0x04,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+	lghrl	%r0, 0
+#CHECK: lghrl	%r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc4,0x04,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+	lghrl	%r0, 0xfffffffe
 
 #CHECK: lghrl	%r0, foo                # encoding: [0xc4,0x04,A,A,A,A]
 # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

Modified: llvm/trunk/test/MC/SystemZ/insn-lgrl-01.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/SystemZ/insn-lgrl-01.s?rev=181773&r1=181772&r2=181773&view=diff
==============================================================================
--- llvm/trunk/test/MC/SystemZ/insn-lgrl-01.s (original)
+++ llvm/trunk/test/MC/SystemZ/insn-lgrl-01.s Tue May 14 04:47:26 2013
@@ -1,10 +1,17 @@
 # RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
 
-#CHECK: lgrl	%r0, 2864434397         # encoding: [0xc4,0x08,0x55,0x5d,0xe6,0x6e]
-#CHECK: lgrl	%r15, 2864434397        # encoding: [0xc4,0xf8,0x55,0x5d,0xe6,0x6e]
-
-	lgrl	%r0,0xaabbccdd
-	lgrl	%r15,0xaabbccdd
+#CHECK: lgrl	%r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x08,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+	lgrl	%r0, -0x100000000
+#CHECK: lgrl	%r0, .[[LAB:L.*]]-2	# encoding: [0xc4,0x08,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+	lgrl	%r0, -2
+#CHECK: lgrl	%r0, .[[LAB:L.*]]	# encoding: [0xc4,0x08,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+	lgrl	%r0, 0
+#CHECK: lgrl	%r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc4,0x08,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+	lgrl	%r0, 0xfffffffe
 
 #CHECK: lgrl	%r0, foo                # encoding: [0xc4,0x08,A,A,A,A]
 # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

Modified: llvm/trunk/test/MC/SystemZ/insn-lhrl-01.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/SystemZ/insn-lhrl-01.s?rev=181773&r1=181772&r2=181773&view=diff
==============================================================================
--- llvm/trunk/test/MC/SystemZ/insn-lhrl-01.s (original)
+++ llvm/trunk/test/MC/SystemZ/insn-lhrl-01.s Tue May 14 04:47:26 2013
@@ -1,10 +1,17 @@
 # RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
 
-#CHECK: lhrl	%r0, 2864434397         # encoding: [0xc4,0x05,0x55,0x5d,0xe6,0x6e]
-#CHECK: lhrl	%r15, 2864434397        # encoding: [0xc4,0xf5,0x55,0x5d,0xe6,0x6e]
-
-	lhrl	%r0,0xaabbccdd
-	lhrl	%r15,0xaabbccdd
+#CHECK: lhrl	%r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x05,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+	lhrl	%r0, -0x100000000
+#CHECK: lhrl	%r0, .[[LAB:L.*]]-2	# encoding: [0xc4,0x05,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+	lhrl	%r0, -2
+#CHECK: lhrl	%r0, .[[LAB:L.*]]	# encoding: [0xc4,0x05,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+	lhrl	%r0, 0
+#CHECK: lhrl	%r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc4,0x05,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+	lhrl	%r0, 0xfffffffe
 
 #CHECK: lhrl	%r0, foo                # encoding: [0xc4,0x05,A,A,A,A]
 # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

Modified: llvm/trunk/test/MC/SystemZ/insn-llgfrl-01.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/SystemZ/insn-llgfrl-01.s?rev=181773&r1=181772&r2=181773&view=diff
==============================================================================
--- llvm/trunk/test/MC/SystemZ/insn-llgfrl-01.s (original)
+++ llvm/trunk/test/MC/SystemZ/insn-llgfrl-01.s Tue May 14 04:47:26 2013
@@ -1,10 +1,17 @@
 # RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
 
-#CHECK: llgfrl	%r0, 2864434397         # encoding: [0xc4,0x0e,0x55,0x5d,0xe6,0x6e]
-#CHECK: llgfrl	%r15, 2864434397        # encoding: [0xc4,0xfe,0x55,0x5d,0xe6,0x6e]
-
-	llgfrl	%r0,0xaabbccdd
-	llgfrl	%r15,0xaabbccdd
+#CHECK: llgfrl	%r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x0e,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+	llgfrl	%r0, -0x100000000
+#CHECK: llgfrl	%r0, .[[LAB:L.*]]-2	# encoding: [0xc4,0x0e,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+	llgfrl	%r0, -2
+#CHECK: llgfrl	%r0, .[[LAB:L.*]]	# encoding: [0xc4,0x0e,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+	llgfrl	%r0, 0
+#CHECK: llgfrl	%r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc4,0x0e,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+	llgfrl	%r0, 0xfffffffe
 
 #CHECK: llgfrl	%r0, foo                # encoding: [0xc4,0x0e,A,A,A,A]
 # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

Modified: llvm/trunk/test/MC/SystemZ/insn-llghrl-01.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/SystemZ/insn-llghrl-01.s?rev=181773&r1=181772&r2=181773&view=diff
==============================================================================
--- llvm/trunk/test/MC/SystemZ/insn-llghrl-01.s (original)
+++ llvm/trunk/test/MC/SystemZ/insn-llghrl-01.s Tue May 14 04:47:26 2013
@@ -1,10 +1,17 @@
 # RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
 
-#CHECK: llghrl	%r0, 2864434397         # encoding: [0xc4,0x06,0x55,0x5d,0xe6,0x6e]
-#CHECK: llghrl	%r15, 2864434397        # encoding: [0xc4,0xf6,0x55,0x5d,0xe6,0x6e]
-
-	llghrl	%r0,0xaabbccdd
-	llghrl	%r15,0xaabbccdd
+#CHECK: llghrl	%r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x06,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+	llghrl	%r0, -0x100000000
+#CHECK: llghrl	%r0, .[[LAB:L.*]]-2	# encoding: [0xc4,0x06,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+	llghrl	%r0, -2
+#CHECK: llghrl	%r0, .[[LAB:L.*]]	# encoding: [0xc4,0x06,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+	llghrl	%r0, 0
+#CHECK: llghrl	%r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc4,0x06,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+	llghrl	%r0, 0xfffffffe
 
 #CHECK: llghrl	%r0, foo                # encoding: [0xc4,0x06,A,A,A,A]
 # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

Modified: llvm/trunk/test/MC/SystemZ/insn-llhrl-01.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/SystemZ/insn-llhrl-01.s?rev=181773&r1=181772&r2=181773&view=diff
==============================================================================
--- llvm/trunk/test/MC/SystemZ/insn-llhrl-01.s (original)
+++ llvm/trunk/test/MC/SystemZ/insn-llhrl-01.s Tue May 14 04:47:26 2013
@@ -1,10 +1,17 @@
 # RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
 
-#CHECK: llhrl	%r0, 2864434397         # encoding: [0xc4,0x02,0x55,0x5d,0xe6,0x6e]
-#CHECK: llhrl	%r15, 2864434397        # encoding: [0xc4,0xf2,0x55,0x5d,0xe6,0x6e]
-
-	llhrl	%r0,0xaabbccdd
-	llhrl	%r15,0xaabbccdd
+#CHECK: llhrl	%r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x02,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+	llhrl	%r0, -0x100000000
+#CHECK: llhrl	%r0, .[[LAB:L.*]]-2	# encoding: [0xc4,0x02,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+	llhrl	%r0, -2
+#CHECK: llhrl	%r0, .[[LAB:L.*]]	# encoding: [0xc4,0x02,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+	llhrl	%r0, 0
+#CHECK: llhrl	%r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc4,0x02,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+	llhrl	%r0, 0xfffffffe
 
 #CHECK: llhrl	%r0, foo                # encoding: [0xc4,0x02,A,A,A,A]
 # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

Modified: llvm/trunk/test/MC/SystemZ/insn-lrl-01.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/SystemZ/insn-lrl-01.s?rev=181773&r1=181772&r2=181773&view=diff
==============================================================================
--- llvm/trunk/test/MC/SystemZ/insn-lrl-01.s (original)
+++ llvm/trunk/test/MC/SystemZ/insn-lrl-01.s Tue May 14 04:47:26 2013
@@ -1,10 +1,17 @@
 # RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
 
-#CHECK: lrl	%r0, 2864434397         # encoding: [0xc4,0x0d,0x55,0x5d,0xe6,0x6e]
-#CHECK: lrl	%r15, 2864434397        # encoding: [0xc4,0xfd,0x55,0x5d,0xe6,0x6e]
-
-	lrl	%r0,0xaabbccdd
-	lrl	%r15,0xaabbccdd
+#CHECK: lrl	%r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x0d,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+	lrl	%r0, -0x100000000
+#CHECK: lrl	%r0, .[[LAB:L.*]]-2	# encoding: [0xc4,0x0d,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+	lrl	%r0, -2
+#CHECK: lrl	%r0, .[[LAB:L.*]]	# encoding: [0xc4,0x0d,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+	lrl	%r0, 0
+#CHECK: lrl	%r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc4,0x0d,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+	lrl	%r0, 0xfffffffe
 
 #CHECK: lrl	%r0, foo                # encoding: [0xc4,0x0d,A,A,A,A]
 # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

Modified: llvm/trunk/test/MC/SystemZ/insn-stgrl-01.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/SystemZ/insn-stgrl-01.s?rev=181773&r1=181772&r2=181773&view=diff
==============================================================================
--- llvm/trunk/test/MC/SystemZ/insn-stgrl-01.s (original)
+++ llvm/trunk/test/MC/SystemZ/insn-stgrl-01.s Tue May 14 04:47:26 2013
@@ -1,10 +1,17 @@
 # RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
 
-#CHECK: stgrl	%r0, 2864434397         # encoding: [0xc4,0x0b,0x55,0x5d,0xe6,0x6e]
-#CHECK: stgrl	%r15, 2864434397        # encoding: [0xc4,0xfb,0x55,0x5d,0xe6,0x6e]
-
-	stgrl	%r0,0xaabbccdd
-	stgrl	%r15,0xaabbccdd
+#CHECK: stgrl	%r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x0b,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+	stgrl	%r0, -0x100000000
+#CHECK: stgrl	%r0, .[[LAB:L.*]]-2	# encoding: [0xc4,0x0b,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+	stgrl	%r0, -2
+#CHECK: stgrl	%r0, .[[LAB:L.*]]	# encoding: [0xc4,0x0b,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+	stgrl	%r0, 0
+#CHECK: stgrl	%r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc4,0x0b,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+	stgrl	%r0, 0xfffffffe
 
 #CHECK: stgrl	%r0, foo                # encoding: [0xc4,0x0b,A,A,A,A]
 # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

Modified: llvm/trunk/test/MC/SystemZ/insn-sthrl-01.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/SystemZ/insn-sthrl-01.s?rev=181773&r1=181772&r2=181773&view=diff
==============================================================================
--- llvm/trunk/test/MC/SystemZ/insn-sthrl-01.s (original)
+++ llvm/trunk/test/MC/SystemZ/insn-sthrl-01.s Tue May 14 04:47:26 2013
@@ -1,10 +1,17 @@
 # RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
 
-#CHECK: sthrl	%r0, 2864434397         # encoding: [0xc4,0x07,0x55,0x5d,0xe6,0x6e]
-#CHECK: sthrl	%r15, 2864434397        # encoding: [0xc4,0xf7,0x55,0x5d,0xe6,0x6e]
-
-	sthrl	%r0,0xaabbccdd
-	sthrl	%r15,0xaabbccdd
+#CHECK: sthrl	%r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x07,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+	sthrl	%r0, -0x100000000
+#CHECK: sthrl	%r0, .[[LAB:L.*]]-2	# encoding: [0xc4,0x07,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+	sthrl	%r0, -2
+#CHECK: sthrl	%r0, .[[LAB:L.*]]	# encoding: [0xc4,0x07,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+	sthrl	%r0, 0
+#CHECK: sthrl	%r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc4,0x07,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+	sthrl	%r0, 0xfffffffe
 
 #CHECK: sthrl	%r0, foo                # encoding: [0xc4,0x07,A,A,A,A]
 # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL

Modified: llvm/trunk/test/MC/SystemZ/insn-strl-01.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/SystemZ/insn-strl-01.s?rev=181773&r1=181772&r2=181773&view=diff
==============================================================================
--- llvm/trunk/test/MC/SystemZ/insn-strl-01.s (original)
+++ llvm/trunk/test/MC/SystemZ/insn-strl-01.s Tue May 14 04:47:26 2013
@@ -1,10 +1,17 @@
 # RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
 
-#CHECK: strl	%r0, 2864434397         # encoding: [0xc4,0x0f,0x55,0x5d,0xe6,0x6e]
-#CHECK: strl	%r15, 2864434397        # encoding: [0xc4,0xff,0x55,0x5d,0xe6,0x6e]
-
-	strl	%r0,0xaabbccdd
-	strl	%r15,0xaabbccdd
+#CHECK: strl	%r0, .[[LAB:L.*]]-4294967296 # encoding: [0xc4,0x0f,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-4294967296)+2, kind: FK_390_PC32DBL
+	strl	%r0, -0x100000000
+#CHECK: strl	%r0, .[[LAB:L.*]]-2	# encoding: [0xc4,0x0f,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]-2)+2, kind: FK_390_PC32DBL
+	strl	%r0, -2
+#CHECK: strl	%r0, .[[LAB:L.*]]	# encoding: [0xc4,0x0f,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: .[[LAB]]+2, kind: FK_390_PC32DBL
+	strl	%r0, 0
+#CHECK: strl	%r0, .[[LAB:L.*]]+4294967294 # encoding: [0xc4,0x0f,A,A,A,A]
+#CHECK:  fixup A - offset: 2, value: (.[[LAB]]+4294967294)+2, kind: FK_390_PC32DBL
+	strl	%r0, 0xfffffffe
 
 #CHECK: strl	%r0, foo                # encoding: [0xc4,0x0f,A,A,A,A]
 # fixup A - offset: 2, value: foo+2, kind: FK_390_PC32DBL





More information about the llvm-commits mailing list