diff --git a/lib/Target/SystemZ/SystemZInstrInfo.cpp b/lib/Target/SystemZ/SystemZInstrInfo.cpp
index e3e5e0d..82018e8 100644
--- a/lib/Target/SystemZ/SystemZInstrInfo.cpp
+++ b/lib/Target/SystemZ/SystemZInstrInfo.cpp
@@ -323,3 +323,47 @@
 
   return get(Opc);
 }
+
+const TargetInstrDesc&
+SystemZInstrInfo::getLongDispOpc(unsigned Opc) const {
+  switch (Opc) {
+  case SystemZ::MOV32mr:
+    Opc = SystemZ::MOV32mry;
+    break;
+  case SystemZ::MOV32rm:
+    Opc = SystemZ::MOV32rmy;
+    break;
+  case SystemZ::MOVSX32rm16:
+    Opc = SystemZ::MOVSX32rm16y;
+    break;
+  case SystemZ::MOV32m8r:
+    Opc = SystemZ::MOV32m8ry;
+    break;
+  case SystemZ::MOV32m16r:
+    Opc = SystemZ::MOV32m16ry;
+    break;
+  case SystemZ::MOV64m8r:
+    Opc = SystemZ::MOV64m8ry;
+    break;
+  case SystemZ::MOV64m16r:
+    Opc = SystemZ::MOV64m16ry;
+    break;
+  case SystemZ::MOV64m32r:
+    Opc = SystemZ::MOV64m32ry;
+    break;
+  case SystemZ::MUL32rm:
+    Opc = SystemZ::MUL32rmy;
+    break;
+  case SystemZ::CMP32rm:
+    Opc = SystemZ::CMP32rmy;
+    break;
+  case SystemZ::UCMP32rm:
+    Opc = SystemZ::UCMP32rmy;
+    break;
+  default:
+    break;
+  }
+
+  return get(Opc);
+}
+
diff --git a/lib/Target/SystemZ/SystemZInstrInfo.h b/lib/Target/SystemZ/SystemZInstrInfo.h
index 2359014..541c38b 100644
--- a/lib/Target/SystemZ/SystemZInstrInfo.h
+++ b/lib/Target/SystemZ/SystemZInstrInfo.h
@@ -67,6 +67,7 @@
                              const SmallVectorImpl<MachineOperand> &Cond) const;
 
   const TargetInstrDesc& getBrCond(SystemZCC::CondCodes CC) const;
+  const TargetInstrDesc& getLongDispOpc(unsigned Opc) const;
 };
 
 }
diff --git a/lib/Target/SystemZ/SystemZRegisterInfo.cpp b/lib/Target/SystemZ/SystemZRegisterInfo.cpp
index c30d5ef..a65cec1 100644
--- a/lib/Target/SystemZ/SystemZRegisterInfo.cpp
+++ b/lib/Target/SystemZ/SystemZRegisterInfo.cpp
@@ -12,6 +12,7 @@
 //===----------------------------------------------------------------------===//
 
 #include "SystemZ.h"
+#include "SystemZInstrInfo.h"
 #include "SystemZMachineFunctionInfo.h"
 #include "SystemZRegisterInfo.h"
 #include "SystemZSubtarget.h"
@@ -27,7 +28,7 @@
 using namespace llvm;
 
 SystemZRegisterInfo::SystemZRegisterInfo(SystemZTargetMachine &tm,
-                                         const TargetInstrInfo &tii)
+                                         const SystemZInstrInfo &tii)
   : SystemZGenRegisterInfo(SystemZ::ADJCALLSTACKUP, SystemZ::ADJCALLSTACKDOWN),
     TM(tm), TII(tii) {
 }
@@ -124,9 +125,14 @@
   // displacement field.
   MI.getOperand(i).ChangeToRegister(BasePtr, false);
 
-  // Offset is a 20-bit integer.
+  // Offset is a either 12-bit unsigned or 20-bit signed integer.
   // FIXME: handle "too long" displacements.
   int Offset = getFrameIndexOffset(MF, FrameIndex) + MI.getOperand(i+1).getImm();
+
+  // Check whether displacement is too long to fit into 12 bit zext field.
+  if (Offset < 0 || Offset >= 4096)
+    MI.setDesc(TII.getLongDispOpc(MI.getOpcode()));
+
   MI.getOperand(i+1).ChangeToImmediate(Offset);
 }
 
diff --git a/lib/Target/SystemZ/SystemZRegisterInfo.h b/lib/Target/SystemZ/SystemZRegisterInfo.h
index 60ea036..21067c5 100644
--- a/lib/Target/SystemZ/SystemZRegisterInfo.h
+++ b/lib/Target/SystemZ/SystemZRegisterInfo.h
@@ -29,14 +29,14 @@
 }
 
 class SystemZSubtarget;
-class TargetInstrInfo;
+class SystemZInstrInfo;
 class Type;
 
 struct SystemZRegisterInfo : public SystemZGenRegisterInfo {
   SystemZTargetMachine &TM;
-  const TargetInstrInfo &TII;
+  const SystemZInstrInfo &TII;
 
-  SystemZRegisterInfo(SystemZTargetMachine &tm, const TargetInstrInfo &tii);
+  SystemZRegisterInfo(SystemZTargetMachine &tm, const SystemZInstrInfo &tii);
 
   /// Code Generation virtual methods...
   const unsigned *getCalleeSavedRegs(const MachineFunction *MF = 0) const;
