[llvm] r332381 - [llvm-mca] use a formatted_raw_ostream to insert padding and get rid of tabs. NFC
Andrea Di Biagio via llvm-commits
llvm-commits at lists.llvm.org
Tue May 15 11:11:45 PDT 2018
Author: adibiagio
Date: Tue May 15 11:11:45 2018
New Revision: 332381
URL: http://llvm.org/viewvc/llvm-project?rev=332381&view=rev
Log:
[llvm-mca] use a formatted_raw_ostream to insert padding and get rid of tabs. NFC
Modified:
llvm/trunk/tools/llvm-mca/ResourcePressureView.cpp
llvm/trunk/tools/llvm-mca/TimelineView.cpp
llvm/trunk/tools/llvm-mca/TimelineView.h
Modified: llvm/trunk/tools/llvm-mca/ResourcePressureView.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-mca/ResourcePressureView.cpp?rev=332381&r1=332380&r2=332381&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-mca/ResourcePressureView.cpp (original)
+++ llvm/trunk/tools/llvm-mca/ResourcePressureView.cpp Tue May 15 11:11:45 2018
@@ -13,6 +13,7 @@
//===----------------------------------------------------------------------===//
#include "ResourcePressureView.h"
+#include "llvm/Support/FormattedStream.h"
#include "llvm/Support/raw_ostream.h"
namespace mca {
@@ -55,7 +56,9 @@ void ResourcePressureView::onInstruction
}
}
-static void printColumnNames(raw_string_ostream &OS, const MCSchedModel &SM) {
+static void printColumnNames(formatted_raw_ostream &OS,
+ const MCSchedModel &SM) {
+ unsigned Column = OS.getColumn();
for (unsigned I = 1, ResourceIndex = 0, E = SM.getNumProcResourceKinds();
I < E; ++I) {
const MCProcResourceDesc &ProcResource = *SM.getProcResource(I);
@@ -64,47 +67,37 @@ static void printColumnNames(raw_string_
if (ProcResource.SubUnitsIdxBegin || !NumUnits)
continue;
- if (NumUnits == 1) {
- OS << '[' << ResourceIndex << ']';
- if (ResourceIndex < 10)
- OS << " ";
- else
- OS << " ";
- } else {
- for (unsigned J = 0; J < NumUnits; ++J) {
- OS << "[" << ResourceIndex << '.' << J << ']';
- if (ResourceIndex < 10)
- OS << " ";
- else
- OS << ' ';
- }
+ for (unsigned J = 0; J < NumUnits; ++J) {
+ Column += 7;
+ OS << "[" << ResourceIndex;
+ if (NumUnits > 1)
+ OS << '.' << J;
+ OS << ']';
+ OS.PadToColumn(Column);
}
+
ResourceIndex++;
}
}
-static void printResourcePressure(raw_string_ostream &OS, double Pressure) {
+static void printResourcePressure(formatted_raw_ostream &OS, double Pressure,
+ unsigned Col) {
if (!Pressure || Pressure < 0.005) {
- OS << " - ";
- return;
+ OS << " - ";
+ } else {
+ // Round to the value to the nearest hundredth and then print it.
+ OS << format("%.2f", floor((Pressure * 100) + 0.5) / 100);
}
-
- // Round to the value to the nearest hundredth and then print it.
- OS << format("%.2f", floor((Pressure * 100) + 0.5)/100);
- if (Pressure < 10.0)
- OS << " ";
- else if (Pressure < 100.0)
- OS << " ";
- else
- OS << ' ';
+ OS.PadToColumn(Col);
}
void ResourcePressureView::printResourcePressurePerIteration(
raw_ostream &OS, unsigned Executions) const {
std::string Buffer;
raw_string_ostream TempStream(Buffer);
+ formatted_raw_ostream FOS(TempStream);
- TempStream << "\n\nResources:\n";
+ FOS << "\n\nResources:\n";
const MCSchedModel &SM = STI.getSchedModel();
for (unsigned I = 1, ResourceIndex = 0, E = SM.getNumProcResourceKinds();
I < E; ++I) {
@@ -115,25 +108,29 @@ void ResourcePressureView::printResource
continue;
for (unsigned J = 0; J < NumUnits; ++J) {
- TempStream << '[' << ResourceIndex;
+ FOS << '[' << ResourceIndex;
if (NumUnits > 1)
- TempStream << '.' << J;
- TempStream << "] - " << ProcResource.Name << '\n';
+ FOS << '.' << J;
+ FOS << ']';
+ FOS.PadToColumn(6);
+ FOS << "- " << ProcResource.Name << '\n';
}
ResourceIndex++;
}
- TempStream << "\n\nResource pressure per iteration:\n";
- printColumnNames(TempStream, SM);
- TempStream << '\n';
+ FOS << "\n\nResource pressure per iteration:\n";
+ FOS.flush();
+ printColumnNames(FOS, SM);
+ FOS << '\n';
+ FOS.flush();
for (unsigned I = 0, E = NumResourceUnits; I < E; ++I) {
double Usage = ResourceUsage[I + Source.size() * E];
- printResourcePressure(TempStream, Usage / Executions);
+ printResourcePressure(FOS, Usage / Executions, (I + 1) * 7);
}
- TempStream.flush();
+ FOS.flush();
OS << Buffer;
}
@@ -141,10 +138,11 @@ void ResourcePressureView::printResource
raw_ostream &OS, unsigned Executions) const {
std::string Buffer;
raw_string_ostream TempStream(Buffer);
+ formatted_raw_ostream FOS(TempStream);
- TempStream << "\n\nResource pressure by instruction:\n";
- printColumnNames(TempStream, STI.getSchedModel());
- TempStream << "Instructions:\n";
+ FOS << "\n\nResource pressure by instruction:\n";
+ printColumnNames(FOS, STI.getSchedModel());
+ FOS << "Instructions:\n";
std::string Instruction;
raw_string_ostream InstrStream(Instruction);
@@ -152,7 +150,7 @@ void ResourcePressureView::printResource
for (unsigned I = 0, E = Source.size(); I < E; ++I) {
for (unsigned J = 0; J < NumResourceUnits; ++J) {
double Usage = ResourceUsage[J + I * NumResourceUnits];
- printResourcePressure(TempStream, Usage / Executions);
+ printResourcePressure(FOS, Usage / Executions, (J + 1) * 7);
}
MCIP.printInst(&Source.getMCInstFromIndex(I), InstrStream, "", STI);
@@ -162,10 +160,10 @@ void ResourcePressureView::printResource
// Remove any tabs or spaces at the beginning of the instruction.
Str = Str.ltrim();
- TempStream << Str << '\n';
+ FOS << Str << '\n';
Instruction = "";
- TempStream.flush();
+ FOS.flush();
OS << Buffer;
Buffer = "";
}
Modified: llvm/trunk/tools/llvm-mca/TimelineView.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-mca/TimelineView.cpp?rev=332381&r1=332380&r2=332381&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-mca/TimelineView.cpp (original)
+++ llvm/trunk/tools/llvm-mca/TimelineView.cpp Tue May 15 11:11:45 2018
@@ -73,48 +73,30 @@ void TimelineView::onInstructionEvent(co
LastCycle = std::max(LastCycle, CurrentCycle);
}
-static void printAverageTime(raw_string_ostream &OS, double AverageTime) {
- // Round to the nearest tenth.
- OS << format("%.1f", floor((AverageTime * 10) + 0.5)/10);
- if (AverageTime < 10.0)
- OS << " ";
- else if (AverageTime < 100.0)
- OS << " ";
- else
- OS << " ";
-}
-
-void TimelineView::printWaitTimeEntry(raw_string_ostream &OS,
+void TimelineView::printWaitTimeEntry(formatted_raw_ostream &OS,
const WaitTimeEntry &Entry,
unsigned SourceIndex) const {
OS << SourceIndex << '.';
- if (SourceIndex < 10)
- OS << " ";
- else if (SourceIndex < 100)
- OS << " ";
- else if (SourceIndex < 1000)
- OS << " ";
- else
- OS << ' ';
+ OS.PadToColumn(7);
if (Entry.Executions == 0) {
- OS << " - - - - ";
+ OS << "- - - - ";
} else {
double AverageTime1, AverageTime2, AverageTime3;
unsigned Executions = Entry.Executions;
AverageTime1 = (double)Entry.CyclesSpentInSchedulerQueue / Executions;
AverageTime2 = (double)Entry.CyclesSpentInSQWhileReady / Executions;
AverageTime3 = (double)Entry.CyclesSpentAfterWBAndBeforeRetire / Executions;
- if (Executions < 10)
- OS << ' ' << Executions << " ";
- else if (Executions < 100)
- OS << ' ' << Executions << " ";
- else
- OS << Executions << " ";
- printAverageTime(OS, AverageTime1);
- printAverageTime(OS, AverageTime2);
- printAverageTime(OS, AverageTime3);
+ OS << Executions;
+ OS.PadToColumn(13);
+
+ OS << format("%.1f", floor((AverageTime1 * 10) + 0.5) / 10);
+ OS.PadToColumn(20);
+ OS << format("%.1f", floor((AverageTime2 * 10) + 0.5) / 10);
+ OS.PadToColumn(27);
+ OS << format("%.1f", floor((AverageTime3 * 10) + 0.5) / 10);
+ OS.PadToColumn(34);
}
}
@@ -124,21 +106,21 @@ void TimelineView::printAverageWaitTimes
std::string Buffer;
raw_string_ostream TempStream(Buffer);
+ formatted_raw_ostream FOS(TempStream);
- TempStream
- << "\n\nAverage Wait times (based on the timeline view):\n"
+ FOS << "\n\nAverage Wait times (based on the timeline view):\n"
<< "[0]: Executions\n"
<< "[1]: Average time spent waiting in a scheduler's queue\n"
<< "[2]: Average time spent waiting in a scheduler's queue while ready\n"
<< "[3]: Average time elapsed from WB until retire stage\n\n";
- TempStream << " [0] [1] [2] [3]\n";
+ FOS << " [0] [1] [2] [3]\n";
// Use a different string stream for the instruction.
std::string Instruction;
raw_string_ostream InstrStream(Instruction);
for (unsigned I = 0, E = WaitTime.size(); I < E; ++I) {
- printWaitTimeEntry(TempStream, WaitTime[I], I);
+ printWaitTimeEntry(FOS, WaitTime[I], I);
// Append the instruction info at the end of the line.
const MCInst &Inst = AsmSequence.getMCInstFromIndex(I);
@@ -148,8 +130,8 @@ void TimelineView::printAverageWaitTimes
// Consume any tabs or spaces at the beginning of the string.
StringRef Str(Instruction);
Str = Str.ltrim();
- TempStream << " " << Str << '\n';
- TempStream.flush();
+ FOS << " " << Str << '\n';
+ FOS.flush();
Instruction = "";
OS << Buffer;
@@ -157,13 +139,14 @@ void TimelineView::printAverageWaitTimes
}
}
-void TimelineView::printTimelineViewEntry(raw_string_ostream &OS,
+void TimelineView::printTimelineViewEntry(formatted_raw_ostream &OS,
const TimelineViewEntry &Entry,
unsigned Iteration,
unsigned SourceIndex) const {
if (Iteration == 0 && SourceIndex == 0)
OS << '\n';
- OS << '[' << Iteration << ',' << SourceIndex << "]\t";
+ OS << '[' << Iteration << ',' << SourceIndex << ']';
+ OS.PadToColumn(10);
for (unsigned I = 0, E = Entry.CycleDispatched; I < E; ++I)
OS << ((I % 5 == 0) ? '.' : ' ');
OS << TimelineView::DisplayChar::Dispatched;
@@ -194,9 +177,9 @@ void TimelineView::printTimelineViewEntr
OS << ((I % 5 == 0 || I == LastCycle) ? '.' : ' ');
}
-static void printTimelineHeader(raw_string_ostream &OS, unsigned Cycles) {
+static void printTimelineHeader(formatted_raw_ostream &OS, unsigned Cycles) {
OS << "\n\nTimeline view:\n";
- OS << " \t";
+ OS.PadToColumn(10);
for (unsigned I = 0; I <= Cycles; ++I) {
if (((I / 10) & 1) == 0)
OS << ' ';
@@ -204,7 +187,8 @@ static void printTimelineHeader(raw_stri
OS << I % 10;
}
- OS << "\nIndex\t";
+ OS << "\nIndex";
+ OS.PadToColumn(10);
for (unsigned I = 0; I <= Cycles; ++I) {
if (((I / 10) & 1) == 0)
OS << I % 10;
@@ -216,10 +200,11 @@ static void printTimelineHeader(raw_stri
void TimelineView::printTimeline(raw_ostream &OS) const {
std::string Buffer;
- raw_string_ostream TempStream(Buffer);
+ raw_string_ostream StringStream(Buffer);
+ formatted_raw_ostream FOS(StringStream);
- printTimelineHeader(TempStream, LastCycle);
- TempStream.flush();
+ printTimelineHeader(FOS, LastCycle);
+ FOS.flush();
OS << Buffer;
// Use a different string stream for the instruction.
@@ -234,7 +219,7 @@ void TimelineView::printTimeline(raw_ost
unsigned Iteration = I / AsmSequence.size();
unsigned SourceIndex = I % AsmSequence.size();
- printTimelineViewEntry(TempStream, Entry, Iteration, SourceIndex);
+ printTimelineViewEntry(FOS, Entry, Iteration, SourceIndex);
// Append the instruction info at the end of the line.
const MCInst &Inst = AsmSequence.getMCInstFromIndex(I);
MCIP.printInst(&Inst, InstrStream, "", STI);
@@ -243,8 +228,8 @@ void TimelineView::printTimeline(raw_ost
// Consume any tabs or spaces at the beginning of the string.
StringRef Str(Instruction);
Str = Str.ltrim();
- TempStream << " " << Str << '\n';
- TempStream.flush();
+ FOS << " " << Str << '\n';
+ FOS.flush();
Instruction = "";
OS << Buffer;
}
Modified: llvm/trunk/tools/llvm-mca/TimelineView.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-mca/TimelineView.h?rev=332381&r1=332380&r2=332381&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-mca/TimelineView.h (original)
+++ llvm/trunk/tools/llvm-mca/TimelineView.h Tue May 15 11:11:45 2018
@@ -104,6 +104,7 @@
#include "View.h"
#include "llvm/MC/MCInstPrinter.h"
#include "llvm/MC/MCSubtargetInfo.h"
+#include "llvm/Support/FormattedStream.h"
#include "llvm/Support/raw_ostream.h"
#include <map>
@@ -142,11 +143,11 @@ class TimelineView : public View {
};
std::vector<WaitTimeEntry> WaitTime;
- void printTimelineViewEntry(llvm::raw_string_ostream &OS,
+ void printTimelineViewEntry(llvm::formatted_raw_ostream &OS,
const TimelineViewEntry &E, unsigned Iteration,
unsigned SourceIndex) const;
- void printWaitTimeEntry(llvm::raw_string_ostream &OS, const WaitTimeEntry &E,
- unsigned Index) const;
+ void printWaitTimeEntry(llvm::formatted_raw_ostream &OS,
+ const WaitTimeEntry &E, unsigned Index) const;
const unsigned DEFAULT_ITERATIONS = 10;
More information about the llvm-commits
mailing list