RtsFlags.TraceFlags.timestamp = rtsFalse;
RtsFlags.TraceFlags.sched = rtsFalse;
+
+#ifdef USE_PAPI
+ /* By default no special measurements taken */
+ RtsFlags.PapiFlags.eventType = 0;
+#endif
}
static const char *
#if defined(GRAN) /* ToDo: fill in decent Docu here */
" -b... All GranSim options start with -b; see GranSim User's Guide for details",
#endif
+#if defined(USE_PAPI)
+" -aX CPU performance counter measurements using PAPI",
+" (use with the -s<file> option). X is one of:",
+"",
+/* " y - cycles", */
+" 1 - level 1 cache misses",
+" 2 - level 2 cache misses",
+" b - branch mispredictions",
+" s - stalled cycles",
+#endif
"",
"RTS options may also be specified using the GHCRTS environment variable.",
"",
}
break;
+#ifdef USE_PAPI
+ case 'a':
+ switch(rts_argv[arg][2]) {
+ case '1':
+ RtsFlags.PapiFlags.eventType = PAPI_FLAG_CACHE_L1;
+ break;
+ case '2':
+ RtsFlags.PapiFlags.eventType = PAPI_FLAG_CACHE_L2;
+ break;
+ case 'b':
+ RtsFlags.PapiFlags.eventType = PAPI_FLAG_BRANCH;
+ break;
+ case 's':
+ RtsFlags.PapiFlags.eventType = PAPI_FLAG_STALLS;
+ break;
+ default:
+ bad_option( rts_argv[arg] );
+ }
+ break;
+#endif
+
case 'B':
RtsFlags.GcFlags.ringBell = rtsTrue;
break;