/****************************************************************************/ /* cl6x -qko3 lab5.c -z -llnk.cmd -lrts6201.lib -o lab5.out */ /* load62x -q -k lab5.out */ /****************************************************************************/ #include #include void vecsum1(short *sum, short *in1, short *in2, unsigned int N); int dotproduct(short *in1, short *in2, unsigned int N); unsigned int n = 44; short a[] = { 0x08D6, 0xF380, 0xF380, 0x0000, 0xF380, 0x0C80, 0x08D6, 0xF380, 0x0C80, 0x0C80, 0xF380, 0xF380, 0xF729, 0x0C80, 0x0C80, 0x0000, 0xF380, 0xF380, 0xF729, 0x0C80, 0xF380, 0xF380, 0x0C80, 0x0C80, 0x08D6, 0xF380, 0xF380, 0x0000, 0xF380, 0x0C80, 0x08D6, 0xF380, 0x0C80, 0x0C80, 0xF380, 0xF380, 0xF729, 0x0C80, 0x0C80, 0x0000, 0xF380, 0xF380, 0xF729, 0x0C80 }; short b[] = { 0x08D6, 0xF380, 0xF380, 0x0000, 0xF380, 0x0C80, 0x08D6, 0xF380, 0x0C80, 0x0C80, 0xF380, 0xF380, 0xF729, 0x0C80, 0x0C80, 0x0000, 0xF380, 0xF380, 0xF729, 0x0C80, 0xF380, 0xF380, 0x0C80, 0x0C80, 0x08D6, 0xF380, 0xF380, 0x0000, 0x0C80, 0x0C80, 0x08D6, 0xF380, 0x0C80, 0x0C80, 0xF380, 0xF380, 0xF729, 0x0C80, 0x0C80, 0x0000, 0xF380, 0xF380, 0xF729, 0x0C80 }; short c1[44]; /****************************************************************************/ /* TOP LEVEL DRIVER FOR THE TEST. */ /****************************************************************************/ int main() { int i; clock_t t_overhead, t_start, t_stop, t_vecsum; printf("BEGIN\n"); /************************************************************************/ /* COMPUTE THE OVERHEAD OF CALLING CLOCK TWICE TO GET TIMING INFO. */ /************************************************************************/ t_start = clock(); t_stop = clock(); t_overhead = t_stop - t_start; /************************************************************************/ /* TIME VECSUM. */ /************************************************************************/ t_start = clock(); vecsum1(c1, a, b, n); t_stop = clock(); printf("VECSUM: %d cycles\n", t_stop - t_start - t_overhead); /************************************************************************/ /* TIME DOT PRODUCT. */ /************************************************************************/ t_start = clock(); dotproduct(a, b, n); t_stop = clock(); printf("DOT PRODUCT: %d cycles\n", t_stop - t_start - t_overhead); printf("END\n"); } /****************************************************************************/ /* BASIC VECSUM */ /****************************************************************************/ void vecsum1(short *sum, short *in1, short *in2, unsigned int N) { int i; for (i = 0; i < N; i++) sum[i] = in1[i] + in2[i]; } /****************************************************************************/ /* BASIC DOT PRODUCT */ /****************************************************************************/ int dotproduct(short *in1, short *in2, unsigned int N){ /* Y O U R C O D E G O E S H E R E */ }