about summary refs log tree commit diff
path: root/benchtests/Makefile
Commit message (Collapse)AuthorAgeFilesLines
...
* benchtests: Move bench.py to benchtests/scripts/Siddhesh Poyarekar2014-03-241-1/+1
| | | | | It makes much more sense to have all benchmarking-related scripts in a single place away from everything else.
* Implement benchmarking script in pythonSiddhesh Poyarekar2014-03-211-1/+1
| | | | | Implemented the benchmark script in python since it is much cleaner and simpler to maintain.
* Consistently include Makeconfig after defining subdir.Joseph Myers2014-02-261-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In <https://sourceware.org/ml/libc-alpha/2014-01/msg00196.html> I noted it was necessary to add includes of Makeconfig early in various subdirectory makefiles for the tests-special variable settings added by that patch to be conditional on configuration information. No-one commented on the general question there of whether Makeconfig should always be included immediately after the definition of subdir. This patch implements that early inclusion of Makeconfig in each directory (which is a lot easier than consistent placement of includes of Rules). Includes are added if needed, or moved up if already present. Subdirectory "all:" targets are removed, since Makeconfig provides one. There is potential for further cleanups I haven't done. Rules and Makerules have code such as ifneq "$(findstring env,$(origin headers))" "" headers := endif to override to empty any value of various variables that came from the environment. I think there is a case for Makeconfig setting all the subdirectory variables (other than subdir) to empty to ensure no outside value is going to take effect if a subdirectory fails to define a variable. (A list of such variables, possibly out of date and incomplete, is in manual/maint.texi.) Rules and Makerules would give errors if Makeconfig hadn't already been included, instead of including it themselves. The special code to override values coming from the environment would then be obsolete and could be removed. Tested x86_64, including that installed binaries are identical before and after the patch. * argp/Makefile: Include Makeconfig immediately after defining subdir. * assert/Makefile: Likewise. * benchtests/Makefile: Likewise. * catgets/Makefile: Likewise. * conform/Makefile: Likewise. * crypt/Makefile: Likewise. * csu/Makefile: Likewise. (all): Remove target. * ctype/Makefile: Include Makeconfig immediately after defining subdir. * debug/Makefile: Likewise. * dirent/Makefile: Likewise. * dlfcn/Makefile: Likewise. * gmon/Makefile: Likewise. * gnulib/Makefile: Likewise. * grp/Makefile: Likewise. * gshadow/Makefile: Likewise. * hesiod/Makefile: Likewise. * hurd/Makefile: Likewise. (all): Remove target. * iconvdata/Makefile: Include Makeconfig immediately after defining subdir. * inet/Makefile: Likewise. * intl/Makefile: Likewise. * io/Makefile: Likewise. * libio/Makefile: Likewise. (all): Remove target. * locale/Makefile: Include Makeconfig immediately after defining subdir. * login/Makefile: Likewise. * mach/Makefile: Likewise. (all): Remove target. * malloc/Makefile: Include Makeconfig immediately after defining subdir. (all): Remove target. * manual/Makefile: Include Makeconfig immediately after defining subdir. * math/Makefile: Likewise. * misc/Makefile: Likewise. * nis/Makefile: Likewise. * nss/Makefile: Likewise. * po/Makefile: Likewise. (all): Remove target. * posix/Makefile: Include Makeconfig immediately after defining subdir. * pwd/Makefile: Likewise. * resolv/Makefile: Likewise. * resource/Makefile: Likewise. * rt/Makefile: Likewise. * setjmp/Makefile: Likewise. * shadow/Makefile: Likewise. * signal/Makefile: Likewise. * socket/Makefile: Likewise. * soft-fp/Makefile: Likewise. * stdio-common/Makefile: Likewise. * stdlib/Makefile: Likewise. * streams/Makefile: Likewise. * string/Makefile: Likewise. * sunrpc/Makefile: Likewise. (all): Remove target. * sysvipc/Makefile: Include Makeconfig immediately after defining subdir. * termios/Makefile: Likewise. * time/Makefile: Likewise. * timezone/Makefile: Likewise. (all): Remove target. * wcsmbs/Makefile: Include Makeconfig immediately after defining subdir. * wctype/Makefile: Likewise. libidn/ChangeLog: * Makefile: Include Makeconfig immediately after defining subdir. localedata/ChangeLog: * Makefile: Include Makeconfig immediately after defining subdir. (all): Remove target. nptl/ChangeLog: * Makefile: Include Makeconfig immediately after defining subdir. nptl_db/ChangeLog: * Makefile: Include Makeconfig immediately after defining subdir.
* Update copyright notices with scripts/update-copyrightsAllan McRae2014-01-011-1/+1
|
* benchtests: Add strtok benchmarkRajalakshmi Srinivasaraghavan2013-12-191-1/+1
|
* benchmark inputs for exp2, log2, log and tanSiddhesh Poyarekar2013-12-121-2/+4
|
* Benchmark test for sqrt function.Steve Ellcey2013-12-021-1/+2
|
* Remove duplicate ifunc benchtests.Ondřej Bílka2013-11-261-2/+1
|
* benchtests: Add strsep benchmarkRajalakshmi Srinivasaraghavan2013-11-181-1/+1
|
* benchtests: Add strtod benchmarkAdhemerval Zanella2013-11-111-1/+3
|
* Add more directives to benchmark input filesSiddhesh Poyarekar2013-10-071-50/+1
| | | | | | | | | | | | | | | | | | | | | | This patch adds some more directives to the benchmark inputs file, moving functionality from the Makefile and making the code generation script a bit cleaner. The function argument and return types that were earlier added as variables in the makefile and passed to the script via command line arguments are now the 'args' and 'ret' directive respectively. 'args' should be a colon separated list of argument types (skipped if the function doesn't accept any arguments) and 'ret' should be the return type. Additionally, an 'includes' directive may have a comma separated list of headers to include in the source. For example, the pow input file now looks like this: 42.0, 42.0 1.0000000000000020, 1.5 I did this to unclutter the benchtests Makefile a bit and eventually eliminate dependency of the tests on the Makefile and have tests depend on their respective include files only.
* Add benchmark inputs for sincosSiddhesh Poyarekar2013-09-191-1/+3
|
* benchtests: Add memrchr benchmarkAdhemerval Zanella2013-09-061-1/+1
|
* benchtests/Makefile: Run benchmark for memcpy.Will Newton2013-09-061-5/+5
| | | | | | | | | | The benchmark for memcpy got disabled accidentally. Re-enable it. ChangeLog: 2013-09-06 Will Newton <will.newton@linaro.org> * benchtests/Makefile (string-bench): Add memcpy.
* benchtests/Makefile: Use LDLIBS instead of LDFLAGS.Will Newton2013-09-041-16/+16
| | | | | | | | | | | LDFLAGS puts the library too early in the command line if --as-needed is being used. Use LDLIBS instead. ChangeLog: 2013-09-04 Will Newton <will.newton@linaro.org> * benchtests/Makefile: Use LDLIBS instead of LDFLAGS.
* Port remaining string benchmarksSiddhesh Poyarekar2013-06-111-1/+2
| | | | | There were a few more string benchmarks (strcpy_chk and stpcpy_check) in the debug directory that needed to be ported over.
* Copy over string performance tests into benchtestsSiddhesh Poyarekar2013-06-111-1/+4
| | | | | Copy over already existing string performance tests into benchtests. Bits not related to performance measurements have been omitted.
* Begin porting string performance tests to benchtestsSiddhesh Poyarekar2013-06-111-3/+24
| | | | | | | | | | | | | | This is the initial support for string function performance tests, along with copying tests for memcpy and memcpy-ifunc as proof of concept. The string function benchmarks perform operations at different alignments and for different sizes and compare performance between plain operations and the optimized string operations. Due to this their output is incompatible with the function benchmarks where we're interested in fastest time, throughput, etc. In future, the correctness checks in the benchmark tests can be removed. Same goes for the performance measurements in the string/test-*.
* Avoid overwriting earlier flags in CPPFLAGS-nonlib in benchtestsSiddhesh Poyarekar2013-06-101-1/+1
| | | | | | When setting BENCH_DURATION in CPPFLAGS-nonlib, append to the variable instead of assigning to it, to avoid overwriting earlier set flags, notably the -DNOT_IN_libc=1 flag.
* Sort benchmark functionsSiddhesh Poyarekar2013-05-221-41/+42
|
* Add benchmark inputs for math functionsSiddhesh Poyarekar2013-05-221-1/+38
| | | | | Add benchmark inputs for inverse and hyperbolic trigonometric functions and log.
* Add a README for benchtestsSiddhesh Poyarekar2013-05-211-20/+0
| | | | Move instructions from the Makefile here and expand on them.
* Use HP_TIMING for benchmarks if availableSiddhesh Poyarekar2013-05-131-1/+7
| | | | | | | | | | | | | HP_TIMING uses native timestamping instructions if available, thus greatly reducing the overhead of recording start and end times for function calls. For architectures that don't have HP_TIMING available, we fall back to the clock_gettime bits. One may also override this by invoking the benchmark as follows: make USE_CLOCK_GETTIME=1 bench and get the benchmark results using clock_gettime. One has to do `make bench-clean` to ensure that the benchmark programs are rebuilt.
* Allow multiple input domains to be run in the same benchmark programSiddhesh Poyarekar2013-04-301-44/+1
| | | | | | | | | | | | | | | | | | | | | | | | Some math functions have distinct performance characteristics in specific domains of inputs, where some inputs return via a fast path while other inputs require multiple precision calculations, that too at different precision levels. The way to implement different domains was to have a separate source file and benchmark definition, resulting in separate programs. This clutters up the benchmark, so this change allows these domains to be consolidated into the same input file. To do this, the input file format is now enhanced to allow comments with a preceding # and directives with two # at the begining of a line. A directive that looks like: tells the benchmark generation script that what follows is a different domain of inputs. The value of the 'name' directive (in this case, foo) is used in the output. The two input domains are then executed sequentially and their results collated separately. with the above directive, there would be two lines in the result that look like: func(): .... func(foo): ...
* Maintain runtime of each benchmark at ~10 secondsSiddhesh Poyarekar2013-04-301-20/+8
| | | | | | | | | | | | | | | The idea to run benchmarks for a constant number of iterations is problematic. While the benchmarks may run for 10 seconds on x86_64, they could run for about 30 seconds on powerpc and worse, over 3 minutes on arm. Besides that, adding a new benchmark is cumbersome since one needs to find out the number of iterations needed for a sufficient runtime. A better idea would be to run each benchmark for a specific amount of time. This patch does just that. The run time defaults to 10 seconds and it is configurable at command line: make BENCH_DURATION=5 bench
* Mention files in which fast/slow paths of math functions are implementedSiddhesh Poyarekar2013-04-241-12/+12
|
* PowerPC: modf optimizationAdhemerval Zanella2013-04-231-1/+1
| | | | | This patch implements modf/modff optimization for POWER by focus on FP operations instead of relying in integer ones.
* Add benchmark inputs for cos and tanSiddhesh Poyarekar2013-04-171-1/+28
|
* Define NOT_IN_libc when compiling benchmark programsSiddhesh Poyarekar2013-04-161-0/+6
|
* Add target bench-cleanSiddhesh Poyarekar2013-04-161-0/+3
|
* Write to bench.out-tmp only onceSiddhesh Poyarekar2013-04-151-4/+4
| | | | | | | | | | | Appending benchmark program output on every run could result in a case where the benchmark run was cancelled, resulting in a partially written file. This file gets used again on the next run, resulting in results being appended to old results. It could have been possible to remove the file before every benchmark run, but it is easier to just write the output to bench.out-tmp only once.
* Rebuild benchmark sources when Makefile is updatedSiddhesh Poyarekar2013-04-151-1/+3
| | | | | | | | Benchmark programs are generated using parameters from the Makefile, so it is necessary to rebuild them whenever the parameters in the Makefile are updated. Hence, added a dependency for the generated C source on the Makefile so that it gets regenerated when the Makefile is updated.
* Move bench target to benchtestsSiddhesh Poyarekar2013-04-121-0/+34
| | | | The bench target will only be used within the benchtests directory.
* Add benchmark inputs for atanSiddhesh Poyarekar2013-04-031-1/+14
| | | | Add separate inputs for slow and fast paths of atan
* Add benchmark inputs for sinSiddhesh Poyarekar2013-04-021-1/+14
|
* Add benchmark tests for slowpow and slowexpSiddhesh Poyarekar2013-04-021-4/+22
| | | | | | | Separate benchmarks for the fast and slow implementations of pow and exp since measuring both together doesn't make sense. Adjust the iterations for pow and exp accordingly so that they run long enough for the measurements to be meaningful.
* PowerPC: remove branch prediction from rint implementationAdhemerval Zanella2013-04-011-1/+6
| | | | | | | | The branch prediction hints is actually hurts performance in this case. The assembly implementation make two assumptions: 1. 'fabs (x) < 2^52' is unlikely and 2. 'x > 0.0' is unlike (if 1. is true). Since it a general floating point function, expected input is not bounded and then it is better to let the hardware handle the branches.
* Framework for performance benchmarking of functionsSiddhesh Poyarekar2013-03-151-0/+59
See benchtests/Makefile to know how to use it.