forked from OSchip/llvm-project
parent
f40110f4d8
commit
062a2baef0
|
@ -450,7 +450,7 @@ bool AArch64BranchFixup::isBBInRange(MachineInstr *MI,
|
|||
/// displacement field.
|
||||
bool AArch64BranchFixup::fixupImmediateBr(ImmBranch &Br) {
|
||||
MachineInstr *MI = Br.MI;
|
||||
MachineBasicBlock *DestBB = 0;
|
||||
MachineBasicBlock *DestBB = nullptr;
|
||||
for (unsigned i = 0, e = MI->getNumOperands(); i != e; ++i) {
|
||||
if (MI->getOperand(i).isMBB()) {
|
||||
DestBB = MI->getOperand(i).getMBB();
|
||||
|
|
|
@ -261,7 +261,7 @@ SDNode *AArch64DAGToDAGISel::TrySelectToMoveImm(SDNode *Node) {
|
|||
} else {
|
||||
// Can't handle it in one instruction. There's scope for permitting two (or
|
||||
// more) instructions, but that'll need more thought.
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
ResNode = CurDAG->getMachineNode(MOVOpcode, dl, MOVType,
|
||||
|
@ -737,7 +737,7 @@ SDNode *AArch64DAGToDAGISel::SelectVLD(SDNode *N, bool isUpdating,
|
|||
if (isUpdating)
|
||||
ReplaceUses(SDValue(N, NumVecs + 1), SDValue(VLd, 2));
|
||||
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
SDNode *AArch64DAGToDAGISel::SelectVST(SDNode *N, bool isUpdating,
|
||||
|
@ -862,7 +862,7 @@ SDNode *AArch64DAGToDAGISel::SelectVLDDup(SDNode *N, bool isUpdating,
|
|||
ReplaceUses(SDValue(N, NumVecs), SDValue(VLdDup, 1));
|
||||
if (isUpdating)
|
||||
ReplaceUses(SDValue(N, NumVecs + 1), SDValue(VLdDup, 2));
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// We only have 128-bit vector type of load/store lane instructions.
|
||||
|
@ -956,7 +956,7 @@ SDNode *AArch64DAGToDAGISel::SelectVLDSTLane(SDNode *N, bool IsLoad,
|
|||
ReplaceUses(SDValue(N, NumVecs), SDValue(VLdLn, 1));
|
||||
if (isUpdating)
|
||||
ReplaceUses(SDValue(N, NumVecs + 1), SDValue(VLdLn, 2));
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
unsigned AArch64DAGToDAGISel::getTBLOpc(bool IsExt, bool Is64Bit,
|
||||
|
@ -1031,7 +1031,7 @@ SDNode *AArch64DAGToDAGISel::Select(SDNode *Node) {
|
|||
if (Node->isMachineOpcode()) {
|
||||
DEBUG(dbgs() << "== "; Node->dump(CurDAG); dbgs() << "\n");
|
||||
Node->setNodeId(-1);
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
switch (Node->getOpcode()) {
|
||||
|
@ -1115,7 +1115,7 @@ SDNode *AArch64DAGToDAGISel::Select(SDNode *Node) {
|
|||
TFI, CurDAG->getTargetConstant(0, PtrTy));
|
||||
}
|
||||
case ISD::Constant: {
|
||||
SDNode *ResNode = 0;
|
||||
SDNode *ResNode = nullptr;
|
||||
if (cast<ConstantSDNode>(Node)->getZExtValue() == 0) {
|
||||
// XZR and WZR are probably even better than an actual move: most of the
|
||||
// time they can be folded into another instruction with *no* cost.
|
||||
|
|
|
@ -589,7 +589,7 @@ static void getExclusiveOperation(unsigned Size, AtomicOrdering Ord,
|
|||
// would fail to figure out the register pressure correctly.
|
||||
std::pair<const TargetRegisterClass*, uint8_t>
|
||||
AArch64TargetLowering::findRepresentativeClass(MVT VT) const{
|
||||
const TargetRegisterClass *RRC = 0;
|
||||
const TargetRegisterClass *RRC = nullptr;
|
||||
uint8_t Cost = 1;
|
||||
switch (VT.SimpleTy) {
|
||||
default:
|
||||
|
@ -1185,7 +1185,7 @@ const char *AArch64TargetLowering::getTargetNodeName(unsigned Opcode) const {
|
|||
case AArch64ISD::NEON_VEXTRACT:
|
||||
return "AArch64ISD::NEON_VEXTRACT";
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2159,7 +2159,7 @@ AArch64TargetLowering::LowerBR_CC(SDValue Op, SelectionDAG &DAG) const {
|
|||
|
||||
// If softenSetCCOperands returned a scalar, we need to compare the result
|
||||
// against zero to select between true and false values.
|
||||
if (RHS.getNode() == 0) {
|
||||
if (!RHS.getNode()) {
|
||||
RHS = DAG.getConstant(0, LHS.getValueType());
|
||||
CC = ISD::SETNE;
|
||||
}
|
||||
|
@ -3019,7 +3019,7 @@ AArch64TargetLowering::LowerSETCC(SDValue Op, SelectionDAG &DAG) const {
|
|||
softenSetCCOperands(DAG, MVT::f128, LHS, RHS, CC, dl);
|
||||
|
||||
// If softenSetCCOperands returned a scalar, use it.
|
||||
if (RHS.getNode() == 0) {
|
||||
if (!RHS.getNode()) {
|
||||
assert(LHS.getValueType() == Op.getValueType() &&
|
||||
"Unexpected setcc expansion!");
|
||||
return LHS;
|
||||
|
@ -3167,7 +3167,7 @@ AArch64TargetLowering::LowerSELECT_CC(SDValue Op, SelectionDAG &DAG) const {
|
|||
|
||||
// If softenSetCCOperands returned a scalar, we need to compare the result
|
||||
// against zero to select between true and false values.
|
||||
if (RHS.getNode() == 0) {
|
||||
if (!RHS.getNode()) {
|
||||
RHS = DAG.getConstant(0, LHS.getValueType());
|
||||
CC = ISD::SETNE;
|
||||
}
|
||||
|
@ -4535,14 +4535,14 @@ bool AArch64TargetLowering::isKnownShuffleVector(SDValue Op, SelectionDAG &DAG,
|
|||
VT.getVectorElementType())
|
||||
return false;
|
||||
|
||||
if (V0.getNode() == 0) {
|
||||
if (!V0.getNode()) {
|
||||
V0 = Elt.getOperand(0);
|
||||
V0NumElts = V0.getValueType().getVectorNumElements();
|
||||
}
|
||||
if (Elt.getOperand(0) == V0) {
|
||||
Mask[i] = (cast<ConstantSDNode>(Elt->getOperand(1))->getZExtValue());
|
||||
continue;
|
||||
} else if (V1.getNode() == 0) {
|
||||
} else if (!V1.getNode()) {
|
||||
V1 = Elt.getOperand(0);
|
||||
}
|
||||
if (Elt.getOperand(0) == V1) {
|
||||
|
@ -5243,7 +5243,7 @@ AArch64TargetLowering::LowerAsmOperandForConstraint(SDValue Op,
|
|||
std::string &Constraint,
|
||||
std::vector<SDValue> &Ops,
|
||||
SelectionDAG &DAG) const {
|
||||
SDValue Result(0, 0);
|
||||
SDValue Result;
|
||||
|
||||
// Only length 1 constraints are C_Other.
|
||||
if (Constraint.size() != 1) return;
|
||||
|
|
|
@ -391,10 +391,10 @@ AArch64InstrInfo::InsertBranch(MachineBasicBlock &MBB, MachineBasicBlock *TBB,
|
|||
MachineBasicBlock *FBB,
|
||||
const SmallVectorImpl<MachineOperand> &Cond,
|
||||
DebugLoc DL) const {
|
||||
if (FBB == 0 && Cond.empty()) {
|
||||
if (!FBB && Cond.empty()) {
|
||||
BuildMI(&MBB, DL, get(AArch64::Bimm)).addMBB(TBB);
|
||||
return 1;
|
||||
} else if (FBB == 0) {
|
||||
} else if (!FBB) {
|
||||
MachineInstrBuilder MIB = BuildMI(&MBB, DL, get(Cond[0].getImm()));
|
||||
for (int i = 1, e = Cond.size(); i != e; ++i)
|
||||
MIB.addOperand(Cond[i]);
|
||||
|
|
|
@ -30,7 +30,7 @@ using namespace llvm;
|
|||
MCOperand
|
||||
AArch64AsmPrinter::lowerSymbolOperand(const MachineOperand &MO,
|
||||
const MCSymbol *Sym) const {
|
||||
const MCExpr *Expr = 0;
|
||||
const MCExpr *Expr = nullptr;
|
||||
|
||||
Expr = MCSymbolRefExpr::Create(Sym, MCSymbolRefExpr::VK_None, OutContext);
|
||||
|
||||
|
|
|
@ -38,7 +38,7 @@ class AArch64TTI final : public ImmutablePass, public TargetTransformInfo {
|
|||
const AArch64TargetLowering *TLI;
|
||||
|
||||
public:
|
||||
AArch64TTI() : ImmutablePass(ID), ST(0), TLI(0) {
|
||||
AArch64TTI() : ImmutablePass(ID), ST(nullptr), TLI(nullptr) {
|
||||
llvm_unreachable("This pass cannot be directly constructed");
|
||||
}
|
||||
|
||||
|
|
|
@ -1313,7 +1313,7 @@ AArch64AsmParser::ParseOperand(SmallVectorImpl<MCParsedAsmOperand*> &Operands,
|
|||
case AsmToken::Colon: {
|
||||
SMLoc StartLoc = Parser.getTok().getLoc();
|
||||
SMLoc EndLoc;
|
||||
const MCExpr *ImmVal = 0;
|
||||
const MCExpr *ImmVal = nullptr;
|
||||
|
||||
if (ParseImmediate(ImmVal) != MatchOperand_Success)
|
||||
return MatchOperand_ParseFail;
|
||||
|
@ -1325,7 +1325,7 @@ AArch64AsmParser::ParseOperand(SmallVectorImpl<MCParsedAsmOperand*> &Operands,
|
|||
case AsmToken::Hash: { // Immediates
|
||||
SMLoc StartLoc = Parser.getTok().getLoc();
|
||||
SMLoc EndLoc;
|
||||
const MCExpr *ImmVal = 0;
|
||||
const MCExpr *ImmVal = nullptr;
|
||||
Parser.Lex();
|
||||
|
||||
if (ParseImmediate(ImmVal) != MatchOperand_Success)
|
||||
|
|
|
@ -63,7 +63,7 @@ static MCAsmInfo *createAArch64MCAsmInfo(const MCRegisterInfo &MRI,
|
|||
|
||||
MCAsmInfo *MAI = new AArch64ELFMCAsmInfo(TT);
|
||||
unsigned Reg = MRI.getDwarfRegNum(AArch64::XSP, true);
|
||||
MCCFIInstruction Inst = MCCFIInstruction::createDefCfa(0, Reg, 0);
|
||||
MCCFIInstruction Inst = MCCFIInstruction::createDefCfa(nullptr, Reg, 0);
|
||||
MAI->addInitialFrameState(Inst);
|
||||
|
||||
return MAI;
|
||||
|
@ -114,7 +114,7 @@ static MCInstPrinter *createAArch64MCInstPrinter(const Target &T,
|
|||
const MCSubtargetInfo &STI) {
|
||||
if (SyntaxVariant == 0)
|
||||
return new AArch64InstPrinter(MAI, MII, MRI, STI);
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
namespace {
|
||||
|
|
|
@ -260,7 +260,7 @@ unsigned A15SDOptimizer::optimizeSDPattern(MachineInstr *MI) {
|
|||
if (DPRMI && SPRMI) {
|
||||
// See if the first operand of this insert_subreg is IMPLICIT_DEF
|
||||
MachineInstr *ECDef = elideCopies(DPRMI);
|
||||
if (ECDef != 0 && ECDef->isImplicitDef()) {
|
||||
if (ECDef && ECDef->isImplicitDef()) {
|
||||
// Another corner case - if we're inserting something that is purely
|
||||
// a subreg copy of a DPR, just use that DPR.
|
||||
|
||||
|
@ -349,10 +349,10 @@ MachineInstr *A15SDOptimizer::elideCopies(MachineInstr *MI) {
|
|||
if (!MI->isFullCopy())
|
||||
return MI;
|
||||
if (!TRI->isVirtualRegister(MI->getOperand(1).getReg()))
|
||||
return NULL;
|
||||
return nullptr;
|
||||
MachineInstr *Def = MRI->getVRegDef(MI->getOperand(1).getReg());
|
||||
if (!Def)
|
||||
return NULL;
|
||||
return nullptr;
|
||||
return elideCopies(Def);
|
||||
}
|
||||
|
||||
|
|
|
@ -384,7 +384,7 @@ void ARMAsmPrinter::emitInlineAsmEnd(const MCSubtargetInfo &StartInfo,
|
|||
// If either end mode is unknown (EndInfo == NULL) or different than
|
||||
// the start mode, then restore the start mode.
|
||||
const bool WasThumb = isThumb(StartInfo);
|
||||
if (EndInfo == NULL || WasThumb != isThumb(*EndInfo)) {
|
||||
if (!EndInfo || WasThumb != isThumb(*EndInfo)) {
|
||||
OutStreamer.EmitAssemblerFlag(WasThumb ? MCAF_Code16 : MCAF_Code32);
|
||||
}
|
||||
}
|
||||
|
@ -724,7 +724,7 @@ MCSymbol *ARMAsmPrinter::GetARMGVSymbol(const GlobalValue *GV,
|
|||
MachineModuleInfoImpl::StubValueTy &StubSym =
|
||||
GV->hasHiddenVisibility() ? MMIMachO.getHiddenGVStubEntry(MCSym) :
|
||||
MMIMachO.getGVStubEntry(MCSym);
|
||||
if (StubSym.getPointer() == 0)
|
||||
if (!StubSym.getPointer())
|
||||
StubSym = MachineModuleInfoImpl::
|
||||
StubValueTy(getSymbol(GV), !GV->hasInternalLinkage());
|
||||
return MCSym;
|
||||
|
|
|
@ -127,14 +127,14 @@ ARMBaseInstrInfo::convertToThreeAddress(MachineFunction::iterator &MFI,
|
|||
// FIXME: Thumb2 support.
|
||||
|
||||
if (!EnableARM3Addr)
|
||||
return NULL;
|
||||
return nullptr;
|
||||
|
||||
MachineInstr *MI = MBBI;
|
||||
MachineFunction &MF = *MI->getParent()->getParent();
|
||||
uint64_t TSFlags = MI->getDesc().TSFlags;
|
||||
bool isPre = false;
|
||||
switch ((TSFlags & ARMII::IndexModeMask) >> ARMII::IndexModeShift) {
|
||||
default: return NULL;
|
||||
default: return nullptr;
|
||||
case ARMII::IndexModePre:
|
||||
isPre = true;
|
||||
break;
|
||||
|
@ -146,10 +146,10 @@ ARMBaseInstrInfo::convertToThreeAddress(MachineFunction::iterator &MFI,
|
|||
// operation.
|
||||
unsigned MemOpc = getUnindexedOpcode(MI->getOpcode());
|
||||
if (MemOpc == 0)
|
||||
return NULL;
|
||||
return nullptr;
|
||||
|
||||
MachineInstr *UpdateMI = NULL;
|
||||
MachineInstr *MemMI = NULL;
|
||||
MachineInstr *UpdateMI = nullptr;
|
||||
MachineInstr *MemMI = nullptr;
|
||||
unsigned AddrMode = (TSFlags & ARMII::AddrModeMask);
|
||||
const MCInstrDesc &MCID = MI->getDesc();
|
||||
unsigned NumOps = MCID.getNumOperands();
|
||||
|
@ -171,7 +171,7 @@ ARMBaseInstrInfo::convertToThreeAddress(MachineFunction::iterator &MFI,
|
|||
if (ARM_AM::getSOImmVal(Amt) == -1)
|
||||
// Can't encode it in a so_imm operand. This transformation will
|
||||
// add more than 1 instruction. Abandon!
|
||||
return NULL;
|
||||
return nullptr;
|
||||
UpdateMI = BuildMI(MF, MI->getDebugLoc(),
|
||||
get(isSub ? ARM::SUBri : ARM::ADDri), WBReg)
|
||||
.addReg(BaseReg).addImm(Amt)
|
||||
|
@ -275,8 +275,8 @@ ARMBaseInstrInfo::AnalyzeBranch(MachineBasicBlock &MBB,MachineBasicBlock *&TBB,
|
|||
MachineBasicBlock *&FBB,
|
||||
SmallVectorImpl<MachineOperand> &Cond,
|
||||
bool AllowModify) const {
|
||||
TBB = 0;
|
||||
FBB = 0;
|
||||
TBB = nullptr;
|
||||
FBB = nullptr;
|
||||
|
||||
MachineBasicBlock::iterator I = MBB.end();
|
||||
if (I == MBB.begin())
|
||||
|
@ -333,7 +333,7 @@ ARMBaseInstrInfo::AnalyzeBranch(MachineBasicBlock &MBB,MachineBasicBlock *&TBB,
|
|||
I->isReturn())) {
|
||||
// Forget any previous condition branch information - it no longer applies.
|
||||
Cond.clear();
|
||||
FBB = 0;
|
||||
FBB = nullptr;
|
||||
|
||||
// If we can modify the function, delete everything below this
|
||||
// unconditional branch.
|
||||
|
@ -407,7 +407,7 @@ ARMBaseInstrInfo::InsertBranch(MachineBasicBlock &MBB, MachineBasicBlock *TBB,
|
|||
assert((Cond.size() == 2 || Cond.size() == 0) &&
|
||||
"ARM branch conditions have two components!");
|
||||
|
||||
if (FBB == 0) {
|
||||
if (!FBB) {
|
||||
if (Cond.empty()) { // Unconditional branch?
|
||||
if (isThumb)
|
||||
BuildMI(&MBB, DL, get(BOpc)).addMBB(TBB).addImm(ARMCC::AL).addReg(0);
|
||||
|
@ -1252,7 +1252,7 @@ static unsigned duplicateCPV(MachineFunction &MF, unsigned &CPI) {
|
|||
static_cast<ARMConstantPoolValue*>(MCPE.Val.MachineCPVal);
|
||||
|
||||
unsigned PCLabelId = AFI->createPICLabelUId();
|
||||
ARMConstantPoolValue *NewCPV = 0;
|
||||
ARMConstantPoolValue *NewCPV = nullptr;
|
||||
|
||||
// FIXME: The below assumes PIC relocation model and that the function
|
||||
// is Thumb mode (t1 or t2). PCAdjustment would be 8 for ARM mode PIC, and
|
||||
|
@ -1663,10 +1663,10 @@ ARMBaseInstrInfo::commuteInstruction(MachineInstr *MI, bool NewMI) const {
|
|||
ARMCC::CondCodes CC = getInstrPredicate(MI, PredReg);
|
||||
// MOVCC AL can't be inverted. Shouldn't happen.
|
||||
if (CC == ARMCC::AL || PredReg != ARM::CPSR)
|
||||
return NULL;
|
||||
return nullptr;
|
||||
MI = TargetInstrInfo::commuteInstruction(MI, NewMI);
|
||||
if (!MI)
|
||||
return NULL;
|
||||
return nullptr;
|
||||
// After swapping the MOVCC operands, also invert the condition.
|
||||
MI->getOperand(MI->findFirstPredOperandIdx())
|
||||
.setImm(ARMCC::getOppositeCondition(CC));
|
||||
|
@ -1682,35 +1682,36 @@ static MachineInstr *canFoldIntoMOVCC(unsigned Reg,
|
|||
const MachineRegisterInfo &MRI,
|
||||
const TargetInstrInfo *TII) {
|
||||
if (!TargetRegisterInfo::isVirtualRegister(Reg))
|
||||
return 0;
|
||||
return nullptr;
|
||||
if (!MRI.hasOneNonDBGUse(Reg))
|
||||
return 0;
|
||||
return nullptr;
|
||||
MachineInstr *MI = MRI.getVRegDef(Reg);
|
||||
if (!MI)
|
||||
return 0;
|
||||
return nullptr;
|
||||
// MI is folded into the MOVCC by predicating it.
|
||||
if (!MI->isPredicable())
|
||||
return 0;
|
||||
return nullptr;
|
||||
// Check if MI has any non-dead defs or physreg uses. This also detects
|
||||
// predicated instructions which will be reading CPSR.
|
||||
for (unsigned i = 1, e = MI->getNumOperands(); i != e; ++i) {
|
||||
const MachineOperand &MO = MI->getOperand(i);
|
||||
// Reject frame index operands, PEI can't handle the predicated pseudos.
|
||||
if (MO.isFI() || MO.isCPI() || MO.isJTI())
|
||||
return 0;
|
||||
return nullptr;
|
||||
if (!MO.isReg())
|
||||
continue;
|
||||
// MI can't have any tied operands, that would conflict with predication.
|
||||
if (MO.isTied())
|
||||
return 0;
|
||||
return nullptr;
|
||||
if (TargetRegisterInfo::isPhysicalRegister(MO.getReg()))
|
||||
return 0;
|
||||
return nullptr;
|
||||
if (MO.isDef() && !MO.isDead())
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
bool DontMoveAcrossStores = true;
|
||||
if (!MI->isSafeToMove(TII, /* AliasAnalysis = */ 0, DontMoveAcrossStores))
|
||||
return 0;
|
||||
if (!MI->isSafeToMove(TII, /* AliasAnalysis = */ nullptr,
|
||||
DontMoveAcrossStores))
|
||||
return nullptr;
|
||||
return MI;
|
||||
}
|
||||
|
||||
|
@ -1745,14 +1746,14 @@ MachineInstr *ARMBaseInstrInfo::optimizeSelect(MachineInstr *MI,
|
|||
if (!DefMI)
|
||||
DefMI = canFoldIntoMOVCC(MI->getOperand(1).getReg(), MRI, this);
|
||||
if (!DefMI)
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
// Find new register class to use.
|
||||
MachineOperand FalseReg = MI->getOperand(Invert ? 2 : 1);
|
||||
unsigned DestReg = MI->getOperand(0).getReg();
|
||||
const TargetRegisterClass *PreviousClass = MRI.getRegClass(FalseReg.getReg());
|
||||
if (!MRI.constrainRegClass(DestReg, PreviousClass))
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
// Create a new predicated version of DefMI.
|
||||
// Rfalse is the first use.
|
||||
|
@ -2258,7 +2259,7 @@ optimizeCompareInstr(MachineInstr *CmpInstr, unsigned SrcReg, unsigned SrcReg2,
|
|||
// Masked compares sometimes use the same register as the corresponding 'and'.
|
||||
if (CmpMask != ~0) {
|
||||
if (!isSuitableForMask(MI, SrcReg, CmpMask, false) || isPredicated(MI)) {
|
||||
MI = 0;
|
||||
MI = nullptr;
|
||||
for (MachineRegisterInfo::use_instr_iterator
|
||||
UI = MRI->use_instr_begin(SrcReg), UE = MRI->use_instr_end();
|
||||
UI != UE; ++UI) {
|
||||
|
@ -2285,17 +2286,17 @@ optimizeCompareInstr(MachineInstr *CmpInstr, unsigned SrcReg, unsigned SrcReg2,
|
|||
// One is MI, the other is a SUB instruction.
|
||||
// For CMPrr(r1,r2), we are looking for SUB(r1,r2) or SUB(r2,r1).
|
||||
// For CMPri(r1, CmpValue), we are looking for SUBri(r1, CmpValue).
|
||||
MachineInstr *Sub = NULL;
|
||||
MachineInstr *Sub = nullptr;
|
||||
if (SrcReg2 != 0)
|
||||
// MI is not a candidate for CMPrr.
|
||||
MI = NULL;
|
||||
MI = nullptr;
|
||||
else if (MI->getParent() != CmpInstr->getParent() || CmpValue != 0) {
|
||||
// Conservatively refuse to convert an instruction which isn't in the same
|
||||
// BB as the comparison.
|
||||
// For CMPri, we need to check Sub, thus we can't return here.
|
||||
if (CmpInstr->getOpcode() == ARM::CMPri ||
|
||||
CmpInstr->getOpcode() == ARM::t2CMPri)
|
||||
MI = NULL;
|
||||
MI = nullptr;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
@ -3299,7 +3300,7 @@ static const MachineInstr *getBundledUseMI(const TargetRegisterInfo *TRI,
|
|||
|
||||
if (Idx == -1) {
|
||||
Dist = 0;
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
UseIdx = Idx;
|
||||
|
|
|
@ -107,7 +107,7 @@ ARMBaseRegisterInfo::getThisReturnPreservedMask(CallingConv::ID CC) const {
|
|||
// should return NULL
|
||||
if (CC == CallingConv::GHC)
|
||||
// This is academic becase all GHC calls are (supposed to be) tail calls
|
||||
return NULL;
|
||||
return nullptr;
|
||||
return (STI.isTargetIOS() && !STI.isAAPCS_ABI())
|
||||
? CSR_iOS_ThisReturn_RegMask : CSR_AAPCS_ThisReturn_RegMask;
|
||||
}
|
||||
|
@ -173,7 +173,7 @@ ARMBaseRegisterInfo::getPointerRegClass(const MachineFunction &MF, unsigned Kind
|
|||
const TargetRegisterClass *
|
||||
ARMBaseRegisterInfo::getCrossCopyRegClass(const TargetRegisterClass *RC) const {
|
||||
if (RC == &ARM::CCRRegClass)
|
||||
return 0; // Can't copy CCR registers.
|
||||
return nullptr; // Can't copy CCR registers.
|
||||
return RC;
|
||||
}
|
||||
|
||||
|
|
|
@ -66,10 +66,10 @@ namespace {
|
|||
static char ID;
|
||||
public:
|
||||
ARMCodeEmitter(TargetMachine &tm, JITCodeEmitter &mce)
|
||||
: MachineFunctionPass(ID), JTI(0),
|
||||
: MachineFunctionPass(ID), JTI(nullptr),
|
||||
II((const ARMBaseInstrInfo *)tm.getInstrInfo()),
|
||||
TD(tm.getDataLayout()), TM(tm),
|
||||
MCE(mce), MCPEs(0), MJTEs(0),
|
||||
MCE(mce), MCPEs(nullptr), MJTEs(nullptr),
|
||||
IsPIC(TM.getRelocationModel() == Reloc::PIC_), IsThumb(false) {}
|
||||
|
||||
/// getBinaryCodeForInstr - This function, generated by the
|
||||
|
@ -374,7 +374,7 @@ bool ARMCodeEmitter::runOnMachineFunction(MachineFunction &MF) {
|
|||
|
||||
Subtarget = &TM.getSubtarget<ARMSubtarget>();
|
||||
MCPEs = &MF.getConstantPool()->getConstants();
|
||||
MJTEs = 0;
|
||||
MJTEs = nullptr;
|
||||
if (MF.getJumpTableInfo()) MJTEs = &MF.getJumpTableInfo()->getJumpTables();
|
||||
IsPIC = TM.getRelocationModel() == Reloc::PIC_;
|
||||
IsThumb = MF.getInfo<ARMFunctionInfo>()->isThumbFunction();
|
||||
|
|
|
@ -594,7 +594,7 @@ ARMConstantIslands::CPEntry
|
|||
if (CPEs[i].CPEMI == CPEMI)
|
||||
return &CPEs[i];
|
||||
}
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
/// getCPELogAlign - Returns the required alignment of the constant pool entry
|
||||
|
@ -1103,7 +1103,7 @@ bool ARMConstantIslands::decrementCPEReferenceCount(unsigned CPI,
|
|||
assert(CPE && "Unexpected!");
|
||||
if (--CPE->RefCount == 0) {
|
||||
removeDeadCPEMI(CPEMI);
|
||||
CPE->CPEMI = NULL;
|
||||
CPE->CPEMI = nullptr;
|
||||
--NumCPEs;
|
||||
return true;
|
||||
}
|
||||
|
@ -1136,7 +1136,7 @@ int ARMConstantIslands::findInRangeCPEntry(CPUser& U, unsigned UserOffset)
|
|||
if (CPEs[i].CPEMI == CPEMI)
|
||||
continue;
|
||||
// Removing CPEs can leave empty entries, skip
|
||||
if (CPEs[i].CPEMI == NULL)
|
||||
if (CPEs[i].CPEMI == nullptr)
|
||||
continue;
|
||||
if (isCPEntryInRange(UserMI, UserOffset, CPEs[i].CPEMI, U.getMaxDisp(),
|
||||
U.NegOk)) {
|
||||
|
@ -1318,7 +1318,7 @@ void ARMConstantIslands::createNewWater(unsigned CPUserIndex,
|
|||
++MI;
|
||||
unsigned CPUIndex = CPUserIndex+1;
|
||||
unsigned NumCPUsers = CPUsers.size();
|
||||
MachineInstr *LastIT = 0;
|
||||
MachineInstr *LastIT = nullptr;
|
||||
for (unsigned Offset = UserOffset+TII->GetInstSizeInBytes(UserMI);
|
||||
Offset < BaseInsertOffset;
|
||||
Offset += TII->GetInstSizeInBytes(MI), MI = std::next(MI)) {
|
||||
|
@ -1492,7 +1492,7 @@ bool ARMConstantIslands::removeUnusedCPEntries() {
|
|||
for (unsigned j = 0, ee = CPEs.size(); j != ee; ++j) {
|
||||
if (CPEs[j].RefCount == 0 && CPEs[j].CPEMI) {
|
||||
removeDeadCPEMI(CPEs[j].CPEMI);
|
||||
CPEs[j].CPEMI = NULL;
|
||||
CPEs[j].CPEMI = nullptr;
|
||||
MadeChange = true;
|
||||
}
|
||||
}
|
||||
|
@ -1845,7 +1845,7 @@ bool ARMConstantIslands::optimizeThumb2JumpTables() {
|
|||
// FIXME: After the tables are shrunk, can we get rid some of the
|
||||
// constantpool tables?
|
||||
MachineJumpTableInfo *MJTI = MF->getJumpTableInfo();
|
||||
if (MJTI == 0) return false;
|
||||
if (!MJTI) return false;
|
||||
|
||||
const std::vector<MachineJumpTableEntry> &JT = MJTI->getJumpTables();
|
||||
for (unsigned i = 0, e = T2JumpTables.size(); i != e; ++i) {
|
||||
|
@ -1971,7 +1971,7 @@ bool ARMConstantIslands::reorderThumb2JumpTables() {
|
|||
bool MadeChange = false;
|
||||
|
||||
MachineJumpTableInfo *MJTI = MF->getJumpTableInfo();
|
||||
if (MJTI == 0) return false;
|
||||
if (!MJTI) return false;
|
||||
|
||||
const std::vector<MachineJumpTableEntry> &JT = MJTI->getJumpTables();
|
||||
for (unsigned i = 0, e = T2JumpTables.size(); i != e; ++i) {
|
||||
|
@ -2013,7 +2013,7 @@ adjustJTTargetBlockForward(MachineBasicBlock *BB, MachineBasicBlock *JTBB) {
|
|||
// try to move it; otherwise, create a new block following the jump
|
||||
// table that branches back to the actual target. This is a very simple
|
||||
// heuristic. FIXME: We can definitely improve it.
|
||||
MachineBasicBlock *TBB = 0, *FBB = 0;
|
||||
MachineBasicBlock *TBB = nullptr, *FBB = nullptr;
|
||||
SmallVector<MachineOperand, 4> Cond;
|
||||
SmallVector<MachineOperand, 4> CondPrior;
|
||||
MachineFunction::iterator BBi = BB;
|
||||
|
@ -2033,7 +2033,7 @@ adjustJTTargetBlockForward(MachineBasicBlock *BB, MachineBasicBlock *JTBB) {
|
|||
// Update numbering to account for the block being moved.
|
||||
MF->RenumberBlocks();
|
||||
++NumJTMoved;
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// Create a new MBB for the code after the jump BB.
|
||||
|
|
|
@ -346,7 +346,7 @@ static const NEONLdStTableEntry *LookupNEONLdSt(unsigned Opcode) {
|
|||
std::lower_bound(NEONLdStTable, NEONLdStTable + NumEntries, Opcode);
|
||||
if (I != NEONLdStTable + NumEntries && I->PseudoOpc == Opcode)
|
||||
return I;
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
/// GetDSubRegs - Get 4 D subregisters of a Q, QQ, or QQQQ register,
|
||||
|
|
|
@ -750,7 +750,7 @@ bool ARMFastISel::isLoadTypeLegal(Type *Ty, MVT &VT) {
|
|||
// Computes the address to get to an object.
|
||||
bool ARMFastISel::ARMComputeAddress(const Value *Obj, Address &Addr) {
|
||||
// Some boilerplate from the X86 FastISel.
|
||||
const User *U = NULL;
|
||||
const User *U = nullptr;
|
||||
unsigned Opcode = Instruction::UserOp1;
|
||||
if (const Instruction *I = dyn_cast<Instruction>(Obj)) {
|
||||
// Don't walk into other basic blocks unless the object is an alloca from
|
||||
|
@ -2163,7 +2163,8 @@ unsigned ARMFastISel::getLibcallReg(const Twine &Name) {
|
|||
if (!LCREVT.isSimple()) return 0;
|
||||
|
||||
GlobalValue *GV = new GlobalVariable(M, Type::getInt32Ty(*Context), false,
|
||||
GlobalValue::ExternalLinkage, 0, Name);
|
||||
GlobalValue::ExternalLinkage, nullptr,
|
||||
Name);
|
||||
assert(GV->getType() == GVTy && "We miscomputed the type for the global!");
|
||||
return ARMMaterializeGV(GV, LCREVT.getSimpleVT());
|
||||
}
|
||||
|
@ -2267,7 +2268,7 @@ bool ARMFastISel::ARMEmitLibcall(const Instruction *I, RTLIB::Libcall Call) {
|
|||
}
|
||||
|
||||
bool ARMFastISel::SelectCall(const Instruction *I,
|
||||
const char *IntrMemName = 0) {
|
||||
const char *IntrMemName = nullptr) {
|
||||
const CallInst *CI = cast<CallInst>(I);
|
||||
const Value *Callee = CI->getCalledValue();
|
||||
|
||||
|
@ -3073,6 +3074,6 @@ namespace llvm {
|
|||
TM.Options.NoFramePointerElim = true;
|
||||
return new ARMFastISel(funcInfo, libInfo);
|
||||
}
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -77,7 +77,7 @@ ARMHazardRecognizer::getHazardType(SUnit *SU, int Stalls) {
|
|||
}
|
||||
|
||||
void ARMHazardRecognizer::Reset() {
|
||||
LastMI = 0;
|
||||
LastMI = nullptr;
|
||||
FpMLxStalls = 0;
|
||||
ScoreboardHazardRecognizer::Reset();
|
||||
}
|
||||
|
@ -95,7 +95,7 @@ void ARMHazardRecognizer::EmitInstruction(SUnit *SU) {
|
|||
void ARMHazardRecognizer::AdvanceCycle() {
|
||||
if (FpMLxStalls && --FpMLxStalls == 0)
|
||||
// Stalled for 4 cycles but still can't schedule any other instructions.
|
||||
LastMI = 0;
|
||||
LastMI = nullptr;
|
||||
ScoreboardHazardRecognizer::AdvanceCycle();
|
||||
}
|
||||
|
||||
|
|
|
@ -1441,7 +1441,7 @@ SDNode *ARMDAGToDAGISel::SelectARMIndexedLoad(SDNode *N) {
|
|||
LoadSDNode *LD = cast<LoadSDNode>(N);
|
||||
ISD::MemIndexedMode AM = LD->getAddressingMode();
|
||||
if (AM == ISD::UNINDEXED)
|
||||
return NULL;
|
||||
return nullptr;
|
||||
|
||||
EVT LoadedVT = LD->getMemoryVT();
|
||||
SDValue Offset, AMOpc;
|
||||
|
@ -1507,14 +1507,14 @@ SDNode *ARMDAGToDAGISel::SelectARMIndexedLoad(SDNode *N) {
|
|||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
SDNode *ARMDAGToDAGISel::SelectT2IndexedLoad(SDNode *N) {
|
||||
LoadSDNode *LD = cast<LoadSDNode>(N);
|
||||
ISD::MemIndexedMode AM = LD->getAddressingMode();
|
||||
if (AM == ISD::UNINDEXED)
|
||||
return NULL;
|
||||
return nullptr;
|
||||
|
||||
EVT LoadedVT = LD->getMemoryVT();
|
||||
bool isSExtLd = LD->getExtensionType() == ISD::SEXTLOAD;
|
||||
|
@ -1541,7 +1541,7 @@ SDNode *ARMDAGToDAGISel::SelectT2IndexedLoad(SDNode *N) {
|
|||
Opcode = isPre ? ARM::t2LDRB_PRE : ARM::t2LDRB_POST;
|
||||
break;
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
Match = true;
|
||||
}
|
||||
|
@ -1555,7 +1555,7 @@ SDNode *ARMDAGToDAGISel::SelectT2IndexedLoad(SDNode *N) {
|
|||
MVT::Other, Ops);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
/// \brief Form a GPRPair pseudo register from a pair of GPR regs.
|
||||
|
@ -1777,7 +1777,7 @@ SDNode *ARMDAGToDAGISel::SelectVLD(SDNode *N, bool isUpdating, unsigned NumVecs,
|
|||
SDValue MemAddr, Align;
|
||||
unsigned AddrOpIdx = isUpdating ? 1 : 2;
|
||||
if (!SelectAddrMode6(N, N->getOperand(AddrOpIdx), MemAddr, Align))
|
||||
return NULL;
|
||||
return nullptr;
|
||||
|
||||
SDValue Chain = N->getOperand(0);
|
||||
EVT VT = N->getValueType(0);
|
||||
|
@ -1896,7 +1896,7 @@ SDNode *ARMDAGToDAGISel::SelectVLD(SDNode *N, bool isUpdating, unsigned NumVecs,
|
|||
ReplaceUses(SDValue(N, NumVecs), SDValue(VLd, 1));
|
||||
if (isUpdating)
|
||||
ReplaceUses(SDValue(N, NumVecs + 1), SDValue(VLd, 2));
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
SDNode *ARMDAGToDAGISel::SelectVST(SDNode *N, bool isUpdating, unsigned NumVecs,
|
||||
|
@ -1910,7 +1910,7 @@ SDNode *ARMDAGToDAGISel::SelectVST(SDNode *N, bool isUpdating, unsigned NumVecs,
|
|||
unsigned AddrOpIdx = isUpdating ? 1 : 2;
|
||||
unsigned Vec0Idx = 3; // AddrOpIdx + (isUpdating ? 2 : 1)
|
||||
if (!SelectAddrMode6(N, N->getOperand(AddrOpIdx), MemAddr, Align))
|
||||
return NULL;
|
||||
return nullptr;
|
||||
|
||||
MachineSDNode::mmo_iterator MemOp = MF->allocateMemRefsArray(1);
|
||||
MemOp[0] = cast<MemIntrinsicSDNode>(N)->getMemOperand();
|
||||
|
@ -2056,7 +2056,7 @@ SDNode *ARMDAGToDAGISel::SelectVLDSTLane(SDNode *N, bool IsLoad,
|
|||
unsigned AddrOpIdx = isUpdating ? 1 : 2;
|
||||
unsigned Vec0Idx = 3; // AddrOpIdx + (isUpdating ? 2 : 1)
|
||||
if (!SelectAddrMode6(N, N->getOperand(AddrOpIdx), MemAddr, Align))
|
||||
return NULL;
|
||||
return nullptr;
|
||||
|
||||
MachineSDNode::mmo_iterator MemOp = MF->allocateMemRefsArray(1);
|
||||
MemOp[0] = cast<MemIntrinsicSDNode>(N)->getMemOperand();
|
||||
|
@ -2161,7 +2161,7 @@ SDNode *ARMDAGToDAGISel::SelectVLDSTLane(SDNode *N, bool IsLoad,
|
|||
ReplaceUses(SDValue(N, NumVecs), SDValue(VLdLn, 1));
|
||||
if (isUpdating)
|
||||
ReplaceUses(SDValue(N, NumVecs + 1), SDValue(VLdLn, 2));
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
SDNode *ARMDAGToDAGISel::SelectVLDDup(SDNode *N, bool isUpdating,
|
||||
|
@ -2172,7 +2172,7 @@ SDNode *ARMDAGToDAGISel::SelectVLDDup(SDNode *N, bool isUpdating,
|
|||
|
||||
SDValue MemAddr, Align;
|
||||
if (!SelectAddrMode6(N, N->getOperand(1), MemAddr, Align))
|
||||
return NULL;
|
||||
return nullptr;
|
||||
|
||||
MachineSDNode::mmo_iterator MemOp = MF->allocateMemRefsArray(1);
|
||||
MemOp[0] = cast<MemIntrinsicSDNode>(N)->getMemOperand();
|
||||
|
@ -2244,7 +2244,7 @@ SDNode *ARMDAGToDAGISel::SelectVLDDup(SDNode *N, bool isUpdating,
|
|||
ReplaceUses(SDValue(N, NumVecs), SDValue(VLdDup, 1));
|
||||
if (isUpdating)
|
||||
ReplaceUses(SDValue(N, NumVecs + 1), SDValue(VLdDup, 2));
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
SDNode *ARMDAGToDAGISel::SelectVTBL(SDNode *N, bool IsExt, unsigned NumVecs,
|
||||
|
@ -2283,7 +2283,7 @@ SDNode *ARMDAGToDAGISel::SelectVTBL(SDNode *N, bool IsExt, unsigned NumVecs,
|
|||
SDNode *ARMDAGToDAGISel::SelectV6T2BitfieldExtractOp(SDNode *N,
|
||||
bool isSigned) {
|
||||
if (!Subtarget->hasV6T2Ops())
|
||||
return NULL;
|
||||
return nullptr;
|
||||
|
||||
unsigned Opc = isSigned
|
||||
? (Subtarget->isThumb() ? ARM::t2SBFX : ARM::SBFX)
|
||||
|
@ -2296,7 +2296,7 @@ SDNode *ARMDAGToDAGISel::SelectV6T2BitfieldExtractOp(SDNode *N,
|
|||
|
||||
// The immediate is a mask of the low bits iff imm & (imm+1) == 0
|
||||
if (And_imm & (And_imm + 1))
|
||||
return NULL;
|
||||
return nullptr;
|
||||
|
||||
unsigned Srl_imm = 0;
|
||||
if (isOpcWithIntImmediate(N->getOperand(0).getNode(), ISD::SRL,
|
||||
|
@ -2336,7 +2336,7 @@ SDNode *ARMDAGToDAGISel::SelectV6T2BitfieldExtractOp(SDNode *N,
|
|||
return CurDAG->SelectNodeTo(N, Opc, MVT::i32, Ops, 5);
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// Otherwise, we're looking for a shift of a shift
|
||||
|
@ -2350,7 +2350,7 @@ SDNode *ARMDAGToDAGISel::SelectV6T2BitfieldExtractOp(SDNode *N,
|
|||
unsigned Width = 32 - Srl_imm - 1;
|
||||
int LSB = Srl_imm - Shl_imm;
|
||||
if (LSB < 0)
|
||||
return NULL;
|
||||
return nullptr;
|
||||
SDValue Reg0 = CurDAG->getRegister(0, MVT::i32);
|
||||
SDValue Ops[] = { N->getOperand(0).getOperand(0),
|
||||
CurDAG->getTargetConstant(LSB, MVT::i32),
|
||||
|
@ -2359,7 +2359,7 @@ SDNode *ARMDAGToDAGISel::SelectV6T2BitfieldExtractOp(SDNode *N,
|
|||
return CurDAG->SelectNodeTo(N, Opc, MVT::i32, Ops, 5);
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
/// Target-specific DAG combining for ISD::XOR.
|
||||
|
@ -2378,10 +2378,10 @@ SDNode *ARMDAGToDAGISel::SelectABSOp(SDNode *N){
|
|||
EVT VT = N->getValueType(0);
|
||||
|
||||
if (Subtarget->isThumb1Only())
|
||||
return NULL;
|
||||
return nullptr;
|
||||
|
||||
if (XORSrc0.getOpcode() != ISD::ADD || XORSrc1.getOpcode() != ISD::SRA)
|
||||
return NULL;
|
||||
return nullptr;
|
||||
|
||||
SDValue ADDSrc0 = XORSrc0.getOperand(0);
|
||||
SDValue ADDSrc1 = XORSrc0.getOperand(1);
|
||||
|
@ -2392,13 +2392,13 @@ SDNode *ARMDAGToDAGISel::SelectABSOp(SDNode *N){
|
|||
unsigned Size = XType.getSizeInBits() - 1;
|
||||
|
||||
if (ADDSrc1 == XORSrc1 && ADDSrc0 == SRASrc0 &&
|
||||
XType.isInteger() && SRAConstant != NULL &&
|
||||
XType.isInteger() && SRAConstant != nullptr &&
|
||||
Size == SRAConstant->getZExtValue()) {
|
||||
unsigned Opcode = Subtarget->isThumb2() ? ARM::t2ABS : ARM::ABS;
|
||||
return CurDAG->SelectNodeTo(N, Opcode, VT, ADDSrc0);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
SDNode *ARMDAGToDAGISel::SelectConcatVector(SDNode *N) {
|
||||
|
@ -2415,7 +2415,7 @@ SDNode *ARMDAGToDAGISel::Select(SDNode *N) {
|
|||
|
||||
if (N->isMachineOpcode()) {
|
||||
N->setNodeId(-1);
|
||||
return NULL; // Already selected.
|
||||
return nullptr; // Already selected.
|
||||
}
|
||||
|
||||
switch (N->getOpcode()) {
|
||||
|
@ -2479,7 +2479,7 @@ SDNode *ARMDAGToDAGISel::Select(SDNode *N) {
|
|||
Ops);
|
||||
}
|
||||
ReplaceUses(SDValue(N, 0), SDValue(ResNode, 0));
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// Other cases are autogenerated.
|
||||
|
@ -2661,7 +2661,7 @@ SDNode *ARMDAGToDAGISel::Select(SDNode *N) {
|
|||
}
|
||||
}
|
||||
case ISD::LOAD: {
|
||||
SDNode *ResNode = 0;
|
||||
SDNode *ResNode = nullptr;
|
||||
if (Subtarget->isThumb() && Subtarget->hasThumb2())
|
||||
ResNode = SelectT2IndexedLoad(N);
|
||||
else
|
||||
|
@ -2708,13 +2708,13 @@ SDNode *ARMDAGToDAGISel::Select(SDNode *N) {
|
|||
}
|
||||
ReplaceUses(SDValue(N, 0),
|
||||
SDValue(Chain.getNode(), Chain.getResNo()));
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
case ARMISD::VZIP: {
|
||||
unsigned Opc = 0;
|
||||
EVT VT = N->getValueType(0);
|
||||
switch (VT.getSimpleVT().SimpleTy) {
|
||||
default: return NULL;
|
||||
default: return nullptr;
|
||||
case MVT::v8i8: Opc = ARM::VZIPd8; break;
|
||||
case MVT::v4i16: Opc = ARM::VZIPd16; break;
|
||||
case MVT::v2f32:
|
||||
|
@ -2734,7 +2734,7 @@ SDNode *ARMDAGToDAGISel::Select(SDNode *N) {
|
|||
unsigned Opc = 0;
|
||||
EVT VT = N->getValueType(0);
|
||||
switch (VT.getSimpleVT().SimpleTy) {
|
||||
default: return NULL;
|
||||
default: return nullptr;
|
||||
case MVT::v8i8: Opc = ARM::VUZPd8; break;
|
||||
case MVT::v4i16: Opc = ARM::VUZPd16; break;
|
||||
case MVT::v2f32:
|
||||
|
@ -2754,7 +2754,7 @@ SDNode *ARMDAGToDAGISel::Select(SDNode *N) {
|
|||
unsigned Opc = 0;
|
||||
EVT VT = N->getValueType(0);
|
||||
switch (VT.getSimpleVT().SimpleTy) {
|
||||
default: return NULL;
|
||||
default: return nullptr;
|
||||
case MVT::v8i8: Opc = ARM::VTRNd8; break;
|
||||
case MVT::v4i16: Opc = ARM::VTRNd16; break;
|
||||
case MVT::v2f32:
|
||||
|
@ -2835,7 +2835,7 @@ SDNode *ARMDAGToDAGISel::Select(SDNode *N) {
|
|||
ARM::VLD1q16wb_fixed,
|
||||
ARM::VLD1q32wb_fixed,
|
||||
ARM::VLD1q64wb_fixed };
|
||||
return SelectVLD(N, true, 1, DOpcodes, QOpcodes, 0);
|
||||
return SelectVLD(N, true, 1, DOpcodes, QOpcodes, nullptr);
|
||||
}
|
||||
|
||||
case ARMISD::VLD2_UPD: {
|
||||
|
@ -2846,7 +2846,7 @@ SDNode *ARMDAGToDAGISel::Select(SDNode *N) {
|
|||
static const uint16_t QOpcodes[] = { ARM::VLD2q8PseudoWB_fixed,
|
||||
ARM::VLD2q16PseudoWB_fixed,
|
||||
ARM::VLD2q32PseudoWB_fixed };
|
||||
return SelectVLD(N, true, 2, DOpcodes, QOpcodes, 0);
|
||||
return SelectVLD(N, true, 2, DOpcodes, QOpcodes, nullptr);
|
||||
}
|
||||
|
||||
case ARMISD::VLD3_UPD: {
|
||||
|
@ -2913,7 +2913,7 @@ SDNode *ARMDAGToDAGISel::Select(SDNode *N) {
|
|||
ARM::VST1q16wb_fixed,
|
||||
ARM::VST1q32wb_fixed,
|
||||
ARM::VST1q64wb_fixed };
|
||||
return SelectVST(N, true, 1, DOpcodes, QOpcodes, 0);
|
||||
return SelectVST(N, true, 1, DOpcodes, QOpcodes, nullptr);
|
||||
}
|
||||
|
||||
case ARMISD::VST2_UPD: {
|
||||
|
@ -2924,7 +2924,7 @@ SDNode *ARMDAGToDAGISel::Select(SDNode *N) {
|
|||
static const uint16_t QOpcodes[] = { ARM::VST2q8PseudoWB_fixed,
|
||||
ARM::VST2q16PseudoWB_fixed,
|
||||
ARM::VST2q32PseudoWB_fixed };
|
||||
return SelectVST(N, true, 2, DOpcodes, QOpcodes, 0);
|
||||
return SelectVST(N, true, 2, DOpcodes, QOpcodes, nullptr);
|
||||
}
|
||||
|
||||
case ARMISD::VST3_UPD: {
|
||||
|
@ -3048,7 +3048,7 @@ SDNode *ARMDAGToDAGISel::Select(SDNode *N) {
|
|||
ReplaceUses(SDValue(N, 1), Result);
|
||||
}
|
||||
ReplaceUses(SDValue(N, 2), OutChain);
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
case Intrinsic::arm_stlexd:
|
||||
case Intrinsic::arm_strexd: {
|
||||
|
@ -3094,7 +3094,7 @@ SDNode *ARMDAGToDAGISel::Select(SDNode *N) {
|
|||
ARM::VLD1d32, ARM::VLD1d64 };
|
||||
static const uint16_t QOpcodes[] = { ARM::VLD1q8, ARM::VLD1q16,
|
||||
ARM::VLD1q32, ARM::VLD1q64};
|
||||
return SelectVLD(N, false, 1, DOpcodes, QOpcodes, 0);
|
||||
return SelectVLD(N, false, 1, DOpcodes, QOpcodes, nullptr);
|
||||
}
|
||||
|
||||
case Intrinsic::arm_neon_vld2: {
|
||||
|
@ -3102,7 +3102,7 @@ SDNode *ARMDAGToDAGISel::Select(SDNode *N) {
|
|||
ARM::VLD2d32, ARM::VLD1q64 };
|
||||
static const uint16_t QOpcodes[] = { ARM::VLD2q8Pseudo, ARM::VLD2q16Pseudo,
|
||||
ARM::VLD2q32Pseudo };
|
||||
return SelectVLD(N, false, 2, DOpcodes, QOpcodes, 0);
|
||||
return SelectVLD(N, false, 2, DOpcodes, QOpcodes, nullptr);
|
||||
}
|
||||
|
||||
case Intrinsic::arm_neon_vld3: {
|
||||
|
@ -3165,7 +3165,7 @@ SDNode *ARMDAGToDAGISel::Select(SDNode *N) {
|
|||
ARM::VST1d32, ARM::VST1d64 };
|
||||
static const uint16_t QOpcodes[] = { ARM::VST1q8, ARM::VST1q16,
|
||||
ARM::VST1q32, ARM::VST1q64 };
|
||||
return SelectVST(N, false, 1, DOpcodes, QOpcodes, 0);
|
||||
return SelectVST(N, false, 1, DOpcodes, QOpcodes, nullptr);
|
||||
}
|
||||
|
||||
case Intrinsic::arm_neon_vst2: {
|
||||
|
@ -3173,7 +3173,7 @@ SDNode *ARMDAGToDAGISel::Select(SDNode *N) {
|
|||
ARM::VST2d32, ARM::VST1q64 };
|
||||
static uint16_t QOpcodes[] = { ARM::VST2q8Pseudo, ARM::VST2q16Pseudo,
|
||||
ARM::VST2q32Pseudo };
|
||||
return SelectVST(N, false, 2, DOpcodes, QOpcodes, 0);
|
||||
return SelectVST(N, false, 2, DOpcodes, QOpcodes, nullptr);
|
||||
}
|
||||
|
||||
case Intrinsic::arm_neon_vst3: {
|
||||
|
@ -3307,7 +3307,8 @@ SDNode *ARMDAGToDAGISel::SelectInlineAsm(SDNode *N){
|
|||
// them into a GPRPair.
|
||||
|
||||
SDLoc dl(N);
|
||||
SDValue Glue = N->getGluedNode() ? N->getOperand(NumOps-1) : SDValue(0,0);
|
||||
SDValue Glue = N->getGluedNode() ? N->getOperand(NumOps-1)
|
||||
: SDValue(nullptr,0);
|
||||
|
||||
SmallVector<bool, 8> OpChanged;
|
||||
// Glue node will be appended late.
|
||||
|
@ -3436,7 +3437,7 @@ SDNode *ARMDAGToDAGISel::SelectInlineAsm(SDNode *N){
|
|||
if (Glue.getNode())
|
||||
AsmNodeOperands.push_back(Glue);
|
||||
if (!Changed)
|
||||
return NULL;
|
||||
return nullptr;
|
||||
|
||||
SDValue New = CurDAG->getNode(ISD::INLINEASM, SDLoc(N),
|
||||
CurDAG->getVTList(MVT::Other, MVT::Glue), &AsmNodeOperands[0],
|
||||
|
|
|
@ -248,9 +248,9 @@ ARMTargetLowering::ARMTargetLowering(TargetMachine &TM)
|
|||
}
|
||||
|
||||
// These libcalls are not available in 32-bit.
|
||||
setLibcallName(RTLIB::SHL_I128, 0);
|
||||
setLibcallName(RTLIB::SRL_I128, 0);
|
||||
setLibcallName(RTLIB::SRA_I128, 0);
|
||||
setLibcallName(RTLIB::SHL_I128, nullptr);
|
||||
setLibcallName(RTLIB::SRL_I128, nullptr);
|
||||
setLibcallName(RTLIB::SRA_I128, nullptr);
|
||||
|
||||
if (Subtarget->isAAPCS_ABI() && !Subtarget->isTargetMachO() &&
|
||||
!Subtarget->isTargetWindows()) {
|
||||
|
@ -915,7 +915,7 @@ ARMTargetLowering::ARMTargetLowering(TargetMachine &TM)
|
|||
// and extractions.
|
||||
std::pair<const TargetRegisterClass*, uint8_t>
|
||||
ARMTargetLowering::findRepresentativeClass(MVT VT) const{
|
||||
const TargetRegisterClass *RRC = 0;
|
||||
const TargetRegisterClass *RRC = nullptr;
|
||||
uint8_t Cost = 1;
|
||||
switch (VT.SimpleTy) {
|
||||
default:
|
||||
|
@ -952,7 +952,7 @@ ARMTargetLowering::findRepresentativeClass(MVT VT) const{
|
|||
|
||||
const char *ARMTargetLowering::getTargetNodeName(unsigned Opcode) const {
|
||||
switch (Opcode) {
|
||||
default: return 0;
|
||||
default: return nullptr;
|
||||
case ARMISD::Wrapper: return "ARMISD::Wrapper";
|
||||
case ARMISD::WrapperPIC: return "ARMISD::WrapperPIC";
|
||||
case ARMISD::WrapperJT: return "ARMISD::WrapperJT";
|
||||
|
@ -1359,7 +1359,7 @@ void ARMTargetLowering::PassF64ArgInRegs(SDLoc dl, SelectionDAG &DAG,
|
|||
RegsToPass.push_back(std::make_pair(NextVA.getLocReg(), fmrrd.getValue(1)));
|
||||
else {
|
||||
assert(NextVA.isMemLoc());
|
||||
if (StackPtr.getNode() == 0)
|
||||
if (!StackPtr.getNode())
|
||||
StackPtr = DAG.getCopyFromReg(Chain, dl, ARM::SP, getPointerTy());
|
||||
|
||||
MemOpChains.push_back(LowerMemOpCallTo(Chain, StackPtr, fmrrd.getValue(1),
|
||||
|
@ -2839,8 +2839,9 @@ ARMTargetLowering::VarArgStyleRegisters(CCState &CCInfo, SelectionDAG &DAG,
|
|||
// If there is no regs to be stored, just point address after last
|
||||
// argument passed via stack.
|
||||
int FrameIndex =
|
||||
StoreByValRegs(CCInfo, DAG, dl, Chain, 0, CCInfo.getInRegsParamsCount(),
|
||||
0, ArgOffset, 0, ForceMutable, 0, TotalArgRegsSaveSize);
|
||||
StoreByValRegs(CCInfo, DAG, dl, Chain, nullptr,
|
||||
CCInfo.getInRegsParamsCount(), 0, ArgOffset, 0, ForceMutable,
|
||||
0, TotalArgRegsSaveSize);
|
||||
|
||||
AFI->setVarArgsFrameIndex(FrameIndex);
|
||||
}
|
||||
|
@ -6760,8 +6761,8 @@ ARMTargetLowering::EmitStructByval(MachineInstr *MI,
|
|||
MachineFunction *MF = BB->getParent();
|
||||
MachineRegisterInfo &MRI = MF->getRegInfo();
|
||||
unsigned UnitSize = 0;
|
||||
const TargetRegisterClass *TRC = 0;
|
||||
const TargetRegisterClass *VecTRC = 0;
|
||||
const TargetRegisterClass *TRC = nullptr;
|
||||
const TargetRegisterClass *VecTRC = nullptr;
|
||||
|
||||
bool IsThumb1 = Subtarget->isThumb1Only();
|
||||
bool IsThumb2 = Subtarget->isThumb2();
|
||||
|
@ -6795,7 +6796,7 @@ ARMTargetLowering::EmitStructByval(MachineInstr *MI,
|
|||
? (const TargetRegisterClass *)&ARM::DPairRegClass
|
||||
: UnitSize == 8
|
||||
? (const TargetRegisterClass *)&ARM::DPRRegClass
|
||||
: 0;
|
||||
: nullptr;
|
||||
|
||||
unsigned BytesLeft = SizeVal % UnitSize;
|
||||
unsigned LoopSize = SizeVal - BytesLeft;
|
||||
|
@ -7586,7 +7587,7 @@ static SDValue AddCombineTo64bitMLAL(SDNode *AddcNode,
|
|||
|
||||
// Look for the glued ADDE.
|
||||
SDNode* AddeNode = AddcNode->getGluedUser();
|
||||
if (AddeNode == NULL)
|
||||
if (!AddeNode)
|
||||
return SDValue();
|
||||
|
||||
// Make sure it is really an ADDE.
|
||||
|
@ -7621,9 +7622,9 @@ static SDValue AddCombineTo64bitMLAL(SDNode *AddcNode,
|
|||
|
||||
// Figure out the high and low input values to the MLAL node.
|
||||
SDValue* HiMul = &MULOp;
|
||||
SDValue* HiAdd = NULL;
|
||||
SDValue* LoMul = NULL;
|
||||
SDValue* LowAdd = NULL;
|
||||
SDValue* HiAdd = nullptr;
|
||||
SDValue* LoMul = nullptr;
|
||||
SDValue* LowAdd = nullptr;
|
||||
|
||||
if (IsLeftOperandMUL)
|
||||
HiAdd = &AddeOp1;
|
||||
|
@ -7640,7 +7641,7 @@ static SDValue AddCombineTo64bitMLAL(SDNode *AddcNode,
|
|||
LowAdd = &AddcOp0;
|
||||
}
|
||||
|
||||
if (LoMul == NULL)
|
||||
if (!LoMul)
|
||||
return SDValue();
|
||||
|
||||
if (LoMul->getNode() != HiMul->getNode())
|
||||
|
@ -10058,7 +10059,7 @@ ARMTargetLowering::getSingleConstraintMatchWeight(
|
|||
Value *CallOperandVal = info.CallOperandVal;
|
||||
// If we don't have a value, we can't do a match,
|
||||
// but allow it at the lowest weight.
|
||||
if (CallOperandVal == NULL)
|
||||
if (!CallOperandVal)
|
||||
return CW_Default;
|
||||
Type *type = CallOperandVal->getType();
|
||||
// Look at the constraint type.
|
||||
|
@ -10137,7 +10138,7 @@ void ARMTargetLowering::LowerAsmOperandForConstraint(SDValue Op,
|
|||
std::string &Constraint,
|
||||
std::vector<SDValue>&Ops,
|
||||
SelectionDAG &DAG) const {
|
||||
SDValue Result(0, 0);
|
||||
SDValue Result;
|
||||
|
||||
// Currently only support length 1 constraints.
|
||||
if (Constraint.length() != 1) return;
|
||||
|
|
|
@ -1747,8 +1747,8 @@ bool ARMPreAllocLoadStoreOpt::RescheduleOps(MachineBasicBlock *MBB,
|
|||
while (Ops.size() > 1) {
|
||||
unsigned FirstLoc = ~0U;
|
||||
unsigned LastLoc = 0;
|
||||
MachineInstr *FirstOp = 0;
|
||||
MachineInstr *LastOp = 0;
|
||||
MachineInstr *FirstOp = nullptr;
|
||||
MachineInstr *LastOp = nullptr;
|
||||
int LastOffset = 0;
|
||||
unsigned LastOpcode = 0;
|
||||
unsigned LastBytes = 0;
|
||||
|
|
|
@ -31,7 +31,7 @@ void ARMElfTargetObjectFile::Initialize(MCContext &Ctx,
|
|||
InitializeELF(isAAPCS_ABI);
|
||||
|
||||
if (isAAPCS_ABI) {
|
||||
LSDASection = NULL;
|
||||
LSDASection = nullptr;
|
||||
}
|
||||
|
||||
AttributesSection =
|
||||
|
|
|
@ -43,7 +43,7 @@ class ARMTTI final : public ImmutablePass, public TargetTransformInfo {
|
|||
unsigned getScalarizationOverhead(Type *Ty, bool Insert, bool Extract) const;
|
||||
|
||||
public:
|
||||
ARMTTI() : ImmutablePass(ID), TM(0), ST(0), TLI(0) {
|
||||
ARMTTI() : ImmutablePass(ID), TM(nullptr), ST(nullptr), TLI(nullptr) {
|
||||
llvm_unreachable("This pass cannot be directly constructed");
|
||||
}
|
||||
|
||||
|
|
|
@ -1099,7 +1099,7 @@ public:
|
|||
if (!isMem())
|
||||
return false;
|
||||
// No offset of any kind.
|
||||
return Memory.OffsetRegNum == 0 && Memory.OffsetImm == 0 &&
|
||||
return Memory.OffsetRegNum == 0 && Memory.OffsetImm == nullptr &&
|
||||
(alignOK || Memory.Alignment == Alignment);
|
||||
}
|
||||
bool isMemPCRelImm12() const {
|
||||
|
@ -1708,7 +1708,7 @@ public:
|
|||
|
||||
void addExpr(MCInst &Inst, const MCExpr *Expr) const {
|
||||
// Add as immediates when possible. Null MCExpr = 0.
|
||||
if (Expr == 0)
|
||||
if (!Expr)
|
||||
Inst.addOperand(MCOperand::CreateImm(0));
|
||||
else if (const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(Expr))
|
||||
Inst.addOperand(MCOperand::CreateImm(CE->getValue()));
|
||||
|
@ -2993,7 +2993,7 @@ int ARMAsmParser::tryParseShiftRegister(
|
|||
Parser.getTok().is(AsmToken::Dollar)) {
|
||||
Parser.Lex(); // Eat hash.
|
||||
SMLoc ImmLoc = Parser.getTok().getLoc();
|
||||
const MCExpr *ShiftExpr = 0;
|
||||
const MCExpr *ShiftExpr = nullptr;
|
||||
if (getParser().parseExpression(ShiftExpr, EndLoc)) {
|
||||
Error(ImmLoc, "invalid immediate shift value");
|
||||
return -1;
|
||||
|
@ -4491,8 +4491,9 @@ parseMemory(SmallVectorImpl<MCParsedAsmOperand*> &Operands) {
|
|||
E = Tok.getEndLoc();
|
||||
Parser.Lex(); // Eat right bracket token.
|
||||
|
||||
Operands.push_back(ARMOperand::CreateMem(BaseRegNum, 0, 0, ARM_AM::no_shift,
|
||||
0, 0, false, S, E));
|
||||
Operands.push_back(ARMOperand::CreateMem(BaseRegNum, nullptr, 0,
|
||||
ARM_AM::no_shift, 0, 0, false,
|
||||
S, E));
|
||||
|
||||
// If there's a pre-indexing writeback marker, '!', just add it as a token
|
||||
// operand. It's rather odd, but syntactically valid.
|
||||
|
@ -4547,7 +4548,7 @@ parseMemory(SmallVectorImpl<MCParsedAsmOperand*> &Operands) {
|
|||
|
||||
// Don't worry about range checking the value here. That's handled by
|
||||
// the is*() predicates.
|
||||
Operands.push_back(ARMOperand::CreateMem(BaseRegNum, 0, 0,
|
||||
Operands.push_back(ARMOperand::CreateMem(BaseRegNum, nullptr, 0,
|
||||
ARM_AM::no_shift, 0, Align,
|
||||
false, S, E, AlignmentLoc));
|
||||
|
||||
|
@ -4640,7 +4641,7 @@ parseMemory(SmallVectorImpl<MCParsedAsmOperand*> &Operands) {
|
|||
E = Parser.getTok().getEndLoc();
|
||||
Parser.Lex(); // Eat right bracket token.
|
||||
|
||||
Operands.push_back(ARMOperand::CreateMem(BaseRegNum, 0, OffsetRegNum,
|
||||
Operands.push_back(ARMOperand::CreateMem(BaseRegNum, nullptr, OffsetRegNum,
|
||||
ShiftType, ShiftImm, 0, isNegative,
|
||||
S, E));
|
||||
|
||||
|
|
|
@ -62,7 +62,7 @@ static const char *GetFPUName(unsigned ID) {
|
|||
#define ARM_FPU_NAME(NAME, ID) case ARM::ID: return NAME;
|
||||
#include "ARMFPUName.def"
|
||||
}
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
static const char *GetArchName(unsigned ID) {
|
||||
|
@ -75,7 +75,7 @@ static const char *GetArchName(unsigned ID) {
|
|||
#define ARM_ARCH_ALIAS(NAME, ID) /* empty */
|
||||
#include "ARMArchName.def"
|
||||
}
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
static const char *GetArchDefaultCPUName(unsigned ID) {
|
||||
|
@ -88,7 +88,7 @@ static const char *GetArchDefaultCPUName(unsigned ID) {
|
|||
#define ARM_ARCH_ALIAS(NAME, ID) /* empty */
|
||||
#include "ARMArchName.def"
|
||||
}
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
static unsigned GetArchDefaultCPUArch(unsigned ID) {
|
||||
|
@ -310,7 +310,7 @@ private:
|
|||
for (size_t i = 0; i < Contents.size(); ++i)
|
||||
if (Contents[i].Tag == Attribute)
|
||||
return &Contents[i];
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void setAttributeItem(unsigned Attribute, unsigned Value,
|
||||
|
@ -415,7 +415,7 @@ public:
|
|||
ARMTargetELFStreamer(MCStreamer &S)
|
||||
: ARMTargetStreamer(S), CurrentVendor("aeabi"), FPU(ARM::INVALID_FPU),
|
||||
Arch(ARM::INVALID_ARCH), EmittedArch(ARM::INVALID_ARCH),
|
||||
AttributeSection(0) {}
|
||||
AttributeSection(nullptr) {}
|
||||
};
|
||||
|
||||
/// Extend the generic ELFStreamer class so that it can emit mapping symbols at
|
||||
|
@ -1013,7 +1013,7 @@ inline void ARMELFStreamer::SwitchToEHSection(const char *Prefix,
|
|||
}
|
||||
|
||||
// Get .ARM.extab or .ARM.exidx section
|
||||
const MCSectionELF *EHSection = NULL;
|
||||
const MCSectionELF *EHSection = nullptr;
|
||||
if (const MCSymbol *Group = FnSection.getGroup()) {
|
||||
EHSection = getContext().getELFSection(
|
||||
EHSecName, Type, Flags | ELF::SHF_GROUP, Kind,
|
||||
|
@ -1050,9 +1050,9 @@ void ARMELFStreamer::EmitFixup(const MCExpr *Expr, MCFixupKind Kind) {
|
|||
}
|
||||
|
||||
void ARMELFStreamer::Reset() {
|
||||
ExTab = NULL;
|
||||
FnStart = NULL;
|
||||
Personality = NULL;
|
||||
ExTab = nullptr;
|
||||
FnStart = nullptr;
|
||||
Personality = nullptr;
|
||||
PersonalityIndex = ARM::EHABI::NUM_PERSONALITY_INDEX;
|
||||
FPReg = ARM::SP;
|
||||
FPOffset = 0;
|
||||
|
|
|
@ -25,7 +25,7 @@ ARMMCAsmInfoDarwin::ARMMCAsmInfoDarwin(StringRef TT) {
|
|||
(TheTriple.getArch() == Triple::thumbeb))
|
||||
IsLittleEndian = false;
|
||||
|
||||
Data64bitsDirective = 0;
|
||||
Data64bitsDirective = nullptr;
|
||||
CommentString = "@";
|
||||
Code16Directive = ".code\t16";
|
||||
Code32Directive = ".code\t32";
|
||||
|
@ -50,7 +50,7 @@ ARMELFMCAsmInfo::ARMELFMCAsmInfo(StringRef TT) {
|
|||
// ".comm align is in bytes but .align is pow-2."
|
||||
AlignmentIsInBytes = false;
|
||||
|
||||
Data64bitsDirective = 0;
|
||||
Data64bitsDirective = nullptr;
|
||||
CommentString = "@";
|
||||
Code16Directive = ".code\t16";
|
||||
Code32Directive = ".code\t32";
|
||||
|
|
|
@ -247,7 +247,7 @@ static MCAsmInfo *createARMMCAsmInfo(const MCRegisterInfo &MRI, StringRef TT) {
|
|||
}
|
||||
|
||||
unsigned Reg = MRI.getDwarfRegNum(ARM::SP, true);
|
||||
MAI->addInitialFrameState(MCCFIInstruction::createDefCfa(0, Reg, 0));
|
||||
MAI->addInitialFrameState(MCCFIInstruction::createDefCfa(nullptr, Reg, 0));
|
||||
|
||||
return MAI;
|
||||
}
|
||||
|
@ -297,7 +297,7 @@ static MCInstPrinter *createARMMCInstPrinter(const Target &T,
|
|||
const MCSubtargetInfo &STI) {
|
||||
if (SyntaxVariant == 0)
|
||||
return new ARMInstPrinter(MAI, MII, MRI, STI);
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
static MCRelocationInfo *createARMMCRelocationInfo(StringRef TT,
|
||||
|
|
|
@ -378,7 +378,7 @@ void ARMMachObjectWriter::RecordRelocation(MachObjectWriter *Writer,
|
|||
}
|
||||
|
||||
// Get the symbol data, if any.
|
||||
const MCSymbolData *SD = 0;
|
||||
const MCSymbolData *SD = nullptr;
|
||||
if (Target.getSymA())
|
||||
SD = &Asm.getSymbolData(Target.getSymA()->getSymbol());
|
||||
|
||||
|
|
|
@ -109,7 +109,7 @@ ConstantPool *
|
|||
AssemblerConstantPools::getConstantPool(const MCSection *Section) {
|
||||
ConstantPoolMapTy::iterator CP = ConstantPools.find(Section);
|
||||
if (CP == ConstantPools.end())
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
return &CP->second;
|
||||
}
|
||||
|
|
|
@ -74,7 +74,7 @@ namespace {
|
|||
}
|
||||
|
||||
void MLxExpansion::clearStack() {
|
||||
std::fill(LastMIs, LastMIs + 4, (MachineInstr*)0);
|
||||
std::fill(LastMIs, LastMIs + 4, nullptr);
|
||||
MIIdx = 0;
|
||||
}
|
||||
|
||||
|
@ -89,7 +89,7 @@ MachineInstr *MLxExpansion::getAccDefMI(MachineInstr *MI) const {
|
|||
// real definition MI. This is important for _sfp instructions.
|
||||
unsigned Reg = MI->getOperand(1).getReg();
|
||||
if (TargetRegisterInfo::isPhysicalRegister(Reg))
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
MachineBasicBlock *MBB = MI->getParent();
|
||||
MachineInstr *DefMI = MRI->getVRegDef(Reg);
|
||||
|
@ -353,7 +353,7 @@ bool MLxExpansion::ExpandFPMLxInstructions(MachineBasicBlock &MBB) {
|
|||
if (Domain == ARMII::DomainGeneral) {
|
||||
if (++Skip == 2)
|
||||
// Assume dual issues of non-VFP / NEON instructions.
|
||||
pushStack(0);
|
||||
pushStack(nullptr);
|
||||
} else {
|
||||
Skip = 0;
|
||||
|
||||
|
|
|
@ -916,9 +916,9 @@ bool Thumb2SizeReduce::ReduceMBB(MachineBasicBlock &MBB) {
|
|||
|
||||
// Yes, CPSR could be livein.
|
||||
bool LiveCPSR = MBB.isLiveIn(ARM::CPSR);
|
||||
MachineInstr *BundleMI = 0;
|
||||
MachineInstr *BundleMI = nullptr;
|
||||
|
||||
CPSRDef = 0;
|
||||
CPSRDef = nullptr;
|
||||
HighLatencyCPSR = false;
|
||||
|
||||
// Check predecessors for the latest CPSRDef.
|
||||
|
@ -984,7 +984,7 @@ bool Thumb2SizeReduce::ReduceMBB(MachineBasicBlock &MBB) {
|
|||
LiveCPSR = UpdateCPSRDef(*MI, LiveCPSR, DefCPSR);
|
||||
if (MI->isCall()) {
|
||||
// Calls don't really set CPSR.
|
||||
CPSRDef = 0;
|
||||
CPSRDef = nullptr;
|
||||
HighLatencyCPSR = false;
|
||||
IsSelfLoop = false;
|
||||
} else if (DefCPSR) {
|
||||
|
|
|
@ -71,7 +71,7 @@ class ARM64AddressTypePromotion : public FunctionPass {
|
|||
public:
|
||||
static char ID;
|
||||
ARM64AddressTypePromotion()
|
||||
: FunctionPass(ID), Func(NULL), ConsideredSExtType(NULL) {
|
||||
: FunctionPass(ID), Func(nullptr), ConsideredSExtType(nullptr) {
|
||||
initializeARM64AddressTypePromotionPass(*PassRegistry::getPassRegistry());
|
||||
}
|
||||
|
||||
|
@ -344,7 +344,7 @@ ARM64AddressTypePromotion::propagateSignExtension(Instructions &SExtInsts) {
|
|||
SExtForOpnd->moveBefore(Inst);
|
||||
Inst->setOperand(OpIdx, SExtForOpnd);
|
||||
// If more sext are required, new instructions will have to be created.
|
||||
SExtForOpnd = NULL;
|
||||
SExtForOpnd = nullptr;
|
||||
}
|
||||
if (SExtForOpnd == SExt) {
|
||||
DEBUG(dbgs() << "Sign extension is useless now\n");
|
||||
|
@ -466,10 +466,10 @@ void ARM64AddressTypePromotion::analyzeSExtension(Instructions &SExtInsts) {
|
|||
if (insert || AlreadySeen != SeenChains.end()) {
|
||||
DEBUG(dbgs() << "Insert\n");
|
||||
SExtInsts.push_back(SExt);
|
||||
if (AlreadySeen != SeenChains.end() && AlreadySeen->second != NULL) {
|
||||
if (AlreadySeen != SeenChains.end() && AlreadySeen->second != nullptr) {
|
||||
DEBUG(dbgs() << "Insert chain member\n");
|
||||
SExtInsts.push_back(AlreadySeen->second);
|
||||
SeenChains[Last] = NULL;
|
||||
SeenChains[Last] = nullptr;
|
||||
}
|
||||
} else {
|
||||
DEBUG(dbgs() << "Record its chain membership\n");
|
||||
|
|
|
@ -53,7 +53,7 @@ class ARM64AsmPrinter : public AsmPrinter {
|
|||
public:
|
||||
ARM64AsmPrinter(TargetMachine &TM, MCStreamer &Streamer)
|
||||
: AsmPrinter(TM, Streamer), Subtarget(&TM.getSubtarget<ARM64Subtarget>()),
|
||||
MCInstLowering(OutContext, *Mang, *this), SM(*this), ARM64FI(NULL),
|
||||
MCInstLowering(OutContext, *Mang, *this), SM(*this), ARM64FI(nullptr),
|
||||
LOHLabelCounter(0) {}
|
||||
|
||||
virtual const char *getPassName() const { return "ARM64 Assembly Printer"; }
|
||||
|
|
|
@ -262,7 +262,7 @@ static const SetOfMachineInstr *getUses(const InstrToInstrs *sets, unsigned reg,
|
|||
InstrToInstrs::const_iterator Res = sets[reg].find(&MI);
|
||||
if (Res != sets[reg].end())
|
||||
return &(Res->second);
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
/// Initialize the reaching definition algorithm:
|
||||
|
@ -335,7 +335,7 @@ static void initReachingDef(MachineFunction &MF,
|
|||
// Do not register clobbered definition for no ADRP.
|
||||
// This definition is not used anyway (otherwise register
|
||||
// allocation is wrong).
|
||||
BBGen[Reg] = ADRPMode ? &MI : NULL;
|
||||
BBGen[Reg] = ADRPMode ? &MI : nullptr;
|
||||
BBKillSet.set(Reg);
|
||||
}
|
||||
}
|
||||
|
@ -451,7 +451,7 @@ static void finitReachingDef(BlockToSetOfInstrsPerColor &In,
|
|||
static void reachingDef(MachineFunction &MF,
|
||||
InstrToInstrs *ColorOpToReachedUses,
|
||||
const MapRegToId &RegToId, bool ADRPMode = false,
|
||||
const MachineInstr *DummyOp = NULL) {
|
||||
const MachineInstr *DummyOp = nullptr) {
|
||||
// structures:
|
||||
// For each basic block.
|
||||
// Out: a set per color of definitions that reach the
|
||||
|
@ -784,7 +784,7 @@ static void computeOthers(const InstrToInstrs &UseToDefs,
|
|||
const InstrToInstrs *DefsPerColorToUses,
|
||||
ARM64FunctionInfo &ARM64FI, const MapRegToId &RegToId,
|
||||
const MachineDominatorTree *MDT) {
|
||||
SetOfMachineInstr *InvolvedInLOHs = NULL;
|
||||
SetOfMachineInstr *InvolvedInLOHs = nullptr;
|
||||
#ifdef DEBUG
|
||||
SetOfMachineInstr InvolvedInLOHsStorage;
|
||||
InvolvedInLOHs = &InvolvedInLOHsStorage;
|
||||
|
@ -837,7 +837,7 @@ static void computeOthers(const InstrToInstrs &UseToDefs,
|
|||
const MachineInstr *Def = *UseToDefs.find(Candidate)->second.begin();
|
||||
// Record the elements of the chain.
|
||||
const MachineInstr *L1 = Def;
|
||||
const MachineInstr *L2 = NULL;
|
||||
const MachineInstr *L2 = nullptr;
|
||||
unsigned ImmediateDefOpc = Def->getOpcode();
|
||||
if (Def->getOpcode() != ARM64::ADRP) {
|
||||
// Check the number of users of this node.
|
||||
|
@ -907,7 +907,7 @@ static void computeOthers(const InstrToInstrs &UseToDefs,
|
|||
SmallVector<const MachineInstr *, 3> Args;
|
||||
MCLOHType Kind;
|
||||
if (isCandidateLoad(Candidate)) {
|
||||
if (L2 == NULL) {
|
||||
if (!L2) {
|
||||
// At this point, the candidate LOH indicates that the ldr instruction
|
||||
// may use a direct access to the symbol. There is not such encoding
|
||||
// for loads of byte and half.
|
||||
|
@ -1057,7 +1057,7 @@ bool ARM64CollectLOH::runOnMachineFunction(MachineFunction &MF) {
|
|||
if (RegToId.empty())
|
||||
return false;
|
||||
|
||||
MachineInstr *DummyOp = NULL;
|
||||
MachineInstr *DummyOp = nullptr;
|
||||
if (BasicBlockScopeOnly) {
|
||||
const ARM64InstrInfo *TII =
|
||||
static_cast<const ARM64InstrInfo *>(TM.getInstrInfo());
|
||||
|
|
|
@ -298,7 +298,7 @@ static bool parseCond(ArrayRef<MachineOperand> Cond, ARM64CC::CondCode &CC) {
|
|||
MachineInstr *SSACCmpConv::findConvertibleCompare(MachineBasicBlock *MBB) {
|
||||
MachineBasicBlock::iterator I = MBB->getFirstTerminator();
|
||||
if (I == MBB->end())
|
||||
return 0;
|
||||
return nullptr;
|
||||
// The terminator must be controlled by the flags.
|
||||
if (!I->readsRegister(ARM64::CPSR)) {
|
||||
switch (I->getOpcode()) {
|
||||
|
@ -311,7 +311,7 @@ MachineInstr *SSACCmpConv::findConvertibleCompare(MachineBasicBlock *MBB) {
|
|||
}
|
||||
++NumCmpTermRejs;
|
||||
DEBUG(dbgs() << "Flags not used by terminator: " << *I);
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// Now find the instruction controlling the terminator.
|
||||
|
@ -330,7 +330,7 @@ MachineInstr *SSACCmpConv::findConvertibleCompare(MachineBasicBlock *MBB) {
|
|||
if (I->getOperand(3).getImm() || !isUInt<5>(I->getOperand(2).getImm())) {
|
||||
DEBUG(dbgs() << "Immediate out of range for ccmp: " << *I);
|
||||
++NumImmRangeRejs;
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
// Fall through.
|
||||
case ARM64::SUBSWrr:
|
||||
|
@ -341,7 +341,7 @@ MachineInstr *SSACCmpConv::findConvertibleCompare(MachineBasicBlock *MBB) {
|
|||
return I;
|
||||
DEBUG(dbgs() << "Can't convert compare with live destination: " << *I);
|
||||
++NumLiveDstRejs;
|
||||
return 0;
|
||||
return nullptr;
|
||||
case ARM64::FCMPSrr:
|
||||
case ARM64::FCMPDrr:
|
||||
case ARM64::FCMPESrr:
|
||||
|
@ -359,17 +359,17 @@ MachineInstr *SSACCmpConv::findConvertibleCompare(MachineBasicBlock *MBB) {
|
|||
// besides the terminators.
|
||||
DEBUG(dbgs() << "Can't create ccmp with multiple uses: " << *I);
|
||||
++NumMultCPSRUses;
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (PRI.Clobbers) {
|
||||
DEBUG(dbgs() << "Not convertible compare: " << *I);
|
||||
++NumUnknCPSRDefs;
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
DEBUG(dbgs() << "Flags not defined in BB#" << MBB->getNumber() << '\n');
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
/// Determine if all the instructions in MBB can safely
|
||||
|
@ -416,7 +416,7 @@ bool SSACCmpConv::canSpeculateInstrs(MachineBasicBlock *MBB,
|
|||
|
||||
// We never speculate stores, so an AA pointer isn't necessary.
|
||||
bool DontMoveAcrossStore = true;
|
||||
if (!I.isSafeToMove(TII, 0, DontMoveAcrossStore)) {
|
||||
if (!I.isSafeToMove(TII, nullptr, DontMoveAcrossStore)) {
|
||||
DEBUG(dbgs() << "Can't speculate: " << I);
|
||||
return false;
|
||||
}
|
||||
|
@ -435,7 +435,7 @@ bool SSACCmpConv::canSpeculateInstrs(MachineBasicBlock *MBB,
|
|||
///
|
||||
bool SSACCmpConv::canConvert(MachineBasicBlock *MBB) {
|
||||
Head = MBB;
|
||||
Tail = CmpBB = 0;
|
||||
Tail = CmpBB = nullptr;
|
||||
|
||||
if (Head->succ_size() != 2)
|
||||
return false;
|
||||
|
@ -495,7 +495,7 @@ bool SSACCmpConv::canConvert(MachineBasicBlock *MBB) {
|
|||
|
||||
// The branch we're looking to eliminate must be analyzable.
|
||||
HeadCond.clear();
|
||||
MachineBasicBlock *TBB = 0, *FBB = 0;
|
||||
MachineBasicBlock *TBB = nullptr, *FBB = nullptr;
|
||||
if (TII->AnalyzeBranch(*Head, TBB, FBB, HeadCond)) {
|
||||
DEBUG(dbgs() << "Head branch not analyzable.\n");
|
||||
++NumHeadBranchRejs;
|
||||
|
@ -523,7 +523,7 @@ bool SSACCmpConv::canConvert(MachineBasicBlock *MBB) {
|
|||
}
|
||||
|
||||
CmpBBCond.clear();
|
||||
TBB = FBB = 0;
|
||||
TBB = FBB = nullptr;
|
||||
if (TII->AnalyzeBranch(*CmpBB, TBB, FBB, CmpBBCond)) {
|
||||
DEBUG(dbgs() << "CmpBB branch not analyzable.\n");
|
||||
++NumCmpBranchRejs;
|
||||
|
@ -897,7 +897,7 @@ bool ARM64ConditionalCompares::runOnMachineFunction(MachineFunction &MF) {
|
|||
DomTree = &getAnalysis<MachineDominatorTree>();
|
||||
Loops = getAnalysisIfAvailable<MachineLoopInfo>();
|
||||
Traces = &getAnalysis<MachineTraceMetrics>();
|
||||
MinInstr = 0;
|
||||
MinInstr = nullptr;
|
||||
MinSize = MF.getFunction()->getAttributes().hasAttribute(
|
||||
AttributeSet::FunctionIndex, Attribute::MinSize);
|
||||
|
||||
|
|
|
@ -303,7 +303,7 @@ unsigned ARM64FastISel::TargetMaterializeConstant(const Constant *C) {
|
|||
|
||||
// Computes the address to get to an object.
|
||||
bool ARM64FastISel::ComputeAddress(const Value *Obj, Address &Addr) {
|
||||
const User *U = NULL;
|
||||
const User *U = nullptr;
|
||||
unsigned Opcode = Instruction::UserOp1;
|
||||
if (const Instruction *I = dyn_cast<Instruction>(Obj)) {
|
||||
// Don't walk into other basic blocks unless the object is an alloca from
|
||||
|
@ -1281,7 +1281,7 @@ bool ARM64FastISel::FinishCall(MVT RetVT, SmallVectorImpl<unsigned> &UsedRegs,
|
|||
}
|
||||
|
||||
bool ARM64FastISel::SelectCall(const Instruction *I,
|
||||
const char *IntrMemName = 0) {
|
||||
const char *IntrMemName = nullptr) {
|
||||
const CallInst *CI = cast<CallInst>(I);
|
||||
const Value *Callee = CI->getCalledValue();
|
||||
|
||||
|
|
|
@ -454,7 +454,7 @@ SDNode *ARM64DAGToDAGISel::SelectMLAV64LaneV128(SDNode *N) {
|
|||
if (Op1.getOpcode() != ISD::MUL ||
|
||||
!checkV64LaneV128(Op1.getOperand(0), Op1.getOperand(1), MLAOp1, MLAOp2,
|
||||
LaneIdx))
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
SDValue LaneIdxVal = CurDAG->getTargetConstant(LaneIdx, MVT::i64);
|
||||
|
@ -490,7 +490,7 @@ SDNode *ARM64DAGToDAGISel::SelectMULLV64LaneV128(unsigned IntNo, SDNode *N) {
|
|||
|
||||
if (!checkV64LaneV128(N->getOperand(1), N->getOperand(2), SMULLOp0, SMULLOp1,
|
||||
LaneIdx))
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
SDValue LaneIdxVal = CurDAG->getTargetConstant(LaneIdx, MVT::i64);
|
||||
|
||||
|
@ -852,7 +852,7 @@ SDNode *ARM64DAGToDAGISel::SelectTable(SDNode *N, unsigned NumVecs,
|
|||
SDNode *ARM64DAGToDAGISel::SelectIndexedLoad(SDNode *N, bool &Done) {
|
||||
LoadSDNode *LD = cast<LoadSDNode>(N);
|
||||
if (LD->isUnindexed())
|
||||
return NULL;
|
||||
return nullptr;
|
||||
EVT VT = LD->getMemoryVT();
|
||||
EVT DstVT = N->getValueType(0);
|
||||
ISD::MemIndexedMode AM = LD->getAddressingMode();
|
||||
|
@ -910,7 +910,7 @@ SDNode *ARM64DAGToDAGISel::SelectIndexedLoad(SDNode *N, bool &Done) {
|
|||
} else if (VT == MVT::f64) {
|
||||
Opcode = IsPre ? ARM64::LDRDpre_isel : ARM64::LDRDpost_isel;
|
||||
} else
|
||||
return NULL;
|
||||
return nullptr;
|
||||
SDValue Chain = LD->getChain();
|
||||
SDValue Base = LD->getBasePtr();
|
||||
ConstantSDNode *OffsetOp = cast<ConstantSDNode>(LD->getOffset());
|
||||
|
@ -929,7 +929,7 @@ SDNode *ARM64DAGToDAGISel::SelectIndexedLoad(SDNode *N, bool &Done) {
|
|||
ReplaceUses(SDValue(N, 0), SDValue(Sub, 0));
|
||||
ReplaceUses(SDValue(N, 1), SDValue(Res, 1));
|
||||
ReplaceUses(SDValue(N, 2), SDValue(Res, 2));
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
return Res;
|
||||
}
|
||||
|
@ -977,7 +977,7 @@ SDNode *ARM64DAGToDAGISel::SelectLoad(SDNode *N, unsigned NumVecs, unsigned Opc,
|
|||
|
||||
ReplaceUses(SDValue(N, NumVecs), SDValue(Ld, 1));
|
||||
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
SDNode *ARM64DAGToDAGISel::SelectStore(SDNode *N, unsigned NumVecs,
|
||||
|
@ -1371,7 +1371,7 @@ SDNode *ARM64DAGToDAGISel::SelectBitfieldExtractOp(SDNode *N) {
|
|||
unsigned Opc, LSB, MSB;
|
||||
SDValue Opd0;
|
||||
if (!isBitfieldExtractOp(CurDAG, N, Opc, Opd0, LSB, MSB))
|
||||
return NULL;
|
||||
return nullptr;
|
||||
|
||||
EVT VT = N->getValueType(0);
|
||||
|
||||
|
@ -1767,14 +1767,14 @@ static bool isBitfieldInsertOpFromOr(SDNode *N, unsigned &Opc, SDValue &Dst,
|
|||
|
||||
SDNode *ARM64DAGToDAGISel::SelectBitfieldInsertOp(SDNode *N) {
|
||||
if (N->getOpcode() != ISD::OR)
|
||||
return NULL;
|
||||
return nullptr;
|
||||
|
||||
unsigned Opc;
|
||||
unsigned LSB, MSB;
|
||||
SDValue Opd0, Opd1;
|
||||
|
||||
if (!isBitfieldInsertOpFromOr(N, Opc, Opd0, Opd1, LSB, MSB, CurDAG))
|
||||
return NULL;
|
||||
return nullptr;
|
||||
|
||||
EVT VT = N->getValueType(0);
|
||||
SDValue Ops[] = { Opd0,
|
||||
|
@ -1795,14 +1795,14 @@ SDNode *ARM64DAGToDAGISel::SelectLIBM(SDNode *N) {
|
|||
} else if (VT == MVT::f64) {
|
||||
Variant = 1;
|
||||
} else
|
||||
return 0; // Unrecognized argument type. Fall back on default codegen.
|
||||
return nullptr; // Unrecognized argument type. Fall back on default codegen.
|
||||
|
||||
// Pick the FRINTX variant needed to set the flags.
|
||||
unsigned FRINTXOpc = FRINTXOpcs[Variant];
|
||||
|
||||
switch (N->getOpcode()) {
|
||||
default:
|
||||
return 0; // Unrecognized libm ISD node. Fall back on default codegen.
|
||||
return nullptr; // Unrecognized libm ISD node. Fall back on default codegen.
|
||||
case ISD::FCEIL: {
|
||||
unsigned FRINTPOpcs[] = { ARM64::FRINTPSr, ARM64::FRINTPDr };
|
||||
Opc = FRINTPOpcs[Variant];
|
||||
|
@ -1892,11 +1892,11 @@ SDNode *ARM64DAGToDAGISel::Select(SDNode *Node) {
|
|||
if (Node->isMachineOpcode()) {
|
||||
DEBUG(errs() << "== "; Node->dump(CurDAG); errs() << "\n");
|
||||
Node->setNodeId(-1);
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// Few custom selection stuff.
|
||||
SDNode *ResNode = 0;
|
||||
SDNode *ResNode = nullptr;
|
||||
EVT VT = Node->getValueType(0);
|
||||
|
||||
switch (Node->getOpcode()) {
|
||||
|
@ -2455,7 +2455,7 @@ SDNode *ARM64DAGToDAGISel::Select(SDNode *Node) {
|
|||
ResNode = SelectCode(Node);
|
||||
|
||||
DEBUG(errs() << "=> ");
|
||||
if (ResNode == NULL || ResNode == Node)
|
||||
if (ResNode == nullptr || ResNode == Node)
|
||||
DEBUG(Node->dump(CurDAG));
|
||||
else
|
||||
DEBUG(ResNode->dump(CurDAG));
|
||||
|
|
|
@ -619,7 +619,7 @@ ARM64TargetLowering::createFastISel(FunctionLoweringInfo &funcInfo,
|
|||
const char *ARM64TargetLowering::getTargetNodeName(unsigned Opcode) const {
|
||||
switch (Opcode) {
|
||||
default:
|
||||
return 0;
|
||||
return nullptr;
|
||||
case ARM64ISD::CALL: return "ARM64ISD::CALL";
|
||||
case ARM64ISD::ADRP: return "ARM64ISD::ADRP";
|
||||
case ARM64ISD::ADDlow: return "ARM64ISD::ADDlow";
|
||||
|
@ -2565,7 +2565,7 @@ SDValue ARM64TargetLowering::LowerBR_CC(SDValue Op, SelectionDAG &DAG) const {
|
|||
|
||||
// If softenSetCCOperands returned a scalar, we need to compare the result
|
||||
// against zero to select between true and false values.
|
||||
if (RHS.getNode() == 0) {
|
||||
if (!RHS.getNode()) {
|
||||
RHS = DAG.getConstant(0, LHS.getValueType());
|
||||
CC = ISD::SETNE;
|
||||
}
|
||||
|
@ -2815,7 +2815,7 @@ SDValue ARM64TargetLowering::LowerSETCC(SDValue Op, SelectionDAG &DAG) const {
|
|||
softenSetCCOperands(DAG, MVT::f128, LHS, RHS, CC, dl);
|
||||
|
||||
// If softenSetCCOperands returned a scalar, use it.
|
||||
if (RHS.getNode() == 0) {
|
||||
if (!RHS.getNode()) {
|
||||
assert(LHS.getValueType() == Op.getValueType() &&
|
||||
"Unexpected setcc expansion!");
|
||||
return LHS;
|
||||
|
@ -2939,7 +2939,7 @@ SDValue ARM64TargetLowering::LowerSELECT_CC(SDValue Op,
|
|||
|
||||
// If softenSetCCOperands returned a scalar, we need to compare the result
|
||||
// against zero to select between true and false values.
|
||||
if (RHS.getNode() == 0) {
|
||||
if (!RHS.getNode()) {
|
||||
RHS = DAG.getConstant(0, LHS.getValueType());
|
||||
CC = ISD::SETNE;
|
||||
}
|
||||
|
@ -3563,7 +3563,7 @@ ARM64TargetLowering::getSingleConstraintMatchWeight(
|
|||
Value *CallOperandVal = info.CallOperandVal;
|
||||
// If we don't have a value, we can't do a match,
|
||||
// but allow it at the lowest weight.
|
||||
if (CallOperandVal == NULL)
|
||||
if (!CallOperandVal)
|
||||
return CW_Default;
|
||||
Type *type = CallOperandVal->getType();
|
||||
// Look at the constraint type.
|
||||
|
@ -3617,7 +3617,7 @@ ARM64TargetLowering::getRegForInlineAsmConstraint(const std::string &Constraint,
|
|||
Res = TargetLowering::getRegForInlineAsmConstraint(Constraint, VT);
|
||||
|
||||
// Not found as a standard register?
|
||||
if (Res.second == 0) {
|
||||
if (!Res.second) {
|
||||
unsigned Size = Constraint.size();
|
||||
if ((Size == 4 || Size == 5) && Constraint[0] == '{' &&
|
||||
tolower(Constraint[1]) == 'v' && Constraint[Size - 1] == '}') {
|
||||
|
@ -3642,7 +3642,7 @@ ARM64TargetLowering::getRegForInlineAsmConstraint(const std::string &Constraint,
|
|||
void ARM64TargetLowering::LowerAsmOperandForConstraint(
|
||||
SDValue Op, std::string &Constraint, std::vector<SDValue> &Ops,
|
||||
SelectionDAG &DAG) const {
|
||||
SDValue Result(0, 0);
|
||||
SDValue Result;
|
||||
|
||||
// Currently only support length 1 constraints.
|
||||
if (Constraint.length() != 1)
|
||||
|
|
|
@ -260,7 +260,7 @@ unsigned ARM64InstrInfo::InsertBranch(
|
|||
// Shouldn't be a fall through.
|
||||
assert(TBB && "InsertBranch must not be told to insert a fallthrough");
|
||||
|
||||
if (FBB == 0) {
|
||||
if (!FBB) {
|
||||
if (Cond.empty()) // Unconditional branch?
|
||||
BuildMI(&MBB, DL, get(ARM64::B)).addMBB(TBB);
|
||||
else
|
||||
|
@ -289,7 +289,7 @@ static unsigned removeCopies(const MachineRegisterInfo &MRI, unsigned VReg) {
|
|||
// csel instruction. If so, return the folded opcode, and the replacement
|
||||
// register.
|
||||
static unsigned canFoldIntoCSel(const MachineRegisterInfo &MRI, unsigned VReg,
|
||||
unsigned *NewVReg = 0) {
|
||||
unsigned *NewVReg = nullptr) {
|
||||
VReg = removeCopies(MRI, VReg);
|
||||
if (!TargetRegisterInfo::isVirtualRegister(VReg))
|
||||
return 0;
|
||||
|
@ -469,7 +469,7 @@ void ARM64InstrInfo::insertSelect(MachineBasicBlock &MBB,
|
|||
}
|
||||
|
||||
unsigned Opc = 0;
|
||||
const TargetRegisterClass *RC = 0;
|
||||
const TargetRegisterClass *RC = nullptr;
|
||||
bool TryFold = false;
|
||||
if (MRI.constrainRegClass(DstReg, &ARM64::GPR64RegClass)) {
|
||||
RC = &ARM64::GPR64RegClass;
|
||||
|
@ -1667,16 +1667,16 @@ ARM64InstrInfo::foldMemoryOperandImpl(MachineFunction &MF, MachineInstr *MI,
|
|||
unsigned SrcReg = MI->getOperand(1).getReg();
|
||||
if (SrcReg == ARM64::SP && TargetRegisterInfo::isVirtualRegister(DstReg)) {
|
||||
MF.getRegInfo().constrainRegClass(DstReg, &ARM64::GPR64RegClass);
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
if (DstReg == ARM64::SP && TargetRegisterInfo::isVirtualRegister(SrcReg)) {
|
||||
MF.getRegInfo().constrainRegClass(SrcReg, &ARM64::GPR64RegClass);
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
// Cannot fold.
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
int llvm::isARM64FrameOffsetLegal(const MachineInstr &MI, int &Offset,
|
||||
|
|
|
@ -489,8 +489,8 @@ ARM64PromoteConstant::insertDefinitions(Constant *Cst,
|
|||
ModuleToMergedGV.find(M);
|
||||
if (MapIt == ModuleToMergedGV.end()) {
|
||||
PromotedGV = new GlobalVariable(
|
||||
*M, Cst->getType(), true, GlobalValue::InternalLinkage, 0,
|
||||
"_PromotedConst", 0, GlobalVariable::NotThreadLocal);
|
||||
*M, Cst->getType(), true, GlobalValue::InternalLinkage, nullptr,
|
||||
"_PromotedConst", nullptr, GlobalVariable::NotThreadLocal);
|
||||
PromotedGV->setInitializer(Cst);
|
||||
ModuleToMergedGV[M] = PromotedGV;
|
||||
DEBUG(dbgs() << "Global replacement: ");
|
||||
|
|
|
@ -136,7 +136,7 @@ ARM64RegisterInfo::getPointerRegClass(const MachineFunction &MF,
|
|||
const TargetRegisterClass *
|
||||
ARM64RegisterInfo::getCrossCopyRegClass(const TargetRegisterClass *RC) const {
|
||||
if (RC == &ARM64::CCRRegClass)
|
||||
return NULL; // Can't copy CPSR.
|
||||
return nullptr; // Can't copy CPSR.
|
||||
return RC;
|
||||
}
|
||||
|
||||
|
|
|
@ -30,7 +30,7 @@ SDValue ARM64SelectionDAGInfo::EmitTargetCodeForMemset(
|
|||
ConstantSDNode *V = dyn_cast<ConstantSDNode>(Src);
|
||||
ConstantSDNode *SizeValue = dyn_cast<ConstantSDNode>(Size);
|
||||
const char *bzeroEntry =
|
||||
(V && V->isNullValue()) ? Subtarget->getBZeroEntry() : 0;
|
||||
(V && V->isNullValue()) ? Subtarget->getBZeroEntry() : nullptr;
|
||||
// For small size (< 256), it is not beneficial to use bzero
|
||||
// instead of memset.
|
||||
if (bzeroEntry && (!SizeValue || SizeValue->getZExtValue() > 256)) {
|
||||
|
|
|
@ -126,7 +126,7 @@ bool ARM64StorePairSuppress::runOnMachineFunction(MachineFunction &mf) {
|
|||
SchedModel.init(*ST.getSchedModel(), &ST, TII);
|
||||
|
||||
Traces = &getAnalysis<MachineTraceMetrics>();
|
||||
MinInstr = 0;
|
||||
MinInstr = nullptr;
|
||||
|
||||
DEBUG(dbgs() << "*** " << getPassName() << ": " << MF->getName() << '\n');
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@ class ARM64TTI final : public ImmutablePass, public TargetTransformInfo {
|
|||
unsigned getScalarizationOverhead(Type *Ty, bool Insert, bool Extract) const;
|
||||
|
||||
public:
|
||||
ARM64TTI() : ImmutablePass(ID), TM(0), ST(0), TLI(0) {
|
||||
ARM64TTI() : ImmutablePass(ID), TM(nullptr), ST(nullptr), TLI(nullptr) {
|
||||
llvm_unreachable("This pass cannot be directly constructed");
|
||||
}
|
||||
|
||||
|
|
|
@ -964,7 +964,7 @@ public:
|
|||
return false;
|
||||
if (Mem.Mode != ImmediateOffset)
|
||||
return false;
|
||||
return Mem.OffsetImm == 0;
|
||||
return Mem.OffsetImm == nullptr;
|
||||
}
|
||||
bool isMemoryIndexedSImm9() const {
|
||||
if (!isMem() || Mem.Mode != ImmediateOffset)
|
||||
|
@ -1041,7 +1041,7 @@ public:
|
|||
|
||||
void addExpr(MCInst &Inst, const MCExpr *Expr) const {
|
||||
// Add as immediates when possible. Null MCExpr = 0.
|
||||
if (Expr == 0)
|
||||
if (!Expr)
|
||||
Inst.addOperand(MCOperand::CreateImm(0));
|
||||
else if (const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(Expr))
|
||||
Inst.addOperand(MCOperand::CreateImm(CE->getValue()));
|
||||
|
@ -1688,7 +1688,7 @@ public:
|
|||
ARM64Operand *Op = new ARM64Operand(k_Memory, Ctx);
|
||||
Op->Mem.BaseRegNum = BaseReg;
|
||||
Op->Mem.OffsetRegNum = OffsetReg;
|
||||
Op->Mem.OffsetImm = 0;
|
||||
Op->Mem.OffsetImm = nullptr;
|
||||
Op->Mem.ExtType = ExtType;
|
||||
Op->Mem.ShiftVal = ShiftVal;
|
||||
Op->Mem.ExplicitShift = ExplicitShift;
|
||||
|
@ -2379,7 +2379,7 @@ bool ARM64AsmParser::parseSysAlias(StringRef Name, SMLoc NameLoc,
|
|||
StringRef Op = Tok.getString();
|
||||
SMLoc S = Tok.getLoc();
|
||||
|
||||
const MCExpr *Expr = 0;
|
||||
const MCExpr *Expr = nullptr;
|
||||
|
||||
#define SYS_ALIAS(op1, Cn, Cm, op2) \
|
||||
do { \
|
||||
|
@ -2799,7 +2799,7 @@ ARM64AsmParser::tryParseNoIndexMemory(OperandVector &Operands) {
|
|||
|
||||
Parser.Lex(); // Eat right bracket token.
|
||||
|
||||
Operands.push_back(ARM64Operand::CreateMem(Reg, 0, S, E, E, getContext()));
|
||||
Operands.push_back(ARM64Operand::CreateMem(Reg, nullptr, S, E, E, getContext()));
|
||||
return MatchOperand_Success;
|
||||
}
|
||||
|
||||
|
@ -2818,7 +2818,7 @@ bool ARM64AsmParser::parseMemory(OperandVector &Operands) {
|
|||
return Error(BaseRegTok.getLoc(), "register expected");
|
||||
|
||||
// If there is an offset expression, parse it.
|
||||
const MCExpr *OffsetExpr = 0;
|
||||
const MCExpr *OffsetExpr = nullptr;
|
||||
SMLoc OffsetLoc;
|
||||
if (Parser.getTok().is(AsmToken::Comma)) {
|
||||
Parser.Lex(); // Eat the comma.
|
||||
|
@ -3848,7 +3848,7 @@ bool ARM64AsmParser::MatchAndEmitInstruction(SMLoc IDLoc, unsigned &Opcode,
|
|||
const char *Repl = StringSwitch<const char *>(Tok)
|
||||
.Case("cmp", "subs")
|
||||
.Case("cmn", "adds")
|
||||
.Default(0);
|
||||
.Default(nullptr);
|
||||
assert(Repl && "Unknown compare instruction");
|
||||
delete Operands[0];
|
||||
Operands[0] = ARM64Operand::CreateToken(Repl, false, IDLoc, getContext());
|
||||
|
|
|
@ -167,7 +167,7 @@ bool ARM64ExternalSymbolizer::tryAddingSymbolicOperand(
|
|||
}
|
||||
}
|
||||
|
||||
const MCExpr *Add = NULL;
|
||||
const MCExpr *Add = nullptr;
|
||||
if (SymbolicOp.AddSymbol.Present) {
|
||||
if (SymbolicOp.AddSymbol.Name) {
|
||||
StringRef Name(SymbolicOp.AddSymbol.Name);
|
||||
|
@ -182,7 +182,7 @@ bool ARM64ExternalSymbolizer::tryAddingSymbolicOperand(
|
|||
}
|
||||
}
|
||||
|
||||
const MCExpr *Sub = NULL;
|
||||
const MCExpr *Sub = nullptr;
|
||||
if (SymbolicOp.SubtractSymbol.Present) {
|
||||
if (SymbolicOp.SubtractSymbol.Name) {
|
||||
StringRef Name(SymbolicOp.SubtractSymbol.Name);
|
||||
|
@ -193,7 +193,7 @@ bool ARM64ExternalSymbolizer::tryAddingSymbolicOperand(
|
|||
}
|
||||
}
|
||||
|
||||
const MCExpr *Off = NULL;
|
||||
const MCExpr *Off = nullptr;
|
||||
if (SymbolicOp.Value != 0)
|
||||
Off = MCConstantExpr::Create(SymbolicOp.Value, Ctx);
|
||||
|
||||
|
@ -204,17 +204,17 @@ bool ARM64ExternalSymbolizer::tryAddingSymbolicOperand(
|
|||
LHS = MCBinaryExpr::CreateSub(Add, Sub, Ctx);
|
||||
else
|
||||
LHS = MCUnaryExpr::CreateMinus(Sub, Ctx);
|
||||
if (Off != 0)
|
||||
if (Off)
|
||||
Expr = MCBinaryExpr::CreateAdd(LHS, Off, Ctx);
|
||||
else
|
||||
Expr = LHS;
|
||||
} else if (Add) {
|
||||
if (Off != 0)
|
||||
if (Off)
|
||||
Expr = MCBinaryExpr::CreateAdd(Add, Off, Ctx);
|
||||
else
|
||||
Expr = Add;
|
||||
} else {
|
||||
if (Off != 0)
|
||||
if (Off)
|
||||
Expr = Off;
|
||||
else
|
||||
Expr = MCConstantExpr::Create(0, Ctx);
|
||||
|
|
|
@ -85,7 +85,7 @@ void ARM64InstPrinter::printInst(const MCInst *MI, raw_ostream &O,
|
|||
|
||||
if (Op2.isImm() && Op2.getImm() == 0 && Op3.isImm()) {
|
||||
bool IsSigned = (Opcode == ARM64::SBFMXri || Opcode == ARM64::SBFMWri);
|
||||
const char *AsmMnemonic = 0;
|
||||
const char *AsmMnemonic = nullptr;
|
||||
|
||||
switch (Op3.getImm()) {
|
||||
default:
|
||||
|
@ -115,7 +115,7 @@ void ARM64InstPrinter::printInst(const MCInst *MI, raw_ostream &O,
|
|||
// instruction. In all cases the immediate shift amount shift must be in
|
||||
// the range 0 to (reg.size -1).
|
||||
if (Op2.isImm() && Op3.isImm()) {
|
||||
const char *AsmMnemonic = 0;
|
||||
const char *AsmMnemonic = nullptr;
|
||||
int shift = 0;
|
||||
int64_t immr = Op2.getImm();
|
||||
int64_t imms = Op3.getImm();
|
||||
|
@ -693,7 +693,7 @@ static LdStNInstrDesc *getLdStNInstrDesc(unsigned Opcode) {
|
|||
if (LdStNInstInfo[Idx].Opcode == Opcode)
|
||||
return &LdStNInstInfo[Idx];
|
||||
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void ARM64AppleInstPrinter::printInst(const MCInst *MI, raw_ostream &O,
|
||||
|
@ -754,7 +754,7 @@ bool ARM64InstPrinter::printSysAlias(const MCInst *MI, raw_ostream &O) {
|
|||
assert(Opcode == ARM64::SYSxt && "Invalid opcode for SYS alias!");
|
||||
#endif
|
||||
|
||||
const char *Asm = 0;
|
||||
const char *Asm = nullptr;
|
||||
const MCOperand &Op1 = MI->getOperand(0);
|
||||
const MCOperand &Cn = MI->getOperand(1);
|
||||
const MCOperand &Cm = MI->getOperand(2);
|
||||
|
@ -968,7 +968,7 @@ bool ARM64InstPrinter::printSysAlias(const MCInst *MI, raw_ostream &O) {
|
|||
O << ", " << getRegisterName(Reg);
|
||||
}
|
||||
|
||||
return Asm != 0;
|
||||
return Asm != nullptr;
|
||||
}
|
||||
|
||||
void ARM64InstPrinter::printOperand(const MCInst *MI, unsigned OpNo,
|
||||
|
|
|
@ -71,7 +71,7 @@ static MCAsmInfo *createARM64MCAsmInfo(const MCRegisterInfo &MRI,
|
|||
|
||||
// Initial state of the frame pointer is SP.
|
||||
unsigned Reg = MRI.getDwarfRegNum(ARM64::SP, true);
|
||||
MCCFIInstruction Inst = MCCFIInstruction::createDefCfa(0, Reg, 0);
|
||||
MCCFIInstruction Inst = MCCFIInstruction::createDefCfa(nullptr, Reg, 0);
|
||||
MAI->addInitialFrameState(Inst);
|
||||
|
||||
return MAI;
|
||||
|
@ -119,7 +119,7 @@ static MCInstPrinter *createARM64MCInstPrinter(const Target &T,
|
|||
if (SyntaxVariant == 1)
|
||||
return new ARM64AppleInstPrinter(MAI, MII, MRI, STI);
|
||||
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
static MCStreamer *createMCStreamer(const Target &T, StringRef TT,
|
||||
|
|
|
@ -241,14 +241,14 @@ void ARM64MachObjectWriter::RecordRelocation(
|
|||
Asm.getContext().FatalError(Fixup.getLoc(),
|
||||
"unsupported relocation with identical base");
|
||||
|
||||
Value += (A_SD.getFragment() == NULL ? 0 : Writer->getSymbolAddress(
|
||||
&A_SD, Layout)) -
|
||||
(A_Base == NULL || A_Base->getFragment() == NULL
|
||||
Value += (!A_SD.getFragment() ? 0
|
||||
: Writer->getSymbolAddress(&A_SD, Layout)) -
|
||||
(!A_Base || !A_Base->getFragment()
|
||||
? 0
|
||||
: Writer->getSymbolAddress(A_Base, Layout));
|
||||
Value -= (B_SD.getFragment() == NULL ? 0 : Writer->getSymbolAddress(
|
||||
&B_SD, Layout)) -
|
||||
(B_Base == NULL || B_Base->getFragment() == NULL
|
||||
Value -= (!B_SD.getFragment() ? 0
|
||||
: Writer->getSymbolAddress(&B_SD, Layout)) -
|
||||
(!B_Base || !B_Base->getFragment()
|
||||
? 0
|
||||
: Writer->getSymbolAddress(B_Base, Layout));
|
||||
|
||||
|
@ -302,7 +302,7 @@ void ARM64MachObjectWriter::RecordRelocation(
|
|||
// have already been fixed up.
|
||||
if (Symbol->isInSection()) {
|
||||
if (Section.hasAttribute(MachO::S_ATTR_DEBUG))
|
||||
Base = 0;
|
||||
Base = nullptr;
|
||||
}
|
||||
|
||||
// ARM64 uses external relocations as much as possible. For debug sections,
|
||||
|
|
|
@ -396,7 +396,7 @@ std::string CppWriter::getCppName(Type* Ty) {
|
|||
return I->second;
|
||||
|
||||
// Okay, let's build a new name for this type. Start with a prefix
|
||||
const char* prefix = 0;
|
||||
const char* prefix = nullptr;
|
||||
switch (Ty->getTypeID()) {
|
||||
case Type::FunctionTyID: prefix = "FuncTy_"; break;
|
||||
case Type::StructTyID: prefix = "StructTy_"; break;
|
||||
|
|
|
@ -225,7 +225,7 @@ static MCInstPrinter *createHexagonMCInstPrinter(const Target &T,
|
|||
if (SyntaxVariant == 0)
|
||||
return(new HexagonInstPrinter(MAI, MII, MRI));
|
||||
else
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
extern "C" void LLVMInitializeHexagonAsmPrinter() {
|
||||
|
|
|
@ -147,8 +147,8 @@ bool HexagonCFGOptimizer::runOnMachineFunction(MachineFunction &Fn) {
|
|||
MachineBasicBlock::succ_iterator SI = MBB->succ_begin();
|
||||
MachineBasicBlock* FirstSucc = *SI;
|
||||
MachineBasicBlock* SecondSucc = *(++SI);
|
||||
MachineBasicBlock* LayoutSucc = NULL;
|
||||
MachineBasicBlock* JumpAroundTarget = NULL;
|
||||
MachineBasicBlock* LayoutSucc = nullptr;
|
||||
MachineBasicBlock* JumpAroundTarget = nullptr;
|
||||
|
||||
if (MBB->isLayoutSuccessor(FirstSucc)) {
|
||||
LayoutSucc = FirstSucc;
|
||||
|
@ -162,7 +162,7 @@ bool HexagonCFGOptimizer::runOnMachineFunction(MachineFunction &Fn) {
|
|||
|
||||
// The target of the unconditional branch must be JumpAroundTarget.
|
||||
// TODO: If not, we should not invert the unconditional branch.
|
||||
MachineBasicBlock* CondBranchTarget = NULL;
|
||||
MachineBasicBlock* CondBranchTarget = nullptr;
|
||||
if ((MI->getOpcode() == Hexagon::JMP_t) ||
|
||||
(MI->getOpcode() == Hexagon::JMP_f)) {
|
||||
CondBranchTarget = MI->getOperand(1).getMBB();
|
||||
|
@ -240,7 +240,7 @@ bool HexagonCFGOptimizer::runOnMachineFunction(MachineFunction &Fn) {
|
|||
|
||||
static void initializePassOnce(PassRegistry &Registry) {
|
||||
PassInfo *PI = new PassInfo("Hexagon CFG Optimizer", "hexagon-cfg",
|
||||
&HexagonCFGOptimizer::ID, 0, false, false);
|
||||
&HexagonCFGOptimizer::ID, nullptr, false, false);
|
||||
Registry.registerPass(*PI, true);
|
||||
}
|
||||
|
||||
|
|
|
@ -262,7 +262,7 @@ bool HexagonCopyToCombine::isSafeToMoveTogether(MachineInstr *I1,
|
|||
unsigned KilledOperand = 0;
|
||||
if (I2->killsRegister(I2UseReg))
|
||||
KilledOperand = I2UseReg;
|
||||
MachineInstr *KillingInstr = 0;
|
||||
MachineInstr *KillingInstr = nullptr;
|
||||
|
||||
for (; I != End; ++I) {
|
||||
// If the intervening instruction I:
|
||||
|
@ -306,7 +306,7 @@ bool HexagonCopyToCombine::isSafeToMoveTogether(MachineInstr *I1,
|
|||
// Track killed operands. If we move across an instruction that kills our
|
||||
// operand, we need to update the kill information on the moved I1. It kills
|
||||
// the operand now.
|
||||
MachineInstr *KillingInstr = 0;
|
||||
MachineInstr *KillingInstr = nullptr;
|
||||
unsigned KilledOperand = 0;
|
||||
|
||||
while(++I != End) {
|
||||
|
@ -506,7 +506,7 @@ MachineInstr *HexagonCopyToCombine::findPairable(MachineInstr *I1,
|
|||
// Not safe. Stop searching.
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void HexagonCopyToCombine::combine(MachineInstr *I1, MachineInstr *I2,
|
||||
|
|
|
@ -187,7 +187,7 @@ static void initializePassOnce(PassRegistry &Registry) {
|
|||
const char *Name = "Hexagon Expand Predicate Spill Code";
|
||||
PassInfo *PI = new PassInfo(Name, "hexagon-spill-pred",
|
||||
&HexagonExpandPredSpillCode::ID,
|
||||
0, false, false);
|
||||
nullptr, false, false);
|
||||
Registry.registerPass(*PI, true);
|
||||
}
|
||||
|
||||
|
|
|
@ -246,7 +246,7 @@ HexagonFrameLowering::spillCalleeSavedRegisters(
|
|||
//
|
||||
unsigned SuperReg = uniqueSuperReg(Reg, TRI);
|
||||
bool CanUseDblStore = false;
|
||||
const TargetRegisterClass* SuperRegClass = 0;
|
||||
const TargetRegisterClass* SuperRegClass = nullptr;
|
||||
|
||||
if (ContiguousRegs && (i < CSI.size()-1)) {
|
||||
unsigned SuperRegNext = uniqueSuperReg(CSI[i+1].getReg(), TRI);
|
||||
|
@ -300,7 +300,7 @@ bool HexagonFrameLowering::restoreCalleeSavedRegisters(
|
|||
// Check if we can use a double-word load.
|
||||
//
|
||||
unsigned SuperReg = uniqueSuperReg(Reg, TRI);
|
||||
const TargetRegisterClass* SuperRegClass = 0;
|
||||
const TargetRegisterClass* SuperRegClass = nullptr;
|
||||
bool CanUseDblLoad = false;
|
||||
if (ContiguousRegs && (i < CSI.size()-1)) {
|
||||
unsigned SuperRegNext = uniqueSuperReg(CSI[i+1].getReg(), TRI);
|
||||
|
|
|
@ -265,8 +265,8 @@ namespace {
|
|||
return Contents.ImmVal;
|
||||
}
|
||||
|
||||
void print(raw_ostream &OS, const TargetMachine *TM = 0) const {
|
||||
const TargetRegisterInfo *TRI = TM ? TM->getRegisterInfo() : 0;
|
||||
void print(raw_ostream &OS, const TargetMachine *TM = nullptr) const {
|
||||
const TargetRegisterInfo *TRI = TM ? TM->getRegisterInfo() : nullptr;
|
||||
if (isReg()) { OS << PrintReg(Contents.R.Reg, TRI, Contents.R.Sub); }
|
||||
if (isImm()) { OS << Contents.ImmVal; }
|
||||
}
|
||||
|
@ -370,7 +370,7 @@ bool HexagonHardwareLoops::findInductionRegister(MachineLoop *L,
|
|||
} // for (instr)
|
||||
|
||||
SmallVector<MachineOperand,2> Cond;
|
||||
MachineBasicBlock *TB = 0, *FB = 0;
|
||||
MachineBasicBlock *TB = nullptr, *FB = nullptr;
|
||||
bool NotAnalyzed = TII->AnalyzeBranch(*Latch, TB, FB, Cond, false);
|
||||
if (NotAnalyzed)
|
||||
return false;
|
||||
|
@ -435,37 +435,37 @@ CountValue *HexagonHardwareLoops::getLoopTripCount(MachineLoop *L,
|
|||
"Loop must have more than one incoming edge!");
|
||||
MachineBasicBlock *Backedge = *PI++;
|
||||
if (PI == TopMBB->pred_end()) // dead loop?
|
||||
return 0;
|
||||
return nullptr;
|
||||
MachineBasicBlock *Incoming = *PI++;
|
||||
if (PI != TopMBB->pred_end()) // multiple backedges?
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
// Make sure there is one incoming and one backedge and determine which
|
||||
// is which.
|
||||
if (L->contains(Incoming)) {
|
||||
if (L->contains(Backedge))
|
||||
return 0;
|
||||
return nullptr;
|
||||
std::swap(Incoming, Backedge);
|
||||
} else if (!L->contains(Backedge))
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
// Look for the cmp instruction to determine if we can get a useful trip
|
||||
// count. The trip count can be either a register or an immediate. The
|
||||
// location of the value depends upon the type (reg or imm).
|
||||
MachineBasicBlock *Latch = L->getLoopLatch();
|
||||
if (!Latch)
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
unsigned IVReg = 0;
|
||||
int64_t IVBump = 0;
|
||||
MachineInstr *IVOp;
|
||||
bool FoundIV = findInductionRegister(L, IVReg, IVBump, IVOp);
|
||||
if (!FoundIV)
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
MachineBasicBlock *Preheader = L->getLoopPreheader();
|
||||
|
||||
MachineOperand *InitialValue = 0;
|
||||
MachineOperand *InitialValue = nullptr;
|
||||
MachineInstr *IV_Phi = MRI->getVRegDef(IVReg);
|
||||
for (unsigned i = 1, n = IV_Phi->getNumOperands(); i < n; i += 2) {
|
||||
MachineBasicBlock *MBB = IV_Phi->getOperand(i+1).getMBB();
|
||||
|
@ -475,13 +475,13 @@ CountValue *HexagonHardwareLoops::getLoopTripCount(MachineLoop *L,
|
|||
IVReg = IV_Phi->getOperand(i).getReg(); // Want IV reg after bump.
|
||||
}
|
||||
if (!InitialValue)
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
SmallVector<MachineOperand,2> Cond;
|
||||
MachineBasicBlock *TB = 0, *FB = 0;
|
||||
MachineBasicBlock *TB = nullptr, *FB = nullptr;
|
||||
bool NotAnalyzed = TII->AnalyzeBranch(*Latch, TB, FB, Cond, false);
|
||||
if (NotAnalyzed)
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
MachineBasicBlock *Header = L->getHeader();
|
||||
// TB must be non-null. If FB is also non-null, one of them must be
|
||||
|
@ -490,7 +490,7 @@ CountValue *HexagonHardwareLoops::getLoopTripCount(MachineLoop *L,
|
|||
assert (TB && "Latch block without a branch?");
|
||||
assert ((!FB || TB == Header || FB == Header) && "Branches not to header?");
|
||||
if (!TB || (FB && TB != Header && FB != Header))
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
// Branches of form "if (!P) ..." cause HexagonInstrInfo::AnalyzeBranch
|
||||
// to put imm(0), followed by P in the vector Cond.
|
||||
|
@ -506,7 +506,7 @@ CountValue *HexagonHardwareLoops::getLoopTripCount(MachineLoop *L,
|
|||
bool AnalyzedCmp = TII->analyzeCompare(CondI, CmpReg1, CmpReg2,
|
||||
Mask, ImmValue);
|
||||
if (!AnalyzedCmp)
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
// The comparison operator type determines how we compute the loop
|
||||
// trip count.
|
||||
|
@ -522,7 +522,7 @@ CountValue *HexagonHardwareLoops::getLoopTripCount(MachineLoop *L,
|
|||
bool isSwapped = false;
|
||||
const MachineOperand &Op1 = CondI->getOperand(1);
|
||||
const MachineOperand &Op2 = CondI->getOperand(2);
|
||||
const MachineOperand *EndValue = 0;
|
||||
const MachineOperand *EndValue = nullptr;
|
||||
|
||||
if (Op1.isReg()) {
|
||||
if (Op2.isImm() || Op1.getReg() == IVReg)
|
||||
|
@ -534,7 +534,7 @@ CountValue *HexagonHardwareLoops::getLoopTripCount(MachineLoop *L,
|
|||
}
|
||||
|
||||
if (!EndValue)
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
switch (CondOpc) {
|
||||
case Hexagon::CMPEQri:
|
||||
|
@ -553,7 +553,7 @@ CountValue *HexagonHardwareLoops::getLoopTripCount(MachineLoop *L,
|
|||
case Hexagon::CMPbEQri_V4:
|
||||
case Hexagon::CMPhEQri_V4: {
|
||||
if (IVBump != 1)
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
int64_t InitV, EndV;
|
||||
// Since the comparisons are "ri", the EndValue should be an
|
||||
|
@ -563,26 +563,26 @@ CountValue *HexagonHardwareLoops::getLoopTripCount(MachineLoop *L,
|
|||
// Allow InitialValue to be a register defined with an immediate.
|
||||
if (InitialValue->isReg()) {
|
||||
if (!defWithImmediate(InitialValue->getReg()))
|
||||
return 0;
|
||||
return nullptr;
|
||||
InitV = getImmediate(*InitialValue);
|
||||
} else {
|
||||
assert(InitialValue->isImm());
|
||||
InitV = InitialValue->getImm();
|
||||
}
|
||||
if (InitV >= EndV)
|
||||
return 0;
|
||||
return nullptr;
|
||||
if (CondOpc == Hexagon::CMPbEQri_V4) {
|
||||
if (!isInt<8>(InitV) || !isInt<8>(EndV))
|
||||
return 0;
|
||||
return nullptr;
|
||||
} else { // Hexagon::CMPhEQri_V4
|
||||
if (!isInt<16>(InitV) || !isInt<16>(EndV))
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
Cmp = !Negated ? Comparison::EQ : Comparison::NE;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (isSwapped)
|
||||
|
@ -592,14 +592,14 @@ CountValue *HexagonHardwareLoops::getLoopTripCount(MachineLoop *L,
|
|||
unsigned R = InitialValue->getReg();
|
||||
MachineBasicBlock *DefBB = MRI->getVRegDef(R)->getParent();
|
||||
if (!MDT->properlyDominates(DefBB, Header))
|
||||
return 0;
|
||||
return nullptr;
|
||||
OldInsts.push_back(MRI->getVRegDef(R));
|
||||
}
|
||||
if (EndValue->isReg()) {
|
||||
unsigned R = EndValue->getReg();
|
||||
MachineBasicBlock *DefBB = MRI->getVRegDef(R)->getParent();
|
||||
if (!MDT->properlyDominates(DefBB, Header))
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return computeCount(L, InitialValue, EndValue, IVReg, IVBump, Cmp);
|
||||
|
@ -617,7 +617,7 @@ CountValue *HexagonHardwareLoops::computeCount(MachineLoop *Loop,
|
|||
Comparison::Kind Cmp) const {
|
||||
// Cannot handle comparison EQ, i.e. while (A == B).
|
||||
if (Cmp == Comparison::EQ)
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
// Check if either the start or end values are an assignment of an immediate.
|
||||
// If so, use the immediate value rather than the register.
|
||||
|
@ -643,11 +643,11 @@ CountValue *HexagonHardwareLoops::computeCount(MachineLoop *Loop,
|
|||
// If loop executes while iv is "less" with the iv value going down, then
|
||||
// the iv must wrap.
|
||||
if (CmpLess && IVBump < 0)
|
||||
return 0;
|
||||
return nullptr;
|
||||
// If loop executes while iv is "greater" with the iv value going up, then
|
||||
// the iv must wrap.
|
||||
if (CmpGreater && IVBump > 0)
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
if (Start->isImm() && End->isImm()) {
|
||||
// Both, start and end are immediates.
|
||||
|
@ -655,15 +655,15 @@ CountValue *HexagonHardwareLoops::computeCount(MachineLoop *Loop,
|
|||
int64_t EndV = End->getImm();
|
||||
int64_t Dist = EndV - StartV;
|
||||
if (Dist == 0)
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
bool Exact = (Dist % IVBump) == 0;
|
||||
|
||||
if (Cmp == Comparison::NE) {
|
||||
if (!Exact)
|
||||
return 0;
|
||||
return nullptr;
|
||||
if ((Dist < 0) ^ (IVBump < 0))
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// For comparisons that include the final value (i.e. include equality
|
||||
|
@ -684,7 +684,7 @@ CountValue *HexagonHardwareLoops::computeCount(MachineLoop *Loop,
|
|||
uint64_t Count = Dist1;
|
||||
|
||||
if (Count > 0xFFFFFFFFULL)
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
return new CountValue(CountValue::CV_Immediate, Count);
|
||||
}
|
||||
|
@ -696,7 +696,7 @@ CountValue *HexagonHardwareLoops::computeCount(MachineLoop *Loop,
|
|||
// If the induction variable bump is not a power of 2, quit.
|
||||
// Othwerise we'd need a general integer division.
|
||||
if (!isPowerOf2_64(abs64(IVBump)))
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
MachineBasicBlock *PH = Loop->getLoopPreheader();
|
||||
assert (PH && "Should have a preheader by now");
|
||||
|
@ -767,7 +767,7 @@ CountValue *HexagonHardwareLoops::computeCount(MachineLoop *Loop,
|
|||
// Hardware loops cannot handle 64-bit registers. If it's a double
|
||||
// register, it has to have a subregister.
|
||||
if (!SR && RC == &Hexagon::DoubleRegsRegClass)
|
||||
return 0;
|
||||
return nullptr;
|
||||
const TargetRegisterClass *IntRC = &Hexagon::IntRegsRegClass;
|
||||
|
||||
// Compute DistR (register with the distance between Start and End).
|
||||
|
@ -1014,7 +1014,7 @@ bool HexagonHardwareLoops::convertToHardwareLoop(MachineLoop *L) {
|
|||
|
||||
MachineBasicBlock *LastMBB = L->getExitingBlock();
|
||||
// Don't generate hw loop if the loop has more than one exit.
|
||||
if (LastMBB == 0)
|
||||
if (!LastMBB)
|
||||
return false;
|
||||
|
||||
MachineBasicBlock::iterator LastI = LastMBB->getFirstTerminator();
|
||||
|
@ -1036,7 +1036,7 @@ bool HexagonHardwareLoops::convertToHardwareLoop(MachineLoop *L) {
|
|||
SmallVector<MachineInstr*, 2> OldInsts;
|
||||
// Are we able to determine the trip count for the loop?
|
||||
CountValue *TripCount = getLoopTripCount(L, OldInsts);
|
||||
if (TripCount == 0)
|
||||
if (!TripCount)
|
||||
return false;
|
||||
|
||||
// Is the trip count available in the preheader?
|
||||
|
@ -1128,7 +1128,7 @@ bool HexagonHardwareLoops::convertToHardwareLoop(MachineLoop *L) {
|
|||
if (LastI != LastMBB->end())
|
||||
LastI = LastMBB->erase(LastI);
|
||||
SmallVector<MachineOperand, 0> Cond;
|
||||
TII->InsertBranch(*LastMBB, BranchTarget, 0, Cond, LastIDL);
|
||||
TII->InsertBranch(*LastMBB, BranchTarget, nullptr, Cond, LastIDL);
|
||||
}
|
||||
} else {
|
||||
// Conditional branch to loop start; just delete it.
|
||||
|
@ -1197,7 +1197,7 @@ MachineInstr *HexagonHardwareLoops::defWithImmediate(unsigned R) {
|
|||
case Hexagon::CONST64_Int_Real:
|
||||
return DI;
|
||||
}
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
||||
|
@ -1292,7 +1292,7 @@ bool HexagonHardwareLoops::fixupInductionVariable(MachineLoop *L) {
|
|||
if (IndRegs.empty())
|
||||
return false;
|
||||
|
||||
MachineBasicBlock *TB = 0, *FB = 0;
|
||||
MachineBasicBlock *TB = nullptr, *FB = nullptr;
|
||||
SmallVector<MachineOperand,2> Cond;
|
||||
// AnalyzeBranch returns true if it fails to analyze branch.
|
||||
bool NotAnalyzed = TII->AnalyzeBranch(*Latch, TB, FB, Cond, false);
|
||||
|
@ -1323,7 +1323,7 @@ bool HexagonHardwareLoops::fixupInductionVariable(MachineLoop *L) {
|
|||
return false;
|
||||
|
||||
SmallSet<unsigned,2> CmpRegs;
|
||||
MachineOperand *CmpImmOp = 0;
|
||||
MachineOperand *CmpImmOp = nullptr;
|
||||
|
||||
// Go over all operands to the compare and look for immediate and register
|
||||
// operands. Assume that if the compare has a single register use and a
|
||||
|
@ -1421,7 +1421,7 @@ MachineBasicBlock *HexagonHardwareLoops::createPreheaderForLoop(
|
|||
DebugLoc DL;
|
||||
|
||||
if (!Latch || Header->hasAddressTaken())
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
typedef MachineBasicBlock::instr_iterator instr_iterator;
|
||||
|
||||
|
@ -1430,17 +1430,17 @@ MachineBasicBlock *HexagonHardwareLoops::createPreheaderForLoop(
|
|||
typedef std::vector<MachineBasicBlock*> MBBVector;
|
||||
MBBVector Preds(Header->pred_begin(), Header->pred_end());
|
||||
SmallVector<MachineOperand,2> Tmp1;
|
||||
MachineBasicBlock *TB = 0, *FB = 0;
|
||||
MachineBasicBlock *TB = nullptr, *FB = nullptr;
|
||||
|
||||
if (TII->AnalyzeBranch(*Latch, TB, FB, Tmp1, false))
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
for (MBBVector::iterator I = Preds.begin(), E = Preds.end(); I != E; ++I) {
|
||||
MachineBasicBlock *PB = *I;
|
||||
if (PB != Latch) {
|
||||
bool NotAnalyzed = TII->AnalyzeBranch(*PB, TB, FB, Tmp1, false);
|
||||
if (NotAnalyzed)
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1516,7 +1516,7 @@ MachineBasicBlock *HexagonHardwareLoops::createPreheaderForLoop(
|
|||
SmallVector<MachineOperand,1> Tmp2;
|
||||
SmallVector<MachineOperand,1> EmptyCond;
|
||||
|
||||
TB = FB = 0;
|
||||
TB = FB = nullptr;
|
||||
|
||||
for (MBBVector::iterator I = Preds.begin(), E = Preds.end(); I != E; ++I) {
|
||||
MachineBasicBlock *PB = *I;
|
||||
|
@ -1526,22 +1526,22 @@ MachineBasicBlock *HexagonHardwareLoops::createPreheaderForLoop(
|
|||
(void)NotAnalyzed; // suppress compiler warning
|
||||
assert (!NotAnalyzed && "Should be analyzable!");
|
||||
if (TB != Header && (Tmp2.empty() || FB != Header))
|
||||
TII->InsertBranch(*PB, NewPH, 0, EmptyCond, DL);
|
||||
TII->InsertBranch(*PB, NewPH, nullptr, EmptyCond, DL);
|
||||
PB->ReplaceUsesOfBlockWith(Header, NewPH);
|
||||
}
|
||||
}
|
||||
|
||||
// It can happen that the latch block will fall through into the header.
|
||||
// Insert an unconditional branch to the header.
|
||||
TB = FB = 0;
|
||||
TB = FB = nullptr;
|
||||
bool LatchNotAnalyzed = TII->AnalyzeBranch(*Latch, TB, FB, Tmp2, false);
|
||||
(void)LatchNotAnalyzed; // suppress compiler warning
|
||||
assert (!LatchNotAnalyzed && "Should be analyzable!");
|
||||
if (!TB && !FB)
|
||||
TII->InsertBranch(*Latch, Header, 0, EmptyCond, DL);
|
||||
TII->InsertBranch(*Latch, Header, nullptr, EmptyCond, DL);
|
||||
|
||||
// Finally, the branch from the preheader to the header.
|
||||
TII->InsertBranch(*NewPH, Header, 0, EmptyCond, DL);
|
||||
TII->InsertBranch(*NewPH, Header, nullptr, EmptyCond, DL);
|
||||
NewPH->addSuccessor(Header);
|
||||
|
||||
return NewPH;
|
||||
|
|
|
@ -187,7 +187,7 @@ FunctionPass *llvm::createHexagonISelDag(HexagonTargetMachine &TM,
|
|||
static void initializePassOnce(PassRegistry &Registry) {
|
||||
const char *Name = "Hexagon DAG->DAG Pattern Instruction Selection";
|
||||
PassInfo *PI = new PassInfo(Name, "hexagon-isel",
|
||||
&SelectionDAGISel::ID, 0, false, false);
|
||||
&SelectionDAGISel::ID, nullptr, false, false);
|
||||
Registry.registerPass(*PI, true);
|
||||
}
|
||||
|
||||
|
@ -1239,7 +1239,7 @@ SDNode *HexagonDAGToDAGISel::SelectIntrinsicWOChain(SDNode *N) {
|
|||
SDNode *PdRs = CurDAG->getMachineNode(Hexagon::TFR_PdRs, dl, MVT::i1,
|
||||
SDValue(Arg, 0));
|
||||
Ops.push_back(SDValue(PdRs,0));
|
||||
} else if (RC == NULL && (dyn_cast<ConstantSDNode>(Arg) != NULL)) {
|
||||
} else if (!RC && (dyn_cast<ConstantSDNode>(Arg) != nullptr)) {
|
||||
// This is immediate operand. Lower it here making sure that we DO have
|
||||
// const SDNode for immediate value.
|
||||
int32_t Val = cast<ConstantSDNode>(Arg)->getSExtValue();
|
||||
|
@ -1347,7 +1347,7 @@ SDNode *HexagonDAGToDAGISel::SelectAdd(SDNode *N) {
|
|||
SDNode *HexagonDAGToDAGISel::Select(SDNode *N) {
|
||||
if (N->isMachineOpcode()) {
|
||||
N->setNodeId(-1);
|
||||
return NULL; // Already selected.
|
||||
return nullptr; // Already selected.
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -412,7 +412,7 @@ HexagonTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
|
|||
int NumNamedVarArgParams = -1;
|
||||
if (GlobalAddressSDNode *GA = dyn_cast<GlobalAddressSDNode>(Callee))
|
||||
{
|
||||
const Function* CalleeFn = NULL;
|
||||
const Function* CalleeFn = nullptr;
|
||||
Callee = DAG.getTargetGlobalAddress(GA->getGlobal(), dl, MVT::i32);
|
||||
if ((CalleeFn = dyn_cast<Function>(GA->getGlobal())))
|
||||
{
|
||||
|
@ -1482,7 +1482,7 @@ HexagonTargetLowering::HexagonTargetLowering(HexagonTargetMachine
|
|||
const char*
|
||||
HexagonTargetLowering::getTargetNodeName(unsigned Opcode) const {
|
||||
switch (Opcode) {
|
||||
default: return 0;
|
||||
default: return nullptr;
|
||||
case HexagonISD::CONST32: return "HexagonISD::CONST32";
|
||||
case HexagonISD::CONST32_GP: return "HexagonISD::CONST32_GP";
|
||||
case HexagonISD::CONST32_Int_Real: return "HexagonISD::CONST32_Int_Real";
|
||||
|
|
|
@ -138,7 +138,7 @@ HexagonInstrInfo::InsertBranch(MachineBasicBlock &MBB,MachineBasicBlock *TBB,
|
|||
regPos = 1;
|
||||
}
|
||||
|
||||
if (FBB == 0) {
|
||||
if (!FBB) {
|
||||
if (Cond.empty()) {
|
||||
// Due to a bug in TailMerging/CFG Optimization, we need to add a
|
||||
// special case handling of a predicated jump followed by an
|
||||
|
@ -154,7 +154,7 @@ HexagonInstrInfo::InsertBranch(MachineBasicBlock &MBB,MachineBasicBlock *TBB,
|
|||
if (NewTBB == NextBB) {
|
||||
ReverseBranchCondition(Cond);
|
||||
RemoveBranch(MBB);
|
||||
return InsertBranch(MBB, TBB, 0, Cond, DL);
|
||||
return InsertBranch(MBB, TBB, nullptr, Cond, DL);
|
||||
}
|
||||
}
|
||||
BuildMI(&MBB, DL, get(BOpc)).addMBB(TBB);
|
||||
|
@ -177,8 +177,8 @@ bool HexagonInstrInfo::AnalyzeBranch(MachineBasicBlock &MBB,
|
|||
MachineBasicBlock *&FBB,
|
||||
SmallVectorImpl<MachineOperand> &Cond,
|
||||
bool AllowModify) const {
|
||||
TBB = NULL;
|
||||
FBB = NULL;
|
||||
TBB = nullptr;
|
||||
FBB = nullptr;
|
||||
|
||||
// If the block has no terminators, it just falls into the block after it.
|
||||
MachineBasicBlock::instr_iterator I = MBB.instr_end();
|
||||
|
@ -227,7 +227,7 @@ bool HexagonInstrInfo::AnalyzeBranch(MachineBasicBlock &MBB,
|
|||
|
||||
// Get the last instruction in the block.
|
||||
MachineInstr *LastInst = I;
|
||||
MachineInstr *SecondLastInst = NULL;
|
||||
MachineInstr *SecondLastInst = nullptr;
|
||||
// Find one more terminator if present.
|
||||
do {
|
||||
if (&*I != LastInst && !I->isBundle() && isUnpredicatedTerminator(I)) {
|
||||
|
@ -560,7 +560,7 @@ MachineInstr *HexagonInstrInfo::foldMemoryOperandImpl(MachineFunction &MF,
|
|||
const SmallVectorImpl<unsigned> &Ops,
|
||||
int FI) const {
|
||||
// Hexagon_TODO: Implement.
|
||||
return(0);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
unsigned HexagonInstrInfo::createVR(MachineFunction* MF, MVT VT) const {
|
||||
|
|
|
@ -22,7 +22,7 @@ using namespace llvm;
|
|||
|
||||
/// Platform specific modifications to DAG.
|
||||
void VLIWMachineScheduler::postprocessDAG() {
|
||||
SUnit* LastSequentialCall = NULL;
|
||||
SUnit* LastSequentialCall = nullptr;
|
||||
// Currently we only catch the situation when compare gets scheduled
|
||||
// before preceding call.
|
||||
for (unsigned su = 0, e = SUnits.size(); su != e; ++su) {
|
||||
|
@ -398,13 +398,13 @@ SUnit *ConvergingVLIWScheduler::VLIWSchedBoundary::pickOnlyChoice() {
|
|||
for (unsigned i = 0; Available.empty(); ++i) {
|
||||
assert(i <= (HazardRec->getMaxLookAhead() + MaxMinLatency) &&
|
||||
"permanent hazard"); (void)i;
|
||||
ResourceModel->reserveResources(0);
|
||||
ResourceModel->reserveResources(nullptr);
|
||||
bumpCycle();
|
||||
releasePending();
|
||||
}
|
||||
if (Available.size() == 1)
|
||||
return *Available.begin();
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
#ifndef NDEBUG
|
||||
|
@ -424,7 +424,7 @@ void ConvergingVLIWScheduler::traceCandidate(const char *Label,
|
|||
/// getSingleUnscheduledPred - If there is exactly one unscheduled predecessor
|
||||
/// of SU, return it, otherwise return null.
|
||||
static SUnit *getSingleUnscheduledPred(SUnit *SU) {
|
||||
SUnit *OnlyAvailablePred = 0;
|
||||
SUnit *OnlyAvailablePred = nullptr;
|
||||
for (SUnit::const_pred_iterator I = SU->Preds.begin(), E = SU->Preds.end();
|
||||
I != E; ++I) {
|
||||
SUnit &Pred = *I->getSUnit();
|
||||
|
@ -432,7 +432,7 @@ static SUnit *getSingleUnscheduledPred(SUnit *SU) {
|
|||
// We found an available, but not scheduled, predecessor. If it's the
|
||||
// only one we have found, keep track of it... otherwise give up.
|
||||
if (OnlyAvailablePred && OnlyAvailablePred != &Pred)
|
||||
return 0;
|
||||
return nullptr;
|
||||
OnlyAvailablePred = &Pred;
|
||||
}
|
||||
}
|
||||
|
@ -442,7 +442,7 @@ static SUnit *getSingleUnscheduledPred(SUnit *SU) {
|
|||
/// getSingleUnscheduledSucc - If there is exactly one unscheduled successor
|
||||
/// of SU, return it, otherwise return null.
|
||||
static SUnit *getSingleUnscheduledSucc(SUnit *SU) {
|
||||
SUnit *OnlyAvailableSucc = 0;
|
||||
SUnit *OnlyAvailableSucc = nullptr;
|
||||
for (SUnit::const_succ_iterator I = SU->Succs.begin(), E = SU->Succs.end();
|
||||
I != E; ++I) {
|
||||
SUnit &Succ = *I->getSUnit();
|
||||
|
@ -450,7 +450,7 @@ static SUnit *getSingleUnscheduledSucc(SUnit *SU) {
|
|||
// We found an available, but not scheduled, successor. If it's the
|
||||
// only one we have found, keep track of it... otherwise give up.
|
||||
if (OnlyAvailableSucc && OnlyAvailableSucc != &Succ)
|
||||
return 0;
|
||||
return nullptr;
|
||||
OnlyAvailableSucc = &Succ;
|
||||
}
|
||||
}
|
||||
|
@ -639,7 +639,7 @@ SUnit *ConvergingVLIWScheduler::pickNode(bool &IsTopNode) {
|
|||
if (DAG->top() == DAG->bottom()) {
|
||||
assert(Top.Available.empty() && Top.Pending.empty() &&
|
||||
Bot.Available.empty() && Bot.Pending.empty() && "ReadyQ garbage");
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
SUnit *SU;
|
||||
if (llvm::ForceTopDown) {
|
||||
|
|
|
@ -394,8 +394,8 @@ bool HexagonNewValueJump::runOnMachineFunction(MachineFunction &MF) {
|
|||
bool MO2IsKill = false;
|
||||
MachineBasicBlock::iterator jmpPos;
|
||||
MachineBasicBlock::iterator cmpPos;
|
||||
MachineInstr *cmpInstr = NULL, *jmpInstr = NULL;
|
||||
MachineBasicBlock *jmpTarget = NULL;
|
||||
MachineInstr *cmpInstr = nullptr, *jmpInstr = nullptr;
|
||||
MachineBasicBlock *jmpTarget = nullptr;
|
||||
bool afterRA = false;
|
||||
bool isSecondOpReg = false;
|
||||
bool isSecondOpNewified = false;
|
||||
|
|
|
@ -222,7 +222,8 @@ bool HexagonSplitTFRCondSets::runOnMachineFunction(MachineFunction &Fn) {
|
|||
static void initializePassOnce(PassRegistry &Registry) {
|
||||
const char *Name = "Hexagon Split TFRCondSets";
|
||||
PassInfo *PI = new PassInfo(Name, "hexagon-split-tfr",
|
||||
&HexagonSplitTFRCondSets::ID, 0, false, false);
|
||||
&HexagonSplitTFRCondSets::ID, nullptr, false,
|
||||
false);
|
||||
Registry.registerPass(*PI, true);
|
||||
}
|
||||
|
||||
|
|
|
@ -604,7 +604,7 @@ bool HexagonPacketizerList::CanPromoteToNewValueStore( MachineInstr *MI,
|
|||
// evaluate identically
|
||||
unsigned predRegNumSrc = 0;
|
||||
unsigned predRegNumDst = 0;
|
||||
const TargetRegisterClass* predRegClass = NULL;
|
||||
const TargetRegisterClass* predRegClass = nullptr;
|
||||
|
||||
// Get predicate register used in the source instruction
|
||||
for(unsigned opNum = 0; opNum < PacketMI->getNumOperands(); opNum++) {
|
||||
|
@ -1173,7 +1173,7 @@ bool HexagonPacketizerList::isLegalToPacketizeTogether(SUnit *SUI, SUnit *SUJ) {
|
|||
// of that (IsCallDependent) function. Bug 6216 is opened for this.
|
||||
//
|
||||
unsigned DepReg = 0;
|
||||
const TargetRegisterClass* RC = NULL;
|
||||
const TargetRegisterClass* RC = nullptr;
|
||||
if (DepType == SDep::Data) {
|
||||
DepReg = SUJ->Succs[i].getReg();
|
||||
RC = QRI->getMinimalPhysRegClass(DepReg);
|
||||
|
|
|
@ -21,7 +21,7 @@ void HexagonMCAsmInfo::anchor() {}
|
|||
HexagonMCAsmInfo::HexagonMCAsmInfo(StringRef TT) {
|
||||
Data16bitsDirective = "\t.half\t";
|
||||
Data32bitsDirective = "\t.word\t";
|
||||
Data64bitsDirective = 0; // .xword is only supported by V9.
|
||||
Data64bitsDirective = nullptr; // .xword is only supported by V9.
|
||||
ZeroDirective = "\t.skip\t";
|
||||
CommentString = "//";
|
||||
HasLEB128 = true;
|
||||
|
|
|
@ -60,7 +60,7 @@ static MCAsmInfo *createHexagonMCAsmInfo(const MCRegisterInfo &MRI,
|
|||
|
||||
// VirtualFP = (R30 + #0).
|
||||
MCCFIInstruction Inst = MCCFIInstruction::createDefCfa(
|
||||
0, Hexagon::R30, 0);
|
||||
nullptr, Hexagon::R30, 0);
|
||||
MAI->addInitialFrameState(Inst);
|
||||
|
||||
return MAI;
|
||||
|
|
|
@ -66,7 +66,7 @@ static MCInstPrinter *createMSP430MCInstPrinter(const Target &T,
|
|||
const MCSubtargetInfo &STI) {
|
||||
if (SyntaxVariant == 0)
|
||||
return new MSP430InstPrinter(MAI, MII, MRI);
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
extern "C" void LLVMInitializeMSP430TargetMC() {
|
||||
|
|
|
@ -47,7 +47,7 @@ namespace {
|
|||
}
|
||||
|
||||
void printOperand(const MachineInstr *MI, int OpNum,
|
||||
raw_ostream &O, const char* Modifier = 0);
|
||||
raw_ostream &O, const char* Modifier = nullptr);
|
||||
void printSrcMemOperand(const MachineInstr *MI, int OpNum,
|
||||
raw_ostream &O);
|
||||
bool PrintAsmOperand(const MachineInstr *MI, unsigned OpNo,
|
||||
|
|
|
@ -242,7 +242,7 @@ eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB,
|
|||
// alignment boundary.
|
||||
Amount = (Amount+StackAlign-1)/StackAlign*StackAlign;
|
||||
|
||||
MachineInstr *New = 0;
|
||||
MachineInstr *New = nullptr;
|
||||
if (Old->getOpcode() == TII.getCallFrameSetupOpcode()) {
|
||||
New = BuildMI(MF, Old->getDebugLoc(),
|
||||
TII.get(MSP430::SUB16ri), MSP430::SPW)
|
||||
|
|
|
@ -54,17 +54,17 @@ namespace {
|
|||
unsigned Align; // CP alignment.
|
||||
|
||||
MSP430ISelAddressMode()
|
||||
: BaseType(RegBase), Disp(0), GV(0), CP(0), BlockAddr(0),
|
||||
ES(0), JT(-1), Align(0) {
|
||||
: BaseType(RegBase), Disp(0), GV(nullptr), CP(nullptr),
|
||||
BlockAddr(nullptr), ES(nullptr), JT(-1), Align(0) {
|
||||
}
|
||||
|
||||
bool hasSymbolicDisplacement() const {
|
||||
return GV != 0 || CP != 0 || ES != 0 || JT != -1;
|
||||
return GV != nullptr || CP != nullptr || ES != nullptr || JT != -1;
|
||||
}
|
||||
|
||||
void dump() {
|
||||
errs() << "MSP430ISelAddressMode " << this << '\n';
|
||||
if (BaseType == RegBase && Base.Reg.getNode() != 0) {
|
||||
if (BaseType == RegBase && Base.Reg.getNode() != nullptr) {
|
||||
errs() << "Base.Reg ";
|
||||
Base.Reg.getNode()->dump();
|
||||
} else if (BaseType == FrameIndexBase) {
|
||||
|
@ -201,7 +201,7 @@ bool MSP430DAGToDAGISel::MatchAddress(SDValue N, MSP430ISelAddressMode &AM) {
|
|||
|
||||
case ISD::FrameIndex:
|
||||
if (AM.BaseType == MSP430ISelAddressMode::RegBase
|
||||
&& AM.Base.Reg.getNode() == 0) {
|
||||
&& AM.Base.Reg.getNode() == nullptr) {
|
||||
AM.BaseType = MSP430ISelAddressMode::FrameIndexBase;
|
||||
AM.Base.FrameIndex = cast<FrameIndexSDNode>(N)->getIndex();
|
||||
return false;
|
||||
|
@ -230,7 +230,7 @@ bool MSP430DAGToDAGISel::MatchAddress(SDValue N, MSP430ISelAddressMode &AM) {
|
|||
// Start with the LHS as an addr mode.
|
||||
if (!MatchAddress(N.getOperand(0), AM) &&
|
||||
// Address could not have picked a GV address for the displacement.
|
||||
AM.GV == NULL &&
|
||||
AM.GV == nullptr &&
|
||||
// Check to see if the LHS & C is zero.
|
||||
CurDAG->MaskedValueIsZero(N.getOperand(0), CN->getAPIntValue())) {
|
||||
AM.Disp += Offset;
|
||||
|
@ -332,7 +332,7 @@ static bool isValidIndexedLoad(const LoadSDNode *LD) {
|
|||
SDNode *MSP430DAGToDAGISel::SelectIndexedLoad(SDNode *N) {
|
||||
LoadSDNode *LD = cast<LoadSDNode>(N);
|
||||
if (!isValidIndexedLoad(LD))
|
||||
return NULL;
|
||||
return nullptr;
|
||||
|
||||
MVT VT = LD->getMemoryVT().getSimpleVT();
|
||||
|
||||
|
@ -345,7 +345,7 @@ SDNode *MSP430DAGToDAGISel::SelectIndexedLoad(SDNode *N) {
|
|||
Opcode = MSP430::MOV16rm_POST;
|
||||
break;
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return CurDAG->getMachineNode(Opcode, SDLoc(N),
|
||||
|
@ -361,7 +361,7 @@ SDNode *MSP430DAGToDAGISel::SelectIndexedBinOp(SDNode *Op,
|
|||
IsLegalToFold(N1, Op, Op, OptLevel)) {
|
||||
LoadSDNode *LD = cast<LoadSDNode>(N1);
|
||||
if (!isValidIndexedLoad(LD))
|
||||
return NULL;
|
||||
return nullptr;
|
||||
|
||||
MVT VT = LD->getMemoryVT().getSimpleVT();
|
||||
unsigned Opc = (VT == MVT::i16 ? Opc16 : Opc8);
|
||||
|
@ -380,7 +380,7 @@ SDNode *MSP430DAGToDAGISel::SelectIndexedBinOp(SDNode *Op,
|
|||
return ResNode;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
||||
|
@ -398,7 +398,7 @@ SDNode *MSP430DAGToDAGISel::Select(SDNode *Node) {
|
|||
Node->dump(CurDAG);
|
||||
errs() << "\n");
|
||||
Node->setNodeId(-1);
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// Few custom selection stuff.
|
||||
|
@ -486,7 +486,7 @@ SDNode *MSP430DAGToDAGISel::Select(SDNode *Node) {
|
|||
SDNode *ResNode = SelectCode(Node);
|
||||
|
||||
DEBUG(errs() << "=> ");
|
||||
if (ResNode == NULL || ResNode == Node)
|
||||
if (ResNode == nullptr || ResNode == Node)
|
||||
DEBUG(Node->dump(CurDAG));
|
||||
else
|
||||
DEBUG(ResNode->dump(CurDAG));
|
||||
|
|
|
@ -629,7 +629,7 @@ MSP430TargetLowering::LowerCCCCallTo(SDValue Chain, SDValue Callee,
|
|||
} else {
|
||||
assert(VA.isMemLoc());
|
||||
|
||||
if (StackPtr.getNode() == 0)
|
||||
if (!StackPtr.getNode())
|
||||
StackPtr = DAG.getCopyFromReg(Chain, dl, MSP430::SPW, getPointerTy());
|
||||
|
||||
SDValue PtrOff = DAG.getNode(ISD::ADD, dl, getPointerTy(),
|
||||
|
@ -1148,7 +1148,7 @@ bool MSP430TargetLowering::getPostIndexedAddressParts(SDNode *N, SDNode *Op,
|
|||
|
||||
const char *MSP430TargetLowering::getTargetNodeName(unsigned Opcode) const {
|
||||
switch (Opcode) {
|
||||
default: return NULL;
|
||||
default: return nullptr;
|
||||
case MSP430ISD::RET_FLAG: return "MSP430ISD::RET_FLAG";
|
||||
case MSP430ISD::RETI_FLAG: return "MSP430ISD::RETI_FLAG";
|
||||
case MSP430ISD::RRA: return "MSP430ISD::RRA";
|
||||
|
|
|
@ -208,11 +208,11 @@ bool MSP430InstrInfo::AnalyzeBranch(MachineBasicBlock &MBB,
|
|||
while (std::next(I) != MBB.end())
|
||||
std::next(I)->eraseFromParent();
|
||||
Cond.clear();
|
||||
FBB = 0;
|
||||
FBB = nullptr;
|
||||
|
||||
// Delete the JMP if it's equivalent to a fall-through.
|
||||
if (MBB.isLayoutSuccessor(I->getOperand(0).getMBB())) {
|
||||
TBB = 0;
|
||||
TBB = nullptr;
|
||||
I->eraseFromParent();
|
||||
I = MBB.end();
|
||||
continue;
|
||||
|
|
|
@ -469,7 +469,7 @@ private:
|
|||
public:
|
||||
void addExpr(MCInst &Inst, const MCExpr *Expr) const {
|
||||
// Add as immediate when possible. Null MCExpr = 0.
|
||||
if (Expr == 0)
|
||||
if (!Expr)
|
||||
Inst.addOperand(MCOperand::CreateImm(0));
|
||||
else if (const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(Expr))
|
||||
Inst.addOperand(MCOperand::CreateImm(CE->getValue()));
|
||||
|
@ -1616,7 +1616,7 @@ bool MipsAsmParser::parseMemOffset(const MCExpr *&Res, bool isParenExpr) {
|
|||
MipsAsmParser::OperandMatchResultTy MipsAsmParser::parseMemOperand(
|
||||
SmallVectorImpl<MCParsedAsmOperand *> &Operands) {
|
||||
DEBUG(dbgs() << "parseMemOperand\n");
|
||||
const MCExpr *IdVal = 0;
|
||||
const MCExpr *IdVal = nullptr;
|
||||
SMLoc S;
|
||||
bool isParenExpr = false;
|
||||
MipsAsmParser::OperandMatchResultTy Res = MatchOperand_NoMatch;
|
||||
|
@ -1672,7 +1672,7 @@ MipsAsmParser::OperandMatchResultTy MipsAsmParser::parseMemOperand(
|
|||
|
||||
Parser.Lex(); // Eat the ')' token.
|
||||
|
||||
if (IdVal == 0)
|
||||
if (!IdVal)
|
||||
IdVal = MCConstantExpr::Create(0, getContext());
|
||||
|
||||
// Replace the register operand with the memory operand.
|
||||
|
|
|
@ -31,7 +31,7 @@ using namespace llvm;
|
|||
|
||||
// Prepare value for the target space for it
|
||||
static unsigned adjustFixupValue(const MCFixup &Fixup, uint64_t Value,
|
||||
MCContext *Ctx = NULL) {
|
||||
MCContext *Ctx = nullptr) {
|
||||
|
||||
unsigned Kind = Fixup.getKind();
|
||||
|
||||
|
|
|
@ -79,7 +79,7 @@ static MCAsmInfo *createMipsMCAsmInfo(const MCRegisterInfo &MRI, StringRef TT) {
|
|||
MCAsmInfo *MAI = new MipsMCAsmInfo(TT);
|
||||
|
||||
unsigned SP = MRI.getDwarfRegNum(Mips::SP, true);
|
||||
MCCFIInstruction Inst = MCCFIInstruction::createDefCfa(0, SP, 0);
|
||||
MCCFIInstruction Inst = MCCFIInstruction::createDefCfa(nullptr, SP, 0);
|
||||
MAI->addInitialFrameState(Inst);
|
||||
|
||||
return MAI;
|
||||
|
|
|
@ -407,11 +407,11 @@ static bool fixupFPReturnAndCall
|
|||
CallInst::Create(F, Params, "", &Inst );
|
||||
} else if (const CallInst *CI = dyn_cast<CallInst>(I)) {
|
||||
const Value* V = CI->getCalledValue();
|
||||
const Type* T = 0;
|
||||
const Type* T = nullptr;
|
||||
if (V) T = V->getType();
|
||||
const PointerType *PFT=0;
|
||||
const PointerType *PFT=nullptr;
|
||||
if (T) PFT = dyn_cast<PointerType>(T);
|
||||
const FunctionType *FT=0;
|
||||
const FunctionType *FT=nullptr;
|
||||
if (PFT) FT = dyn_cast<FunctionType>(PFT->getElementType());
|
||||
Function *F_ = CI->getCalledFunction();
|
||||
if (FT && needsFPReturnHelper(*FT) &&
|
||||
|
|
|
@ -30,7 +30,7 @@ const FuncNameSignature PredefinedFuncs[] = {
|
|||
{ "__fixunssfsi", { FSig, NoFPRet } },
|
||||
{ "__fixunssfdi", { FSig, NoFPRet } },
|
||||
{ "__floatundisf", { NoSig, FRet } },
|
||||
{ 0, { NoSig, NoFPRet } }
|
||||
{ nullptr, { NoSig, NoFPRet } }
|
||||
};
|
||||
|
||||
// just do a search for now. there are very few of these special cases.
|
||||
|
@ -44,7 +44,7 @@ extern FuncSignature const *findFuncSignature(const char *name) {
|
|||
return &PredefinedFuncs[i].Signature;
|
||||
i++;
|
||||
}
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -45,7 +45,7 @@ bool Mips16DAGToDAGISel::runOnMachineFunction(MachineFunction &MF) {
|
|||
std::pair<SDNode*, SDNode*>
|
||||
Mips16DAGToDAGISel::selectMULT(SDNode *N, unsigned Opc, SDLoc DL, EVT Ty,
|
||||
bool HasLo, bool HasHi) {
|
||||
SDNode *Lo = 0, *Hi = 0;
|
||||
SDNode *Lo = nullptr, *Hi = nullptr;
|
||||
SDNode *Mul = CurDAG->getMachineNode(Opc, DL, MVT::Glue, N->getOperand(0),
|
||||
N->getOperand(1));
|
||||
SDValue InFlag = SDValue(Mul, 0);
|
||||
|
@ -298,7 +298,7 @@ std::pair<bool, SDNode*> Mips16DAGToDAGISel::selectNode(SDNode *Node) {
|
|||
if (!SDValue(Node, 1).use_empty())
|
||||
ReplaceUses(SDValue(Node, 1), SDValue(LoHi.second, 0));
|
||||
|
||||
return std::make_pair(true, (SDNode*)NULL);
|
||||
return std::make_pair(true, nullptr);
|
||||
}
|
||||
|
||||
case ISD::MULHS:
|
||||
|
@ -309,7 +309,7 @@ std::pair<bool, SDNode*> Mips16DAGToDAGISel::selectNode(SDNode *Node) {
|
|||
}
|
||||
}
|
||||
|
||||
return std::make_pair(false, (SDNode*)NULL);
|
||||
return std::make_pair(false, nullptr);
|
||||
}
|
||||
|
||||
FunctionPass *llvm::createMips16ISelDag(MipsTargetMachine &TM) {
|
||||
|
|
|
@ -354,7 +354,7 @@ unsigned int Mips16TargetLowering::getMips16HelperFunctionStubNumber
|
|||
#define T P "0" , T1
|
||||
#define P P_
|
||||
static char const * vMips16Helper[MAX_STUB_NUMBER+1] =
|
||||
{0, T1 };
|
||||
{nullptr, T1 };
|
||||
#undef P
|
||||
#define P P_ "sf_"
|
||||
static char const * sfMips16Helper[MAX_STUB_NUMBER+1] =
|
||||
|
@ -431,7 +431,7 @@ getOpndList(SmallVectorImpl<SDValue> &Ops,
|
|||
SelectionDAG &DAG = CLI.DAG;
|
||||
MachineFunction &MF = DAG.getMachineFunction();
|
||||
MipsFunctionInfo *FuncInfo = MF.getInfo<MipsFunctionInfo>();
|
||||
const char* Mips16HelperFunction = 0;
|
||||
const char* Mips16HelperFunction = nullptr;
|
||||
bool NeedMips16Helper = false;
|
||||
|
||||
if (Subtarget->inMips16HardFloat()) {
|
||||
|
|
|
@ -837,7 +837,7 @@ void MipsAsmPrinter::EmitFPCallStub(
|
|||
const MCSectionELF *M = OutContext.getELFSection(
|
||||
".mips16.call.fp." + std::string(Symbol), ELF::SHT_PROGBITS,
|
||||
ELF::SHF_ALLOC | ELF::SHF_EXECINSTR, SectionKind::getText());
|
||||
OutStreamer.SwitchSection(M, 0);
|
||||
OutStreamer.SwitchSection(M, nullptr);
|
||||
//
|
||||
// .align 2
|
||||
//
|
||||
|
|
|
@ -66,8 +66,8 @@ class MipsCodeEmitter : public MachineFunctionPass {
|
|||
|
||||
public:
|
||||
MipsCodeEmitter(TargetMachine &tm, JITCodeEmitter &mce)
|
||||
: MachineFunctionPass(ID), JTI(0), II(0), TD(0),
|
||||
TM(tm), MCE(mce), MCPEs(0), MJTEs(0),
|
||||
: MachineFunctionPass(ID), JTI(nullptr), II(nullptr), TD(nullptr),
|
||||
TM(tm), MCE(mce), MCPEs(nullptr), MJTEs(nullptr),
|
||||
IsPIC(TM.getRelocationModel() == Reloc::PIC_) {}
|
||||
|
||||
bool runOnMachineFunction(MachineFunction &MF);
|
||||
|
@ -139,7 +139,7 @@ bool MipsCodeEmitter::runOnMachineFunction(MachineFunction &MF) {
|
|||
TD = Target.getDataLayout();
|
||||
Subtarget = &TM.getSubtarget<MipsSubtarget> ();
|
||||
MCPEs = &MF.getConstantPool()->getConstants();
|
||||
MJTEs = 0;
|
||||
MJTEs = nullptr;
|
||||
if (MF.getJumpTableInfo()) MJTEs = &MF.getJumpTableInfo()->getJumpTables();
|
||||
JTI->Initialize(MF, IsPIC, Subtarget->isLittle());
|
||||
MCE.setModuleInfo(&getAnalysis<MachineModuleInfo> ());
|
||||
|
|
|
@ -368,7 +368,7 @@ namespace {
|
|||
: MachineFunctionPass(ID), TM(tm),
|
||||
IsPIC(TM.getRelocationModel() == Reloc::PIC_),
|
||||
ABI(TM.getSubtarget<MipsSubtarget>().getTargetABI()),
|
||||
STI(&TM.getSubtarget<MipsSubtarget>()), MF(0), MCP(0),
|
||||
STI(&TM.getSubtarget<MipsSubtarget>()), MF(nullptr), MCP(nullptr),
|
||||
PrescannedForConstants(false){}
|
||||
|
||||
virtual const char *getPassName() const {
|
||||
|
@ -628,7 +628,7 @@ MipsConstantIslands::CPEntry
|
|||
if (CPEs[i].CPEMI == CPEMI)
|
||||
return &CPEs[i];
|
||||
}
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
/// getCPELogAlign - Returns the required alignment of the constant pool entry
|
||||
|
@ -1065,7 +1065,7 @@ bool MipsConstantIslands::decrementCPEReferenceCount(unsigned CPI,
|
|||
assert(CPE && "Unexpected!");
|
||||
if (--CPE->RefCount == 0) {
|
||||
removeDeadCPEMI(CPEMI);
|
||||
CPE->CPEMI = NULL;
|
||||
CPE->CPEMI = nullptr;
|
||||
--NumCPEs;
|
||||
return true;
|
||||
}
|
||||
|
@ -1098,7 +1098,7 @@ int MipsConstantIslands::findInRangeCPEntry(CPUser& U, unsigned UserOffset)
|
|||
if (CPEs[i].CPEMI == CPEMI)
|
||||
continue;
|
||||
// Removing CPEs can leave empty entries, skip
|
||||
if (CPEs[i].CPEMI == NULL)
|
||||
if (CPEs[i].CPEMI == nullptr)
|
||||
continue;
|
||||
if (isCPEntryInRange(UserMI, UserOffset, CPEs[i].CPEMI, U.getMaxDisp(),
|
||||
U.NegOk)) {
|
||||
|
@ -1154,7 +1154,7 @@ int MipsConstantIslands::findLongFormInRangeCPEntry
|
|||
if (CPEs[i].CPEMI == CPEMI)
|
||||
continue;
|
||||
// Removing CPEs can leave empty entries, skip
|
||||
if (CPEs[i].CPEMI == NULL)
|
||||
if (CPEs[i].CPEMI == nullptr)
|
||||
continue;
|
||||
if (isCPEntryInRange(UserMI, UserOffset, CPEs[i].CPEMI,
|
||||
U.getLongFormMaxDisp(), U.NegOk)) {
|
||||
|
@ -1486,7 +1486,7 @@ bool MipsConstantIslands::removeUnusedCPEntries() {
|
|||
for (unsigned j = 0, ee = CPEs.size(); j != ee; ++j) {
|
||||
if (CPEs[j].RefCount == 0 && CPEs[j].CPEMI) {
|
||||
removeDeadCPEMI(CPEs[j].CPEMI);
|
||||
CPEs[j].CPEMI = NULL;
|
||||
CPEs[j].CPEMI = nullptr;
|
||||
MadeChange = true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -408,7 +408,7 @@ bool LoadFromStackOrConst::hasHazard_(const MachineInstr &MI) {
|
|||
(*MI.memoperands_begin())->getPseudoValue()) {
|
||||
if (isa<FixedStackPseudoSourceValue>(PSV))
|
||||
return false;
|
||||
return !PSV->isConstant(0) && PSV != PseudoSourceValue::getStack();
|
||||
return !PSV->isConstant(nullptr) && PSV != PseudoSourceValue::getStack();
|
||||
}
|
||||
|
||||
return true;
|
||||
|
@ -644,7 +644,7 @@ bool Filler::searchSuccBBs(MachineBasicBlock &MBB, Iter Slot) const {
|
|||
|
||||
MachineBasicBlock *Filler::selectSuccBB(MachineBasicBlock &B) const {
|
||||
if (B.succ_empty())
|
||||
return NULL;
|
||||
return nullptr;
|
||||
|
||||
// Select the successor with the larget edge weight.
|
||||
auto &Prob = getAnalysis<MachineBranchProbabilityInfo>();
|
||||
|
@ -653,14 +653,14 @@ MachineBasicBlock *Filler::selectSuccBB(MachineBasicBlock &B) const {
|
|||
const MachineBasicBlock *Dst1) {
|
||||
return Prob.getEdgeWeight(&B, Dst0) < Prob.getEdgeWeight(&B, Dst1);
|
||||
});
|
||||
return S->isLandingPad() ? NULL : S;
|
||||
return S->isLandingPad() ? nullptr : S;
|
||||
}
|
||||
|
||||
std::pair<MipsInstrInfo::BranchType, MachineInstr *>
|
||||
Filler::getBranch(MachineBasicBlock &MBB, const MachineBasicBlock &Dst) const {
|
||||
const MipsInstrInfo *TII =
|
||||
static_cast<const MipsInstrInfo*>(TM.getInstrInfo());
|
||||
MachineBasicBlock *TrueBB = 0, *FalseBB = 0;
|
||||
MachineBasicBlock *TrueBB = nullptr, *FalseBB = nullptr;
|
||||
SmallVector<MachineInstr*, 2> BranchInstrs;
|
||||
SmallVector<MachineOperand, 2> Cond;
|
||||
|
||||
|
@ -668,11 +668,11 @@ Filler::getBranch(MachineBasicBlock &MBB, const MachineBasicBlock &Dst) const {
|
|||
TII->AnalyzeBranch(MBB, TrueBB, FalseBB, Cond, false, BranchInstrs);
|
||||
|
||||
if ((R == MipsInstrInfo::BT_None) || (R == MipsInstrInfo::BT_NoBranch))
|
||||
return std::make_pair(R, (MachineInstr*)NULL);
|
||||
return std::make_pair(R, nullptr);
|
||||
|
||||
if (R != MipsInstrInfo::BT_CondUncond) {
|
||||
if (!hasUnoccupiedSlot(BranchInstrs[0]))
|
||||
return std::make_pair(MipsInstrInfo::BT_None, (MachineInstr*)NULL);
|
||||
return std::make_pair(MipsInstrInfo::BT_None, nullptr);
|
||||
|
||||
assert(((R != MipsInstrInfo::BT_Uncond) || (TrueBB == &Dst)));
|
||||
|
||||
|
@ -689,7 +689,7 @@ Filler::getBranch(MachineBasicBlock &MBB, const MachineBasicBlock &Dst) const {
|
|||
if (hasUnoccupiedSlot(BranchInstrs[1]) && (FalseBB == &Dst))
|
||||
return std::make_pair(MipsInstrInfo::BT_Uncond, BranchInstrs[1]);
|
||||
|
||||
return std::make_pair(MipsInstrInfo::BT_None, (MachineInstr*)NULL);
|
||||
return std::make_pair(MipsInstrInfo::BT_None, nullptr);
|
||||
}
|
||||
|
||||
bool Filler::examinePred(MachineBasicBlock &Pred, const MachineBasicBlock &Succ,
|
||||
|
|
|
@ -183,7 +183,7 @@ SDNode* MipsDAGToDAGISel::Select(SDNode *Node) {
|
|||
if (Node->isMachineOpcode()) {
|
||||
DEBUG(errs() << "== "; Node->dump(CurDAG); errs() << "\n");
|
||||
Node->setNodeId(-1);
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// See if subclasses can handle this node.
|
||||
|
@ -213,7 +213,7 @@ SDNode* MipsDAGToDAGISel::Select(SDNode *Node) {
|
|||
SDNode *ResNode = SelectCode(Node);
|
||||
|
||||
DEBUG(errs() << "=> ");
|
||||
if (ResNode == NULL || ResNode == Node)
|
||||
if (ResNode == nullptr || ResNode == Node)
|
||||
DEBUG(Node->dump(CurDAG));
|
||||
else
|
||||
DEBUG(ResNode->dump(CurDAG));
|
||||
|
|
|
@ -204,7 +204,7 @@ const char *MipsTargetLowering::getTargetNodeName(unsigned Opcode) const {
|
|||
case MipsISD::PCKEV: return "MipsISD::PCKEV";
|
||||
case MipsISD::PCKOD: return "MipsISD::PCKOD";
|
||||
case MipsISD::INSVE: return "MipsISD::INSVE";
|
||||
default: return NULL;
|
||||
default: return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2819,7 +2819,7 @@ MipsTargetLowering::getSingleConstraintMatchWeight(
|
|||
Value *CallOperandVal = info.CallOperandVal;
|
||||
// If we don't have a value, we can't do a match,
|
||||
// but allow it at the lowest weight.
|
||||
if (CallOperandVal == NULL)
|
||||
if (!CallOperandVal)
|
||||
return CW_Default;
|
||||
Type *type = CallOperandVal->getType();
|
||||
// Look at the constraint type.
|
||||
|
@ -2897,12 +2897,12 @@ parseRegForInlineAsmConstraint(const StringRef &C, MVT VT) const {
|
|||
std::pair<bool, bool> R = parsePhysicalReg(C, Prefix, Reg);
|
||||
|
||||
if (!R.first)
|
||||
return std::make_pair((unsigned)0, (const TargetRegisterClass*)0);
|
||||
return std::make_pair(0U, nullptr);
|
||||
|
||||
if ((Prefix == "hi" || Prefix == "lo")) { // Parse hi/lo.
|
||||
// No numeric characters follow "hi" or "lo".
|
||||
if (R.second)
|
||||
return std::make_pair((unsigned)0, (const TargetRegisterClass*)0);
|
||||
return std::make_pair(0U, nullptr);
|
||||
|
||||
RC = TRI->getRegClass(Prefix == "hi" ?
|
||||
Mips::HI32RegClassID : Mips::LO32RegClassID);
|
||||
|
@ -2912,7 +2912,7 @@ parseRegForInlineAsmConstraint(const StringRef &C, MVT VT) const {
|
|||
|
||||
// No numeric characters follow the name.
|
||||
if (R.second)
|
||||
return std::make_pair((unsigned)0, (const TargetRegisterClass *)0);
|
||||
return std::make_pair(0U, nullptr);
|
||||
|
||||
Reg = StringSwitch<unsigned long long>(Prefix)
|
||||
.Case("$msair", Mips::MSAIR)
|
||||
|
@ -2926,14 +2926,14 @@ parseRegForInlineAsmConstraint(const StringRef &C, MVT VT) const {
|
|||
.Default(0);
|
||||
|
||||
if (!Reg)
|
||||
return std::make_pair((unsigned)0, (const TargetRegisterClass *)0);
|
||||
return std::make_pair(0U, nullptr);
|
||||
|
||||
RC = TRI->getRegClass(Mips::MSACtrlRegClassID);
|
||||
return std::make_pair(Reg, RC);
|
||||
}
|
||||
|
||||
if (!R.second)
|
||||
return std::make_pair((unsigned)0, (const TargetRegisterClass*)0);
|
||||
return std::make_pair(0U, nullptr);
|
||||
|
||||
if (Prefix == "$f") { // Parse $f0-$f31.
|
||||
// If the size of FP registers is 64-bit or Reg is an even number, select
|
||||
|
@ -2981,7 +2981,7 @@ getRegForInlineAsmConstraint(const std::string &Constraint, MVT VT) const
|
|||
if (VT == MVT::i64 && isGP64bit())
|
||||
return std::make_pair(0U, &Mips::GPR64RegClass);
|
||||
// This will generate an error message
|
||||
return std::make_pair(0u, static_cast<const TargetRegisterClass*>(0));
|
||||
return std::make_pair(0U, nullptr);
|
||||
case 'f': // FPU or MSA register
|
||||
if (VT == MVT::v16i8)
|
||||
return std::make_pair(0U, &Mips::MSA128BRegClass);
|
||||
|
@ -3011,7 +3011,7 @@ getRegForInlineAsmConstraint(const std::string &Constraint, MVT VT) const
|
|||
case 'x': // register suitable for indirect jump
|
||||
// Fixme: Not triggering the use of both hi and low
|
||||
// This will generate an error message
|
||||
return std::make_pair(0u, static_cast<const TargetRegisterClass*>(0));
|
||||
return std::make_pair(0U, nullptr);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3030,7 +3030,7 @@ void MipsTargetLowering::LowerAsmOperandForConstraint(SDValue Op,
|
|||
std::string &Constraint,
|
||||
std::vector<SDValue>&Ops,
|
||||
SelectionDAG &DAG) const {
|
||||
SDValue Result(0, 0);
|
||||
SDValue Result;
|
||||
|
||||
// Only support length 1 constraints for now.
|
||||
if (Constraint.length() > 1) return;
|
||||
|
@ -3293,7 +3293,7 @@ analyzeFormalArguments(const SmallVectorImpl<ISD::InputArg> &Args,
|
|||
continue;
|
||||
}
|
||||
|
||||
MVT RegVT = getRegVT(ArgVT, FuncArg->getType(), 0, IsSoftFloat);
|
||||
MVT RegVT = getRegVT(ArgVT, FuncArg->getType(), nullptr, IsSoftFloat);
|
||||
|
||||
if (!FixedFn(I, ArgVT, RegVT, CCValAssign::Full, ArgFlags, CCInfo))
|
||||
continue;
|
||||
|
@ -3341,7 +3341,7 @@ analyzeCallResult(const SmallVectorImpl<ISD::InputArg> &Ins, bool IsSoftFloat,
|
|||
void MipsTargetLowering::MipsCC::
|
||||
analyzeReturn(const SmallVectorImpl<ISD::OutputArg> &Outs, bool IsSoftFloat,
|
||||
const Type *RetTy) const {
|
||||
analyzeReturn(Outs, IsSoftFloat, 0, RetTy);
|
||||
analyzeReturn(Outs, IsSoftFloat, nullptr, RetTy);
|
||||
}
|
||||
|
||||
void MipsTargetLowering::MipsCC::handleByValArg(unsigned ValNo, MVT ValVT,
|
||||
|
@ -3611,7 +3611,7 @@ void MipsTargetLowering::writeVarArgRegs(std::vector<SDValue> &OutChains,
|
|||
SDValue PtrOff = DAG.getFrameIndex(FI, getPointerTy());
|
||||
SDValue Store = DAG.getStore(Chain, DL, ArgValue, PtrOff,
|
||||
MachinePointerInfo(), false, false, 0);
|
||||
cast<StoreSDNode>(Store.getNode())->getMemOperand()->setValue((Value*)0);
|
||||
cast<StoreSDNode>(Store.getNode())->getMemOperand()->setValue((Value*)nullptr);
|
||||
OutChains.push_back(Store);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -195,7 +195,7 @@ AnalyzeBranch(MachineBasicBlock &MBB, MachineBasicBlock *&TBB,
|
|||
if (I == REnd || !isUnpredicatedTerminator(&*I)) {
|
||||
// This block ends with no branches (it just falls through to its succ).
|
||||
// Leave TBB/FBB null.
|
||||
TBB = FBB = NULL;
|
||||
TBB = FBB = nullptr;
|
||||
return BT_NoBranch;
|
||||
}
|
||||
|
||||
|
@ -209,7 +209,7 @@ AnalyzeBranch(MachineBasicBlock &MBB, MachineBasicBlock *&TBB,
|
|||
|
||||
// Get the second to last instruction in the block.
|
||||
unsigned SecondLastOpc = 0;
|
||||
MachineInstr *SecondLastInst = NULL;
|
||||
MachineInstr *SecondLastInst = nullptr;
|
||||
|
||||
if (++I != REnd) {
|
||||
SecondLastInst = &*I;
|
||||
|
|
|
@ -56,7 +56,7 @@ namespace {
|
|||
bool HasLongBranch;
|
||||
MachineInstr *Br;
|
||||
|
||||
MBBInfo() : Size(0), HasLongBranch(false), Br(0) {}
|
||||
MBBInfo() : Size(0), HasLongBranch(false), Br(nullptr) {}
|
||||
};
|
||||
|
||||
class MipsLongBranch : public MachineFunctionPass {
|
||||
|
@ -111,7 +111,7 @@ static MachineBasicBlock *getTargetMBB(const MachineInstr &Br) {
|
|||
}
|
||||
|
||||
assert(false && "This instruction does not have an MBB operand.");
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// Traverse the list of instructions backwards until a non-debug instruction is
|
||||
|
|
|
@ -103,13 +103,13 @@ char OptimizePICCall::ID = 0;
|
|||
/// Return the first MachineOperand of MI if it is a used virtual register.
|
||||
static MachineOperand *getCallTargetRegOpnd(MachineInstr &MI) {
|
||||
if (MI.getNumOperands() == 0)
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
MachineOperand &MO = MI.getOperand(0);
|
||||
|
||||
if (!MO.isReg() || !MO.isUse() ||
|
||||
!TargetRegisterInfo::isVirtualRegister(MO.getReg()))
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
return &MO;
|
||||
}
|
||||
|
@ -158,7 +158,7 @@ static void eraseGPOpnd(MachineInstr &MI) {
|
|||
llvm_unreachable(0);
|
||||
}
|
||||
|
||||
MBBInfo::MBBInfo(MachineDomTreeNode *N) : Node(N), HTScope(0) {}
|
||||
MBBInfo::MBBInfo(MachineDomTreeNode *N) : Node(N), HTScope(nullptr) {}
|
||||
|
||||
const MachineDomTreeNode *MBBInfo::getNode() const { return Node; }
|
||||
|
||||
|
@ -256,7 +256,7 @@ bool OptimizePICCall::isCallViaRegister(MachineInstr &MI, unsigned &Reg,
|
|||
|
||||
// Get the instruction that loads the function address from the GOT.
|
||||
Reg = MO->getReg();
|
||||
Val = (Value*)0;
|
||||
Val = (Value*)nullptr;
|
||||
MachineRegisterInfo &MRI = MI.getParent()->getParent()->getRegInfo();
|
||||
MachineInstr *DefMI = MRI.getVRegDef(Reg);
|
||||
|
||||
|
|
|
@ -413,7 +413,7 @@ bool MipsSEDAGToDAGISel::selectVSplat(SDNode *N, APInt &Imm) const {
|
|||
|
||||
BuildVectorSDNode *Node = dyn_cast<BuildVectorSDNode>(N);
|
||||
|
||||
if (Node == NULL)
|
||||
if (!Node)
|
||||
return false;
|
||||
|
||||
APInt SplatValue, SplatUndef;
|
||||
|
@ -814,16 +814,16 @@ std::pair<bool, SDNode*> MipsSEDAGToDAGISel::selectNode(SDNode *Node) {
|
|||
EVT ViaVecTy;
|
||||
|
||||
if (!Subtarget.hasMSA() || !BVN->getValueType(0).is128BitVector())
|
||||
return std::make_pair(false, (SDNode*)NULL);
|
||||
return std::make_pair(false, nullptr);
|
||||
|
||||
if (!BVN->isConstantSplat(SplatValue, SplatUndef, SplatBitSize,
|
||||
HasAnyUndefs, 8,
|
||||
!Subtarget.isLittle()))
|
||||
return std::make_pair(false, (SDNode*)NULL);
|
||||
return std::make_pair(false, nullptr);
|
||||
|
||||
switch (SplatBitSize) {
|
||||
default:
|
||||
return std::make_pair(false, (SDNode*)NULL);
|
||||
return std::make_pair(false, nullptr);
|
||||
case 8:
|
||||
LdiOp = Mips::LDI_B;
|
||||
ViaVecTy = MVT::v16i8;
|
||||
|
@ -843,7 +843,7 @@ std::pair<bool, SDNode*> MipsSEDAGToDAGISel::selectNode(SDNode *Node) {
|
|||
}
|
||||
|
||||
if (!SplatValue.isSignedIntN(10))
|
||||
return std::make_pair(false, (SDNode*)NULL);
|
||||
return std::make_pair(false, nullptr);
|
||||
|
||||
SDValue Imm = CurDAG->getTargetConstant(SplatValue,
|
||||
ViaVecTy.getVectorElementType());
|
||||
|
@ -869,7 +869,7 @@ std::pair<bool, SDNode*> MipsSEDAGToDAGISel::selectNode(SDNode *Node) {
|
|||
|
||||
}
|
||||
|
||||
return std::make_pair(false, (SDNode*)NULL);
|
||||
return std::make_pair(false, nullptr);
|
||||
}
|
||||
|
||||
FunctionPass *llvm::createMipsSEISelDag(MipsTargetMachine &TM) {
|
||||
|
|
|
@ -508,7 +508,7 @@ static SDValue performANDCombine(SDNode *N, SelectionDAG &DAG,
|
|||
static bool isVSplat(SDValue N, APInt &Imm, bool IsLittleEndian) {
|
||||
BuildVectorSDNode *Node = dyn_cast<BuildVectorSDNode>(N.getNode());
|
||||
|
||||
if (Node == NULL)
|
||||
if (!Node)
|
||||
return false;
|
||||
|
||||
APInt SplatValue, SplatUndef;
|
||||
|
@ -1356,7 +1356,7 @@ static SDValue lowerMSABinaryBitImmIntr(SDValue Op, SelectionDAG &DAG,
|
|||
}
|
||||
}
|
||||
|
||||
if (Exp2Imm.getNode() == NULL) {
|
||||
if (!Exp2Imm.getNode()) {
|
||||
// We couldnt constant fold, do a vector shift instead
|
||||
|
||||
// Extend i32 to i64 if necessary. Sign or zero extend doesn't matter since
|
||||
|
|
|
@ -368,7 +368,7 @@ void MipsSEInstrInfo::adjustStackPtr(unsigned SP, int64_t Amount,
|
|||
if (isInt<16>(Amount))// addi sp, sp, amount
|
||||
BuildMI(MBB, I, DL, get(ADDiu), SP).addReg(SP).addImm(Amount);
|
||||
else { // Expand immediate that doesn't fit in 16-bit.
|
||||
unsigned Reg = loadImmediate(Amount, MBB, I, DL, 0);
|
||||
unsigned Reg = loadImmediate(Amount, MBB, I, DL, nullptr);
|
||||
BuildMI(MBB, I, DL, get(ADDu), SP).addReg(SP).addReg(Reg, RegState::Kill);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -189,7 +189,7 @@ void MipsSERegisterInfo::eliminateFI(MachineBasicBlock::iterator II,
|
|||
*static_cast<const MipsSEInstrInfo *>(
|
||||
MBB.getParent()->getTarget().getInstrInfo());
|
||||
unsigned Reg = TII.loadImmediate(Offset, MBB, II, DL,
|
||||
OffsetBitSize == 16 ? &NewImm : NULL);
|
||||
OffsetBitSize == 16 ? &NewImm : nullptr);
|
||||
BuildMI(MBB, II, DL, TII.get(ADDu), Reg).addReg(FrameReg)
|
||||
.addReg(Reg, RegState::Kill);
|
||||
|
||||
|
|
|
@ -66,7 +66,7 @@ static MCInstPrinter *createNVPTXMCInstPrinter(const Target &T,
|
|||
const MCSubtargetInfo &STI) {
|
||||
if (SyntaxVariant == 0)
|
||||
return new NVPTXInstPrinter(MAI, MII, MRI, STI);
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// Force static initialization.
|
||||
|
|
|
@ -132,7 +132,7 @@ const MCExpr *nvptx::LowerConstant(const Constant *CV, AsmPrinter &AP) {
|
|||
return MCSymbolRefExpr::Create(AP.GetBlockAddressSymbol(BA), Ctx);
|
||||
|
||||
const ConstantExpr *CE = dyn_cast<ConstantExpr>(CV);
|
||||
if (CE == 0)
|
||||
if (!CE)
|
||||
llvm_unreachable("Unknown constant value to lower!");
|
||||
|
||||
switch (CE->getOpcode()) {
|
||||
|
@ -150,7 +150,7 @@ const MCExpr *nvptx::LowerConstant(const Constant *CV, AsmPrinter &AP) {
|
|||
raw_string_ostream OS(S);
|
||||
OS << "Unsupported expression in static initializer: ";
|
||||
CE->printAsOperand(OS, /*PrintType=*/ false,
|
||||
!AP.MF ? 0 : AP.MF->getFunction()->getParent());
|
||||
!AP.MF ? nullptr : AP.MF->getFunction()->getParent());
|
||||
report_fatal_error(OS.str());
|
||||
}
|
||||
case Instruction::AddrSpaceCast: {
|
||||
|
@ -165,7 +165,7 @@ const MCExpr *nvptx::LowerConstant(const Constant *CV, AsmPrinter &AP) {
|
|||
raw_string_ostream OS(S);
|
||||
OS << "Unsupported expression in static initializer: ";
|
||||
CE->printAsOperand(OS, /*PrintType=*/ false,
|
||||
!AP.MF ? 0 : AP.MF->getFunction()->getParent());
|
||||
!AP.MF ? nullptr : AP.MF->getFunction()->getParent());
|
||||
report_fatal_error(OS.str());
|
||||
}
|
||||
case Instruction::GetElementPtr: {
|
||||
|
@ -1038,7 +1038,7 @@ static bool canDemoteGlobalVar(const GlobalVariable *gv, Function const *&f) {
|
|||
if (Pty->getAddressSpace() != llvm::ADDRESS_SPACE_SHARED)
|
||||
return false;
|
||||
|
||||
const Function *oneFunc = 0;
|
||||
const Function *oneFunc = nullptr;
|
||||
|
||||
bool flag = usedInOneFunc(gv, oneFunc);
|
||||
if (flag == false)
|
||||
|
@ -1395,10 +1395,10 @@ void NVPTXAsmPrinter::printModuleLevelGV(const GlobalVariable *GVar,
|
|||
if (llvm::isSampler(*GVar)) {
|
||||
O << ".global .samplerref " << llvm::getSamplerName(*GVar);
|
||||
|
||||
const Constant *Initializer = NULL;
|
||||
const Constant *Initializer = nullptr;
|
||||
if (GVar->hasInitializer())
|
||||
Initializer = GVar->getInitializer();
|
||||
const ConstantInt *CI = NULL;
|
||||
const ConstantInt *CI = nullptr;
|
||||
if (Initializer)
|
||||
CI = dyn_cast<ConstantInt>(Initializer);
|
||||
if (CI) {
|
||||
|
@ -1465,7 +1465,7 @@ void NVPTXAsmPrinter::printModuleLevelGV(const GlobalVariable *GVar,
|
|||
return;
|
||||
}
|
||||
|
||||
const Function *demotedFunc = 0;
|
||||
const Function *demotedFunc = nullptr;
|
||||
if (!processDemoted && canDemoteGlobalVar(GVar, demotedFunc)) {
|
||||
O << "// " << GVar->getName().str() << " has been demoted\n";
|
||||
if (localDecls.find(demotedFunc) != localDecls.end())
|
||||
|
@ -1637,7 +1637,7 @@ NVPTXAsmPrinter::getPTXFundamentalTypeStr(const Type *Ty, bool useB4PTR) const {
|
|||
return "u32";
|
||||
}
|
||||
llvm_unreachable("unexpected type");
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void NVPTXAsmPrinter::emitPTXGlobalVariable(const GlobalVariable *GVar,
|
||||
|
@ -2447,7 +2447,7 @@ void NVPTXAsmPrinter::emitSrcInText(StringRef filename, unsigned line) {
|
|||
}
|
||||
|
||||
LineReader *NVPTXAsmPrinter::getReader(std::string filename) {
|
||||
if (reader == NULL) {
|
||||
if (!reader) {
|
||||
reader = new LineReader(filename);
|
||||
}
|
||||
|
||||
|
|
|
@ -88,7 +88,8 @@ bool GenericToNVVM::runOnModule(Module &M) {
|
|||
!GV->getName().startswith("llvm.")) {
|
||||
GlobalVariable *NewGV = new GlobalVariable(
|
||||
M, GV->getType()->getElementType(), GV->isConstant(),
|
||||
GV->getLinkage(), GV->hasInitializer() ? GV->getInitializer() : NULL,
|
||||
GV->getLinkage(),
|
||||
GV->hasInitializer() ? GV->getInitializer() : nullptr,
|
||||
"", GV, GV->getThreadLocalMode(), llvm::ADDRESS_SPACE_GLOBAL);
|
||||
NewGV->copyAttributesFrom(GV);
|
||||
GVMap[GV] = NewGV;
|
||||
|
@ -162,7 +163,7 @@ Value *GenericToNVVM::getOrInsertCVTA(Module *M, Function *F,
|
|||
GlobalVariable *GV,
|
||||
IRBuilder<> &Builder) {
|
||||
PointerType *GVType = GV->getType();
|
||||
Value *CVTA = NULL;
|
||||
Value *CVTA = nullptr;
|
||||
|
||||
// See if the address space conversion requires the operand to be bitcast
|
||||
// to i8 addrspace(n)* first.
|
||||
|
|
|
@ -119,10 +119,10 @@ SDNode *NVPTXDAGToDAGISel::Select(SDNode *N) {
|
|||
|
||||
if (N->isMachineOpcode()) {
|
||||
N->setNodeId(-1);
|
||||
return NULL; // Already selected.
|
||||
return nullptr; // Already selected.
|
||||
}
|
||||
|
||||
SDNode *ResNode = NULL;
|
||||
SDNode *ResNode = nullptr;
|
||||
switch (N->getOpcode()) {
|
||||
case ISD::LOAD:
|
||||
ResNode = SelectLoad(N);
|
||||
|
@ -289,7 +289,7 @@ SDNode *NVPTXDAGToDAGISel::SelectIntrinsicNoChain(SDNode *N) {
|
|||
unsigned IID = cast<ConstantSDNode>(N->getOperand(0))->getZExtValue();
|
||||
switch (IID) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case Intrinsic::nvvm_texsurf_handle_internal:
|
||||
return SelectTexSurfHandle(N);
|
||||
}
|
||||
|
@ -367,14 +367,14 @@ SDNode *NVPTXDAGToDAGISel::SelectLoad(SDNode *N) {
|
|||
SDLoc dl(N);
|
||||
LoadSDNode *LD = cast<LoadSDNode>(N);
|
||||
EVT LoadedVT = LD->getMemoryVT();
|
||||
SDNode *NVPTXLD = NULL;
|
||||
SDNode *NVPTXLD = nullptr;
|
||||
|
||||
// do not support pre/post inc/dec
|
||||
if (LD->isIndexed())
|
||||
return NULL;
|
||||
return nullptr;
|
||||
|
||||
if (!LoadedVT.isSimple())
|
||||
return NULL;
|
||||
return nullptr;
|
||||
|
||||
// Address Space Setting
|
||||
unsigned int codeAddrSpace = getCodeAddrSpace(LD, Subtarget);
|
||||
|
@ -397,7 +397,7 @@ SDNode *NVPTXDAGToDAGISel::SelectLoad(SDNode *N) {
|
|||
else if (num == 4)
|
||||
vecType = NVPTX::PTXLdStInstCode::V4;
|
||||
else
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// Type Setting: fromType + fromTypeWidth
|
||||
|
@ -446,7 +446,7 @@ SDNode *NVPTXDAGToDAGISel::SelectLoad(SDNode *N) {
|
|||
Opcode = NVPTX::LD_f64_avar;
|
||||
break;
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
SDValue Ops[] = { getI32Imm(isVolatile), getI32Imm(codeAddrSpace),
|
||||
getI32Imm(vecType), getI32Imm(fromType),
|
||||
|
@ -475,7 +475,7 @@ SDNode *NVPTXDAGToDAGISel::SelectLoad(SDNode *N) {
|
|||
Opcode = NVPTX::LD_f64_asi;
|
||||
break;
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
SDValue Ops[] = { getI32Imm(isVolatile), getI32Imm(codeAddrSpace),
|
||||
getI32Imm(vecType), getI32Imm(fromType),
|
||||
|
@ -505,7 +505,7 @@ SDNode *NVPTXDAGToDAGISel::SelectLoad(SDNode *N) {
|
|||
Opcode = NVPTX::LD_f64_ari_64;
|
||||
break;
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
} else {
|
||||
switch (TargetVT) {
|
||||
|
@ -528,7 +528,7 @@ SDNode *NVPTXDAGToDAGISel::SelectLoad(SDNode *N) {
|
|||
Opcode = NVPTX::LD_f64_ari;
|
||||
break;
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
SDValue Ops[] = { getI32Imm(isVolatile), getI32Imm(codeAddrSpace),
|
||||
|
@ -557,7 +557,7 @@ SDNode *NVPTXDAGToDAGISel::SelectLoad(SDNode *N) {
|
|||
Opcode = NVPTX::LD_f64_areg_64;
|
||||
break;
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
} else {
|
||||
switch (TargetVT) {
|
||||
|
@ -580,7 +580,7 @@ SDNode *NVPTXDAGToDAGISel::SelectLoad(SDNode *N) {
|
|||
Opcode = NVPTX::LD_f64_areg;
|
||||
break;
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
SDValue Ops[] = { getI32Imm(isVolatile), getI32Imm(codeAddrSpace),
|
||||
|
@ -589,7 +589,7 @@ SDNode *NVPTXDAGToDAGISel::SelectLoad(SDNode *N) {
|
|||
NVPTXLD = CurDAG->getMachineNode(Opcode, dl, TargetVT, MVT::Other, Ops);
|
||||
}
|
||||
|
||||
if (NVPTXLD != NULL) {
|
||||
if (NVPTXLD) {
|
||||
MachineSDNode::mmo_iterator MemRefs0 = MF->allocateMemRefsArray(1);
|
||||
MemRefs0[0] = cast<MemSDNode>(N)->getMemOperand();
|
||||
cast<MachineSDNode>(NVPTXLD)->setMemRefs(MemRefs0, MemRefs0 + 1);
|
||||
|
@ -610,7 +610,7 @@ SDNode *NVPTXDAGToDAGISel::SelectLoadVector(SDNode *N) {
|
|||
EVT LoadedVT = MemSD->getMemoryVT();
|
||||
|
||||
if (!LoadedVT.isSimple())
|
||||
return NULL;
|
||||
return nullptr;
|
||||
|
||||
// Address Space Setting
|
||||
unsigned int CodeAddrSpace = getCodeAddrSpace(MemSD, Subtarget);
|
||||
|
@ -656,7 +656,7 @@ SDNode *NVPTXDAGToDAGISel::SelectLoadVector(SDNode *N) {
|
|||
VecType = NVPTX::PTXLdStInstCode::V4;
|
||||
break;
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
EVT EltVT = N->getValueType(0);
|
||||
|
@ -664,11 +664,11 @@ SDNode *NVPTXDAGToDAGISel::SelectLoadVector(SDNode *N) {
|
|||
if (SelectDirectAddr(Op1, Addr)) {
|
||||
switch (N->getOpcode()) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case NVPTXISD::LoadV2:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::LDV_i8_v2_avar;
|
||||
break;
|
||||
|
@ -692,7 +692,7 @@ SDNode *NVPTXDAGToDAGISel::SelectLoadVector(SDNode *N) {
|
|||
case NVPTXISD::LoadV4:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::LDV_i8_v4_avar;
|
||||
break;
|
||||
|
@ -718,11 +718,11 @@ SDNode *NVPTXDAGToDAGISel::SelectLoadVector(SDNode *N) {
|
|||
: SelectADDRsi(Op1.getNode(), Op1, Base, Offset)) {
|
||||
switch (N->getOpcode()) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case NVPTXISD::LoadV2:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::LDV_i8_v2_asi;
|
||||
break;
|
||||
|
@ -746,7 +746,7 @@ SDNode *NVPTXDAGToDAGISel::SelectLoadVector(SDNode *N) {
|
|||
case NVPTXISD::LoadV4:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::LDV_i8_v4_asi;
|
||||
break;
|
||||
|
@ -773,11 +773,11 @@ SDNode *NVPTXDAGToDAGISel::SelectLoadVector(SDNode *N) {
|
|||
if (Subtarget.is64Bit()) {
|
||||
switch (N->getOpcode()) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case NVPTXISD::LoadV2:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::LDV_i8_v2_ari_64;
|
||||
break;
|
||||
|
@ -801,7 +801,7 @@ SDNode *NVPTXDAGToDAGISel::SelectLoadVector(SDNode *N) {
|
|||
case NVPTXISD::LoadV4:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::LDV_i8_v4_ari_64;
|
||||
break;
|
||||
|
@ -820,11 +820,11 @@ SDNode *NVPTXDAGToDAGISel::SelectLoadVector(SDNode *N) {
|
|||
} else {
|
||||
switch (N->getOpcode()) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case NVPTXISD::LoadV2:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::LDV_i8_v2_ari;
|
||||
break;
|
||||
|
@ -848,7 +848,7 @@ SDNode *NVPTXDAGToDAGISel::SelectLoadVector(SDNode *N) {
|
|||
case NVPTXISD::LoadV4:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::LDV_i8_v4_ari;
|
||||
break;
|
||||
|
@ -875,11 +875,11 @@ SDNode *NVPTXDAGToDAGISel::SelectLoadVector(SDNode *N) {
|
|||
if (Subtarget.is64Bit()) {
|
||||
switch (N->getOpcode()) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case NVPTXISD::LoadV2:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::LDV_i8_v2_areg_64;
|
||||
break;
|
||||
|
@ -903,7 +903,7 @@ SDNode *NVPTXDAGToDAGISel::SelectLoadVector(SDNode *N) {
|
|||
case NVPTXISD::LoadV4:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::LDV_i8_v4_areg_64;
|
||||
break;
|
||||
|
@ -922,11 +922,11 @@ SDNode *NVPTXDAGToDAGISel::SelectLoadVector(SDNode *N) {
|
|||
} else {
|
||||
switch (N->getOpcode()) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case NVPTXISD::LoadV2:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::LDV_i8_v2_areg;
|
||||
break;
|
||||
|
@ -950,7 +950,7 @@ SDNode *NVPTXDAGToDAGISel::SelectLoadVector(SDNode *N) {
|
|||
case NVPTXISD::LoadV4:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::LDV_i8_v4_areg;
|
||||
break;
|
||||
|
@ -996,11 +996,11 @@ SDNode *NVPTXDAGToDAGISel::SelectLDGLDUVector(SDNode *N) {
|
|||
if (SelectDirectAddr(Op1, Addr)) {
|
||||
switch (N->getOpcode()) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case NVPTXISD::LDGV2:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::INT_PTX_LDG_G_v2i8_ELE_avar;
|
||||
break;
|
||||
|
@ -1024,7 +1024,7 @@ SDNode *NVPTXDAGToDAGISel::SelectLDGLDUVector(SDNode *N) {
|
|||
case NVPTXISD::LDUV2:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::INT_PTX_LDU_G_v2i8_ELE_avar;
|
||||
break;
|
||||
|
@ -1048,7 +1048,7 @@ SDNode *NVPTXDAGToDAGISel::SelectLDGLDUVector(SDNode *N) {
|
|||
case NVPTXISD::LDGV4:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::INT_PTX_LDG_G_v4i8_ELE_avar;
|
||||
break;
|
||||
|
@ -1066,7 +1066,7 @@ SDNode *NVPTXDAGToDAGISel::SelectLDGLDUVector(SDNode *N) {
|
|||
case NVPTXISD::LDUV4:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::INT_PTX_LDU_G_v4i8_ELE_avar;
|
||||
break;
|
||||
|
@ -1092,11 +1092,11 @@ SDNode *NVPTXDAGToDAGISel::SelectLDGLDUVector(SDNode *N) {
|
|||
if (Subtarget.is64Bit()) {
|
||||
switch (N->getOpcode()) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case NVPTXISD::LDGV2:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::INT_PTX_LDG_G_v2i8_ELE_ari64;
|
||||
break;
|
||||
|
@ -1120,7 +1120,7 @@ SDNode *NVPTXDAGToDAGISel::SelectLDGLDUVector(SDNode *N) {
|
|||
case NVPTXISD::LDUV2:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::INT_PTX_LDU_G_v2i8_ELE_ari64;
|
||||
break;
|
||||
|
@ -1144,7 +1144,7 @@ SDNode *NVPTXDAGToDAGISel::SelectLDGLDUVector(SDNode *N) {
|
|||
case NVPTXISD::LDGV4:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::INT_PTX_LDG_G_v4i8_ELE_ari64;
|
||||
break;
|
||||
|
@ -1162,7 +1162,7 @@ SDNode *NVPTXDAGToDAGISel::SelectLDGLDUVector(SDNode *N) {
|
|||
case NVPTXISD::LDUV4:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::INT_PTX_LDU_G_v4i8_ELE_ari64;
|
||||
break;
|
||||
|
@ -1181,11 +1181,11 @@ SDNode *NVPTXDAGToDAGISel::SelectLDGLDUVector(SDNode *N) {
|
|||
} else {
|
||||
switch (N->getOpcode()) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case NVPTXISD::LDGV2:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::INT_PTX_LDG_G_v2i8_ELE_ari32;
|
||||
break;
|
||||
|
@ -1209,7 +1209,7 @@ SDNode *NVPTXDAGToDAGISel::SelectLDGLDUVector(SDNode *N) {
|
|||
case NVPTXISD::LDUV2:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::INT_PTX_LDU_G_v2i8_ELE_ari32;
|
||||
break;
|
||||
|
@ -1233,7 +1233,7 @@ SDNode *NVPTXDAGToDAGISel::SelectLDGLDUVector(SDNode *N) {
|
|||
case NVPTXISD::LDGV4:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::INT_PTX_LDG_G_v4i8_ELE_ari32;
|
||||
break;
|
||||
|
@ -1251,7 +1251,7 @@ SDNode *NVPTXDAGToDAGISel::SelectLDGLDUVector(SDNode *N) {
|
|||
case NVPTXISD::LDUV4:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::INT_PTX_LDU_G_v4i8_ELE_ari32;
|
||||
break;
|
||||
|
@ -1277,11 +1277,11 @@ SDNode *NVPTXDAGToDAGISel::SelectLDGLDUVector(SDNode *N) {
|
|||
if (Subtarget.is64Bit()) {
|
||||
switch (N->getOpcode()) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case NVPTXISD::LDGV2:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::INT_PTX_LDG_G_v2i8_ELE_areg64;
|
||||
break;
|
||||
|
@ -1305,7 +1305,7 @@ SDNode *NVPTXDAGToDAGISel::SelectLDGLDUVector(SDNode *N) {
|
|||
case NVPTXISD::LDUV2:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::INT_PTX_LDU_G_v2i8_ELE_areg64;
|
||||
break;
|
||||
|
@ -1329,7 +1329,7 @@ SDNode *NVPTXDAGToDAGISel::SelectLDGLDUVector(SDNode *N) {
|
|||
case NVPTXISD::LDGV4:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::INT_PTX_LDG_G_v4i8_ELE_areg64;
|
||||
break;
|
||||
|
@ -1347,7 +1347,7 @@ SDNode *NVPTXDAGToDAGISel::SelectLDGLDUVector(SDNode *N) {
|
|||
case NVPTXISD::LDUV4:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::INT_PTX_LDU_G_v4i8_ELE_areg64;
|
||||
break;
|
||||
|
@ -1366,11 +1366,11 @@ SDNode *NVPTXDAGToDAGISel::SelectLDGLDUVector(SDNode *N) {
|
|||
} else {
|
||||
switch (N->getOpcode()) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case NVPTXISD::LDGV2:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::INT_PTX_LDG_G_v2i8_ELE_areg32;
|
||||
break;
|
||||
|
@ -1394,7 +1394,7 @@ SDNode *NVPTXDAGToDAGISel::SelectLDGLDUVector(SDNode *N) {
|
|||
case NVPTXISD::LDUV2:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::INT_PTX_LDU_G_v2i8_ELE_areg32;
|
||||
break;
|
||||
|
@ -1418,7 +1418,7 @@ SDNode *NVPTXDAGToDAGISel::SelectLDGLDUVector(SDNode *N) {
|
|||
case NVPTXISD::LDGV4:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::INT_PTX_LDG_G_v4i8_ELE_areg32;
|
||||
break;
|
||||
|
@ -1436,7 +1436,7 @@ SDNode *NVPTXDAGToDAGISel::SelectLDGLDUVector(SDNode *N) {
|
|||
case NVPTXISD::LDUV4:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::INT_PTX_LDU_G_v4i8_ELE_areg32;
|
||||
break;
|
||||
|
@ -1470,14 +1470,14 @@ SDNode *NVPTXDAGToDAGISel::SelectStore(SDNode *N) {
|
|||
SDLoc dl(N);
|
||||
StoreSDNode *ST = cast<StoreSDNode>(N);
|
||||
EVT StoreVT = ST->getMemoryVT();
|
||||
SDNode *NVPTXST = NULL;
|
||||
SDNode *NVPTXST = nullptr;
|
||||
|
||||
// do not support pre/post inc/dec
|
||||
if (ST->isIndexed())
|
||||
return NULL;
|
||||
return nullptr;
|
||||
|
||||
if (!StoreVT.isSimple())
|
||||
return NULL;
|
||||
return nullptr;
|
||||
|
||||
// Address Space Setting
|
||||
unsigned int codeAddrSpace = getCodeAddrSpace(ST, Subtarget);
|
||||
|
@ -1500,7 +1500,7 @@ SDNode *NVPTXDAGToDAGISel::SelectStore(SDNode *N) {
|
|||
else if (num == 4)
|
||||
vecType = NVPTX::PTXLdStInstCode::V4;
|
||||
else
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// Type Setting: toType + toTypeWidth
|
||||
|
@ -1544,7 +1544,7 @@ SDNode *NVPTXDAGToDAGISel::SelectStore(SDNode *N) {
|
|||
Opcode = NVPTX::ST_f64_avar;
|
||||
break;
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
SDValue Ops[] = { N1, getI32Imm(isVolatile), getI32Imm(codeAddrSpace),
|
||||
getI32Imm(vecType), getI32Imm(toType),
|
||||
|
@ -1573,7 +1573,7 @@ SDNode *NVPTXDAGToDAGISel::SelectStore(SDNode *N) {
|
|||
Opcode = NVPTX::ST_f64_asi;
|
||||
break;
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
SDValue Ops[] = { N1, getI32Imm(isVolatile), getI32Imm(codeAddrSpace),
|
||||
getI32Imm(vecType), getI32Imm(toType),
|
||||
|
@ -1603,7 +1603,7 @@ SDNode *NVPTXDAGToDAGISel::SelectStore(SDNode *N) {
|
|||
Opcode = NVPTX::ST_f64_ari_64;
|
||||
break;
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
} else {
|
||||
switch (SourceVT) {
|
||||
|
@ -1626,7 +1626,7 @@ SDNode *NVPTXDAGToDAGISel::SelectStore(SDNode *N) {
|
|||
Opcode = NVPTX::ST_f64_ari;
|
||||
break;
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
SDValue Ops[] = { N1, getI32Imm(isVolatile), getI32Imm(codeAddrSpace),
|
||||
|
@ -1655,7 +1655,7 @@ SDNode *NVPTXDAGToDAGISel::SelectStore(SDNode *N) {
|
|||
Opcode = NVPTX::ST_f64_areg_64;
|
||||
break;
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
} else {
|
||||
switch (SourceVT) {
|
||||
|
@ -1678,7 +1678,7 @@ SDNode *NVPTXDAGToDAGISel::SelectStore(SDNode *N) {
|
|||
Opcode = NVPTX::ST_f64_areg;
|
||||
break;
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
SDValue Ops[] = { N1, getI32Imm(isVolatile), getI32Imm(codeAddrSpace),
|
||||
|
@ -1687,7 +1687,7 @@ SDNode *NVPTXDAGToDAGISel::SelectStore(SDNode *N) {
|
|||
NVPTXST = CurDAG->getMachineNode(Opcode, dl, MVT::Other, Ops);
|
||||
}
|
||||
|
||||
if (NVPTXST != NULL) {
|
||||
if (NVPTXST) {
|
||||
MachineSDNode::mmo_iterator MemRefs0 = MF->allocateMemRefsArray(1);
|
||||
MemRefs0[0] = cast<MemSDNode>(N)->getMemOperand();
|
||||
cast<MachineSDNode>(NVPTXST)->setMemRefs(MemRefs0, MemRefs0 + 1);
|
||||
|
@ -1754,7 +1754,7 @@ SDNode *NVPTXDAGToDAGISel::SelectStoreVector(SDNode *N) {
|
|||
N2 = N->getOperand(5);
|
||||
break;
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
StOps.push_back(getI32Imm(IsVolatile));
|
||||
|
@ -1766,11 +1766,11 @@ SDNode *NVPTXDAGToDAGISel::SelectStoreVector(SDNode *N) {
|
|||
if (SelectDirectAddr(N2, Addr)) {
|
||||
switch (N->getOpcode()) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case NVPTXISD::StoreV2:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::STV_i8_v2_avar;
|
||||
break;
|
||||
|
@ -1794,7 +1794,7 @@ SDNode *NVPTXDAGToDAGISel::SelectStoreVector(SDNode *N) {
|
|||
case NVPTXISD::StoreV4:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::STV_i8_v4_avar;
|
||||
break;
|
||||
|
@ -1816,11 +1816,11 @@ SDNode *NVPTXDAGToDAGISel::SelectStoreVector(SDNode *N) {
|
|||
: SelectADDRsi(N2.getNode(), N2, Base, Offset)) {
|
||||
switch (N->getOpcode()) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case NVPTXISD::StoreV2:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::STV_i8_v2_asi;
|
||||
break;
|
||||
|
@ -1844,7 +1844,7 @@ SDNode *NVPTXDAGToDAGISel::SelectStoreVector(SDNode *N) {
|
|||
case NVPTXISD::StoreV4:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::STV_i8_v4_asi;
|
||||
break;
|
||||
|
@ -1868,11 +1868,11 @@ SDNode *NVPTXDAGToDAGISel::SelectStoreVector(SDNode *N) {
|
|||
if (Subtarget.is64Bit()) {
|
||||
switch (N->getOpcode()) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case NVPTXISD::StoreV2:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::STV_i8_v2_ari_64;
|
||||
break;
|
||||
|
@ -1896,7 +1896,7 @@ SDNode *NVPTXDAGToDAGISel::SelectStoreVector(SDNode *N) {
|
|||
case NVPTXISD::StoreV4:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::STV_i8_v4_ari_64;
|
||||
break;
|
||||
|
@ -1915,11 +1915,11 @@ SDNode *NVPTXDAGToDAGISel::SelectStoreVector(SDNode *N) {
|
|||
} else {
|
||||
switch (N->getOpcode()) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case NVPTXISD::StoreV2:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::STV_i8_v2_ari;
|
||||
break;
|
||||
|
@ -1943,7 +1943,7 @@ SDNode *NVPTXDAGToDAGISel::SelectStoreVector(SDNode *N) {
|
|||
case NVPTXISD::StoreV4:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::STV_i8_v4_ari;
|
||||
break;
|
||||
|
@ -1966,11 +1966,11 @@ SDNode *NVPTXDAGToDAGISel::SelectStoreVector(SDNode *N) {
|
|||
if (Subtarget.is64Bit()) {
|
||||
switch (N->getOpcode()) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case NVPTXISD::StoreV2:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::STV_i8_v2_areg_64;
|
||||
break;
|
||||
|
@ -1994,7 +1994,7 @@ SDNode *NVPTXDAGToDAGISel::SelectStoreVector(SDNode *N) {
|
|||
case NVPTXISD::StoreV4:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::STV_i8_v4_areg_64;
|
||||
break;
|
||||
|
@ -2013,11 +2013,11 @@ SDNode *NVPTXDAGToDAGISel::SelectStoreVector(SDNode *N) {
|
|||
} else {
|
||||
switch (N->getOpcode()) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case NVPTXISD::StoreV2:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::STV_i8_v2_areg;
|
||||
break;
|
||||
|
@ -2041,7 +2041,7 @@ SDNode *NVPTXDAGToDAGISel::SelectStoreVector(SDNode *N) {
|
|||
case NVPTXISD::StoreV4:
|
||||
switch (EltVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i8:
|
||||
Opcode = NVPTX::STV_i8_v4_areg;
|
||||
break;
|
||||
|
@ -2082,7 +2082,7 @@ SDNode *NVPTXDAGToDAGISel::SelectLoadParam(SDNode *Node) {
|
|||
unsigned VecSize;
|
||||
switch (Node->getOpcode()) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case NVPTXISD::LoadParam:
|
||||
VecSize = 1;
|
||||
break;
|
||||
|
@ -2101,11 +2101,11 @@ SDNode *NVPTXDAGToDAGISel::SelectLoadParam(SDNode *Node) {
|
|||
|
||||
switch (VecSize) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case 1:
|
||||
switch (MemVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i1:
|
||||
Opc = NVPTX::LoadParamMemI8;
|
||||
break;
|
||||
|
@ -2132,7 +2132,7 @@ SDNode *NVPTXDAGToDAGISel::SelectLoadParam(SDNode *Node) {
|
|||
case 2:
|
||||
switch (MemVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i1:
|
||||
Opc = NVPTX::LoadParamMemV2I8;
|
||||
break;
|
||||
|
@ -2159,7 +2159,7 @@ SDNode *NVPTXDAGToDAGISel::SelectLoadParam(SDNode *Node) {
|
|||
case 4:
|
||||
switch (MemVT.getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i1:
|
||||
Opc = NVPTX::LoadParamMemV4I8;
|
||||
break;
|
||||
|
@ -2212,7 +2212,7 @@ SDNode *NVPTXDAGToDAGISel::SelectStoreRetval(SDNode *N) {
|
|||
unsigned NumElts = 1;
|
||||
switch (N->getOpcode()) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case NVPTXISD::StoreRetval:
|
||||
NumElts = 1;
|
||||
break;
|
||||
|
@ -2237,11 +2237,11 @@ SDNode *NVPTXDAGToDAGISel::SelectStoreRetval(SDNode *N) {
|
|||
unsigned Opcode = 0;
|
||||
switch (NumElts) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case 1:
|
||||
switch (Mem->getMemoryVT().getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i1:
|
||||
Opcode = NVPTX::StoreRetvalI8;
|
||||
break;
|
||||
|
@ -2268,7 +2268,7 @@ SDNode *NVPTXDAGToDAGISel::SelectStoreRetval(SDNode *N) {
|
|||
case 2:
|
||||
switch (Mem->getMemoryVT().getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i1:
|
||||
Opcode = NVPTX::StoreRetvalV2I8;
|
||||
break;
|
||||
|
@ -2295,7 +2295,7 @@ SDNode *NVPTXDAGToDAGISel::SelectStoreRetval(SDNode *N) {
|
|||
case 4:
|
||||
switch (Mem->getMemoryVT().getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i1:
|
||||
Opcode = NVPTX::StoreRetvalV4I8;
|
||||
break;
|
||||
|
@ -2338,7 +2338,7 @@ SDNode *NVPTXDAGToDAGISel::SelectStoreParam(SDNode *N) {
|
|||
unsigned NumElts = 1;
|
||||
switch (N->getOpcode()) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case NVPTXISD::StoreParamU32:
|
||||
case NVPTXISD::StoreParamS32:
|
||||
case NVPTXISD::StoreParam:
|
||||
|
@ -2369,11 +2369,11 @@ SDNode *NVPTXDAGToDAGISel::SelectStoreParam(SDNode *N) {
|
|||
default:
|
||||
switch (NumElts) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case 1:
|
||||
switch (Mem->getMemoryVT().getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i1:
|
||||
Opcode = NVPTX::StoreParamI8;
|
||||
break;
|
||||
|
@ -2400,7 +2400,7 @@ SDNode *NVPTXDAGToDAGISel::SelectStoreParam(SDNode *N) {
|
|||
case 2:
|
||||
switch (Mem->getMemoryVT().getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i1:
|
||||
Opcode = NVPTX::StoreParamV2I8;
|
||||
break;
|
||||
|
@ -2427,7 +2427,7 @@ SDNode *NVPTXDAGToDAGISel::SelectStoreParam(SDNode *N) {
|
|||
case 4:
|
||||
switch (Mem->getMemoryVT().getSimpleVT().SimpleTy) {
|
||||
default:
|
||||
return NULL;
|
||||
return nullptr;
|
||||
case MVT::i1:
|
||||
Opcode = NVPTX::StoreParamV4I8;
|
||||
break;
|
||||
|
@ -2484,12 +2484,12 @@ SDNode *NVPTXDAGToDAGISel::SelectTextureIntrinsic(SDNode *N) {
|
|||
SDValue Chain = N->getOperand(0);
|
||||
SDValue TexRef = N->getOperand(1);
|
||||
SDValue SampRef = N->getOperand(2);
|
||||
SDNode *Ret = NULL;
|
||||
SDNode *Ret = nullptr;
|
||||
unsigned Opc = 0;
|
||||
SmallVector<SDValue, 8> Ops;
|
||||
|
||||
switch (N->getOpcode()) {
|
||||
default: return NULL;
|
||||
default: return nullptr;
|
||||
case NVPTXISD::Tex1DFloatI32:
|
||||
Opc = NVPTX::TEX_1D_F32_I32;
|
||||
break;
|
||||
|
@ -2628,11 +2628,11 @@ SDNode *NVPTXDAGToDAGISel::SelectTextureIntrinsic(SDNode *N) {
|
|||
SDNode *NVPTXDAGToDAGISel::SelectSurfaceIntrinsic(SDNode *N) {
|
||||
SDValue Chain = N->getOperand(0);
|
||||
SDValue TexHandle = N->getOperand(1);
|
||||
SDNode *Ret = NULL;
|
||||
SDNode *Ret = nullptr;
|
||||
unsigned Opc = 0;
|
||||
SmallVector<SDValue, 8> Ops;
|
||||
switch (N->getOpcode()) {
|
||||
default: return NULL;
|
||||
default: return nullptr;
|
||||
case NVPTXISD::Suld1DI8Trap:
|
||||
Opc = NVPTX::SULD_1D_I8_TRAP;
|
||||
Ops.push_back(TexHandle);
|
||||
|
@ -3055,7 +3055,7 @@ bool NVPTXDAGToDAGISel::SelectADDRri64(SDNode *OpNode, SDValue Addr,
|
|||
|
||||
bool NVPTXDAGToDAGISel::ChkMemSDNodeAddressSpace(SDNode *N,
|
||||
unsigned int spN) const {
|
||||
const Value *Src = NULL;
|
||||
const Value *Src = nullptr;
|
||||
// Even though MemIntrinsicSDNode is a subclas of MemSDNode,
|
||||
// the classof() for MemSDNode does not include MemIntrinsicSDNode
|
||||
// (See SelectionDAGNodes.h). So we need to check for both.
|
||||
|
|
|
@ -75,7 +75,7 @@ static bool IsPTXVectorType(MVT VT) {
|
|||
/// LowerCall, and LowerReturn.
|
||||
static void ComputePTXValueVTs(const TargetLowering &TLI, Type *Ty,
|
||||
SmallVectorImpl<EVT> &ValueVTs,
|
||||
SmallVectorImpl<uint64_t> *Offsets = 0,
|
||||
SmallVectorImpl<uint64_t> *Offsets = nullptr,
|
||||
uint64_t StartingOffset = 0) {
|
||||
SmallVector<EVT, 16> TempVTs;
|
||||
SmallVector<uint64_t, 16> TempOffsets;
|
||||
|
@ -245,7 +245,7 @@ NVPTXTargetLowering::NVPTXTargetLowering(NVPTXTargetMachine &TM)
|
|||
const char *NVPTXTargetLowering::getTargetNodeName(unsigned Opcode) const {
|
||||
switch (Opcode) {
|
||||
default:
|
||||
return 0;
|
||||
return nullptr;
|
||||
case NVPTXISD::CALL:
|
||||
return "NVPTXISD::CALL";
|
||||
case NVPTXISD::RET_FLAG:
|
||||
|
@ -1539,7 +1539,7 @@ SDValue NVPTXTargetLowering::LowerFormalArguments(
|
|||
if (isImageOrSamplerVal(
|
||||
theArgs[i],
|
||||
(theArgs[i]->getParent() ? theArgs[i]->getParent()->getParent()
|
||||
: 0))) {
|
||||
: nullptr))) {
|
||||
assert(isKernel && "Only kernels can have image/sampler params");
|
||||
InVals.push_back(DAG.getConstant(i + 1, MVT::i32));
|
||||
continue;
|
||||
|
@ -2265,7 +2265,7 @@ bool NVPTXTargetLowering::getTgtMemIntrinsic(
|
|||
case Intrinsic::nvvm_tex_3d_grad_v4f32_f32: {
|
||||
Info.opc = getOpcForTextureInstr(Intrinsic);
|
||||
Info.memVT = MVT::f32;
|
||||
Info.ptrVal = NULL;
|
||||
Info.ptrVal = nullptr;
|
||||
Info.offset = 0;
|
||||
Info.vol = 0;
|
||||
Info.readMem = true;
|
||||
|
@ -2295,7 +2295,7 @@ bool NVPTXTargetLowering::getTgtMemIntrinsic(
|
|||
case Intrinsic::nvvm_tex_3d_grad_v4i32_f32: {
|
||||
Info.opc = getOpcForTextureInstr(Intrinsic);
|
||||
Info.memVT = MVT::i32;
|
||||
Info.ptrVal = NULL;
|
||||
Info.ptrVal = nullptr;
|
||||
Info.offset = 0;
|
||||
Info.vol = 0;
|
||||
Info.readMem = true;
|
||||
|
@ -2320,7 +2320,7 @@ bool NVPTXTargetLowering::getTgtMemIntrinsic(
|
|||
case Intrinsic::nvvm_suld_3d_v4i8_trap: {
|
||||
Info.opc = getOpcForSurfaceInstr(Intrinsic);
|
||||
Info.memVT = MVT::i8;
|
||||
Info.ptrVal = NULL;
|
||||
Info.ptrVal = nullptr;
|
||||
Info.offset = 0;
|
||||
Info.vol = 0;
|
||||
Info.readMem = true;
|
||||
|
@ -2345,7 +2345,7 @@ bool NVPTXTargetLowering::getTgtMemIntrinsic(
|
|||
case Intrinsic::nvvm_suld_3d_v4i16_trap: {
|
||||
Info.opc = getOpcForSurfaceInstr(Intrinsic);
|
||||
Info.memVT = MVT::i16;
|
||||
Info.ptrVal = NULL;
|
||||
Info.ptrVal = nullptr;
|
||||
Info.offset = 0;
|
||||
Info.vol = 0;
|
||||
Info.readMem = true;
|
||||
|
@ -2370,7 +2370,7 @@ bool NVPTXTargetLowering::getTgtMemIntrinsic(
|
|||
case Intrinsic::nvvm_suld_3d_v4i32_trap: {
|
||||
Info.opc = getOpcForSurfaceInstr(Intrinsic);
|
||||
Info.memVT = MVT::i32;
|
||||
Info.ptrVal = NULL;
|
||||
Info.ptrVal = nullptr;
|
||||
Info.offset = 0;
|
||||
Info.vol = 0;
|
||||
Info.readMem = true;
|
||||
|
|
|
@ -257,7 +257,7 @@ unsigned NVPTXInstrInfo::InsertBranch(
|
|||
"NVPTX branch conditions have two components!");
|
||||
|
||||
// One-way branch.
|
||||
if (FBB == 0) {
|
||||
if (!FBB) {
|
||||
if (Cond.empty()) // Unconditional branch
|
||||
BuildMI(&MBB, DL, get(NVPTX::GOTO)).addMBB(TBB);
|
||||
else // Conditional branch
|
||||
|
|
|
@ -60,7 +60,7 @@ bool NVPTXPrologEpilogPass::runOnMachineFunction(MachineFunction &MF) {
|
|||
for (unsigned i = 0, e = MI->getNumOperands(); i != e; ++i) {
|
||||
if (!MI->getOperand(i).isFI())
|
||||
continue;
|
||||
TRI.eliminateFrameIndex(MI, 0, i, NULL);
|
||||
TRI.eliminateFrameIndex(MI, 0, i, nullptr);
|
||||
Modified = true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -87,7 +87,7 @@ NVPTXRegisterInfo::getCalleeSavedRegs(const MachineFunction *MF) const {
|
|||
// NVPTX Callee Saved Reg Classes
|
||||
const TargetRegisterClass *const *
|
||||
NVPTXRegisterInfo::getCalleeSavedRegClasses(const MachineFunction *MF) const {
|
||||
static const TargetRegisterClass *const CalleeSavedRegClasses[] = { 0 };
|
||||
static const TargetRegisterClass *const CalleeSavedRegClasses[] = { nullptr };
|
||||
return CalleeSavedRegClasses;
|
||||
}
|
||||
|
||||
|
|
|
@ -175,7 +175,7 @@ bool NVPTXPassConfig::addPostRegAlloc() {
|
|||
}
|
||||
|
||||
FunctionPass *NVPTXPassConfig::createTargetRegisterAllocator(bool) {
|
||||
return 0; // No reg alloc
|
||||
return nullptr; // No reg alloc
|
||||
}
|
||||
|
||||
void NVPTXPassConfig::addFastRegAlloc(FunctionPass *RegAllocPass) {
|
||||
|
|
|
@ -393,12 +393,12 @@ llvm::skipPointerTransfer(const Value *V, bool ignore_GEP_indices) {
|
|||
const Value *
|
||||
llvm::skipPointerTransfer(const Value *V, std::set<const Value *> &processed) {
|
||||
if (processed.find(V) != processed.end())
|
||||
return NULL;
|
||||
return nullptr;
|
||||
processed.insert(V);
|
||||
|
||||
const Value *V2 = V->stripPointerCasts();
|
||||
if (V2 != V && processed.find(V2) != processed.end())
|
||||
return NULL;
|
||||
return nullptr;
|
||||
processed.insert(V2);
|
||||
|
||||
V = V2;
|
||||
|
@ -414,20 +414,20 @@ llvm::skipPointerTransfer(const Value *V, std::set<const Value *> &processed) {
|
|||
continue;
|
||||
} else if (const PHINode *PN = dyn_cast<PHINode>(V)) {
|
||||
if (V != V2 && processed.find(V) != processed.end())
|
||||
return NULL;
|
||||
return nullptr;
|
||||
processed.insert(PN);
|
||||
const Value *common = 0;
|
||||
const Value *common = nullptr;
|
||||
for (unsigned i = 0; i != PN->getNumIncomingValues(); ++i) {
|
||||
const Value *pv = PN->getIncomingValue(i);
|
||||
const Value *base = skipPointerTransfer(pv, processed);
|
||||
if (base) {
|
||||
if (common == 0)
|
||||
if (!common)
|
||||
common = base;
|
||||
else if (common != base)
|
||||
return PN;
|
||||
}
|
||||
}
|
||||
if (common == 0)
|
||||
if (!common)
|
||||
return PN;
|
||||
V = common;
|
||||
}
|
||||
|
@ -445,7 +445,7 @@ BasicBlock *llvm::getParentBlock(Value *v) {
|
|||
if (Instruction *I = dyn_cast<Instruction>(v))
|
||||
return I->getParent();
|
||||
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
Function *llvm::getParentFunction(Value *v) {
|
||||
|
@ -458,13 +458,13 @@ Function *llvm::getParentFunction(Value *v) {
|
|||
if (BasicBlock *B = dyn_cast<BasicBlock>(v))
|
||||
return B->getParent();
|
||||
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// Dump a block by name
|
||||
void llvm::dumpBlock(Value *v, char *blockName) {
|
||||
Function *F = getParentFunction(v);
|
||||
if (F == 0)
|
||||
if (!F)
|
||||
return;
|
||||
|
||||
for (Function::iterator it = F->begin(), ie = F->end(); it != ie; ++it) {
|
||||
|
@ -479,8 +479,8 @@ void llvm::dumpBlock(Value *v, char *blockName) {
|
|||
// Find an instruction by name
|
||||
Instruction *llvm::getInst(Value *base, char *instName) {
|
||||
Function *F = getParentFunction(base);
|
||||
if (F == 0)
|
||||
return 0;
|
||||
if (!F)
|
||||
return nullptr;
|
||||
|
||||
for (inst_iterator it = inst_begin(F), ie = inst_end(F); it != ie; ++it) {
|
||||
Instruction *I = &*it;
|
||||
|
@ -489,7 +489,7 @@ Instruction *llvm::getInst(Value *base, char *instName) {
|
|||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// Dump an instruction by nane
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue