forked from Imagelibrary/rtems
@@ -1,5 +1,6 @@
|
|||||||
rtems_tests_PROGRAMS = whetstone
|
rtems_tests_PROGRAMS = whetstone
|
||||||
whetstone_SOURCES = init.c
|
whetstone_SOURCES = init.c whetstone.c
|
||||||
|
whetstone_LDADD = -lm
|
||||||
|
|
||||||
dist_rtems_tests_DATA = whetstone.scn whetstone.doc
|
dist_rtems_tests_DATA = whetstone.scn whetstone.doc
|
||||||
|
|
||||||
@@ -8,8 +9,9 @@ include $(top_srcdir)/../automake/compile.am
|
|||||||
include $(top_srcdir)/../automake/leaf.am
|
include $(top_srcdir)/../automake/leaf.am
|
||||||
|
|
||||||
AM_CPPFLAGS += -I$(top_srcdir)/../support/include
|
AM_CPPFLAGS += -I$(top_srcdir)/../support/include
|
||||||
|
AM_CFLAGS += -fno-inline -fno-builtin
|
||||||
|
|
||||||
LINK_OBJS = $(whetstone_OBJECTS)
|
LINK_OBJS = $(whetstone_OBJECTS) $(whetstone_LDADD)
|
||||||
LINK_LIBS = $(whetstone_LDLIBS)
|
LINK_LIBS = $(whetstone_LDLIBS)
|
||||||
|
|
||||||
whetstone$(EXEEXT): $(whetstone_OBJECTS) $(whetstone_DEPENDENCIES)
|
whetstone$(EXEEXT): $(whetstone_OBJECTS) $(whetstone_DEPENDENCIES)
|
||||||
|
|||||||
@@ -20,15 +20,19 @@
|
|||||||
|
|
||||||
const char rtems_test_name[] = "WHETSTONE";
|
const char rtems_test_name[] = "WHETSTONE";
|
||||||
|
|
||||||
static void test(void)
|
int main(int argc, char **argv);
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
static void Init(rtems_task_argument arg)
|
static void Init(rtems_task_argument arg)
|
||||||
{
|
{
|
||||||
|
char *argv[] = {
|
||||||
|
"whetstone",
|
||||||
|
"10000",
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
TEST_BEGIN();
|
TEST_BEGIN();
|
||||||
|
|
||||||
test();
|
main(2, argv);
|
||||||
|
|
||||||
TEST_END();
|
TEST_END();
|
||||||
rtems_test_exit(0);
|
rtems_test_exit(0);
|
||||||
@@ -41,6 +45,8 @@ static void Init(rtems_task_argument arg)
|
|||||||
|
|
||||||
#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
|
#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
|
||||||
|
|
||||||
|
#define CONFIGURE_INIT_TASK_ATTRIBUTES RTEMS_FLOATING_POINT
|
||||||
|
|
||||||
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
|
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
|
||||||
|
|
||||||
#define CONFIGURE_INIT
|
#define CONFIGURE_INIT
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ C**********************************************************************
|
|||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
/* the following is optional depending on the timing function used */
|
/* the following is optional depending on the timing function used */
|
||||||
#include <time.h>
|
#include <sys/time.h>
|
||||||
|
|
||||||
/* map the FORTRAN math functions, etc. to the C versions */
|
/* map the FORTRAN math functions, etc. to the C versions */
|
||||||
#define DSIN sin
|
#define DSIN sin
|
||||||
@@ -82,6 +82,15 @@ void P3(double X, double Y, double *Z);
|
|||||||
double T,T1,T2,E1[5];
|
double T,T1,T2,E1[5];
|
||||||
int J,K,L;
|
int J,K,L;
|
||||||
|
|
||||||
|
static double
|
||||||
|
Time(void)
|
||||||
|
{
|
||||||
|
struct timeval tv;
|
||||||
|
|
||||||
|
gettimeofday(&tv, NULL);
|
||||||
|
return (double)tv.tv_sec + (double)tv.tv_usec * 1e-6;
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
main(int argc, char *argv[])
|
main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
@@ -94,8 +103,8 @@ main(int argc, char *argv[])
|
|||||||
|
|
||||||
/* added for this version */
|
/* added for this version */
|
||||||
long loopstart;
|
long loopstart;
|
||||||
long startsec, finisec;
|
double startsec, finisec;
|
||||||
float KIPS;
|
double KIPS;
|
||||||
int continuous;
|
int continuous;
|
||||||
|
|
||||||
loopstart = 1000; /* see the note about LOOP below */
|
loopstart = 1000; /* see the note about LOOP below */
|
||||||
@@ -120,7 +129,7 @@ C
|
|||||||
C Start benchmark timing at this point.
|
C Start benchmark timing at this point.
|
||||||
C
|
C
|
||||||
*/
|
*/
|
||||||
startsec = time(0);
|
startsec = Time();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
C
|
C
|
||||||
@@ -355,7 +364,7 @@ C
|
|||||||
C Stop benchmark timing at this point.
|
C Stop benchmark timing at this point.
|
||||||
C
|
C
|
||||||
*/
|
*/
|
||||||
finisec = time(0);
|
finisec = Time();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
C----------------------------------------------------------------
|
C----------------------------------------------------------------
|
||||||
@@ -372,10 +381,10 @@ C--------------------------------------------------------------------
|
|||||||
return(1);
|
return(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("Loops: %ld, Iterations: %d, Duration: %ld sec.\n",
|
printf("Loops: %ld, Iterations: %d, Duration: %f sec.\n",
|
||||||
LOOP, II, finisec-startsec);
|
LOOP, II, finisec-startsec);
|
||||||
|
|
||||||
KIPS = (100.0*LOOP*II)/(float)(finisec-startsec);
|
KIPS = (100.0*LOOP*II)/(finisec-startsec);
|
||||||
if (KIPS >= 1000.0)
|
if (KIPS >= 1000.0)
|
||||||
printf("C Converted Double Precision Whetstones: %.1f MIPS\n", KIPS/1000.0);
|
printf("C Converted Double Precision Whetstones: %.1f MIPS\n", KIPS/1000.0);
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -4,8 +4,10 @@ test set name: whetstone
|
|||||||
|
|
||||||
directives:
|
directives:
|
||||||
|
|
||||||
TBD
|
None, this benchmark program depends on the compiler, standard libraries, the
|
||||||
|
processor and the memory system. It is more or less independent of the
|
||||||
|
operating system, except some disturbance from the system clock service.
|
||||||
|
|
||||||
concepts:
|
concepts:
|
||||||
|
|
||||||
TBD
|
This is the whetstone benchmark ported to RTEMS.
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
*** BEGIN OF TEST WHETSTONE ***
|
||||||
|
|
||||||
|
Loops: 10000, Iterations: 1, Duration: 347.679499 sec.
|
||||||
|
C Converted Double Precision Whetstones: 2.9 MIPS
|
||||||
|
*** END OF TEST WHETSTONE ***
|
||||||
|
|||||||
Reference in New Issue
Block a user