| |
| /**** |
| Copyright (C) 1996 McGill University. |
| Copyright (C) 1996 McCAT System Group. |
| Copyright (C) 1996 ACAPS Benchmark Administrator |
| benadmin@acaps.cs.mcgill.ca |
| |
| This program is free software; you can redistribute it and/or modify |
| it provided this copyright notice is maintained. |
| |
| 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. |
| ****/ |
| |
| #include <stdio.h> |
| #include "IOtest.h" |
| |
| /* slow version */ |
| |
| static void initminB(char_t *res) |
| { |
| setac(0); |
| *res=255; |
| } |
| |
| static void initmaxB(char_t *res) |
| { |
| setac(0); |
| *res=0; |
| } |
| |
| static void initaddB(char_t *res) |
| { |
| setac(0); |
| *res=0; |
| } |
| |
| static void initmultB(char_t *res) |
| { |
| setac(0); |
| *res=1; |
| } |
| |
| |
| static void stepminB(char_t *res) |
| /* {{{ */ |
| |
| { |
| register char_t t; |
| unsigned long i; |
| t=array(getac()); |
| *res=min(*res,t); |
| i=getac()+4097; |
| setac(i); |
| } |
| |
| /* }}} */ |
| |
| static void stepmaxB(char_t *res) |
| /* {{{ */ |
| { |
| register char_t t; |
| unsigned long i; |
| t=array(getac()); |
| *res=max(*res,t); |
| i=getac()+4097 ; |
| setac(i); |
| } |
| /* }}} */ |
| |
| static void stepaddB(char_t *res) |
| /* {{{ */ |
| { |
| register char_t t; |
| unsigned long i; |
| t=array(getac()); |
| *res=add(*res,t); |
| i=getac()+4097; |
| setac(i); |
| } |
| /* }}} */ |
| |
| static void stepmultB(char_t *res) |
| /* {{{ */ |
| |
| { |
| register char_t t; |
| unsigned long i; |
| t=array(getac()); |
| *res=mult(*res,t); |
| i=getac()+4097; |
| setac(i); |
| } |
| |
| /* }}} */ |
| |
| |
| void testC() |
| { |
| struct global_result res; |
| |
| initarray(); |
| |
| loop((void (*)(void *))&initminB,(void (*)(void *))&stepminB,&(res.min)); |
| |
| loop((void (*)(void *))&initmaxB,(void (*)(void *))&stepmaxB,&(res.max)); |
| |
| loop((void (*)(void *))&initaddB,(void (*)(void *))&stepaddB,&(res.add)); |
| |
| loop((void (*)(void *))&initmultB,(void (*)(void *))&stepmultB,&(res.mult)); |
| |
| printf("C %d min %d max %d add %d mult \n",res.min,res.max,res.add,res.mult); |
| |
| } |