Gabe Black has submitted this change. (
https://gem5-review.googlesource.com/c/public/gem5/+/45366 )
Change subject: base: Stop using macros to handle nan in stats/text.cc.
......................................................................
base: Stop using macros to handle nan in stats/text.cc.
c++ provides a standard way to retrieve the value of nan. Use that
instead of a function to compute it, or macros defined for c.
Change-Id: I483e8642d28cc3187682ce6bb7457b5e796cf61c
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/45366
Reviewed-by: Daniel Carvalho <[email protected]>
Maintainer: Gabe Black <[email protected]>
Tested-by: kokoro <[email protected]>
---
M src/base/stats/text.cc
1 file changed, 26 insertions(+), 41 deletions(-)
Approvals:
Daniel Carvalho: Looks good to me, approved
Gabe Black: Looks good to me, approved
kokoro: Regressions pass
diff --git a/src/base/stats/text.cc b/src/base/stats/text.cc
index 718b65c..17d1e3b 100644
--- a/src/base/stats/text.cc
+++ b/src/base/stats/text.cc
@@ -48,6 +48,7 @@
#include <cmath>
#include <fstream>
#include <iostream>
+#include <limits>
#include <sstream>
#include <string>
@@ -56,28 +57,12 @@
#include "base/stats/info.hh"
#include "base/str.hh"
-#ifndef NAN
-float __nan();
-/** Define Not a number. */
-#define NAN (__nan())
-/** Need to define __nan() */
-#define __M5_NAN
-#endif
-
-#ifdef __M5_NAN
-float
-__nan()
+namespace
{
- union
- {
- uint32_t ui;
- float f;
- } nan;
- nan.ui = 0x7fc00000;
- return nan.f;
-}
-#endif
+constexpr auto Nan = std::numeric_limits<float>::quiet_NaN();
+
+} // anonymous namespace
namespace Stats {
@@ -342,8 +327,8 @@
print.descriptions = descriptions;
print.units = units;
print.flags = flags;
- print.pdf = _total ? 0.0 : NAN;
- print.cdf = _total ? 0.0 : NAN;
+ print.pdf = _total ? 0.0 : Nan;
+ print.cdf = _total ? 0.0 : Nan;
bool havesub = !subnames.empty();
@@ -389,8 +374,8 @@
}
if (flags.isSet(::Stats::total)) {
- print.pdf = NAN;
- print.cdf = NAN;
+ print.pdf = Nan;
+ print.cdf = Nan;
print.name = base + "total";
print.desc = desc;
print.unitStr = unitStr;
@@ -472,8 +457,8 @@
print.descriptions = descriptions;
print.desc = desc;
print.unitStr = unitStr;
- print.pdf = NAN;
- print.cdf = NAN;
+ print.pdf = Nan;
+ print.cdf = Nan;
if (flags.isSet(oneline)) {
print.name = base + "bucket_size";
@@ -494,16 +479,16 @@
print(stream);
print.name = base + "mean";
- print.value = data.samples ? data.sum / data.samples : NAN;
+ print.value = data.samples ? data.sum / data.samples : Nan;
print(stream);
if (data.type == Hist) {
print.name = base + "gmean";
- print.value = data.samples ? exp(data.logs / data.samples) : NAN;
+ print.value = data.samples ? exp(data.logs / data.samples) : Nan;
print(stream);
}
- Result stdev = NAN;
+ Result stdev = Nan;
if (data.samples)
stdev = sqrt((data.samples * data.squares - data.sum * data.sum) /
(data.samples * (data.samples - 1.0)));
@@ -517,11 +502,11 @@
size_t size = data.cvec.size();
Result total = 0.0;
- if (data.type == Dist && data.underflow != NAN)
+ if (data.type == Dist && data.underflow != Nan)
total += data.underflow;
for (off_type i = 0; i < size; ++i)
total += data.cvec[i];
- if (data.type == Dist && data.overflow != NAN)
+ if (data.type == Dist && data.overflow != Nan)
total += data.overflow;
if (total) {
@@ -529,7 +514,7 @@
print.cdf = 0.0;
}
- if (data.type == Dist && data.underflow != NAN) {
+ if (data.type == Dist && data.underflow != Nan) {
print.name = base + "underflows";
print.update(data.underflow, total);
print(stream);
@@ -565,22 +550,22 @@
stream << std::endl;
}
- if (data.type == Dist && data.overflow != NAN) {
+ if (data.type == Dist && data.overflow != Nan) {
print.name = base + "overflows";
print.update(data.overflow, total);
print(stream);
}
- print.pdf = NAN;
- print.cdf = NAN;
+ print.pdf = Nan;
+ print.cdf = Nan;
- if (data.type == Dist && data.min_val != NAN) {
+ if (data.type == Dist && data.min_val != Nan) {
print.name = base + "min_value";
print.value = data.min_val;
print(stream);
}
- if (data.type == Dist && data.max_val != NAN) {
+ if (data.type == Dist && data.max_val != Nan) {
print.name = base + "max_value";
print.value = data.max_val;
print(stream);
@@ -606,8 +591,8 @@
print.descriptions = descriptions;
print.units = units;
print.precision = info.precision;
- print.pdf = NAN;
- print.cdf = NAN;
+ print.pdf = Nan;
+ print.cdf = Nan;
print(*stream);
}
@@ -810,8 +795,8 @@
print.units = units;
print.desc = desc;
print.unitStr = unitStr;
- print.pdf = NAN;
- print.cdf = NAN;
+ print.pdf = Nan;
+ print.cdf = Nan;
print.name = base + "samples";
print.value = data.samples;
--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/45366
To unsubscribe, or for help writing mail filters, visit
https://gem5-review.googlesource.com/settings
Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I483e8642d28cc3187682ce6bb7457b5e796cf61c
Gerrit-Change-Number: 45366
Gerrit-PatchSet: 2
Gerrit-Owner: Gabe Black <[email protected]>
Gerrit-Reviewer: Bobby R. Bruce <[email protected]>
Gerrit-Reviewer: Daniel Carvalho <[email protected]>
Gerrit-Reviewer: Gabe Black <[email protected]>
Gerrit-Reviewer: kokoro <[email protected]>
Gerrit-MessageType: merged
_______________________________________________
gem5-dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s