diff --git a/ChangeLog b/ChangeLog index 36890d71dd..e4b7af4263 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2013-04-02 Siddhesh Poyarekar + + * benchtests/Makefile: Add benchmarks for slowpow and slowexp. + (bench): Add slowexp and slowpow. + (exp-ITER): Increase iterations. + (pow-ITER): Likewise. + * benchtests/exp-inputs: Change input. + * benchtests/pow-inputs: Likewise. + * benchtests/slowexp-inputs: New file. + * benchtests/slowexp.c: New file. + * benchtests/slowpow-inputs: New file. + * benchtests/slowpow.c: New file. + 2013-04-02 Adhemerval Zanella * sysdeps/powerpc/powerpc32/fpu/s_rint.S: Remove branch prediction diff --git a/benchtests/Makefile b/benchtests/Makefile index cc54b81faa..b3dfbff971 100644 --- a/benchtests/Makefile +++ b/benchtests/Makefile @@ -25,7 +25,9 @@ # - Define foo-ITER with the number of iterations you want to run. Keep it # high enough that the overhead of clock_gettime is only a small fraction of -# the total run time of the test. +# the total run time of the test. A good idea would be to keep the run time +# of each test at around 10 seconds for x86_64. That is just a guideline, +# since some scenarios may require higher run times. # - 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 @@ -43,14 +45,16 @@ # See pow-inputs for an example. subdir := benchtests -bench := exp pow rint +bench := exp pow rint slowexp slowpow -exp-ITER = 100000 +# exp function fast path +exp-ITER = 5e8 exp-ARGLIST = double exp-RET = double LDFLAGS-bench-exp = -lm -pow-ITER = 100000 +# pow function fast path +pow-ITER = 2e8 pow-ARGLIST = double:double pow-RET = double LDFLAGS-bench-pow = -lm @@ -60,5 +64,19 @@ rint-ARGLIST = double rint-RET = double LDFLAGS-bench-rint = -lm +# exp function slowest path +slowexp-ITER = 3e5 +slowexp-ARGLIST = double +slowexp-RET = double +slowexp-INCLUDE = slowexp.c +LDFLAGS-bench-slowexp = -lm + +# pow function slowest path +slowpow-ITER = 1e5 +slowpow-ARGLIST = double:double +slowpow-RET = double +slowpow-INCLUDE = slowpow.c +LDFLAGS-bench-slowpow = -lm + include ../Makeconfig include ../Rules diff --git a/benchtests/exp-inputs b/benchtests/exp-inputs index a2086baa86..d81cc0710e 100644 --- a/benchtests/exp-inputs +++ b/benchtests/exp-inputs @@ -1 +1 @@ -708.00096423260981737257679924368858 +42 diff --git a/benchtests/pow-inputs b/benchtests/pow-inputs index dbb1270b75..2f7cc03b52 100644 --- a/benchtests/pow-inputs +++ b/benchtests/pow-inputs @@ -1 +1 @@ -1.0000000000000020, 1.5 +42.0, 42.0 diff --git a/benchtests/slowexp-inputs b/benchtests/slowexp-inputs new file mode 100644 index 0000000000..a2086baa86 --- /dev/null +++ b/benchtests/slowexp-inputs @@ -0,0 +1 @@ +708.00096423260981737257679924368858 diff --git a/benchtests/slowexp.c b/benchtests/slowexp.c new file mode 100644 index 0000000000..92ac5e9b4c --- /dev/null +++ b/benchtests/slowexp.c @@ -0,0 +1,19 @@ +/* Define slowexp. + Copyright (C) 2013 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library 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. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#define slowexp exp diff --git a/benchtests/slowpow-inputs b/benchtests/slowpow-inputs new file mode 100644 index 0000000000..dbb1270b75 --- /dev/null +++ b/benchtests/slowpow-inputs @@ -0,0 +1 @@ +1.0000000000000020, 1.5 diff --git a/benchtests/slowpow.c b/benchtests/slowpow.c new file mode 100644 index 0000000000..08f436d2a4 --- /dev/null +++ b/benchtests/slowpow.c @@ -0,0 +1,19 @@ +/* Define slowpow. + Copyright (C) 2013 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library 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. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#define slowpow pow