Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Add more directives to benchmark input files
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.
  • Loading branch information
Siddhesh Poyarekar committed Oct 7, 2013
1 parent 9ec1b13 commit a357259
Show file tree
Hide file tree
Showing 20 changed files with 160 additions and 131 deletions.
23 changes: 23 additions & 0 deletions ChangeLog
@@ -1,3 +1,26 @@
2013-10-07 Siddhesh Poyarekar <siddhesh@redhat.com>

* benchtests/Makefile: Remove ARGLIST and RET variables.
($(objpfx)bench-%.c): Pass only function name to the script.
* benchtests/README: Update documentation.
* benchtests/acos-inputs: Add new directives.
* benchtests/acosh-inputs: Likewise.
* benchtests/asin-inputs: Likewise.
* benchtests/asinh-inputs: Likewise.
* benchtests/atan-inputs: Likewise.
* benchtests/atanh-inputs: Likewise.
* benchtests/cos-inputs: Likewise.
* benchtests/cosh-inputs: Likewise.
* benchtests/exp-inputs: Likewise.
* benchtests/log-inputs: Likewise.
* benchtests/pow-inputs: Likewise.
* benchtests/rint-inputs: Likewise.
* benchtests/sin-inputs: Likewise.
* benchtests/sinh-inputs: Likewise.
* benchtests/tan-inputs: Likewise.
* benchtests/tanh-inputs: Likewise.
* scripts/bench.pl: Add support for new directives.

2013-10-07 Alan Modra <amodra@gmail.com>

* README: Fix careless merge.
Expand Down
51 changes: 1 addition & 50 deletions benchtests/Makefile
Expand Up @@ -34,70 +34,22 @@ string-bench-all := $(string-bench) $(string-bench-ifunc)

benchset := $(string-bench-all)

acos-ARGLIST = double
acos-RET = double
LDLIBS-bench-acos = -lm

acosh-ARGLIST = double
acosh-RET = double
LDLIBS-bench-acosh = -lm

asin-ARGLIST = double
asin-RET = double
LDLIBS-bench-asin = -lm

asinh-ARGLIST = double
asinh-RET = double
LDLIBS-bench-asinh = -lm

atan-ARGLIST = double
atan-RET = double
LDLIBS-bench-atan = -lm

atanh-ARGLIST = double
atanh-RET = double
LDLIBS-bench-atanh = -lm

cos-ARGLIST = double
cos-RET = double
LDLIBS-bench-cos = -lm

cosh-ARGLIST = double
cosh-RET = double
LDLIBS-bench-cosh = -lm

exp-ARGLIST = double
exp-RET = double
LDLIBS-bench-exp = -lm

log-ARGLIST = double
log-RET = double
LDLIBS-bench-log = -lm

pow-ARGLIST = double:double
pow-RET = double
LDLIBS-bench-pow = -lm

rint-ARGLIST = double
rint-RET = double
LDLIBS-bench-rint = -lm

sin-ARGLIST = double
sin-RET = double
LDLIBS-bench-sin = -lm

sinh-ARGLIST = double
sinh-RET = double
LDLIBS-bench-sinh = -lm

tan-ARGLIST = double
tan-RET = double
LDLIBS-bench-tan = -lm

tanh-ARGLIST = double
tanh-RET = double
LDLIBS-bench-tanh = -lm

LDLIBS-bench-sincos = -lm


Expand Down Expand Up @@ -171,6 +123,5 @@ $(objpfx)bench-%.c: %-inputs $(bench-deps)
{ if [ -n "$($*-INCLUDE)" ]; then \
cat $($*-INCLUDE); \
fi; \
$(..)scripts/bench.pl $(patsubst %-inputs,%,$<) \
$($*-ARGLIST) $($*-RET); } > $@-tmp
$(..)scripts/bench.pl $(patsubst %-inputs,%,$<); } > $@-tmp
mv -f $@-tmp $@
35 changes: 18 additions & 17 deletions benchtests/README
Expand Up @@ -40,23 +40,24 @@ one to add `foo' to the bench tests:

- Append the function name to the bench variable in the Makefile.

- Define foo-ARGLIST as a colon separated list of types of the input
arguments. Use `void' if function does not take any inputs. Put in quotes
if the input argument is a pointer, e.g.:

malloc-ARGLIST: "void *"

- Define foo-RET as the type the function returns. Skip if the function
returns void. One could even skip foo-ARGLIST if the function does not
take any inputs AND the function returns void.

- Make a file called `foo-inputs` with one input value per line, an input
being a comma separated list of arguments to be passed into the function.
See pow-inputs for an example.

