[llvm] r265689 - [SystemZ] Implement conditional returns

Oliver Stannard via llvm-commits llvm-commits at lists.llvm.org
Fri Apr 15 06:22:03 PDT 2016


Hi Ulrich,

This commit seems to be causing some of the tests in
test/CodeGen/SystemZ/Large/ to fail. These are marked as long tests, so they
will only be run if you call lit.py with the run_long_tests parameter, for
example:

$ ../llvm/utils/lit/lit.py -sv --param llvm_site_config=test/lit.site.cfg \
>   --param run_long_tests=true ../llvm/test/CodeGen/SystemZ/Large
... snip ...
********************
Testing Time: 0.60s
********************
Failing Tests (9):
    LLVM :: CodeGen/SystemZ/Large/branch-range-01.py
    LLVM :: CodeGen/SystemZ/Large/branch-range-03.py
    LLVM :: CodeGen/SystemZ/Large/branch-range-04.py
    LLVM :: CodeGen/SystemZ/Large/branch-range-05.py
    LLVM :: CodeGen/SystemZ/Large/branch-range-06.py
    LLVM :: CodeGen/SystemZ/Large/branch-range-09.py
    LLVM :: CodeGen/SystemZ/Large/branch-range-10.py
    LLVM :: CodeGen/SystemZ/Large/branch-range-11.py
    LLVM :: CodeGen/SystemZ/Large/branch-range-12.py

  Expected Passes    : 5
  Unexpected Failures: 9

I guess these tests just need updating, as you did for others in
test/CodeGen/SystemZ, but I don't know enough about SystemZ to do it myself.

Regards,
Oliver

