]> granicus.if.org Git - llvm/commitdiff
[PowerPC] Reverting sequence of patches for elimination of comparison instructions
authorNemanja Ivanovic <nemanja.i.ibm@gmail.com>
Tue, 26 Sep 2017 20:42:47 +0000 (20:42 +0000)
committerNemanja Ivanovic <nemanja.i.ibm@gmail.com>
Tue, 26 Sep 2017 20:42:47 +0000 (20:42 +0000)
In the past while, I've committed a number of patches in the PowerPC back end
aimed at eliminating comparison instructions. However, this causes some failures
in proprietary source and these issues are not observed in SPEC or any open
source packages I've been able to run.
As a result, I'm pulling the entire series and will refactor it to:
- Have a single entry point for easy control
- Have fine-grained control over which patterns we transform

A side-effect of this is that test cases for these patches (and modified by
them) are XFAIL-ed. This is a temporary measure as it is counter-productive
to remove/modify these test cases and then have to modify them again when
the refactored patch is recommitted.
The failure will be investigated in parallel to the refactoring effort and
the recommit will either have a fix for it or will leave this transformation
off by default until the problem is resolved.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@314244 91177308-0d34-0410-b5e6-96231b3b80d8

89 files changed:
lib/Target/PowerPC/PPCISelDAGToDAG.cpp
test/CodeGen/PowerPC/CompareEliminationSpillIssue.ll
test/CodeGen/PowerPC/crbits.ll
test/CodeGen/PowerPC/expand-isel.ll
test/CodeGen/PowerPC/logic-ops-on-compares.ll
test/CodeGen/PowerPC/memCmpUsedInZeroEqualityComparison.ll
test/CodeGen/PowerPC/no-pref-jumps.ll
test/CodeGen/PowerPC/optcmp.ll
test/CodeGen/PowerPC/ppc-crbits-onoff.ll
test/CodeGen/PowerPC/setcc-logic.ll
test/CodeGen/PowerPC/testComparesi32gtu.ll
test/CodeGen/PowerPC/testComparesi32leu.ll
test/CodeGen/PowerPC/testComparesi32ltu.ll
test/CodeGen/PowerPC/testComparesieqsc.ll
test/CodeGen/PowerPC/testComparesieqsi.ll
test/CodeGen/PowerPC/testComparesieqsll.ll
test/CodeGen/PowerPC/testComparesieqss.ll
test/CodeGen/PowerPC/testComparesiequc.ll
test/CodeGen/PowerPC/testComparesiequi.ll
test/CodeGen/PowerPC/testComparesiequll.ll
test/CodeGen/PowerPC/testComparesiequs.ll
test/CodeGen/PowerPC/testComparesigesc.ll
test/CodeGen/PowerPC/testComparesigesi.ll
test/CodeGen/PowerPC/testComparesigesll.ll
test/CodeGen/PowerPC/testComparesigess.ll
test/CodeGen/PowerPC/testComparesigeuc.ll
test/CodeGen/PowerPC/testComparesigeui.ll
test/CodeGen/PowerPC/testComparesigeus.ll
test/CodeGen/PowerPC/testComparesigtsc.ll
test/CodeGen/PowerPC/testComparesigtsi.ll
test/CodeGen/PowerPC/testComparesigtsll.ll
test/CodeGen/PowerPC/testComparesigtss.ll
test/CodeGen/PowerPC/testComparesigtuc.ll
test/CodeGen/PowerPC/testComparesigtui.ll
test/CodeGen/PowerPC/testComparesigtus.ll
test/CodeGen/PowerPC/testComparesilesc.ll
test/CodeGen/PowerPC/testComparesilesi.ll
test/CodeGen/PowerPC/testComparesilesll.ll
test/CodeGen/PowerPC/testComparesiless.ll
test/CodeGen/PowerPC/testComparesileuc.ll
test/CodeGen/PowerPC/testComparesileui.ll
test/CodeGen/PowerPC/testComparesileus.ll
test/CodeGen/PowerPC/testComparesiltsc.ll
test/CodeGen/PowerPC/testComparesiltsi.ll
test/CodeGen/PowerPC/testComparesiltsll.ll
test/CodeGen/PowerPC/testComparesiltss.ll
test/CodeGen/PowerPC/testComparesiltuc.ll
test/CodeGen/PowerPC/testComparesiltui.ll
test/CodeGen/PowerPC/testComparesiltus.ll
test/CodeGen/PowerPC/testComparesinesc.ll
test/CodeGen/PowerPC/testComparesinesi.ll
test/CodeGen/PowerPC/testComparesinesll.ll
test/CodeGen/PowerPC/testComparesiness.ll
test/CodeGen/PowerPC/testComparesineuc.ll
test/CodeGen/PowerPC/testComparesineui.ll
test/CodeGen/PowerPC/testComparesineull.ll
test/CodeGen/PowerPC/testComparesineus.ll
test/CodeGen/PowerPC/testCompareslleqsc.ll
test/CodeGen/PowerPC/testCompareslleqsi.ll
test/CodeGen/PowerPC/testCompareslleqsll.ll
test/CodeGen/PowerPC/testCompareslleqss.ll
test/CodeGen/PowerPC/testComparesllequc.ll
test/CodeGen/PowerPC/testComparesllequi.ll
test/CodeGen/PowerPC/testComparesllequll.ll
test/CodeGen/PowerPC/testComparesllequs.ll
test/CodeGen/PowerPC/testComparesllgesc.ll
test/CodeGen/PowerPC/testComparesllgesi.ll
test/CodeGen/PowerPC/testComparesllgesll.ll
test/CodeGen/PowerPC/testComparesllgess.ll
test/CodeGen/PowerPC/testComparesllgeuc.ll
test/CodeGen/PowerPC/testComparesllgeui.ll
test/CodeGen/PowerPC/testComparesllgeus.ll
test/CodeGen/PowerPC/testComparesllgtsll.ll
test/CodeGen/PowerPC/testComparesllgtuc.ll
test/CodeGen/PowerPC/testComparesllgtui.ll
test/CodeGen/PowerPC/testComparesllgtus.ll
test/CodeGen/PowerPC/testCompareslllesc.ll
test/CodeGen/PowerPC/testCompareslllesi.ll
test/CodeGen/PowerPC/testCompareslllesll.ll
test/CodeGen/PowerPC/testComparesllless.ll
test/CodeGen/PowerPC/testComparesllleuc.ll
test/CodeGen/PowerPC/testComparesllleui.ll
test/CodeGen/PowerPC/testComparesllleus.ll
test/CodeGen/PowerPC/testComparesllltsll.ll
test/CodeGen/PowerPC/testComparesllltuc.ll
test/CodeGen/PowerPC/testComparesllltui.ll
test/CodeGen/PowerPC/testComparesllltus.ll
test/CodeGen/PowerPC/testComparesllnesll.ll
test/CodeGen/PowerPC/testComparesllneull.ll

index ea605e1eb2e54af7c976d44248b9811544e7581f..945e764a2d23f2a1d4437676765ba09aa58d2e12 100644 (file)
@@ -69,19 +69,6 @@ using namespace llvm;
 
 #define DEBUG_TYPE "ppc-codegen"
 
-STATISTIC(NumSextSetcc,
-          "Number of (sext(setcc)) nodes expanded into GPR sequence.");
-STATISTIC(NumZextSetcc,
-          "Number of (zext(setcc)) nodes expanded into GPR sequence.");
-STATISTIC(SignExtensionsAdded,
-          "Number of sign extensions for compare inputs added.");
-STATISTIC(ZeroExtensionsAdded,
-          "Number of zero extensions for compare inputs added.");
-STATISTIC(NumLogicOpsOnComparison,
-          "Number of logical ops on i1 values calculated in GPR.");
-STATISTIC(OmittedForNonExtendUses,
-          "Number of compares not eliminated as they have non-extending uses.");
-
 // FIXME: Remove this once the bug has been fixed!
 cl::opt<bool> ANDIGlueBug("expose-ppc-andi-glue-bug",
 cl::desc("expose the ANDI glue bug on PPC"), cl::Hidden);
@@ -276,46 +263,7 @@ namespace {
 #include "PPCGenDAGISel.inc"
 
 private:
-    // Conversion type for interpreting results of a 32-bit instruction as
-    // a 64-bit value or vice versa.
-    enum ExtOrTruncConversion { Ext, Trunc };
-
-    // Modifiers to guide how an ISD::SETCC node's result is to be computed
-    // in a GPR.
-    // ZExtOrig - use the original condition code, zero-extend value
-    // ZExtInvert - invert the condition code, zero-extend value
-    // SExtOrig - use the original condition code, sign-extend value
-    // SExtInvert - invert the condition code, sign-extend value
-    enum SetccInGPROpts { ZExtOrig, ZExtInvert, SExtOrig, SExtInvert };
-
-    // Comparisons against zero to emit GPR code sequences for. Each of these
-    // sequences may need to be emitted for two or more equivalent patterns.
-    // For example (a >= 0) == (a > -1). The direction of the comparison (</>)
-    // matters as well as the extension type: sext (-1/0), zext (1/0).
-    // GEZExt - (zext (LHS >= 0))
-    // GESExt - (sext (LHS >= 0))
-    // LEZExt - (zext (LHS <= 0))
-    // LESExt - (sext (LHS <= 0))
-    enum ZeroCompare { GEZExt, GESExt, LEZExt, LESExt };
-
     bool trySETCC(SDNode *N);
-    bool tryEXTEND(SDNode *N);
-    bool tryLogicOpOfCompares(SDNode *N);
-    SDValue computeLogicOpInGPR(SDValue LogicOp);
-    SDValue signExtendInputIfNeeded(SDValue Input);
-    SDValue zeroExtendInputIfNeeded(SDValue Input);
-    SDValue addExtOrTrunc(SDValue NatWidthRes, ExtOrTruncConversion Conv);
-    SDValue getCompoundZeroComparisonInGPR(SDValue LHS, SDLoc dl,
-                                           ZeroCompare CmpTy);
-    SDValue get32BitZExtCompare(SDValue LHS, SDValue RHS, ISD::CondCode CC,
-                                int64_t RHSValue, SDLoc dl);
-    SDValue get32BitSExtCompare(SDValue LHS, SDValue RHS, ISD::CondCode CC,
-                                int64_t RHSValue, SDLoc dl);
-    SDValue get64BitZExtCompare(SDValue LHS, SDValue RHS, ISD::CondCode CC,
-                                int64_t RHSValue, SDLoc dl);
-    SDValue get64BitSExtCompare(SDValue LHS, SDValue RHS, ISD::CondCode CC,
-                                int64_t RHSValue, SDLoc dl);
-    SDValue getSETCCInGPR(SDValue Compare, SetccInGPROpts ConvOpts);
 
     void PeepholePPC64();
     void PeepholePPC64ZExt();
@@ -2529,1000 +2477,6 @@ bool PPCDAGToDAGISel::trySETCC(SDNode *N) {
   return true;
 }
 
-// Is this opcode a bitwise logical operation?
-static bool isLogicOp(unsigned Opc) {
-  return Opc == ISD::AND || Opc == ISD::OR || Opc == ISD::XOR;
-}
-
-/// If this node is a sign/zero extension of an integer comparison,
-/// it can usually be computed in GPR's rather than using comparison
-/// instructions and ISEL. We only do this on 64-bit targets for now
-/// as the code is specialized for 64-bit (it uses 64-bit instructions
-/// and assumes 64-bit registers).
-bool PPCDAGToDAGISel::tryEXTEND(SDNode *N) {
-  if (TM.getOptLevel() == CodeGenOpt::None || !TM.isPPC64())
-    return false;
-  assert((N->getOpcode() == ISD::ZERO_EXTEND ||
-          N->getOpcode() == ISD::SIGN_EXTEND) &&
-          "Expecting a zero/sign extend node!");
-
-  SDValue WideRes;
-  // If we are zero-extending the result of a logical operation on i1
-  // values, we can keep the values in GPRs.
-  if (isLogicOp(N->getOperand(0).getOpcode()) &&
-      N->getOperand(0).getValueType() == MVT::i1 &&
-      N->getOpcode() == ISD::ZERO_EXTEND)
-    WideRes = computeLogicOpInGPR(N->getOperand(0));
-  else if (N->getOperand(0).getOpcode() != ISD::SETCC)
-    return false;
-  else
-    WideRes =
-      getSETCCInGPR(N->getOperand(0),
-                    N->getOpcode() == ISD::SIGN_EXTEND ?
-                    SetccInGPROpts::SExtOrig : SetccInGPROpts::ZExtOrig);
-
-  if (!WideRes)
-    return false;
-
-  SDLoc dl(N);
-  bool Input32Bit = WideRes.getValueType() == MVT::i32;
-  bool Output32Bit = N->getValueType(0) == MVT::i32;
-
-  NumSextSetcc += N->getOpcode() == ISD::SIGN_EXTEND ? 1 : 0;
-  NumZextSetcc += N->getOpcode() == ISD::SIGN_EXTEND ? 0 : 1;
-
-  SDValue ConvOp = WideRes;
-  if (Input32Bit != Output32Bit)
-    ConvOp = addExtOrTrunc(WideRes, Input32Bit ? ExtOrTruncConversion::Ext :
-                           ExtOrTruncConversion::Trunc);
-  ReplaceNode(N, ConvOp.getNode());
-
-  return true;
-}
-
-// Lower a logical operation on i1 values into a GPR sequence if possible.
-// The result can be kept in a GPR if requested.
-// Three types of inputs can be handled:
-// - SETCC
-// - TRUNCATE
-// - Logical operation (AND/OR/XOR)
-// There is also a special case that is handled (namely a complement operation
-// achieved with xor %a, -1).
-SDValue PPCDAGToDAGISel::computeLogicOpInGPR(SDValue LogicOp) {
-  assert(isLogicOp(LogicOp.getOpcode()) &&
-         "Can only handle logic operations here.");
-  assert(LogicOp.getValueType() == MVT::i1 &&
-         "Can only handle logic operations on i1 values here.");
-  SDLoc dl(LogicOp);
-  SDValue LHS, RHS;
-
-  // Special case: xor %a, -1
-  bool IsBitwiseNegation = isBitwiseNot(LogicOp);
-
-  // Produces a GPR sequence for each operand of the binary logic operation.
-  // For SETCC, it produces the respective comparison, for TRUNCATE it truncates
-  // the value in a GPR and for logic operations, it will recursively produce
-  // a GPR sequence for the operation.
-  auto getLogicOperand = [&] (SDValue Operand) -> SDValue {
-    unsigned OperandOpcode = Operand.getOpcode();
-    if (OperandOpcode == ISD::SETCC)
-      return getSETCCInGPR(Operand, SetccInGPROpts::ZExtOrig);
-    else if (OperandOpcode == ISD::TRUNCATE) {
-      SDValue InputOp = Operand.getOperand(0);
-      EVT InVT = InputOp.getValueType();
-      return
-        SDValue(CurDAG->getMachineNode(InVT == MVT::i32 ? PPC::RLDICL_32 :
-                                       PPC::RLDICL, dl, InVT, InputOp,
-                                       getI64Imm(0, dl), getI64Imm(63, dl)), 0);
-    } else if (isLogicOp(OperandOpcode))
-      return computeLogicOpInGPR(Operand);
-    return SDValue();
-  };
-  LHS = getLogicOperand(LogicOp.getOperand(0));
-  RHS = getLogicOperand(LogicOp.getOperand(1));
-
-  // If a GPR sequence can't be produced for the LHS we can't proceed.
-  // Not producing a GPR sequence for the RHS is only a problem if this isn't
-  // a bitwise negation operation.
-  if (!LHS || (!RHS && !IsBitwiseNegation))
-    return SDValue();
-
-  NumLogicOpsOnComparison++;
-
-  // We will use the inputs as 64-bit values.
-  if (LHS.getValueType() == MVT::i32)
-    LHS = addExtOrTrunc(LHS, ExtOrTruncConversion::Ext);
-  if (!IsBitwiseNegation && RHS.getValueType() == MVT::i32)
-    RHS = addExtOrTrunc(RHS, ExtOrTruncConversion::Ext);
-
-  unsigned NewOpc;
-  switch (LogicOp.getOpcode()) {
-  default: llvm_unreachable("Unknown logic operation.");
-  case ISD::AND: NewOpc = PPC::AND8; break;
-  case ISD::OR:  NewOpc = PPC::OR8;  break;
-  case ISD::XOR: NewOpc = PPC::XOR8; break;
-  }
-
-  if (IsBitwiseNegation) {
-    RHS = getI64Imm(1, dl);
-    NewOpc = PPC::XORI8;
-  }
-
-  return SDValue(CurDAG->getMachineNode(NewOpc, dl, MVT::i64, LHS, RHS), 0);
-
-}
-
-/// Try performing logical operations on results of comparisons in GPRs.
-/// It is typically preferred from a performance perspective over performing
-/// the operations on individual bits in the CR. We only do this on 64-bit
-/// targets for now as the code is specialized for 64-bit (it uses 64-bit
-/// instructions and assumes 64-bit registers).
-bool PPCDAGToDAGISel::tryLogicOpOfCompares(SDNode *N) {
-  if (TM.getOptLevel() == CodeGenOpt::None || !TM.isPPC64())
-    return false;
-  if (N->getValueType(0) != MVT::i1)
-    return false;
-  assert(isLogicOp(N->getOpcode()) &&
-         "Expected a logic operation on setcc results.");
-  SDValue LoweredLogical = computeLogicOpInGPR(SDValue(N, 0));
-  if (!LoweredLogical)
-    return false;
-
-  SDLoc dl(N);
-  bool IsBitwiseNegate = LoweredLogical.getMachineOpcode() == PPC::XORI8;
-  unsigned SubRegToExtract = IsBitwiseNegate ? PPC::sub_eq : PPC::sub_gt;
-  SDValue CR0Reg = CurDAG->getRegister(PPC::CR0, MVT::i32);
-  SDValue LHS = LoweredLogical.getOperand(0);
-  SDValue RHS = LoweredLogical.getOperand(1);
-  SDValue WideOp;
-  SDValue OpToConvToRecForm;
-
-  // Look through any 32-bit to 64-bit implicit extend nodes to find the opcode
-  // that is input to the XORI.
-  if (IsBitwiseNegate &&
-      LoweredLogical.getOperand(0).getMachineOpcode() == PPC::INSERT_SUBREG)
-    OpToConvToRecForm = LoweredLogical.getOperand(0).getOperand(1);
-  else if (IsBitwiseNegate)
-    // If the input to the XORI isn't an extension, that's what we're after.
-    OpToConvToRecForm = LoweredLogical.getOperand(0);
-  else
-    // If this is not an XORI, it is a reg-reg logical op and we can convert it
-    // to record-form.
-    OpToConvToRecForm = LoweredLogical;
-
-  // Get the record-form version of the node we're looking to use to get the
-  // CR result from.
-  uint16_t NonRecOpc = OpToConvToRecForm.getMachineOpcode();
-  int NewOpc = PPCInstrInfo::getRecordFormOpcode(NonRecOpc);
-
-  // Convert the right node to record-form. This is either the logical we're
-  // looking at or it is the input node to the negation (if we're looking at
-  // a bitwise negation).
-  if (NewOpc != -1 && IsBitwiseNegate) {
-    // The input to the XORI has a record-form. Use it.
-    assert(LoweredLogical.getConstantOperandVal(1) == 1 &&
-           "Expected a PPC::XORI8 only for bitwise negation.");
-    // Emit the record-form instruction.
-    std::vector<SDValue> Ops;
-    for (int i = 0, e = OpToConvToRecForm.getNumOperands(); i < e; i++)
-      Ops.push_back(OpToConvToRecForm.getOperand(i));
-
-    WideOp =
-      SDValue(CurDAG->getMachineNode(NewOpc, dl,
-                                     OpToConvToRecForm.getValueType(),
-                                     MVT::Glue, Ops), 0);
-  } else {
-    assert((NewOpc != -1 || !IsBitwiseNegate) &&
-           "No record form available for AND8/OR8/XOR8?");
-    WideOp =
-      SDValue(CurDAG->getMachineNode(NewOpc == -1 ? PPC::ANDIo8 : NewOpc, dl,
-                                     MVT::i64, MVT::Glue, LHS, RHS), 0);
-  }
-
-  // Select this node to a single bit from CR0 set by the record-form node
-  // just created. For bitwise negation, use the EQ bit which is the equivalent
-  // of negating the result (i.e. it is a bit set when the result of the
-  // operation is zero).
-  SDValue SRIdxVal =
-    CurDAG->getTargetConstant(SubRegToExtract, dl, MVT::i32);
-  SDValue CRBit =
-    SDValue(CurDAG->getMachineNode(TargetOpcode::EXTRACT_SUBREG, dl,
-                                   MVT::i1, CR0Reg, SRIdxVal,
-                                   WideOp.getValue(1)), 0);
-  ReplaceNode(N, CRBit.getNode());
-  return true;
-}
-
-/// If the value isn't guaranteed to be sign-extended to 64-bits, extend it.
-/// Otherwise just reinterpret it as a 64-bit value.
-/// Useful when emitting comparison code for 32-bit values without using
-/// the compare instruction (which only considers the lower 32-bits).
-SDValue PPCDAGToDAGISel::signExtendInputIfNeeded(SDValue Input) {
-  assert(Input.getValueType() == MVT::i32 &&
-         "Can only sign-extend 32-bit values here.");
-  unsigned Opc = Input.getOpcode();
-
-  // The value was sign extended and then truncated to 32-bits. No need to
-  // sign extend it again.
-  if (Opc == ISD::TRUNCATE &&
-      (Input.getOperand(0).getOpcode() == ISD::AssertSext ||
-       Input.getOperand(0).getOpcode() == ISD::SIGN_EXTEND))
-    return addExtOrTrunc(Input, ExtOrTruncConversion::Ext);
-
-  LoadSDNode *InputLoad = dyn_cast<LoadSDNode>(Input);
-  // The input is a sign-extending load. No reason to sign-extend.
-  if (InputLoad && InputLoad->getExtensionType() == ISD::SEXTLOAD)
-    return addExtOrTrunc(Input, ExtOrTruncConversion::Ext);
-
-  ConstantSDNode *InputConst = dyn_cast<ConstantSDNode>(Input);
-  // We don't sign-extend constants and already sign-extended values.
-  if (InputConst || Opc == ISD::AssertSext || Opc == ISD::SIGN_EXTEND_INREG ||
-      Opc == ISD::SIGN_EXTEND)
-    return addExtOrTrunc(Input, ExtOrTruncConversion::Ext);
-
-  SDLoc dl(Input);
-  SignExtensionsAdded++;
-  return SDValue(CurDAG->getMachineNode(PPC::EXTSW_32_64, dl,
-                                        MVT::i64, Input), 0);
-}
-
-/// If the value isn't guaranteed to be zero-extended to 64-bits, extend it.
-/// Otherwise just reinterpret it as a 64-bit value.
-/// Useful when emitting comparison code for 32-bit values without using
-/// the compare instruction (which only considers the lower 32-bits).
-SDValue PPCDAGToDAGISel::zeroExtendInputIfNeeded(SDValue Input) {
-  assert(Input.getValueType() == MVT::i32 &&
-         "Can only zero-extend 32-bit values here.");
-  unsigned Opc = Input.getOpcode();
-
-  // The only condition under which we can omit the actual extend instruction:
-  // - The value has already been zero-extended
-  // - The value is a positive constant
-  // - The value comes from a load that isn't a sign-extending load
-  // An ISD::TRUNCATE needs to be zero-extended unless it is fed by a zext.
-  bool IsTruncateOfZExt = Opc == ISD::TRUNCATE &&
-    (Input.getOperand(0).getOpcode() == ISD::AssertZext ||
-     Input.getOperand(0).getOpcode() == ISD::ZERO_EXTEND);
-  if (Opc == ISD::AssertZext || Opc == ISD::ZERO_EXTEND || IsTruncateOfZExt)
-    return addExtOrTrunc(Input, ExtOrTruncConversion::Ext);
-
-  ConstantSDNode *InputConst = dyn_cast<ConstantSDNode>(Input);
-  if (InputConst && InputConst->getSExtValue() >= 0)
-    return addExtOrTrunc(Input, ExtOrTruncConversion::Ext);
-
-  LoadSDNode *InputLoad = dyn_cast<LoadSDNode>(Input);
-  // The input is a load that doesn't sign-extend (it will be zero-extended).
-  if (InputLoad && InputLoad->getExtensionType() != ISD::SEXTLOAD)
-    return addExtOrTrunc(Input, ExtOrTruncConversion::Ext);
-
-  // None of the above, need to zero-extend.
-  SDLoc dl(Input);
-  ZeroExtensionsAdded++;
-  return SDValue(CurDAG->getMachineNode(PPC::RLDICL_32_64, dl, MVT::i64, Input,
-                                        getI64Imm(0, dl), getI64Imm(32, dl)),
-                 0);
-}
-
-// Handle a 32-bit value in a 64-bit register and vice-versa. These are of
-// course not actual zero/sign extensions that will generate machine code,
-// they're just a way to reinterpret a 32 bit value in a register as a
-// 64 bit value and vice-versa.
-SDValue PPCDAGToDAGISel::addExtOrTrunc(SDValue NatWidthRes,
-                                       ExtOrTruncConversion Conv) {
-  SDLoc dl(NatWidthRes);
-
-  // For reinterpreting 32-bit values as 64 bit values, we generate
-  // INSERT_SUBREG IMPLICIT_DEF:i64, <input>, TargetConstant:i32<1>
-  if (Conv == ExtOrTruncConversion::Ext) {
-    SDValue ImDef(CurDAG->getMachineNode(PPC::IMPLICIT_DEF, dl, MVT::i64), 0);
-    SDValue SubRegIdx =
-      CurDAG->getTargetConstant(PPC::sub_32, dl, MVT::i32);
-    return SDValue(CurDAG->getMachineNode(PPC::INSERT_SUBREG, dl, MVT::i64,
-                                          ImDef, NatWidthRes, SubRegIdx), 0);
-  }
-
-  assert(Conv == ExtOrTruncConversion::Trunc &&
-         "Unknown convertion between 32 and 64 bit values.");
-  // For reinterpreting 64-bit values as 32-bit values, we just need to
-  // EXTRACT_SUBREG (i.e. extract the low word).
-  SDValue SubRegIdx =
-    CurDAG->getTargetConstant(PPC::sub_32, dl, MVT::i32);
-  return SDValue(CurDAG->getMachineNode(PPC::EXTRACT_SUBREG, dl, MVT::i32,
-                                        NatWidthRes, SubRegIdx), 0);
-}
-
-// Produce a GPR sequence for compound comparisons (<=, >=) against zero.
-// Handle both zero-extensions and sign-extensions.
-SDValue PPCDAGToDAGISel::getCompoundZeroComparisonInGPR(SDValue LHS, SDLoc dl,
-                                                        ZeroCompare CmpTy) {
-  EVT InVT = LHS.getValueType();
-  bool Is32Bit = InVT == MVT::i32;
-  SDValue ToExtend;
-
-  // Produce the value that needs to be either zero or sign extended.
-  switch (CmpTy) {
-  case ZeroCompare::GEZExt:
-  case ZeroCompare::GESExt:
-    ToExtend = SDValue(CurDAG->getMachineNode(Is32Bit ? PPC::NOR : PPC::NOR8,
-                                              dl, InVT, LHS, LHS), 0);
-    break;
-  case ZeroCompare::LEZExt:
-  case ZeroCompare::LESExt: {
-    if (Is32Bit) {
-      // Upper 32 bits cannot be undefined for this sequence.
-      LHS = signExtendInputIfNeeded(LHS);
-      SDValue Neg =
-        SDValue(CurDAG->getMachineNode(PPC::NEG8, dl, MVT::i64, LHS), 0);
-      ToExtend =
-        SDValue(CurDAG->getMachineNode(PPC::RLDICL, dl, MVT::i64,
-                                       Neg, getI64Imm(1, dl),
-                                       getI64Imm(63, dl)), 0);
-    } else {
-      SDValue Addi =
-        SDValue(CurDAG->getMachineNode(PPC::ADDI8, dl, MVT::i64, LHS,
-                                       getI64Imm(~0ULL, dl)), 0);
-      ToExtend = SDValue(CurDAG->getMachineNode(PPC::OR8, dl, MVT::i64,
-                                                Addi, LHS), 0);
-    }
-    break;
-  }
-  }
-
-  // For 64-bit sequences, the extensions are the same for the GE/LE cases.
-  if (!Is32Bit &&
-      (CmpTy == ZeroCompare::GEZExt || CmpTy == ZeroCompare::LEZExt))
-    return SDValue(CurDAG->getMachineNode(PPC::RLDICL, dl, MVT::i64,
-                                          ToExtend, getI64Imm(1, dl),
-                                          getI64Imm(63, dl)), 0);
-  if (!Is32Bit &&
-      (CmpTy == ZeroCompare::GESExt || CmpTy == ZeroCompare::LESExt))
-    return SDValue(CurDAG->getMachineNode(PPC::SRADI, dl, MVT::i64, ToExtend,
-                                          getI64Imm(63, dl)), 0);
-
-  assert(Is32Bit && "Should have handled the 32-bit sequences above.");
-  // For 32-bit sequences, the extensions differ between GE/LE cases.
-  switch (CmpTy) {
-  case ZeroCompare::GEZExt: {
-    SDValue ShiftOps[] =
-      { ToExtend, getI32Imm(1, dl), getI32Imm(31, dl), getI32Imm(31, dl) };
-    return SDValue(CurDAG->getMachineNode(PPC::RLWINM, dl, MVT::i32,
-                                          ShiftOps), 0);
-  }
-  case ZeroCompare::GESExt:
-    return SDValue(CurDAG->getMachineNode(PPC::SRAWI, dl, MVT::i32, ToExtend,
-                                          getI32Imm(31, dl)), 0);
-  case ZeroCompare::LEZExt:
-    return SDValue(CurDAG->getMachineNode(PPC::XORI8, dl, MVT::i64, ToExtend,
-                                          getI32Imm(1, dl)), 0);
-  case ZeroCompare::LESExt:
-    return SDValue(CurDAG->getMachineNode(PPC::ADDI8, dl, MVT::i64, ToExtend,
-                                          getI32Imm(-1, dl)), 0);
-  }
-
-  // The above case covers all the enumerators so it can't have a default clause
-  // to avoid compiler warnings.
-  llvm_unreachable("Unknown zero-comparison type.");
-}
-
-/// Produces a zero-extended result of comparing two 32-bit values according to
-/// the passed condition code.
-SDValue PPCDAGToDAGISel::get32BitZExtCompare(SDValue LHS, SDValue RHS,
-                                             ISD::CondCode CC,
-                                             int64_t RHSValue, SDLoc dl) {
-  bool IsRHSZero = RHSValue == 0;
-  bool IsRHSOne = RHSValue == 1;
-  bool IsRHSNegOne = RHSValue == -1LL;
-  switch (CC) {
-  default: return SDValue();
-  case ISD::SETEQ: {
-    // (zext (setcc %a, %b, seteq)) -> (lshr (cntlzw (xor %a, %b)), 5)
-    // (zext (setcc %a, 0, seteq))  -> (lshr (cntlzw %a), 5)
-    SDValue Xor = IsRHSZero ? LHS :
-      SDValue(CurDAG->getMachineNode(PPC::XOR, dl, MVT::i32, LHS, RHS), 0);
-    SDValue Clz =
-      SDValue(CurDAG->getMachineNode(PPC::CNTLZW, dl, MVT::i32, Xor), 0);
-    SDValue ShiftOps[] = { Clz, getI32Imm(27, dl), getI32Imm(5, dl),
-      getI32Imm(31, dl) };
-    return SDValue(CurDAG->getMachineNode(PPC::RLWINM, dl, MVT::i32,
-                                          ShiftOps), 0);
-  }
-  case ISD::SETNE: {
-    // (zext (setcc %a, %b, setne)) -> (xor (lshr (cntlzw (xor %a, %b)), 5), 1)
-    // (zext (setcc %a, 0, setne))  -> (xor (lshr (cntlzw %a), 5), 1)
-    SDValue Xor = IsRHSZero ? LHS :
-      SDValue(CurDAG->getMachineNode(PPC::XOR, dl, MVT::i32, LHS, RHS), 0);
-    SDValue Clz =
-      SDValue(CurDAG->getMachineNode(PPC::CNTLZW, dl, MVT::i32, Xor), 0);
-    SDValue ShiftOps[] = { Clz, getI32Imm(27, dl), getI32Imm(5, dl),
-      getI32Imm(31, dl) };
-    SDValue Shift =
-      SDValue(CurDAG->getMachineNode(PPC::RLWINM, dl, MVT::i32, ShiftOps), 0);
-    return SDValue(CurDAG->getMachineNode(PPC::XORI, dl, MVT::i32, Shift,
-                                          getI32Imm(1, dl)), 0);
-  }
-  case ISD::SETGE: {
-    // (zext (setcc %a, %b, setge)) -> (xor (lshr (sub %a, %b), 63), 1)
-    // (zext (setcc %a, 0, setge))  -> (lshr (~ %a), 31)
-    if(IsRHSZero)
-      return getCompoundZeroComparisonInGPR(LHS, dl, ZeroCompare::GEZExt);
-
-    // Not a special case (i.e. RHS == 0). Handle (%a >= %b) as (%b <= %a)
-    // by swapping inputs and falling through.
-    std::swap(LHS, RHS);
-    ConstantSDNode *RHSConst = dyn_cast<ConstantSDNode>(RHS);
-    IsRHSZero = RHSConst && RHSConst->isNullValue();
-    LLVM_FALLTHROUGH;
-  }
-  case ISD::SETLE: {
-    // (zext (setcc %a, %b, setle)) -> (xor (lshr (sub %b, %a), 63), 1)
-    // (zext (setcc %a, 0, setle))  -> (xor (lshr (- %a), 63), 1)
-    if(IsRHSZero)
-      return getCompoundZeroComparisonInGPR(LHS, dl, ZeroCompare::LEZExt);
-
-    // The upper 32-bits of the register can't be undefined for this sequence.
-    LHS = signExtendInputIfNeeded(LHS);
-    RHS = signExtendInputIfNeeded(RHS);
-    SDValue Sub =
-      SDValue(CurDAG->getMachineNode(PPC::SUBF8, dl, MVT::i64, LHS, RHS), 0);
-    SDValue Shift =
-      SDValue(CurDAG->getMachineNode(PPC::RLDICL, dl, MVT::i64, Sub,
-                                     getI64Imm(1, dl), getI64Imm(63, dl)), 0);
-    return
-      SDValue(CurDAG->getMachineNode(PPC::XORI8, dl,
-                                     MVT::i64, Shift, getI32Imm(1, dl)), 0);
-  }
-  case ISD::SETGT: {
-    // (zext (setcc %a, %b, setgt)) -> (lshr (sub %b, %a), 63)
-    // (zext (setcc %a, -1, setgt)) -> (lshr (~ %a), 31)
-    // (zext (setcc %a, 0, setgt))  -> (lshr (- %a), 63)
-    // Handle SETLT -1 (which is equivalent to SETGE 0).
-    if (IsRHSNegOne)
-      return getCompoundZeroComparisonInGPR(LHS, dl, ZeroCompare::GEZExt);
-
-    if (IsRHSZero) {
-      // The upper 32-bits of the register can't be undefined for this sequence.
-      LHS = signExtendInputIfNeeded(LHS);
-      RHS = signExtendInputIfNeeded(RHS);
-      SDValue Neg =
-        SDValue(CurDAG->getMachineNode(PPC::NEG8, dl, MVT::i64, LHS), 0);
-      return SDValue(CurDAG->getMachineNode(PPC::RLDICL, dl, MVT::i64,
-                     Neg, getI32Imm(1, dl), getI32Imm(63, dl)), 0);
-    }
-    // Not a special case (i.e. RHS == 0 or RHS == -1). Handle (%a > %b) as
-    // (%b < %a) by swapping inputs and falling through.
-    std::swap(LHS, RHS);
-    ConstantSDNode *RHSConst = dyn_cast<ConstantSDNode>(RHS);
-    IsRHSZero = RHSConst && RHSConst->isNullValue();
-    IsRHSOne = RHSConst && RHSConst->getSExtValue() == 1;
-    LLVM_FALLTHROUGH;
-  }
-  case ISD::SETLT: {
-    // (zext (setcc %a, %b, setlt)) -> (lshr (sub %a, %b), 63)
-    // (zext (setcc %a, 1, setlt))  -> (xor (lshr (- %a), 63), 1)
-    // (zext (setcc %a, 0, setlt))  -> (lshr %a, 31)
-    // Handle SETLT 1 (which is equivalent to SETLE 0).
-    if (IsRHSOne)
-      return getCompoundZeroComparisonInGPR(LHS, dl, ZeroCompare::LEZExt);
-
-    if (IsRHSZero) {
-      SDValue ShiftOps[] = { LHS, getI32Imm(1, dl), getI32Imm(31, dl),
-                                  getI32Imm(31, dl) };
-      return SDValue(CurDAG->getMachineNode(PPC::RLWINM, dl, MVT::i32,
-                                            ShiftOps), 0);
-    }
-
-    // The upper 32-bits of the register can't be undefined for this sequence.
-    LHS = signExtendInputIfNeeded(LHS);
-    RHS = signExtendInputIfNeeded(RHS);
-    SDValue SUBFNode =
-      SDValue(CurDAG->getMachineNode(PPC::SUBF8, dl, MVT::i64, RHS, LHS), 0);
-    return SDValue(CurDAG->getMachineNode(PPC::RLDICL, dl, MVT::i64,
-                                    SUBFNode, getI64Imm(1, dl),
-                                    getI64Imm(63, dl)), 0);
-  }
-  case ISD::SETUGE:
-    // (zext (setcc %a, %b, setuge)) -> (xor (lshr (sub %b, %a), 63), 1)
-    // (zext (setcc %a, %b, setule)) -> (xor (lshr (sub %a, %b), 63), 1)
-    std::swap(LHS, RHS);
-    LLVM_FALLTHROUGH;
-  case ISD::SETULE: {
-    // The upper 32-bits of the register can't be undefined for this sequence.
-    LHS = zeroExtendInputIfNeeded(LHS);
-    RHS = zeroExtendInputIfNeeded(RHS);
-    SDValue Subtract =
-      SDValue(CurDAG->getMachineNode(PPC::SUBF8, dl, MVT::i64, LHS, RHS), 0);
-    SDValue SrdiNode =
-      SDValue(CurDAG->getMachineNode(PPC::RLDICL, dl, MVT::i64,
-                                          Subtract, getI64Imm(1, dl),
-                                          getI64Imm(63, dl)), 0);
-    return SDValue(CurDAG->getMachineNode(PPC::XORI8, dl, MVT::i64, SrdiNode,
-                                            getI32Imm(1, dl)), 0);
-  }
-  case ISD::SETUGT:
-    // (zext (setcc %a, %b, setugt)) -> (lshr (sub %b, %a), 63)
-    // (zext (setcc %a, %b, setult)) -> (lshr (sub %a, %b), 63)
-    std::swap(LHS, RHS);
-    LLVM_FALLTHROUGH;
-  case ISD::SETULT: {
-    // The upper 32-bits of the register can't be undefined for this sequence.
-    LHS = zeroExtendInputIfNeeded(LHS);
-    RHS = zeroExtendInputIfNeeded(RHS);
-    SDValue Subtract =
-      SDValue(CurDAG->getMachineNode(PPC::SUBF8, dl, MVT::i64, RHS, LHS), 0);
-    return SDValue(CurDAG->getMachineNode(PPC::RLDICL, dl, MVT::i64,
-                                          Subtract, getI64Imm(1, dl),
-                                          getI64Imm(63, dl)), 0);
-  }
-  }
-}
-
-/// Produces a sign-extended result of comparing two 32-bit values according to
-/// the passed condition code.
-SDValue PPCDAGToDAGISel::get32BitSExtCompare(SDValue LHS, SDValue RHS,
-                                             ISD::CondCode CC,
-                                             int64_t RHSValue, SDLoc dl) {
-  bool IsRHSZero = RHSValue == 0;
-  bool IsRHSOne = RHSValue == 1;
-  bool IsRHSNegOne = RHSValue == -1LL;
-
-  switch (CC) {
-  default: return SDValue();
-  case ISD::SETEQ: {
-    // (sext (setcc %a, %b, seteq)) ->
-    //   (ashr (shl (ctlz (xor %a, %b)), 58), 63)
-    // (sext (setcc %a, 0, seteq)) ->
-    //   (ashr (shl (ctlz %a), 58), 63)
-    SDValue CountInput = IsRHSZero ? LHS :
-      SDValue(CurDAG->getMachineNode(PPC::XOR, dl, MVT::i32, LHS, RHS), 0);
-    SDValue Cntlzw =
-      SDValue(CurDAG->getMachineNode(PPC::CNTLZW, dl, MVT::i32, CountInput), 0);
-    SDValue SHLOps[] = { Cntlzw, getI32Imm(27, dl),
-                         getI32Imm(5, dl), getI32Imm(31, dl) };
-    SDValue Slwi =
-      SDValue(CurDAG->getMachineNode(PPC::RLWINM, dl, MVT::i32, SHLOps), 0);
-    return SDValue(CurDAG->getMachineNode(PPC::NEG, dl, MVT::i32, Slwi), 0);
-  }
-  case ISD::SETNE: {
-    // Bitwise xor the operands, count leading zeros, shift right by 5 bits and
-    // flip the bit, finally take 2's complement.
-    // (sext (setcc %a, %b, setne)) ->
-    //   (neg (xor (lshr (ctlz (xor %a, %b)), 5), 1))
-    // Same as above, but the first xor is not needed.
-    // (sext (setcc %a, 0, setne)) ->
-    //   (neg (xor (lshr (ctlz %a), 5), 1))
-    SDValue Xor = IsRHSZero ? LHS :
-      SDValue(CurDAG->getMachineNode(PPC::XOR, dl, MVT::i32, LHS, RHS), 0);
-    SDValue Clz =
-      SDValue(CurDAG->getMachineNode(PPC::CNTLZW, dl, MVT::i32, Xor), 0);
-    SDValue ShiftOps[] =
-      { Clz, getI32Imm(27, dl), getI32Imm(5, dl), getI32Imm(31, dl) };
-    SDValue Shift =
-      SDValue(CurDAG->getMachineNode(PPC::RLWINM, dl, MVT::i32, ShiftOps), 0);
-    SDValue Xori =
-      SDValue(CurDAG->getMachineNode(PPC::XORI, dl, MVT::i32, Shift,
-                                     getI32Imm(1, dl)), 0);
-    return SDValue(CurDAG->getMachineNode(PPC::NEG, dl, MVT::i32, Xori), 0);
-  }
-  case ISD::SETGE: {
-    // (sext (setcc %a, %b, setge)) -> (add (lshr (sub %a, %b), 63), -1)
-    // (sext (setcc %a, 0, setge))  -> (ashr (~ %a), 31)
-    if (IsRHSZero)
-      return getCompoundZeroComparisonInGPR(LHS, dl, ZeroCompare::GESExt);
-
-    // Not a special case (i.e. RHS == 0). Handle (%a >= %b) as (%b <= %a)
-    // by swapping inputs and falling through.
-    std::swap(LHS, RHS);
-    ConstantSDNode *RHSConst = dyn_cast<ConstantSDNode>(RHS);
-    IsRHSZero = RHSConst && RHSConst->isNullValue();
-    LLVM_FALLTHROUGH;
-  }
-  case ISD::SETLE: {
-    // (sext (setcc %a, %b, setge)) -> (add (lshr (sub %b, %a), 63), -1)
-    // (sext (setcc %a, 0, setle))  -> (add (lshr (- %a), 63), -1)
-    if (IsRHSZero)
-      return getCompoundZeroComparisonInGPR(LHS, dl, ZeroCompare::LESExt);
-
-    // The upper 32-bits of the register can't be undefined for this sequence.
-    LHS = signExtendInputIfNeeded(LHS);
-    RHS = signExtendInputIfNeeded(RHS);
-    SDValue SUBFNode =
-      SDValue(CurDAG->getMachineNode(PPC::SUBF8, dl, MVT::i64, MVT::Glue,
-                                     LHS, RHS), 0);
-    SDValue Srdi =
-      SDValue(CurDAG->getMachineNode(PPC::RLDICL, dl, MVT::i64,
-                                     SUBFNode, getI64Imm(1, dl),
-                                     getI64Imm(63, dl)), 0);
-    return SDValue(CurDAG->getMachineNode(PPC::ADDI8, dl, MVT::i64, Srdi,
-                                          getI32Imm(-1, dl)), 0);
-  }
-  case ISD::SETGT: {
-    // (sext (setcc %a, %b, setgt)) -> (ashr (sub %b, %a), 63)
-    // (sext (setcc %a, -1, setgt)) -> (ashr (~ %a), 31)
-    // (sext (setcc %a, 0, setgt))  -> (ashr (- %a), 63)
-    if (IsRHSNegOne)
-      return getCompoundZeroComparisonInGPR(LHS, dl, ZeroCompare::GESExt);
-    if (IsRHSZero) {
-      // The upper 32-bits of the register can't be undefined for this sequence.
-      LHS = signExtendInputIfNeeded(LHS);
-      RHS = signExtendInputIfNeeded(RHS);
-      SDValue Neg =
-        SDValue(CurDAG->getMachineNode(PPC::NEG8, dl, MVT::i64, LHS), 0);
-        return SDValue(CurDAG->getMachineNode(PPC::SRADI, dl, MVT::i64, Neg,
-                                              getI64Imm(63, dl)), 0);
-    }
-    // Not a special case (i.e. RHS == 0 or RHS == -1). Handle (%a > %b) as
-    // (%b < %a) by swapping inputs and falling through.
-    std::swap(LHS, RHS);
-    ConstantSDNode *RHSConst = dyn_cast<ConstantSDNode>(RHS);
-    IsRHSZero = RHSConst && RHSConst->isNullValue();
-    IsRHSOne = RHSConst && RHSConst->getSExtValue() == 1;
-    LLVM_FALLTHROUGH;
-  }
-  case ISD::SETLT: {
-    // (sext (setcc %a, %b, setgt)) -> (ashr (sub %a, %b), 63)
-    // (sext (setcc %a, 1, setgt))  -> (add (lshr (- %a), 63), -1)
-    // (sext (setcc %a, 0, setgt))  -> (ashr %a, 31)
-    if (IsRHSOne)
-      return getCompoundZeroComparisonInGPR(LHS, dl, ZeroCompare::LESExt);
-    if (IsRHSZero)
-      return SDValue(CurDAG->getMachineNode(PPC::SRAWI, dl, MVT::i32, LHS,
-                                            getI32Imm(31, dl)), 0);
-
-    // The upper 32-bits of the register can't be undefined for this sequence.
-    LHS = signExtendInputIfNeeded(LHS);
-    RHS = signExtendInputIfNeeded(RHS);
-    SDValue SUBFNode =
-      SDValue(CurDAG->getMachineNode(PPC::SUBF8, dl, MVT::i64, RHS, LHS), 0);
-    return SDValue(CurDAG->getMachineNode(PPC::SRADI, dl, MVT::i64,
-                                          SUBFNode, getI64Imm(63, dl)), 0);
-  }
-  case ISD::SETUGE:
-    // (sext (setcc %a, %b, setuge)) -> (add (lshr (sub %a, %b), 63), -1)
-    // (sext (setcc %a, %b, setule)) -> (add (lshr (sub %b, %a), 63), -1)
-    std::swap(LHS, RHS);
-    LLVM_FALLTHROUGH;
-  case ISD::SETULE: {
-    // The upper 32-bits of the register can't be undefined for this sequence.
-    LHS = zeroExtendInputIfNeeded(LHS);
-    RHS = zeroExtendInputIfNeeded(RHS);
-    SDValue Subtract =
-      SDValue(CurDAG->getMachineNode(PPC::SUBF8, dl, MVT::i64, LHS, RHS), 0);
-    SDValue Shift =
-      SDValue(CurDAG->getMachineNode(PPC::RLDICL, dl, MVT::i64, Subtract,
-                                     getI32Imm(1, dl), getI32Imm(63,dl)), 0);
-    return SDValue(CurDAG->getMachineNode(PPC::ADDI8, dl, MVT::i64, Shift,
-                                          getI32Imm(-1, dl)), 0);
-  }
-  case ISD::SETUGT:
-    // (sext (setcc %a, %b, setugt)) -> (ashr (sub %b, %a), 63)
-    // (sext (setcc %a, %b, setugt)) -> (ashr (sub %a, %b), 63)
-    std::swap(LHS, RHS);
-    LLVM_FALLTHROUGH;
-  case ISD::SETULT: {
-    // The upper 32-bits of the register can't be undefined for this sequence.
-    LHS = zeroExtendInputIfNeeded(LHS);
-    RHS = zeroExtendInputIfNeeded(RHS);
-    SDValue Subtract =
-      SDValue(CurDAG->getMachineNode(PPC::SUBF8, dl, MVT::i64, RHS, LHS), 0);
-    return SDValue(CurDAG->getMachineNode(PPC::SRADI, dl, MVT::i64,
-                                          Subtract, getI64Imm(63, dl)), 0);
-  }
-  }
-}
-
-/// Produces a zero-extended result of comparing two 64-bit values according to
-/// the passed condition code.
-SDValue PPCDAGToDAGISel::get64BitZExtCompare(SDValue LHS, SDValue RHS,
-                                             ISD::CondCode CC,
-                                             int64_t RHSValue, SDLoc dl) {
-  bool IsRHSZero = RHSValue == 0;
-  bool IsRHSOne = RHSValue == 1;
-  bool IsRHSNegOne = RHSValue == -1LL;
-  switch (CC) {
-  default: return SDValue();
-  case ISD::SETEQ: {
-    // (zext (setcc %a, %b, seteq)) -> (lshr (ctlz (xor %a, %b)), 6)
-    // (zext (setcc %a, 0, seteq)) ->  (lshr (ctlz %a), 6)
-    SDValue Xor = IsRHSZero ? LHS :
-      SDValue(CurDAG->getMachineNode(PPC::XOR8, dl, MVT::i64, LHS, RHS), 0);
-    SDValue Clz =
-      SDValue(CurDAG->getMachineNode(PPC::CNTLZD, dl, MVT::i64, Xor), 0);
-    return SDValue(CurDAG->getMachineNode(PPC::RLDICL, dl, MVT::i64, Clz,
-                                          getI64Imm(58, dl), getI64Imm(63, dl)),
-                   0);
-  }
-  case ISD::SETNE: {
-    // {addc.reg, addc.CA} = (addcarry (xor %a, %b), -1)
-    // (zext (setcc %a, %b, setne)) -> (sube addc.reg, addc.reg, addc.CA)
-    // {addcz.reg, addcz.CA} = (addcarry %a, -1)
-    // (zext (setcc %a, 0, setne)) -> (sube addcz.reg, addcz.reg, addcz.CA)
-    SDValue Xor = IsRHSZero ? LHS :
-      SDValue(CurDAG->getMachineNode(PPC::XOR8, dl, MVT::i64, LHS, RHS), 0);
-    SDValue AC =
-      SDValue(CurDAG->getMachineNode(PPC::ADDIC8, dl, MVT::i64, MVT::Glue,
-                                     Xor, getI32Imm(~0U, dl)), 0);
-    return SDValue(CurDAG->getMachineNode(PPC::SUBFE8, dl, MVT::i64, AC,
-                                          Xor, AC.getValue(1)), 0);
-  }
-  case ISD::SETGE: {
-    // {subc.reg, subc.CA} = (subcarry %a, %b)
-    // (zext (setcc %a, %b, setge)) ->
-    //   (adde (lshr %b, 63), (ashr %a, 63), subc.CA)
-    // (zext (setcc %a, 0, setge)) -> (lshr (~ %a), 63)
-    if (IsRHSZero)
-      return getCompoundZeroComparisonInGPR(LHS, dl, ZeroCompare::GEZExt);
-    std::swap(LHS, RHS);
-    ConstantSDNode *RHSConst = dyn_cast<ConstantSDNode>(RHS);
-    IsRHSZero = RHSConst && RHSConst->isNullValue();
-    LLVM_FALLTHROUGH;
-  }
-  case ISD::SETLE: {
-    // {subc.reg, subc.CA} = (subcarry %b, %a)
-    // (zext (setcc %a, %b, setge)) ->
-    //   (adde (lshr %a, 63), (ashr %b, 63), subc.CA)
-    // (zext (setcc %a, 0, setge)) -> (lshr (or %a, (add %a, -1)), 63)
-    if (IsRHSZero)
-      return getCompoundZeroComparisonInGPR(LHS, dl, ZeroCompare::LEZExt);
-    SDValue ShiftL =
-      SDValue(CurDAG->getMachineNode(PPC::RLDICL, dl, MVT::i64, LHS,
-                                     getI64Imm(1, dl), getI64Imm(63, dl)), 0);
-    SDValue ShiftR =
-      SDValue(CurDAG->getMachineNode(PPC::SRADI, dl, MVT::i64, RHS,
-                                     getI64Imm(63, dl)), 0);
-    SDValue SubtractCarry =
-      SDValue(CurDAG->getMachineNode(PPC::SUBFC8, dl, MVT::i64, MVT::Glue,
-                                     LHS, RHS), 1);
-    return SDValue(CurDAG->getMachineNode(PPC::ADDE8, dl, MVT::i64, MVT::Glue,
-                                          ShiftR, ShiftL, SubtractCarry), 0);
-  }
-  case ISD::SETGT: {
-    // {subc.reg, subc.CA} = (subcarry %b, %a)
-    // (zext (setcc %a, %b, setgt)) ->
-    //   (xor (adde (lshr %a, 63), (ashr %b, 63), subc.CA), 1)
-    // (zext (setcc %a, 0, setgt)) -> (lshr (nor (add %a, -1), %a), 63)
-    if (IsRHSNegOne)
-      return getCompoundZeroComparisonInGPR(LHS, dl, ZeroCompare::GEZExt);
-    if (IsRHSZero) {
-      SDValue Addi =
-        SDValue(CurDAG->getMachineNode(PPC::ADDI8, dl, MVT::i64, LHS,
-                                       getI64Imm(~0ULL, dl)), 0);
-      SDValue Nor =
-        SDValue(CurDAG->getMachineNode(PPC::NOR8, dl, MVT::i64, Addi, LHS), 0);
-      return SDValue(CurDAG->getMachineNode(PPC::RLDICL, dl, MVT::i64, Nor,
-                                            getI64Imm(1, dl),
-                                            getI64Imm(63, dl)), 0);
-    }
-    std::swap(LHS, RHS);
-    ConstantSDNode *RHSConst = dyn_cast<ConstantSDNode>(RHS);
-    IsRHSZero = RHSConst && RHSConst->isNullValue();
-    IsRHSOne = RHSConst && RHSConst->getSExtValue() == 1;
-    LLVM_FALLTHROUGH;
-  }
-  case ISD::SETLT: {
-    // {subc.reg, subc.CA} = (subcarry %a, %b)
-    // (zext (setcc %a, %b, setlt)) ->
-    //   (xor (adde (lshr %b, 63), (ashr %a, 63), subc.CA), 1)
-    // (zext (setcc %a, 0, setlt)) -> (lshr %a, 63)
-    if (IsRHSOne)
-      return getCompoundZeroComparisonInGPR(LHS, dl, ZeroCompare::LEZExt);
-    if (IsRHSZero)
-      return SDValue(CurDAG->getMachineNode(PPC::RLDICL, dl, MVT::i64, LHS,
-                                            getI64Imm(1, dl),
-                                            getI64Imm(63, dl)), 0);
-    SDValue SRADINode =
-      SDValue(CurDAG->getMachineNode(PPC::SRADI, dl, MVT::i64,
-                                     LHS, getI64Imm(63, dl)), 0);
-    SDValue SRDINode =
-      SDValue(CurDAG->getMachineNode(PPC::RLDICL, dl, MVT::i64,
-                                     RHS, getI64Imm(1, dl),
-                                     getI64Imm(63, dl)), 0);
-    SDValue SUBFC8Carry =
-      SDValue(CurDAG->getMachineNode(PPC::SUBFC8, dl, MVT::i64, MVT::Glue,
-                                     RHS, LHS), 1);
-    SDValue ADDE8Node =
-      SDValue(CurDAG->getMachineNode(PPC::ADDE8, dl, MVT::i64, MVT::Glue,
-                                     SRDINode, SRADINode, SUBFC8Carry), 0);
-    return SDValue(CurDAG->getMachineNode(PPC::XORI8, dl, MVT::i64,
-                                          ADDE8Node, getI64Imm(1, dl)), 0);
-  }
-  }
-}
-
-/// Produces a sign-extended result of comparing two 64-bit values according to
-/// the passed condition code.
-SDValue PPCDAGToDAGISel::get64BitSExtCompare(SDValue LHS, SDValue RHS,
-                                             ISD::CondCode CC,
-                                             int64_t RHSValue, SDLoc dl) {
-  bool IsRHSZero = RHSValue == 0;
-  bool IsRHSOne = RHSValue == 1;
-  bool IsRHSNegOne = RHSValue == -1LL;
-  switch (CC) {
-  default: return SDValue();
-  case ISD::SETEQ: {
-    // {addc.reg, addc.CA} = (addcarry (xor %a, %b), -1)
-    // (sext (setcc %a, %b, seteq)) -> (sube addc.reg, addc.reg, addc.CA)
-    // {addcz.reg, addcz.CA} = (addcarry %a, -1)
-    // (sext (setcc %a, 0, seteq)) -> (sube addcz.reg, addcz.reg, addcz.CA)
-    SDValue AddInput = IsRHSZero ? LHS :
-      SDValue(CurDAG->getMachineNode(PPC::XOR8, dl, MVT::i64, LHS, RHS), 0);
-    SDValue Addic =
-      SDValue(CurDAG->getMachineNode(PPC::ADDIC8, dl, MVT::i64, MVT::Glue,
-                                     AddInput, getI32Imm(~0U, dl)), 0);
-    return SDValue(CurDAG->getMachineNode(PPC::SUBFE8, dl, MVT::i64, Addic,
-                                          Addic, Addic.getValue(1)), 0);
-  }
-  case ISD::SETNE: {
-    // {subfc.reg, subfc.CA} = (subcarry 0, (xor %a, %b))
-    // (sext (setcc %a, %b, setne)) -> (sube subfc.reg, subfc.reg, subfc.CA)
-    // {subfcz.reg, subfcz.CA} = (subcarry 0, %a)
-    // (sext (setcc %a, 0, setne)) -> (sube subfcz.reg, subfcz.reg, subfcz.CA)
-    SDValue Xor = IsRHSZero ? LHS :
-      SDValue(CurDAG->getMachineNode(PPC::XOR8, dl, MVT::i64, LHS, RHS), 0);
-    SDValue SC =
-      SDValue(CurDAG->getMachineNode(PPC::SUBFIC8, dl, MVT::i64, MVT::Glue,
-                                     Xor, getI32Imm(0, dl)), 0);
-    return SDValue(CurDAG->getMachineNode(PPC::SUBFE8, dl, MVT::i64, SC,
-                                          SC, SC.getValue(1)), 0);
-  }
-  case ISD::SETGE: {
-    // {subc.reg, subc.CA} = (subcarry %a, %b)
-    // (zext (setcc %a, %b, setge)) ->
-    //   (- (adde (lshr %b, 63), (ashr %a, 63), subc.CA))
-    // (zext (setcc %a, 0, setge)) -> (~ (ashr %a, 63))
-    if (IsRHSZero)
-      return getCompoundZeroComparisonInGPR(LHS, dl, ZeroCompare::GESExt);
-    std::swap(LHS, RHS);
-    ConstantSDNode *RHSConst = dyn_cast<ConstantSDNode>(RHS);
-    IsRHSZero = RHSConst && RHSConst->isNullValue();
-    LLVM_FALLTHROUGH;
-  }
-  case ISD::SETLE: {
-    // {subc.reg, subc.CA} = (subcarry %b, %a)
-    // (zext (setcc %a, %b, setge)) ->
-    //   (- (adde (lshr %a, 63), (ashr %b, 63), subc.CA))
-    // (zext (setcc %a, 0, setge)) -> (ashr (or %a, (add %a, -1)), 63)
-    if (IsRHSZero)
-      return getCompoundZeroComparisonInGPR(LHS, dl, ZeroCompare::LESExt);
-    SDValue ShiftR =
-      SDValue(CurDAG->getMachineNode(PPC::SRADI, dl, MVT::i64, RHS,
-                                     getI64Imm(63, dl)), 0);
-    SDValue ShiftL =
-      SDValue(CurDAG->getMachineNode(PPC::RLDICL, dl, MVT::i64, LHS,
-                                     getI64Imm(1, dl), getI64Imm(63, dl)), 0);
-    SDValue SubtractCarry =
-      SDValue(CurDAG->getMachineNode(PPC::SUBFC8, dl, MVT::i64, MVT::Glue,
-                                     LHS, RHS), 1);
-    SDValue Adde =
-      SDValue(CurDAG->getMachineNode(PPC::ADDE8, dl, MVT::i64, MVT::Glue,
-                                     ShiftR, ShiftL, SubtractCarry), 0);
-    return SDValue(CurDAG->getMachineNode(PPC::NEG8, dl, MVT::i64, Adde), 0);
-  }
-  case ISD::SETGT: {
-    // {subc.reg, subc.CA} = (subcarry %b, %a)
-    // (zext (setcc %a, %b, setgt)) ->
-    //   -(xor (adde (lshr %a, 63), (ashr %b, 63), subc.CA), 1)
-    // (zext (setcc %a, 0, setgt)) -> (ashr (nor (add %a, -1), %a), 63)
-    if (IsRHSNegOne)
-      return getCompoundZeroComparisonInGPR(LHS, dl, ZeroCompare::GESExt);
-    if (IsRHSZero) {
-      SDValue Add =
-        SDValue(CurDAG->getMachineNode(PPC::ADDI8, dl, MVT::i64, LHS,
-                                       getI64Imm(-1, dl)), 0);
-      SDValue Nor =
-        SDValue(CurDAG->getMachineNode(PPC::NOR8, dl, MVT::i64, Add, LHS), 0);
-      return SDValue(CurDAG->getMachineNode(PPC::SRADI, dl, MVT::i64, Nor,
-                                            getI64Imm(63, dl)), 0);
-    }
-    std::swap(LHS, RHS);
-    ConstantSDNode *RHSConst = dyn_cast<ConstantSDNode>(RHS);
-    IsRHSZero = RHSConst && RHSConst->isNullValue();
-    IsRHSOne = RHSConst && RHSConst->getSExtValue() == 1;
-    LLVM_FALLTHROUGH;
-  }
-  case ISD::SETLT: {
-    // {subc.reg, subc.CA} = (subcarry %a, %b)
-    // (zext (setcc %a, %b, setlt)) ->
-    //   -(xor (adde (lshr %b, 63), (ashr %a, 63), subc.CA), 1)
-    // (zext (setcc %a, 0, setlt)) -> (ashr %a, 63)
-    if (IsRHSOne)
-      return getCompoundZeroComparisonInGPR(LHS, dl, ZeroCompare::LESExt);
-    if (IsRHSZero) {
-      return SDValue(CurDAG->getMachineNode(PPC::SRADI, dl, MVT::i64, LHS,
-                                            getI64Imm(63, dl)), 0);
-    }
-    SDValue SRADINode =
-      SDValue(CurDAG->getMachineNode(PPC::SRADI, dl, MVT::i64,
-                                     LHS, getI64Imm(63, dl)), 0);
-    SDValue SRDINode =
-      SDValue(CurDAG->getMachineNode(PPC::RLDICL, dl, MVT::i64,
-                                     RHS, getI64Imm(1, dl),
-                                     getI64Imm(63, dl)), 0);
-    SDValue SUBFC8Carry =
-      SDValue(CurDAG->getMachineNode(PPC::SUBFC8, dl, MVT::i64, MVT::Glue,
-                                     RHS, LHS), 1);
-    SDValue ADDE8Node =
-      SDValue(CurDAG->getMachineNode(PPC::ADDE8, dl, MVT::i64,
-                                     SRDINode, SRADINode, SUBFC8Carry), 0);
-    SDValue XORI8Node =
-      SDValue(CurDAG->getMachineNode(PPC::XORI8, dl, MVT::i64,
-                                     ADDE8Node, getI64Imm(1, dl)), 0);
-    return SDValue(CurDAG->getMachineNode(PPC::NEG8, dl, MVT::i64,
-                                          XORI8Node), 0);
-  }
-  }
-}
-
-/// Does this SDValue have any uses for which keeping the value in a GPR is
-/// appropriate. This is meant to be used on values that have type i1 since
-/// it is somewhat meaningless to ask if values of other types can be kept in
-/// GPR's.
-static bool allUsesExtend(SDValue Compare, SelectionDAG *CurDAG) {
-  assert(Compare.getOpcode() == ISD::SETCC &&
-         "An ISD::SETCC node required here.");
-
-  // For values that have a single use, the caller should obviously already have
-  // checked if that use is an extending use. We check the other uses here.
-  if (Compare.hasOneUse())
-    return true;
-  // We want the value in a GPR if it is being extended, used for a select, or
-  // used in logical operations.
-  for (auto CompareUse : Compare.getNode()->uses())
-    if (CompareUse->getOpcode() != ISD::SIGN_EXTEND &&
-        CompareUse->getOpcode() != ISD::ZERO_EXTEND &&
-        CompareUse->getOpcode() != ISD::SELECT &&
-        !isLogicOp(CompareUse->getOpcode())) {
-      OmittedForNonExtendUses++;
-      return false;
-    }
-  return true;
-}
-
-/// Returns an equivalent of a SETCC node but with the result the same width as
-/// the inputs. This can nalso be used for SELECT_CC if either the true or false
-/// values is a power of two while the other is zero.
-SDValue PPCDAGToDAGISel::getSETCCInGPR(SDValue Compare,
-                                       SetccInGPROpts ConvOpts) {
-  assert((Compare.getOpcode() == ISD::SETCC ||
-          Compare.getOpcode() == ISD::SELECT_CC) &&
-         "An ISD::SETCC node required here.");
-
-  // Don't convert this comparison to a GPR sequence because there are uses
-  // of the i1 result (i.e. uses that require the result in the CR).
-  if ((Compare.getOpcode() == ISD::SETCC) && !allUsesExtend(Compare, CurDAG))
-    return SDValue();
-
-  SDValue LHS = Compare.getOperand(0);
-  SDValue RHS = Compare.getOperand(1);
-
-  // The condition code is operand 2 for SETCC and operand 4 for SELECT_CC.
-  int CCOpNum = Compare.getOpcode() == ISD::SELECT_CC ? 4 : 2;
-  ISD::CondCode CC =
-    cast<CondCodeSDNode>(Compare.getOperand(CCOpNum))->get();
-  EVT InputVT = LHS.getValueType();
-  if (InputVT != MVT::i32 && InputVT != MVT::i64)
-    return SDValue();
-
-  if (ConvOpts == SetccInGPROpts::ZExtInvert ||
-      ConvOpts == SetccInGPROpts::SExtInvert)
-    CC = ISD::getSetCCInverse(CC, true);
-
-  bool Inputs32Bit = InputVT == MVT::i32;
-
-  SDLoc dl(Compare);
-  ConstantSDNode *RHSConst = dyn_cast<ConstantSDNode>(RHS);
-  int64_t RHSValue = RHSConst ? RHSConst->getSExtValue() : INT64_MAX;
-  bool IsSext = ConvOpts == SetccInGPROpts::SExtOrig ||
-    ConvOpts == SetccInGPROpts::SExtInvert;
-
-  if (IsSext && Inputs32Bit)
-    return get32BitSExtCompare(LHS, RHS, CC, RHSValue, dl);
-  else if (Inputs32Bit)
-    return get32BitZExtCompare(LHS, RHS, CC, RHSValue, dl);
-  else if (IsSext)
-    return get64BitSExtCompare(LHS, RHS, CC, RHSValue, dl);
-  return get64BitZExtCompare(LHS, RHS, CC, RHSValue, dl);
-}
-
 /// Does this node represent a load/store node whose address can be represented
 /// with a register plus an immediate that's a multiple of \p Val:
 bool PPCDAGToDAGISel::isOffsetMultipleOf(SDNode *N, unsigned Val) const {
@@ -3589,12 +2543,6 @@ void PPCDAGToDAGISel::Select(SDNode *N) {
     }
     break;
 
-  case ISD::ZERO_EXTEND:
-  case ISD::SIGN_EXTEND:
-    if (tryEXTEND(N))
-      return;
-    break;
-
   case ISD::SETCC:
     if (trySETCC(N))
       return;
@@ -3738,9 +2686,6 @@ void PPCDAGToDAGISel::Select(SDNode *N) {
   }
 
   case ISD::AND: {
-    if (tryLogicOpOfCompares(N))
-      return;
-
     unsigned Imm, Imm2, SH, MB, ME;
     uint64_t Imm64;
 
@@ -3860,9 +2805,6 @@ void PPCDAGToDAGISel::Select(SDNode *N) {
       if (tryBitfieldInsert(N))
         return;
 
-    if (tryLogicOpOfCompares(N))
-      return;
-
     int16_t Imm;
     if (N->getOperand(0)->getOpcode() == ISD::FrameIndex &&
         isIntS16Immediate(N->getOperand(1), Imm)) {
@@ -3900,9 +2842,6 @@ void PPCDAGToDAGISel::Select(SDNode *N) {
     break;
   }
   case ISD::XOR: {
-    if (tryLogicOpOfCompares(N))
-      return;
-
     // XOR with a 32-bit immediate can be handled by xori + xoris
     // without creating an immediate in a GPR.
     uint64_t Imm64 = 0;
index 56a167d99e6f293395bf23d26da1d452490c59e1..74093aa1da49442d03644cb882bf8fe4c65cb02b 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; The purpose of the test case is to ensure that a spill that happens during
 ; intermediate calculations for a comparison performed in a GPR spills the
 ; full register. Some i32 comparisons performed in GPRs use code that uses
index 4ae91d1163a4a5657fd0ad1f5da87f36fcce0cb8..e401179d63793096da8d2f18be296e04aff677ba 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mcpu=pwr7 < %s | FileCheck %s
 ; RUN: llc -verify-machineinstrs -mcpu=pwr7 -ppc-gen-isel=false < %s | FileCheck --check-prefix=CHECK-NO-ISEL %s
 target datalayout = "E-m:e-i64:64-n32:64"
index 608f0367cbc5e8f6126f17fc443dd06981d22325..84d17baf13aec6820ae907b7e2f9b26eca094c3e 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32:64"
 target triple = "powerpc64-unknown-linux-gnu"
 ; RUN: llc -verify-machineinstrs -O2 -ppc-asm-full-reg-names -mcpu=pwr7 -ppc-gen-isel=false < %s | FileCheck %s --implicit-check-not isel
index 7996262dc8d7b53d1b1e72b31fdbb1b23846cbd7..e448afd03eaab454714856ce7000bad0e0384296 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
index c8c5108673da0924cfd400f4fcedb1c8c0f6cdfc..9e81294143727dc26bc47667a99b308136f4a37f 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
 ; RUN: llc -verify-machineinstrs -mcpu=pwr8 < %s | FileCheck %s
 target datalayout = "e-m:e-i64:64-n32:64"
index 44643df09bd5d27fb30d4e32ed10d5d4233077d4..1c22d8b790369a1ef0351551a81f42baefcd7a71 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mcpu=pwr7 < %s | FileCheck %s
 target datalayout = "E-m:e-i64:64-n32:64"
 target triple = "powerpc64-unknown-linux-gnu"
index cfd138caf5aa3b44e28c14667523bded234584d2..68ac832a039d521e99587c5a263d3725d95294f8 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc64-unknown-linux-gnu -mcpu=a2 -mattr=-crbits -disable-ppc-cmp-opt=0 | FileCheck %s
 ; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc64-unknown-linux-gnu -mcpu=a2 -mattr=-crbits -disable-ppc-cmp-opt=0 -ppc-gen-isel=false | FileCheck --check-prefix=CHECK-NO-ISEL %s
 target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:128:128-v128:128:128-n32:64"
index c403b5ac2e5aa5c51a7dbb5d1403affcd58657da..50a5192ce76ab68d87e97bafa8e7cdc73f5f2c03 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mcpu=pwr7 < %s | FileCheck %s
 ; RUN: llc -verify-machineinstrs -mcpu=pwr7 -ppc-gen-isel=false < %s | FileCheck --check-prefix=CHECK-NO-ISEL %s
 target datalayout = "E-m:e-i64:64-n32:64"
index 8a6f4975ec97be2d18c57a4263fa300bf192d868..be5171d3b7e7dcafed857d7885e722bc1bc53b3c 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
 ; RUN: llc < %s -verify-machineinstrs -mtriple=powerpc64le-unknown-unknown | FileCheck %s
 
index b8f935bde137933518ca380973483d38ac85eca5..c6f456aa864347b6df67c023c41f9afcc24c4c8a 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index 29c051b9d9fc8c5eb641af062c402f3226386611..59a3e6693494edc50c6c85a41c606a1966c09974 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
index 69b5e6a6ae66ca459de048a937cf5ca88b67b62b..9df93f3e8d4d8e2db521010f61a4b976204e7e62 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index 832f918a6901a42bc2f02e3f835abfbbb788efd5..e457dd61b071aae7d558a4efcca777bb7f2b9764 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
index 90664ee99101d5545e800e1ef83349e973490244..fb76f2a0403bfe54ed68c2b22dccc8335e38b31a 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
index 57c7365eff03a71ead6036988e5e7f0afa098299..bc5f00f6aef7738b4f8269ae053d94a14a359acb 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
index 499f482c8ebf034b61664f4a238c5a7aa11a7d4e..787fca6d22d25e290ac08d8afa4e7d6917ac08c2 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
index 54d3ebf22470e8a7368d50d56c179a33613e5eda..a9e622796b6c0c5ed49acfdde63a9fa4536d27e1 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
index cef35667a2e92a8c3dcd5718b86ca303d30e2288..5a9f64c9fde57e78f85b95834f2d00801bd4f8af 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
index c289290718455a495ebd0822852001cd2c6d9095..95e732baf1d4684fc463cb303dada60a0e15f25c 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
index 11c393eb363d6d35f48fbce96ad79f10ae850851..20f8020d70504edaf64b17193d327abc7d54f568 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
index cd3c99fdcc0a1c5714add3aa8bd0c12399baade2..42d50a602ec140df478f62e5f374f3c0da05a577 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index 57f4c0f33ea0da269ef72ee72e161ba2d9a6f865..316f8ed5600fce98c41148b83a35c4cd3f3e3f65 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index 95be923b88a5b61444add4a020cb1bf448056359..30ed8c0e959f75191768b0a08f2c18f38dcea138 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index 91594a0430c25891d51a4fafb58b1dac86b0fcf0..abcb556d0c39a57b9ab9911b14950bc800c9b248 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index 7f72d0c76348c0adf628a36df21890fbcf3144b9..3cb7b33e147368bd52cacf00d02a98865db9a4d1 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index fd11816d6c010e71b7d868b56113348d9af5233e..165460c26cbf6bfbd2b820e882bcbb10ac4096c7 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index 2da7d60294f896ff8bf79eee448950471148ac7d..58a876fbca3900768d2bd149fc17cd3e2114212d 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index 27692e0f541e60de251ec22fd53b0705eab4322a..32eb2c833b262b81fa100d83e090fb589e2a3257 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index a6eda86e5fc487d671199d90d31f9198c5b650f8..4d8c235267a3984acd99d0cedfa01812daa2cc99 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index ea50b492d60d6b955e3ab436dbc518a2d3db3832..abf120c55dd08453f9e3e0bfe217fbb904850bf3 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index a79d48872299c48aabe2699eee608d25347f00e1..a8e0e0a04e6528d463962ada9cf570897113e9d5 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index 9c515722b5424ea38cc737d084cb6e1982dae83d..068e8bd73467d64b3406184f807550e47e01f95f 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index ab930fe236fdc05aba4b10d093292b9cb47a44f2..c17919a36b6528beacb0f23718b72426d0399682 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index 2f652b8661c90adee0f08185445521f47ef8e5ca..ad5df6734923493bb42c5aaf16e70e9b0d9975df 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index 802424802bc1a9c63844861576777699f8cfd438..a605a8443af79c8b4720ff91a09705225d0abf81 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index 163a31330b455b5b5448b61329b26472d3b4c28b..fff978f7f4f596d0d1c430a5eb1f1261abe28290 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index 04381c5ed2899bfb24c11ac125a9d8883e96fd0e..74a770178bae5bc5142b41b936c3a4a0000ec5f7 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index 61e3b37d8c4c5ea99288461d89cf0d055383e8e5..b985bc5f7b48d31985e6a089d7c4295372f4f653 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index 4d5b128585a089c1acbbf75e937047bc08791b56..072d89fa40bf7fe3d9900c9f751f5df557265968 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index 3ae7536d6c2b654f7c6833c2e16cef56c5c1b364..5c614bc2d4d60aede9a8ff943d791631731808f1 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index cd696f496bf88f4f908a0decdb65f940efa56fc4..b2034f7e41d670fedc363dcd9c99a3e2affdef20 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index 54e278d432185feafc0bbe271940fba34b8fb46f..0161dd060e6cbe3b87c1020f3b68fd0afb0b77ab 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index 8a5cdd86921ef9c15600aab06315250ddda31d09..6f2148ce0fe887f91eaeae471aaab61c8589356d 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index 70de905ed20f6d8af45e68771b03189bb2f2f4b4..6fbf8bca92bde42215a8ce0cf0b86fecfe971283 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index a3ec96dda11e66a848c96744f80f377a26b5c788..f538e18b8c3fb4969859bddfd688acf421d927eb 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index af334bb847c0946140381a1cf49c7bc2ac8152d7..ddfda95bc9760453e80383a92409d0b52127553e 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index 32758e163790f0876f7f719fc544c1cd5ff9ff43..ac61f977b28e76f7e978fa66150a588545201e76 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index 54920be916b24e0d0e09c0879faa0c373f75fadb..349ec2696be654faea2079e72706525dbb9db4ee 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index e6ade339573b9691e324c4001d995c099c635bef..d67d7a5d5d03856fd6ca3041467ca1ed4d5b23c7 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index ad9431c09e331123e55419cae5dd6d5c00e73bd1..dce15a4eb2a21d5599037a62ecfbe54ff9393d1a 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index 9e9369455857938cd1b9465cfaf78513e6bbc431..2703690d297a022e42839c01d9bee15c0f5c5bc0 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index 56b7a6ab397402c0476821646fcb810528024e07..47f99816bfee8e2d937c4548f20e8c597167a8cd 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index 1cba13f122923f6192d6d460146be1de990adcc3..dfe3fff477a8199d8850a54995929b5cc8966d5b 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index 36899b7ea8e1d75ac75c1de98cdc583067baf369..44f661c3a80d693b4cfc45de24cf0a0c44c58f35 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index 7f0fed15157c55d6938260aef6adf25c83745c76..00231b5792ef65a2e7e493db3107c825fe3098a2 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index d24d854f31c9c10cd0645a1883c68c866cdeb9fc..32dfed54d923af641ed42299089ae2bc10b639a6 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index 96665e6201c9a6bc0e848a7fd6b6152854d21e09..7042f6c32893e6d402df93d1f73e68401d223833 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
index 8bec2a0f5e953e80f4e35d23411703833ce55e5c..9c59c263b327f9174c407974a804cd817ffa9fa9 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
index 4797ddfbfe970aedb0348599014f2363221e06b3..226dd1e33dd53a187ae4493abf96be8e8c11eaec 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
index 34c6e014bc51ccab723f1c9a49a0912c2b1030d6..19f18c0b6a91d1cfc6c198e38805bc9b560f892a 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
index c2d8c3c15e8add80bcc6a06c7cca2723bc1b2f0b..af130bacfd1564f10125f9d3269fb375aba7edc9 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
index e155bf1ab2e2ed67fe296ece6f6188d3d08fdadf..14ce4973013b5cf8c6047e11bf873587bfbbd175 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
index 4dc7be69d2c8d832a6fa70d668de3b414baa3d69..91032b76fb4e80d31cb8ed7d045f5e6b875358f4 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
index 97326487492b117a2f5ec8c354e4d97c3ab5a605..9edadd4a03625ef00080d771c125bae55be9dc69 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
index 3302fe04c46631d33acef7133cbb9dbaf5b7a593..a0335e4af4fe1451e5b7ef6eb48b71d99d22c4b8 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index ba37281617a5bc4629c27e08ff199c45478e86b9..e9b9079d9a64f6a418c424142aaefd3161cb768a 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index e75c0fad513346848fddf13142b85e74acbf2be2..b875816733581ec9587d61818f9421e6fe414196 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index e6a51eb5eff03e1487f583649925a1f840e11a65..0bf9d14bf05793141244ffec4e4947959a5a29f5 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index c7fc779c4aa3cfb123ff77d5de74e600f8cf4263..071185d4f3987ba69d8764b58f87f5a932bea894 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index fb31ccbba297844b29fabefdb4f35ecc56d6c237..26858b5ca0c907491940a0b3c0935b47143fe535 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index 855750595652bf23113e4d2a4cbdf471e1316e4f..8148dcea878fe97229808dd588273b10bf53f96c 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index b20f7e099d92873881b1cc393aa9b816d85d6679..e64975deed8339e355956362f4da4063334c087f 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index 6456eba55e9dda34cddcb27694c3ff1e6cb35b83..ba2a3980dbbd9ac6ea5f48484e790f00fe5a0e63 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index 1eb7d8bede85c8dfaa90d4aad9b3b38c5683b9d2..681aa4bb677fa59994ebcb7d3d23a7c3a5fc4841 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index 1e74003c6d859e798e80433a51193fea28797f40..c3c2daa67ebb4d3aca42c842a47f7dc6ea6acf8b 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index 5f08a992c46a55e909fc219180f2c6730d9a1809..7021662e14540cbe7ea21d1af44453694aa77d9f 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index 71972348312f10435118ecf38e169725ac657507..3f1e23aa860742b1e627db8dfa087eda35d5aa39 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index 1b6c204443b1a271da9eeaecb3b82e36bc8a38fb..de29bdc710617809279d5b64af288e3f09ba9442 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index 20a92c7d491fd287833932b14ac7eef81ec597cf..6ed73d863f8d7a0c758414d51f5363f6230f3ca4 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index 29b394614e6c8494f70739c6838c97bb661a91ca..0f603baa8f61706578750bb283f778a916a9748a 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index ecdee9e6dd0f82bd65ec30e1b22c9935836e7e95..673d3d0dff9f4e72474bbe1c21613d1c9ce7f338 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index f43cfcdddf6388045f0e50be6123ca703a4474e1..d49739ebb32ec1bf0962b67bf6028bc7c503203c 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index 657b6c4f47b8e321d97f1ee0853407537ec05258..9e40907debba420e420a8856aa4fec75230d7307 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index 3aa57ea1a0c53c5c1a4e0c2a8ca429cf1d8a6efb..30679733c1685c4ee98d600bae0b376786746ae7 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index 106e11bede2e2419747f43d80e300e42c7cd232a..374711db523eecbab192648c84bb3c5222ab5b00 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index e4006965158f2531bf75a68dd66b2ac39a8d9a50..bf3c14f0628d885f35ed759e58cf2c17a37d543b 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index d87ff55739fc83c881933a8d9a133d8eee892a1a..19b00b7b78f363588991e848d6a725615a43d248 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl
index 7309d5899068bd0cc72035d93d06daefe31b93a6..58fa714f4c16810bb384b121775b35d375f8d48a 100644 (file)
@@ -1,3 +1,4 @@
+; XFAIL: *
 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \
 ; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \
 ; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl