31#if defined(sun) && defined(sparc)
32#define CACHE_LEVEL "PAPI_L2_TCM"
33#define EVT1 PAPI_L2_TCM
34#define EVT2 PAPI_L2_TCA
35#define EVT3 PAPI_L2_TCH
36#define EVT1_STR "PAPI_L2_TCM"
37#define EVT2_STR "PAPI_L2_TCA"
38#define EVT3_STR "PAPI_L2_TCH"
39#define MASK1 MASK_L2_TCM
40#define MASK2 MASK_L2_TCA
41#define MASK3 MASK_L2_TCH
43#if defined(__powerpc__)
44#define CACHE_LEVEL "PAPI_L1_DCA"
45#define EVT1 PAPI_L1_DCA
46#define EVT2 PAPI_L1_DCW
47#define EVT3 PAPI_L1_DCR
48#define EVT1_STR "PAPI_L1_DCA"
49#define EVT2_STR "PAPI_L1_DCW"
50#define EVT3_STR "PAPI_L1_DCR"
51#define MASK1 MASK_L1_DCA
52#define MASK2 MASK_L1_DCW
53#define MASK3 MASK_L1_DCR
55#define CACHE_LEVEL "PAPI_L1_TCM"
56#define EVT1 PAPI_L1_TCM
57#define EVT2 PAPI_L1_ICM
58#define EVT3 PAPI_L1_DCM
59#define EVT1_STR "PAPI_L1_TCM"
60#define EVT2_STR "PAPI_L1_ICM"
61#define EVT3_STR "PAPI_L1_DCM"
62#define MASK1 MASK_L1_TCM
63#define MASK2 MASK_L1_ICM
64#define MASK3 MASK_L1_DCM
70main(
int argc,
char **argv )
124 for (
i = 0;
i < 10;
i++ ) {
163 for ( j = 0; j < 3; j++ ) {
167 for (
i = 0;
i < 10;
i++ ) {
168 for ( j = 0; j < 3; j++ ) {
171 if ( max[j] <
values[(
i * 3 ) + j][0] )
172 max[j] =
values[(
i * 3 ) + j][0];
173 sum[j] +=
values[(
i * 3 ) + j][0];
178 printf(
"Test case 10: start, stop for derived event %s.\n",
180 printf(
"--------------------------------------------------------\n" );
182 printf(
"Default domain is: %d (%s)\n",
tmp,
185 printf(
"Default granularity is: %d (%s)\n",
tmp,
187 printf(
"Using %d iterations of c += a*b\n",
ITERS );
188 printf(
"Repeated 10 times\n" );
190 (
"-------------------------------------------------------------------------\n" );
201 printf(
"Test type : %12s%13s%13s\n",
"min",
"max",
"sum" );
206 (
"-------------------------------------------------------------------------\n" );
207 printf(
"Verification:\n" );
208#if defined(sun) && defined(sparc)
209 printf(
TAB1,
"Sum 1 approximately equals sum 2 - sum 3 or",
210 ( sum[1] - sum[2] ) );
212 printf(
TAB1,
"Sum 1 approximately equals sum 2 + sum 3 or",
213 ( sum[1] + sum[2] ) );
218 long long tmin, tmax;
220#if defined(sun) && defined(sparc)
221 tmax = (
long long ) ( sum[1] - sum[2] );
223 tmax = (
long long ) ( sum[1] + sum[2] );
227 printf(
"percent error: %f\n",
228 ((
float ) abs( (
int ) ( tmax - sum[0] ) ) /
229 (
float) sum[0] ) * 100.0 );
231 tmin = (
long long ) ( (
double ) tmax * 0.8 );
232 tmax = (
long long ) ( (
double ) tmax * 1.2 );
233 if ( sum[0] > tmax || sum[0] < tmin ) {
Get PAPI library or event set options.
initialize the PAPI library.
Query if PAPI event exists.
Start counting hardware events in an event set.
Stop counting hardware events in an event set.
void do_misses(int n, int bytes)
static long long values[NUM_EVENTS]
Return codes and api definitions.
int tests_quiet(int argc, char **argv)
int add_test_events(int *number, int *mask, int allow_derived)
char * stringify_all_domains(int domains)
char * stringify_granularity(int granularity)
void PAPI_NORETURN test_fail(const char *file, int line, const char *call, int retval)
long long ** allocate_test_space(int num_tests, int num_events)
void PAPI_NORETURN test_pass(const char *filename)
void PAPI_NORETURN test_skip(const char *file, int line, const char *call, int retval)
int remove_test_events(int *EventSet, int mask)