#include "fpapi_test.h"
program description
implicit integer (p)
integer es1, number
integer*8 values(10)
integer events(2), eventlist(2)
integer eventtotal
integer i
character*PAPI_MAX_STR_LEN name
integer status
integer retval
Integer last_char
External last_char
integer tests_quiet, get_quiet
external get_quiet
tests_quiet = get_quiet()
es1 = PAPI_NULL
if (tests_quiet .EQ. 0) then
print *, "Test case descriptions: Test of functions:"
print *, " PAPI_add_events, PAPI_remove_events,"
print *, " PAPI_list_events, PAPI_describe_event,"
print *, " PAPI_state"
end if
retval = PAPI_VER_CURRENT
call PAPIf_library_init(retval)
if ( retval.NE.PAPI_VER_CURRENT) then
call ftest_fail(__FILE__, __LINE__,
*'PAPI_library_init', retval)
end if
call PAPIf_create_eventset(es1, retval)
if ( retval.NE.PAPI_OK) then
call ftest_fail(__FILE__, __LINE__,
. 'PAPIf_create_eventset',
*retval)
end if
number=2
call PAPIf_query_event(PAPI_FP_INS, retval)
if (retval .NE. PAPI_OK) then
events(1) = PAPI_TOT_INS
else
events(1) = PAPI_FP_INS
end if
events(2) = PAPI_TOT_CYC
call PAPIf_add_events( es1, events, number, retval )
if ( retval.LT.PAPI_OK) then
call ftest_fail(__FILE__, __LINE__,
*'PAPIf_add_event', retval)
end if
eventtotal=5
call PAPIf_list_events(es1, eventlist, eventtotal, retval)
if ( retval.NE.PAPI_OK) then
call ftest_fail(__FILE__, __LINE__,
*'PAPIf_list_events', retval)
end if
if (tests_quiet .EQ. 0) then
print *, " "
print *, "Event List:"
print *, "---------------------------------------",
* "---------------------------"
print *, "Event Name Code"
end if
do i = 1, eventtotal
call PAPIf_event_code_to_name (eventlist(i), name, retval)
if ( retval.NE.PAPI_OK) then
call ftest_fail(__FILE__, __LINE__,
*'PAPIf_event_code_to_name', retval)
end if
if (tests_quiet .EQ. 0) then
write (*, 100) name, eventlist(i)
end if
100 format(A12,O12)
end do
if (tests_quiet .EQ. 0) then
print *, "---------------------------------------",
*"---------------------------"
end if
call PAPIf_state(es1, status, retval)
if ( retval.NE.PAPI_OK) then
call ftest_fail(__FILE__, __LINE__,
. 'PAPIf_state', retval)
end if
if (status .NE. PAPI_STOPPED) then
print *, "PAPI_state Error"
stop
end if
if (tests_quiet .EQ. 0) then
print *, "PAPI_state: PAPI_STOPPED"
end if
call PAPIf_start(es1, retval)
if ( retval .NE. PAPI_OK ) then
call ftest_fail(__FILE__, __LINE__,
. 'PAPIf_start', retval)
end if
if (tests_quiet .EQ. 0) then
print *, "PAPI_start"
end if
call PAPIf_state(es1, status, retval)
if ( retval.NE.PAPI_OK) then
call ftest_fail(__FILE__, __LINE__,
. 'PAPIf_state', retval)
end if
if (status .NE. PAPI_RUNNING) then
print *, "PAPI_state Error"
stop
end if
if (tests_quiet .EQ. 0) then
print *, "PAPI_state: PAPI_RUNNING"
end if
call fdo_flops(NUM_FLOPS)
call PAPIf_stop(es1, values, retval)
if ( retval .NE. PAPI_OK ) then
call ftest_fail(__FILE__, __LINE__,
. 'PAPIf_stop', retval)
end if
if (tests_quiet .EQ. 0) then
print *, "PAPI_stop"
end if
call PAPIf_state(es1, status, retval)
if ( retval.NE.PAPI_OK) then
call ftest_fail(__FILE__, __LINE__,
. 'PAPIf_state', retval)
end if
if (status .NE. PAPI_STOPPED) then
print *, "PAPI_state Error"
stop
end if
if (tests_quiet .EQ. 0) then
print *, "PAPI_state: PAPI_STOPPED"
end if
call PAPIf_remove_events( es1, events, number, retval )
if ( retval .NE. PAPI_OK ) then
call ftest_fail(__FILE__, __LINE__,
*'PAPIf_remove_events', retval)
end if
if (tests_quiet .EQ. 0) then
call PAPIf_event_code_to_name (eventlist(1), name, retval)
if ( retval.NE.PAPI_OK) then
call ftest_fail(__FILE__, __LINE__,
* 'PAPIf_event_code_to_name', retval)
end if
print *, " "
print *, "Results:"
print *, "---------------------------------------",
* "---------------------------"
print *, "Test type : 1"
print *, name, " : ", values(1)
print *, "PAPI_TOT_CYC : ", values(2)
print *, "---------------------------------------",
* "---------------------------"
print *, " "
print *, "Verification:"
print *, "1. The events listed by PAPI_describe_event",
* "should be exactly the same events added by PAPI_add_events."
print *, "2. The PAPI_state should be PAPI_RUNNING after ",
* "PAPI_start and before PAPI_stop."
print *, "It should be PAPI_STOPPED at other time."
end if
call ftests_pass(__FILE__)
end