gem5  v20.1.0.0
stattest.cc
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2003-2005 The Regents of The University of Michigan
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are
7  * met: redistributions of source code must retain the above copyright
8  * notice, this list of conditions and the following disclaimer;
9  * redistributions in binary form must reproduce the above copyright
10  * notice, this list of conditions and the following disclaimer in the
11  * documentation and/or other materials provided with the distribution;
12  * neither the name of the copyright holders nor the names of its
13  * contributors may be used to endorse or promote products derived from
14  * this software without specific prior written permission.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  */
28 
29 #include "pybind11/pybind11.h"
30 
31 #include <iomanip>
32 #include <iostream>
33 #include <string>
34 
35 #include "base/cprintf.hh"
36 #include "base/logging.hh"
37 #include "base/statistics.hh"
38 #include "base/types.hh"
39 #include "sim/core.hh"
40 #include "sim/init.hh"
41 #include "sim/stat_control.hh"
42 
43 namespace py = pybind11;
44 
45 // override the default main() code for this unittest
46 const char *m5MainCommands[] = {
47  "import m5.stattestmain",
48  "m5.stattestmain.main()",
49  0 // sentinel is required
50 };
51 
52 using namespace std;
53 using namespace Stats;
54 
55 double testfunc();
56 struct StatTest;
58 
59 
60 double
62 {
63  return 9.8;
64 }
65 
66 class TestClass {
67  public:
68  double operator()() { return 9.7; }
69 };
70 
71 struct StatTest
72 {
105 
108 
115 
116  void run();
117  void init();
118 };
119 
120 StatTest &
122 {
123  static StatTest st;
124  return st;
125 }
126 
127 void
129 {
130  EventQueue *q = getEventQueue(0);
131  curEventQueue(q);
132 
133  cprintf("sizeof(Scalar) = %d\n", sizeof(Scalar));
134  cprintf("sizeof(Vector) = %d\n", sizeof(Vector));
135  cprintf("sizeof(Distribution) = %d\n", sizeof(Distribution));
136 
137  s1
138  .name("Stat01")
139  .desc("this is statistic 1")
140  ;
141 
142  s2
143  .name("Stat02")
144  .desc("this is statistic 2")
145  .prereq(s11)
146  ;
147 
148  s3
149  .name("Stat03")
150  .desc("this is statistic 3")
151  .prereq(f5)
152  ;
153 
154  s4
155  .name("Stat04")
156  .desc("this is statistic 4")
157  .prereq(s11)
158  ;
159 
160  s5
161  .init(5)
162  .name("Stat05")
163  .desc("this is statistic 5")
164  .prereq(s11)
165  .subname(0, "foo1")
166  .subname(1, "foo2")
167  .subname(2, "foo3")
168  .subname(3, "foo4")
169  .subname(4, "foo5")
170  ;
171 
172  s6
173  .init(1, 100, 13)
174  .name("Stat06")
175  .desc("this is statistic 6")
176  .prereq(s11)
177  ;
178 
179  s7
180  .init(7)
181  .name("Stat07")
182  .desc("this is statistic 7")
183  .precision(1)
184  .flags(pdf | total)
185  .prereq(s11)
186  ;
187 
188  s8
189  .init(10)
190  .name("Stat08")
191  .desc("this is statistic 8")
192  .precision(2)
193  .prereq(s11)
194  .subname(4, "blarg")
195  ;
196 
197  s9
198  .name("Stat09")
199  .desc("this is statistic 9")
200  .precision(4)
201  .prereq(s11)
202  ;
203 
204  s10
205  .name("Stat10")
206  .desc("this is statistic 10")
207  .prereq(s11)
208  ;
209 
210  s12
211  .init(1, 100, 13)
212  .name("Stat12")
213  .desc("this is statistic 12")
214  ;
215 
216  s13
217  .init(4, 0, 99, 10)
218  .name("Stat13")
219  .desc("this is statistic 13")
220  ;
221 
222  s14
223  .init(9)
224  .name("Stat14")
225  .desc("this is statistic 14")
226  ;
227 
228  s15
229  .init(10)
230  .name("Stat15")
231  .desc("this is statistic 15")
232  ;
233 
234  s16
235  .init(2, 9)
236  .name("Stat16")
237  .desc("this is statistic 16")
238  .flags(total)
239  .subname(0, "sub0")
240  .subname(1, "sub1")
241  .ysubname(0, "y0")
242  .ysubname(1, "y1")
243  ;
244 
245  s17
246  .functor(testfunc)
247  .name("Stat17")
248  .desc("this is stat 17")
249  ;
250 
251  TestClass testclass;
252  s18
253  .functor(testclass)
254  .name("Stat18")
255  .desc("this is stat 18")
256  ;
257 
258  s19
259  .functor([]() { return 0; })
260  .name("Stat19")
261  .desc("this is stat 19")
262  ;
263 
264  h01
265  .init(11)
266  .name("Histogram01")
267  .desc("this is histogram 1")
268  ;
269 
270  h02
271  .init(10)
272  .name("Histogram02")
273  .desc("this is histogram 2")
274  ;
275 
276  h03
277  .init(11)
278  .name("Histogram03")
279  .desc("this is histogram 3")
280  ;
281 
282  h04
283  .init(10)
284  .name("Histogram04")
285  .desc("this is histogram 4")
286  ;
287 
288  h05
289  .init(11)
290  .name("Histogram05")
291  .desc("this is histogram 5")
292  ;
293 
294  h06
295  .init(10)
296  .name("Histogram06")
297  .desc("this is histogram 6")
298  ;
299 
300  h07
301  .init(11)
302  .name("Histogram07")
303  .desc("this is histogram 7")
304  ;
305 
306  h08
307  .init(10)
308  .name("Histogram08")
309  .desc("this is histogram 8")
310  ;
311 
312  h09
313  .init(11)
314  .name("Histogram09")
315  .desc("this is histogram 9")
316  ;
317 
318  h10
319  .init(10)
320  .name("Histogram10")
321  .desc("this is histogram 10")
322  ;
323 
324  h11
325  .init(11)
326  .name("Histogram11")
327  .desc("this is histogram 11")
328  ;
329 
330  h12
331  .init(10)
332  .name("Histogram12")
333  .desc("this is histogram 12")
334  ;
335 
336  sh1
337  .init(0)
338  .name("SparseHistogram1")
339  .desc("this is sparse histogram 1")
340  ;
341 
342  f1
343  .name("Formula1")
344  .desc("this is formula 1")
345  .prereq(s11)
346  ;
347 
348  f2
349  .name("Formula2")
350  .desc("this is formula 2")
351  .prereq(s11)
352  .precision(1)
353  ;
354 
355  f3
356  .name("Formula3")
357  .desc("this is formula 3")
358  .prereq(s11)
359  .subname(0, "bar1")
360  .subname(1, "bar2")
361  .subname(2, "bar3")
362  .subname(3, "bar4")
363  .subname(4, "bar5")
364  ;
365 
366  f4
367  .name("Formula4")
368  .desc("this is formula 4")
369  ;
370 
371  s20
372  .init(2)
373  .name("Stat20")
374  .desc("this is statistic 20 for vector op testing")
375  .flags(total | nozero | nonan)
376  ;
377  s21
378  .init(2)
379  .name("Stat21")
380  .desc("this is statistic 21 for vector op testing")
381  .flags(total | nozero | nonan)
382  ;
383 
384  f6
385  .name("vector_op_test_formula")
386  .desc("The total stat should equal 1")
387  .flags(total |nozero |nonan)
388  ;
389 
390  f1 = s1 + s2;
391  f2 = (-s1) / (-s2) * (-s3 + ULL(100) + s4);
392  f3 = sum(s5) * s7;
393  f4 += constant(10.0);
394  f4 += s5[3];
395  f5 = constant(1);
396  f6 = s20/s21;
397 }
398 
399 void
401 {
402  s16[1][0] = 1;
403  s16[0][1] = 3;
404  s16[0][0] = 2;
405  s16[1][1] = 9;
406  s16[1][1] += 9;
407  s16[1][8] += 8;
408  s16[1][7] += 7;
409  s16[1][6] += 6;
410  s16[1][5] += 5;
411  s16[1][4] += 4;
412 
413  s11 = 1;
414  s3 = 9;
415  s8[3] = 9;
416  s15[0].sample(1234);
417  s15[1].sample(1234);
418  s15[2].sample(1234);
419  s15[3].sample(1234);
420  s15[4].sample(1234);
421  s15[5].sample(1234);
422  s15[6].sample(1234);
423  s15[7].sample(1234);
424  s15[8].sample(1234);
425  s15[9].sample(1234);
426 
427  s10.sample(1000000000);
428  curEventQueue()->setCurTick(curTick() + ULL(1000000));
429  s10.sample(100000);
430  s10.sample(100000);
431  s10.sample(100000);
432  s10.sample(100000);
433  s10.sample(100000);
434  s10.sample(100000);
435  s10.sample(100000);
436  s10.sample(100000);
437  s10.sample(100000);
438  s10.sample(100000);
439  s10.sample(100000);
440  s10.sample(100000);
441  s10.sample(100000);
442  s13[0].sample(12);
443  s13[1].sample(29);
444  s13[2].sample(12);
445  s13[3].sample(29);
446  s13[0].sample(42);
447  s13[1].sample(29);
448  s13[2].sample(42);
449  s13[3].sample(32);
450  s13[0].sample(52);
451  s13[1].sample(49);
452  s13[2].sample(42);
453  s13[3].sample(25);
454  s13[0].sample(32);
455  s13[1].sample(49);
456  s13[2].sample(22);
457  s13[3].sample(49);
458  s13[0].sample(62);
459  s13[1].sample(99);
460  s13[2].sample(72);
461  s13[3].sample(23);
462  s13[0].sample(52);
463  s13[1].sample(78);
464  s13[2].sample(69);
465  s13[3].sample(49);
466 
467  s14[0].sample(1234);
468  s14[1].sample(4134);
469  s14[4].sample(1213);
470  s14[3].sample(1124);
471  s14[2].sample(1243);
472  s14[7].sample(1244);
473  s14[4].sample(7234);
474  s14[2].sample(9234);
475  s14[3].sample(1764);
476  s14[7].sample(1564);
477  s14[3].sample(3234);
478  s14[1].sample(2234);
479  s14[5].sample(1234);
480  s14[2].sample(4334);
481  s14[2].sample(1234);
482  s14[4].sample(4334);
483  s14[6].sample(1234);
484  s14[8].sample(8734);
485  s14[1].sample(5234);
486  s14[3].sample(8234);
487  s14[7].sample(5234);
488  s14[4].sample(4434);
489  s14[3].sample(7234);
490  s14[2].sample(1934);
491  s14[1].sample(9234);
492  s14[5].sample(5634);
493  s14[3].sample(1264);
494  s14[7].sample(5223);
495  s14[0].sample(1234);
496  s14[0].sample(5434);
497  s14[3].sample(8634);
498  s14[1].sample(1234);
499 
500 
501  s15[0].sample(1234);
502  s15[1].sample(4134);
503  curEventQueue()->setCurTick(curTick() + ULL(1000000));
504  s15[4].sample(1213);
505  curEventQueue()->setCurTick(curTick() + ULL(1000000));
506  s15[3].sample(1124);
507  curEventQueue()->setCurTick(curTick() + ULL(1000000));
508  s15[2].sample(1243);
509  curEventQueue()->setCurTick(curTick() + ULL(1000000));
510  s15[7].sample(1244);
511  curEventQueue()->setCurTick(curTick() + ULL(1000000));
512  s15[4].sample(7234);
513  s15[2].sample(9234);
514  s15[3].sample(1764);
515  s15[7].sample(1564);
516  s15[3].sample(3234);
517  s15[1].sample(2234);
518  curEventQueue()->setCurTick(curTick() + ULL(1000000));
519  s15[5].sample(1234);
520  curEventQueue()->setCurTick(curTick() + ULL(1000000));
521  s15[9].sample(4334);
522  curEventQueue()->setCurTick(curTick() + ULL(1000000));
523  s15[2].sample(1234);
524  curEventQueue()->setCurTick(curTick() + ULL(1000000));
525  s15[4].sample(4334);
526  s15[6].sample(1234);
527  curEventQueue()->setCurTick(curTick() + ULL(1000000));
528  s15[8].sample(8734);
529  curEventQueue()->setCurTick(curTick() + ULL(1000000));
530  s15[1].sample(5234);
531  curEventQueue()->setCurTick(curTick() + ULL(1000000));
532  s15[3].sample(8234);
533  curEventQueue()->setCurTick(curTick() + ULL(1000000));
534  s15[7].sample(5234);
535  s15[4].sample(4434);
536  s15[3].sample(7234);
537  s15[2].sample(1934);
538  s15[1].sample(9234);
539  curEventQueue()->setCurTick(curTick() + ULL(1000000));
540  s15[5].sample(5634);
541  s15[3].sample(1264);
542  s15[7].sample(5223);
543  s15[0].sample(1234);
544  s15[0].sample(5434);
545  s15[3].sample(8634);
546  curEventQueue()->setCurTick(curTick() + ULL(1000000));
547  s15[1].sample(1234);
548 
549  s4 = curTick();
550 
551  s8[3] = 99999;
552 
553  s3 = 12;
554  s3++;
555  curEventQueue()->setCurTick(curTick() + 9);
556 
557  s1 = 9;
558  s1 += 9;
559  s1 -= 11;
560  s1++;
561  ++s1;
562  s1--;
563  --s1;
564 
565  s2 = 9;
566 
567  s5[0] += 1;
568  s5[1] += 2;
569  s5[2] += 3;
570  s5[3] += 4;
571  s5[4] += 5;
572 
573  s7[0] = 10;
574  s7[1] = 20;
575  s7[2] = 30;
576  s7[3] = 40;
577  s7[4] = 50;
578  s7[5] = 60;
579  s7[6] = 70;
580 
581  s6.sample(0);
582  s6.sample(1);
583  s6.sample(2);
584  s6.sample(3);
585  s6.sample(4);
586  s6.sample(5);
587  s6.sample(6);
588  s6.sample(7);
589  s6.sample(8);
590  s6.sample(9);
591 
592  s6.sample(10);
593  s6.sample(10);
594  s6.sample(10);
595  s6.sample(10);
596  s6.sample(10);
597  s6.sample(10);
598  s6.sample(10);
599  s6.sample(10);
600  s6.sample(11);
601  s6.sample(19);
602  s6.sample(20);
603  s6.sample(20);
604  s6.sample(21);
605  s6.sample(21);
606  s6.sample(31);
607  s6.sample(98);
608  s6.sample(99);
609  s6.sample(99);
610  s6.sample(99);
611 
612  s7[0] = 700;
613  s7[1] = 600;
614  s7[2] = 500;
615  s7[3] = 400;
616  s7[4] = 300;
617  s7[5] = 200;
618  s7[6] = 100;
619 
620  s9.sample(100);
621  s9.sample(100);
622  s9.sample(100);
623  s9.sample(100);
624  s9.sample(10);
625  s9.sample(10);
626  s9.sample(10);
627  s9.sample(10);
628  s9.sample(10);
629 
630  curEventQueue()->setCurTick(curTick() + 9);
631  s4 = curTick();
632  s6.sample(100);
633  s6.sample(100);
634  s6.sample(100);
635  s6.sample(101);
636  s6.sample(102);
637 
638  s12.sample(100);
639  for (int i = 0; i < 100; i++) {
640  h01.sample(i);
641  h02.sample(i);
642  }
643 
644  for (int i = -100; i < 100; i++) {
645  h03.sample(i);
646  h04.sample(i);
647  }
648 
649  for (int i = -100; i < 1000; i++) {
650  h05.sample(i);
651  h06.sample(i);
652  }
653 
654  for (int i = 100; i >= -1000; i--) {
655  h07.sample(i);
656  h08.sample(i);
657  }
658 
659  for (int i = 0; i <= 1023; i++) {
660  h09.sample(i);
661  h10.sample(i);
662  }
663 
664  for (int i = -1024; i <= 1023; i++) {
665  h11.sample(i);
666  h12.sample(i);
667  }
668 
669  for (int i = 0; i < 1000; i++) {
670  sh1.sample(random() % 10000);
671  }
672 
673  s20[0] = 1;
674  s20[1] = 100000;
675  s21[0] = 100000;
676  s21[1] = 1;
677 
678 }
679 
680 static void
681 stattest_init_pybind(py::module &m_internal)
682 {
683  py::module m = m_internal.def_submodule("stattest");
684 
685  m
686  .def("stattest_init", []() { __stattest().init(); })
687  .def("stattest_run", []() { __stattest().run(); })
688  ;
689 }
690 
691 static EmbeddedPyBind embed_("stattest", stattest_init_pybind);
StatTest::s13
VectorDistribution s13
Definition: stattest.cc:85
Stats::init
const FlagsType init
This Stat is Initialized.
Definition: info.hh:45
StatTest::f6
Formula f6
Definition: stattest.cc:114
StatTest::h09
Histogram h09
Definition: stattest.cc:100
getEventQueue
EventQueue * getEventQueue(uint32_t index)
Function for returning eventq queue for the provided index.
Definition: eventq.cc:61
StatTest::h04
Histogram h04
Definition: stattest.cc:95
RiscvISA::sum
Bitfield< 18 > sum
Definition: registers.hh:609
ArmISA::i
Bitfield< 7 > i
Definition: miscregs_types.hh:63
StatTest::s19
Value s19
Definition: stattest.cc:91
TestClass::operator()
double operator()()
Definition: stattest.cc:68
StatTest::f1
Formula f1
Definition: stattest.cc:109
StatTest::s3
Average s3
Definition: stattest.cc:75
StatTest::f4
Formula f4
Definition: stattest.cc:112
StatTest::s21
Vector s21
Definition: stattest.cc:107
ArmISA::q
Bitfield< 27 > q
Definition: miscregs_types.hh:52
StatTest::s15
VectorAverageDeviation s15
Definition: stattest.cc:87
embed_
static EmbeddedPyBind embed_("stattest", stattest_init_pybind)
Stats::AverageDeviation
Calculates the per tick mean and variance of the samples.
Definition: statistics.hh:2703
Stats::Value
Definition: statistics.hh:2561
m5MainCommands
const char * m5MainCommands[]
Definition: stattest.cc:46
Stats::Vector
A vector of scalar stats.
Definition: statistics.hh:2575
StatTest::s2
Scalar s2
Definition: stattest.cc:74
Stats::VectorAverageDeviation
This is a vector of AverageDeviation stats.
Definition: statistics.hh:2788
Stats::VectorDistribution
A vector of distributions.
Definition: statistics.hh:2723
Stats::Histogram
A simple histogram stat.
Definition: statistics.hh:2654
stattest_init_pybind
static void stattest_init_pybind(py::module &m_internal)
Definition: stattest.cc:681
StatTest::h12
Histogram h12
Definition: stattest.cc:103
Stats::Scalar
This is a simple scalar statistic, like a counter.
Definition: statistics.hh:2533
StatTest::h02
Histogram h02
Definition: stattest.cc:93
StatTest::s17
Value s17
Definition: stattest.cc:89
StatTest::s12
Distribution s12
Definition: stattest.cc:84
StatTest::s20
Vector s20
Definition: stattest.cc:106
StatTest
Definition: stattest.cc:71
StatTest::h05
Histogram h05
Definition: stattest.cc:96
StatTest::s7
Vector s7
Definition: stattest.cc:79
cprintf
void cprintf(const char *format, const Args &...args)
Definition: cprintf.hh:152
StatTest::s9
StandardDeviation s9
Definition: stattest.cc:81
StatTest::h11
Histogram h11
Definition: stattest.cc:102
StatTest::h06
Histogram h06
Definition: stattest.cc:97
statistics.hh
ArmISA::st
Bitfield< 31, 28 > st
Definition: miscregs_types.hh:152
StatTest::s14
VectorStandardDeviation s14
Definition: stattest.cc:86
StatTest::s16
Vector2d s16
Definition: stattest.cc:88
StatTest::s8
AverageVector s8
Definition: stattest.cc:80
curEventQueue
EventQueue * curEventQueue()
Definition: eventq.hh:83
cprintf.hh
Stats::StandardDeviation
Calculates the mean and variance of all the samples.
Definition: statistics.hh:2683
StatTest::s5
Vector s5
Definition: stattest.cc:77
StatTest::f5
Formula f5
Definition: stattest.cc:113
StatTest::s1
Scalar s1
Definition: stattest.cc:73
EventQueue::setCurTick
void setCurTick(Tick newVal)
Definition: eventq.hh:837
core.hh
Stats::Distribution
A simple distribution stat.
Definition: statistics.hh:2617
name
const std::string & name()
Definition: trace.cc:50
Stats::nozero
const FlagsType nozero
Don't print if this is zero.
Definition: info.hh:57
StatTest::s10
AverageDeviation s10
Definition: stattest.cc:82
Stats::Average
A stat that calculates the per tick average of a value.
Definition: statistics.hh:2549
StatTest::h08
Histogram h08
Definition: stattest.cc:99
stat_control.hh
Stats::Vector2d
A 2-Dimensional vecto of scalar stats.
Definition: statistics.hh:2603
StatTest::sh1
SparseHistogram sh1
Definition: stattest.cc:104
std
Overload hash function for BasicBlockRange type.
Definition: vec_reg.hh:587
types.hh
StatTest::run
void run()
Definition: stattest.cc:400
Stats::pdf
const FlagsType pdf
Print the percent of the total that this entry represents.
Definition: info.hh:51
Stats::AverageVector
A vector of Average stats.
Definition: statistics.hh:2589
Stats::Formula
A formula for statistics that is calculated when printed.
Definition: statistics.hh:3037
StatTest::h07
Histogram h07
Definition: stattest.cc:98
StatTest::s11
Scalar s11
Definition: stattest.cc:83
TestClass
Definition: stattest.cc:66
logging.hh
EmbeddedPyBind
Definition: init.hh:81
StatTest::h01
Histogram h01
Definition: stattest.cc:92
Stats::SparseHistogram
Definition: statistics.hh:3007
StatTest::init
void init()
Definition: stattest.cc:128
Stats
Definition: statistics.cc:61
MipsISA::random
random
Definition: pra_constants.hh:50
StatTest::s6
Distribution s6
Definition: stattest.cc:78
EventQueue
Queue of events sorted in time order.
Definition: eventq.hh:617
StatTest::f2
Formula f2
Definition: stattest.cc:110
ArmISA::sh1
Bitfield< 29, 28 > sh1
Definition: miscregs_types.hh:499
StatTest::s4
Scalar s4
Definition: stattest.cc:76
Stats::total
const FlagsType total
Print the total.
Definition: info.hh:49
testfunc
double testfunc()
Definition: stattest.cc:61
init.hh
StatTest::h03
Histogram h03
Definition: stattest.cc:94
Stats::VectorStandardDeviation
This is a vector of StandardDeviation stats.
Definition: statistics.hh:2758
StatTest::s18
Value s18
Definition: stattest.cc:90
ULL
#define ULL(N)
uint64_t constant
Definition: types.hh:50
Stats::nonan
const FlagsType nonan
Don't print if this is NAN.
Definition: info.hh:59
__stattest
StatTest & __stattest()
Definition: stattest.cc:121
ArmISA::m
Bitfield< 0 > m
Definition: miscregs_types.hh:389
Stats::constant
Temp constant(T val)
Definition: statistics.hh:3357
StatTest::h10
Histogram h10
Definition: stattest.cc:101
curTick
Tick curTick()
The current simulated tick.
Definition: core.hh:45
StatTest::f3
Formula f3
Definition: stattest.cc:111

Generated on Wed Sep 30 2020 14:02:18 for gem5 by doxygen 1.8.17