> -----Original Message-----
> From: llvm-commits [mailto:llvm-commits-bounces at lists.llvm.org] On Behalf
> Of Ulrich Weigand via llvm-commits
> Sent: 07 April 2016 17:12
> To: llvm-commits at lists.llvm.org
> Subject: [llvm] r265689 - [SystemZ] Implement conditional returns
>
> Author: uweigand
> Date: Thu Apr  7 11:11:44 2016
> New Revision: 265689
>
> URL: http://llvm.org/viewvc/llvm-project?rev=265689&view=rev
> Log:
> [SystemZ] Implement conditional returns
>
> Return is now considered a predicable instruction, and is converted
> to a newly-added CondReturn (which maps to BCR to %r14) instruction by
> the if conversion pass.
>
> Also, fused compare-and-branch transform knows about conditional
> returns, emitting the proper fused instructions for them.
>
> This transform triggers on a *lot* of tests, hence the huge diffstat.
> The changes are mostly jX to br %r14 -> bXr %r14.
>
> Author: koriakin
>
> Differential Revision: http://reviews.llvm.org/D17339
>
>
> Modified:
>     llvm/trunk/lib/Target/SystemZ/SystemZAsmPrinter.cpp
>     llvm/trunk/lib/Target/SystemZ/SystemZElimCompare.cpp
>     llvm/trunk/lib/Target/SystemZ/SystemZInstrInfo.cpp
>     llvm/trunk/lib/Target/SystemZ/SystemZInstrInfo.h
>     llvm/trunk/lib/Target/SystemZ/SystemZInstrInfo.td
>     llvm/trunk/lib/Target/SystemZ/SystemZTargetMachine.cpp
>     llvm/trunk/test/CodeGen/SystemZ/atomicrmw-minmax-03.ll
>     llvm/trunk/test/CodeGen/SystemZ/atomicrmw-minmax-04.ll
>     llvm/trunk/test/CodeGen/SystemZ/branch-05.ll
>     llvm/trunk/test/CodeGen/SystemZ/cond-store-01.ll
>     llvm/trunk/test/CodeGen/SystemZ/cond-store-02.ll
>     llvm/trunk/test/CodeGen/SystemZ/cond-store-03.ll
>     llvm/trunk/test/CodeGen/SystemZ/cond-store-04.ll
>     llvm/trunk/test/CodeGen/SystemZ/cond-store-05.ll
>     llvm/trunk/test/CodeGen/SystemZ/cond-store-06.ll
>     llvm/trunk/test/CodeGen/SystemZ/fp-cmp-01.ll
>     llvm/trunk/test/CodeGen/SystemZ/fp-cmp-02.ll
>     llvm/trunk/test/CodeGen/SystemZ/fp-cmp-03.ll
>     llvm/trunk/test/CodeGen/SystemZ/fp-cmp-04.ll
>     llvm/trunk/test/CodeGen/SystemZ/fp-cmp-05.ll
>     llvm/trunk/test/CodeGen/SystemZ/fp-move-09.ll
>     llvm/trunk/test/CodeGen/SystemZ/fp-move-10.ll
>     llvm/trunk/test/CodeGen/SystemZ/fp-sqrt-01.ll
>     llvm/trunk/test/CodeGen/SystemZ/fp-sqrt-02.ll
>     llvm/trunk/test/CodeGen/SystemZ/htm-intrinsics.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-01.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-02.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-03.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-04.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-05.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-06.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-07.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-08.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-09.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-10.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-11.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-12.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-13.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-14.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-15.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-16.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-17.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-18.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-19.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-20.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-21.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-22.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-23.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-24.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-25.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-26.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-27.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-28.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-29.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-30.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-31.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-32.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-33.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-34.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-35.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-36.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-37.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-38.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-39.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-40.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-41.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-42.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-43.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-44.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-46.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-47.ll
>     llvm/trunk/test/CodeGen/SystemZ/int-cmp-48.ll
>     llvm/trunk/test/CodeGen/SystemZ/memchr-01.ll
>     llvm/trunk/test/CodeGen/SystemZ/memchr-02.ll
>     llvm/trunk/test/CodeGen/SystemZ/memcmp-01.ll
>     llvm/trunk/test/CodeGen/SystemZ/memcmp-02.ll
>     llvm/trunk/test/CodeGen/SystemZ/strcmp-01.ll
>     llvm/trunk/test/CodeGen/SystemZ/strcmp-02.ll
>     llvm/trunk/test/CodeGen/SystemZ/vec-intrinsics.ll
>
> Modified: llvm/trunk/lib/Target/SystemZ/SystemZAsmPrinter.cpp
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/lib/Target/SystemZ/SystemZAsmPrinter.cpp?rev=265689&r1=
> 265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/lib/Target/SystemZ/SystemZAsmPrinter.cpp (original)
> +++ llvm/trunk/lib/Target/SystemZ/SystemZAsmPrinter.cpp Thu Apr  7
> 11:11:44 2016
> @@ -109,6 +109,85 @@ void SystemZAsmPrinter::EmitInstruction(
>      LoweredMI = MCInstBuilder(SystemZ::BR).addReg(SystemZ::R14D);
>      break;
>
> +  case SystemZ::CondReturn:
> +    LoweredMI = MCInstBuilder(SystemZ::BCR)
> +      .addImm(MI->getOperand(0).getImm())
> +      .addImm(MI->getOperand(1).getImm())
> +      .addReg(SystemZ::R14D);
> +    break;
> +
> +  case SystemZ::CRBReturn:
> +    LoweredMI = MCInstBuilder(SystemZ::CRB)
> +      .addReg(MI->getOperand(0).getReg())
> +      .addReg(MI->getOperand(1).getReg())
> +      .addImm(MI->getOperand(2).getImm())
> +      .addReg(SystemZ::R14D)
> +      .addImm(0);
> +    break;
> +
> +  case SystemZ::CGRBReturn:
> +    LoweredMI = MCInstBuilder(SystemZ::CGRB)
> +      .addReg(MI->getOperand(0).getReg())
> +      .addReg(MI->getOperand(1).getReg())
> +      .addImm(MI->getOperand(2).getImm())
> +      .addReg(SystemZ::R14D)
> +      .addImm(0);
> +    break;
> +
> +  case SystemZ::CIBReturn:
> +    LoweredMI = MCInstBuilder(SystemZ::CIB)
> +      .addReg(MI->getOperand(0).getReg())
> +      .addImm(MI->getOperand(1).getImm())
> +      .addImm(MI->getOperand(2).getImm())
> +      .addReg(SystemZ::R14D)
> +      .addImm(0);
> +    break;
> +
> +  case SystemZ::CGIBReturn:
> +    LoweredMI = MCInstBuilder(SystemZ::CGIB)
> +      .addReg(MI->getOperand(0).getReg())
> +      .addImm(MI->getOperand(1).getImm())
> +      .addImm(MI->getOperand(2).getImm())
> +      .addReg(SystemZ::R14D)
> +      .addImm(0);
> +    break;
> +
> +  case SystemZ::CLRBReturn:
> +    LoweredMI = MCInstBuilder(SystemZ::CLRB)
> +      .addReg(MI->getOperand(0).getReg())
> +      .addReg(MI->getOperand(1).getReg())
> +      .addImm(MI->getOperand(2).getImm())
> +      .addReg(SystemZ::R14D)
> +      .addImm(0);
> +    break;
> +
> +  case SystemZ::CLGRBReturn:
> +    LoweredMI = MCInstBuilder(SystemZ::CLGRB)
> +      .addReg(MI->getOperand(0).getReg())
> +      .addReg(MI->getOperand(1).getReg())
> +      .addImm(MI->getOperand(2).getImm())
> +      .addReg(SystemZ::R14D)
> +      .addImm(0);
> +    break;
> +
> +  case SystemZ::CLIBReturn:
> +    LoweredMI = MCInstBuilder(SystemZ::CLIB)
> +      .addReg(MI->getOperand(0).getReg())
> +      .addImm(MI->getOperand(1).getImm())
> +      .addImm(MI->getOperand(2).getImm())
> +      .addReg(SystemZ::R14D)
> +      .addImm(0);
> +    break;
> +
> +  case SystemZ::CLGIBReturn:
> +    LoweredMI = MCInstBuilder(SystemZ::CLGIB)
> +      .addReg(MI->getOperand(0).getReg())
> +      .addImm(MI->getOperand(1).getImm())
> +      .addImm(MI->getOperand(2).getImm())
> +      .addReg(SystemZ::R14D)
> +      .addImm(0);
> +    break;
> +
>    case SystemZ::CallBRASL:
>      LoweredMI = MCInstBuilder(SystemZ::BRASL)
>        .addReg(SystemZ::R14D)
>
> Modified: llvm/trunk/lib/Target/SystemZ/SystemZElimCompare.cpp
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/lib/Target/SystemZ/SystemZElimCompare.cpp?rev=265689&r1
> =265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/lib/Target/SystemZ/SystemZElimCompare.cpp (original)
> +++ llvm/trunk/lib/Target/SystemZ/SystemZElimCompare.cpp Thu Apr  7
> 11:11:44 2016
> @@ -380,17 +380,26 @@ optimizeCompareZero(MachineInstr *Compar
>  bool SystemZElimCompare::
>  fuseCompareAndBranch(MachineInstr *Compare,
>                       SmallVectorImpl<MachineInstr *> &CCUsers) {
> -  // See whether we have a comparison that can be fused.
> -  unsigned FusedOpcode = TII->getCompareAndBranch(Compare->getOpcode(),
> -                                                  Compare);
> -  if (!FusedOpcode)
> -    return false;
> -
>    // See whether we have a single branch with which to fuse.
>    if (CCUsers.size() != 1)
>      return false;
>    MachineInstr *Branch = CCUsers[0];
> -  if (Branch->getOpcode() != SystemZ::BRC)
> +  SystemZII::CompareAndBranchType Type;
> +  switch (Branch->getOpcode()) {
> +  case SystemZ::BRC:
> +    Type = SystemZII::CompareAndBranch;
> +    break;
> +  case SystemZ::CondReturn:
> +    Type = SystemZII::CompareAndReturn;
> +    break;
> +  default:
> +    return false;
> +  }
> +
> +  // See whether we have a comparison that can be fused.
> +  unsigned FusedOpcode = TII->getCompareAndBranch(Compare->getOpcode(),
> +                                                  Type, Compare);
> +  if (!FusedOpcode)
>      return false;
>
>    // Make sure that the operands are available at the branch.
> @@ -403,28 +412,37 @@ fuseCompareAndBranch(MachineInstr *Compa
>          (SrcReg2 && MBBI->modifiesRegister(SrcReg2, TRI)))
>        return false;
>
> -  // Read the branch mask and target.
> +  // Read the branch mask and target (if applicable).
>    MachineOperand CCMask(MBBI->getOperand(1));
> -  MachineOperand Target(MBBI->getOperand(2));
>    assert((CCMask.getImm() & ~SystemZ::CCMASK_ICMP) == 0 &&
>           "Invalid condition-code mask for integer comparison");
> +  // This is only valid for CompareAndBranch.
> +  MachineOperand Target(MBBI->getOperand(
> +    Type == SystemZII::CompareAndBranch ? 2 : 0));
>
>    // Clear out all current operands.
>    int CCUse = MBBI->findRegisterUseOperandIdx(SystemZ::CC, false, TRI);
> -  assert(CCUse >= 0 && "BRC must use CC");
> +  assert(CCUse >= 0 && "BRC/BCR must use CC");
>    Branch->RemoveOperand(CCUse);
> -  Branch->RemoveOperand(2);
> +  if (Type == SystemZII::CompareAndBranch)
> +    Branch->RemoveOperand(2);
>    Branch->RemoveOperand(1);
>    Branch->RemoveOperand(0);
>
>    // Rebuild Branch as a fused compare and branch.
>    Branch->setDesc(TII->get(FusedOpcode));
> -  MachineInstrBuilder(*Branch->getParent()->getParent(), Branch)
> -    .addOperand(Compare->getOperand(0))
> -    .addOperand(Compare->getOperand(1))
> -    .addOperand(CCMask)
> -    .addOperand(Target)
> -    .addReg(SystemZ::CC, RegState::ImplicitDefine);
> +  MachineInstrBuilder MIB(*Branch->getParent()->getParent(), Branch);
> +  MIB.addOperand(Compare->getOperand(0))
> +     .addOperand(Compare->getOperand(1))
> +     .addOperand(CCMask);
> +
> +  if (Type == SystemZII::CompareAndBranch) {
> +    // Only conditional branches define CC, as they may be converted back
> +    // to a non-fused branch because of a long displacement.  Conditional
> +    // returns don't have that problem.
> +    MIB.addOperand(Target)
> +       .addReg(SystemZ::CC, RegState::ImplicitDefine);
> +  }
>
>    // Clear any intervening kills of SrcReg and SrcReg2.
>    MBBI = Compare;
>
> Modified: llvm/trunk/lib/Target/SystemZ/SystemZInstrInfo.cpp
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/lib/Target/SystemZ/SystemZInstrInfo.cpp?rev=265689&r1=2
> 65688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/lib/Target/SystemZ/SystemZInstrInfo.cpp (original)
> +++ llvm/trunk/lib/Target/SystemZ/SystemZInstrInfo.cpp Thu Apr  7 11:11:44
> 2016
> @@ -508,13 +508,24 @@ static unsigned getConditionalMove(unsig
>
>  bool SystemZInstrInfo::isPredicable(MachineInstr &MI) const {
>    unsigned Opcode = MI.getOpcode();
> -  return STI.hasLoadStoreOnCond() && getConditionalMove(Opcode);
> +  if (STI.hasLoadStoreOnCond() && getConditionalMove(Opcode))
> +    return true;
> +  if (Opcode == SystemZ::Return)
> +    return true;
> +  return false;
>  }
>
>  bool SystemZInstrInfo::
>  isProfitableToIfCvt(MachineBasicBlock &MBB,
>                      unsigned NumCycles, unsigned ExtraPredCycles,
>                      BranchProbability Probability) const {
> +  // Avoid using conditional returns at the end of a loop (since then
> +  // we'd need to emit an unconditional branch to the beginning anyway,
> +  // making the loop body longer).  This doesn't apply for low-
> probability
> +  // loops (eg. compare-and-swap retry), so just decide based on branch
> +  // probability instead of looping structure.
> +  if (MBB.succ_empty() && Probability < BranchProbability(1, 8))
> +    return false;
>    // For now only convert single instructions.
>    return NumCycles == 1;
>  }
> @@ -529,6 +540,13 @@ isProfitableToIfCvt(MachineBasicBlock &T
>    return false;
>  }
>
> +bool SystemZInstrInfo::
> +isProfitableToDupForIfCvt(MachineBasicBlock &MBB, unsigned NumCycles,
> +                          BranchProbability Probability) const {
> +  // For now only duplicate single instructions.
> +  return NumCycles == 1;
> +}
> +
>  bool SystemZInstrInfo::PredicateInstruction(
>      MachineInstr &MI, ArrayRef<MachineOperand> Pred) const {
>    assert(Pred.size() == 2 && "Invalid condition");
> @@ -546,6 +564,13 @@ bool SystemZInstrInfo::PredicateInstruct
>        return true;
>      }
>    }
> +  if (Opcode == SystemZ::Return) {
> +    MI.setDesc(get(SystemZ::CondReturn));
> +    MachineInstrBuilder(*MI.getParent()->getParent(), MI)
> +      .addImm(CCValid).addImm(CCMask)
> +      .addReg(SystemZ::CC, RegState::Implicit);
> +    return true;
> +  }
>    return false;
>  }
>
> @@ -1253,24 +1278,62 @@ bool SystemZInstrInfo::isRxSBGMask(uint6
>  }
>
>  unsigned SystemZInstrInfo::getCompareAndBranch(unsigned Opcode,
> +
> SystemZII::CompareAndBranchType Type,
>                                                 const MachineInstr *MI)
> const {
>    switch (Opcode) {
> -  case SystemZ::CR:
> -    return SystemZ::CRJ;
> -  case SystemZ::CGR:
> -    return SystemZ::CGRJ;
>    case SystemZ::CHI:
> -    return MI && isInt<8>(MI->getOperand(1).getImm()) ? SystemZ::CIJ : 0;
>    case SystemZ::CGHI:
> -    return MI && isInt<8>(MI->getOperand(1).getImm()) ? SystemZ::CGIJ :
> 0;
> -  case SystemZ::CLR:
> -    return SystemZ::CLRJ;
> -  case SystemZ::CLGR:
> -    return SystemZ::CLGRJ;
> +    if (!(MI && isInt<8>(MI->getOperand(1).getImm())))
> +      return 0;
> +    break;
>    case SystemZ::CLFI:
> -    return MI && isUInt<8>(MI->getOperand(1).getImm()) ? SystemZ::CLIJ :
> 0;
>    case SystemZ::CLGFI:
> -    return MI && isUInt<8>(MI->getOperand(1).getImm()) ? SystemZ::CLGIJ :
> 0;
> +    if (!(MI && isUInt<8>(MI->getOperand(1).getImm())))
> +      return 0;
> +  }
> +  switch (Type) {
> +  case SystemZII::CompareAndBranch:
> +    switch (Opcode) {
> +    case SystemZ::CR:
> +      return SystemZ::CRJ;
> +    case SystemZ::CGR:
> +      return SystemZ::CGRJ;
> +    case SystemZ::CHI:
> +      return SystemZ::CIJ;
> +    case SystemZ::CGHI:
> +      return SystemZ::CGIJ;
> +    case SystemZ::CLR:
> +      return SystemZ::CLRJ;
> +    case SystemZ::CLGR:
> +      return SystemZ::CLGRJ;
> +    case SystemZ::CLFI:
> +      return SystemZ::CLIJ;
> +    case SystemZ::CLGFI:
> +      return SystemZ::CLGIJ;
> +    default:
> +      return 0;
> +    }
> +  case SystemZII::CompareAndReturn:
> +    switch (Opcode) {
> +    case SystemZ::CR:
> +      return SystemZ::CRBReturn;
> +    case SystemZ::CGR:
> +      return SystemZ::CGRBReturn;
> +    case SystemZ::CHI:
> +      return SystemZ::CIBReturn;
> +    case SystemZ::CGHI:
> +      return SystemZ::CGIBReturn;
> +    case SystemZ::CLR:
> +      return SystemZ::CLRBReturn;
> +    case SystemZ::CLGR:
> +      return SystemZ::CLGRBReturn;
> +    case SystemZ::CLFI:
> +      return SystemZ::CLIBReturn;
> +    case SystemZ::CLGFI:
> +      return SystemZ::CLGIBReturn;
> +    default:
> +      return 0;
> +    }
>    default:
>      return 0;
>    }
>
> Modified: llvm/trunk/lib/Target/SystemZ/SystemZInstrInfo.h
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/lib/Target/SystemZ/SystemZInstrInfo.h?rev=265689&r1=265
> 688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/lib/Target/SystemZ/SystemZInstrInfo.h (original)
> +++ llvm/trunk/lib/Target/SystemZ/SystemZInstrInfo.h Thu Apr  7 11:11:44
> 2016
> @@ -111,6 +111,16 @@ struct Branch {
>           const MachineOperand *target)
>      : Type(type), CCValid(ccValid), CCMask(ccMask), Target(target) {}
>  };
> +// Kinds of branch in compare-and-branch instructions.  Together with
> type
> +// of the converted compare, this identifies the compare-and-branch
> +// instruction.
> +enum CompareAndBranchType {
> +  // Relative branch - CRJ etc.
> +  CompareAndBranch,
> +
> +  // Indirect branch, used for return - CRBReturn etc.
> +  CompareAndReturn
> +};
>  } // end namespace SystemZII
>
>  class SystemZSubtarget;
> @@ -165,6 +175,8 @@ public:
>                             MachineBasicBlock &FMBB,
>                             unsigned NumCyclesF, unsigned
> ExtraPredCyclesF,
>                             BranchProbability Probability) const override;
> +  bool isProfitableToDupForIfCvt(MachineBasicBlock &MBB, unsigned
> NumCycles,
> +                            BranchProbability Probability) const
> override;
>    bool PredicateInstruction(MachineInstr &MI,
>                              ArrayRef<MachineOperand> Pred) const
> override;
>    void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator
> MBBI,
> @@ -233,6 +245,7 @@ public:
>    // BRANCH exists, return the opcode for the latter, otherwise return 0.
>    // MI, if nonnull, is the compare instruction.
>    unsigned getCompareAndBranch(unsigned Opcode,
> +                               SystemZII::CompareAndBranchType Type,
>                                 const MachineInstr *MI = nullptr) const;
>
>    // Emit code before MBBI in MI to move immediate value Value into
>
> Modified: llvm/trunk/lib/Target/SystemZ/SystemZInstrInfo.td
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/lib/Target/SystemZ/SystemZInstrInfo.td?rev=265689&r1=26
> 5688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/lib/Target/SystemZ/SystemZInstrInfo.td (original)
> +++ llvm/trunk/lib/Target/SystemZ/SystemZInstrInfo.td Thu Apr  7 11:11:44
> 2016
> @@ -36,6 +36,22 @@ let hasSideEffects = 0 in {
>  let isReturn = 1, isTerminator = 1, isBarrier = 1, hasCtrlDep = 1 in
>    def Return : Alias<2, (outs), (ins), [(z_retflag)]>;
>
> +// A conditional return instruction (bcr <cond>, %r14).
> +let isReturn = 1, isTerminator = 1, hasCtrlDep = 1, CCMaskFirst = 1, Uses
> = [CC] in
> +  def CondReturn : Alias<2, (outs), (ins cond4:$valid, cond4:$R1), []>;
> +
> +// Fused compare and conditional returns.
> +let isReturn = 1, isTerminator = 1, hasCtrlDep = 1, Uses = [CC] in {
> +  def CRBReturn : Alias<6, (outs), (ins GR32:$R1, GR32:$R2, cond4:$M3),
> []>;
> +  def CGRBReturn : Alias<6, (outs), (ins GR64:$R1, GR64:$R2, cond4:$M3),
> []>;
> +  def CIBReturn : Alias<6, (outs), (ins GR32:$R1, imm32sx8:$I2,
> cond4:$M3), []>;
> +  def CGIBReturn : Alias<6, (outs), (ins GR64:$R1, imm64sx8:$I2,
> cond4:$M3), []>;
> +  def CLRBReturn : Alias<6, (outs), (ins GR32:$R1, GR32:$R2, cond4:$M3),
> []>;
> +  def CLGRBReturn : Alias<6, (outs), (ins GR64:$R1, GR64:$R2, cond4:$M3),
> []>;
> +  def CLIBReturn : Alias<6, (outs), (ins GR32:$R1, imm32zx8:$I2,
> cond4:$M3), []>;
> +  def CLGIBReturn : Alias<6, (outs), (ins GR64:$R1, imm64zx8:$I2,
> cond4:$M3), []>;
> +}
> +
>  // Unconditional branches.  R1 is the condition-code mask (all 1s).
>  let isBranch = 1, isTerminator = 1, isBarrier = 1, R1 = 15 in {
>    let isIndirectBranch = 1 in
> @@ -62,15 +78,20 @@ let isBranch = 1, isTerminator = 1, Uses
>                       [(z_br_ccmask cond4:$valid, cond4:$R1, bb:$I2)]>;
>      def BRCL : InstRIL<0xC04, (outs), (ins cond4:$valid, cond4:$R1,
>                                             brtarget32:$I2), "jg$R1\t$I2",
> []>;
> +    let isIndirectBranch = 1 in
> +      def BCR : InstRR<0x07, (outs), (ins cond4:$valid, cond4:$R1,
> GR64:$R2),
> +                       "b${R1}r\t$R2", []>;
>    }
>    def AsmBRC : InstRI<0xA74, (outs), (ins imm32zx4:$R1, brtarget16:$I2),
>                        "brc\t$R1, $I2", []>;
>    def AsmBRCL : InstRIL<0xC04, (outs), (ins imm32zx4:$R1,
> brtarget32:$I2),
>                          "brcl\t$R1, $I2", []>;
> -  def AsmBC : InstRX<0x47, (outs), (ins imm32zx4:$R1,
> bdxaddr12only:$XBD2),
> -                     "bc\t$R1, $XBD2", []>;
> -  def AsmBCR : InstRR<0x07, (outs), (ins imm32zx4:$R1, GR64:$R2),
> -                      "bcr\t$R1, $R2", []>;
> +  let isIndirectBranch = 1 in {
> +    def AsmBC : InstRX<0x47, (outs), (ins imm32zx4:$R1,
> bdxaddr12only:$XBD2),
> +                       "bc\t$R1, $XBD2", []>;
> +    def AsmBCR : InstRR<0x07, (outs), (ins imm32zx4:$R1, GR64:$R2),
> +                        "bcr\t$R1, $R2", []>;
> +  }
>  }
>
>  def AsmNop  : InstAlias<"nop\t$XBD", (AsmBC 0, bdxaddr12only:$XBD), 0>;
> @@ -110,30 +131,32 @@ multiclass CompareBranches<Operand ccmas
>      def LGIJ : InstRIEc<0xEC7D, (outs), (ins GR64:$R1, imm64zx8:$I2,
> ccmask:$M3,
>                                               brtarget16:$RI4),
>                          "clgij"##pos1##"\t$R1, $I2, "##pos2##"$RI4", []>;
> -    def RB  : InstRRS<0xECF6, (outs), (ins GR32:$R1, GR32:$R2,
> ccmask:$M3,
> -                                           bdaddr12only:$BD4),
> -                      "crb"##pos1##"\t$R1, $R2, "##pos2##"$BD4", []>;
> -    def GRB : InstRRS<0xECE4, (outs), (ins GR64:$R1, GR64:$R2,
> ccmask:$M3,
> -                                           bdaddr12only:$BD4),
> -                      "cgrb"##pos1##"\t$R1, $R2, "##pos2##"$BD4", []>;
> -    def IB  : InstRIS<0xECFE, (outs), (ins GR32:$R1, imm32sx8:$I2,
> ccmask:$M3,
> -                                           bdaddr12only:$BD4),
> -                      "cib"##pos1##"\t$R1, $I2, "##pos2##"$BD4", []>;
> -    def GIB : InstRIS<0xECFC, (outs), (ins GR64:$R1, imm64sx8:$I2,
> ccmask:$M3,
> -                                           bdaddr12only:$BD4),
> -                      "cgib"##pos1##"\t$R1, $I2, "##pos2##"$BD4", []>;
> -    def LRB  : InstRRS<0xECF7, (outs), (ins GR32:$R1, GR32:$R2,
> ccmask:$M3,
> -                                            bdaddr12only:$BD4),
> -                       "clrb"##pos1##"\t$R1, $R2, "##pos2##"$BD4", []>;
> -    def LGRB : InstRRS<0xECE5, (outs), (ins GR64:$R1, GR64:$R2,
> ccmask:$M3,
> -                                            bdaddr12only:$BD4),
> -                       "clgrb"##pos1##"\t$R1, $R2, "##pos2##"$BD4", []>;
> -    def LIB  : InstRIS<0xECFF, (outs), (ins GR32:$R1, imm32zx8:$I2,
> ccmask:$M3,
> -                                            bdaddr12only:$BD4),
> -                       "clib"##pos1##"\t$R1, $I2, "##pos2##"$BD4", []>;
> -    def LGIB : InstRIS<0xECFD, (outs), (ins GR64:$R1, imm64zx8:$I2,
> ccmask:$M3,
> -                                            bdaddr12only:$BD4),
> -                       "clgib"##pos1##"\t$R1, $I2, "##pos2##"$BD4", []>;
> +    let isIndirectBranch = 1 in {
> +      def RB  : InstRRS<0xECF6, (outs), (ins GR32:$R1, GR32:$R2,
> ccmask:$M3,
> +                                             bdaddr12only:$BD4),
> +                        "crb"##pos1##"\t$R1, $R2, "##pos2##"$BD4", []>;
> +      def GRB : InstRRS<0xECE4, (outs), (ins GR64:$R1, GR64:$R2,
> ccmask:$M3,
> +                                             bdaddr12only:$BD4),
> +                        "cgrb"##pos1##"\t$R1, $R2, "##pos2##"$BD4", []>;
> +      def IB  : InstRIS<0xECFE, (outs), (ins GR32:$R1, imm32sx8:$I2,
> ccmask:$M3,
> +                                             bdaddr12only:$BD4),
> +                        "cib"##pos1##"\t$R1, $I2, "##pos2##"$BD4", []>;
> +      def GIB : InstRIS<0xECFC, (outs), (ins GR64:$R1, imm64sx8:$I2,
> ccmask:$M3,
> +                                             bdaddr12only:$BD4),
> +                        "cgib"##pos1##"\t$R1, $I2, "##pos2##"$BD4", []>;
> +      def LRB  : InstRRS<0xECF7, (outs), (ins GR32:$R1, GR32:$R2,
> ccmask:$M3,
> +                                              bdaddr12only:$BD4),
> +                         "clrb"##pos1##"\t$R1, $R2, "##pos2##"$BD4", []>;
> +      def LGRB : InstRRS<0xECE5, (outs), (ins GR64:$R1, GR64:$R2,
> ccmask:$M3,
> +                                              bdaddr12only:$BD4),
> +                         "clgrb"##pos1##"\t$R1, $R2, "##pos2##"$BD4",
> []>;
> +      def LIB  : InstRIS<0xECFF, (outs), (ins GR32:$R1, imm32zx8:$I2,
> ccmask:$M3,
> +                                              bdaddr12only:$BD4),
> +                         "clib"##pos1##"\t$R1, $I2, "##pos2##"$BD4", []>;
> +      def LGIB : InstRIS<0xECFD, (outs), (ins GR64:$R1, imm64zx8:$I2,
> ccmask:$M3,
> +                                              bdaddr12only:$BD4),
> +                         "clgib"##pos1##"\t$R1, $I2, "##pos2##"$BD4",
> []>;
> +    }
>    }
>  }
>  let isCodeGenOnly = 1 in
> @@ -205,30 +228,32 @@ multiclass IntCondExtendedMnemonicA<bits
>      def CLGIJ : InstRIEc<0xEC7D, (outs), (ins GR64:$R1, imm64zx8:$I2,
>                                                brtarget16:$RI4),
>                           "clgij"##name##"\t$R1, $I2, $RI4", []>;
> -    def CRB  : InstRRS<0xECF6, (outs), (ins GR32:$R1, GR32:$R2,
> -                                            bdaddr12only:$BD4),
> -                       "crb"##name##"\t$R1, $R2, $BD4", []>;
> -    def CGRB : InstRRS<0xECE4, (outs), (ins GR64:$R1, GR64:$R2,
> -                                            bdaddr12only:$BD4),
> -                       "cgrb"##name##"\t$R1, $R2, $BD4", []>;
> -    def CIB  : InstRIS<0xECFE, (outs), (ins GR32:$R1, imm32sx8:$I2,
> -                                            bdaddr12only:$BD4),
> -                       "cib"##name##"\t$R1, $I2, $BD4", []>;
> -    def CGIB : InstRIS<0xECFC, (outs), (ins GR64:$R1, imm64sx8:$I2,
> -                                            bdaddr12only:$BD4),
> -                       "cgib"##name##"\t$R1, $I2, $BD4", []>;
> -    def CLRB  : InstRRS<0xECF7, (outs), (ins GR32:$R1, GR32:$R2,
> -                                            bdaddr12only:$BD4),
> -                        "clrb"##name##"\t$R1, $R2, $BD4", []>;
> -    def CLGRB : InstRRS<0xECE5, (outs), (ins GR64:$R1, GR64:$R2,
> -                                             bdaddr12only:$BD4),
> -                        "clgrb"##name##"\t$R1, $R2, $BD4", []>;
> -    def CLIB  : InstRIS<0xECFF, (outs), (ins GR32:$R1, imm32zx8:$I2,
> -                                             bdaddr12only:$BD4),
> -                        "clib"##name##"\t$R1, $I2, $BD4", []>;
> -    def CLGIB : InstRIS<0xECFD, (outs), (ins GR64:$R1, imm64zx8:$I2,
> -                                             bdaddr12only:$BD4),
> -                        "clgib"##name##"\t$R1, $I2, $BD4", []>;
> +    let isIndirectBranch = 1 in {
> +      def CRB  : InstRRS<0xECF6, (outs), (ins GR32:$R1, GR32:$R2,
> +                                              bdaddr12only:$BD4),
> +                         "crb"##name##"\t$R1, $R2, $BD4", []>;
> +      def CGRB : InstRRS<0xECE4, (outs), (ins GR64:$R1, GR64:$R2,
> +                                              bdaddr12only:$BD4),
> +                         "cgrb"##name##"\t$R1, $R2, $BD4", []>;
> +      def CIB  : InstRIS<0xECFE, (outs), (ins GR32:$R1, imm32sx8:$I2,
> +                                              bdaddr12only:$BD4),
> +                         "cib"##name##"\t$R1, $I2, $BD4", []>;
> +      def CGIB : InstRIS<0xECFC, (outs), (ins GR64:$R1, imm64sx8:$I2,
> +                                              bdaddr12only:$BD4),
> +                         "cgib"##name##"\t$R1, $I2, $BD4", []>;
> +      def CLRB  : InstRRS<0xECF7, (outs), (ins GR32:$R1, GR32:$R2,
> +                                              bdaddr12only:$BD4),
> +                          "clrb"##name##"\t$R1, $R2, $BD4", []>;
> +      def CLGRB : InstRRS<0xECE5, (outs), (ins GR64:$R1, GR64:$R2,
> +                                               bdaddr12only:$BD4),
> +                          "clgrb"##name##"\t$R1, $R2, $BD4", []>;
> +      def CLIB  : InstRIS<0xECFF, (outs), (ins GR32:$R1, imm32zx8:$I2,
> +                                               bdaddr12only:$BD4),
> +                          "clib"##name##"\t$R1, $I2, $BD4", []>;
> +      def CLGIB : InstRIS<0xECFD, (outs), (ins GR64:$R1, imm64zx8:$I2,
> +                                               bdaddr12only:$BD4),
> +                          "clgib"##name##"\t$R1, $I2, $BD4", []>;
> +    }
>    }
>  }
>  multiclass IntCondExtendedMnemonic<bits<4> ccmask, string name1, string
> name2>
>
> Modified: llvm/trunk/lib/Target/SystemZ/SystemZTargetMachine.cpp
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/lib/Target/SystemZ/SystemZTargetMachine.cpp?rev=265689&
> r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/lib/Target/SystemZ/SystemZTargetMachine.cpp (original)
> +++ llvm/trunk/lib/Target/SystemZ/SystemZTargetMachine.cpp Thu Apr  7
> 11:11:44 2016
> @@ -125,8 +125,7 @@ bool SystemZPassConfig::addInstSelector(
>  }
>
>  void SystemZPassConfig::addPreSched2() {
> -  if (getOptLevel() != CodeGenOpt::None &&
> -      getSystemZTargetMachine().getSubtargetImpl()->hasLoadStoreOnCond())
> +  if (getOptLevel() != CodeGenOpt::None)
>      addPass(&IfConverterID);
>  }
>
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/atomicrmw-minmax-03.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/atomicrmw-minmax-
> 03.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/atomicrmw-minmax-03.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/atomicrmw-minmax-03.ll Thu Apr  7
> 11:11:44 2016
> @@ -12,8 +12,8 @@ define i32 @f1(i32 %dummy, i32 *%src, i3
>  ; CHECK: crjle %r2, %r4, [[KEEP:\..*]]
>  ; CHECK: lr [[NEW]], %r4
>  ; CHECK: cs %r2, [[NEW]], 0(%r3)
> -; CHECK: jl [[LOOP]]
> -; CHECK: br %r14
> +; CHECK: ber %r14
> +; CHECK: j [[LOOP]]
>    %res = atomicrmw min i32 *%src, i32 %b seq_cst
>    ret i32 %res
>  }
> @@ -27,8 +27,8 @@ define i32 @f2(i32 %dummy, i32 *%src, i3
>  ; CHECK: crjhe %r2, %r4, [[KEEP:\..*]]
>  ; CHECK: lr [[NEW]], %r4
>  ; CHECK: cs %r2, [[NEW]], 0(%r3)
> -; CHECK: jl [[LOOP]]
> -; CHECK: br %r14
> +; CHECK: ber %r14
> +; CHECK: j [[LOOP]]
>    %res = atomicrmw max i32 *%src, i32 %b seq_cst
>    ret i32 %res
>  }
> @@ -42,8 +42,8 @@ define i32 @f3(i32 %dummy, i32 *%src, i3
>  ; CHECK: clrjle %r2, %r4, [[KEEP:\..*]]
>  ; CHECK: lr [[NEW]], %r4
>  ; CHECK: cs %r2, [[NEW]], 0(%r3)
> -; CHECK: jl [[LOOP]]
> -; CHECK: br %r14
> +; CHECK: ber %r14
> +; CHECK: j [[LOOP]]
>    %res = atomicrmw umin i32 *%src, i32 %b seq_cst
>    ret i32 %res
>  }
> @@ -57,8 +57,8 @@ define i32 @f4(i32 %dummy, i32 *%src, i3
>  ; CHECK: clrjhe %r2, %r4, [[KEEP:\..*]]
>  ; CHECK: lr [[NEW]], %r4
>  ; CHECK: cs %r2, [[NEW]], 0(%r3)
> -; CHECK: jl [[LOOP]]
> -; CHECK: br %r14
> +; CHECK: ber %r14
> +; CHECK: j [[LOOP]]
>    %res = atomicrmw umax i32 *%src, i32 %b seq_cst
>    ret i32 %res
>  }
> @@ -68,7 +68,7 @@ define i32 @f5(i32 %dummy, i32 *%src, i3
>  ; CHECK-LABEL: f5:
>  ; CHECK: l %r2, 4092(%r3)
>  ; CHECK: cs %r2, {{%r[0-9]+}}, 4092(%r3)
> -; CHECK: br %r14
> +; CHECK: ber %r14
>    %ptr = getelementptr i32, i32 *%src, i64 1023
>    %res = atomicrmw min i32 *%ptr, i32 %b seq_cst
>    ret i32 %res
> @@ -79,7 +79,7 @@ define i32 @f6(i32 %dummy, i32 *%src, i3
>  ; CHECK-LABEL: f6:
>  ; CHECK: ly %r2, 4096(%r3)
>  ; CHECK: csy %r2, {{%r[0-9]+}}, 4096(%r3)
> -; CHECK: br %r14
> +; CHECK: ber %r14
>    %ptr = getelementptr i32, i32 *%src, i64 1024
>    %res = atomicrmw min i32 *%ptr, i32 %b seq_cst
>    ret i32 %res
> @@ -90,7 +90,7 @@ define i32 @f7(i32 %dummy, i32 *%src, i3
>  ; CHECK-LABEL: f7:
>  ; CHECK: ly %r2, 524284(%r3)
>  ; CHECK: csy %r2, {{%r[0-9]+}}, 524284(%r3)
> -; CHECK: br %r14
> +; CHECK: ber %r14
>    %ptr = getelementptr i32, i32 *%src, i64 131071
>    %res = atomicrmw min i32 *%ptr, i32 %b seq_cst
>    ret i32 %res
> @@ -102,7 +102,7 @@ define i32 @f8(i32 %dummy, i32 *%src, i3
>  ; CHECK: agfi %r3, 524288
>  ; CHECK: l %r2, 0(%r3)
>  ; CHECK: cs %r2, {{%r[0-9]+}}, 0(%r3)
> -; CHECK: br %r14
> +; CHECK: ber %r14
>    %ptr = getelementptr i32, i32 *%src, i64 131072
>    %res = atomicrmw min i32 *%ptr, i32 %b seq_cst
>    ret i32 %res
> @@ -113,7 +113,7 @@ define i32 @f9(i32 %dummy, i32 *%src, i3
>  ; CHECK-LABEL: f9:
>  ; CHECK: ly %r2, -4(%r3)
>  ; CHECK: csy %r2, {{%r[0-9]+}}, -4(%r3)
> -; CHECK: br %r14
> +; CHECK: ber %r14
>    %ptr = getelementptr i32, i32 *%src, i64 -1
>    %res = atomicrmw min i32 *%ptr, i32 %b seq_cst
>    ret i32 %res
> @@ -124,7 +124,7 @@ define i32 @f10(i32 %dummy, i32 *%src, i
>  ; CHECK-LABEL: f10:
>  ; CHECK: ly %r2, -524288(%r3)
>  ; CHECK: csy %r2, {{%r[0-9]+}}, -524288(%r3)
> -; CHECK: br %r14
> +; CHECK: ber %r14
>    %ptr = getelementptr i32, i32 *%src, i64 -131072
>    %res = atomicrmw min i32 *%ptr, i32 %b seq_cst
>    ret i32 %res
> @@ -136,7 +136,7 @@ define i32 @f11(i32 %dummy, i32 *%src, i
>  ; CHECK: agfi %r3, -524292
>  ; CHECK: l %r2, 0(%r3)
>  ; CHECK: cs %r2, {{%r[0-9]+}}, 0(%r3)
> -; CHECK: br %r14
> +; CHECK: ber %r14
>    %ptr = getelementptr i32, i32 *%src, i64 -131073
>    %res = atomicrmw min i32 *%ptr, i32 %b seq_cst
>    ret i32 %res
> @@ -148,7 +148,7 @@ define i32 @f12(i32 %dummy, i64 %base, i
>  ; CHECK: agr %r3, %r4
>  ; CHECK: l %r2, 0(%r3)
>  ; CHECK: cs %r2, {{%r[0-9]+}}, 0(%r3)
> -; CHECK: br %r14
> +; CHECK: ber %r14
>    %add = add i64 %base, %index
>    %ptr = inttoptr i64 %add to i32 *
>    %res = atomicrmw min i32 *%ptr, i32 %b seq_cst
> @@ -165,8 +165,8 @@ define i32 @f13(i32 %dummy, i32 *%ptr) {
>  ; CHECK: crjle %r2, [[LIMIT]], [[KEEP:\..*]]
>  ; CHECK: lhi [[NEW]], 42
>  ; CHECK: cs %r2, [[NEW]], 0(%r3)
> -; CHECK: jl [[LOOP]]
> -; CHECK: br %r14
> +; CHECK: ber %r14
> +; CHECK: j [[LOOP]]
>    %res = atomicrmw min i32 *%ptr, i32 42 seq_cst
>    ret i32 %res
>  }
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/atomicrmw-minmax-04.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/atomicrmw-minmax-
> 04.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/atomicrmw-minmax-04.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/atomicrmw-minmax-04.ll Thu Apr  7
> 11:11:44 2016
> @@ -12,8 +12,8 @@ define i64 @f1(i64 %dummy, i64 *%src, i6
>  ; CHECK: cgrjle %r2, %r4, [[KEEP:\..*]]
>  ; CHECK: lgr [[NEW]], %r4
>  ; CHECK: csg %r2, [[NEW]], 0(%r3)
> -; CHECK: jl [[LOOP]]
> -; CHECK: br %r14
> +; CHECK: ber %r14
> +; CHECK: j [[LOOP]]
>    %res = atomicrmw min i64 *%src, i64 %b seq_cst
>    ret i64 %res
>  }
> @@ -27,8 +27,8 @@ define i64 @f2(i64 %dummy, i64 *%src, i6
>  ; CHECK: cgrjhe %r2, %r4, [[KEEP:\..*]]
>  ; CHECK: lgr [[NEW]], %r4
>  ; CHECK: csg %r2, [[NEW]], 0(%r3)
> -; CHECK: jl [[LOOP]]
> -; CHECK: br %r14
> +; CHECK: ber %r14
> +; CHECK: j [[LOOP]]
>    %res = atomicrmw max i64 *%src, i64 %b seq_cst
>    ret i64 %res
>  }
> @@ -42,8 +42,8 @@ define i64 @f3(i64 %dummy, i64 *%src, i6
>  ; CHECK: clgrjle %r2, %r4, [[KEEP:\..*]]
>  ; CHECK: lgr [[NEW]], %r4
>  ; CHECK: csg %r2, [[NEW]], 0(%r3)
> -; CHECK: jl [[LOOP]]
> -; CHECK: br %r14
> +; CHECK: ber %r14
> +; CHECK: j [[LOOP]]
>    %res = atomicrmw umin i64 *%src, i64 %b seq_cst
>    ret i64 %res
>  }
> @@ -57,8 +57,8 @@ define i64 @f4(i64 %dummy, i64 *%src, i6
>  ; CHECK: clgrjhe %r2, %r4, [[KEEP:\..*]]
>  ; CHECK: lgr [[NEW]], %r4
>  ; CHECK: csg %r2, [[NEW]], 0(%r3)
> -; CHECK: jl [[LOOP]]
> -; CHECK: br %r14
> +; CHECK: ber %r14
> +; CHECK: j [[LOOP]]
>    %res = atomicrmw umax i64 *%src, i64 %b seq_cst
>    ret i64 %res
>  }
> @@ -68,7 +68,7 @@ define i64 @f5(i64 %dummy, i64 *%src, i6
>  ; CHECK-LABEL: f5:
>  ; CHECK: lg %r2, 524280(%r3)
>  ; CHECK: csg %r2, {{%r[0-9]+}}, 524280(%r3)
> -; CHECK: br %r14
> +; CHECK: ber %r14
>    %ptr = getelementptr i64, i64 *%src, i64 65535
>    %res = atomicrmw min i64 *%ptr, i64 %b seq_cst
>    ret i64 %res
> @@ -80,7 +80,7 @@ define i64 @f6(i64 %dummy, i64 *%src, i6
>  ; CHECK: agfi %r3, 524288
>  ; CHECK: lg %r2, 0(%r3)
>  ; CHECK: csg %r2, {{%r[0-9]+}}, 0(%r3)
> -; CHECK: br %r14
> +; CHECK: ber %r14
>    %ptr = getelementptr i64, i64 *%src, i64 65536
>    %res = atomicrmw min i64 *%ptr, i64 %b seq_cst
>    ret i64 %res
> @@ -91,7 +91,7 @@ define i64 @f7(i64 %dummy, i64 *%src, i6
>  ; CHECK-LABEL: f7:
>  ; CHECK: lg %r2, -524288(%r3)
>  ; CHECK: csg %r2, {{%r[0-9]+}}, -524288(%r3)
> -; CHECK: br %r14
> +; CHECK: ber %r14
>    %ptr = getelementptr i64, i64 *%src, i64 -65536
>    %res = atomicrmw min i64 *%ptr, i64 %b seq_cst
>    ret i64 %res
> @@ -103,7 +103,7 @@ define i64 @f8(i64 %dummy, i64 *%src, i6
>  ; CHECK: agfi %r3, -524296
>  ; CHECK: lg %r2, 0(%r3)
>  ; CHECK: csg %r2, {{%r[0-9]+}}, 0(%r3)
> -; CHECK: br %r14
> +; CHECK: ber %r14
>    %ptr = getelementptr i64, i64 *%src, i64 -65537
>    %res = atomicrmw min i64 *%ptr, i64 %b seq_cst
>    ret i64 %res
> @@ -115,7 +115,7 @@ define i64 @f9(i64 %dummy, i64 %base, i6
>  ; CHECK: agr %r3, %r4
>  ; CHECK: lg %r2, 0(%r3)
>  ; CHECK: csg %r2, {{%r[0-9]+}}, 0(%r3)
> -; CHECK: br %r14
> +; CHECK: ber %r14
>    %add = add i64 %base, %index
>    %ptr = inttoptr i64 %add to i64 *
>    %res = atomicrmw min i64 *%ptr, i64 %b seq_cst
> @@ -132,8 +132,8 @@ define i64 @f10(i64 %dummy, i64 *%ptr) {
>  ; CHECK: cgrjle %r2, [[LIMIT]], [[KEEP:\..*]]
>  ; CHECK: lghi [[NEW]], 42
>  ; CHECK: csg %r2, [[NEW]], 0(%r3)
> -; CHECK: jl [[LOOP]]
> -; CHECK: br %r14
> +; CHECK: ber %r14
> +; CHECK: j [[LOOP]]
>    %res = atomicrmw min i64 *%ptr, i64 42 seq_cst
>    ret i64 %res
>  }
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/branch-05.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/branch-
> 05.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/branch-05.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/branch-05.ll Thu Apr  7 11:11:44 2016
> @@ -5,7 +5,7 @@
>  define i32 @f1(i32 %x, i32 %y, i32 %op) {
>  ; CHECK-LABEL: f1:
>  ; CHECK: ahi %r4, -1
> -; CHECK: clijh %r4, 5,
> +; CHECK: clibh %r4, 5, 0(%r14)
>  ; CHECK: llgfr [[OP64:%r[0-5]]], %r4
>  ; CHECK: sllg [[INDEX:%r[1-5]]], [[OP64]], 3
>  ; CHECK: larl [[BASE:%r[1-5]]]
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/cond-store-01.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/cond-store-
> 01.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/cond-store-01.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/cond-store-01.ll Thu Apr  7 11:11:44
> 2016
> @@ -9,10 +9,9 @@ declare void @foo(i8 *)
>  define void @f1(i8 *%ptr, i8 %alt, i32 %limit) {
>  ; CHECK-LABEL: f1:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: stc %r3, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %cond = icmp ult i32 %limit, 420
>    %orig = load i8 , i8 *%ptr
> @@ -25,10 +24,9 @@ define void @f1(i8 *%ptr, i8 %alt, i32 %
>  define void @f2(i8 *%ptr, i8 %alt, i32 %limit) {
>  ; CHECK-LABEL: f2:
>  ; CHECK-NOT: %r2
> -; CHECK: jhe [[LABEL:[^ ]*]]
> +; CHECK: bher %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: stc %r3, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %cond = icmp ult i32 %limit, 420
>    %orig = load i8 , i8 *%ptr
> @@ -42,10 +40,9 @@ define void @f2(i8 *%ptr, i8 %alt, i32 %
>  define void @f3(i8 *%ptr, i32 %alt, i32 %limit) {
>  ; CHECK-LABEL: f3:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: stc %r3, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %cond = icmp ult i32 %limit, 420
>    %orig = load i8 , i8 *%ptr
> @@ -60,10 +57,9 @@ define void @f3(i8 *%ptr, i32 %alt, i32
>  define void @f4(i8 *%ptr, i32 %alt, i32 %limit) {
>  ; CHECK-LABEL: f4:
>  ; CHECK-NOT: %r2
> -; CHECK: jhe [[LABEL:[^ ]*]]
> +; CHECK: bher %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: stc %r3, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %cond = icmp ult i32 %limit, 420
>    %orig = load i8 , i8 *%ptr
> @@ -79,10 +75,9 @@ define void @f4(i8 *%ptr, i32 %alt, i32
>  define void @f5(i8 *%ptr, i32 %alt, i32 %limit) {
>  ; CHECK-LABEL: f5:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: stc %r3, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %cond = icmp ult i32 %limit, 420
>    %orig = load i8 , i8 *%ptr
> @@ -97,10 +92,9 @@ define void @f5(i8 *%ptr, i32 %alt, i32
>  define void @f6(i8 *%ptr, i32 %alt, i32 %limit) {
>  ; CHECK-LABEL: f6:
>  ; CHECK-NOT: %r2
> -; CHECK: jhe [[LABEL:[^ ]*]]
> +; CHECK: bher %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: stc %r3, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %cond = icmp ult i32 %limit, 420
>    %orig = load i8 , i8 *%ptr
> @@ -116,10 +110,9 @@ define void @f6(i8 *%ptr, i32 %alt, i32
>  define void @f7(i8 *%ptr, i64 %alt, i32 %limit) {
>  ; CHECK-LABEL: f7:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: stc %r3, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %cond = icmp ult i32 %limit, 420
>    %orig = load i8 , i8 *%ptr
> @@ -134,10 +127,9 @@ define void @f7(i8 *%ptr, i64 %alt, i32
>  define void @f8(i8 *%ptr, i64 %alt, i32 %limit) {
>  ; CHECK-LABEL: f8:
>  ; CHECK-NOT: %r2
> -; CHECK: jhe [[LABEL:[^ ]*]]
> +; CHECK: bher %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: stc %r3, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %cond = icmp ult i32 %limit, 420
>    %orig = load i8 , i8 *%ptr
> @@ -153,10 +145,9 @@ define void @f8(i8 *%ptr, i64 %alt, i32
>  define void @f9(i8 *%ptr, i64 %alt, i32 %limit) {
>  ; CHECK-LABEL: f9:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: stc %r3, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %cond = icmp ult i32 %limit, 420
>    %orig = load i8 , i8 *%ptr
> @@ -171,10 +162,9 @@ define void @f9(i8 *%ptr, i64 %alt, i32
>  define void @f10(i8 *%ptr, i64 %alt, i32 %limit) {
>  ; CHECK-LABEL: f10:
>  ; CHECK-NOT: %r2
> -; CHECK: jhe [[LABEL:[^ ]*]]
> +; CHECK: bher %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: stc %r3, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %cond = icmp ult i32 %limit, 420
>    %orig = load i8 , i8 *%ptr
> @@ -189,10 +179,9 @@ define void @f10(i8 *%ptr, i64 %alt, i32
>  define void @f11(i8 *%base, i8 %alt, i32 %limit) {
>  ; CHECK-LABEL: f11:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: stc %r3, 4095(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %ptr = getelementptr i8, i8 *%base, i64 4095
>    %cond = icmp ult i32 %limit, 420
> @@ -206,10 +195,9 @@ define void @f11(i8 *%base, i8 %alt, i32
>  define void @f12(i8 *%base, i8 %alt, i32 %limit) {
>  ; CHECK-LABEL: f12:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: stcy %r3, 4096(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %ptr = getelementptr i8, i8 *%base, i64 4096
>    %cond = icmp ult i32 %limit, 420
> @@ -223,10 +211,9 @@ define void @f12(i8 *%base, i8 %alt, i32
>  define void @f13(i8 *%base, i8 %alt, i32 %limit) {
>  ; CHECK-LABEL: f13:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: stcy %r3, 524287(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %ptr = getelementptr i8, i8 *%base, i64 524287
>    %cond = icmp ult i32 %limit, 420
> @@ -241,11 +228,10 @@ define void @f13(i8 *%base, i8 %alt, i32
>  define void @f14(i8 *%base, i8 %alt, i32 %limit) {
>  ; CHECK-LABEL: f14:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: agfi %r2, 524288
>  ; CHECK: stc %r3, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %ptr = getelementptr i8, i8 *%base, i64 524288
>    %cond = icmp ult i32 %limit, 420
> @@ -259,10 +245,9 @@ define void @f14(i8 *%base, i8 %alt, i32
>  define void @f15(i8 *%base, i8 %alt, i32 %limit) {
>  ; CHECK-LABEL: f15:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: stcy %r3, -524288(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %ptr = getelementptr i8, i8 *%base, i64 -524288
>    %cond = icmp ult i32 %limit, 420
> @@ -277,11 +262,10 @@ define void @f15(i8 *%base, i8 %alt, i32
>  define void @f16(i8 *%base, i8 %alt, i32 %limit) {
>  ; CHECK-LABEL: f16:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: agfi %r2, -524289
>  ; CHECK: stc %r3, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %ptr = getelementptr i8, i8 *%base, i64 -524289
>    %cond = icmp ult i32 %limit, 420
> @@ -295,10 +279,9 @@ define void @f16(i8 *%base, i8 %alt, i32
>  define void @f17(i64 %base, i64 %index, i8 %alt, i32 %limit) {
>  ; CHECK-LABEL: f17:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: stcy %r4, 4096(%r3,%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %add1 = add i64 %base, %index
>    %add2 = add i64 %add1, 4096
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/cond-store-02.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/cond-store-
> 02.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/cond-store-02.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/cond-store-02.ll Thu Apr  7 11:11:44
> 2016
> @@ -9,10 +9,9 @@ declare void @foo(i16 *)
>  define void @f1(i16 *%ptr, i16 %alt, i32 %limit) {
>  ; CHECK-LABEL: f1:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: sth %r3, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %cond = icmp ult i32 %limit, 420
>    %orig = load i16 , i16 *%ptr
> @@ -25,10 +24,9 @@ define void @f1(i16 *%ptr, i16 %alt, i32
>  define void @f2(i16 *%ptr, i16 %alt, i32 %limit) {
>  ; CHECK-LABEL: f2:
>  ; CHECK-NOT: %r2
> -; CHECK: jhe [[LABEL:[^ ]*]]
> +; CHECK: bher %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: sth %r3, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %cond = icmp ult i32 %limit, 420
>    %orig = load i16 , i16 *%ptr
> @@ -42,10 +40,9 @@ define void @f2(i16 *%ptr, i16 %alt, i32
>  define void @f3(i16 *%ptr, i32 %alt, i32 %limit) {
>  ; CHECK-LABEL: f3:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: sth %r3, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %cond = icmp ult i32 %limit, 420
>    %orig = load i16 , i16 *%ptr
> @@ -60,10 +57,9 @@ define void @f3(i16 *%ptr, i32 %alt, i32
>  define void @f4(i16 *%ptr, i32 %alt, i32 %limit) {
>  ; CHECK-LABEL: f4:
>  ; CHECK-NOT: %r2
> -; CHECK: jhe [[LABEL:[^ ]*]]
> +; CHECK: bher %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: sth %r3, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %cond = icmp ult i32 %limit, 420
>    %orig = load i16 , i16 *%ptr
> @@ -79,10 +75,9 @@ define void @f4(i16 *%ptr, i32 %alt, i32
>  define void @f5(i16 *%ptr, i32 %alt, i32 %limit) {
>  ; CHECK-LABEL: f5:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: sth %r3, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %cond = icmp ult i32 %limit, 420
>    %orig = load i16 , i16 *%ptr
> @@ -97,10 +92,9 @@ define void @f5(i16 *%ptr, i32 %alt, i32
>  define void @f6(i16 *%ptr, i32 %alt, i32 %limit) {
>  ; CHECK-LABEL: f6:
>  ; CHECK-NOT: %r2
> -; CHECK: jhe [[LABEL:[^ ]*]]
> +; CHECK: bher %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: sth %r3, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %cond = icmp ult i32 %limit, 420
>    %orig = load i16 , i16 *%ptr
> @@ -116,10 +110,9 @@ define void @f6(i16 *%ptr, i32 %alt, i32
>  define void @f7(i16 *%ptr, i64 %alt, i32 %limit) {
>  ; CHECK-LABEL: f7:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: sth %r3, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %cond = icmp ult i32 %limit, 420
>    %orig = load i16 , i16 *%ptr
> @@ -134,10 +127,9 @@ define void @f7(i16 *%ptr, i64 %alt, i32
>  define void @f8(i16 *%ptr, i64 %alt, i32 %limit) {
>  ; CHECK-LABEL: f8:
>  ; CHECK-NOT: %r2
> -; CHECK: jhe [[LABEL:[^ ]*]]
> +; CHECK: bher %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: sth %r3, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %cond = icmp ult i32 %limit, 420
>    %orig = load i16 , i16 *%ptr
> @@ -153,10 +145,9 @@ define void @f8(i16 *%ptr, i64 %alt, i32
>  define void @f9(i16 *%ptr, i64 %alt, i32 %limit) {
>  ; CHECK-LABEL: f9:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: sth %r3, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %cond = icmp ult i32 %limit, 420
>    %orig = load i16 , i16 *%ptr
> @@ -171,10 +162,9 @@ define void @f9(i16 *%ptr, i64 %alt, i32
>  define void @f10(i16 *%ptr, i64 %alt, i32 %limit) {
>  ; CHECK-LABEL: f10:
>  ; CHECK-NOT: %r2
> -; CHECK: jhe [[LABEL:[^ ]*]]
> +; CHECK: bher %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: sth %r3, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %cond = icmp ult i32 %limit, 420
>    %orig = load i16 , i16 *%ptr
> @@ -189,10 +179,9 @@ define void @f10(i16 *%ptr, i64 %alt, i3
>  define void @f11(i16 *%base, i16 %alt, i32 %limit) {
>  ; CHECK-LABEL: f11:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: sth %r3, 4094(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %ptr = getelementptr i16, i16 *%base, i64 2047
>    %cond = icmp ult i32 %limit, 420
> @@ -206,10 +195,9 @@ define void @f11(i16 *%base, i16 %alt, i
>  define void @f12(i16 *%base, i16 %alt, i32 %limit) {
>  ; CHECK-LABEL: f12:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: sthy %r3, 4096(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %ptr = getelementptr i16, i16 *%base, i64 2048
>    %cond = icmp ult i32 %limit, 420
> @@ -223,10 +211,9 @@ define void @f12(i16 *%base, i16 %alt, i
>  define void @f13(i16 *%base, i16 %alt, i32 %limit) {
>  ; CHECK-LABEL: f13:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: sthy %r3, 524286(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %ptr = getelementptr i16, i16 *%base, i64 262143
>    %cond = icmp ult i32 %limit, 420
> @@ -241,11 +228,10 @@ define void @f13(i16 *%base, i16 %alt, i
>  define void @f14(i16 *%base, i16 %alt, i32 %limit) {
>  ; CHECK-LABEL: f14:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: agfi %r2, 524288
>  ; CHECK: sth %r3, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %ptr = getelementptr i16, i16 *%base, i64 262144
>    %cond = icmp ult i32 %limit, 420
> @@ -259,10 +245,9 @@ define void @f14(i16 *%base, i16 %alt, i
>  define void @f15(i16 *%base, i16 %alt, i32 %limit) {
>  ; CHECK-LABEL: f15:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: sthy %r3, -524288(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %ptr = getelementptr i16, i16 *%base, i64 -262144
>    %cond = icmp ult i32 %limit, 420
> @@ -277,11 +262,10 @@ define void @f15(i16 *%base, i16 %alt, i
>  define void @f16(i16 *%base, i16 %alt, i32 %limit) {
>  ; CHECK-LABEL: f16:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: agfi %r2, -524290
>  ; CHECK: sth %r3, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %ptr = getelementptr i16, i16 *%base, i64 -262145
>    %cond = icmp ult i32 %limit, 420
> @@ -295,10 +279,9 @@ define void @f16(i16 *%base, i16 %alt, i
>  define void @f17(i64 %base, i64 %index, i16 %alt, i32 %limit) {
>  ; CHECK-LABEL: f17:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: sthy %r4, 4096(%r3,%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %add1 = add i64 %base, %index
>    %add2 = add i64 %add1, 4096
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/cond-store-03.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/cond-store-
> 03.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/cond-store-03.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/cond-store-03.ll Thu Apr  7 11:11:44
> 2016
> @@ -8,10 +8,9 @@ declare void @foo(i32 *)
>  define void @f1(i32 *%ptr, i32 %alt, i32 %limit) {
>  ; CHECK-LABEL: f1:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: st %r3, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %cond = icmp ult i32 %limit, 420
>    %orig = load i32 , i32 *%ptr
> @@ -24,10 +23,9 @@ define void @f1(i32 *%ptr, i32 %alt, i32
>  define void @f2(i32 *%ptr, i32 %alt, i32 %limit) {
>  ; CHECK-LABEL: f2:
>  ; CHECK-NOT: %r2
> -; CHECK: jhe [[LABEL:[^ ]*]]
> +; CHECK: bher %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: st %r3, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %cond = icmp ult i32 %limit, 420
>    %orig = load i32 , i32 *%ptr
> @@ -41,10 +39,9 @@ define void @f2(i32 *%ptr, i32 %alt, i32
>  define void @f3(i32 *%ptr, i64 %alt, i32 %limit) {
>  ; CHECK-LABEL: f3:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: st %r3, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %cond = icmp ult i32 %limit, 420
>    %orig = load i32 , i32 *%ptr
> @@ -59,10 +56,9 @@ define void @f3(i32 *%ptr, i64 %alt, i32
>  define void @f4(i32 *%ptr, i64 %alt, i32 %limit) {
>  ; CHECK-LABEL: f4:
>  ; CHECK-NOT: %r2
> -; CHECK: jhe [[LABEL:[^ ]*]]
> +; CHECK: bher %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: st %r3, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %cond = icmp ult i32 %limit, 420
>    %orig = load i32 , i32 *%ptr
> @@ -78,10 +74,9 @@ define void @f4(i32 *%ptr, i64 %alt, i32
>  define void @f5(i32 *%ptr, i64 %alt, i32 %limit) {
>  ; CHECK-LABEL: f5:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: st %r3, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %cond = icmp ult i32 %limit, 420
>    %orig = load i32 , i32 *%ptr
> @@ -96,10 +91,9 @@ define void @f5(i32 *%ptr, i64 %alt, i32
>  define void @f6(i32 *%ptr, i64 %alt, i32 %limit) {
>  ; CHECK-LABEL: f6:
>  ; CHECK-NOT: %r2
> -; CHECK: jhe [[LABEL:[^ ]*]]
> +; CHECK: bher %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: st %r3, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %cond = icmp ult i32 %limit, 420
>    %orig = load i32 , i32 *%ptr
> @@ -114,10 +108,9 @@ define void @f6(i32 *%ptr, i64 %alt, i32
>  define void @f7(i32 *%base, i32 %alt, i32 %limit) {
>  ; CHECK-LABEL: f7:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: st %r3, 4092(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %ptr = getelementptr i32, i32 *%base, i64 1023
>    %cond = icmp ult i32 %limit, 420
> @@ -131,10 +124,9 @@ define void @f7(i32 *%base, i32 %alt, i3
>  define void @f8(i32 *%base, i32 %alt, i32 %limit) {
>  ; CHECK-LABEL: f8:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: sty %r3, 4096(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %ptr = getelementptr i32, i32 *%base, i64 1024
>    %cond = icmp ult i32 %limit, 420
> @@ -148,10 +140,9 @@ define void @f8(i32 *%base, i32 %alt, i3
>  define void @f9(i32 *%base, i32 %alt, i32 %limit) {
>  ; CHECK-LABEL: f9:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: sty %r3, 524284(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %ptr = getelementptr i32, i32 *%base, i64 131071
>    %cond = icmp ult i32 %limit, 420
> @@ -166,11 +157,10 @@ define void @f9(i32 *%base, i32 %alt, i3
>  define void @f10(i32 *%base, i32 %alt, i32 %limit) {
>  ; CHECK-LABEL: f10:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: agfi %r2, 524288
>  ; CHECK: st %r3, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %ptr = getelementptr i32, i32 *%base, i64 131072
>    %cond = icmp ult i32 %limit, 420
> @@ -184,10 +174,9 @@ define void @f10(i32 *%base, i32 %alt, i
>  define void @f11(i32 *%base, i32 %alt, i32 %limit) {
>  ; CHECK-LABEL: f11:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: sty %r3, -524288(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %ptr = getelementptr i32, i32 *%base, i64 -131072
>    %cond = icmp ult i32 %limit, 420
> @@ -202,11 +191,10 @@ define void @f11(i32 *%base, i32 %alt, i
>  define void @f12(i32 *%base, i32 %alt, i32 %limit) {
>  ; CHECK-LABEL: f12:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: agfi %r2, -524292
>  ; CHECK: st %r3, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %ptr = getelementptr i32, i32 *%base, i64 -131073
>    %cond = icmp ult i32 %limit, 420
> @@ -220,10 +208,9 @@ define void @f12(i32 *%base, i32 %alt, i
>  define void @f13(i64 %base, i64 %index, i32 %alt, i32 %limit) {
>  ; CHECK-LABEL: f13:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: sty %r4, 4096(%r3,%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %add1 = add i64 %base, %index
>    %add2 = add i64 %add1, 4096
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/cond-store-04.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/cond-store-
> 04.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/cond-store-04.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/cond-store-04.ll Thu Apr  7 11:11:44
> 2016
> @@ -8,10 +8,9 @@ declare void @foo(i64 *)
>  define void @f1(i64 *%ptr, i64 %alt, i32 %limit) {
>  ; CHECK-LABEL: f1:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: stg %r3, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %cond = icmp ult i32 %limit, 420
>    %orig = load i64 , i64 *%ptr
> @@ -24,10 +23,9 @@ define void @f1(i64 *%ptr, i64 %alt, i32
>  define void @f2(i64 *%ptr, i64 %alt, i32 %limit) {
>  ; CHECK-LABEL: f2:
>  ; CHECK-NOT: %r2
> -; CHECK: jhe [[LABEL:[^ ]*]]
> +; CHECK: bher %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: stg %r3, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %cond = icmp ult i32 %limit, 420
>    %orig = load i64 , i64 *%ptr
> @@ -40,10 +38,9 @@ define void @f2(i64 *%ptr, i64 %alt, i32
>  define void @f3(i64 *%base, i64 %alt, i32 %limit) {
>  ; CHECK-LABEL: f3:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: stg %r3, 524280(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %ptr = getelementptr i64, i64 *%base, i64 65535
>    %cond = icmp ult i32 %limit, 420
> @@ -58,11 +55,10 @@ define void @f3(i64 *%base, i64 %alt, i3
>  define void @f4(i64 *%base, i64 %alt, i32 %limit) {
>  ; CHECK-LABEL: f4:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: agfi %r2, 524288
>  ; CHECK: stg %r3, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %ptr = getelementptr i64, i64 *%base, i64 65536
>    %cond = icmp ult i32 %limit, 420
> @@ -76,10 +72,9 @@ define void @f4(i64 *%base, i64 %alt, i3
>  define void @f5(i64 *%base, i64 %alt, i32 %limit) {
>  ; CHECK-LABEL: f5:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: stg %r3, -524288(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %ptr = getelementptr i64, i64 *%base, i64 -65536
>    %cond = icmp ult i32 %limit, 420
> @@ -94,11 +89,10 @@ define void @f5(i64 *%base, i64 %alt, i3
>  define void @f6(i64 *%base, i64 %alt, i32 %limit) {
>  ; CHECK-LABEL: f6:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: agfi %r2, -524296
>  ; CHECK: stg %r3, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %ptr = getelementptr i64, i64 *%base, i64 -65537
>    %cond = icmp ult i32 %limit, 420
> @@ -112,10 +106,9 @@ define void @f6(i64 *%base, i64 %alt, i3
>  define void @f7(i64 %base, i64 %index, i64 %alt, i32 %limit) {
>  ; CHECK-LABEL: f7:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: stg %r4, 524287(%r3,%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %add1 = add i64 %base, %index
>    %add2 = add i64 %add1, 524287
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/cond-store-05.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/cond-store-
> 05.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/cond-store-05.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/cond-store-05.ll Thu Apr  7 11:11:44
> 2016
> @@ -8,10 +8,9 @@ declare void @foo(float *)
>  define void @f1(float *%ptr, float %alt, i32 %limit) {
>  ; CHECK-LABEL: f1:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: ste %f0, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %cond = icmp ult i32 %limit, 420
>    %orig = load float , float *%ptr
> @@ -24,10 +23,9 @@ define void @f1(float *%ptr, float %alt,
>  define void @f2(float *%ptr, float %alt, i32 %limit) {
>  ; CHECK-LABEL: f2:
>  ; CHECK-NOT: %r2
> -; CHECK: jhe [[LABEL:[^ ]*]]
> +; CHECK: bher %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: ste %f0, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %cond = icmp ult i32 %limit, 420
>    %orig = load float , float *%ptr
> @@ -40,10 +38,9 @@ define void @f2(float *%ptr, float %alt,
>  define void @f3(float *%base, float %alt, i32 %limit) {
>  ; CHECK-LABEL: f3:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: ste %f0, 4092(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %ptr = getelementptr float, float *%base, i64 1023
>    %cond = icmp ult i32 %limit, 420
> @@ -57,10 +54,9 @@ define void @f3(float *%base, float %alt
>  define void @f4(float *%base, float %alt, i32 %limit) {
>  ; CHECK-LABEL: f4:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: stey %f0, 4096(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %ptr = getelementptr float, float *%base, i64 1024
>    %cond = icmp ult i32 %limit, 420
> @@ -74,10 +70,9 @@ define void @f4(float *%base, float %alt
>  define void @f5(float *%base, float %alt, i32 %limit) {
>  ; CHECK-LABEL: f5:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: stey %f0, 524284(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %ptr = getelementptr float, float *%base, i64 131071
>    %cond = icmp ult i32 %limit, 420
> @@ -92,11 +87,10 @@ define void @f5(float *%base, float %alt
>  define void @f6(float *%base, float %alt, i32 %limit) {
>  ; CHECK-LABEL: f6:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: agfi %r2, 524288
>  ; CHECK: ste %f0, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %ptr = getelementptr float, float *%base, i64 131072
>    %cond = icmp ult i32 %limit, 420
> @@ -110,10 +104,9 @@ define void @f6(float *%base, float %alt
>  define void @f7(float *%base, float %alt, i32 %limit) {
>  ; CHECK-LABEL: f7:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: stey %f0, -524288(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %ptr = getelementptr float, float *%base, i64 -131072
>    %cond = icmp ult i32 %limit, 420
> @@ -128,11 +121,10 @@ define void @f7(float *%base, float %alt
>  define void @f8(float *%base, float %alt, i32 %limit) {
>  ; CHECK-LABEL: f8:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: agfi %r2, -524292
>  ; CHECK: ste %f0, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %ptr = getelementptr float, float *%base, i64 -131073
>    %cond = icmp ult i32 %limit, 420
> @@ -146,10 +138,9 @@ define void @f8(float *%base, float %alt
>  define void @f9(i64 %base, i64 %index, float %alt, i32 %limit) {
>  ; CHECK-LABEL: f9:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: stey %f0, 4096(%r3,%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %add1 = add i64 %base, %index
>    %add2 = add i64 %add1, 4096
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/cond-store-06.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/cond-store-
> 06.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/cond-store-06.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/cond-store-06.ll Thu Apr  7 11:11:44
> 2016
> @@ -8,10 +8,9 @@ declare void @foo(double *)
>  define void @f1(double *%ptr, double %alt, i32 %limit) {
>  ; CHECK-LABEL: f1:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: std %f0, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %cond = icmp ult i32 %limit, 420
>    %orig = load double , double *%ptr
> @@ -24,10 +23,9 @@ define void @f1(double *%ptr, double %al
>  define void @f2(double *%ptr, double %alt, i32 %limit) {
>  ; CHECK-LABEL: f2:
>  ; CHECK-NOT: %r2
> -; CHECK: jhe [[LABEL:[^ ]*]]
> +; CHECK: bher %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: std %f0, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %cond = icmp ult i32 %limit, 420
>    %orig = load double , double *%ptr
> @@ -40,10 +38,9 @@ define void @f2(double *%ptr, double %al
>  define void @f3(double *%base, double %alt, i32 %limit) {
>  ; CHECK-LABEL: f3:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: std %f0, 4088(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %ptr = getelementptr double, double *%base, i64 511
>    %cond = icmp ult i32 %limit, 420
> @@ -57,10 +54,9 @@ define void @f3(double *%base, double %a
>  define void @f4(double *%base, double %alt, i32 %limit) {
>  ; CHECK-LABEL: f4:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: stdy %f0, 4096(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %ptr = getelementptr double, double *%base, i64 512
>    %cond = icmp ult i32 %limit, 420
> @@ -74,10 +70,9 @@ define void @f4(double *%base, double %a
>  define void @f5(double *%base, double %alt, i32 %limit) {
>  ; CHECK-LABEL: f5:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: stdy %f0, 524280(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %ptr = getelementptr double, double *%base, i64 65535
>    %cond = icmp ult i32 %limit, 420
> @@ -92,11 +87,10 @@ define void @f5(double *%base, double %a
>  define void @f6(double *%base, double %alt, i32 %limit) {
>  ; CHECK-LABEL: f6:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: agfi %r2, 524288
>  ; CHECK: std %f0, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %ptr = getelementptr double, double *%base, i64 65536
>    %cond = icmp ult i32 %limit, 420
> @@ -110,10 +104,9 @@ define void @f6(double *%base, double %a
>  define void @f7(double *%base, double %alt, i32 %limit) {
>  ; CHECK-LABEL: f7:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: stdy %f0, -524288(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %ptr = getelementptr double, double *%base, i64 -65536
>    %cond = icmp ult i32 %limit, 420
> @@ -128,11 +121,10 @@ define void @f7(double *%base, double %a
>  define void @f8(double *%base, double %alt, i32 %limit) {
>  ; CHECK-LABEL: f8:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: agfi %r2, -524296
>  ; CHECK: std %f0, 0(%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %ptr = getelementptr double, double *%base, i64 -65537
>    %cond = icmp ult i32 %limit, 420
> @@ -146,10 +138,9 @@ define void @f8(double *%base, double %a
>  define void @f9(i64 %base, i64 %index, double %alt, i32 %limit) {
>  ; CHECK-LABEL: f9:
>  ; CHECK-NOT: %r2
> -; CHECK: jl [[LABEL:[^ ]*]]
> +; CHECK: blr %r14
>  ; CHECK-NOT: %r2
>  ; CHECK: stdy %f0, 524287(%r3,%r2)
> -; CHECK: [[LABEL]]:
>  ; CHECK: br %r14
>    %add1 = add i64 %base, %index
>    %add2 = add i64 %add1, 524287
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/fp-cmp-01.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/fp-cmp-
> 01.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/fp-cmp-01.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/fp-cmp-01.ll Thu Apr  7 11:11:44 2016
> @@ -9,7 +9,7 @@ declare float @foo()
>  define i64 @f1(i64 %a, i64 %b, float %f1, float %f2) {
>  ; CHECK-LABEL: f1:
>  ; CHECK: cebr %f0, %f2
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: lgr %r2, %r3
>  ; CHECK: br %r14
>    %cond = fcmp oeq float %f1, %f2
> @@ -21,7 +21,7 @@ define i64 @f1(i64 %a, i64 %b, float %f1
>  define i64 @f2(i64 %a, i64 %b, float %f1, float *%ptr) {
>  ; CHECK-LABEL: f2:
>  ; CHECK: ceb %f0, 0(%r4)
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: lgr %r2, %r3
>  ; CHECK: br %r14
>    %f2 = load float , float *%ptr
> @@ -34,7 +34,7 @@ define i64 @f2(i64 %a, i64 %b, float %f1
>  define i64 @f3(i64 %a, i64 %b, float %f1, float *%base) {
>  ; CHECK-LABEL: f3:
>  ; CHECK: ceb %f0, 4092(%r4)
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: lgr %r2, %r3
>  ; CHECK: br %r14
>    %ptr = getelementptr float, float *%base, i64 1023
> @@ -50,7 +50,7 @@ define i64 @f4(i64 %a, i64 %b, float %f1
>  ; CHECK-LABEL: f4:
>  ; CHECK: aghi %r4, 4096
>  ; CHECK: ceb %f0, 0(%r4)
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: lgr %r2, %r3
>  ; CHECK: br %r14
>    %ptr = getelementptr float, float *%base, i64 1024
> @@ -65,7 +65,7 @@ define i64 @f5(i64 %a, i64 %b, float %f1
>  ; CHECK-LABEL: f5:
>  ; CHECK: aghi %r4, -4
>  ; CHECK: ceb %f0, 0(%r4)
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: lgr %r2, %r3
>  ; CHECK: br %r14
>    %ptr = getelementptr float, float *%base, i64 -1
> @@ -80,7 +80,7 @@ define i64 @f6(i64 %a, i64 %b, float %f1
>  ; CHECK-LABEL: f6:
>  ; CHECK: sllg %r1, %r5, 2
>  ; CHECK: ceb %f0, 400(%r1,%r4)
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: lgr %r2, %r3
>  ; CHECK: br %r14
>    %ptr1 = getelementptr float, float *%base, i64 %index
> @@ -153,7 +153,7 @@ define float @f7(float *%ptr0) {
>  define i64 @f8(i64 %a, i64 %b, float %f) {
>  ; CHECK-LABEL: f8:
>  ; CHECK: ltebr %f0, %f0
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: lgr %r2, %r3
>  ; CHECK: br %r14
>    %cond = fcmp oeq float %f, 0.0
> @@ -166,7 +166,7 @@ define i64 @f8(i64 %a, i64 %b, float %f)
>  define i64 @f9(i64 %a, i64 %b, float %f2, float *%ptr) {
>  ; CHECK-LABEL: f9:
>  ; CHECK: ceb %f0, 0(%r4)
> -; CHECK-NEXT: je {{\.L.*}}
> +; CHECK-NEXT: ber %r14
>  ; CHECK: lgr %r2, %r3
>  ; CHECK: br %r14
>    %f1 = load float , float *%ptr
> @@ -179,7 +179,7 @@ define i64 @f9(i64 %a, i64 %b, float %f2
>  define i64 @f10(i64 %a, i64 %b, float %f2, float *%ptr) {
>  ; CHECK-LABEL: f10:
>  ; CHECK: ceb %f0, 0(%r4)
> -; CHECK-NEXT: jlh {{\.L.*}}
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: lgr %r2, %r3
>  ; CHECK: br %r14
>    %f1 = load float , float *%ptr
> @@ -192,7 +192,7 @@ define i64 @f10(i64 %a, i64 %b, float %f
>  define i64 @f11(i64 %a, i64 %b, float %f2, float *%ptr) {
>  ; CHECK-LABEL: f11:
>  ; CHECK: ceb %f0, 0(%r4)
> -; CHECK-NEXT: jh {{\.L.*}}
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: lgr %r2, %r3
>  ; CHECK: br %r14
>    %f1 = load float , float *%ptr
> @@ -205,7 +205,7 @@ define i64 @f11(i64 %a, i64 %b, float %f
>  define i64 @f12(i64 %a, i64 %b, float %f2, float *%ptr) {
>  ; CHECK-LABEL: f12:
>  ; CHECK: ceb %f0, 0(%r4)
> -; CHECK-NEXT: jhe {{\.L.*}}
> +; CHECK-NEXT: bher %r14
>  ; CHECK: lgr %r2, %r3
>  ; CHECK: br %r14
>    %f1 = load float , float *%ptr
> @@ -218,7 +218,7 @@ define i64 @f12(i64 %a, i64 %b, float %f
>  define i64 @f13(i64 %a, i64 %b, float %f2, float *%ptr) {
>  ; CHECK-LABEL: f13:
>  ; CHECK: ceb %f0, 0(%r4)
> -; CHECK-NEXT: jle {{\.L.*}}
> +; CHECK-NEXT: bler %r14
>  ; CHECK: lgr %r2, %r3
>  ; CHECK: br %r14
>    %f1 = load float , float *%ptr
> @@ -231,7 +231,7 @@ define i64 @f13(i64 %a, i64 %b, float %f
>  define i64 @f14(i64 %a, i64 %b, float %f2, float *%ptr) {
>  ; CHECK-LABEL: f14:
>  ; CHECK: ceb %f0, 0(%r4)
> -; CHECK-NEXT: jl {{\.L.*}}
> +; CHECK-NEXT: blr %r14
>  ; CHECK: lgr %r2, %r3
>  ; CHECK: br %r14
>    %f1 = load float , float *%ptr
> @@ -244,7 +244,7 @@ define i64 @f14(i64 %a, i64 %b, float %f
>  define i64 @f15(i64 %a, i64 %b, float %f2, float *%ptr) {
>  ; CHECK-LABEL: f15:
>  ; CHECK: ceb %f0, 0(%r4)
> -; CHECK-NEXT: jnlh {{\.L.*}}
> +; CHECK-NEXT: bnlhr %r14
>  ; CHECK: lgr %r2, %r3
>  ; CHECK: br %r14
>    %f1 = load float , float *%ptr
> @@ -257,7 +257,7 @@ define i64 @f15(i64 %a, i64 %b, float %f
>  define i64 @f16(i64 %a, i64 %b, float %f2, float *%ptr) {
>  ; CHECK-LABEL: f16:
>  ; CHECK: ceb %f0, 0(%r4)
> -; CHECK-NEXT: jne {{\.L.*}}
> +; CHECK-NEXT: bner %r14
>  ; CHECK: lgr %r2, %r3
>  ; CHECK: br %r14
>    %f1 = load float , float *%ptr
> @@ -270,7 +270,7 @@ define i64 @f16(i64 %a, i64 %b, float %f
>  define i64 @f17(i64 %a, i64 %b, float %f2, float *%ptr) {
>  ; CHECK-LABEL: f17:
>  ; CHECK: ceb %f0, 0(%r4)
> -; CHECK-NEXT: jnle {{\.L.*}}
> +; CHECK-NEXT: bnler %r14
>  ; CHECK: lgr %r2, %r3
>  ; CHECK: br %r14
>    %f1 = load float , float *%ptr
> @@ -283,7 +283,7 @@ define i64 @f17(i64 %a, i64 %b, float %f
>  define i64 @f18(i64 %a, i64 %b, float %f2, float *%ptr) {
>  ; CHECK-LABEL: f18:
>  ; CHECK: ceb %f0, 0(%r4)
> -; CHECK-NEXT: jnl {{\.L.*}}
> +; CHECK-NEXT: bnlr %r14
>  ; CHECK: lgr %r2, %r3
>  ; CHECK: br %r14
>    %f1 = load float , float *%ptr
> @@ -296,7 +296,7 @@ define i64 @f18(i64 %a, i64 %b, float %f
>  define i64 @f19(i64 %a, i64 %b, float %f2, float *%ptr) {
>  ; CHECK-LABEL: f19:
>  ; CHECK: ceb %f0, 0(%r4)
> -; CHECK-NEXT: jnh {{\.L.*}}
> +; CHECK-NEXT: bnhr %r14
>  ; CHECK: lgr %r2, %r3
>  ; CHECK: br %r14
>    %f1 = load float , float *%ptr
> @@ -309,7 +309,7 @@ define i64 @f19(i64 %a, i64 %b, float %f
>  define i64 @f20(i64 %a, i64 %b, float %f2, float *%ptr) {
>  ; CHECK-LABEL: f20:
>  ; CHECK: ceb %f0, 0(%r4)
> -; CHECK-NEXT: jnhe {{\.L.*}}
> +; CHECK-NEXT: bnher %r14
>  ; CHECK: lgr %r2, %r3
>  ; CHECK: br %r14
>    %f1 = load float , float *%ptr
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/fp-cmp-02.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/fp-cmp-
> 02.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/fp-cmp-02.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/fp-cmp-02.ll Thu Apr  7 11:11:44 2016
> @@ -12,7 +12,7 @@ declare double @foo()
>  define i64 @f1(i64 %a, i64 %b, double %f1, double %f2) {
>  ; CHECK-LABEL: f1:
>  ; CHECK: cdbr %f0, %f2
> -; CHECK-SCALAR-NEXT: je
> +; CHECK-SCALAR-NEXT: ber %r14
>  ; CHECK-SCALAR: lgr %r2, %r3
>  ; CHECK-VECTOR-NEXT: locgrne %r2, %r3
>  ; CHECK: br %r14
> @@ -25,7 +25,7 @@ define i64 @f1(i64 %a, i64 %b, double %f
>  define i64 @f2(i64 %a, i64 %b, double %f1, double *%ptr) {
>  ; CHECK-LABEL: f2:
>  ; CHECK: cdb %f0, 0(%r4)
> -; CHECK-SCALAR-NEXT: je
> +; CHECK-SCALAR-NEXT: ber %r14
>  ; CHECK-SCALAR: lgr %r2, %r3
>  ; CHECK-VECTOR-NEXT: locgrne %r2, %r3
>  ; CHECK: br %r14
> @@ -39,7 +39,7 @@ define i64 @f2(i64 %a, i64 %b, double %f
>  define i64 @f3(i64 %a, i64 %b, double %f1, double *%base) {
>  ; CHECK-LABEL: f3:
>  ; CHECK: cdb %f0, 4088(%r4)
> -; CHECK-SCALAR-NEXT: je
> +; CHECK-SCALAR-NEXT: ber %r14
>  ; CHECK-SCALAR: lgr %r2, %r3
>  ; CHECK-VECTOR-NEXT: locgrne %r2, %r3
>  ; CHECK: br %r14
> @@ -56,7 +56,7 @@ define i64 @f4(i64 %a, i64 %b, double %f
>  ; CHECK-LABEL: f4:
>  ; CHECK: aghi %r4, 4096
>  ; CHECK: cdb %f0, 0(%r4)
> -; CHECK-SCALAR-NEXT: je
> +; CHECK-SCALAR-NEXT: ber %r14
>  ; CHECK-SCALAR: lgr %r2, %r3
>  ; CHECK-VECTOR-NEXT: locgrne %r2, %r3
>  ; CHECK: br %r14
> @@ -72,7 +72,7 @@ define i64 @f5(i64 %a, i64 %b, double %f
>  ; CHECK-LABEL: f5:
>  ; CHECK: aghi %r4, -8
>  ; CHECK: cdb %f0, 0(%r4)
> -; CHECK-SCALAR-NEXT: je
> +; CHECK-SCALAR-NEXT: ber %r14
>  ; CHECK-SCALAR: lgr %r2, %r3
>  ; CHECK-VECTOR-NEXT: locgrne %r2, %r3
>  ; CHECK: br %r14
> @@ -88,7 +88,7 @@ define i64 @f6(i64 %a, i64 %b, double %f
>  ; CHECK-LABEL: f6:
>  ; CHECK: sllg %r1, %r5, 3
>  ; CHECK: cdb %f0, 800(%r1,%r4)
> -; CHECK-SCALAR-NEXT: je
> +; CHECK-SCALAR-NEXT: ber %r14
>  ; CHECK-SCALAR: lgr %r2, %r3
>  ; CHECK-VECTOR-NEXT: locgrne %r2, %r3
>  ; CHECK: br %r14
> @@ -162,7 +162,7 @@ define double @f7(double *%ptr0) {
>  define i64 @f8(i64 %a, i64 %b, double %f) {
>  ; CHECK-LABEL: f8:
>  ; CHECK-SCALAR: ltdbr %f0, %f0
> -; CHECK-SCALAR-NEXT: je
> +; CHECK-SCALAR-NEXT: ber %r14
>  ; CHECK-SCALAR: lgr %r2, %r3
>  ; CHECK-VECTOR: ltdbr %f0, %f0
>  ; CHECK-VECTOR-NEXT: locgrne %r2, %r3
> @@ -176,7 +176,7 @@ define i64 @f8(i64 %a, i64 %b, double %f
>  define i64 @f9(i64 %a, i64 %b, double %f2, double *%ptr) {
>  ; CHECK-LABEL: f9:
>  ; CHECK: cdb %f0, 0(%r4)
> -; CHECK-SCALAR-NEXT: jl
> +; CHECK-SCALAR-NEXT: blr %r14
>  ; CHECK-SCALAR: lgr %r2, %r3
>  ; CHECK-VECTOR-NEXT: locgrnl %r2, %r3
>  ; CHECK: br %r14
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/fp-cmp-03.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/fp-cmp-
> 03.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/fp-cmp-03.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/fp-cmp-03.ll Thu Apr  7 11:11:44 2016
> @@ -10,7 +10,7 @@ define i64 @f1(i64 %a, i64 %b, fp128 *%p
>  ; CHECK: ld %f1, 0(%r4)
>  ; CHECK: ld %f3, 8(%r4)
>  ; CHECK: cxbr %f1, %f0
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: lgr %r2, %r3
>  ; CHECK: br %r14
>    %f2x = fpext float %f2 to fp128
> @@ -26,7 +26,7 @@ define i64 @f2(i64 %a, i64 %b, fp128 *%p
>  ; CHECK: ld %f0, 0(%r4)
>  ; CHECK: ld %f2, 8(%r4)
>  ; CHECK: ltxbr %f0, %f0
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: lgr %r2, %r3
>  ; CHECK: br %r14
>    %f = load fp128 , fp128 *%ptr
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/fp-cmp-04.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/fp-cmp-
> 04.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/fp-cmp-04.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/fp-cmp-04.ll Thu Apr  7 11:11:44 2016
> @@ -9,7 +9,7 @@ declare float @llvm.fabs.f32(float %f)
>  define float @f1(float %a, float %b, float *%dest) {
>  ; CHECK-LABEL: f1:
>  ; CHECK: aebr %f0, %f2
> -; CHECK-NEXT: je .L{{.*}}
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>  entry:
>    %res = fadd float %a, %b
> @@ -28,7 +28,7 @@ exit:
>  define float @f2(float %a, float %b, float *%dest) {
>  ; CHECK-LABEL: f2:
>  ; CHECK: aebr %f0, %f2
> -; CHECK-NEXT: jl .L{{.*}}
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>  entry:
>    %res = fadd float %a, %b
> @@ -47,7 +47,7 @@ exit:
>  define float @f3(float %a, float %b, float *%dest) {
>  ; CHECK-LABEL: f3:
>  ; CHECK: aebr %f0, %f2
> -; CHECK-NEXT: jh .L{{.*}}
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: br %r14
>  entry:
>    %res = fadd float %a, %b
> @@ -66,7 +66,7 @@ exit:
>  define float @f4(float %a, float %b, float *%dest) {
>  ; CHECK-LABEL: f4:
>  ; CHECK: aebr %f0, %f2
> -; CHECK-NEXT: jnlh .L{{.*}}
> +; CHECK-NEXT: bnlhr %r14
>  ; CHECK: br %r14
>  entry:
>    %res = fadd float %a, %b
> @@ -85,7 +85,7 @@ exit:
>  define float @f5(float %a, float %b, float *%dest) {
>  ; CHECK-LABEL: f5:
>  ; CHECK: seb %f0, 0(%r2)
> -; CHECK-NEXT: jnhe .L{{.*}}
> +; CHECK-NEXT: bnher %r14
>  ; CHECK: br %r14
>  entry:
>    %cur = load float , float *%dest
> @@ -105,7 +105,7 @@ exit:
>  define float @f6(float %dummy, float %a, float *%dest) {
>  ; CHECK-LABEL: f6:
>  ; CHECK: lpebr %f0, %f2
> -; CHECK-NEXT: jh .L{{.*}}
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: br %r14
>  entry:
>    %res = call float @llvm.fabs.f32(float %a)
> @@ -124,7 +124,7 @@ exit:
>  define float @f7(float %dummy, float %a, float *%dest) {
>  ; CHECK-LABEL: f7:
>  ; CHECK: lnebr %f0, %f2
> -; CHECK-NEXT: jl .L{{.*}}
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>  entry:
>    %abs = call float @llvm.fabs.f32(float %a)
> @@ -144,7 +144,7 @@ exit:
>  define float @f8(float %dummy, float %a, float *%dest) {
>  ; CHECK-LABEL: f8:
>  ; CHECK: lcebr %f0, %f2
> -; CHECK-NEXT: jle .L{{.*}}
> +; CHECK-NEXT: bler %r14
>  ; CHECK: br %r14
>  entry:
>    %res = fsub float -0.0, %a
> @@ -164,7 +164,7 @@ define float @f9(float %a, float %b, flo
>  ; CHECK-LABEL: f9:
>  ; CHECK: meebr %f0, %f2
>  ; CHECK-NEXT: ltebr %f0, %f0
> -; CHECK-NEXT: jlh .L{{.*}}
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: br %r14
>  entry:
>    %res = fmul float %a, %b
> @@ -186,7 +186,7 @@ define float @f10(float %a, float %b, fl
>  ; CHECK: aebr %f0, %f2
>  ; CHECK-NEXT: debr %f0, %f4
>  ; CHECK-NEXT: ltebr %f0, %f0
> -; CHECK-NEXT: jne .L{{.*}}
> +; CHECK-NEXT: bner %r14
>  ; CHECK: br %r14
>  entry:
>    %add = fadd float %a, %b
> @@ -210,7 +210,7 @@ define float @f11(float %a, float %b, fl
>  ; CHECK-NEXT: sebr %f4, %f0
>  ; CHECK-NEXT: ste %f4, 0(%r2)
>  ; CHECK-NEXT: ltebr %f0, %f0
> -; CHECK-NEXT: je .L{{.*}}
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>  entry:
>    %add = fadd float %a, %b
> @@ -234,7 +234,7 @@ define float @f12(float %dummy, float %v
>  ; CHECK-NEXT: #APP
>  ; CHECK-NEXT: blah %f0
>  ; CHECK-NEXT: #NO_APP
> -; CHECK-NEXT: jl .L{{.*}}
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>  entry:
>    call void asm sideeffect "blah $0", "{f0}"(float %val)
> @@ -256,7 +256,7 @@ define double @f13(double %dummy, double
>  ; CHECK-NEXT: #APP
>  ; CHECK-NEXT: blah %f0
>  ; CHECK-NEXT: #NO_APP
> -; CHECK-NEXT: jl .L{{.*}}
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>  entry:
>    call void asm sideeffect "blah $0", "{f0}"(double %val)
> @@ -281,7 +281,7 @@ define void @f14(fp128 *%ptr1, fp128 *%p
>  ; CHECK-NEXT: mxbr
>  ; CHECK-NEXT: std
>  ; CHECK-NEXT: std
> -; CHECK-NEXT: jl .L{{.*}}
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>  entry:
>    %val1 = load fp128 , fp128 *%ptr1
> @@ -309,7 +309,7 @@ define float @f15(float %val, float %dum
>  ; CHECK-NEXT: #APP
>  ; CHECK-NEXT: blah %f2
>  ; CHECK-NEXT: #NO_APP
> -; CHECK-NEXT: jl .L{{.*}}
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>  entry:
>    call void asm sideeffect "blah $0", "{f2}"(float %val)
> @@ -332,7 +332,7 @@ define double @f16(double %val, double %
>  ; CHECK-NEXT: #APP
>  ; CHECK-NEXT: blah %f2
>  ; CHECK-NEXT: #NO_APP
> -; CHECK-NEXT: jl .L{{.*}}
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>  entry:
>    call void asm sideeffect "blah $0", "{f2}"(double %val)
> @@ -351,7 +351,7 @@ exit:
>  define float @f17(float %a, float %b, float *%dest) {
>  ; CHECK-LABEL: f17:
>  ; CHECK: aebr %f0, %f2
> -; CHECK-NEXT: jl .L{{.*}}
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>  entry:
>    %res = fadd float %a, %b
> @@ -371,7 +371,7 @@ exit:
>  define float @f18(float %dummy, float %a, float *%dest) {
>  ; CHECK-LABEL: f18:
>  ; CHECK: lnebr %f0, %f2
> -; CHECK-NEXT: jl .L{{.*}}
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>  entry:
>    %abs = call float @llvm.fabs.f32(float %a)
> @@ -391,7 +391,7 @@ exit:
>  define float @f19(float %dummy, float %a, float *%dest) {
>  ; CHECK-LABEL: f19:
>  ; CHECK: lcebr %f0, %f2
> -; CHECK-NEXT: jle .L{{.*}}
> +; CHECK-NEXT: bler %r14
>  ; CHECK: br %r14
>  entry:
>    %res = fsub float -0.0, %a
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/fp-cmp-05.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/fp-cmp-
> 05.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/fp-cmp-05.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/fp-cmp-05.ll Thu Apr  7 11:11:44 2016
> @@ -10,7 +10,7 @@
>  define float @f1(float %a, float %b, float %f) {
>  ; CHECK-LABEL: f1:
>  ; CHECK: lcebr
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>    %neg = fsub float -0.0, %f
>    %cond = fcmp oeq float %neg, 0.0
>    %res = select i1 %cond, float %a, float %b
> @@ -21,7 +21,7 @@ define float @f1(float %a, float %b, flo
>  define double @f2(double %a, double %b, double %f) {
>  ; CHECK-LABEL: f2:
>  ; CHECK: lcdbr
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>    %neg = fsub double -0.0, %f
>    %cond = fcmp oeq double %neg, 0.0
>    %res = select i1 %cond, double %a, double %b
> @@ -34,7 +34,7 @@ declare float @llvm.fabs.f32(float %f)
>  define float @f3(float %a, float %b, float %f) {
>  ; CHECK-LABEL: f3:
>  ; CHECK: lnebr
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>    %abs = call float @llvm.fabs.f32(float %f)
>    %neg = fsub float -0.0, %abs
>    %cond = fcmp oeq float %neg, 0.0
> @@ -47,7 +47,7 @@ declare double @llvm.fabs.f64(double %f)
>  define double @f4(double %a, double %b, double %f) {
>  ; CHECK-LABEL: f4:
>  ; CHECK: lndbr
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>    %abs = call double @llvm.fabs.f64(double %f)
>    %neg = fsub double -0.0, %abs
>    %cond = fcmp oeq double %neg, 0.0
> @@ -60,7 +60,7 @@ define double @f4(double %a, double %b,
>  define float @f5(float %a, float %b, float %f) {
>  ; CHECK-LABEL: f5:
>  ; CHECK: lpebr
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>    %abs = call float @llvm.fabs.f32(float %f)
>    %cond = fcmp oeq float %abs, 0.0
>    %res = select i1 %cond, float %a, float %b
> @@ -71,7 +71,7 @@ define float @f5(float %a, float %b, flo
>  define double @f6(double %a, double %b, double %f) {
>  ; CHECK-LABEL: f6:
>  ; CHECK: lpdbr
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>    %abs = call double @llvm.fabs.f64(double %f)
>    %cond = fcmp oeq double %abs, 0.0
>    %res = select i1 %cond, double %a, double %b
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/fp-move-09.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/fp-move-
> 09.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/fp-move-09.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/fp-move-09.ll Thu Apr  7 11:11:44 2016
> @@ -32,7 +32,8 @@ define void @f2(float %val, i8 *%ptr) {
>  ; Like f2, but with a conditional store.
>  define void @f3(float %val, i8 *%ptr, i32 %which) {
>  ; CHECK-LABEL: f3:
> -; CHECK: cijlh %r3, 0,
> +; CHECK: ciblh %r3, 0, 0(%r14)
> +
>  ; CHECK: lgdr [[REG:%r[0-5]]], %f0
>  ; CHECK: stch [[REG]], 0(%r2)
>  ; CHECK: br %r14
> @@ -48,7 +49,7 @@ define void @f3(float %val, i8 *%ptr, i3
>  ; ...and again with 16-bit memory.
>  define void @f4(float %val, i16 *%ptr, i32 %which) {
>  ; CHECK-LABEL: f4:
> -; CHECK: cijlh %r3, 0,
> +; CHECK: ciblh %r3, 0, 0(%r14)
>  ; CHECK: lgdr [[REG:%r[0-5]]], %f0
>  ; CHECK: sthh [[REG]], 0(%r2)
>  ; CHECK: br %r14
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/fp-move-10.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/fp-move-
> 10.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/fp-move-10.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/fp-move-10.ll Thu Apr  7 11:11:44 2016
> @@ -31,7 +31,7 @@ define void @f2(float %val, i8 *%ptr) {
>  ; Like f2, but with a conditional store.
>  define void @f3(float %val, i8 *%ptr, i32 %which) {
>  ; CHECK-LABEL: f3:
> -; CHECK-DAG: cijlh %r3, 0,
> +; CHECK-DAG: ciblh %r3, 0, 0(%r14)
>  ; CHECK-DAG: vlgvf [[REG:%r[0-5]]], %v0, 0
>  ; CHECK: stc [[REG]], 0(%r2)
>  ; CHECK: br %r14
> @@ -47,7 +47,7 @@ define void @f3(float %val, i8 *%ptr, i3
>  ; ...and again with 16-bit memory.
>  define void @f4(float %val, i16 *%ptr, i32 %which) {
>  ; CHECK-LABEL: f4:
> -; CHECK-DAG: cijlh %r3, 0,
> +; CHECK-DAG: ciblh %r3, 0, 0(%r14)
>  ; CHECK-DAG: vlgvf [[REG:%r[0-5]]], %v0, 0
>  ; CHECK: sth [[REG]], 0(%r2)
>  ; CHECK: br %r14
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/fp-sqrt-01.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/fp-sqrt-
> 01.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/fp-sqrt-01.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/fp-sqrt-01.ll Thu Apr  7 11:11:44 2016
> @@ -159,9 +159,7 @@ define float @f8(float %dummy, float %va
>  ; CHECK-LABEL: f8:
>  ; CHECK: sqebr %f0, %f2
>  ; CHECK: cebr %f0, %f0
> -; CHECK: jo [[LABEL:\.L.*]]
> -; CHECK: br %r14
> -; CHECK: [[LABEL]]:
> +; CHECK: bnor %r14
>  ; CHECK: ler %f0, %f2
>  ; CHECK: jg sqrtf at PLT
>    %res = tail call float @sqrtf(float %val)
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/fp-sqrt-02.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/fp-sqrt-
> 02.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/fp-sqrt-02.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/fp-sqrt-02.ll Thu Apr  7 11:11:44 2016
> @@ -161,9 +161,7 @@ define double @f8(double %dummy, double
>  ; CHECK-LABEL: f8:
>  ; CHECK: sqdbr %f0, %f2
>  ; CHECK: cdbr %f0, %f0
> -; CHECK: jo [[LABEL:\.L.*]]
> -; CHECK: br %r14
> -; CHECK: [[LABEL]]:
> +; CHECK: bnor %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: jg sqrt at PLT
>    %res = tail call double @sqrt(double %val)
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/htm-intrinsics.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/htm-
> intrinsics.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/htm-intrinsics.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/htm-intrinsics.ll Thu Apr  7 11:11:44
> 2016
> @@ -67,7 +67,7 @@ define void @test_tbegin_nofloat3(i32 *%
>  ; CHECK-NOT: stmg
>  ; CHECK-NOT: std
>  ; CHECK: tbegin 0, 65292
> -; CHECK: jnh  {{\.L*}}
> +; CHECK: bnhr %r14
>  ; CHECK: mvhi 0(%r2), 0
>  ; CHECK: br %r14
>    %res = call i32 @llvm.s390.tbegin.nofloat(i8 *null, i32 65292)
> @@ -90,7 +90,7 @@ define i32 @test_tbegin_nofloat4(i32 %pa
>  ; CHECK: tbegin 0, 65292
>  ; CHECK: ipm %r2
>  ; CHECK: srl %r2, 28
> -; CHECK: cijlh %r2, 2,  {{\.L*}}
> +; CHECK: ciblh %r2, 2, 0(%r14)
>  ; CHECK: mvhi 0(%r3), 0
>  ; CHECK: br %r14
>    %res = call i32 @llvm.s390.tbegin.nofloat(i8 *null, i32 65292)
> @@ -198,7 +198,7 @@ define i32 @test_tend1() {
>  define void @test_tend3(i32 *%ptr) {
>  ; CHECK-LABEL: test_tend3:
>  ; CHECK: tend
> -; CHECK: je  {{\.L*}}
> +; CHECK: ber %r14
>  ; CHECK: mvhi 0(%r2), 0
>  ; CHECK: br %r14
>    %res = call i32 @llvm.s390.tend()
> @@ -219,7 +219,7 @@ define i32 @test_tend2(i32 %pad, i32 *%p
>  ; CHECK: tend
>  ; CHECK: ipm %r2
>  ; CHECK: srl %r2, 28
> -; CHECK: cijlh %r2, 2,  {{\.L*}}
> +; CHECK: ciblh %r2, 2, 0(%r14)
>  ; CHECK: mvhi 0(%r3), 0
>  ; CHECK: br %r14
>    %res = call i32 @llvm.s390.tend()
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-01.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 01.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-01.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-01.ll Thu Apr  7 11:11:44 2016
> @@ -154,7 +154,7 @@ define void @f10(i32 %lhs, i64 %base, i6
>  define double @f11(double %a, double %b, i32 %rhs, i16 *%src) {
>  ; CHECK-LABEL: f11:
>  ; CHECK: ch %r2, 0(%r3)
> -; CHECK-NEXT: jh {{\.L.*}}
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %half = load i16 , i16 *%src
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-02.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 02.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-02.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-02.ll Thu Apr  7 11:11:44 2016
> @@ -7,7 +7,7 @@ declare i32 @foo()
>  ; Check register comparison.
>  define double @f1(double %a, double %b, i32 %i1, i32 %i2) {
>  ; CHECK-LABEL: f1:
> -; CHECK: crjl %r2, %r3
> +; CHECK: crbl %r2, %r3, 0(%r14)
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp slt i32 %i1, %i2
> @@ -19,7 +19,7 @@ define double @f1(double %a, double %b,
>  define double @f2(double %a, double %b, i32 %i1, i32 *%ptr) {
>  ; CHECK-LABEL: f2:
>  ; CHECK: c %r2, 0(%r3)
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %i2 = load i32 , i32 *%ptr
> @@ -32,7 +32,7 @@ define double @f2(double %a, double %b,
>  define double @f3(double %a, double %b, i32 %i1, i32 *%base) {
>  ; CHECK-LABEL: f3:
>  ; CHECK: c %r2, 4092(%r3)
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i32, i32 *%base, i64 1023
> @@ -46,7 +46,7 @@ define double @f3(double %a, double %b,
>  define double @f4(double %a, double %b, i32 %i1, i32 *%base) {
>  ; CHECK-LABEL: f4:
>  ; CHECK: cy %r2, 4096(%r3)
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i32, i32 *%base, i64 1024
> @@ -60,7 +60,7 @@ define double @f4(double %a, double %b,
>  define double @f5(double %a, double %b, i32 %i1, i32 *%base) {
>  ; CHECK-LABEL: f5:
>  ; CHECK: cy %r2, 524284(%r3)
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i32, i32 *%base, i64 131071
> @@ -76,7 +76,7 @@ define double @f6(double %a, double %b,
>  ; CHECK-LABEL: f6:
>  ; CHECK: agfi %r3, 524288
>  ; CHECK: c %r2, 0(%r3)
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i32, i32 *%base, i64 131072
> @@ -90,7 +90,7 @@ define double @f6(double %a, double %b,
>  define double @f7(double %a, double %b, i32 %i1, i32 *%base) {
>  ; CHECK-LABEL: f7:
>  ; CHECK: cy %r2, -4(%r3)
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i32, i32 *%base, i64 -1
> @@ -104,7 +104,7 @@ define double @f7(double %a, double %b,
>  define double @f8(double %a, double %b, i32 %i1, i32 *%base) {
>  ; CHECK-LABEL: f8:
>  ; CHECK: cy %r2, -524288(%r3)
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i32, i32 *%base, i64 -131072
> @@ -120,7 +120,7 @@ define double @f9(double %a, double %b,
>  ; CHECK-LABEL: f9:
>  ; CHECK: agfi %r3, -524292
>  ; CHECK: c %r2, 0(%r3)
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i32, i32 *%base, i64 -131073
> @@ -134,7 +134,7 @@ define double @f9(double %a, double %b,
>  define double @f10(double %a, double %b, i32 %i1, i64 %base, i64 %index)
> {
>  ; CHECK-LABEL: f10:
>  ; CHECK: c %r2, 4092({{%r4,%r3|%r3,%r4}})
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %add1 = add i64 %base, %index
> @@ -150,7 +150,7 @@ define double @f10(double %a, double %b,
>  define double @f11(double %a, double %b, i32 %i1, i64 %base, i64 %index)
> {
>  ; CHECK-LABEL: f11:
>  ; CHECK: cy %r2, 4096({{%r4,%r3|%r3,%r4}})
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %add1 = add i64 %base, %index
> @@ -186,7 +186,7 @@ while.end:
>  define double @f13(double %a, double %b, i32 %i2, i32 *%ptr) {
>  ; CHECK-LABEL: f13:
>  ; CHECK: c %r2, 0(%r3)
> -; CHECK-NEXT: jh {{\.L.*}}
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %i1 = load i32 , i32 *%ptr
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-03.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 03.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-03.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-03.ll Thu Apr  7 11:11:44 2016
> @@ -5,7 +5,7 @@
>  ; Check register comparison.
>  define double @f1(double %a, double %b, i32 %i1, i32 %i2) {
>  ; CHECK-LABEL: f1:
> -; CHECK: clrjl %r2, %r3
> +; CHECK: clrbl %r2, %r3, 0(%r14)
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp ult i32 %i1, %i2
> @@ -17,7 +17,7 @@ define double @f1(double %a, double %b,
>  define double @f2(double %a, double %b, i32 %i1, i32 *%ptr) {
>  ; CHECK-LABEL: f2:
>  ; CHECK: cl %r2, 0(%r3)
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %i2 = load i32 , i32 *%ptr
> @@ -30,7 +30,7 @@ define double @f2(double %a, double %b,
>  define double @f3(double %a, double %b, i32 %i1, i32 *%base) {
>  ; CHECK-LABEL: f3:
>  ; CHECK: cl %r2, 4092(%r3)
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i32, i32 *%base, i64 1023
> @@ -44,7 +44,7 @@ define double @f3(double %a, double %b,
>  define double @f4(double %a, double %b, i32 %i1, i32 *%base) {
>  ; CHECK-LABEL: f4:
>  ; CHECK: cly %r2, 4096(%r3)
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i32, i32 *%base, i64 1024
> @@ -58,7 +58,7 @@ define double @f4(double %a, double %b,
>  define double @f5(double %a, double %b, i32 %i1, i32 *%base) {
>  ; CHECK-LABEL: f5:
>  ; CHECK: cly %r2, 524284(%r3)
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i32, i32 *%base, i64 131071
> @@ -74,7 +74,7 @@ define double @f6(double %a, double %b,
>  ; CHECK-LABEL: f6:
>  ; CHECK: agfi %r3, 524288
>  ; CHECK: cl %r2, 0(%r3)
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i32, i32 *%base, i64 131072
> @@ -88,7 +88,7 @@ define double @f6(double %a, double %b,
>  define double @f7(double %a, double %b, i32 %i1, i32 *%base) {
>  ; CHECK-LABEL: f7:
>  ; CHECK: cly %r2, -4(%r3)
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i32, i32 *%base, i64 -1
> @@ -102,7 +102,7 @@ define double @f7(double %a, double %b,
>  define double @f8(double %a, double %b, i32 %i1, i32 *%base) {
>  ; CHECK-LABEL: f8:
>  ; CHECK: cly %r2, -524288(%r3)
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i32, i32 *%base, i64 -131072
> @@ -118,7 +118,7 @@ define double @f9(double %a, double %b,
>  ; CHECK-LABEL: f9:
>  ; CHECK: agfi %r3, -524292
>  ; CHECK: cl %r2, 0(%r3)
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i32, i32 *%base, i64 -131073
> @@ -132,7 +132,7 @@ define double @f9(double %a, double %b,
>  define double @f10(double %a, double %b, i32 %i1, i64 %base, i64 %index)
> {
>  ; CHECK-LABEL: f10:
>  ; CHECK: cl %r2, 4092({{%r4,%r3|%r3,%r4}})
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %add1 = add i64 %base, %index
> @@ -148,7 +148,7 @@ define double @f10(double %a, double %b,
>  define double @f11(double %a, double %b, i32 %i1, i64 %base, i64 %index)
> {
>  ; CHECK-LABEL: f11:
>  ; CHECK: cly %r2, 4096({{%r4,%r3|%r3,%r4}})
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %add1 = add i64 %base, %index
> @@ -164,7 +164,7 @@ define double @f11(double %a, double %b,
>  define double @f12(double %a, double %b, i32 %i2, i32 *%ptr) {
>  ; CHECK-LABEL: f12:
>  ; CHECK: cl %r2, 0(%r3)
> -; CHECK-NEXT: jh {{\.L.*}}
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %i1 = load i32 , i32 *%ptr
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-04.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 04.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-04.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-04.ll Thu Apr  7 11:11:44 2016
> @@ -110,7 +110,7 @@ define void @f7(i64 %lhs, i64 %base, i64
>  define double @f8(double %a, double %b, i64 %rhs, i16 *%src) {
>  ; CHECK-LABEL: f8:
>  ; CHECK: cgh %r2, 0(%r3)
> -; CHECK-NEXT: jh {{\.L.*}}
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %half = load i16 , i16 *%src
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-05.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 05.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-05.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-05.ll Thu Apr  7 11:11:44 2016
> @@ -8,7 +8,7 @@ declare i64 @foo()
>  define double @f1(double %a, double %b, i64 %i1, i32 %unext) {
>  ; CHECK-LABEL: f1:
>  ; CHECK: cgfr %r2, %r3
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %i2 = sext i32 %unext to i64
> @@ -32,7 +32,7 @@ define double @f2(double %a, double %b,
>  define double @f3(double %a, double %b, i64 %i1, i32 %unext) {
>  ; CHECK-LABEL: f3:
>  ; CHECK: cgfr %r2, %r3
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %i2 = sext i32 %unext to i64
> @@ -45,7 +45,7 @@ define double @f3(double %a, double %b,
>  define double @f4(double %a, double %b, i64 %i1, i32 %unext) {
>  ; CHECK-LABEL: f4:
>  ; CHECK: cgfr %r2, %r3
> -; CHECK-NEXT: jlh
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %i2 = sext i32 %unext to i64
> @@ -58,7 +58,7 @@ define double @f4(double %a, double %b,
>  define double @f5(double %a, double %b, i64 %i1, i32 *%ptr) {
>  ; CHECK-LABEL: f5:
>  ; CHECK: cgf %r2, 0(%r3)
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %unext = load i32 , i32 *%ptr
> @@ -84,7 +84,7 @@ define double @f6(double %a, double %b,
>  define double @f7(double %a, double %b, i64 %i1, i32 *%ptr) {
>  ; CHECK-LABEL: f7:
>  ; CHECK: cgf %r2, 0(%r3)
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %unext = load i32 , i32 *%ptr
> @@ -98,7 +98,7 @@ define double @f7(double %a, double %b,
>  define double @f8(double %a, double %b, i64 %i1, i32 *%ptr) {
>  ; CHECK-LABEL: f8:
>  ; CHECK: cgf %r2, 0(%r3)
> -; CHECK-NEXT: jlh
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %unext = load i32 , i32 *%ptr
> @@ -112,7 +112,7 @@ define double @f8(double %a, double %b,
>  define double @f9(double %a, double %b, i64 %i1, i32 *%base) {
>  ; CHECK-LABEL: f9:
>  ; CHECK: cgf %r2, 524284(%r3)
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i32, i32 *%base, i64 131071
> @@ -129,7 +129,7 @@ define double @f10(double %a, double %b,
>  ; CHECK-LABEL: f10:
>  ; CHECK: agfi %r3, 524288
>  ; CHECK: cgf %r2, 0(%r3)
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i32, i32 *%base, i64 131072
> @@ -144,7 +144,7 @@ define double @f10(double %a, double %b,
>  define double @f11(double %a, double %b, i64 %i1, i32 *%base) {
>  ; CHECK-LABEL: f11:
>  ; CHECK: cgf %r2, -4(%r3)
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i32, i32 *%base, i64 -1
> @@ -159,7 +159,7 @@ define double @f11(double %a, double %b,
>  define double @f12(double %a, double %b, i64 %i1, i32 *%base) {
>  ; CHECK-LABEL: f12:
>  ; CHECK: cgf %r2, -524288(%r3)
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i32, i32 *%base, i64 -131072
> @@ -176,7 +176,7 @@ define double @f13(double %a, double %b,
>  ; CHECK-LABEL: f13:
>  ; CHECK: agfi %r3, -524292
>  ; CHECK: cgf %r2, 0(%r3)
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i32, i32 *%base, i64 -131073
> @@ -191,7 +191,7 @@ define double @f13(double %a, double %b,
>  define double @f14(double %a, double %b, i64 %i1, i64 %base, i64 %index)
> {
>  ; CHECK-LABEL: f14:
>  ; CHECK: cgf %r2, 524284({{%r4,%r3|%r3,%r4}})
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %add1 = add i64 %base, %index
> @@ -295,7 +295,7 @@ define i64 @f15(i32 *%ptr0) {
>  define double @f16(double %a, double %b, i64 %i1, i32 %unext) {
>  ; CHECK-LABEL: f16:
>  ; CHECK: cgfr %r2, %r3
> -; CHECK-NEXT: jh
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %i2 = sext i32 %unext to i64
> @@ -308,7 +308,7 @@ define double @f16(double %a, double %b,
>  define double @f17(double %a, double %b, i64 %i2, i32 *%ptr) {
>  ; CHECK-LABEL: f17:
>  ; CHECK: cgf %r2, 0(%r3)
> -; CHECK-NEXT: jh {{\.L.*}}
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %unext = load i32 , i32 *%ptr
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-06.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 06.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-06.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-06.ll Thu Apr  7 11:11:44 2016
> @@ -8,7 +8,7 @@ declare i64 @foo()
>  define double @f1(double %a, double %b, i64 %i1, i32 %unext) {
>  ; CHECK-LABEL: f1:
>  ; CHECK: clgfr %r2, %r3
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %i2 = zext i32 %unext to i64
> @@ -21,7 +21,7 @@ define double @f1(double %a, double %b,
>  define double @f2(double %a, double %b, i64 %i1, i64 %unext) {
>  ; CHECK-LABEL: f2:
>  ; CHECK: clgfr %r2, %r3
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %i2 = and i64 %unext, 4294967295
> @@ -56,7 +56,7 @@ define double @f4(double %a, double %b,
>  define double @f5(double %a, double %b, i64 %i1, i32 %unext) {
>  ; CHECK-LABEL: f5:
>  ; CHECK: clgfr %r2, %r3
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %i2 = zext i32 %unext to i64
> @@ -69,7 +69,7 @@ define double @f5(double %a, double %b,
>  define double @f6(double %a, double %b, i64 %i1, i64 %unext) {
>  ; CHECK-LABEL: f6:
>  ; CHECK: clgfr %r2, %r3
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %i2 = and i64 %unext, 4294967295
> @@ -82,7 +82,7 @@ define double @f6(double %a, double %b,
>  define double @f7(double %a, double %b, i64 %i1, i32 %unext) {
>  ; CHECK-LABEL: f7:
>  ; CHECK: clgfr %r2, %r3
> -; CHECK-NEXT: jlh
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %i2 = zext i32 %unext to i64
> @@ -95,7 +95,7 @@ define double @f7(double %a, double %b,
>  define double @f8(double %a, double %b, i64 %i1, i64 %unext) {
>  ; CHECK-LABEL: f8:
>  ; CHECK: clgfr %r2, %r3
> -; CHECK-NEXT: jlh
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %i2 = and i64 %unext, 4294967295
> @@ -108,7 +108,7 @@ define double @f8(double %a, double %b,
>  define double @f9(double %a, double %b, i64 %i1, i32 *%ptr) {
>  ; CHECK-LABEL: f9:
>  ; CHECK: clgf %r2, 0(%r3)
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %unext = load i32 , i32 *%ptr
> @@ -134,7 +134,7 @@ define double @f10(double %a, double %b,
>  define double @f11(double %a, double %b, i64 %i1, i32 *%ptr) {
>  ; CHECK-LABEL: f11:
>  ; CHECK: clgf %r2, 0(%r3)
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %unext = load i32 , i32 *%ptr
> @@ -148,7 +148,7 @@ define double @f11(double %a, double %b,
>  define double @f12(double %a, double %b, i64 %i1, i32 *%ptr) {
>  ; CHECK-LABEL: f12:
>  ; CHECK: clgf %r2, 0(%r3)
> -; CHECK-NEXT: jlh
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %unext = load i32 , i32 *%ptr
> @@ -162,7 +162,7 @@ define double @f12(double %a, double %b,
>  define double @f13(double %a, double %b, i64 %i1, i32 *%base) {
>  ; CHECK-LABEL: f13:
>  ; CHECK: clgf %r2, 524284(%r3)
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i32, i32 *%base, i64 131071
> @@ -179,7 +179,7 @@ define double @f14(double %a, double %b,
>  ; CHECK-LABEL: f14:
>  ; CHECK: agfi %r3, 524288
>  ; CHECK: clgf %r2, 0(%r3)
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i32, i32 *%base, i64 131072
> @@ -194,7 +194,7 @@ define double @f14(double %a, double %b,
>  define double @f15(double %a, double %b, i64 %i1, i32 *%base) {
>  ; CHECK-LABEL: f15:
>  ; CHECK: clgf %r2, -4(%r3)
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i32, i32 *%base, i64 -1
> @@ -209,7 +209,7 @@ define double @f15(double %a, double %b,
>  define double @f16(double %a, double %b, i64 %i1, i32 *%base) {
>  ; CHECK-LABEL: f16:
>  ; CHECK: clgf %r2, -524288(%r3)
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i32, i32 *%base, i64 -131072
> @@ -226,7 +226,7 @@ define double @f17(double %a, double %b,
>  ; CHECK-LABEL: f17:
>  ; CHECK: agfi %r3, -524292
>  ; CHECK: clgf %r2, 0(%r3)
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i32, i32 *%base, i64 -131073
> @@ -241,7 +241,7 @@ define double @f17(double %a, double %b,
>  define double @f18(double %a, double %b, i64 %i1, i64 %base, i64 %index)
> {
>  ; CHECK-LABEL: f18:
>  ; CHECK: clgf %r2, 524284({{%r4,%r3|%r3,%r4}})
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %add1 = add i64 %base, %index
> @@ -345,7 +345,7 @@ define i64 @f19(i32 *%ptr0) {
>  define double @f20(double %a, double %b, i64 %i1, i32 %unext) {
>  ; CHECK-LABEL: f20:
>  ; CHECK: clgfr %r2, %r3
> -; CHECK-NEXT: jh
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %i2 = zext i32 %unext to i64
> @@ -358,7 +358,7 @@ define double @f20(double %a, double %b,
>  define double @f21(double %a, double %b, i64 %i1, i64 %unext) {
>  ; CHECK-LABEL: f21:
>  ; CHECK: clgfr %r2, %r3
> -; CHECK-NEXT: jh
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %i2 = and i64 %unext, 4294967295
> @@ -371,7 +371,7 @@ define double @f21(double %a, double %b,
>  define double @f22(double %a, double %b, i64 %i2, i32 *%ptr) {
>  ; CHECK-LABEL: f22:
>  ; CHECK: clgf %r2, 0(%r3)
> -; CHECK-NEXT: jh {{\.L.*}}
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %unext = load i32 , i32 *%ptr
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-07.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 07.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-07.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-07.ll Thu Apr  7 11:11:44 2016
> @@ -5,7 +5,7 @@
>  ; Check CGR.
>  define double @f1(double %a, double %b, i64 %i1, i64 %i2) {
>  ; CHECK-LABEL: f1:
> -; CHECK: cgrjl %r2, %r3
> +; CHECK: cgrbl %r2, %r3, 0(%r14)
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp slt i64 %i1, %i2
> @@ -17,7 +17,7 @@ define double @f1(double %a, double %b,
>  define double @f2(double %a, double %b, i64 %i1, i64 *%ptr) {
>  ; CHECK-LABEL: f2:
>  ; CHECK: cg %r2, 0(%r3)
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %i2 = load i64 , i64 *%ptr
> @@ -30,7 +30,7 @@ define double @f2(double %a, double %b,
>  define double @f3(double %a, double %b, i64 %i1, i64 *%base) {
>  ; CHECK-LABEL: f3:
>  ; CHECK: cg %r2, 524280(%r3)
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i64, i64 *%base, i64 65535
> @@ -46,7 +46,7 @@ define double @f4(double %a, double %b,
>  ; CHECK-LABEL: f4:
>  ; CHECK: agfi %r3, 524288
>  ; CHECK: cg %r2, 0(%r3)
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i64, i64 *%base, i64 65536
> @@ -60,7 +60,7 @@ define double @f4(double %a, double %b,
>  define double @f5(double %a, double %b, i64 %i1, i64 *%base) {
>  ; CHECK-LABEL: f5:
>  ; CHECK: cg %r2, -8(%r3)
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i64, i64 *%base, i64 -1
> @@ -74,7 +74,7 @@ define double @f5(double %a, double %b,
>  define double @f6(double %a, double %b, i64 %i1, i64 *%base) {
>  ; CHECK-LABEL: f6:
>  ; CHECK: cg %r2, -524288(%r3)
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i64, i64 *%base, i64 -65536
> @@ -90,7 +90,7 @@ define double @f7(double %a, double %b,
>  ; CHECK-LABEL: f7:
>  ; CHECK: agfi %r3, -524296
>  ; CHECK: cg %r2, 0(%r3)
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i64, i64 *%base, i64 -65537
> @@ -104,7 +104,7 @@ define double @f7(double %a, double %b,
>  define double @f8(double %a, double %b, i64 %i1, i64 %base, i64 %index) {
>  ; CHECK-LABEL: f8:
>  ; CHECK: cg %r2, 524280({{%r4,%r3|%r3,%r4}})
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %add1 = add i64 %base, %index
> @@ -120,7 +120,7 @@ define double @f8(double %a, double %b,
>  define double @f9(double %a, double %b, i64 %i2, i64 *%ptr) {
>  ; CHECK-LABEL: f9:
>  ; CHECK: cg %r2, 0(%r3)
> -; CHECK-NEXT: jh {{\.L.*}}
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %i1 = load i64 , i64 *%ptr
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-08.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 08.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-08.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-08.ll Thu Apr  7 11:11:44 2016
> @@ -5,7 +5,7 @@
>  ; Check CLGR.
>  define double @f1(double %a, double %b, i64 %i1, i64 %i2) {
>  ; CHECK-LABEL: f1:
> -; CHECK: clgrjl %r2, %r3
> +; CHECK: clgrbl %r2, %r3, 0(%r14)
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp ult i64 %i1, %i2
> @@ -17,7 +17,7 @@ define double @f1(double %a, double %b,
>  define double @f2(double %a, double %b, i64 %i1, i64 *%ptr) {
>  ; CHECK-LABEL: f2:
>  ; CHECK: clg %r2, 0(%r3)
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %i2 = load i64 , i64 *%ptr
> @@ -30,7 +30,7 @@ define double @f2(double %a, double %b,
>  define double @f3(double %a, double %b, i64 %i1, i64 *%base) {
>  ; CHECK-LABEL: f3:
>  ; CHECK: clg %r2, 524280(%r3)
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i64, i64 *%base, i64 65535
> @@ -46,7 +46,7 @@ define double @f4(double %a, double %b,
>  ; CHECK-LABEL: f4:
>  ; CHECK: agfi %r3, 524288
>  ; CHECK: clg %r2, 0(%r3)
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i64, i64 *%base, i64 65536
> @@ -60,7 +60,7 @@ define double @f4(double %a, double %b,
>  define double @f5(double %a, double %b, i64 %i1, i64 *%base) {
>  ; CHECK-LABEL: f5:
>  ; CHECK: clg %r2, -8(%r3)
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i64, i64 *%base, i64 -1
> @@ -74,7 +74,7 @@ define double @f5(double %a, double %b,
>  define double @f6(double %a, double %b, i64 %i1, i64 *%base) {
>  ; CHECK-LABEL: f6:
>  ; CHECK: clg %r2, -524288(%r3)
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i64, i64 *%base, i64 -65536
> @@ -90,7 +90,7 @@ define double @f7(double %a, double %b,
>  ; CHECK-LABEL: f7:
>  ; CHECK: agfi %r3, -524296
>  ; CHECK: clg %r2, 0(%r3)
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i64, i64 *%base, i64 -65537
> @@ -104,7 +104,7 @@ define double @f7(double %a, double %b,
>  define double @f8(double %a, double %b, i64 %i1, i64 %base, i64 %index) {
>  ; CHECK-LABEL: f8:
>  ; CHECK: clg %r2, 524280({{%r4,%r3|%r3,%r4}})
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %add1 = add i64 %base, %index
> @@ -120,7 +120,7 @@ define double @f8(double %a, double %b,
>  define double @f9(double %a, double %b, i64 %i2, i64 *%ptr) {
>  ; CHECK-LABEL: f9:
>  ; CHECK: clg %r2, 0(%r3)
> -; CHECK-NEXT: jh {{\.L.*}}
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %i1 = load i64 , i64 *%ptr
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-09.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 09.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-09.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-09.ll Thu Apr  7 11:11:44 2016
> @@ -9,7 +9,8 @@ define double @f1(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp slt i32 %i1, 0
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -20,7 +21,8 @@ define double @f2(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp slt i32 %i1, 2
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -31,7 +33,8 @@ define double @f3(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp slt i32 %i1, 127
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -43,7 +46,8 @@ define double @f4(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp slt i32 %i1, 128
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -55,7 +59,8 @@ define double @f5(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp slt i32 %i1, 32767
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -67,7 +72,8 @@ define double @f6(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp slt i32 %i1, 32768
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -79,7 +85,8 @@ define double @f7(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp eq i32 %i1, 2147483647
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -91,7 +98,8 @@ define double @f8(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp eq i32 %i1, 2147483648
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -102,7 +110,8 @@ define double @f9(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp slt i32 %i1, -1
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -113,7 +122,8 @@ define double @f10(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp slt i32 %i1, -128
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -125,7 +135,8 @@ define double @f11(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp slt i32 %i1, -129
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -137,7 +148,8 @@ define double @f12(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp slt i32 %i1, -32768
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -149,7 +161,8 @@ define double @f13(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp slt i32 %i1, -32769
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -161,7 +174,8 @@ define double @f14(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp eq i32 %i1, -2147483648
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -173,7 +187,8 @@ define double @f15(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp eq i32 %i1, -2147483649
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -184,7 +199,8 @@ define double @f16(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp slt i32 %i1, 1
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -195,7 +211,8 @@ define double @f17(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp sge i32 %i1, 1
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -206,7 +223,8 @@ define double @f18(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp sgt i32 %i1, -1
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -217,6 +235,7 @@ define double @f19(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp sle i32 %i1, -1
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-10.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 10.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-10.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-10.ll Thu Apr  7 11:11:44 2016
> @@ -10,7 +10,8 @@ define double @f1(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp ugt i32 %i1, 1
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -21,7 +22,8 @@ define double @f2(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp ult i32 %i1, 255
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -33,7 +35,8 @@ define double @f3(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp ult i32 %i1, 256
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -45,6 +48,7 @@ define double @f4(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp ult i32 %i1, 4294967280
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-11.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 11.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-11.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-11.ll Thu Apr  7 11:11:44 2016
> @@ -9,7 +9,8 @@ define double @f1(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp slt i64 %i1, 0
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -20,7 +21,8 @@ define double @f2(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp slt i64 %i1, 1
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -31,7 +33,8 @@ define double @f3(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp slt i64 %i1, 127
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -43,7 +46,8 @@ define double @f4(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp slt i64 %i1, 128
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -55,7 +59,8 @@ define double @f5(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp slt i64 %i1, 32767
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -67,7 +72,8 @@ define double @f6(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp slt i64 %i1, 32768
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -79,7 +85,8 @@ define double @f7(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp slt i64 %i1, 2147483647
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -90,7 +97,8 @@ define double @f8(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp slt i64 %i1, 2147483648
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -101,7 +109,8 @@ define double @f9(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp slt i64 %i1, -1
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -112,7 +121,8 @@ define double @f10(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp slt i64 %i1, -128
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -124,7 +134,8 @@ define double @f11(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp slt i64 %i1, -129
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -136,7 +147,8 @@ define double @f12(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp slt i64 %i1, -32768
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -148,7 +160,8 @@ define double @f13(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp slt i64 %i1, -32769
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -160,7 +173,8 @@ define double @f14(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp slt i64 %i1, -2147483648
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -171,6 +185,7 @@ define double @f15(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp slt i64 %i1, -2147483649
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-12.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 12.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-12.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-12.ll Thu Apr  7 11:11:44 2016
> @@ -10,7 +10,8 @@ define double @f1(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp ugt i64 %i1, 1
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -21,7 +22,8 @@ define double @f2(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp ult i64 %i1, 255
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -33,7 +35,8 @@ define double @f3(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp ult i64 %i1, 256
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -45,7 +48,8 @@ define double @f4(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp ult i64 %i1, 4294967295
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -57,7 +61,8 @@ define double @f5(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp ult i64 %i1, 4294967296
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>  ; Check the next value up, which must use a register comparison.
> @@ -67,6 +72,7 @@ define double @f6(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp ult i64 %i1, 4294967297
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-13.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 13.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-13.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-13.ll Thu Apr  7 11:11:44 2016
> @@ -9,7 +9,8 @@ define double @f1(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp eq i64 %i1, 0
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -20,7 +21,8 @@ define double @f2(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp eq i64 %i1, 127
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -32,7 +34,8 @@ define double @f3(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp eq i64 %i1, 128
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -44,7 +47,8 @@ define double @f4(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp eq i64 %i1, 32767
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -56,7 +60,8 @@ define double @f5(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp eq i64 %i1, 32768
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -68,7 +73,8 @@ define double @f6(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp eq i64 %i1, 2147483647
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -80,7 +86,8 @@ define double @f7(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp eq i64 %i1, 2147483648
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -92,7 +99,8 @@ define double @f8(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp eq i64 %i1, 4294967295
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -103,7 +111,8 @@ define double @f9(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp eq i64 %i1, 4294967296
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -114,7 +123,8 @@ define double @f10(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp eq i64 %i1, -1
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -125,7 +135,8 @@ define double @f11(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp eq i64 %i1, -128
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -137,7 +148,8 @@ define double @f12(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp eq i64 %i1, -129
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -149,7 +161,8 @@ define double @f13(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp eq i64 %i1, -32768
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -161,7 +174,8 @@ define double @f14(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp eq i64 %i1, -32769
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -173,7 +187,8 @@ define double @f15(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp eq i64 %i1, -2147483648
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -184,6 +199,7 @@ define double @f16(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp eq i64 %i1, -2147483649
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-14.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 14.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-14.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-14.ll Thu Apr  7 11:11:44 2016
> @@ -9,7 +9,8 @@ define double @f1(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp ne i64 %i1, 0
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -20,7 +21,8 @@ define double @f2(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp ne i64 %i1, 127
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -32,7 +34,8 @@ define double @f3(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp ne i64 %i1, 128
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -44,7 +47,8 @@ define double @f4(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp ne i64 %i1, 32767
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -56,7 +60,8 @@ define double @f5(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp ne i64 %i1, 32768
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -68,7 +73,8 @@ define double @f6(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp ne i64 %i1, 2147483647
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -80,7 +86,8 @@ define double @f7(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp ne i64 %i1, 2147483648
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -92,7 +99,8 @@ define double @f8(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp ne i64 %i1, 4294967295
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -103,7 +111,8 @@ define double @f9(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp ne i64 %i1, 4294967296
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -114,7 +123,8 @@ define double @f10(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp ne i64 %i1, -1
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -125,7 +135,8 @@ define double @f11(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp ne i64 %i1, -128
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -137,7 +148,8 @@ define double @f12(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp ne i64 %i1, -129
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -149,7 +161,8 @@ define double @f13(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp ne i64 %i1, -32768
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -161,7 +174,8 @@ define double @f14(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp ne i64 %i1, -32769
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -173,7 +187,8 @@ define double @f15(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp ne i64 %i1, -2147483648
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> @@ -184,6 +199,7 @@ define double @f16(double %a, double %b,
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %cond = icmp ne i64 %i1, -2147483649
> -  %res = select i1 %cond, double %a, double %b
> +  %tmp = select i1 %cond, double %a, double %b
> +  %res = fadd double %tmp, 1.0
>    ret double %res
>  }
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-15.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 15.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-15.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-15.ll Thu Apr  7 11:11:44 2016
> @@ -6,7 +6,7 @@
>  define double @f1(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f1:
>  ; CHECK: cli 0(%r2), 1
> -; CHECK-NEXT: jh
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %cond = icmp ugt i8 %val, 1
> @@ -18,7 +18,7 @@ define double @f1(double %a, double %b,
>  define double @f2(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f2:
>  ; CHECK: cli 0(%r2), 254
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %cond = icmp ult i8 %val, 254
> @@ -30,7 +30,7 @@ define double @f2(double %a, double %b,
>  define double @f3(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f3:
>  ; CHECK: cli 0(%r2), 127
> -; CHECK-NEXT: jh
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %cond = icmp slt i8 %val, 0
> @@ -42,7 +42,7 @@ define double @f3(double %a, double %b,
>  define double @f4(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f4:
>  ; CHECK: cli 0(%r2), 127
> -; CHECK-NEXT: jh
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %cond = icmp sle i8 %val, -1
> @@ -54,7 +54,7 @@ define double @f4(double %a, double %b,
>  define double @f5(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f5:
>  ; CHECK: cli 0(%r2), 128
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %cond = icmp sge i8 %val, 0
> @@ -66,7 +66,7 @@ define double @f5(double %a, double %b,
>  define double @f6(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f6:
>  ; CHECK: cli 0(%r2), 128
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %cond = icmp sgt i8 %val, -1
> @@ -78,7 +78,7 @@ define double @f6(double %a, double %b,
>  define double @f7(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f7:
>  ; CHECK: cli 0(%r2), 128
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %cond = icmp eq i8 %val, -128
> @@ -90,7 +90,7 @@ define double @f7(double %a, double %b,
>  define double @f8(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f8:
>  ; CHECK: cli 0(%r2), 0
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %cond = icmp eq i8 %val, 0
> @@ -102,7 +102,7 @@ define double @f8(double %a, double %b,
>  define double @f9(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f9:
>  ; CHECK: cli 0(%r2), 127
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %cond = icmp eq i8 %val, 127
> @@ -114,7 +114,7 @@ define double @f9(double %a, double %b,
>  define double @f10(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f10:
>  ; CHECK: cli 0(%r2), 255
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %cond = icmp eq i8 %val, 255
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-16.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 16.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-16.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-16.ll Thu Apr  7 11:11:44 2016
> @@ -7,7 +7,7 @@
>  define double @f1(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f1:
>  ; CHECK: cli 0(%r2), 0
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = zext i8 %val to i32
> @@ -20,7 +20,7 @@ define double @f1(double %a, double %b,
>  define double @f2(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f2:
>  ; CHECK: cli 0(%r2), 255
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = zext i8 %val to i32
> @@ -58,7 +58,7 @@ define double @f4(double %a, double %b,
>  define double @f5(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f5:
>  ; CHECK: cli 0(%r2), 0
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = sext i8 %val to i32
> @@ -71,7 +71,7 @@ define double @f5(double %a, double %b,
>  define double @f6(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f6:
>  ; CHECK: cli 0(%r2), 127
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = sext i8 %val to i32
> @@ -97,7 +97,7 @@ define double @f7(double %a, double %b,
>  define double @f8(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f8:
>  ; CHECK: cli 0(%r2), 255
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = sext i8 %val to i32
> @@ -110,7 +110,7 @@ define double @f8(double %a, double %b,
>  define double @f9(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f9:
>  ; CHECK: cli 0(%r2), 128
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = sext i8 %val to i32
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-17.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 17.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-17.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-17.ll Thu Apr  7 11:11:44 2016
> @@ -7,7 +7,7 @@
>  define double @f1(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f1:
>  ; CHECK: cli 0(%r2), 0
> -; CHECK-NEXT: jlh
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = zext i8 %val to i32
> @@ -20,7 +20,7 @@ define double @f1(double %a, double %b,
>  define double @f2(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f2:
>  ; CHECK: cli 0(%r2), 255
> -; CHECK-NEXT: jlh
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = zext i8 %val to i32
> @@ -58,7 +58,7 @@ define double @f4(double %a, double %b,
>  define double @f5(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f5:
>  ; CHECK: cli 0(%r2), 0
> -; CHECK-NEXT: jlh
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = sext i8 %val to i32
> @@ -71,7 +71,7 @@ define double @f5(double %a, double %b,
>  define double @f6(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f6:
>  ; CHECK: cli 0(%r2), 127
> -; CHECK-NEXT: jlh
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = sext i8 %val to i32
> @@ -97,7 +97,7 @@ define double @f7(double %a, double %b,
>  define double @f8(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f8:
>  ; CHECK: cli 0(%r2), 255
> -; CHECK-NEXT: jlh
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = sext i8 %val to i32
> @@ -110,7 +110,7 @@ define double @f8(double %a, double %b,
>  define double @f9(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f9:
>  ; CHECK: cli 0(%r2), 128
> -; CHECK-NEXT: jlh
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = sext i8 %val to i32
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-18.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 18.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-18.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-18.ll Thu Apr  7 11:11:44 2016
> @@ -7,7 +7,7 @@
>  define double @f1(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f1:
>  ; CHECK: cli 0(%r2), 0
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = zext i8 %val to i64
> @@ -20,7 +20,7 @@ define double @f1(double %a, double %b,
>  define double @f2(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f2:
>  ; CHECK: cli 0(%r2), 255
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = zext i8 %val to i64
> @@ -58,7 +58,7 @@ define double @f4(double %a, double %b,
>  define double @f5(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f5:
>  ; CHECK: cli 0(%r2), 0
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = sext i8 %val to i64
> @@ -71,7 +71,7 @@ define double @f5(double %a, double %b,
>  define double @f6(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f6:
>  ; CHECK: cli 0(%r2), 127
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = sext i8 %val to i64
> @@ -97,7 +97,7 @@ define double @f7(double %a, double %b,
>  define double @f8(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f8:
>  ; CHECK: cli 0(%r2), 255
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = sext i8 %val to i64
> @@ -110,7 +110,7 @@ define double @f8(double %a, double %b,
>  define double @f9(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f9:
>  ; CHECK: cli 0(%r2), 128
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = sext i8 %val to i64
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-19.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 19.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-19.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-19.ll Thu Apr  7 11:11:44 2016
> @@ -7,7 +7,7 @@
>  define double @f1(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f1:
>  ; CHECK: cli 0(%r2), 0
> -; CHECK-NEXT: jlh
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = zext i8 %val to i64
> @@ -20,7 +20,7 @@ define double @f1(double %a, double %b,
>  define double @f2(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f2:
>  ; CHECK: cli 0(%r2), 255
> -; CHECK-NEXT: jlh
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = zext i8 %val to i64
> @@ -58,7 +58,7 @@ define double @f4(double %a, double %b,
>  define double @f5(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f5:
>  ; CHECK: cli 0(%r2), 0
> -; CHECK-NEXT: jlh
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = sext i8 %val to i64
> @@ -71,7 +71,7 @@ define double @f5(double %a, double %b,
>  define double @f6(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f6:
>  ; CHECK: cli 0(%r2), 127
> -; CHECK-NEXT: jlh
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = sext i8 %val to i64
> @@ -97,7 +97,7 @@ define double @f7(double %a, double %b,
>  define double @f8(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f8:
>  ; CHECK: cli 0(%r2), 255
> -; CHECK-NEXT: jlh
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = sext i8 %val to i64
> @@ -110,7 +110,7 @@ define double @f8(double %a, double %b,
>  define double @f9(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f9:
>  ; CHECK: cli 0(%r2), 128
> -; CHECK-NEXT: jlh
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = sext i8 %val to i64
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-20.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 20.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-20.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-20.ll Thu Apr  7 11:11:44 2016
> @@ -8,7 +8,7 @@
>  define double @f1(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f1:
>  ; CHECK: cli 0(%r2), 1
> -; CHECK-NEXT: jh
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = zext i8 %val to i32
> @@ -22,7 +22,7 @@ define double @f1(double %a, double %b,
>  define double @f2(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f2:
>  ; CHECK: cli 0(%r2), 1
> -; CHECK-NEXT: jh
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = sext i8 %val to i32
> @@ -36,7 +36,7 @@ define double @f2(double %a, double %b,
>  define double @f3(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f3:
>  ; CHECK: cli 0(%r2), 254
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = zext i8 %val to i32
> @@ -50,7 +50,7 @@ define double @f3(double %a, double %b,
>  define double @f4(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f4:
>  ; CHECK: cli 0(%r2), 254
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = sext i8 %val to i32
> @@ -105,7 +105,7 @@ define double @f7(double %a, double %b,
>  define double @f8(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f8:
>  ; CHECK: cli 0(%r2), 1
> -; CHECK-NEXT: jh
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = zext i8 %val to i32
> @@ -132,7 +132,7 @@ define double @f9(double %a, double %b,
>  define double @f10(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f10:
>  ; CHECK: cli 0(%r2), 254
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = zext i8 %val to i32
> @@ -171,7 +171,7 @@ define double @f12(double %a, double %b,
>  define double @f13(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f13:
>  ; CHECK: cli 0(%r2), 128
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = sext i8 %val to i32
> @@ -184,7 +184,7 @@ define double @f13(double %a, double %b,
>  define double @f14(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f14:
>  ; CHECK: cli 0(%r2), 128
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = sext i8 %val to i32
> @@ -197,7 +197,7 @@ define double @f14(double %a, double %b,
>  define double @f15(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f15:
>  ; CHECK: cli 0(%r2), 127
> -; CHECK-NEXT: jh
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = sext i8 %val to i32
> @@ -210,7 +210,7 @@ define double @f15(double %a, double %b,
>  define double @f16(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f16:
>  ; CHECK: cli 0(%r2), 127
> -; CHECK-NEXT: jh
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = sext i8 %val to i32
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-21.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 21.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-21.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-21.ll Thu Apr  7 11:11:44 2016
> @@ -8,7 +8,7 @@
>  define double @f1(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f1:
>  ; CHECK: cli 0(%r2), 1
> -; CHECK-NEXT: jh
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = zext i8 %val to i64
> @@ -22,7 +22,7 @@ define double @f1(double %a, double %b,
>  define double @f2(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f2:
>  ; CHECK: cli 0(%r2), 1
> -; CHECK-NEXT: jh
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = sext i8 %val to i64
> @@ -36,7 +36,7 @@ define double @f2(double %a, double %b,
>  define double @f3(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f3:
>  ; CHECK: cli 0(%r2), 254
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = zext i8 %val to i64
> @@ -50,7 +50,7 @@ define double @f3(double %a, double %b,
>  define double @f4(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f4:
>  ; CHECK: cli 0(%r2), 254
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = sext i8 %val to i64
> @@ -105,7 +105,7 @@ define double @f7(double %a, double %b,
>  define double @f8(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f8:
>  ; CHECK: cli 0(%r2), 1
> -; CHECK-NEXT: jh
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = zext i8 %val to i64
> @@ -132,7 +132,7 @@ define double @f9(double %a, double %b,
>  define double @f10(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f10:
>  ; CHECK: cli 0(%r2), 254
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = zext i8 %val to i64
> @@ -171,7 +171,7 @@ define double @f12(double %a, double %b,
>  define double @f13(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f13:
>  ; CHECK: cli 0(%r2), 128
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = sext i8 %val to i64
> @@ -184,7 +184,7 @@ define double @f13(double %a, double %b,
>  define double @f14(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f14:
>  ; CHECK: cli 0(%r2), 128
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = sext i8 %val to i64
> @@ -197,7 +197,7 @@ define double @f14(double %a, double %b,
>  define double @f15(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f15:
>  ; CHECK: cli 0(%r2), 127
> -; CHECK-NEXT: jh
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = sext i8 %val to i64
> @@ -210,7 +210,7 @@ define double @f15(double %a, double %b,
>  define double @f16(double %a, double %b, i8 *%ptr) {
>  ; CHECK-LABEL: f16:
>  ; CHECK: cli 0(%r2), 127
> -; CHECK-NEXT: jh
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: br %r14
>    %val = load i8 , i8 *%ptr
>    %ext = sext i8 %val to i64
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-22.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 22.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-22.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-22.ll Thu Apr  7 11:11:44 2016
> @@ -6,7 +6,7 @@
>  define double @f1(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f1:
>  ; CHECK: chhsi 0(%r2), 0
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
> @@ -19,7 +19,7 @@ define double @f1(double %a, double %b,
>  define double @f2(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f2:
>  ; CHECK: chhsi 0(%r2), 0
> -; CHECK-NEXT: jle
> +; CHECK-NEXT: bler %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
> @@ -32,7 +32,7 @@ define double @f2(double %a, double %b,
>  define double @f3(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f3:
>  ; CHECK: chhsi 0(%r2), 32766
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
> @@ -45,7 +45,7 @@ define double @f3(double %a, double %b,
>  define double @f4(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f4:
>  ; CHECK: chhsi 0(%r2), -1
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
> @@ -58,7 +58,7 @@ define double @f4(double %a, double %b,
>  define double @f5(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f5:
>  ; CHECK: chhsi 0(%r2), -32766
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
> @@ -71,7 +71,7 @@ define double @f5(double %a, double %b,
>  define double @f6(double %a, double %b, i16 %i1, i16 *%base) {
>  ; CHECK-LABEL: f6:
>  ; CHECK: chhsi 4094(%r3), 0
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i16, i16 *%base, i64 2047
> @@ -86,7 +86,7 @@ define double @f7(double %a, double %b,
>  ; CHECK-LABEL: f7:
>  ; CHECK: aghi %r2, 4096
>  ; CHECK: chhsi 0(%r2), 0
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i16, i16 *%base, i64 2048
> @@ -101,7 +101,7 @@ define double @f8(double %a, double %b,
>  ; CHECK-LABEL: f8:
>  ; CHECK: aghi %r2, -2
>  ; CHECK: chhsi 0(%r2), 0
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i16, i16 *%base, i64 -1
> @@ -116,7 +116,7 @@ define double @f9(double %a, double %b,
>  ; CHECK-LABEL: f9:
>  ; CHECK: agr {{%r2, %r3|%r3, %r2}}
>  ; CHECK: chhsi 0({{%r[23]}}), 0
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %add = add i64 %base, %index
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-23.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 23.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-23.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-23.ll Thu Apr  7 11:11:44 2016
> @@ -6,7 +6,7 @@
>  define double @f1(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f1:
>  ; CHECK: clhhsi 0(%r2), 1
> -; CHECK-NEXT: jh
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
> @@ -19,7 +19,7 @@ define double @f1(double %a, double %b,
>  define double @f2(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f2:
>  ; CHECK: clhhsi 0(%r2), 65534
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
> @@ -32,7 +32,7 @@ define double @f2(double %a, double %b,
>  define double @f3(double %a, double %b, i16 %i1, i16 *%base) {
>  ; CHECK-LABEL: f3:
>  ; CHECK: clhhsi 4094(%r3), 1
> -; CHECK-NEXT: jh
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i16, i16 *%base, i64 2047
> @@ -47,7 +47,7 @@ define double @f4(double %a, double %b,
>  ; CHECK-LABEL: f4:
>  ; CHECK: aghi %r2, 4096
>  ; CHECK: clhhsi 0(%r2), 1
> -; CHECK-NEXT: jh
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i16, i16 *%base, i64 2048
> @@ -62,7 +62,7 @@ define double @f5(double %a, double %b,
>  ; CHECK-LABEL: f5:
>  ; CHECK: aghi %r2, -2
>  ; CHECK: clhhsi 0(%r2), 1
> -; CHECK-NEXT: jh
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i16, i16 *%base, i64 -1
> @@ -77,7 +77,7 @@ define double @f6(double %a, double %b,
>  ; CHECK-LABEL: f6:
>  ; CHECK: agr {{%r2, %r3|%r3, %r2}}
>  ; CHECK: clhhsi 0({{%r[23]}}), 1
> -; CHECK-NEXT: jh
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %add = add i64 %base, %index
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-24.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 24.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-24.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-24.ll Thu Apr  7 11:11:44 2016
> @@ -6,7 +6,7 @@
>  define double @f1(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f1:
>  ; CHECK: clhhsi 0(%r2), 0
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
> @@ -19,7 +19,7 @@ define double @f1(double %a, double %b,
>  define double @f2(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f2:
>  ; CHECK: clhhsi 0(%r2), 65535
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
> @@ -32,7 +32,7 @@ define double @f2(double %a, double %b,
>  define double @f3(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f3:
>  ; CHECK: clhhsi 0(%r2), 32768
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
> @@ -45,7 +45,7 @@ define double @f3(double %a, double %b,
>  define double @f4(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f4:
>  ; CHECK: clhhsi 0(%r2), 32767
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-25.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 25.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-25.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-25.ll Thu Apr  7 11:11:44 2016
> @@ -6,7 +6,7 @@
>  define double @f1(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f1:
>  ; CHECK: clhhsi 0(%r2), 0
> -; CHECK-NEXT: jlh
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
> @@ -19,7 +19,7 @@ define double @f1(double %a, double %b,
>  define double @f2(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f2:
>  ; CHECK: clhhsi 0(%r2), 65535
> -; CHECK-NEXT: jlh
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
> @@ -32,7 +32,7 @@ define double @f2(double %a, double %b,
>  define double @f3(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f3:
>  ; CHECK: clhhsi 0(%r2), 32768
> -; CHECK-NEXT: jlh
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
> @@ -45,7 +45,7 @@ define double @f3(double %a, double %b,
>  define double @f4(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f4:
>  ; CHECK: clhhsi 0(%r2), 32767
> -; CHECK-NEXT: jlh
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-26.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 26.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-26.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-26.ll Thu Apr  7 11:11:44 2016
> @@ -7,7 +7,7 @@
>  define double @f1(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f1:
>  ; CHECK: clhhsi 0(%r2), 0
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = zext i16 %val to i32
> @@ -20,7 +20,7 @@ define double @f1(double %a, double %b,
>  define double @f2(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f2:
>  ; CHECK: clhhsi 0(%r2), 65535
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = zext i16 %val to i32
> @@ -58,7 +58,7 @@ define double @f4(double %a, double %b,
>  define double @f5(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f5:
>  ; CHECK: clhhsi 0(%r2), 0
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = sext i16 %val to i32
> @@ -71,7 +71,7 @@ define double @f5(double %a, double %b,
>  define double @f6(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f6:
>  ; CHECK: clhhsi 0(%r2), 32767
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = sext i16 %val to i32
> @@ -97,7 +97,7 @@ define double @f7(double %a, double %b,
>  define double @f8(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f8:
>  ; CHECK: clhhsi 0(%r2), 65535
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = sext i16 %val to i32
> @@ -110,7 +110,7 @@ define double @f8(double %a, double %b,
>  define double @f9(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f9:
>  ; CHECK: clhhsi 0(%r2), 32768
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = sext i16 %val to i32
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-27.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 27.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-27.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-27.ll Thu Apr  7 11:11:44 2016
> @@ -7,7 +7,7 @@
>  define double @f1(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f1:
>  ; CHECK: clhhsi 0(%r2), 0
> -; CHECK-NEXT: jlh
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = zext i16 %val to i32
> @@ -20,7 +20,7 @@ define double @f1(double %a, double %b,
>  define double @f2(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f2:
>  ; CHECK: clhhsi 0(%r2), 65535
> -; CHECK-NEXT: jlh
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = zext i16 %val to i32
> @@ -58,7 +58,7 @@ define double @f4(double %a, double %b,
>  define double @f5(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f5:
>  ; CHECK: clhhsi 0(%r2), 0
> -; CHECK-NEXT: jlh
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = sext i16 %val to i32
> @@ -71,7 +71,7 @@ define double @f5(double %a, double %b,
>  define double @f6(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f6:
>  ; CHECK: clhhsi 0(%r2), 32767
> -; CHECK-NEXT: jlh
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = sext i16 %val to i32
> @@ -97,7 +97,7 @@ define double @f7(double %a, double %b,
>  define double @f8(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f8:
>  ; CHECK: clhhsi 0(%r2), 65535
> -; CHECK-NEXT: jlh
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = sext i16 %val to i32
> @@ -110,7 +110,7 @@ define double @f8(double %a, double %b,
>  define double @f9(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f9:
>  ; CHECK: clhhsi 0(%r2), 32768
> -; CHECK-NEXT: jlh
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = sext i16 %val to i32
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-28.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 28.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-28.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-28.ll Thu Apr  7 11:11:44 2016
> @@ -7,7 +7,7 @@
>  define double @f1(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f1:
>  ; CHECK: clhhsi 0(%r2), 0
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = zext i16 %val to i64
> @@ -20,7 +20,7 @@ define double @f1(double %a, double %b,
>  define double @f2(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f2:
>  ; CHECK: clhhsi 0(%r2), 65535
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = zext i16 %val to i64
> @@ -58,7 +58,7 @@ define double @f4(double %a, double %b,
>  define double @f5(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f5:
>  ; CHECK: clhhsi 0(%r2), 0
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = sext i16 %val to i64
> @@ -71,7 +71,7 @@ define double @f5(double %a, double %b,
>  define double @f6(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f6:
>  ; CHECK: clhhsi 0(%r2), 32767
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = sext i16 %val to i64
> @@ -97,7 +97,7 @@ define double @f7(double %a, double %b,
>  define double @f8(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f8:
>  ; CHECK: clhhsi 0(%r2), 65535
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = sext i16 %val to i64
> @@ -110,7 +110,7 @@ define double @f8(double %a, double %b,
>  define double @f9(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f9:
>  ; CHECK: clhhsi 0(%r2), 32768
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = sext i16 %val to i64
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-29.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 29.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-29.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-29.ll Thu Apr  7 11:11:44 2016
> @@ -7,7 +7,7 @@
>  define double @f1(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f1:
>  ; CHECK: clhhsi 0(%r2), 0
> -; CHECK-NEXT: jlh
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = zext i16 %val to i64
> @@ -20,7 +20,7 @@ define double @f1(double %a, double %b,
>  define double @f2(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f2:
>  ; CHECK: clhhsi 0(%r2), 65535
> -; CHECK-NEXT: jlh
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = zext i16 %val to i64
> @@ -58,7 +58,7 @@ define double @f4(double %a, double %b,
>  define double @f5(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f5:
>  ; CHECK: clhhsi 0(%r2), 0
> -; CHECK-NEXT: jlh
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = sext i16 %val to i64
> @@ -71,7 +71,7 @@ define double @f5(double %a, double %b,
>  define double @f6(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f6:
>  ; CHECK: clhhsi 0(%r2), 32767
> -; CHECK-NEXT: jlh
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = sext i16 %val to i64
> @@ -97,7 +97,7 @@ define double @f7(double %a, double %b,
>  define double @f8(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f8:
>  ; CHECK: clhhsi 0(%r2), 65535
> -; CHECK-NEXT: jlh
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = sext i16 %val to i64
> @@ -110,7 +110,7 @@ define double @f8(double %a, double %b,
>  define double @f9(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f9:
>  ; CHECK: clhhsi 0(%r2), 32768
> -; CHECK-NEXT: jlh
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = sext i16 %val to i64
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-30.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 30.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-30.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-30.ll Thu Apr  7 11:11:44 2016
> @@ -8,7 +8,7 @@
>  define double @f1(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f1:
>  ; CHECK: clhhsi 0(%r2), 1
> -; CHECK-NEXT: jh
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = zext i16 %val to i32
> @@ -22,7 +22,7 @@ define double @f1(double %a, double %b,
>  define double @f2(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f2:
>  ; CHECK: clhhsi 0(%r2), 1
> -; CHECK-NEXT: jh
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = sext i16 %val to i32
> @@ -36,7 +36,7 @@ define double @f2(double %a, double %b,
>  define double @f3(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f3:
>  ; CHECK: clhhsi 0(%r2), 65534
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = zext i16 %val to i32
> @@ -50,7 +50,7 @@ define double @f3(double %a, double %b,
>  define double @f4(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f4:
>  ; CHECK: clhhsi 0(%r2), 65534
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = sext i16 %val to i32
> @@ -106,7 +106,7 @@ define double @f7(double %a, double %b,
>  define double @f8(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f8:
>  ; CHECK: clhhsi 0(%r2), 1
> -; CHECK-NEXT: jh
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = zext i16 %val to i32
> @@ -120,7 +120,7 @@ define double @f8(double %a, double %b,
>  define double @f9(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f9:
>  ; CHECK: chhsi 0(%r2), 1
> -; CHECK-NEXT: jh
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = sext i16 %val to i32
> @@ -134,7 +134,7 @@ define double @f9(double %a, double %b,
>  define double @f10(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f10:
>  ; CHECK: clhhsi 0(%r2), 65534
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = zext i16 %val to i32
> @@ -148,7 +148,7 @@ define double @f10(double %a, double %b,
>  define double @f11(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f11:
>  ; CHECK: chhsi 0(%r2), -2
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = sext i16 %val to i32
> @@ -175,7 +175,7 @@ define double @f12(double %a, double %b,
>  define double @f13(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f13:
>  ; CHECK: chhsi 0(%r2), 32766
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = sext i16 %val to i32
> @@ -202,7 +202,7 @@ define double @f14(double %a, double %b,
>  define double @f15(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f15:
>  ; CHECK: chhsi 0(%r2), -32767
> -; CHECK-NEXT: jh
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = sext i16 %val to i32
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-31.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 31.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-31.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-31.ll Thu Apr  7 11:11:44 2016
> @@ -8,7 +8,7 @@
>  define double @f1(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f1:
>  ; CHECK: clhhsi 0(%r2), 1
> -; CHECK-NEXT: jh
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = zext i16 %val to i64
> @@ -22,7 +22,7 @@ define double @f1(double %a, double %b,
>  define double @f2(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f2:
>  ; CHECK: clhhsi 0(%r2), 1
> -; CHECK-NEXT: jh
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = sext i16 %val to i64
> @@ -36,7 +36,7 @@ define double @f2(double %a, double %b,
>  define double @f3(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f3:
>  ; CHECK: clhhsi 0(%r2), 65534
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = zext i16 %val to i64
> @@ -50,7 +50,7 @@ define double @f3(double %a, double %b,
>  define double @f4(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f4:
>  ; CHECK: clhhsi 0(%r2), 65534
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = sext i16 %val to i64
> @@ -106,7 +106,7 @@ define double @f7(double %a, double %b,
>  define double @f8(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f8:
>  ; CHECK: clhhsi 0(%r2), 1
> -; CHECK-NEXT: jh
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = zext i16 %val to i64
> @@ -120,7 +120,7 @@ define double @f8(double %a, double %b,
>  define double @f9(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f9:
>  ; CHECK: chhsi 0(%r2), 1
> -; CHECK-NEXT: jh
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = sext i16 %val to i64
> @@ -134,7 +134,7 @@ define double @f9(double %a, double %b,
>  define double @f10(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f10:
>  ; CHECK: clhhsi 0(%r2), 65534
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = zext i16 %val to i64
> @@ -148,7 +148,7 @@ define double @f10(double %a, double %b,
>  define double @f11(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f11:
>  ; CHECK: chhsi 0(%r2), -2
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = sext i16 %val to i64
> @@ -175,7 +175,7 @@ define double @f12(double %a, double %b,
>  define double @f13(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f13:
>  ; CHECK: chhsi 0(%r2), 32766
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = sext i16 %val to i64
> @@ -202,7 +202,7 @@ define double @f14(double %a, double %b,
>  define double @f15(double %a, double %b, i16 *%ptr) {
>  ; CHECK-LABEL: f15:
>  ; CHECK: chhsi 0(%r2), -32767
> -; CHECK-NEXT: jh
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: br %r14
>    %val = load i16 , i16 *%ptr
>    %ext = sext i16 %val to i64
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-32.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 32.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-32.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-32.ll Thu Apr  7 11:11:44 2016
> @@ -6,7 +6,7 @@
>  define double @f1(double %a, double %b, i32 *%ptr) {
>  ; CHECK-LABEL: f1:
>  ; CHECK: chsi 0(%r2), 0
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i32 , i32 *%ptr
> @@ -19,7 +19,7 @@ define double @f1(double %a, double %b,
>  define double @f2(double %a, double %b, i32 *%ptr) {
>  ; CHECK-LABEL: f2:
>  ; CHECK: chsi 0(%r2), 0
> -; CHECK-NEXT: jle
> +; CHECK-NEXT: bler %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i32 , i32 *%ptr
> @@ -32,7 +32,7 @@ define double @f2(double %a, double %b,
>  define double @f3(double %a, double %b, i32 *%ptr) {
>  ; CHECK-LABEL: f3:
>  ; CHECK: chsi 0(%r2), 32767
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i32 , i32 *%ptr
> @@ -56,7 +56,7 @@ define double @f4(double %a, double %b,
>  define double @f5(double %a, double %b, i32 *%ptr) {
>  ; CHECK-LABEL: f5:
>  ; CHECK: chsi 0(%r2), -1
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i32 , i32 *%ptr
> @@ -69,7 +69,7 @@ define double @f5(double %a, double %b,
>  define double @f6(double %a, double %b, i32 *%ptr) {
>  ; CHECK-LABEL: f6:
>  ; CHECK: chsi 0(%r2), -32768
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i32 , i32 *%ptr
> @@ -93,7 +93,7 @@ define double @f7(double %a, double %b,
>  define double @f8(double %a, double %b, i32 *%ptr) {
>  ; CHECK-LABEL: f8:
>  ; CHECK: chsi 0(%r2), 0
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i32 , i32 *%ptr
> @@ -106,7 +106,7 @@ define double @f8(double %a, double %b,
>  define double @f9(double %a, double %b, i32 *%ptr) {
>  ; CHECK-LABEL: f9:
>  ; CHECK: chsi 0(%r2), 1
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i32 , i32 *%ptr
> @@ -119,7 +119,7 @@ define double @f9(double %a, double %b,
>  define double @f10(double %a, double %b, i32 *%ptr) {
>  ; CHECK-LABEL: f10:
>  ; CHECK: chsi 0(%r2), 32767
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i32 , i32 *%ptr
> @@ -143,7 +143,7 @@ define double @f11(double %a, double %b,
>  define double @f12(double %a, double %b, i32 *%ptr) {
>  ; CHECK-LABEL: f12:
>  ; CHECK: chsi 0(%r2), -1
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i32 , i32 *%ptr
> @@ -156,7 +156,7 @@ define double @f12(double %a, double %b,
>  define double @f13(double %a, double %b, i32 *%ptr) {
>  ; CHECK-LABEL: f13:
>  ; CHECK: chsi 0(%r2), -32768
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i32 , i32 *%ptr
> @@ -180,7 +180,7 @@ define double @f14(double %a, double %b,
>  define double @f15(double %a, double %b, i32 %i1, i32 *%base) {
>  ; CHECK-LABEL: f15:
>  ; CHECK: chsi 4092(%r3), 0
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i32, i32 *%base, i64 1023
> @@ -195,7 +195,7 @@ define double @f16(double %a, double %b,
>  ; CHECK-LABEL: f16:
>  ; CHECK: aghi %r2, 4096
>  ; CHECK: chsi 0(%r2), 0
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i32, i32 *%base, i64 1024
> @@ -210,7 +210,7 @@ define double @f17(double %a, double %b,
>  ; CHECK-LABEL: f17:
>  ; CHECK: aghi %r2, -4
>  ; CHECK: chsi 0(%r2), 0
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i32, i32 *%base, i64 -1
> @@ -225,7 +225,7 @@ define double @f18(double %a, double %b,
>  ; CHECK-LABEL: f18:
>  ; CHECK: agr {{%r2, %r3|%r3, %r2}}
>  ; CHECK: chsi 0({{%r[23]}}), 0
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %add = add i64 %base, %index
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-33.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 33.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-33.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-33.ll Thu Apr  7 11:11:44 2016
> @@ -7,7 +7,7 @@
>  define double @f1(double %a, double %b, i32 *%ptr) {
>  ; CHECK-LABEL: f1:
>  ; CHECK: clfhsi 0(%r2), 1
> -; CHECK-NEXT: jh
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i32 , i32 *%ptr
> @@ -20,7 +20,7 @@ define double @f1(double %a, double %b,
>  define double @f2(double %a, double %b, i32 *%ptr) {
>  ; CHECK-LABEL: f2:
>  ; CHECK: clfhsi 0(%r2), 65535
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i32 , i32 *%ptr
> @@ -45,7 +45,7 @@ define double @f3(double %a, double %b,
>  define double @f4(double %a, double %b, i32 *%ptr) {
>  ; CHECK-LABEL: f4:
>  ; CHECK: clfhsi 0(%r2), 32768
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i32 , i32 *%ptr
> @@ -58,7 +58,7 @@ define double @f4(double %a, double %b,
>  define double @f5(double %a, double %b, i32 *%ptr) {
>  ; CHECK-LABEL: f5:
>  ; CHECK: clfhsi 0(%r2), 65535
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i32 , i32 *%ptr
> @@ -82,7 +82,7 @@ define double @f6(double %a, double %b,
>  define double @f7(double %a, double %b, i32 %i1, i32 *%base) {
>  ; CHECK-LABEL: f7:
>  ; CHECK: clfhsi 4092(%r3), 1
> -; CHECK-NEXT: jh
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i32, i32 *%base, i64 1023
> @@ -97,7 +97,7 @@ define double @f8(double %a, double %b,
>  ; CHECK-LABEL: f8:
>  ; CHECK: aghi %r2, 4096
>  ; CHECK: clfhsi 0(%r2), 1
> -; CHECK-NEXT: jh
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i32, i32 *%base, i64 1024
> @@ -112,7 +112,7 @@ define double @f9(double %a, double %b,
>  ; CHECK-LABEL: f9:
>  ; CHECK: aghi %r2, -4
>  ; CHECK: clfhsi 0(%r2), 1
> -; CHECK-NEXT: jh
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i32, i32 *%base, i64 -1
> @@ -127,7 +127,7 @@ define double @f10(double %a, double %b,
>  ; CHECK-LABEL: f10:
>  ; CHECK: agr {{%r2, %r3|%r3, %r2}}
>  ; CHECK: clfhsi 0({{%r[23]}}), 1
> -; CHECK-NEXT: jh
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %add = add i64 %base, %index
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-34.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 34.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-34.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-34.ll Thu Apr  7 11:11:44 2016
> @@ -6,7 +6,7 @@
>  define double @f1(double %a, double %b, i64 *%ptr) {
>  ; CHECK-LABEL: f1:
>  ; CHECK: cghsi 0(%r2), 0
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i64 , i64 *%ptr
> @@ -19,7 +19,7 @@ define double @f1(double %a, double %b,
>  define double @f2(double %a, double %b, i64 *%ptr) {
>  ; CHECK-LABEL: f2:
>  ; CHECK: cghsi 0(%r2), 0
> -; CHECK-NEXT: jle
> +; CHECK-NEXT: bler %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i64 , i64 *%ptr
> @@ -32,7 +32,7 @@ define double @f2(double %a, double %b,
>  define double @f3(double %a, double %b, i64 *%ptr) {
>  ; CHECK-LABEL: f3:
>  ; CHECK: cghsi 0(%r2), 32767
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i64 , i64 *%ptr
> @@ -56,7 +56,7 @@ define double @f4(double %a, double %b,
>  define double @f5(double %a, double %b, i64 *%ptr) {
>  ; CHECK-LABEL: f5:
>  ; CHECK: cghsi 0(%r2), -1
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i64 , i64 *%ptr
> @@ -69,7 +69,7 @@ define double @f5(double %a, double %b,
>  define double @f6(double %a, double %b, i64 *%ptr) {
>  ; CHECK-LABEL: f6:
>  ; CHECK: cghsi 0(%r2), -32768
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i64 , i64 *%ptr
> @@ -93,7 +93,7 @@ define double @f7(double %a, double %b,
>  define double @f8(double %a, double %b, i64 *%ptr) {
>  ; CHECK-LABEL: f8:
>  ; CHECK: cghsi 0(%r2), 0
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i64 , i64 *%ptr
> @@ -106,7 +106,7 @@ define double @f8(double %a, double %b,
>  define double @f9(double %a, double %b, i64 *%ptr) {
>  ; CHECK-LABEL: f9:
>  ; CHECK: cghsi 0(%r2), 1
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i64 , i64 *%ptr
> @@ -119,7 +119,7 @@ define double @f9(double %a, double %b,
>  define double @f10(double %a, double %b, i64 *%ptr) {
>  ; CHECK-LABEL: f10:
>  ; CHECK: cghsi 0(%r2), 32767
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i64 , i64 *%ptr
> @@ -143,7 +143,7 @@ define double @f11(double %a, double %b,
>  define double @f12(double %a, double %b, i64 *%ptr) {
>  ; CHECK-LABEL: f12:
>  ; CHECK: cghsi 0(%r2), -1
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i64 , i64 *%ptr
> @@ -156,7 +156,7 @@ define double @f12(double %a, double %b,
>  define double @f13(double %a, double %b, i64 *%ptr) {
>  ; CHECK-LABEL: f13:
>  ; CHECK: cghsi 0(%r2), -32768
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i64 , i64 *%ptr
> @@ -180,7 +180,7 @@ define double @f14(double %a, double %b,
>  define double @f15(double %a, double %b, i64 %i1, i64 *%base) {
>  ; CHECK-LABEL: f15:
>  ; CHECK: cghsi 4088(%r3), 0
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i64, i64 *%base, i64 511
> @@ -195,7 +195,7 @@ define double @f16(double %a, double %b,
>  ; CHECK-LABEL: f16:
>  ; CHECK: aghi %r2, 4096
>  ; CHECK: cghsi 0(%r2), 0
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i64, i64 *%base, i64 512
> @@ -210,7 +210,7 @@ define double @f17(double %a, double %b,
>  ; CHECK-LABEL: f17:
>  ; CHECK: aghi %r2, -8
>  ; CHECK: cghsi 0(%r2), 0
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i64, i64 *%base, i64 -1
> @@ -225,7 +225,7 @@ define double @f18(double %a, double %b,
>  ; CHECK-LABEL: f18:
>  ; CHECK: agr {{%r2, %r3|%r3, %r2}}
>  ; CHECK: cghsi 0({{%r[23]}}), 0
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %add = add i64 %base, %index
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-35.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 35.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-35.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-35.ll Thu Apr  7 11:11:44 2016
> @@ -7,7 +7,7 @@
>  define double @f1(double %a, double %b, i64 *%ptr) {
>  ; CHECK-LABEL: f1:
>  ; CHECK: clghsi 0(%r2), 2
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i64 , i64 *%ptr
> @@ -20,7 +20,7 @@ define double @f1(double %a, double %b,
>  define double @f2(double %a, double %b, i64 *%ptr) {
>  ; CHECK-LABEL: f2:
>  ; CHECK: clghsi 0(%r2), 65535
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i64 , i64 *%ptr
> @@ -45,7 +45,7 @@ define double @f3(double %a, double %b,
>  define double @f4(double %a, double %b, i64 *%ptr) {
>  ; CHECK-LABEL: f4:
>  ; CHECK: clghsi 0(%r2), 32768
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i64 , i64 *%ptr
> @@ -58,7 +58,7 @@ define double @f4(double %a, double %b,
>  define double @f5(double %a, double %b, i64 *%ptr) {
>  ; CHECK-LABEL: f5:
>  ; CHECK: clghsi 0(%r2), 65535
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %val = load i64 , i64 *%ptr
> @@ -82,7 +82,7 @@ define double @f6(double %a, double %b,
>  define double @f7(double %a, double %b, i64 %i1, i64 *%base) {
>  ; CHECK-LABEL: f7:
>  ; CHECK: clghsi 4088(%r3), 2
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i64, i64 *%base, i64 511
> @@ -97,7 +97,7 @@ define double @f8(double %a, double %b,
>  ; CHECK-LABEL: f8:
>  ; CHECK: aghi %r2, 4096
>  ; CHECK: clghsi 0(%r2), 2
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i64, i64 *%base, i64 512
> @@ -112,7 +112,7 @@ define double @f9(double %a, double %b,
>  ; CHECK-LABEL: f9:
>  ; CHECK: aghi %r2, -8
>  ; CHECK: clghsi 0(%r2), 2
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %ptr = getelementptr i64, i64 *%base, i64 -1
> @@ -127,7 +127,7 @@ define double @f10(double %a, double %b,
>  ; CHECK-LABEL: f10:
>  ; CHECK: agr {{%r2, %r3|%r3, %r2}}
>  ; CHECK: clghsi 0({{%r[23]}}), 2
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: ldr %f0, %f2
>  ; CHECK: br %r14
>    %add = add i64 %base, %index
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-36.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 36.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-36.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-36.ll Thu Apr  7 11:11:44 2016
> @@ -10,7 +10,7 @@
>  define i32 @f1(i32 %src1) {
>  ; CHECK-LABEL: f1:
>  ; CHECK: chrl %r2, g
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>  entry:
>    %val = load i16 , i16 *@g
> @@ -47,7 +47,7 @@ exit:
>  define i32 @f3(i32 %src1) {
>  ; CHECK-LABEL: f3:
>  ; CHECK: chrl %r2, g
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>  entry:
>    %val = load i16 , i16 *@g
> @@ -66,7 +66,7 @@ exit:
>  define i32 @f4(i32 %src1) {
>  ; CHECK-LABEL: f4:
>  ; CHECK: chrl %r2, g
> -; CHECK-NEXT: jlh
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: br %r14
>  entry:
>    %val = load i16 , i16 *@g
> @@ -86,7 +86,7 @@ define i32 @f5(i32 %src1) {
>  ; CHECK-LABEL: f5:
>  ; CHECK: lgrl [[REG:%r[0-5]]], h at GOT
>  ; CHECK: ch %r2, 0([[REG]])
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>  entry:
>    %val = load i16 , i16 *@h, align 1
> @@ -105,7 +105,7 @@ exit:
>  define i32 @f6(i32 %src2) {
>  ; CHECK-LABEL: f6:
>  ; CHECK: chrl %r2, g
> -; CHECK-NEXT: jh {{\.L.*}}
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: br %r14
>  entry:
>    %val = load i16 , i16 *@g
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-37.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 37.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-37.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-37.ll Thu Apr  7 11:11:44 2016
> @@ -21,7 +21,8 @@ mulb:
>    %mul = mul i32 %src1, %src1
>    br label %exit
>  exit:
> -  %res = phi i32 [ %src1, %entry ], [ %mul, %mulb ]
> +  %tmp = phi i32 [ %src1, %entry ], [ %mul, %mulb ]
> +  %res = add i32 %tmp, 1
>    ret i32 %res
>  }
>
> @@ -39,7 +40,8 @@ mulb:
>    %mul = mul i32 %src1, %src1
>    br label %exit
>  exit:
> -  %res = phi i32 [ %src1, %entry ], [ %mul, %mulb ]
> +  %tmp = phi i32 [ %src1, %entry ], [ %mul, %mulb ]
> +  %res = add i32 %tmp, 1
>    ret i32 %res
>  }
>
> @@ -58,7 +60,8 @@ mulb:
>    %mul = mul i32 %src1, %src1
>    br label %exit
>  exit:
> -  %res = phi i32 [ %src1, %entry ], [ %mul, %mulb ]
> +  %tmp = phi i32 [ %src1, %entry ], [ %mul, %mulb ]
> +  %res = add i32 %tmp, 1
>    ret i32 %res
>  }
>
> @@ -77,7 +80,8 @@ mulb:
>    %mul = mul i32 %src1, %src1
>    br label %exit
>  exit:
> -  %res = phi i32 [ %src1, %entry ], [ %mul, %mulb ]
> +  %tmp = phi i32 [ %src1, %entry ], [ %mul, %mulb ]
> +  %res = add i32 %tmp, 1
>    ret i32 %res
>  }
>
> @@ -97,7 +101,8 @@ mulb:
>    %mul = mul i32 %src1, %src1
>    br label %exit
>  exit:
> -  %res = phi i32 [ %src1, %entry ], [ %mul, %mulb ]
> +  %tmp = phi i32 [ %src1, %entry ], [ %mul, %mulb ]
> +  %res = add i32 %tmp, 1
>    ret i32 %res
>  }
>
> @@ -116,6 +121,7 @@ mulb:
>    %mul = mul i32 %src2, %src2
>    br label %exit
>  exit:
> -  %res = phi i32 [ %src2, %entry ], [ %mul, %mulb ]
> +  %tmp = phi i32 [ %src2, %entry ], [ %mul, %mulb ]
> +  %res = add i32 %tmp, 1
>    ret i32 %res
>  }
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-38.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 38.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-38.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-38.ll Thu Apr  7 11:11:44 2016
> @@ -10,7 +10,7 @@
>  define i32 @f1(i32 %src1) {
>  ; CHECK-LABEL: f1:
>  ; CHECK: crl %r2, g
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>  entry:
>    %src2 = load i32 , i32 *@g
> @@ -28,7 +28,7 @@ exit:
>  define i32 @f2(i32 %src1) {
>  ; CHECK-LABEL: f2:
>  ; CHECK: clrl %r2, g
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>  entry:
>    %src2 = load i32 , i32 *@g
> @@ -46,7 +46,7 @@ exit:
>  define i32 @f3(i32 %src1) {
>  ; CHECK-LABEL: f3:
>  ; CHECK: c{{l?}}rl %r2, g
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>  entry:
>    %src2 = load i32 , i32 *@g
> @@ -64,7 +64,7 @@ exit:
>  define i32 @f4(i32 %src1) {
>  ; CHECK-LABEL: f4:
>  ; CHECK: c{{l?}}rl %r2, g
> -; CHECK-NEXT: jlh
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: br %r14
>  entry:
>    %src2 = load i32 , i32 *@g
> @@ -83,7 +83,7 @@ define i32 @f5(i32 %src1) {
>  ; CHECK-LABEL: f5:
>  ; CHECK: larl [[REG:%r[0-5]]], h
>  ; CHECK: c %r2, 0([[REG]])
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>  entry:
>    %src2 = load i32 , i32 *@h, align 2
> @@ -102,7 +102,7 @@ define i32 @f6(i32 %src1) {
>  ; CHECK-LABEL: f6:
>  ; CHECK: larl [[REG:%r[0-5]]], h
>  ; CHECK: cl %r2, 0([[REG]])
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>  entry:
>    %src2 = load i32 , i32 *@h, align 2
> @@ -120,7 +120,7 @@ exit:
>  define i32 @f7(i32 %src2) {
>  ; CHECK-LABEL: f7:
>  ; CHECK: crl %r2, g
> -; CHECK-NEXT: jh {{\.L.*}}
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: br %r14
>  entry:
>    %src1 = load i32 , i32 *@g
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-39.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 39.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-39.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-39.ll Thu Apr  7 11:11:44 2016
> @@ -10,7 +10,7 @@
>  define i64 @f1(i64 %src1) {
>  ; CHECK-LABEL: f1:
>  ; CHECK: cghrl %r2, g
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>  entry:
>    %val = load i16 , i16 *@g
> @@ -47,7 +47,7 @@ exit:
>  define i64 @f3(i64 %src1) {
>  ; CHECK-LABEL: f3:
>  ; CHECK: cghrl %r2, g
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>  entry:
>    %val = load i16 , i16 *@g
> @@ -66,7 +66,7 @@ exit:
>  define i64 @f4(i64 %src1) {
>  ; CHECK-LABEL: f4:
>  ; CHECK: cghrl %r2, g
> -; CHECK-NEXT: jlh
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: br %r14
>  entry:
>    %val = load i16 , i16 *@g
> @@ -86,7 +86,7 @@ define i64 @f5(i64 %src1) {
>  ; CHECK-LABEL: f5:
>  ; CHECK: lgrl [[REG:%r[0-5]]], h at GOT
>  ; CHECK: cgh %r2, 0([[REG]])
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>  entry:
>    %val = load i16 , i16 *@h, align 1
> @@ -105,7 +105,7 @@ exit:
>  define i64 @f6(i64 %src2) {
>  ; CHECK-LABEL: f6:
>  ; CHECK: cghrl %r2, g
> -; CHECK-NEXT: jh {{\.L.*}}
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: br %r14
>  entry:
>    %val = load i16 , i16 *@g
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-40.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 40.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-40.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-40.ll Thu Apr  7 11:11:44 2016
> @@ -21,7 +21,8 @@ mulb:
>    %mul = mul i64 %src1, %src1
>    br label %exit
>  exit:
> -  %res = phi i64 [ %src1, %entry ], [ %mul, %mulb ]
> +  %tmp = phi i64 [ %src1, %entry ], [ %mul, %mulb ]
> +  %res = add i64 %tmp, 1
>    ret i64 %res
>  }
>
> @@ -39,7 +40,8 @@ mulb:
>    %mul = mul i64 %src1, %src1
>    br label %exit
>  exit:
> -  %res = phi i64 [ %src1, %entry ], [ %mul, %mulb ]
> +  %tmp = phi i64 [ %src1, %entry ], [ %mul, %mulb ]
> +  %res = add i64 %tmp, 1
>    ret i64 %res
>  }
>
> @@ -58,7 +60,8 @@ mulb:
>    %mul = mul i64 %src1, %src1
>    br label %exit
>  exit:
> -  %res = phi i64 [ %src1, %entry ], [ %mul, %mulb ]
> +  %tmp = phi i64 [ %src1, %entry ], [ %mul, %mulb ]
> +  %res = add i64 %tmp, 1
>    ret i64 %res
>  }
>
> @@ -77,7 +80,8 @@ mulb:
>    %mul = mul i64 %src1, %src1
>    br label %exit
>  exit:
> -  %res = phi i64 [ %src1, %entry ], [ %mul, %mulb ]
> +  %tmp = phi i64 [ %src1, %entry ], [ %mul, %mulb ]
> +  %res = add i64 %tmp, 1
>    ret i64 %res
>  }
>
> @@ -97,7 +101,8 @@ mulb:
>    %mul = mul i64 %src1, %src1
>    br label %exit
>  exit:
> -  %res = phi i64 [ %src1, %entry ], [ %mul, %mulb ]
> +  %tmp = phi i64 [ %src1, %entry ], [ %mul, %mulb ]
> +  %res = add i64 %tmp, 1
>    ret i64 %res
>  }
>
> @@ -116,6 +121,7 @@ mulb:
>    %mul = mul i64 %src2, %src2
>    br label %exit
>  exit:
> -  %res = phi i64 [ %src2, %entry ], [ %mul, %mulb ]
> +  %tmp = phi i64 [ %src2, %entry ], [ %mul, %mulb ]
> +  %res = add i64 %tmp, 1
>    ret i64 %res
>  }
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-41.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 41.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-41.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-41.ll Thu Apr  7 11:11:44 2016
> @@ -10,7 +10,7 @@
>  define i64 @f1(i64 %src1) {
>  ; CHECK-LABEL: f1:
>  ; CHECK: cgfrl %r2, g
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>  entry:
>    %val = load i32 , i32 *@g
> @@ -47,7 +47,7 @@ exit:
>  define i64 @f3(i64 %src1) {
>  ; CHECK-LABEL: f3:
>  ; CHECK: cgfrl %r2, g
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>  entry:
>    %val = load i32 , i32 *@g
> @@ -66,7 +66,7 @@ exit:
>  define i64 @f4(i64 %src1) {
>  ; CHECK-LABEL: f4:
>  ; CHECK: cgfrl %r2, g
> -; CHECK-NEXT: jlh
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: br %r14
>  entry:
>    %val = load i32 , i32 *@g
> @@ -86,7 +86,7 @@ define i64 @f5(i64 %src1) {
>  ; CHECK-LABEL: f5:
>  ; CHECK: larl [[REG:%r[0-5]]], h
>  ; CHECK: cgf %r2, 0([[REG]])
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>  entry:
>    %val = load i32 , i32 *@h, align 2
> @@ -105,7 +105,7 @@ exit:
>  define i64 @f6(i64 %src2) {
>  ; CHECK-LABEL: f6:
>  ; CHECK: cgfrl %r2, g
> -; CHECK-NEXT: jh {{\.L.*}}
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: br %r14
>  entry:
>    %val = load i32 , i32 *@g
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-42.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 42.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-42.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-42.ll Thu Apr  7 11:11:44 2016
> @@ -10,7 +10,7 @@
>  define i64 @f1(i64 %src1) {
>  ; CHECK-LABEL: f1:
>  ; CHECK: clgfrl %r2, g
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>  entry:
>    %val = load i32 , i32 *@g
> @@ -47,7 +47,7 @@ exit:
>  define i64 @f3(i64 %src1) {
>  ; CHECK-LABEL: f3:
>  ; CHECK: clgfrl %r2, g
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>  entry:
>    %val = load i32 , i32 *@g
> @@ -66,7 +66,7 @@ exit:
>  define i64 @f4(i64 %src1) {
>  ; CHECK-LABEL: f4:
>  ; CHECK: clgfrl %r2, g
> -; CHECK-NEXT: jlh
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: br %r14
>  entry:
>    %val = load i32 , i32 *@g
> @@ -86,7 +86,7 @@ define i64 @f5(i64 %src1) {
>  ; CHECK-LABEL: f5:
>  ; CHECK: larl [[REG:%r[0-5]]], h
>  ; CHECK: clgf %r2, 0([[REG]])
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>  entry:
>    %val = load i32 , i32 *@h, align 2
> @@ -105,7 +105,7 @@ exit:
>  define i64 @f6(i64 %src2) {
>  ; CHECK-LABEL: f6:
>  ; CHECK: clgfrl %r2, g
> -; CHECK-NEXT: jh {{\.L.*}}
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: br %r14
>  entry:
>    %val = load i32 , i32 *@g
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-43.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 43.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-43.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-43.ll Thu Apr  7 11:11:44 2016
> @@ -10,7 +10,7 @@
>  define i64 @f1(i64 %src1) {
>  ; CHECK-LABEL: f1:
>  ; CHECK: cgrl %r2, g
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>  entry:
>    %src2 = load i64 , i64 *@g
> @@ -28,7 +28,7 @@ exit:
>  define i64 @f2(i64 %src1) {
>  ; CHECK-LABEL: f2:
>  ; CHECK: clgrl %r2, g
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>  entry:
>    %src2 = load i64 , i64 *@g
> @@ -46,7 +46,7 @@ exit:
>  define i64 @f3(i64 %src1) {
>  ; CHECK-LABEL: f3:
>  ; CHECK: c{{l?}}grl %r2, g
> -; CHECK-NEXT: je
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>  entry:
>    %src2 = load i64 , i64 *@g
> @@ -64,7 +64,7 @@ exit:
>  define i64 @f4(i64 %src1) {
>  ; CHECK-LABEL: f4:
>  ; CHECK: c{{l?}}grl %r2, g
> -; CHECK-NEXT: jlh
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: br %r14
>  entry:
>    %src2 = load i64 , i64 *@g
> @@ -83,7 +83,7 @@ define i64 @f5(i64 %src1) {
>  ; CHECK-LABEL: f5:
>  ; CHECK: larl [[REG:%r[0-5]]], h
>  ; CHECK: cg %r2, 0([[REG]])
> -; CHECK-NEXT: jl
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>  entry:
>    %src2 = load i64 , i64 *@h, align 4
> @@ -101,7 +101,7 @@ exit:
>  define i64 @f6(i64 %src2) {
>  ; CHECK-LABEL: f6:
>  ; CHECK: cgrl %r2, g
> -; CHECK-NEXT: jh {{\.L.*}}
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: br %r14
>  entry:
>    %src1 = load i64 , i64 *@g
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-44.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 44.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-44.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-44.ll Thu Apr  7 11:11:44 2016
> @@ -11,7 +11,7 @@ declare void @foo()
>  define i32 @f1(i32 %a, i32 %b, i32 *%dest) {
>  ; CHECK-LABEL: f1:
>  ; CHECK: afi %r2, 1000000
> -; CHECK-NEXT: je .L{{.*}}
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>  entry:
>    %res = add i32 %a, 1000000
> @@ -30,7 +30,7 @@ exit:
>  define i32 @f2(i32 %a, i32 %b, i32 *%dest) {
>  ; CHECK-LABEL: f2:
>  ; CHECK: afi %r2, 1000000
> -; CHECK-NEXT: jne .L{{.*}}
> +; CHECK-NEXT: bner %r14
>  ; CHECK: br %r14
>  entry:
>    %res = add i32 %a, 1000000
> @@ -49,7 +49,7 @@ exit:
>  define i32 @f3(i32 %a, i32 %b, i32 *%dest) {
>  ; CHECK-LABEL: f3:
>  ; CHECK: afi %r2, 1000000
> -; CHECK-NEXT: cijl %r2, 0, .L{{.*}}
> +; CHECK-NEXT: cibl %r2, 0, 0(%r14)
>  ; CHECK: br %r14
>  entry:
>    %res = add i32 %a, 1000000
> @@ -68,7 +68,7 @@ exit:
>  define i32 @f4(i32 %a, i32 %b, i32 *%dest) {
>  ; CHECK-LABEL: f4:
>  ; CHECK: afi %r2, 1000000
> -; CHECK-NEXT: cijle %r2, 0, .L{{.*}}
> +; CHECK-NEXT: cible %r2, 0, 0(%r14)
>  ; CHECK: br %r14
>  entry:
>    %res = add i32 %a, 1000000
> @@ -87,7 +87,7 @@ exit:
>  define i32 @f5(i32 %a, i32 %b, i32 *%dest) {
>  ; CHECK-LABEL: f5:
>  ; CHECK: afi %r2, 1000000
> -; CHECK-NEXT: cijh %r2, 0, .L{{.*}}
> +; CHECK-NEXT: cibh %r2, 0, 0(%r14)
>  ; CHECK: br %r14
>  entry:
>    %res = add i32 %a, 1000000
> @@ -106,7 +106,7 @@ exit:
>  define i32 @f6(i32 %a, i32 %b, i32 *%dest) {
>  ; CHECK-LABEL: f6:
>  ; CHECK: afi %r2, 1000000
> -; CHECK-NEXT: cijhe %r2, 0, .L{{.*}}
> +; CHECK-NEXT: cibhe %r2, 0, 0(%r14)
>  ; CHECK: br %r14
>  entry:
>    %res = add i32 %a, 1000000
> @@ -125,7 +125,7 @@ exit:
>  define i32 @f7(i32 %a, i32 %b, i32 *%dest) {
>  ; CHECK-LABEL: f7:
>  ; CHECK: s %r2, 0(%r4)
> -; CHECK-NEXT: jne .L{{.*}}
> +; CHECK-NEXT: bner %r14
>  ; CHECK: br %r14
>  entry:
>    %cur = load i32 , i32 *%dest
> @@ -145,7 +145,7 @@ exit:
>  define i32 @f8(i32 %a, i32 %b, i32 *%dest) {
>  ; CHECK-LABEL: f8:
>  ; CHECK: s %r2, 0(%r4)
> -; CHECK-NEXT: cijl %r2, 0, .L{{.*}}
> +; CHECK-NEXT: cibl %r2, 0, 0(%r14)
>  ; CHECK: br %r14
>  entry:
>    %cur = load i32 , i32 *%dest
> @@ -166,7 +166,7 @@ exit:
>  define i32 @f9(i32 %a, i32 %b, i32 *%dest) {
>  ; CHECK-LABEL: f9:
>  ; CHECK: nr %r2, %r3
> -; CHECK-NEXT: jl .L{{.*}}
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>  entry:
>    %res = and i32 %a, %b
> @@ -185,7 +185,7 @@ exit:
>  define i32 @f10(i32 %a, i32 %b, i32 *%dest) {
>  ; CHECK-LABEL: f10:
>  ; CHECK: nr %r2, %r3
> -; CHECK-NEXT: cijl %r2, 0, .L{{.*}}
> +; CHECK-NEXT: cibl %r2, 0, 0(%r14)
>  ; CHECK: br %r14
>  entry:
>    %res = and i32 %a, %b
> @@ -205,7 +205,7 @@ exit:
>  define i32 @f11(i32 %a, i32 %b, i32 *%dest) {
>  ; CHECK-LABEL: f11:
>  ; CHECK: nilf %r2, 100000001
> -; CHECK-NEXT: jl .L{{.*}}
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>  entry:
>    %res = and i32 %a, 100000001
> @@ -225,7 +225,7 @@ exit:
>  define i32 @f12(i32 %a, i32 %b, i32 *%dest) {
>  ; CHECK-LABEL: f12:
>  ; CHECK: nill %r2, 65436
> -; CHECK-NEXT: cijlh %r2, 0, .L{{.*}}
> +; CHECK-NEXT: ciblh %r2, 0, 0(%r14)
>  ; CHECK: br %r14
>  entry:
>    %res = and i32 %a, -100
> @@ -244,7 +244,7 @@ exit:
>  define i32 @f13(i32 %a, i32 %b, i32 *%dest) {
>  ; CHECK-LABEL: f13:
>  ; CHECK: sra %r2, 0(%r3)
> -; CHECK-NEXT: je .L{{.*}}
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>  entry:
>    %res = ashr i32 %a, %b
> @@ -263,7 +263,7 @@ exit:
>  define i32 @f14(i32 %a, i32 %b, i32 *%dest) {
>  ; CHECK-LABEL: f14:
>  ; CHECK: sra %r2, 0(%r3)
> -; CHECK-NEXT: jlh .L{{.*}}
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: br %r14
>  entry:
>    %res = ashr i32 %a, %b
> @@ -282,7 +282,7 @@ exit:
>  define i32 @f15(i32 %a, i32 %b, i32 *%dest) {
>  ; CHECK-LABEL: f15:
>  ; CHECK: sra %r2, 0(%r3)
> -; CHECK-NEXT: jl .L{{.*}}
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>  entry:
>    %res = ashr i32 %a, %b
> @@ -301,7 +301,7 @@ exit:
>  define i32 @f16(i32 %a, i32 %b, i32 *%dest) {
>  ; CHECK-LABEL: f16:
>  ; CHECK: sra %r2, 0(%r3)
> -; CHECK-NEXT: jle .L{{.*}}
> +; CHECK-NEXT: bler %r14
>  ; CHECK: br %r14
>  entry:
>    %res = ashr i32 %a, %b
> @@ -320,7 +320,7 @@ exit:
>  define i32 @f17(i32 %a, i32 %b, i32 *%dest) {
>  ; CHECK-LABEL: f17:
>  ; CHECK: sra %r2, 0(%r3)
> -; CHECK-NEXT: jh .L{{.*}}
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: br %r14
>  entry:
>    %res = ashr i32 %a, %b
> @@ -339,7 +339,7 @@ exit:
>  define i32 @f18(i32 %a, i32 %b, i32 *%dest) {
>  ; CHECK-LABEL: f18:
>  ; CHECK: sra %r2, 0(%r3)
> -; CHECK-NEXT: jhe .L{{.*}}
> +; CHECK-NEXT: bher %r14
>  ; CHECK: br %r14
>  entry:
>    %res = ashr i32 %a, %b
> @@ -359,7 +359,7 @@ exit:
>  define i64 @f19(i64 %a, i64 %b, i64 *%dest) {
>  ; CHECK-LABEL: f19:
>  ; CHECK: risbg %r2, %r3, 0, 190, 0
> -; CHECK-NEXT: je .L{{.*}}
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>  entry:
>    %res = and i64 %b, -2
> @@ -378,7 +378,7 @@ exit:
>  define i64 @f20(i64 %a, i64 %b, i64 *%dest) {
>  ; CHECK-LABEL: f20:
>  ; CHECK: risbg %r2, %r3, 0, 190, 0
> -; CHECK-NEXT: jl .L{{.*}}
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>  entry:
>    %res = and i64 %b, -2
> @@ -401,7 +401,7 @@ define i32 @f21(i32 %a, i32 %b, i32 *%de
>  ; CHECK-NEXT: #APP
>  ; CHECK-NEXT: blah %r2
>  ; CHECK-NEXT: #NO_APP
> -; CHECK-NEXT: cije %r2, 0, .L{{.*}}
> +; CHECK-NEXT: cibe %r2, 0, 0(%r14)
>  ; CHECK: br %r14
>  entry:
>    %add = add i32 %a, 1000000
> @@ -424,7 +424,7 @@ define i32 @f22(i32 %a, i32 %b, i32 *%de
>  ; CHECK-NEXT: #APP
>  ; CHECK-NEXT: blah %r2
>  ; CHECK-NEXT: #NO_APP
> -; CHECK-NEXT: cije %r2, 0, .L{{.*}}
> +; CHECK-NEXT: cibe %r2, 0, 0(%r14)
>  ; CHECK: br %r14
>  entry:
>    %add = add i32 %a, 1000000
> @@ -445,7 +445,7 @@ define i32 @f23(i32 %a, i32 %b, i32 *%de
>  ; CHECK-LABEL: f23:
>  ; CHECK: afi %r2, 1000000
>  ; CHECK-NEXT: st %r2, 0(%r4)
> -; CHECK-NEXT: jne .L{{.*}}
> +; CHECK-NEXT: bner %r14
>  ; CHECK: br %r14
>  entry:
>    %res = add i32 %a, 1000000
> @@ -491,7 +491,7 @@ define void @f25(i32 %a, i32 *%ptr) {
>  ; CHECK-NEXT: #APP
>  ; CHECK-NEXT: blah
>  ; CHECK-NEXT: #NO_APP
> -; CHECK-NEXT: jne .L{{.*}}
> +; CHECK-NEXT: bner %r14
>  ; CHECK: br %r14
>  entry:
>    %add = add i32 %a, 1000000
> @@ -514,7 +514,7 @@ define void @f26(i32 %a, i32 *%ptr) {
>  ; CHECK-NEXT: #APP
>  ; CHECK-NEXT: blah
>  ; CHECK-NEXT: #NO_APP
> -; CHECK-NEXT: cijlh %r2, 0, .L{{.*}}
> +; CHECK-NEXT: ciblh %r2, 0, 0(%r14)
>  ; CHECK: br %r14
>  entry:
>    %add = add i32 %a, 1000000
> @@ -537,7 +537,7 @@ define i32 @f27(i32 %a, i32 %b, i32 *%de
>  ; CHECK: afi %r2, 1000000
>  ; CHECK-NEXT: sr %r3, %r2
>  ; CHECK-NEXT: st %r3, 0(%r4)
> -; CHECK-NEXT: cije %r2, 0, .L{{.*}}
> +; CHECK-NEXT: cibe %r2, 0, 0(%r14)
>  ; CHECK: br %r14
>  entry:
>    %add = add i32 %a, 1000000
> @@ -558,7 +558,7 @@ exit:
>  define void @f28(i64 %a, i64 *%dest) {
>  ; CHECK-LABEL: f28:
>  ; CHECK: xi 0(%r2), 15
> -; CHECK: cgije %r2, 0, .L{{.*}}
> +; CHECK: cgibe %r2, 0, 0(%r14)
>  ; CHECK: br %r14
>  entry:
>    %ptr = inttoptr i64 %a to i8 *
> @@ -580,7 +580,7 @@ exit:
>  define i32 @f29(i64 %base, i64 %index, i32 *%dest) {
>  ; CHECK-LABEL: f29:
>  ; CHECK: lt %r2, 0({{%r2,%r3|%r3,%r2}})
> -; CHECK-NEXT: jle .L{{.*}}
> +; CHECK-NEXT: bler %r14
>  ; CHECK: br %r14
>  entry:
>    %add = add i64 %base, %index
> @@ -601,7 +601,7 @@ exit:
>  define i32 @f30(i64 %base, i64 %index, i32 *%dest) {
>  ; CHECK-LABEL: f30:
>  ; CHECK: lt %r2, 100000({{%r2,%r3|%r3,%r2}})
> -; CHECK-NEXT: jle .L{{.*}}
> +; CHECK-NEXT: bler %r14
>  ; CHECK: br %r14
>  entry:
>    %add1 = add i64 %base, %index
> @@ -623,7 +623,7 @@ exit:
>  define i64 @f31(i64 %base, i64 %index, i64 *%dest) {
>  ; CHECK-LABEL: f31:
>  ; CHECK: ltg %r2, 0({{%r2,%r3|%r3,%r2}})
> -; CHECK-NEXT: jhe .L{{.*}}
> +; CHECK-NEXT: bher %r14
>  ; CHECK: br %r14
>  entry:
>    %add = add i64 %base, %index
> @@ -644,7 +644,7 @@ exit:
>  define i64 @f32(i64 %base, i64 %index, i64 *%dest) {
>  ; CHECK-LABEL: f32:
>  ; CHECK: ltgf %r2, 0({{%r2,%r3|%r3,%r2}})
> -; CHECK-NEXT: jh .L{{.*}}
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: br %r14
>  entry:
>    %add = add i64 %base, %index
> @@ -669,7 +669,7 @@ define i32 @f33(i32 %dummy, i32 %val, i3
>  ; CHECK-NEXT: #APP
>  ; CHECK-NEXT: blah %r2
>  ; CHECK-NEXT: #NO_APP
> -; CHECK-NEXT: jl .L{{.*}}
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>  entry:
>    call void asm sideeffect "blah $0", "{r2}"(i32 %val)
> @@ -691,7 +691,7 @@ define i64 @f34(i64 %dummy, i64 %val, i6
>  ; CHECK-NEXT: #APP
>  ; CHECK-NEXT: blah %r2
>  ; CHECK-NEXT: #NO_APP
> -; CHECK-NEXT: jh .L{{.*}}
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: br %r14
>  entry:
>    call void asm sideeffect "blah $0", "{r2}"(i64 %val)
> @@ -713,7 +713,7 @@ define i64 @f35(i64 %dummy, i32 %val, i6
>  ; CHECK-NEXT: #APP
>  ; CHECK-NEXT: blah %r2
>  ; CHECK-NEXT: #NO_APP
> -; CHECK-NEXT: jh .L{{.*}}
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: br %r14
>  entry:
>    %ext = sext i32 %val to i64
> @@ -737,7 +737,7 @@ define i32 @f36(i32 %val, i32 %dummy, i3
>  ; CHECK-NEXT: #APP
>  ; CHECK-NEXT: blah %r3
>  ; CHECK-NEXT: #NO_APP
> -; CHECK-NEXT: jl .L{{.*}}
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>  entry:
>    call void asm sideeffect "blah $0", "{r3}"(i32 %val)
> @@ -760,7 +760,7 @@ define i64 @f37(i64 %val, i64 %dummy, i6
>  ; CHECK-NEXT: #APP
>  ; CHECK-NEXT: blah %r3
>  ; CHECK-NEXT: #NO_APP
> -; CHECK-NEXT: jl .L{{.*}}
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>  entry:
>    call void asm sideeffect "blah $0", "{r3}"(i64 %val)
> @@ -783,7 +783,7 @@ define i32 @f38(i32 %val, i64 %dummy, i3
>  ; CHECK-NEXT: #APP
>  ; CHECK-NEXT: blah %r3
>  ; CHECK-NEXT: #NO_APP
> -; CHECK-NEXT: jl .L{{.*}}
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>  entry:
>    %ext = sext i32 %val to i64
> @@ -806,7 +806,7 @@ define i64 @f39(i64 %dummy, i64 %a, i64
>  ; CHECK-NEXT: #APP
>  ; CHECK-NEXT: blah %r2
>  ; CHECK-NEXT: #NO_APP
> -; CHECK-NEXT: jh .L{{.*}}
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: br %r14
>  entry:
>    %val = trunc i64 %a to i32
> @@ -830,7 +830,7 @@ define i64 @f40(i64 %dummy, i64 %a, i64
>  ; CHECK-NEXT: #APP
>  ; CHECK-NEXT: blah %r2
>  ; CHECK-NEXT: #NO_APP
> -; CHECK-NEXT: jh .L{{.*}}
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: br %r14
>  entry:
>    %shl = shl i64 %a, 32
> @@ -851,7 +851,7 @@ exit:
>  define i32 @f41(i32 %a, i32 %b, i32 *%dest) {
>  ; CHECK-LABEL: f41:
>  ; CHECK: s %r2, 0(%r4)
> -; CHECK-NEXT: jne .L{{.*}}
> +; CHECK-NEXT: bner %r14
>  ; CHECK: br %r14
>  entry:
>    %cur = load i32 , i32 *%dest
> @@ -871,7 +871,7 @@ exit:
>  define i64 @f42(i64 %base, i64 %index, i64 *%dest) {
>  ; CHECK-LABEL: f42:
>  ; CHECK: ltgf %r2, 0({{%r2,%r3|%r3,%r2}})
> -; CHECK-NEXT: jh .L{{.*}}
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: br %r14
>  entry:
>    %add = add i64 %base, %index
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-46.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 46.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-46.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-46.ll Thu Apr  7 11:11:44 2016
> @@ -8,7 +8,7 @@
>  define void @f1(i32 %a) {
>  ; CHECK-LABEL: f1:
>  ; CHECK: tmll %r2, 1
> -; CHECK: je {{\.L.*}}
> +; CHECK: ber %r14
>  ; CHECK: br %r14
>  entry:
>    %and = and i32 %a, 1
> @@ -27,7 +27,7 @@ exit:
>  define void @f2(i32 %a) {
>  ; CHECK-LABEL: f2:
>  ; CHECK: tmll %r2, 65535
> -; CHECK: jne {{\.L.*}}
> +; CHECK: bner %r14
>  ; CHECK: br %r14
>  entry:
>    %and = and i32 %a, 65535
> @@ -46,7 +46,7 @@ exit:
>  define void @f3(i32 %a) {
>  ; CHECK-LABEL: f3:
>  ; CHECK: tmlh %r2, 1
> -; CHECK: jne {{\.L.*}}
> +; CHECK: bner %r14
>  ; CHECK: br %r14
>  entry:
>    %and = and i32 %a, 65536
> @@ -83,7 +83,7 @@ exit:
>  define void @f5(i32 %a) {
>  ; CHECK-LABEL: f5:
>  ; CHECK: tmlh %r2, 65535
> -; CHECK: je {{\.L.*}}
> +; CHECK: ber %r14
>  ; CHECK: br %r14
>  entry:
>    %and = and i32 %a, 4294901760
> @@ -103,7 +103,7 @@ exit:
>  define void @f6(i32 %a) {
>  ; CHECK-LABEL: f6:
>  ; CHECK: tmll %r2, 240
> -; CHECK: je {{\.L.*}}
> +; CHECK: ber %r14
>  ; CHECK: br %r14
>  entry:
>    %and = and i32 %a, 240
> @@ -122,7 +122,7 @@ exit:
>  define void @f7(i32 %a) {
>  ; CHECK-LABEL: f7:
>  ; CHECK: tmll %r2, 240
> -; CHECK: je {{\.L.*}}
> +; CHECK: ber %r14
>  ; CHECK: br %r14
>  entry:
>    %and = and i32 %a, 240
> @@ -142,7 +142,7 @@ exit:
>  define void @f8(i32 %a) {
>  ; CHECK-LABEL: f8:
>  ; CHECK: tmll %r2, 240
> -; CHECK: jne {{\.L.*}}
> +; CHECK: bner %r14
>  ; CHECK: br %r14
>  entry:
>    %and = and i32 %a, 240
> @@ -161,7 +161,7 @@ exit:
>  define void @f9(i32 %a) {
>  ; CHECK-LABEL: f9:
>  ; CHECK: tmll %r2, 240
> -; CHECK: jne {{\.L.*}}
> +; CHECK: bner %r14
>  ; CHECK: br %r14
>  entry:
>    %and = and i32 %a, 240
> @@ -181,7 +181,7 @@ exit:
>  define void @f10(i32 %a) {
>  ; CHECK-LABEL: f10:
>  ; CHECK: tmll %r2, 35
> -; CHECK: jle {{\.L.*}}
> +; CHECK: bler %r14
>  ; CHECK: br %r14
>  entry:
>    %and = and i32 %a, 35
> @@ -200,7 +200,7 @@ exit:
>  define void @f11(i32 %a) {
>  ; CHECK-LABEL: f11:
>  ; CHECK: tmll %r2, 35
> -; CHECK: jle {{\.L.*}}
> +; CHECK: bler %r14
>  ; CHECK: br %r14
>  entry:
>    %and = and i32 %a, 35
> @@ -220,7 +220,7 @@ exit:
>  define void @f12(i32 %a) {
>  ; CHECK-LABEL: f12:
>  ; CHECK: tmll %r2, 140
> -; CHECK: jnle {{\.L.*}}
> +; CHECK: bnler %r14
>  ; CHECK: br %r14
>  entry:
>    %and = and i32 %a, 140
> @@ -239,7 +239,7 @@ exit:
>  define void @f13(i32 %a) {
>  ; CHECK-LABEL: f13:
>  ; CHECK: tmll %r2, 140
> -; CHECK: jnle {{\.L.*}}
> +; CHECK: bnler %r14
>  ; CHECK: br %r14
>  entry:
>    %and = and i32 %a, 140
> @@ -258,7 +258,7 @@ exit:
>  define void @f14(i32 %a) {
>  ; CHECK-LABEL: f14:
>  ; CHECK: tmll %r2, 101
> -; CHECK: jo {{\.L.*}}
> +; CHECK: bor %r14
>  ; CHECK: br %r14
>  entry:
>    %and = and i32 %a, 101
> @@ -277,7 +277,7 @@ exit:
>  define void @f15(i32 %a) {
>  ; CHECK-LABEL: f15:
>  ; CHECK: tmll %r2, 65519
> -; CHECK: jno {{\.L.*}}
> +; CHECK: bnor %r14
>  ; CHECK: br %r14
>  entry:
>    %and = and i32 %a, 65519
> @@ -297,7 +297,7 @@ exit:
>  define void @f16(i32 %a) {
>  ; CHECK-LABEL: f16:
>  ; CHECK: tmll %r2, 130
> -; CHECK: jno {{\.L.*}}
> +; CHECK: bnor %r14
>  ; CHECK: br %r14
>  entry:
>    %and = and i32 %a, 130
> @@ -316,7 +316,7 @@ exit:
>  define void @f17(i32 %a) {
>  ; CHECK-LABEL: f17:
>  ; CHECK: tmll %r2, 130
> -; CHECK: jno {{\.L.*}}
> +; CHECK: bnor %r14
>  ; CHECK: br %r14
>  entry:
>    %and = and i32 %a, 130
> @@ -336,7 +336,7 @@ exit:
>  define void @f18(i32 %a) {
>  ; CHECK-LABEL: f18:
>  ; CHECK: tmll %r2, 194
> -; CHECK: jo {{\.L.*}}
> +; CHECK: bor %r14
>  ; CHECK: br %r14
>  entry:
>    %and = and i32 %a, 194
> @@ -355,7 +355,7 @@ exit:
>  define void @f19(i32 %a) {
>  ; CHECK-LABEL: f19:
>  ; CHECK: tmll %r2, 194
> -; CHECK: jo {{\.L.*}}
> +; CHECK: bor %r14
>  ; CHECK: br %r14
>  entry:
>    %and = and i32 %a, 194
> @@ -375,7 +375,7 @@ exit:
>  define void @f20(i32 %a) {
>  ; CHECK-LABEL: f20:
>  ; CHECK: tmll %r2, 20
> -; CHECK: jl {{\.L.*}}
> +; CHECK: blr %r14
>  ; CHECK: br %r14
>  entry:
>    %and = and i32 %a, 20
> @@ -395,7 +395,7 @@ exit:
>  define void @f21(i32 %a) {
>  ; CHECK-LABEL: f21:
>  ; CHECK: tmll %r2, 20
> -; CHECK: jnl {{\.L.*}}
> +; CHECK: bnlr %r14
>  ; CHECK: br %r14
>  entry:
>    %and = and i32 %a, 20
> @@ -415,7 +415,7 @@ exit:
>  define void @f22(i32 %a) {
>  ; CHECK-LABEL: f22:
>  ; CHECK: tmll %r2, 20
> -; CHECK: jh {{\.L.*}}
> +; CHECK: bhr %r14
>  ; CHECK: br %r14
>  entry:
>    %and = and i32 %a, 20
> @@ -435,7 +435,7 @@ exit:
>  define void @f23(i32 %a) {
>  ; CHECK-LABEL: f23:
>  ; CHECK: tmll %r2, 20
> -; CHECK: jnh {{\.L.*}}
> +; CHECK: bnhr %r14
>  ; CHECK: br %r14
>  entry:
>    %and = and i32 %a, 20
> @@ -454,7 +454,7 @@ exit:
>  define void @f24(i32 %a) {
>  ; CHECK-LABEL: f24:
>  ; CHECK: tmll %r2, 255
> -; CHECK: jne {{\.L.*}}
> +; CHECK: bner %r14
>  ; CHECK: br %r14
>  entry:
>    %shl = shl i32 %a, 12
> @@ -474,7 +474,7 @@ exit:
>  define void @f25(i32 %a) {
>  ; CHECK-LABEL: f25:
>  ; CHECK: tmlh %r2, 512
> -; CHECK: jne {{\.L.*}}
> +; CHECK: bner %r14
>  ; CHECK: br %r14
>  entry:
>    %shr = lshr i32 %a, 25
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-47.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 47.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-47.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-47.ll Thu Apr  7 11:11:44 2016
> @@ -9,7 +9,7 @@
>  define void @f1(i64 %a) {
>  ; CHECK-LABEL: f1:
>  ; CHECK: tmll %r2, 1
> -; CHECK: je {{\.L.*}}
> +; CHECK: ber %r14
>  ; CHECK: br %r14
>  entry:
>    %and = and i64 %a, 1
> @@ -28,7 +28,7 @@ exit:
>  define void @f2(i64 %a) {
>  ; CHECK-LABEL: f2:
>  ; CHECK: tmll %r2, 65535
> -; CHECK: jne {{\.L.*}}
> +; CHECK: bner %r14
>  ; CHECK: br %r14
>  entry:
>    %and = and i64 %a, 65535
> @@ -47,7 +47,7 @@ exit:
>  define void @f3(i64 %a) {
>  ; CHECK-LABEL: f3:
>  ; CHECK: tmlh %r2, 1
> -; CHECK: jne {{\.L.*}}
> +; CHECK: bner %r14
>  ; CHECK: br %r14
>  entry:
>    %and = and i64 %a, 65536
> @@ -84,7 +84,7 @@ exit:
>  define void @f5(i64 %a) {
>  ; CHECK-LABEL: f5:
>  ; CHECK: tmlh %r2, 65535
> -; CHECK: je {{\.L.*}}
> +; CHECK: ber %r14
>  ; CHECK: br %r14
>  entry:
>    %and = and i64 %a, 4294901760
> @@ -103,7 +103,7 @@ exit:
>  define void @f6(i64 %a) {
>  ; CHECK-LABEL: f6:
>  ; CHECK: tmhl %r2, 1
> -; CHECK: je {{\.L.*}}
> +; CHECK: ber %r14
>  ; CHECK: br %r14
>  entry:
>    %and = and i64 %a, 4294967296
> @@ -140,7 +140,7 @@ exit:
>  define void @f8(i64 %a) {
>  ; CHECK-LABEL: f8:
>  ; CHECK: tmhl %r2, 65535
> -; CHECK: jne {{\.L.*}}
> +; CHECK: bner %r14
>  ; CHECK: br %r14
>  entry:
>    %and = and i64 %a, 281470681743360
> @@ -159,7 +159,7 @@ exit:
>  define void @f9(i64 %a) {
>  ; CHECK-LABEL: f9:
>  ; CHECK: tmhh %r2, 1
> -; CHECK: jne {{\.L.*}}
> +; CHECK: bner %r14
>  ; CHECK: br %r14
>  entry:
>    %and = and i64 %a, 281474976710656
> @@ -178,7 +178,7 @@ exit:
>  define void @f10(i64 %a) {
>  ; CHECK-LABEL: f10:
>  ; CHECK: tmhh %r2, 65535
> -; CHECK: je {{\.L.*}}
> +; CHECK: ber %r14
>  ; CHECK: br %r14
>  entry:
>    %and = and i64 %a, 18446462598732840960
> @@ -197,7 +197,7 @@ exit:
>  define void @f11(i64 %a) {
>  ; CHECK-LABEL: f11:
>  ; CHECK: tmhl %r2, 32768
> -; CHECK: jne {{\.L.*}}
> +; CHECK: bner %r14
>  ; CHECK: br %r14
>  entry:
>    %shl = shl i64 %a, 1
> @@ -217,7 +217,7 @@ exit:
>  define void @f12(i64 %a) {
>  ; CHECK-LABEL: f12:
>  ; CHECK: tmhh %r2, 256
> -; CHECK: jne {{\.L.*}}
> +; CHECK: bner %r14
>  ; CHECK: br %r14
>  entry:
>    %shr = lshr i64 %a, 56
> @@ -237,7 +237,7 @@ exit:
>  define void @f13(i64 %a) {
>  ; CHECK-LABEL: f13:
>  ; CHECK: tmhh %r2, 49152
> -; CHECK: jno {{\.L.*}}
> +; CHECK: bnor %r14
>  ; CHECK: br %r14
>  entry:
>    %cmp = icmp ult i64 %a, 13835058055282163712
> @@ -255,7 +255,7 @@ exit:
>  define void @f14(i64 %a) {
>  ; CHECK-LABEL: f14:
>  ; CHECK: tmhh %r2, 49152
> -; CHECK: jno {{\.L.*}}
> +; CHECK: bnor %r14
>  ; CHECK: br %r14
>  entry:
>    %cmp = icmp ule i64 %a, 13835058055282163711
> @@ -273,7 +273,7 @@ exit:
>  define void @f15(i64 %a) {
>  ; CHECK-LABEL: f15:
>  ; CHECK: tmhh %r2, 49152
> -; CHECK: jo {{\.L.*}}
> +; CHECK: bor %r14
>  ; CHECK: br %r14
>  entry:
>    %cmp = icmp ugt i64 %a, 13835058055282163711
> @@ -291,7 +291,7 @@ exit:
>  define void @f16(i64 %a) {
>  ; CHECK-LABEL: f16:
>  ; CHECK: tmhh %r2, 49152
> -; CHECK: jo {{\.L.*}}
> +; CHECK: bor %r14
>  ; CHECK: br %r14
>  entry:
>    %cmp = icmp uge i64 %a, 13835058055282163712
> @@ -329,7 +329,7 @@ exit:
>  define void @f18(i64 %a) {
>  ; CHECK-LABEL: f18:
>  ; CHECK-NOT: tmhh
> -; CHECK: cgijhe %r2, 0,
> +; CHECK: cgibhe %r2, 0, 0(%r14)
>  ; CHECK: br %r14
>  entry:
>    %cmp = icmp ult i64 %a, 9223372036854775808
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/int-cmp-48.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/int-cmp-
> 48.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/int-cmp-48.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/int-cmp-48.ll Thu Apr  7 11:11:44 2016
> @@ -8,7 +8,7 @@
>  define void @f1(i8 *%src) {
>  ; CHECK-LABEL: f1:
>  ; CHECK: tm 0(%r2), 1
> -; CHECK: je {{\.L.*}}
> +; CHECK: ber %r14
>  ; CHECK: br %r14
>  entry:
>    %byte = load i8 , i8 *%src
> @@ -31,7 +31,7 @@ define void @f2(i8 *%src) {
>  ; CHECK: llc [[REG:%r[0-5]]], 0(%r2)
>  ; CHECK: mvi 0(%r2), 0
>  ; CHECK: tmll [[REG]], 1
> -; CHECK: je {{\.L.*}}
> +; CHECK: ber %r14
>  ; CHECK: br %r14
>  entry:
>    %byte = load i8 , i8 *%src
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/memchr-01.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/memchr-
> 01.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/memchr-01.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/memchr-01.ll Thu Apr  7 11:11:44 2016
> @@ -13,7 +13,7 @@ define i8 *@f1(i8 *%src, i16 %char, i32
>  ; CHECK: [[LABEL:\.[^:]*]]:
>  ; CHECK: srst %r2, [[REG]]
>  ; CHECK-NEXT: jo [[LABEL]]
> -; CHECK: jl {{\.L.*}}
> +; CHECK: blr %r14
>  ; CHECK: lghi %r2, 0
>  ; CHECK: br %r14
>    %res = call i8 *@memchr(i8 *%src, i16 %char, i32 %len)
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/memchr-02.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/memchr-
> 02.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/memchr-02.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/memchr-02.ll Thu Apr  7 11:11:44 2016
> @@ -12,7 +12,7 @@ define i8 *@f1(i64 %len, i8 *%src, i32 %
>  ; CHECK: [[LABEL:\.[^:]*]]:
>  ; CHECK: srst %r2, %r3
>  ; CHECK-NEXT: jo [[LABEL]]
> -; CHECK: jl {{\.L.*}}
> +; CHECK: blr %r14
>  ; CHECK: lghi %r2, 0
>  ; CHECK: br %r14
>    %res = call i8 *@memchr(i8 *%src, i32 %char, i64 %len)
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/memcmp-01.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/memcmp-
> 01.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/memcmp-01.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/memcmp-01.ll Thu Apr  7 11:11:44 2016
> @@ -29,7 +29,7 @@ define i32 @f2(i8 *%src1, i8 *%src2) {
>  define void @f3(i8 *%src1, i8 *%src2, i32 *%dest) {
>  ; CHECK-LABEL: f3:
>  ; CHECK: clc 0(3,%r2), 0(%r3)
> -; CHECK-NEXT: je {{\..*}}
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>    %res = call i32 @memcmp(i8 *%src1, i8 *%src2, i64 3)
>    %cmp = icmp eq i32 %res, 0
> @@ -47,7 +47,7 @@ exit:
>  define void @f4(i8 *%src1, i8 *%src2, i32 *%dest) {
>  ; CHECK-LABEL: f4:
>  ; CHECK: clc 0(4,%r2), 0(%r3)
> -; CHECK-NEXT: jlh {{\..*}}
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: br %r14
>  entry:
>    %res = call i32 @memcmp(i8 *%src1, i8 *%src2, i64 4)
> @@ -66,7 +66,7 @@ exit:
>  define void @f5(i8 *%src1, i8 *%src2, i32 *%dest) {
>  ; CHECK-LABEL: f5:
>  ; CHECK: clc 0(5,%r2), 0(%r3)
> -; CHECK-NEXT: jl {{\..*}}
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>  entry:
>    %res = call i32 @memcmp(i8 *%src1, i8 *%src2, i64 5)
> @@ -85,7 +85,7 @@ exit:
>  define void @f6(i8 *%src1, i8 *%src2, i32 *%dest) {
>  ; CHECK-LABEL: f6:
>  ; CHECK: clc 0(6,%r2), 0(%r3)
> -; CHECK-NEXT: jh {{\..*}}
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: br %r14
>  entry:
>    %res = call i32 @memcmp(i8 *%src1, i8 *%src2, i64 6)
> @@ -108,7 +108,7 @@ define i32 @f7(i8 *%src1, i8 *%src2, i32
>  ; CHECK: ipm [[REG:%r[0-5]]]
>  ; CHECK: srl [[REG]], 28
>  ; CHECK: rll %r2, [[REG]], 31
> -; CHECK: jl {{.L*}}
> +; CHECK: blr %r14
>  ; CHECK: br %r14
>  entry:
>    %res = call i32 @memcmp(i8 *%src1, i8 *%src2, i64 256)
> @@ -143,7 +143,7 @@ define void @f9(i8 *%src1, i8 *%src2, i3
>  ; CHECK: jlh [[LABEL:\..*]]
>  ; CHECK: clc 256(1,%r2), 256(%r3)
>  ; CHECK: [[LABEL]]:
> -; CHECK-NEXT: jl .L
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>  entry:
>    %res = call i32 @memcmp(i8 *%src1, i8 *%src2, i64 257)
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/memcmp-02.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/memcmp-
> 02.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/memcmp-02.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/memcmp-02.ll Thu Apr  7 11:11:44 2016
> @@ -30,7 +30,7 @@ define i64 @f2(i8 *%src1, i8 *%src2) {
>  define void @f3(i8 *%src1, i8 *%src2, i64 *%dest) {
>  ; CHECK-LABEL: f3:
>  ; CHECK: clc 0(3,%r2), 0(%r3)
> -; CHECK-NEXT: je {{\..*}}
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>    %res = call i64 @memcmp(i8 *%src1, i8 *%src2, i64 3)
>    %cmp = icmp eq i64 %res, 0
> @@ -48,7 +48,7 @@ exit:
>  define void @f4(i8 *%src1, i8 *%src2, i64 *%dest) {
>  ; CHECK-LABEL: f4:
>  ; CHECK: clc 0(4,%r2), 0(%r3)
> -; CHECK-NEXT: jlh {{\..*}}
> +; CHECK-NEXT: blhr %r14
>  ; CHECK: br %r14
>  entry:
>    %res = call i64 @memcmp(i8 *%src1, i8 *%src2, i64 4)
> @@ -67,7 +67,7 @@ exit:
>  define void @f5(i8 *%src1, i8 *%src2, i64 *%dest) {
>  ; CHECK-LABEL: f5:
>  ; CHECK: clc 0(5,%r2), 0(%r3)
> -; CHECK-NEXT: jl {{\..*}}
> +; CHECK-NEXT: blr %r14
>  ; CHECK: br %r14
>  entry:
>    %res = call i64 @memcmp(i8 *%src1, i8 *%src2, i64 5)
> @@ -86,7 +86,7 @@ exit:
>  define void @f6(i8 *%src1, i8 *%src2, i64 *%dest) {
>  ; CHECK-LABEL: f6:
>  ; CHECK: clc 0(6,%r2), 0(%r3)
> -; CHECK-NEXT: jh {{\..*}}
> +; CHECK-NEXT: bhr %r14
>  ; CHECK: br %r14
>  entry:
>    %res = call i64 @memcmp(i8 *%src1, i8 *%src2, i64 6)
> @@ -110,7 +110,7 @@ define i64 @f7(i8 *%src1, i8 *%src2, i64
>  ; CHECK: srl [[REG]], 28
>  ; CHECK: rll [[REG]], [[REG]], 31
>  ; CHECK: lgfr %r2, [[REG]]
> -; CHECK: jl {{.L*}}
> +; CHECK: blr %r14
>  ; CHECK: br %r14
>  entry:
>    %res = call i64 @memcmp(i8 *%src1, i8 *%src2, i64 256)
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/strcmp-01.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/strcmp-
> 01.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/strcmp-01.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/strcmp-01.ll Thu Apr  7 11:11:44 2016
> @@ -28,7 +28,7 @@ define void @f2(i8 *%src1, i8 *%src2, i3
>  ; CHECK: clst %r2, %r3
>  ; CHECK-NEXT: jo [[LABEL]]
>  ; CHECK-NEXT: BB#{{[0-9]+}}
> -; CHECK-NEXT: je {{\.L.*}}
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>    %res = call i32 @strcmp(i8 *%src1, i8 *%src2)
>    %cmp = icmp eq i32 %res, 0
> @@ -54,7 +54,7 @@ define i32 @f3(i8 *%src1, i8 *%src2, i32
>  ; CHECK-NEXT: ipm [[REG:%r[0-5]]]
>  ; CHECK: srl [[REG]], 28
>  ; CHECK: rll %r2, [[REG]], 31
> -; CHECK: jl {{\.L*}}
> +; CHECK: blr %r14
>  ; CHECK: br %r14
>  entry:
>    %res = call i32 @strcmp(i8 *%src1, i8 *%src2)
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/strcmp-02.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/strcmp-
> 02.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/strcmp-02.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/strcmp-02.ll Thu Apr  7 11:11:44 2016
> @@ -29,7 +29,7 @@ define void @f2(i8 *%src1, i8 *%src2, i6
>  ; CHECK: clst %r2, %r3
>  ; CHECK-NEXT: jo [[LABEL]]
>  ; CHECK-NEXT: BB#{{[0-9]+}}
> -; CHECK-NEXT: je {{\.L.*}}
> +; CHECK-NEXT: ber %r14
>  ; CHECK: br %r14
>    %res = call i64 @strcmp(i8 *%src1, i8 *%src2)
>    %cmp = icmp eq i64 %res, 0
> @@ -56,7 +56,7 @@ define i64 @f3(i8 *%src1, i8 *%src2, i64
>  ; CHECK: srl [[REG]], 28
>  ; CHECK: rll [[REG]], [[REG]], 31
>  ; CHECK: lgfr %r2, [[REG]]
> -; CHECK: jl {{\.L*}}
> +; CHECK: blr %r14
>  ; CHECK: br %r14
>  entry:
>    %res = call i64 @strcmp(i8 *%src1, i8 *%src2)
>
> Modified: llvm/trunk/test/CodeGen/SystemZ/vec-intrinsics.ll
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/CodeGen/SystemZ/vec-
> intrinsics.ll?rev=265689&r1=265688&r2=265689&view=diff
> ==========================================================================
> ====
> --- llvm/trunk/test/CodeGen/SystemZ/vec-intrinsics.ll (original)
> +++ llvm/trunk/test/CodeGen/SystemZ/vec-intrinsics.ll Thu Apr  7 11:11:44
> 2016
> @@ -396,7 +396,7 @@ define <16 x i8> @test_vpkshs(<8 x i16>
>  define <16 x i8> @test_vpkshs_all_store(<8 x i16> %a, <8 x i16> %b, i32
> *%ptr) {
>  ; CHECK-LABEL: test_vpkshs_all_store:
>  ; CHECK: vpkshs %v24, %v24, %v26
> -; CHECK-NEXT: {{jno|jle}} {{\.L*}}
> +; CHECK-NEXT: {{bnor|bler}} %r14
>  ; CHECK: mvhi 0(%r2), 0
>  ; CHECK: br %r14
>    %call = call {<16 x i8>, i32} @llvm.s390.vpkshs(<8 x i16> %a, <8 x i16>
> %b)
> @@ -432,7 +432,7 @@ define <8 x i16> @test_vpksfs(<4 x i32>
>  define <8 x i16> @test_vpksfs_any_store(<4 x i32> %a, <4 x i32> %b, i32
> *%ptr) {
>  ; CHECK-LABEL: test_vpksfs_any_store:
>  ; CHECK: vpksfs %v24, %v24, %v26
> -; CHECK-NEXT: {{jhe|je}} {{\.L*}}
> +; CHECK-NEXT: {{bher|ber}} %r14
>  ; CHECK: mvhi 0(%r2), 0
>  ; CHECK: br %r14
>    %call = call {<8 x i16>, i32} @llvm.s390.vpksfs(<4 x i32> %a, <4 x i32>
> %b)
> @@ -469,7 +469,7 @@ define <4 x i32> @test_vpksgs_none_store
>                                           i32 *%ptr) {
>  ; CHECK-LABEL: test_vpksgs_none_store:
>  ; CHECK: vpksgs %v24, %v24, %v26
> -; CHECK-NEXT: {{jnhe|jne}} {{\.L*}}
> +; CHECK-NEXT: {{bnher|bner}} %r14
>  ; CHECK: mvhi 0(%r2), 0
>  ; CHECK: br %r14
>    %call = call {<4 x i32>, i32} @llvm.s390.vpksgs(<2 x i64> %a, <2 x i64>
> %b)
> @@ -533,7 +533,7 @@ define <16 x i8> @test_vpklshs_all_store
>                                           i32 *%ptr) {
>  ; CHECK-LABEL: test_vpklshs_all_store:
>  ; CHECK: vpklshs %v24, %v24, %v26
> -; CHECK-NEXT: {{jno|jle}} {{\.L*}}
> +; CHECK-NEXT: {{bnor|bler}} %r14
>  ; CHECK: mvhi 0(%r2), 0
>  ; CHECK: br %r14
>    %call = call {<16 x i8>, i32} @llvm.s390.vpklshs(<8 x i16> %a, <8 x
> i16> %b)
> @@ -570,7 +570,7 @@ define <8 x i16> @test_vpklsfs_any_store
>                                           i32 *%ptr) {
>  ; CHECK-LABEL: test_vpklsfs_any_store:
>  ; CHECK: vpklsfs %v24, %v24, %v26
> -; CHECK-NEXT: {{jhe|je}} {{\.L*}}
> +; CHECK-NEXT: {{bher|ber}} %r14
>  ; CHECK: mvhi 0(%r2), 0
>  ; CHECK: br %r14
>    %call = call {<8 x i16>, i32} @llvm.s390.vpklsfs(<4 x i32> %a, <4 x
> i32> %b)
> @@ -607,7 +607,7 @@ define <4 x i32> @test_vpklsgs_none_stor
>                                            i32 *%ptr) {
>  ; CHECK-LABEL: test_vpklsgs_none_store:
>  ; CHECK: vpklsgs %v24, %v24, %v26
> -; CHECK-NEXT: {{jnhe|jne}} {{\.L*}}
> +; CHECK-NEXT: {{bnher|bner}} %r14
>  ; CHECK: mvhi 0(%r2), 0
>  ; CHECK: br %r14
>    %call = call {<4 x i32>, i32} @llvm.s390.vpklsgs(<2 x i64> %a, <2 x
> i64> %b)
> @@ -1705,7 +1705,7 @@ define void @test_vtm_all_store(<16 x i8
>  ; CHECK-LABEL: test_vtm_all_store:
>  ; CHECK-NOT: %r
>  ; CHECK: vtm %v24, %v26
> -; CHECK-NEXT: {{jno|jle}} {{\.L*}}
> +; CHECK-NEXT: {{bnor|bler}} %r14
>  ; CHECK: mvhi 0(%r2), 0
>  ; CHECK: br %r14
>    %res = call i32 @llvm.s390.vtm(<16 x i8> %a, <16 x i8> %b)
> @@ -1752,7 +1752,7 @@ define <16 x i8> @test_vceqbs_any_store(
>  ; CHECK-LABEL: test_vceqbs_any_store:
>  ; CHECK-NOT: %r
>  ; CHECK: vceqbs %v24, %v24, %v26
> -; CHECK-NEXT: {{jo|jnle}} {{\.L*}}
> +; CHECK-NEXT: {{bor|bnler}} %r14
>  ; CHECK: mvhi 0(%r2), 0
>  ; CHECK: br %r14
>    %call = call {<16 x i8>, i32} @llvm.s390.vceqbs(<16 x i8> %a, <16 x i8>
> %b)
> @@ -1801,7 +1801,7 @@ define <8 x i16> @test_vceqhs_notall_sto
>  ; CHECK-LABEL: test_vceqhs_notall_store:
>  ; CHECK-NOT: %r
>  ; CHECK: vceqhs %v24, %v24, %v26
> -; CHECK-NEXT: {{jhe|je}} {{\.L*}}
> +; CHECK-NEXT: {{bher|ber}} %r14
>  ; CHECK: mvhi 0(%r2), 0
>  ; CHECK: br %r14
>    %call = call {<8 x i16>, i32} @llvm.s390.vceqhs(<8 x i16> %a, <8 x i16>
> %b)
> @@ -1850,7 +1850,7 @@ define <4 x i32> @test_vceqfs_none_store
>  ; CHECK-LABEL: test_vceqfs_none_store:
>  ; CHECK-NOT: %r
>  ; CHECK: vceqfs %v24, %v24, %v26
> -; CHECK-NEXT: {{jno|jle}} {{\.L*}}
> +; CHECK-NEXT: {{bnor|bler}} %r14
>  ; CHECK: mvhi 0(%r2), 0
>  ; CHECK: br %r14
>    %call = call {<4 x i32>, i32} @llvm.s390.vceqfs(<4 x i32> %a, <4 x i32>
> %b)
> @@ -1899,7 +1899,7 @@ define <2 x i64> @test_vceqgs_all_store(
>  ; CHECK-LABEL: test_vceqgs_all_store:
>  ; CHECK-NOT: %r
>  ; CHECK: vceqgs %v24, %v24, %v26
> -; CHECK-NEXT: {{jnhe|jne}} {{\.L*}}
> +; CHECK-NEXT: {{bnher|bner}} %r14
>  ; CHECK: mvhi 0(%r2), 0
>  ; CHECK: br %r14
>    %call = call {<2 x i64>, i32} @llvm.s390.vceqgs(<2 x i64> %a, <2 x i64>
> %b)
> @@ -1948,7 +1948,7 @@ define <16 x i8> @test_vchbs_any_store(<
>  ; CHECK-LABEL: test_vchbs_any_store:
>  ; CHECK-NOT: %r
>  ; CHECK: vchbs %v24, %v24, %v26
> -; CHECK-NEXT: {{jo|jnle}} {{\.L*}}
> +; CHECK-NEXT: {{bor|bnler}} %r14
>  ; CHECK: mvhi 0(%r2), 0
>  ; CHECK: br %r14
>    %call = call {<16 x i8>, i32} @llvm.s390.vchbs(<16 x i8> %a, <16 x i8>
> %b)
> @@ -1997,7 +1997,7 @@ define <8 x i16> @test_vchhs_notall_stor
>  ; CHECK-LABEL: test_vchhs_notall_store:
>  ; CHECK-NOT: %r
>  ; CHECK: vchhs %v24, %v24, %v26
> -; CHECK-NEXT: {{jhe|je}} {{\.L*}}
> +; CHECK-NEXT: {{bher|ber}} %r14
>  ; CHECK: mvhi 0(%r2), 0
>  ; CHECK: br %r14
>    %call = call {<8 x i16>, i32} @llvm.s390.vchhs(<8 x i16> %a, <8 x i16>
> %b)
> @@ -2045,7 +2045,7 @@ define <4 x i32> @test_vchfs_none_store(
>  ; CHECK-LABEL: test_vchfs_none_store:
>  ; CHECK-NOT: %r
>  ; CHECK: vchfs %v24, %v24, %v26
> -; CHECK-NEXT: {{jno|jle}} {{\.L*}}
> +; CHECK-NEXT: {{bnor|bler}} %r14
>  ; CHECK: mvhi 0(%r2), 0
>  ; CHECK: br %r14
>    %call = call {<4 x i32>, i32} @llvm.s390.vchfs(<4 x i32> %a, <4 x i32>
> %b)
> @@ -2094,7 +2094,7 @@ define <2 x i64> @test_vchgs_all_store(<
>  ; CHECK-LABEL: test_vchgs_all_store:
>  ; CHECK-NOT: %r
>  ; CHECK: vchgs %v24, %v24, %v26
> -; CHECK-NEXT: {{jnhe|jne}} {{\.L*}}
> +; CHECK-NEXT: {{bnher|bner}} %r14
>  ; CHECK: mvhi 0(%r2), 0
>  ; CHECK: br %r14
>    %call = call {<2 x i64>, i32} @llvm.s390.vchgs(<2 x i64> %a, <2 x i64>
> %b)
> @@ -2143,7 +2143,7 @@ define <16 x i8> @test_vchlbs_any_store(
>  ; CHECK-LABEL: test_vchlbs_any_store:
>  ; CHECK-NOT: %r
>  ; CHECK: vchlbs %v24, %v24, %v26
> -; CHECK-NEXT: {{jo|jnle}} {{\.L*}}
> +; CHECK-NEXT: {{bor|bnler}} %r14
>  ; CHECK: mvhi 0(%r2), 0
>  ; CHECK: br %r14
>    %call = call {<16 x i8>, i32} @llvm.s390.vchlbs(<16 x i8> %a, <16 x i8>
> %b)
> @@ -2192,7 +2192,7 @@ define <8 x i16> @test_vchlhs_notall_sto
>  ; CHECK-LABEL: test_vchlhs_notall_store:
>  ; CHECK-NOT: %r
>  ; CHECK: vchlhs %v24, %v24, %v26
> -; CHECK-NEXT: {{jhe|je}} {{\.L*}}
> +; CHECK-NEXT: {{bher|ber}} %r14
>  ; CHECK: mvhi 0(%r2), 0
>  ; CHECK: br %r14
>    %call = call {<8 x i16>, i32} @llvm.s390.vchlhs(<8 x i16> %a, <8 x i16>
> %b)
> @@ -2241,7 +2241,7 @@ define <4 x i32> @test_vchlfs_none_store
>  ; CHECK-LABEL: test_vchlfs_none_store:
>  ; CHECK-NOT: %r
>  ; CHECK: vchlfs %v24, %v24, %v26
> -; CHECK-NEXT: {{jno|jle}} {{\.L*}}
> +; CHECK-NEXT: {{bnor|bler}} %r14
>  ; CHECK: mvhi 0(%r2), 0
>  ; CHECK: br %r14
>    %call = call {<4 x i32>, i32} @llvm.s390.vchlfs(<4 x i32> %a, <4 x i32>
> %b)
> @@ -2290,7 +2290,7 @@ define <2 x i64> @test_vchlgs_all_store(
>  ; CHECK-LABEL: test_vchlgs_all_store:
>  ; CHECK-NOT: %r
>  ; CHECK: vchlgs %v24, %v24, %v26
> -; CHECK-NEXT: {{jnhe|jne}} {{\.L*}}
> +; CHECK-NEXT: {{bnher|bner}} %r14
>  ; CHECK: mvhi 0(%r2), 0
>  ; CHECK: br %r14
>    %call = call {<2 x i64>, i32} @llvm.s390.vchlgs(<2 x i64> %a, <2 x i64>
> %b)
> @@ -3166,7 +3166,7 @@ define <2 x i64> @test_vfcedbs_any_store
>  ; CHECK-LABEL: test_vfcedbs_any_store:
>  ; CHECK-NOT: %r
>  ; CHECK: vfcedbs %v24, %v24, %v26
> -; CHECK-NEXT: {{jo|jnle}} {{\.L*}}
> +; CHECK-NEXT: {{bor|bnler}} %r14
>  ; CHECK: mvhi 0(%r2), 0
>  ; CHECK: br %r14
>    %call = call {<2 x i64>, i32} @llvm.s390.vfcedbs(<2 x double> %a,
> @@ -3218,7 +3218,7 @@ define <2 x i64> @test_vfchdbs_notall_st
>  ; CHECK-LABEL: test_vfchdbs_notall_store:
>  ; CHECK-NOT: %r
>  ; CHECK: vfchdbs %v24, %v24, %v26
> -; CHECK-NEXT: {{jhe|je}} {{\.L*}}
> +; CHECK-NEXT: {{bher|ber}} %r14
>  ; CHECK: mvhi 0(%r2), 0
>  ; CHECK: br %r14
>    %call = call {<2 x i64>, i32} @llvm.s390.vfchdbs(<2 x double> %a,
> @@ -3270,7 +3270,7 @@ define <2 x i64> @test_vfchedbs_none_sto
>  ; CHECK-LABEL: test_vfchedbs_none_store:
>  ; CHECK-NOT: %r
>  ; CHECK: vfchedbs %v24, %v24, %v26
> -; CHECK-NEXT: {{jno|jle}} {{\.L*}}
> +; CHECK-NEXT: {{bnor|bler}} %r14
>  ; CHECK: mvhi 0(%r2), 0
>  ; CHECK: br %r14
>    %call = call {<2 x i64>, i32} @llvm.s390.vfchedbs(<2 x double> %a,
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.


More information about the llvm-commits mailing list