Lines Matching refs:OS
27 template <EscapeTag Tag> void writeEscaped(raw_ostream &OS, const StringRef S);
29 template <> void writeEscaped<kEscapeCsv>(raw_ostream &OS, const StringRef S) { in writeEscaped() argument
31 OS << S; in writeEscaped()
34 OS << '"'; in writeEscaped()
37 OS << "\"\""; in writeEscaped()
39 OS << C; in writeEscaped()
41 OS << '"'; in writeEscaped()
45 template <> void writeEscaped<kEscapeHtml>(raw_ostream &OS, const StringRef S) { in writeEscaped() argument
48 OS << "<"; in writeEscaped()
50 OS << ">"; in writeEscaped()
52 OS << "&"; in writeEscaped()
54 OS << C; in writeEscaped()
59 void writeEscaped<kEscapeHtmlString>(raw_ostream &OS, const StringRef S) { in writeEscaped() argument
62 OS << "\\\""; in writeEscaped()
64 OS << C; in writeEscaped()
72 writeClusterId(raw_ostream &OS, in writeClusterId() argument
75 writeEscaped<Tag>(OS, "[noise]"); in writeClusterId()
77 writeEscaped<Tag>(OS, "[error]"); in writeClusterId()
79 OS << CID.getId(); in writeClusterId()
83 static void writeMeasurementValue(raw_ostream &OS, const double Value) { in writeMeasurementValue() argument
97 OS, formatv(SimpleFloatFormat.data(), Value).sstr<SerializationLen>()); in writeMeasurementValue()
101 void Analysis::writeSnippet(raw_ostream &OS, ArrayRef<uint8_t> Bytes, in writeSnippet() argument
109 writeEscaped<Tag>(OS, join(Lines, Separator)); in writeSnippet()
110 writeEscaped<Tag>(OS, Separator); in writeSnippet()
111 writeEscaped<Tag>(OS, "[error decoding asm snippet]"); in writeSnippet()
120 writeEscaped<Tag>(OS, join(Lines, Separator)); in writeSnippet()
126 raw_ostream &OS) const { in printInstructionRowCsv()
128 writeClusterId<kEscapeCsv>(OS, Clustering_.getClusterIdForPoint(PointId)); in printInstructionRowCsv()
129 OS << kCsvSep; in printInstructionRowCsv()
130 writeSnippet<EscapeTag, kEscapeCsv>(OS, Point.AssembledSnippet, "; "); in printInstructionRowCsv()
131 OS << kCsvSep; in printInstructionRowCsv()
132 writeEscaped<kEscapeCsv>(OS, Point.Key.Config); in printInstructionRowCsv()
133 OS << kCsvSep; in printInstructionRowCsv()
142 writeEscaped<kEscapeCsv>(OS, SCDesc->Name); in printInstructionRowCsv()
144 OS << SchedClassId; in printInstructionRowCsv()
147 OS << kCsvSep; in printInstructionRowCsv()
148 writeMeasurementValue<kEscapeCsv>(OS, Measurement.PerInstructionValue); in printInstructionRowCsv()
150 OS << "\n"; in printInstructionRowCsv()
168 Error Analysis::run<Analysis::PrintClusters>(raw_ostream &OS) const { in run()
173 OS << "cluster_id" << kCsvSep << "opcode_name" << kCsvSep << "config" in run()
176 OS << kCsvSep; in run()
177 writeEscaped<kEscapeCsv>(OS, Measurement.Key); in run()
179 OS << "\n"; in run()
184 printInstructionRowCsv(PointId, OS); in run()
186 OS << "\n\n"; in run()
232 static void writeParallelSnippetHtml(raw_ostream &OS, in writeParallelSnippetHtml() argument
237 writeEscaped<kEscapeHtml>(OS, InstrInfo.getName(Instructions[0].getOpcode())); in writeParallelSnippetHtml()
239 OS << " (x" << Instructions.size() << ")"; in writeParallelSnippetHtml()
244 static void writeLatencySnippetHtml(raw_ostream &OS, in writeLatencySnippetHtml() argument
252 OS << " → "; in writeLatencySnippetHtml()
253 writeEscaped<kEscapeHtml>(OS, InstrInfo.getName(Instr.getOpcode())); in writeLatencySnippetHtml()
257 void Analysis::printPointHtml(const Benchmark &Point, raw_ostream &OS) const { in printPointHtml()
258 OS << "<li><span class=\"mono\" title=\""; in printPointHtml()
259 writeSnippet<EscapeTag, kEscapeHtmlString>(OS, Point.AssembledSnippet, "\n"); in printPointHtml()
260 OS << "\">"; in printPointHtml()
263 writeLatencySnippetHtml(OS, Point.Key.Instructions, State_.getInstrInfo()); in printPointHtml()
267 writeParallelSnippetHtml(OS, Point.Key.Instructions, State_.getInstrInfo()); in printPointHtml()
272 OS << "</span> <span class=\"mono\">"; in printPointHtml()
273 writeEscaped<kEscapeHtml>(OS, Point.Key.Config); in printPointHtml()
274 OS << "</span></li>"; in printPointHtml()
279 const ResolvedSchedClass &RSC, raw_ostream &OS) const { in printSchedClassClustersHtml()
281 OS << "<table class=\"sched-class-clusters\">"; in printSchedClassClustersHtml()
282 OS << "<tr><th>ClusterId</th><th>Opcode/Config</th>"; in printSchedClassClustersHtml()
286 OS << "<th>"; in printSchedClassClustersHtml()
287 writeEscaped<kEscapeHtml>(OS, Measurement.Key); in printSchedClassClustersHtml()
288 OS << "</th>"; in printSchedClassClustersHtml()
290 OS << "</tr>"; in printSchedClassClustersHtml()
292 OS << "<tr class=\"" in printSchedClassClustersHtml()
299 writeClusterId<kEscapeHtml>(OS, Cluster.id()); in printSchedClassClustersHtml()
300 OS << "</td><td><ul>"; in printSchedClassClustersHtml()
302 printPointHtml(Points[PointId], OS); in printSchedClassClustersHtml()
304 OS << "</ul></td>"; in printSchedClassClustersHtml()
306 OS << "<td class=\"measurement\">"; in printSchedClassClustersHtml()
307 writeMeasurementValue<kEscapeHtml>(OS, Stats.avg()); in printSchedClassClustersHtml()
308 OS << "<br><span class=\"minmax\">["; in printSchedClassClustersHtml()
309 writeMeasurementValue<kEscapeHtml>(OS, Stats.min()); in printSchedClassClustersHtml()
310 OS << ";"; in printSchedClassClustersHtml()
311 writeMeasurementValue<kEscapeHtml>(OS, Stats.max()); in printSchedClassClustersHtml()
312 OS << "]</span></td>"; in printSchedClassClustersHtml()
314 OS << "</tr>"; in printSchedClassClustersHtml()
316 OS << "</table>"; in printSchedClassClustersHtml()
356 raw_ostream &OS) const { in printSchedClassDescHtml()
357 OS << "<table class=\"sched-class-desc\">"; in printSchedClassDescHtml()
358 OS << "<tr><th>Valid</th><th>Variant</th><th>NumMicroOps</th><th>Latency</" in printSchedClassDescHtml()
365 OS << "<tr><td>✔</td>"; in printSchedClassDescHtml()
366 OS << "<td>" << (RSC.WasVariant ? "✔" : "✕") << "</td>"; in printSchedClassDescHtml()
367 OS << "<td>" << RSC.SCDesc->NumMicroOps << "</td>"; in printSchedClassDescHtml()
369 OS << "<td><ul>"; in printSchedClassDescHtml()
372 OS << "<li>" << Entry->Cycles; in printSchedClassDescHtml()
375 OS << " (WriteResourceID " << Entry->WriteResourceID << ")"; in printSchedClassDescHtml()
377 OS << "</li>"; in printSchedClassDescHtml()
379 OS << "</ul></td>"; in printSchedClassDescHtml()
381 OS << "<td>"; in printSchedClassDescHtml()
383 OS, MCSchedModel::getReciprocalThroughput(SI, *RSC.SCDesc)); in printSchedClassDescHtml()
384 OS << "</td>"; in printSchedClassDescHtml()
386 OS << "<td><ul>"; in printSchedClassDescHtml()
388 OS << "<li><span class=\"mono\">"; in printSchedClassDescHtml()
389 writeEscaped<kEscapeHtml>(OS, in printSchedClassDescHtml()
391 OS << "</span>: " << WPR.ReleaseAtCycle << "</li>"; in printSchedClassDescHtml()
393 OS << "</ul></td>"; in printSchedClassDescHtml()
395 OS << "<td><ul>"; in printSchedClassDescHtml()
397 OS << "<li><span class=\"mono\">"; in printSchedClassDescHtml()
399 OS, SI.getSchedModel().getProcResource(Pressure.first)->Name); in printSchedClassDescHtml()
400 OS << "</span>: "; in printSchedClassDescHtml()
401 writeMeasurementValue<kEscapeHtml>(OS, Pressure.second); in printSchedClassDescHtml()
402 OS << "</li>"; in printSchedClassDescHtml()
404 OS << "</ul></td>"; in printSchedClassDescHtml()
405 OS << "</tr>"; in printSchedClassDescHtml()
407 OS << "<tr><td>✕</td><td></td><td></td></tr>"; in printSchedClassDescHtml()
409 OS << "</table>"; in printSchedClassDescHtml()
414 raw_ostream &OS) const { in printClusterRawHtml()
420 OS << "<div class=\"inconsistency\"><p>" << display_name << " Cluster (" in printClusterRawHtml()
422 OS << "<table class=\"sched-class-clusters\">"; in printClusterRawHtml()
424 OS << "<tr><th>ClusterId</th><th>Opcode/Config</th>"; in printClusterRawHtml()
426 OS << "<th>"; in printClusterRawHtml()
427 writeEscaped<kEscapeHtml>(OS, Measurement.Key); in printClusterRawHtml()
428 OS << "</th>"; in printClusterRawHtml()
430 OS << "</tr>"; in printClusterRawHtml()
434 OS << "<tr class=\"bad-cluster\"><td>" << display_name << "</td><td><ul>"; in printClusterRawHtml()
435 printPointHtml(Points[PointId], OS); in printClusterRawHtml()
436 OS << "</ul></td>"; in printClusterRawHtml()
438 OS << "<td class=\"measurement\">"; in printClusterRawHtml()
439 writeMeasurementValue<kEscapeHtml>(OS, Measurement.PerInstructionValue); in printClusterRawHtml()
441 OS << "</tr>"; in printClusterRawHtml()
443 OS << "</table>"; in printClusterRawHtml()
445 OS << "</div>"; in printClusterRawHtml()
517 raw_ostream &OS) const { in run()
520 OS << "<!DOCTYPE html><html>" << kHtmlHead << "<body>"; in run()
521 OS << "<h1><span class=\"mono\">llvm-exegesis</span> Analysis Results</h1>"; in run()
522 OS << "<h3>Triple: <span class=\"mono\">"; in run()
523 writeEscaped<kEscapeHtml>(OS, FirstPoint.LLVMTriple); in run()
524 OS << "</span></h3><h3>Cpu: <span class=\"mono\">"; in run()
525 writeEscaped<kEscapeHtml>(OS, FirstPoint.CpuName); in run()
526 OS << "</span></h3>"; in run()
527 OS << "<h3>Epsilon: <span class=\"mono\">" in run()
563 OS << "<div class=\"inconsistency\"><p>Sched Class <span " in run()
566 writeEscaped<kEscapeHtml>(OS, RSCAndPoints.RSC.SCDesc->Name); in run()
568 OS << RSCAndPoints.RSC.SchedClassId; in run()
570 OS << "</span> contains instructions whose performance characteristics do" in run()
572 printSchedClassClustersHtml(SchedClassClusters, RSCAndPoints.RSC, OS); in run()
573 OS << "<p>llvm SchedModel data:</p>"; in run()
574 printSchedClassDescHtml(RSCAndPoints.RSC, OS); in run()
575 OS << "</div>"; in run()
579 "[noise]", OS); in run()
581 OS << "</body></html>"; in run()