The script that parses the -inputs file treats lines beginning with a single
`#' as comments. Lines beginning with two hashes `##' are treated specially
as `directives'.
- Make a file called `foo-inputs` to provide the definition and input for the
function. The file should have some directives telling the parser script
about the function and then one input per line. Directives are lines that
have a special meaning for the parser and they begin with two hashes '##'.
The following directives are recognized:

- args: This should be assigned a colon separated list of types of the input
arguments. This directive may be skipped if the function does not take any
inputs.
- ret: This should be assigned the type that the function returns. This
directive may be skipped if the function does not return a value.
- includes: This should be assigned a comma separated list of headers that
need to be included to provide declarations for the function and types it
may need.
- name: See following section for instructions on how to use this directive.

Lines beginning with a single hash '#' are treated as comments. See
pow-inputs for an example of an input file.

Multiple execution units per function:
=====================================
Expand Down
3 changes: 3 additions & 0 deletions benchtests/acos-inputs
@@ -1,3 +1,6 @@
## args: double
## ret: double
## includes: math.h
0.5
0.1
0.2
Expand Down
3 changes: 3 additions & 0 deletions benchtests/acosh-inputs
@@ -1,3 +1,6 @@
## args: double
## ret: double
## includes: math.h
0.1
0.2
0.3
Expand Down
3 changes: 3 additions & 0 deletions benchtests/asin-inputs
@@ -1,3 +1,6 @@
## args: double
## ret: double
## includes: math.h
0.5
0.1
0.2
Expand Down
3 changes: 3 additions & 0 deletions benchtests/asinh-inputs
@@ -1,3 +1,6 @@
## args: double
## ret: double
## includes: math.h
0.1
0.2
0.3
Expand Down
3 changes: 3 additions & 0 deletions benchtests/atan-inputs
@@ -1,3 +1,6 @@
## args: double
## ret: double
## includes: math.h
0x1.000000c5cba86p0
0x1.000001883003ap0
0x1.00000dfb2b674p0
Expand Down
3 changes: 3 additions & 0 deletions benchtests/atanh-inputs
@@ -1,3 +1,6 @@
## args: double
## ret: double
## includes: math.h
0.1
0.2
0.3
Expand Down
3 changes: 3 additions & 0 deletions benchtests/cos-inputs
@@ -1,3 +1,6 @@
## args: double
## ret: double
## includes: math.h
0x1.000000cf4a2a1p0
0x1.0000010b239a8p0
0x1.00000162a932ap0
Expand Down
3 changes: 3 additions & 0 deletions benchtests/cosh-inputs
@@ -1,3 +1,6 @@
## args: double
## ret: double
## includes: math.h
0.1
0.2
0.3
Expand Down
3 changes: 3 additions & 0 deletions benchtests/exp-inputs
@@ -1,3 +1,6 @@
## args: double
## ret: double
## includes: math.h
42
# Slowest path with computation in 768 bit precision.
# Implemented in: sysdeps/ieee754/dbl-64/mpexp.c
Expand Down
3 changes: 3 additions & 0 deletions benchtests/log-inputs
@@ -1 +1,4 @@
## args: double
## ret: double
## includes: math.h
42.0
3 changes: 3 additions & 0 deletions benchtests/pow-inputs
@@ -1,3 +1,6 @@
## args: double:double
## ret: double
## includes: math.h
42.0, 42.0
# pow slowest path at 768 bits
# Implemented in sysdeps/ieee754/dbl-64/slowpow.c
Expand Down
3 changes: 3 additions & 0 deletions benchtests/rint-inputs
@@ -1,3 +1,6 @@
## args: double
## ret: double
## includes: math.h
78.5
-78.5
4503599627370497.0
Expand Down
3 changes: 3 additions & 0 deletions benchtests/sin-inputs
@@ -1,3 +1,6 @@
## includes: math.h
## args: double
## ret: double
0.9
2.3
3.7
Expand Down
3 changes: 3 additions & 0 deletions benchtests/sinh-inputs
@@ -1,3 +1,6 @@
## args: double
## ret: double
## includes: math.h
0.1
0.2
0.3
Expand Down
3 changes: 3 additions & 0 deletions benchtests/tan-inputs
@@ -1,3 +1,6 @@
## args: double
## ret: double
## includes: math.h
0x1.dffffffffff1ep-22
# tan slowest path at 768 bits
# Implemented in sysdeps/ieee754/dbl-64/mptan.c
Expand Down
3 changes: 3 additions & 0 deletions benchtests/tanh-inputs
@@ -1,3 +1,6 @@
## args: double
## ret: double
## includes: math.h
0.1
0.2
0.3
Expand Down

0 comments on commit a357259

Please sign in to comment.