Author: lattner Date: Sun Jan 27 23:35:03 2008 New Revision: 46436 URL: http://llvm.org/viewvc/llvm-project?rev=46436&view=rev Log: add the 8b10b benchmark, hacked to take enough time to run to be interesting.
Added: test-suite/trunk/MultiSource/Benchmarks/VersaBench/8b10b/ test-suite/trunk/MultiSource/Benchmarks/VersaBench/8b10b/Makefile test-suite/trunk/MultiSource/Benchmarks/VersaBench/8b10b/calc.c test-suite/trunk/MultiSource/Benchmarks/VersaBench/8b10b/calc.h test-suite/trunk/MultiSource/Benchmarks/VersaBench/8b10b/input.txt (with props) test-suite/trunk/MultiSource/Benchmarks/VersaBench/8b10b/main.c test-suite/trunk/MultiSource/Benchmarks/VersaBench/8b10b/testbench.c test-suite/trunk/MultiSource/Benchmarks/VersaBench/8b10b/testbench.h Added: test-suite/trunk/MultiSource/Benchmarks/VersaBench/8b10b/Makefile URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/VersaBench/8b10b/Makefile?rev=46436&view=auto ============================================================================== --- test-suite/trunk/MultiSource/Benchmarks/VersaBench/8b10b/Makefile (added) +++ test-suite/trunk/MultiSource/Benchmarks/VersaBench/8b10b/Makefile Sun Jan 27 23:35:03 2008 @@ -0,0 +1,10 @@ +LEVEL = ../../../.. + +PROG = 8b10b +ifdef SMALL_PROBLEM_SIZE +RUN_OPTIONS = input.txt 2000 +else +RUN_OPTIONS = input.txt 20000 +endif +include $(LEVEL)/MultiSource/Makefile.multisrc + Added: test-suite/trunk/MultiSource/Benchmarks/VersaBench/8b10b/calc.c URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/VersaBench/8b10b/calc.c?rev=46436&view=auto ============================================================================== --- test-suite/trunk/MultiSource/Benchmarks/VersaBench/8b10b/calc.c (added) +++ test-suite/trunk/MultiSource/Benchmarks/VersaBench/8b10b/calc.c Sun Jan 27 23:35:03 2008 @@ -0,0 +1,261 @@ +/* + * Copyright (c) 2002 David Wentzlaff + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +//This is part of David Wentzlaff's Masters Thesis +//This file is Copyright David Wentzlaff 2002 All Rights Reserved. +// +// Filename : calc.c +// Date : 07/31/2002 + +/* Modified by: Rodric M. Rabbah 06-03-04 */ + +#include <stdio.h> + +#include "calc.h" + +//note in all of these things, we assume that the K bit is the +//high order bit + +//also note that every thing here is little endian +//and the IBM systems journal paper is big endian. +//so that means that D.1 is 10000 which lives in +//locattion 16 of the table not 1! + +#define ENCODE5B(DATA, FLIP, PLUS, MINUS, X) (((DATA)<<4)&0x3e0)|(((DATA)<<1)&2)|((((FLIP)<<3)|((PLUS)<<2)|((MINUS)<<1)|((X)))<<16) +#define ENCODE3B(DATA, FLIP, PLUS, MINUS, X) ((DATA)&1)|(((DATA)<<1)&0x1c)|((((FLIP)<<3)|((PLUS)<<2)|((MINUS)<<1)|((X)))<<16) + +#define GET_FLIP_5(DATA) (((DATA)>>(16+3))&1) +#define GET_PLUS_5(DATA) (((DATA)>>(16+2))&1) +#define GET_MINUS_5(DATA) (((DATA)>>(16+1))&1) +#define GET_X_5(DATA) (((DATA)>>(16))&1) + +#define GET_FLIP_3(DATA) (((DATA)>>(16+3))&1) +#define GET_PLUS_3(DATA) (((DATA)>>(16+2))&1) +#define GET_MINUS_3(DATA) (((DATA)>>(16+1))&1) +#define GET_X_3(DATA) (((DATA)>>(16))&1) + +#define B5_MASK 0x3e2 +#define B3_MASK 0x1d + +//setup the table for the 5b/6b part +unsigned int lookupTable5B[64] = +{ + /* 0 */ ENCODE5B(0x18,1,1,0,0), + /* 1 */ ENCODE5B(0x1b,1,0,1,0), + /* 2 */ ENCODE5B(0x06,1,1,0,0), + /* 3 */ ENCODE5B(0x0c,1,1,0,0), + /* 4 */ ENCODE5B(0x0a,1,1,0,0), + /* 5 */ ENCODE5B(0x0b,0,0,0,1), + /* 6 */ ENCODE5B(0x0d,0,0,0,1), + /* 7 */ ENCODE5B(0x0e,0,0,0,1), + /* 8 */ ENCODE5B(0x12,1,1,0,0), + /* 9 */ ENCODE5B(0x13,0,0,0,1), + /* 10 */ ENCODE5B(0x15,0,0,0,1), + /* 11 */ ENCODE5B(0x16,0,0,0,1), + /* 12 */ ENCODE5B(0x19,0,0,0,1), + /* 13 */ ENCODE5B(0x1a,0,0,0,1), + /* 14 */ ENCODE5B(0x1c,0,0,0,1), + /* 15 */ ENCODE5B(0x1e,1,0,1,0), + /* 16 */ ENCODE5B(0x22,1,1,0,0), + /* 17 */ ENCODE5B(0x23,0,0,0,1), + /* 18 */ ENCODE5B(0x25,0,0,0,1), + /* 19 */ ENCODE5B(0x26,0,0,0,1), + /* 20 */ ENCODE5B(0x29,0,0,0,1), + /* 21 */ ENCODE5B(0x2a,0,0,0,1), + /* 22 */ ENCODE5B(0x2c,0,0,0,1), + /* 23 */ ENCODE5B(0x2e,1,0,1,0), + /* 24 */ ENCODE5B(0x31,0,0,0,1), + /* 25 */ ENCODE5B(0x32,0,0,0,1), + /* 26 */ ENCODE5B(0x34,0,0,0,1), + /* 27 */ ENCODE5B(0x36,1,0,1,0), + /* 28 */ ENCODE5B(0x38,0,0,1,0), + /* 29 */ ENCODE5B(0x3a,1,0,1,0), + /* 30 */ ENCODE5B(0x28,1,1,0,0), + /* 31 */ ENCODE5B(0x2b,1,0,1,0), + + /* 0 */ ENCODE5B(0x18,1,1,0,0), + /* 1 */ ENCODE5B(0x1b,1,0,1,0), + /* 2 */ ENCODE5B(0x06,1,1,0,0), + /* 3 */ ENCODE5B(0x0c,1,1,0,0), + /* 4 */ ENCODE5B(0x0a,1,1,0,0), + /* 5 */ ENCODE5B(0x0b,0,0,0,1), + /* 6 */ ENCODE5B(0x0d,0,0,0,1), + /* 7 */ ENCODE5B(0x0f,1,0,1,0), + /* 8 */ ENCODE5B(0x12,1,1,0,0), + /* 9 */ ENCODE5B(0x13,0,0,0,1), + /* 10 */ ENCODE5B(0x15,0,0,0,1), + /* 11 */ ENCODE5B(0x16,0,0,0,1), + /* 12 */ ENCODE5B(0x19,0,0,0,1), + /* 13 */ ENCODE5B(0x1a,0,0,0,1), + /* 14 */ ENCODE5B(0x1c,0,0,0,1), + /* 15 */ ENCODE5B(0x1e,1,0,1,0), + /* 16 */ ENCODE5B(0x22,1,1,0,0), + /* 17 */ ENCODE5B(0x23,0,0,0,1), + /* 18 */ ENCODE5B(0x25,0,0,0,1), + /* 19 */ ENCODE5B(0x26,0,0,0,1), + /* 20 */ ENCODE5B(0x29,0,0,0,1), + /* 21 */ ENCODE5B(0x2a,0,0,0,1), + /* 22 */ ENCODE5B(0x2c,0,0,0,1), + /* 23 */ ENCODE5B(0x2e,1,0,1,0), + /* 24 */ ENCODE5B(0x31,0,0,0,1), + /* 25 */ ENCODE5B(0x32,0,0,0,1), + /* 26 */ ENCODE5B(0x34,0,0,0,1), + /* 27 */ ENCODE5B(0x36,1,0,1,0), + /* 28 */ ENCODE5B(0x38,0,0,1,0), + /* 29 */ ENCODE5B(0x3a,1,0,1,0), + /* 30 */ ENCODE5B(0x28,1,1,0,0), + /* 31 */ ENCODE5B(0x2b,1,0,1,0) +}; + +//setup the table for the 3b/4b part +unsigned int lookupTable3B[16] = +{ + /* 0 */ ENCODE3B(0x4,1,1,0,0), + /* 1 */ ENCODE3B(0x2,1,1,0,0), + /* 2 */ ENCODE3B(0x5,0,0,0,1), + /* 3 */ ENCODE3B(0x6,0,0,0,1), + /* 4 */ ENCODE3B(0x9,0,0,0,1), + /* 5 */ ENCODE3B(0xa,0,0,0,1), + /* 6 */ ENCODE3B(0xc,0,0,1,0), + /* 7 */ ENCODE3B(0xe,1,0,1,0), + + /* 0 */ ENCODE3B(0x4,1,1,0,0), + /* 1 */ ENCODE3B(0x2,1,1,0,0), + /* 2 */ ENCODE3B(0x5,0,1,0,0), + /* 3 */ ENCODE3B(0x6,0,1,0,0), + /* 4 */ ENCODE3B(0x9,0,1,0,0), + /* 5 */ ENCODE3B(0xa,0,1,0,0), + /* 6 */ ENCODE3B(0xc,0,0,1,0), + /* 7 */ ENCODE3B(0x7,1,0,1,0) +}; + +unsigned int bigTable[1024]; + +//we are assuming here that 1 equals minus and 0 is plus +unsigned int disparity0 = 0; +unsigned int disparity1 = 1; + +void calcSetup() +{ +} + +unsigned int calc(unsigned int theWord, unsigned int k) +{ + unsigned int index5; + unsigned int index3; + unsigned int lookup5; + unsigned int lookup3; + unsigned int result; + index5 = ((theWord>>3)&0x1f)|(k<<5); + index3 = ((theWord)&0x7)|(k<<3); + lookup5 = lookupTable5B[index5]; + lookup3 = lookupTable3B[index3]; + if(GET_X_5(lookup5)) + { + //set the output and don't touch the parity + result = lookup5 & B5_MASK; + disparity1 = disparity0; + } + else + { + //ugg I need to think about this one + if(disparity0 == GET_PLUS_5(lookup5)) + { + //this means that we are comming in the correct way + result = (lookup5 & B5_MASK); + } + else + { + //this means that we are comming in the wrong way + //and that means that we need to use the alternative + //word + result = (lookup5 & B5_MASK)^B5_MASK; + } + if(GET_FLIP_5(lookup5)) + { + disparity1 = disparity0 ^ 1; + } + else + { + disparity1 = disparity0; + } + } + if(GET_X_3(lookup3)) + { + //set the output and don't touch the parity + result |= lookup3 & B3_MASK; + disparity0 = disparity1; + } + else + { + //ugg I need to think about this one + if(disparity1 == GET_PLUS_3(lookup3)) + { + //this means that we are comming in the correct way + result |= (lookup3 & B3_MASK); + } + else + { + //this means that we are comming in the wrong way + //and that means that we need to use the alternative + //word + result |= (lookup3 & B3_MASK)^B3_MASK; + } + if(GET_FLIP_3(lookup3)) + { + disparity0 = disparity1 ^ 1; + } + else + { + disparity0 = disparity1; + } + } + return result; +} + +unsigned int bigTableCalc(unsigned int theWord) +{ + unsigned int result; + result = bigTable[(disparity0<<9)|(theWord)]; + disparity0 = result >> 16; + return (result&0x3ff); +} + +void resetDisparity() +{ + disparity0 = 0; +} + +void bigTableSetup() +{ + int counter; + unsigned int tempResult; + for(counter = 0; counter < 1024; counter++) + { + disparity0 = counter >> 9; + tempResult = calc(counter & 0xff, ((counter >>8) & 1)); + bigTable[counter] = tempResult | disparity0 << 16; + } + resetDisparity(); +} Added: test-suite/trunk/MultiSource/Benchmarks/VersaBench/8b10b/calc.h URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/VersaBench/8b10b/calc.h?rev=46436&view=auto ============================================================================== --- test-suite/trunk/MultiSource/Benchmarks/VersaBench/8b10b/calc.h (added) +++ test-suite/trunk/MultiSource/Benchmarks/VersaBench/8b10b/calc.h Sun Jan 27 23:35:03 2008 @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2002 David Wentzlaff + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#ifndef CALC_H +#define CALC_H + +void calcSetup(); +unsigned int calc(unsigned int theWord, unsigned int k); +void bigTableSetup(); + +unsigned int bigTableCalc(unsigned int theWord); +void resetDisparity(); + +#endif Added: test-suite/trunk/MultiSource/Benchmarks/VersaBench/8b10b/input.txt URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/VersaBench/8b10b/input.txt?rev=46436&view=auto ============================================================================== Binary file - no diff available. Propchange: test-suite/trunk/MultiSource/Benchmarks/VersaBench/8b10b/input.txt ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: test-suite/trunk/MultiSource/Benchmarks/VersaBench/8b10b/main.c URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/VersaBench/8b10b/main.c?rev=46436&view=auto ============================================================================== --- test-suite/trunk/MultiSource/Benchmarks/VersaBench/8b10b/main.c (added) +++ test-suite/trunk/MultiSource/Benchmarks/VersaBench/8b10b/main.c Sun Jan 27 23:35:03 2008 @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2002 David Wentzlaff + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include <stdio.h> +#include <stdlib.h> +#include "testbench.h" +#include "calc.h" + +int main (int argc, char **argv) +{ + int numberOfWords; + if(argc == 3) + { + calcSetup(); +#ifdef BIG_CALC + bigTableSetup(); +#endif + numberOfWords = atoi(argv[2]); + runTestbench(numberOfWords, argv[1], 0); + return 0; + } + else + { + printf("Usage: input_name output_0_name number_of_bytes\n"); + return -1; + } +} + Added: test-suite/trunk/MultiSource/Benchmarks/VersaBench/8b10b/testbench.c URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/VersaBench/8b10b/testbench.c?rev=46436&view=auto ============================================================================== --- test-suite/trunk/MultiSource/Benchmarks/VersaBench/8b10b/testbench.c (added) +++ test-suite/trunk/MultiSource/Benchmarks/VersaBench/8b10b/testbench.c Sun Jan 27 23:35:03 2008 @@ -0,0 +1,100 @@ +/* + * Copyright (c) 2002 David Wentzlaff + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +//This is part of David Wentzlaff's Masters Thesis +//This file is Copyright David Wentzlaff 2002 All Rights Reserved. +// +// Filename : testbench.c +// Date : 07/09/2002 + +/* Modified by: Rodric M. Rabbah 06-03-04 */ + +#include <stdio.h> +#include <stdlib.h> +#include "calc.h" +#include "testbench.h" + +void runTestbench(int numberOfWords, char* inputFileName, char* outputFileName0) +{ + unsigned int * theBigAllocatedThing; + unsigned int * theInputArray; + unsigned int * theOutputArray0; + FILE * inputFile; + FILE * outputFile0; + unsigned int readData; + unsigned int bits0; + int counter; + int tmp; + //first, make the needed space + //hmm we will put it on the heap for now becasue that + //will be contiguous. + theBigAllocatedThing = (unsigned int *) malloc((numberOfWords * sizeof(unsigned int) * 2)); + theInputArray = theBigAllocatedThing; + theOutputArray0 = theBigAllocatedThing + numberOfWords; + + + //read the input into the input array from a file + inputFile = fopen(inputFileName, "r"); + fread(theInputArray, numberOfWords, sizeof(unsigned int), inputFile); + fclose(inputFile); + + /*** VERSABENCH START ***/ + //run calc for numberOfWords times + for (tmp = 0; tmp < numberOfWords; ++tmp) // LLVM: increase execution time. + for(counter = 0; counter < numberOfWords; counter ++) + { +#ifdef BIG_CALC + bits0 = theInputArray[counter]; + theOutputArray0[counter] = bigTableCalc(bits0); +#else + bits0 = theInputArray[counter]; + theOutputArray0[counter] = calc(bits0&0xff, bits0>>8); +#endif + } + /*** VERSABENCH END ***/ + + //dump the outputs to a files + outputFile0 = stdout; + for(counter = 0; counter < (numberOfWords); counter+= 128) + { + bits0 = theOutputArray0[counter]; + fprintf(outputFile0, "%8.8X\n", bits0); + } + + free(theBigAllocatedThing); +} + +#if 0 + for(counter = 0; counter < (numberOfWords); counter++) + { + fscanf(inputFile, "%X\n", &readData); + theInputArray[counter] = readData; + } + + //touch both of the output arrays so that they are in the L2 + for(counter = 0; counter < numberOfWords; counter ++) + { + theOutputArray0[counter] = counter; + } +#endif Added: test-suite/trunk/MultiSource/Benchmarks/VersaBench/8b10b/testbench.h URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/VersaBench/8b10b/testbench.h?rev=46436&view=auto ============================================================================== --- test-suite/trunk/MultiSource/Benchmarks/VersaBench/8b10b/testbench.h (added) +++ test-suite/trunk/MultiSource/Benchmarks/VersaBench/8b10b/testbench.h Sun Jan 27 23:35:03 2008 @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2002 David Wentzlaff + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +//This is part of David Wentzlaff's Masters Thesis +//This file is Copyright David Wentzlaff 2002 All Rights Reserved. +// +// Filename : testbench.h +// Date : 07/10/2002 + +#ifndef TESTBENCH_H +#define TESTBENCH_H + +void runTestbench(int numberOfBits, char* inputFileName, char* outputFileName0); +#endif _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits