59#ifndef __BASE_STATISTICS_HH__
60#define __BASE_STATISTICS_HH__
97template <
class Stat,
class Base>
112 visitor.
visit(*
static_cast<Base *
>(
this));
114 bool zero()
const {
return s.zero(); }
150 this->
s.result(rvec);
216 bool zero()
const {
return true; }
226template <
class Derived,
template <
class>
class InfoProxyType>
230 typedef InfoProxyType<Derived>
Info;
233 Derived &
self() {
return *
static_cast<Derived *
>(
this); }
274 std::string common_message =
"Legacy stat is a stat that does not "
275 "belong to any statistics::Group. Legacy stat is deprecated.";
276 if (parent ==
nullptr &&
name !=
nullptr)
278 else if (parent ==
nullptr)
279 warn_once(
"One of the stats is a legacy stat. " + common_message);
295 const std::string &
name()
const {
return this->
info()->name; }
306 this->
info()->setSeparator(_sep);
311 return this->
info()->separatorString;
322 this->
info()->unit = _unit;
335 this->
info()->desc = _desc;
347 this->
info()->precision = _precision;
359 this->
info()->flags.set(_flags);
369 template <
class Stat>
373 this->
info()->prereq = prereq.info();
378template <
class Derived,
template <
class>
class InfoProxyType>
382 typedef InfoProxyType<Derived>
Info;
386 const char *
desc =
nullptr)
407 if (subn.size() <=
index)
408 subn.resize(
index + 1);
430 if (subd.size() <=
index)
431 subd.resize(
index + 1);
443 size_t size =
self.size();
445 self.data(
i)->prepare(
info->getStorageParams());
454 size_t size =
self.size();
456 self.data(
i)->reset(
info->getStorageParams());
460template <
class Derived,
template <
class>
class InfoProxyType>
464 typedef InfoProxyType<Derived>
Info;
482 info->y_subnames.resize(
self.y);
484 info->y_subnames[
i] = names[
i];
503 return this->
info()->y_subnames[
i];
518template <
class Derived,
class Stor>
538 return reinterpret_cast<Storage *
>(storage);
550 return reinterpret_cast<const Storage *
>(storage);
563 const char *
desc =
nullptr)
592 template <
typename U>
600 template <
typename U>
608 template <
typename U>
636 std::string
str()
const {
return std::to_string(
value()); }
659template <
class T,
class Enabled=
void>
680 typename
std::enable_if_t<std::is_constructible_v<std::function<Result()>,
697template <
class T,
class V>
712template <
class Derived>
763 template <
class T,
class V>
871 template <
typename U>
883 template <
typename U>
895 template <
typename U>
920template <
class Derived,
class Stor>
954 fatal_if(
s <= 0,
"Storage size must be positive");
1007 if (
data(
i)->zero())
1059template <
class Stat>
1070 typename Stat::Storage *
1077 const typename Stat::Storage *
1135template <
class Derived,
class Stor>
1175 fatal_if((_x <= 0) || (_y <= 0),
"Storage sizes must be positive");
1213 return data(0)->zero();
1272template <
class Derived,
class Stor>
1292 return reinterpret_cast<Storage *
>(storage);
1302 return reinterpret_cast<const Storage *
>(storage);
1326 template <
typename U>
1353 data()->reset(this->
info()->getStorageParams());
1362template <
class Stat>
1365template <
class Derived,
class Stor>
1395 fatal_if(
s <= 0,
"Storage size must be positive");
1436 if (!
data(
i)->zero())
1458template <
class Stat>
1487 template <
typename U>
1503 return data()->zero();
1544 virtual std::string
str()
const = 0;
1578template <
class Stat>
1600 return proxy.result();
1673 std::string tmp =
"(";
1687 static std::string
str() {
return "+"; }
1693 static std::string
str() {
return "-"; }
1699 static std::string
str() {
return "*"; }
1705 static std::string
str() {
return "/"; }
1711 static std::string
str() {
return "%"; }
1717 static std::string
str() {
return "-"; }
1783 assert(lvec.size() > 0 && rvec.size() > 0);
1785 if (lvec.size() == 1 && rvec.size() == 1) {
1788 }
else if (lvec.size() == 1) {
1793 }
else if (rvec.size() == 1) {
1798 }
else if (rvec.size() == lvec.size()) {
1819 assert(lvec.size() > 0 && rvec.size() > 0);
1820 assert(lvec.size() == rvec.size() ||
1821 lvec.size() == 1 || rvec.size() == 1);
1824 if (lvec.size() == rvec.size() && lvec.size() > 1) {
1829 return op(lsum, rsum);
1847 }
else if (
rs == 1) {
1850 assert(ls ==
rs &&
"Node vector sizes are not equal");
1936 parent, nullptr, units::Unspecified::get(), nullptr)
1942 parent,
name, units::Unspecified::get(),
desc)
1947 const char *
desc =
nullptr)
1964 parent, nullptr, units::Unspecified::get(), nullptr)
1970 parent,
name, units::Unspecified::get(),
desc)
1975 const char *
desc =
nullptr)
1985 :
ValueBase<
Value>(parent, nullptr, units::Unspecified::get(), nullptr)
1995 const char *
desc =
nullptr)
2010 parent, nullptr, units::Unspecified::get(), nullptr)
2016 parent,
name, units::Unspecified::get(),
desc)
2021 const char *
desc =
nullptr)
2036 parent, nullptr, units::Unspecified::get(), nullptr)
2042 parent,
name, units::Unspecified::get(),
desc)
2047 const char *
desc =
nullptr)
2062 parent, nullptr, units::Unspecified::get(), nullptr)
2068 parent,
name, units::Unspecified::get(),
desc)
2073 const char *
desc =
nullptr)
2088 parent, nullptr, units::Unspecified::get(), nullptr)
2094 parent,
name, units::Unspecified::get(),
desc)
2099 const char *
desc =
nullptr)
2117 return this->
self();
2130 parent, nullptr, units::Unspecified::get(), nullptr)
2135 const char *
desc =
nullptr)
2137 parent,
name, units::Unspecified::get(),
desc)
2142 const char *
desc =
nullptr)
2158 return this->
self();
2174 parent, nullptr, units::Unspecified::get(), nullptr)
2182 const char *
desc =
nullptr)
2184 parent,
name, units::Unspecified::get(),
desc)
2192 const char *
desc =
nullptr)
2213 parent, nullptr, units::Unspecified::get(), nullptr)
2221 const char *
desc =
nullptr)
2223 parent,
name, units::Unspecified::get(),
desc)
2231 const char *
desc =
nullptr)
2249 units::Unspecified::get(), nullptr)
2254 const char *
desc =
nullptr)
2256 parent,
name, units::Unspecified::get(),
desc)
2262 const char *
desc =
nullptr)
2282 return this->
self();
2296 units::Unspecified::get(), nullptr)
2301 const char *
desc =
nullptr)
2303 units::Unspecified::get(),
desc)
2309 const char *
desc =
nullptr)
2326 return this->
self();
2340 nullptr, units::Unspecified::get(), nullptr)
2345 const char *
desc =
nullptr)
2347 units::Unspecified::get(),
desc)
2353 const char *
desc =
nullptr)
2370 return this->
self();
2374template <
class Stat>
2389 this->
s.result(vec);
2395 std::string
str()
const {
return this->
s.str(); }
2398template <
class Stat>
2409template <
class Derived,
class Stor>
2463 template <
typename U>
2490 data()->reset(this->
info()->getStorageParams());
2499 units::Unspecified::get(), nullptr)
2504 const char *
desc =
nullptr)
2506 units::Unspecified::get(),
desc)
2511 const char *
desc =
nullptr)
2528 return this->
self();
2550 const char *
desc =
nullptr);
2553 const char *
desc =
nullptr);
2568 template<
typename T>
2627 std::string
str()
const;
2725 template <
class Stat>
2847 return Temp(std::make_shared<
BinaryNode<std::multiplies<Result> > >(
l,
r));
2859 return Temp(std::make_shared<
UnaryNode<std::negate<Result> > >(
l));
2862template <
typename T>
2869template <
typename T>
2879 return Temp(std::make_shared<
SumNode<std::plus<Result> > >(
val));
Defines global host-dependent types: Counter, Tick, and (indirectly) {int,uint}{8,...
Calculates the per tick mean and variance of the samples.
AverageDeviation(Group *parent, const char *name, const units::Base *unit, const char *desc=nullptr)
AverageDeviation(Group *parent=nullptr)
Construct and initialize this distribution.
AverageDeviation(Group *parent, const char *name, const char *desc=nullptr)
A vector of Average stats.
AverageVector(Group *parent, const char *name, const char *desc=nullptr)
AverageVector(Group *parent=nullptr)
AverageVector(Group *parent, const char *name, const units::Base *unit, const char *desc=nullptr)
A stat that calculates the per tick average of a value.
Average(Group *parent, const char *name, const char *desc=nullptr)
Average(Group *parent=nullptr)
Average(Group *parent, const char *name, const units::Base *unit, const char *desc=nullptr)
Templatized storage for distribution that calculates per tick mean and variance.
Templatized storage and interface to a per-tick average stat.
const VResult & result() const override
Return the result vector of this subtree.
Result total() const override
Return the total of the result vector.
std::string str() const override
size_type size() const override
Return the number of nodes in the subtree starting at this node.
BinaryNode(NodePtr &a, NodePtr &b)
size_type size() const
Return the number of nodes in the subtree starting at this node.
const VResult & result() const
Return the result vector of this subtree.
Result total() const
Return the total of the result vector.
Result total() const
Return the total of the result vector.
size_type size() const
Return the number of nodes in the subtree starting at this node.
const VResult & result() const
Return the result vector of this subtree.
ConstVectorNode(const T &s)
std::string ysubname(off_type i) const
Derived & ysubname(off_type index, const std::string &subname)
Derived & ysubnames(const char **names)
InfoProxyType< Derived > Info
DataWrapVec2d(Group *parent, const char *name, const units::Base *unit, const char *desc)
Derived & subname(off_type index, const std::string &name)
Set the subfield name for the given index, and marks this stat to print at the end of simulation.
Derived & subdesc(off_type index, const std::string &desc)
Set the subfield description for the given index and marks this stat to print at the end of simulatio...
InfoProxyType< Derived > Info
DataWrapVec(Group *parent=nullptr, const char *name=nullptr, const units::Base *unit=units::Unspecified::get(), const char *desc=nullptr)
InfoProxyType< Derived > Info
Derived & desc(const std::string &_desc)
Set the description and marks this stat to print at the end of simulation.
Derived & precision(int _precision)
Set the precision and marks this stat to print at the end of simulation.
Derived & unit(const units::Base *_unit)
Set the unit of the stat.
Derived & setSeparator(const std::string &_sep)
Set the character(s) used between the name and vector number on vectors, dist, etc.
DataWrap & operator=(const DataWrap &)=delete
Derived & name(const std::string &name)
Set the name and marks this stat to print at the end of simulation.
Derived & flags(Flags _flags)
Set the flags and marks this stat to print at the end of simulation.
DataWrap(Group *parent, const char *name, const units::Base *unit, const char *desc)
const Info * info() const
DataWrap(const DataWrap &)=delete
const std::string & setSeparator() const
Derived & prereq(const Stat &prereq)
Set the prerequisite stat and marks this stat to print at the end of simulation.
const std::string & name() const
Implementation of a distribution stat.
void sample(const U &v, int n=1)
Add a value to the distribtion n times.
DistInfoProxy< Derived > Info
size_type size() const
Return the number of entries in this stat.
Storage * data()
Retrieve the storage.
void reset()
Reset stat value to default.
void add(DistBase &d)
Add the argument distribution to the this distribution.
const Storage * data() const
Retrieve a const pointer to the storage.
bool zero() const
Return true if no samples have been added.
GEM5_ALIGNED(8) char storage[sizeof(Storage)]
The storage for this stat.
DistBase(Group *parent, const char *name, const units::Base *unit, const char *desc)
DistInfoProxy(Stat &stat)
DistData data
Local storage for the entry values, used for printing.
void reset()
Proxy has no state.
const Stat::Storage * data() const
DistProxy(const DistProxy &sp)
DistProxy(Stat &s, off_type i)
void sample(const U &v, int n=1)
const DistProxy & operator=(const DistProxy &sp)
Templatized storage and interface for a distribution stat.
A simple distribution stat.
Distribution(Group *parent, const char *name, const units::Base *unit, const char *desc=nullptr)
Distribution(Group *parent, const char *name, const char *desc=nullptr)
Distribution & init(Counter min, Counter max, Counter bkt)
Set the parameters of this distribution.
Distribution(Group *parent=nullptr)
FunctorProxy(const T &func)
std::function< Result()> functor
Templatized storage and interface for a histogram stat.
Histogram(Group *parent, const char *name, const char *desc=nullptr)
Histogram(Group *parent, const char *name, const units::Base *unit, const char *desc=nullptr)
Histogram & init(size_type size)
Set the parameters of this histogram.
Histogram(Group *parent=nullptr)
void setInit()
Save Storage class parameters if any.
bool check() const
Check that this stat has been set up properly and is ready for use.
void setParams(const StorageParams *params)
Save Storage class parameters if any.
Info * info()
Grab the information class for this statistic.
bool newStyleStats() const
Check if the info is new style stats.
void setInfo(Group *parent, Info *info)
Set up an info class for this statistic.
void reset()
Reset the stat to the default state.
void visit(Output &visitor)
StorageParams const * getStorageParams() const
Getter for the storage params.
std::string name
The name of the stat.
A proxy similar to the FunctorProxy, but allows calling a method of a bound object,...
V(T::* MethodPointer)() const
MethodProxy(T *obj, MethodPointer meth)
Base class for formula statistic node.
virtual std::string str() const =0
virtual const VResult & result() const =0
Return the result vector of this subtree.
virtual Result total() const =0
Return the total of the result vector.
virtual size_type size() const =0
Return the number of nodes in the subtree starting at this node.
void reset()
Reset the stat to the default state.
void prepare()
Prepare the stat for dumping.
bool check() const
Check that this stat has been set up properly and is ready for use.
void visit(Output &visitor)
Visitor entry for outputing statistics data.
Templatized storage and interface for a distribution that calculates mean and variance.
Implementation of a scalar stat.
void operator+=(const U &v)
Increment the stat by the given value.
void operator--(int)
Decrement the stat by 1.
size_type size() const
Return the number of elements, always 1 for a scalar.
GEM5_ALIGNED(8) char storage[sizeof(Storage)]
The storage of this stat.
ScalarBase(Group *parent=nullptr, const char *name=nullptr, const units::Base *unit=units::Unspecified::get(), const char *desc=nullptr)
const Storage * data() const
Retrieve a const pointer to the storage.
Counter value() const
Return the current value of this stat as its base type.
void operator=(const U &v)
Set the data value to the given value.
void operator--()
Decrement the stat by 1.
void operator++(int)
Increment the stat by 1.
Storage * data()
Retrieve the storage.
void operator++()
Increment the stat by 1.
void operator-=(const U &v)
Decrement the stat by the given value.
ScalarInfoProxy(Stat &stat)
virtual Result total() const =0
virtual Result result() const =0
virtual Counter value() const =0
const VResult & result() const
Return the result vector of this subtree.
size_type size() const
Return the number of nodes in the subtree starting at this node.
const ScalarProxy< Stat > proxy
ScalarProxyNode(const ScalarProxy< Stat > &p)
Result total() const
Return the total of the result vector.
A proxy class to access the stat at a given index in a VectorBase stat.
void operator=(const U &v)
Set the data value to the given value.
void operator+=(const U &v)
Increment the stat by the given value.
ScalarProxy(Stat &s, off_type i)
Create and initialize this proxy, do not register it with the database.
const ScalarProxy & operator=(const ScalarProxy &sp)
Set this proxy equal to the provided one.
off_type index
The index to access in the parent VectorBase.
ScalarProxy(const ScalarProxy &sp)
Create a copy of the provided ScalarProxy.
Stat & stat
Pointer to the parent Vector.
void operator--()
Decrement the stat by 1.
void operator--(int)
Decrement the stat by 1.
void operator-=(const U &v)
Decrement the stat by the given value.
Result result() const
Return the current value of this statas a result type.
void operator++(int)
Increment the stat by 1.
Counter value() const
Return the current value of this stat as its base type.
size_type size() const
Return the number of elements, always 1 for a scalar.
void operator++()
Increment the stat by 1.
const VResult & result() const
Return the result vector of this subtree.
size_type size() const
Return the number of nodes in the subtree starting at this node.
Result total() const
Return the total of the result vector.
ScalarStatNode(const ScalarInfo *d)
This is a simple scalar statistic, like a counter.
Scalar(Group *parent, const char *name, const char *desc=nullptr)
Scalar(Group *parent, const char *name, const units::Base *unit, const char *desc=nullptr)
Scalar(Group *parent=nullptr)
Implementation of a sparse histogram stat.
SparseHistBase(Group *parent, const char *name, const units::Base *unit, const char *desc)
void sample(const U &v, int n=1)
Add a value to the distribtion n times.
void reset()
Reset stat value to default.
const Storage * data() const
Retrieve a const pointer to the storage.
bool zero() const
Return true if no samples have been added.
SparseHistInfoProxy< Derived > Info
size_type size() const
Return the number of entries in this stat.
Storage * data()
Retrieve the storage.
char storage[sizeof(Storage)]
The storage for this stat.
SparseHistInfoProxy(Stat &stat)
SparseHistData data
Local storage for the entry values, used for printing.
Templatized storage and interface for a sparse histogram stat.
SparseHistogram(Group *parent, const char *name, const units::Base *unit, const char *desc=nullptr)
SparseHistogram(Group *parent=nullptr)
SparseHistogram & init(size_type size)
Set the parameters of this histogram.
SparseHistogram(Group *parent, const char *name, const char *desc=nullptr)
Calculates the mean and variance of all the samples.
StandardDeviation(Group *parent=nullptr)
Construct and initialize this distribution.
StandardDeviation(Group *parent, const char *name, const char *desc=nullptr)
StandardDeviation(Group *parent, const char *name, const units::Base *unit, const char *desc=nullptr)
Templatized storage and interface for a simple scalar stat.
size_type size() const
Return the number of nodes in the subtree starting at this node.
const VResult & result() const
Return the result vector of this subtree.
Result total() const
Return the total of the result vector.
Helper class to construct formula node trees.
NodePtr getNodePtr() const
Makde gcc < 4.6.3 happy and explicitly get the underlying node.
Temp(signed long value)
Create a ConstNode.
Temp(const NodePtr &n)
Copy the given pointer to this class.
Temp(float value)
Create a ConstNode.
Temp(signed int value)
Create a ConstNode.
Temp(const Vector &s)
Create a new VectorStatNode.
Temp(const Scalar &s)
Create a new ScalarStatNode.
Temp(unsigned int value)
Create a ConstNode.
Temp(double value)
Create a ConstNode.
Temp(signed long long value)
Create a ConstNode.
Temp(unsigned short value)
Create a ConstNode.
Temp(const Average &s)
Create a new ScalarStatNode.
Temp(signed short value)
Create a ConstNode.
Temp(unsigned long long value)
Create a ConstNode.
Temp(signed char value)
Create a ConstNode.
Temp(unsigned long value)
Create a ConstNode.
Temp(unsigned char value)
Create a ConstNode.
Temp(const Value &s)
Create a new ScalarStatNode.
Temp(const ScalarProxy< Stat > &p)
Create a new ScalarProxyNode.
NodePtr node
Pointer to a Node object.
Temp(const AverageVector &s)
const VResult & result() const
Return the result vector of this subtree.
Result total() const
Return the total of the result vector.
size_type size() const
Return the number of nodes in the subtree starting at this node.
Derived & scalar(T &value)
Derived & functor(const T &func)
Derived & method(T *obj, V(T::*method)() const)
Extended functor that calls the specified method of the provided object.
Derived & functor(T &func)
ValueBase(Group *parent, const char *name, const units::Base *unit, const char *desc)
Value(Group *parent, const char *name, const units::Base *unit, const char *desc=nullptr)
Value(Group *parent=nullptr)
Value(Group *parent, const char *name, const char *desc=nullptr)
Vector2dBase(Group *parent, const char *name, const units::Base *unit, const char *desc)
Storage * data(off_type index)
Result total() const
Return a total of all entries in this vector.
void reset()
Reset stat value to default.
const Storage * data(off_type index) const
std::vector< Storage * > storage
VectorProxy< Derived > Proxy
Vector2dInfoProxy< Derived > Info
Proxy operator[](off_type index)
Derived & init(size_type _x, size_type _y)
Vector2dInfoProxy(Stat &stat)
VCounter cvec
Local storage for the entry values, used for printing.
A 2-Dimensional vecto of scalar stats.
Vector2d(Group *parent, const char *name, const units::Base *unit, const char *desc=nullptr)
Vector2d(Group *parent=nullptr)
Vector2d(Group *parent, const char *name, const char *desc=nullptr)
This is a vector of AverageDeviation stats.
VectorAverageDeviation(Group *parent, const char *name, const char *desc=nullptr)
VectorAverageDeviation(Group *parent=nullptr)
VectorAverageDeviation & init(size_type size)
Initialize storage for this distribution.
VectorAverageDeviation(Group *parent, const char *name, const units::Base *unit, const char *desc=nullptr)
Implementation of a vector of stats.
void value(VCounter &vec) const
const Storage * data(off_type index) const
Retrieve a const pointer to the storage.
ScalarProxy< Derived > Proxy
Proxy type.
std::vector< Storage * > storage
The storage of this stat.
Proxy operator[](off_type index)
Return a reference (ScalarProxy) to the stat at the given index.
Storage * data(off_type index)
Retrieve the storage.
Derived & init(size_type size)
Set this vector to have the given size.
void result(VResult &vec) const
Copy the values to a local vector and return a reference to it.
VectorBase(Group *parent, const char *name, const units::Base *unit, const char *desc)
Result total() const
Return a total of all entries in this vector.
Storage * data(off_type index)
DistProxy< Derived > Proxy
const Storage * data(off_type index) const
Proxy operator[](off_type index)
std::vector< Storage * > storage
VectorDistInfoProxy< Derived > Info
VectorDistBase(Group *parent, const char *name, const units::Base *unit, const char *desc)
VectorDistInfoProxy(Stat &stat)
std::vector< DistData > data
A vector of distributions.
VectorDistribution(Group *parent=nullptr)
VectorDistribution(Group *parent, const char *name, const units::Base *unit, const char *desc=nullptr)
VectorDistribution & init(size_type size, Counter min, Counter max, Counter bkt)
Initialize storage and parameters for this distribution.
VectorDistribution(Group *parent, const char *name, const char *desc=nullptr)
const VResult & result() const
VectorInfoProxy(Stat &stat)
virtual const VResult & result() const =0
virtual Result total() const =0
virtual size_type size() const =0
const VectorProxy & operator=(const VectorProxy &sp)
VectorProxy(Stat &s, off_type o, size_type l)
const VResult & result() const
ScalarProxy< Stat > operator[](off_type index)
Stat::Storage * data(off_type index)
VectorProxy(const VectorProxy &sp)
const Stat::Storage * data(off_type index) const
This is a vector of StandardDeviation stats.
VectorStandardDeviation(Group *parent, const char *name, const char *desc=nullptr)
VectorStandardDeviation(Group *parent=nullptr)
VectorStandardDeviation(Group *parent, const char *name, const units::Base *unit, const char *desc=nullptr)
VectorStandardDeviation & init(size_type size)
Initialize storage for this distribution.
size_type size() const
Return the number of nodes in the subtree starting at this node.
VectorStatNode(const VectorInfo *d)
const VResult & result() const
Return the result vector of this subtree.
Result total() const
Return the total of the result vector.
A vector of scalar stats.
Vector(Group *parent, const char *name, const char *desc=nullptr)
Vector(Group *parent, const char *name, const units::Base *unit, const char *desc=nullptr)
Vector(Group *parent=nullptr)
The Base class is the parent class of all unit classes.
static Unspecified * get()
#define fatal_if(cond,...)
Conditional fatal macro that checks the supplied condition and only causes a fatal error if the condi...
void addStat(statistics::Info *info)
Register a stat with this group.
void registerHandlers(Handler reset_handler, Handler dump_handler)
Temp operator/(Temp l, Temp r)
std::shared_ptr< Node > NodePtr
Shared pointer to a function Node.
void registerDumpCallback(const std::function< void()> &callback)
Register a callback that should be called whenever statistics are about to be dumped.
Temp operator-(Temp l, Temp r)
std::map< const void *, Info * > MapType
Temp constantVector(T val)
void processResetQueue()
Process all the callbacks in the reset callbacks queue.
void(* Handler)()
Register reset and dump handlers.
double Counter
All counters are of 64-bit values.
const Info * resolve(const std::string &name)
void registerResetCallback(const std::function< void()> &callback)
Register a callback that should be called whenever statistics are reset.
Temp operator+(Temp l, Temp r)
const FlagsType display
Print this stat.
std::list< Info * > & statsList()
void processDumpQueue()
Process all the callbacks in the dump callbacks queue.
void dump()
Dump all statistics data to the registered outputs.
double Result
All results are doubles.
Temp operator*(Temp l, Temp r)
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
T safe_cast(U &&ref_or_ptr)
std::string csprintf(const char *format, const Args &...args)
Overload hash function for BasicBlockRange type.
The parameters for a distribution stat.
The parameters for a distribution stat.
virtual void visit(const ScalarInfo &info)=0
The parameters for a sparse histogram stat.
const std::string & name()