mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
Fix debug printing spacing.
Fix missing newlines, missing and extra spaces in printed messages. llvm-svn: 191851
This commit is contained in:
parent
26cc78f548
commit
15633246b6
@ -867,14 +867,14 @@ private:
|
|||||||
if (isPowerOf2_32(Val) && Val <= MaxVectorWidth)
|
if (isPowerOf2_32(Val) && Val <= MaxVectorWidth)
|
||||||
Width = Val;
|
Width = Val;
|
||||||
else
|
else
|
||||||
DEBUG(dbgs() << "LV: ignoring invalid width hint metadata");
|
DEBUG(dbgs() << "LV: ignoring invalid width hint metadata\n");
|
||||||
} else if (Hint == "unroll") {
|
} else if (Hint == "unroll") {
|
||||||
if (isPowerOf2_32(Val) && Val <= MaxUnrollFactor)
|
if (isPowerOf2_32(Val) && Val <= MaxUnrollFactor)
|
||||||
Unroll = Val;
|
Unroll = Val;
|
||||||
else
|
else
|
||||||
DEBUG(dbgs() << "LV: ignoring invalid unroll hint metadata");
|
DEBUG(dbgs() << "LV: ignoring invalid unroll hint metadata\n");
|
||||||
} else {
|
} else {
|
||||||
DEBUG(dbgs() << "LV: ignoring unknown hint " << Hint);
|
DEBUG(dbgs() << "LV: ignoring unknown hint " << Hint << '\n');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -915,7 +915,7 @@ struct LoopVectorize : public LoopPass {
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (DL == NULL) {
|
if (DL == NULL) {
|
||||||
DEBUG(dbgs() << "LV: Not vectorizing because of missing data layout");
|
DEBUG(dbgs() << "LV: Not vectorizing because of missing data layout\n");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -966,8 +966,8 @@ struct LoopVectorize : public LoopPass {
|
|||||||
}
|
}
|
||||||
|
|
||||||
DEBUG(dbgs() << "LV: Found a vectorizable loop ("<< VF.Width << ") in "<<
|
DEBUG(dbgs() << "LV: Found a vectorizable loop ("<< VF.Width << ") in "<<
|
||||||
F->getParent()->getModuleIdentifier()<<"\n");
|
F->getParent()->getModuleIdentifier() << '\n');
|
||||||
DEBUG(dbgs() << "LV: Unroll Factor is " << UF << "\n");
|
DEBUG(dbgs() << "LV: Unroll Factor is " << UF << '\n');
|
||||||
|
|
||||||
if (VF.Width == 1) {
|
if (VF.Width == 1) {
|
||||||
if (UF == 1)
|
if (UF == 1)
|
||||||
@ -1400,7 +1400,7 @@ InnerLoopVectorizer::addRuntimeCheck(LoopVectorizationLegality *Legal,
|
|||||||
Starts.push_back(Ptr);
|
Starts.push_back(Ptr);
|
||||||
Ends.push_back(Ptr);
|
Ends.push_back(Ptr);
|
||||||
} else {
|
} else {
|
||||||
DEBUG(dbgs() << "LV: Adding RT check for range:" << *Ptr <<"\n");
|
DEBUG(dbgs() << "LV: Adding RT check for range:" << *Ptr << '\n');
|
||||||
|
|
||||||
Value *Start = Exp.expandCodeFor(PtrRtCheck->Starts[i], PtrArithTy, Loc);
|
Value *Start = Exp.expandCodeFor(PtrRtCheck->Starts[i], PtrArithTy, Loc);
|
||||||
Value *End = Exp.expandCodeFor(PtrRtCheck->Ends[i], PtrArithTy, Loc);
|
Value *End = Exp.expandCodeFor(PtrRtCheck->Ends[i], PtrArithTy, Loc);
|
||||||
@ -2745,7 +2745,7 @@ bool LoopVectorizationLegality::canVectorize() {
|
|||||||
// We need to have a loop header.
|
// We need to have a loop header.
|
||||||
BasicBlock *Latch = TheLoop->getLoopLatch();
|
BasicBlock *Latch = TheLoop->getLoopLatch();
|
||||||
DEBUG(dbgs() << "LV: Found a loop: " <<
|
DEBUG(dbgs() << "LV: Found a loop: " <<
|
||||||
TheLoop->getHeader()->getName() << "\n");
|
TheLoop->getHeader()->getName() << '\n');
|
||||||
|
|
||||||
// ScalarEvolution needs to be able to find the exit count.
|
// ScalarEvolution needs to be able to find the exit count.
|
||||||
const SCEV *ExitCount = SE->getBackedgeTakenCount(TheLoop);
|
const SCEV *ExitCount = SE->getBackedgeTakenCount(TheLoop);
|
||||||
@ -2815,7 +2815,7 @@ static bool hasOutsideLoopUser(const Loop *TheLoop, Instruction *Inst,
|
|||||||
Instruction *U = cast<Instruction>(*I);
|
Instruction *U = cast<Instruction>(*I);
|
||||||
// This user may be a reduction exit value.
|
// This user may be a reduction exit value.
|
||||||
if (!TheLoop->contains(U)) {
|
if (!TheLoop->contains(U)) {
|
||||||
DEBUG(dbgs() << "LV: Found an outside user for : "<< *U << "\n");
|
DEBUG(dbgs() << "LV: Found an outside user for : " << *U << '\n');
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2953,7 +2953,7 @@ bool LoopVectorizationLegality::canVectorizeInstrs() {
|
|||||||
// Check that the instruction return type is vectorizable.
|
// Check that the instruction return type is vectorizable.
|
||||||
if (!VectorType::isValidElementType(it->getType()) &&
|
if (!VectorType::isValidElementType(it->getType()) &&
|
||||||
!it->getType()->isVoidTy()) {
|
!it->getType()->isVoidTy()) {
|
||||||
DEBUG(dbgs() << "LV: Found unvectorizable type." << "\n");
|
DEBUG(dbgs() << "LV: Found unvectorizable type.\n");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3158,7 +3158,7 @@ bool AccessAnalysis::canCheckPtrAtRT(
|
|||||||
|
|
||||||
RtCheck.insert(SE, TheLoop, Ptr, IsWrite, DepId);
|
RtCheck.insert(SE, TheLoop, Ptr, IsWrite, DepId);
|
||||||
|
|
||||||
DEBUG(dbgs() << "LV: Found a runtime check ptr:" << *Ptr <<"\n");
|
DEBUG(dbgs() << "LV: Found a runtime check ptr:" << *Ptr << '\n');
|
||||||
} else {
|
} else {
|
||||||
CanDoRT = false;
|
CanDoRT = false;
|
||||||
}
|
}
|
||||||
@ -3223,7 +3223,7 @@ void AccessAnalysis::processMemAccesses(bool UseDeferred) {
|
|||||||
!isa<Argument>(UnderlyingObj)) &&
|
!isa<Argument>(UnderlyingObj)) &&
|
||||||
!isIdentifiedObject(UnderlyingObj))) {
|
!isIdentifiedObject(UnderlyingObj))) {
|
||||||
DEBUG(dbgs() << "LV: Found an unidentified " <<
|
DEBUG(dbgs() << "LV: Found an unidentified " <<
|
||||||
(IsWrite ? "write" : "read" ) << " ptr:" << *UnderlyingObj <<
|
(IsWrite ? "write" : "read" ) << " ptr: " << *UnderlyingObj <<
|
||||||
"\n");
|
"\n");
|
||||||
IsRTCheckNeeded = (IsRTCheckNeeded ||
|
IsRTCheckNeeded = (IsRTCheckNeeded ||
|
||||||
!isIdentifiedObject(UnderlyingObj) ||
|
!isIdentifiedObject(UnderlyingObj) ||
|
||||||
@ -3567,7 +3567,7 @@ bool MemoryDepChecker::isDependent(const MemAccessInfo &A, unsigned AIdx,
|
|||||||
if (Val == 0) {
|
if (Val == 0) {
|
||||||
if (ATy == BTy)
|
if (ATy == BTy)
|
||||||
return false;
|
return false;
|
||||||
DEBUG(dbgs() << "LV: Zero dependence difference but different types");
|
DEBUG(dbgs() << "LV: Zero dependence difference but different types\n");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3576,7 +3576,7 @@ bool MemoryDepChecker::isDependent(const MemAccessInfo &A, unsigned AIdx,
|
|||||||
// Positive distance bigger than max vectorization factor.
|
// Positive distance bigger than max vectorization factor.
|
||||||
if (ATy != BTy) {
|
if (ATy != BTy) {
|
||||||
DEBUG(dbgs() <<
|
DEBUG(dbgs() <<
|
||||||
"LV: ReadWrite-Write positive dependency with different types");
|
"LV: ReadWrite-Write positive dependency with different types\n");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3593,7 +3593,7 @@ bool MemoryDepChecker::isDependent(const MemAccessInfo &A, unsigned AIdx,
|
|||||||
2*TypeByteSize > MaxSafeDepDistBytes ||
|
2*TypeByteSize > MaxSafeDepDistBytes ||
|
||||||
Distance < TypeByteSize * ForcedUnroll * ForcedFactor) {
|
Distance < TypeByteSize * ForcedUnroll * ForcedFactor) {
|
||||||
DEBUG(dbgs() << "LV: Failure because of Positive distance "
|
DEBUG(dbgs() << "LV: Failure because of Positive distance "
|
||||||
<< Val.getSExtValue() << "\n");
|
<< Val.getSExtValue() << '\n');
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3606,7 +3606,7 @@ bool MemoryDepChecker::isDependent(const MemAccessInfo &A, unsigned AIdx,
|
|||||||
return true;
|
return true;
|
||||||
|
|
||||||
DEBUG(dbgs() << "LV: Positive distance " << Val.getSExtValue() <<
|
DEBUG(dbgs() << "LV: Positive distance " << Val.getSExtValue() <<
|
||||||
" with max VF=" << MaxSafeDepDistBytes/TypeByteSize << "\n");
|
" with max VF = " << MaxSafeDepDistBytes / TypeByteSize << '\n');
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -3833,7 +3833,7 @@ bool LoopVectorizationLegality::canVectorizeMemory() {
|
|||||||
MaxSafeDepDistBytes = DepChecker.getMaxSafeDepDistBytes();
|
MaxSafeDepDistBytes = DepChecker.getMaxSafeDepDistBytes();
|
||||||
}
|
}
|
||||||
|
|
||||||
DEBUG(dbgs() << "LV: We "<< (NeedRTCheck ? "" : "don't") <<
|
DEBUG(dbgs() << "LV: We" << (NeedRTCheck ? "" : " don't") <<
|
||||||
" need a runtime memory check.\n");
|
" need a runtime memory check.\n");
|
||||||
|
|
||||||
return CanVecMem;
|
return CanVecMem;
|
||||||
@ -4209,7 +4209,7 @@ LoopVectorizationCostModel::selectVectorizationFactor(bool OptForSize,
|
|||||||
|
|
||||||
// Find the trip count.
|
// Find the trip count.
|
||||||
unsigned TC = SE->getSmallConstantTripCount(TheLoop, TheLoop->getLoopLatch());
|
unsigned TC = SE->getSmallConstantTripCount(TheLoop, TheLoop->getLoopLatch());
|
||||||
DEBUG(dbgs() << "LV: Found trip count:"<<TC<<"\n");
|
DEBUG(dbgs() << "LV: Found trip count: " << TC << '\n');
|
||||||
|
|
||||||
unsigned WidestType = getWidestType();
|
unsigned WidestType = getWidestType();
|
||||||
unsigned WidestRegister = TTI.getRegisterBitWidth(true);
|
unsigned WidestRegister = TTI.getRegisterBitWidth(true);
|
||||||
@ -4220,7 +4220,8 @@ LoopVectorizationCostModel::selectVectorizationFactor(bool OptForSize,
|
|||||||
WidestRegister : MaxSafeDepDist);
|
WidestRegister : MaxSafeDepDist);
|
||||||
unsigned MaxVectorSize = WidestRegister / WidestType;
|
unsigned MaxVectorSize = WidestRegister / WidestType;
|
||||||
DEBUG(dbgs() << "LV: The Widest type: " << WidestType << " bits.\n");
|
DEBUG(dbgs() << "LV: The Widest type: " << WidestType << " bits.\n");
|
||||||
DEBUG(dbgs() << "LV: The Widest register is:" << WidestRegister << "bits.\n");
|
DEBUG(dbgs() << "LV: The Widest register is: "
|
||||||
|
<< WidestRegister << " bits.\n");
|
||||||
|
|
||||||
if (MaxVectorSize == 0) {
|
if (MaxVectorSize == 0) {
|
||||||
DEBUG(dbgs() << "LV: The target has no vector registers.\n");
|
DEBUG(dbgs() << "LV: The target has no vector registers.\n");
|
||||||
@ -4256,7 +4257,7 @@ LoopVectorizationCostModel::selectVectorizationFactor(bool OptForSize,
|
|||||||
|
|
||||||
if (UserVF != 0) {
|
if (UserVF != 0) {
|
||||||
assert(isPowerOf2_32(UserVF) && "VF needs to be a power of two");
|
assert(isPowerOf2_32(UserVF) && "VF needs to be a power of two");
|
||||||
DEBUG(dbgs() << "LV: Using user VF "<<UserVF<<".\n");
|
DEBUG(dbgs() << "LV: Using user VF " << UserVF << ".\n");
|
||||||
|
|
||||||
Factor.Width = UserVF;
|
Factor.Width = UserVF;
|
||||||
return Factor;
|
return Factor;
|
||||||
@ -4264,13 +4265,13 @@ LoopVectorizationCostModel::selectVectorizationFactor(bool OptForSize,
|
|||||||
|
|
||||||
float Cost = expectedCost(1);
|
float Cost = expectedCost(1);
|
||||||
unsigned Width = 1;
|
unsigned Width = 1;
|
||||||
DEBUG(dbgs() << "LV: Scalar loop costs: "<< (int)Cost << ".\n");
|
DEBUG(dbgs() << "LV: Scalar loop costs: " << (int)Cost << ".\n");
|
||||||
for (unsigned i=2; i <= VF; i*=2) {
|
for (unsigned i=2; i <= VF; i*=2) {
|
||||||
// Notice that the vector loop needs to be executed less times, so
|
// Notice that the vector loop needs to be executed less times, so
|
||||||
// we need to divide the cost of the vector loops by the width of
|
// we need to divide the cost of the vector loops by the width of
|
||||||
// the vector elements.
|
// the vector elements.
|
||||||
float VectorCost = expectedCost(i) / (float)i;
|
float VectorCost = expectedCost(i) / (float)i;
|
||||||
DEBUG(dbgs() << "LV: Vector loop of width "<< i << " costs: " <<
|
DEBUG(dbgs() << "LV: Vector loop of width " << i << " costs: " <<
|
||||||
(int)VectorCost << ".\n");
|
(int)VectorCost << ".\n");
|
||||||
if (VectorCost < Cost) {
|
if (VectorCost < Cost) {
|
||||||
Cost = VectorCost;
|
Cost = VectorCost;
|
||||||
@ -4407,7 +4408,7 @@ LoopVectorizationCostModel::selectUnrollFactor(bool OptForSize,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (HasReductions) {
|
if (HasReductions) {
|
||||||
DEBUG(dbgs() << "LV: Unrolling because of reductions. \n");
|
DEBUG(dbgs() << "LV: Unrolling because of reductions.\n");
|
||||||
return UF;
|
return UF;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4415,14 +4416,14 @@ LoopVectorizationCostModel::selectUnrollFactor(bool OptForSize,
|
|||||||
// We assume that the cost overhead is 1 and we use the cost model
|
// We assume that the cost overhead is 1 and we use the cost model
|
||||||
// to estimate the cost of the loop and unroll until the cost of the
|
// to estimate the cost of the loop and unroll until the cost of the
|
||||||
// loop overhead is about 5% of the cost of the loop.
|
// loop overhead is about 5% of the cost of the loop.
|
||||||
DEBUG(dbgs() << "LV: Loop cost is "<< LoopCost <<" \n");
|
DEBUG(dbgs() << "LV: Loop cost is " << LoopCost << '\n');
|
||||||
if (LoopCost < SmallLoopCost) {
|
if (LoopCost < SmallLoopCost) {
|
||||||
DEBUG(dbgs() << "LV: Unrolling to reduce branch cost. \n");
|
DEBUG(dbgs() << "LV: Unrolling to reduce branch cost.\n");
|
||||||
unsigned NewUF = SmallLoopCost / (LoopCost + 1);
|
unsigned NewUF = SmallLoopCost / (LoopCost + 1);
|
||||||
return std::min(NewUF, UF);
|
return std::min(NewUF, UF);
|
||||||
}
|
}
|
||||||
|
|
||||||
DEBUG(dbgs() << "LV: Not Unrolling. \n");
|
DEBUG(dbgs() << "LV: Not Unrolling.\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4523,16 +4524,16 @@ LoopVectorizationCostModel::calculateRegisterUsage() {
|
|||||||
MaxUsage = std::max(MaxUsage, OpenIntervals.size());
|
MaxUsage = std::max(MaxUsage, OpenIntervals.size());
|
||||||
|
|
||||||
DEBUG(dbgs() << "LV(REG): At #" << i << " Interval # " <<
|
DEBUG(dbgs() << "LV(REG): At #" << i << " Interval # " <<
|
||||||
OpenIntervals.size() <<"\n");
|
OpenIntervals.size() << '\n');
|
||||||
|
|
||||||
// Add the current instruction to the list of open intervals.
|
// Add the current instruction to the list of open intervals.
|
||||||
OpenIntervals.insert(I);
|
OpenIntervals.insert(I);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned Invariant = LoopInvariants.size();
|
unsigned Invariant = LoopInvariants.size();
|
||||||
DEBUG(dbgs() << "LV(REG): Found max usage: " << MaxUsage << " \n");
|
DEBUG(dbgs() << "LV(REG): Found max usage: " << MaxUsage << '\n');
|
||||||
DEBUG(dbgs() << "LV(REG): Found invariant usage: " << Invariant << " \n");
|
DEBUG(dbgs() << "LV(REG): Found invariant usage: " << Invariant << '\n');
|
||||||
DEBUG(dbgs() << "LV(REG): LoopSize: " << R.NumInstructions << " \n");
|
DEBUG(dbgs() << "LV(REG): LoopSize: " << R.NumInstructions << '\n');
|
||||||
|
|
||||||
R.LoopInvariantRegs = Invariant;
|
R.LoopInvariantRegs = Invariant;
|
||||||
R.MaxLocalUsers = MaxUsage;
|
R.MaxLocalUsers = MaxUsage;
|
||||||
@ -4556,8 +4557,8 @@ unsigned LoopVectorizationCostModel::expectedCost(unsigned VF) {
|
|||||||
|
|
||||||
unsigned C = getInstructionCost(it, VF);
|
unsigned C = getInstructionCost(it, VF);
|
||||||
BlockCost += C;
|
BlockCost += C;
|
||||||
DEBUG(dbgs() << "LV: Found an estimated cost of "<< C <<" for VF " <<
|
DEBUG(dbgs() << "LV: Found an estimated cost of " << C << " for VF " <<
|
||||||
VF << " For instruction: "<< *it << "\n");
|
VF << " For instruction: " << *it << '\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
// We assume that if-converted blocks have a 50% chance of being executed.
|
// We assume that if-converted blocks have a 50% chance of being executed.
|
||||||
|
Loading…
Reference in New Issue
Block a user