summaryrefslogtreecommitdiff
path: root/test/spass/clock.c
diff options
context:
space:
mode:
authorGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2010-03-03 12:34:43 +0000
committerGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2010-03-03 12:34:43 +0000
commit6c196ec8a41d6ed506c133c8b33dba9684f9a7a6 (patch)
tree4e1422ea2a810520d0d9b0fbb78c0014ba9f8443 /test/spass/clock.c
parent93d89c2b5e8497365be152fb53cb6cd4c5764d34 (diff)
Updated raytracer test. Added SPASS test.
git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@1271 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e
Diffstat (limited to 'test/spass/clock.c')
-rw-r--r--test/spass/clock.c215
1 files changed, 215 insertions, 0 deletions
diff --git a/test/spass/clock.c b/test/spass/clock.c
new file mode 100644
index 0000000..7106669
--- /dev/null
+++ b/test/spass/clock.c
@@ -0,0 +1,215 @@
+/**************************************************************/
+/* ********************************************************** */
+/* * * */
+/* * CLOCK * */
+/* * * */
+/* * $Module: CLOCK * */
+/* * * */
+/* * Copyright (C) 1996, 1999, 2000, 2001 * */
+/* * MPI fuer Informatik * */
+/* * * */
+/* * This program is free software; you can redistribute * */
+/* * it and/or modify it under the terms of the GNU * */
+/* * General Public License as published by the Free * */
+/* * Software Foundation; either version 2 of the License, * */
+/* * or (at your option) any later version. * */
+/* * * */
+/* * This program is distributed in the hope that it will * */
+/* * be useful, but WITHOUT ANY WARRANTY; without even * */
+/* * the implied warranty of MERCHANTABILITY or FITNESS * */
+/* * FOR A PARTICULAR PURPOSE. See the GNU General Public * */
+/* * License for more details. * */
+/* * * */
+/* * You should have received a copy of the GNU General * */
+/* * Public License along with this program; if not, write * */
+/* * to the Free Software Foundation, Inc., 59 Temple * */
+/* * Place, Suite 330, Boston, MA 02111-1307 USA * */
+/* * * */
+/* * * */
+/* $Revision: 21527 $ * */
+/* $State$ * */
+/* $Date: 2005-04-24 21:10:28 -0700 (Sun, 24 Apr 2005) $ * */
+/* $Author: duraid $ * */
+/* * * */
+/* * Contact: * */
+/* * Christoph Weidenbach * */
+/* * MPI fuer Informatik * */
+/* * Stuhlsatzenhausweg 85 * */
+/* * 66123 Saarbruecken * */
+/* * Email: weidenb@mpi-sb.mpg.de * */
+/* * Germany * */
+/* * * */
+/* ********************************************************** */
+/**************************************************************/
+
+
+/* $RCSfile$ */
+
+#include "clock.h"
+
+
+/**************************************************************/
+/* Global Variables */
+/**************************************************************/
+
+float clock_Akku[clock_TYPESIZE];
+CLOCK_TMS clock_Counters[clock_TYPESIZE];
+
+#ifdef WIN
+float clock_Ping;
+#endif
+
+/**************************************************************/
+/* Functions */
+/**************************************************************/
+
+void clock_Init(void)
+/*********************************************************
+ INPUT: None.
+ EFFECT: Initializes the clock Module.
+ RETURNS: None.
+ MEMORY: None.
+**********************************************************/
+{
+ int i;
+
+ for (i=0;i<clock_TYPESIZE;i++) {
+ clock_InitCounter(i);
+ }
+#ifdef WIN
+ clock_Ping = 0;
+#endif
+}
+
+
+
+void clock_InitCounter(CLOCK_CLOCKS ClockCounter)
+/*********************************************************
+ INPUT: A clock counter.
+ EFFECT: The clock counter <ClockCounter> is initialized.
+ RETURNS: None.
+ MEMORY: None.
+**********************************************************/
+{
+ clock_Akku[ClockCounter] = 0;
+}
+
+
+void clock_StartCounter(CLOCK_CLOCKS ClockCounter)
+/*********************************************************
+ INPUT: A clock counter.
+ EFFECT: The clock counter <ClockCounter> is started.
+ RETURNS: None.
+ MEMORY: None.
+**********************************************************/
+{
+#ifndef CLOCK_NO_TIMING
+ ftime(&(clock_Counters[ClockCounter]));
+#endif
+}
+
+
+void clock_StopPassedTime(CLOCK_CLOCKS ClockCounter)
+/*********************************************************
+ INPUT: A clock counter.
+ EFFECT: Stores the number of seconds passed since given
+ counter was started in the according
+ accumulator.
+ RETURNS: None.
+ MEMORY: None.
+**********************************************************/
+{
+#ifndef CLOCK_NO_TIMING
+ CLOCK_TMS newtime;
+ ftime(&newtime);
+ clock_Akku[ClockCounter] = clock_GetSeconds(ClockCounter);
+#endif
+}
+
+
+void clock_StopAddPassedTime(CLOCK_CLOCKS ClockCounter)
+/*********************************************************
+ INPUT: A clock counter.
+ EFFECT: Adds the number of seconds passed since given
+ counter was started to the according
+ accumulator.
+ RETURNS: None.
+ MEMORY: None.
+**********************************************************/
+{
+#ifndef CLOCK_NO_TIMING
+ CLOCK_TMS newtime;
+ ftime(&newtime);
+ clock_Akku[ClockCounter] += clock_GetSeconds(ClockCounter);
+#endif
+}
+
+
+float clock_GetSeconds(CLOCK_CLOCKS ClockCounter)
+/*********************************************************
+ INPUT: A clock counter.
+ EFFECT: Computes the number of seconds spent by the
+ counter.
+ RETURNS: The number of seconds spent by the counter as
+ a float.
+ MEMORY: None.
+**********************************************************/
+{
+#ifndef CLOCK_NO_TIMING
+ CLOCK_TMS newtime;
+ ftime(&newtime);
+ return ((float) (newtime.time - clock_Counters[ClockCounter].time)
+ + (((newtime.millitm - clock_Counters[ClockCounter].millitm))
+ /(float)1000));
+#else
+ return 0;
+#endif
+}
+
+#ifdef WIN
+void clock_PingOneSecond(void)
+/*********************************************************
+ INPUT: None but assumes the clock_OVERALL to be properly
+ initialized.
+ EFFECT: If between the previous call to this function or
+ to clock_Init more one second is passed, the
+ function prints a "PING" to stdout.
+ Needed only for the windows implementation.
+ CAUTION: Only needed to get around Windows95/98 scheduling
+ problems.
+**********************************************************/
+{
+ if (clock_GetSeconds(clock_OVERALL) > clock_Ping + 1) {
+ clock_Ping++;
+ puts("\n PING ");
+ }
+}
+#endif
+
+
+
+void clock_PrintTime(CLOCK_CLOCKS ClockCounter)
+/*********************************************************
+ INPUT: A clock counter.
+ EFFECT: The time is printed in format hh:mm:ss.dd to stdout
+ RETURNS: None.
+ MEMORY: None.
+**********************************************************/
+{
+#ifndef CLOCK_NO_TIMING
+ NAT hours, minutes;
+ float seconds;
+
+ seconds = clock_Akku[ClockCounter];
+ hours = (NAT)seconds/3600;
+ seconds -= hours*3600;
+ minutes = (NAT)seconds/60;
+ seconds -= (minutes*60);
+ if (seconds >= 10.0)
+ printf("%u:%02u:%2.2f",hours,minutes,seconds);
+ else
+ printf("%u:%02u:0%2.2f",hours,minutes,seconds);
+#else
+ fputs(" No Timing on this machine. ",stdout);
+#endif
+}