This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.18-262-ge376451


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  e3764517a416ccdca1d924b6706995fdb1030582 (commit)
       via  a357259bf854478d154727bbc9e39f89c952f6cc (commit)
      from  9ec1b13d0162034464202b06d81b9daa9fe840e7 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=e3764517a416ccdca1d924b6706995fdb1030582

commit e3764517a416ccdca1d924b6706995fdb1030582
Author: Siddhesh Poyarekar <siddhesh@redhat.com>
Date:   Mon Oct 7 11:52:44 2013 +0530

    Fix ChangeLog formatting

diff --git a/ChangeLog b/ChangeLog
index 0983299..211606b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -173,7 +173,7 @@
 2013-10-04  Alan Modra  <amodra@gmail.com>
 
 	* sysdeps/powerpc/powerpc64/memset.S: Replace rlwimi with
-        insrdi.  Formatting.
+	insrdi.  Formatting.
 	* sysdeps/powerpc/powerpc64/power4/memset.S: Likewise.
 	* sysdeps/powerpc/powerpc64/power6/memset.S: Likewise.
 	* sysdeps/powerpc/powerpc64/power7/memset.S: Likewise.

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=a357259bf854478d154727bbc9e39f89c952f6cc

commit a357259bf854478d154727bbc9e39f89c952f6cc
Author: Siddhesh Poyarekar <siddhesh@redhat.com>
Date:   Mon Oct 7 11:51:24 2013 +0530

    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.

diff --git a/ChangeLog b/ChangeLog
index 44ebf72..0983299 100644
--- a/ChangeLog
+++ b/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.
diff --git a/benchtests/Makefile b/benchtests/Makefile
index 4f4bd54..aec395a 100644
--- a/benchtests/Makefile
+++ b/benchtests/Makefile
@@ -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
 
 
@@ -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 $@
diff --git a/benchtests/README b/benchtests/README
index 045b7a6..5faca53 100644
--- a/benchtests/README
+++ b/benchtests/README
@@ -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:
 =====================================
diff --git a/benchtests/acos-inputs b/benchtests/acos-inputs
index b527af3..080a4e9 100644
--- a/benchtests/acos-inputs
+++ b/benchtests/acos-inputs
@@ -1,3 +1,6 @@
+## args: double
+## ret: double
+## includes: math.h
 0.5
 0.1
 0.2
diff --git a/benchtests/acosh-inputs b/benchtests/acosh-inputs
index 3c8c546..84a603d 100644
--- a/benchtests/acosh-inputs
+++ b/benchtests/acosh-inputs
@@ -1,3 +1,6 @@
+## args: double
+## ret: double
+## includes: math.h
 0.1
 0.2
 0.3
diff --git a/benchtests/asin-inputs b/benchtests/asin-inputs
index b527af3..080a4e9 100644
--- a/benchtests/asin-inputs
+++ b/benchtests/asin-inputs
@@ -1,3 +1,6 @@
+## args: double
+## ret: double
+## includes: math.h
 0.5
 0.1
 0.2
diff --git a/benchtests/asinh-inputs b/benchtests/asinh-inputs
index 3c8c546..84a603d 100644
--- a/benchtests/asinh-inputs
+++ b/benchtests/asinh-inputs
@@ -1,3 +1,6 @@
+## args: double
+## ret: double
+## includes: math.h
 0.1
 0.2
 0.3
diff --git a/benchtests/atan-inputs b/benchtests/atan-inputs
index 4a2cf3a..e88e384 100644
--- a/benchtests/atan-inputs
+++ b/benchtests/atan-inputs
@@ -1,3 +1,6 @@
+## args: double
+## ret: double
+## includes: math.h
 0x1.000000c5cba86p0
 0x1.000001883003ap0
 0x1.00000dfb2b674p0
diff --git a/benchtests/atanh-inputs b/benchtests/atanh-inputs
index 3c8c546..84a603d 100644
--- a/benchtests/atanh-inputs
+++ b/benchtests/atanh-inputs
@@ -1,3 +1,6 @@
+## args: double
+## ret: double
+## includes: math.h
 0.1
 0.2
 0.3
diff --git a/benchtests/cos-inputs b/benchtests/cos-inputs
index 82a4060..c7bbaad 100644
--- a/benchtests/cos-inputs
+++ b/benchtests/cos-inputs
@@ -1,3 +1,6 @@
+## args: double
+## ret: double
+## includes: math.h
 0x1.000000cf4a2a1p0
 0x1.0000010b239a8p0
 0x1.00000162a932ap0
diff --git a/benchtests/cosh-inputs b/benchtests/cosh-inputs
index 3c8c546..84a603d 100644
--- a/benchtests/cosh-inputs
+++ b/benchtests/cosh-inputs
@@ -1,3 +1,6 @@
+## args: double
+## ret: double
+## includes: math.h
 0.1
 0.2
 0.3
diff --git a/benchtests/exp-inputs b/benchtests/exp-inputs
index e9d33a3..593ad7c 100644
--- a/benchtests/exp-inputs
+++ b/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
diff --git a/benchtests/log-inputs b/benchtests/log-inputs
index 713c222..c92d78c 100644
--- a/benchtests/log-inputs
+++ b/benchtests/log-inputs
@@ -1 +1,4 @@
+## args: double
+## ret: double
+## includes: math.h
 42.0
diff --git a/benchtests/pow-inputs b/benchtests/pow-inputs
index dad6505..96b1b6c 100644
--- a/benchtests/pow-inputs
+++ b/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
diff --git a/benchtests/rint-inputs b/benchtests/rint-inputs
index a5f83dc..e9001f9 100644
--- a/benchtests/rint-inputs
+++ b/benchtests/rint-inputs
@@ -1,3 +1,6 @@
+## args: double
+## ret: double
+## includes: math.h
 78.5
 -78.5
 4503599627370497.0
diff --git a/benchtests/sin-inputs b/benchtests/sin-inputs
index 08192d8..ae452a8 100644
--- a/benchtests/sin-inputs
+++ b/benchtests/sin-inputs
@@ -1,3 +1,6 @@
+## includes: math.h
+## args: double
+## ret: double
 0.9
 2.3
 3.7
diff --git a/benchtests/sinh-inputs b/benchtests/sinh-inputs
index 3c8c546..84a603d 100644
--- a/benchtests/sinh-inputs
+++ b/benchtests/sinh-inputs
@@ -1,3 +1,6 @@
+## args: double
+## ret: double
+## includes: math.h
 0.1
 0.2
 0.3
diff --git a/benchtests/tan-inputs b/benchtests/tan-inputs
index 629414f..f489ddd 100644
--- a/benchtests/tan-inputs
+++ b/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
diff --git a/benchtests/tanh-inputs b/benchtests/tanh-inputs
index 3c8c546..84a603d 100644
--- a/benchtests/tanh-inputs
+++ b/benchtests/tanh-inputs
@@ -1,3 +1,6 @@
+## args: double
+## ret: double
+## includes: math.h
 0.1
 0.2
 0.3
diff --git a/scripts/bench.pl b/scripts/bench.pl
index dcf1355..5fe95d0 100755
--- a/scripts/bench.pl
+++ b/scripts/bench.pl
@@ -21,40 +21,78 @@ use strict;
 use warnings;
 # Generate a benchmark source file for a given input.
 
-if (@ARGV < 2) {
-  die "Usage: bench.pl <function> [parameter types] [return type]"
+if (@ARGV < 1) {
+  die "Usage: bench.pl <function>"
 }
 
-my $arg;
 my $func = $ARGV[0];
 my @args;
 my $ret = "void";
 my $getret = "";
-my $retval = "";
 
-if (@ARGV >= 2) {
-  @args = split(':', $ARGV[1]);
-}
+# We create a hash of inputs for each variant of the test.
+my $variant = "";
+my @curvals;
+my %vals;
+my @include_files;
+my $incl;
+
+open INPUTS, "<$func-inputs" or die $!;
+
+LINE:while (<INPUTS>) {
+  chomp;
+
+  # Directives.
+  if (/^## (\w+): (.*)/) {
+    # Function argument types.
+    if ($1 eq "args") {
+      @args = split(":", $2);
+    }
+
+    # Function return type.
+    elsif ($1 eq "ret") {
+      $ret = $2;
+    }
 
-if (@ARGV == 3) {
-  $ret = $ARGV[2];
+    elsif ($1 eq "includes") {
+      @include_files = split (",", $2);
+    }
+
+    # New variant.  This is the only directive allowed in the body of the
+    # inputs to separate inputs into variants.  All others should be at the
+    # top or else all hell will break loose.
+    elsif ($1 eq "name") {
+
+      # Save values in the previous variant.
+      my @copy = @curvals;
+      $vals{$variant} = \@copy;
+
+      # Prepare for the next.
+      $variant=$2;
+      undef @curvals;
+      next LINE;
+    }
+  }
+
+  # Skip over comments.
+  if (/^#/) {
+    next LINE;
+  }
+  push (@curvals, $_);
 }
 
-my $decl = "extern $ret $func (";
 
-# Function has no arguments.
-if (@args == 0 || $args[0] eq "void") {
-  print "$decl void);\n";
-  print "#define CALL_BENCH_FUNC(i,j) $func();\n";
-  print "#define NUM_VARIANTS (1)\n";
-  print "#define NUM_SAMPLES(v) (1)\n";
-  print "#define VARIANT(v) FUNCNAME \"()\"\n"
+my $bench_func = "#define CALL_BENCH_FUNC(v, i) $func (";
+
+
+# Print the definitions and macros.
+foreach $incl (@include_files) {
+  print "#include <" . $incl . ">\n";
 }
-# The function has arguments, so parse them and populate the inputs.
-else {
-  my $num = 0;
-  my $bench_func = "#define CALL_BENCH_FUNC(v, i) $func (";
 
+if (@args > 0) {
+  # Save values in the last variant.
+  $vals{$variant} = \@curvals;
   my $struct =
     "struct _variants
     {
@@ -65,60 +103,21 @@ else {
 
   my $arg_struct = "struct args {";
 
+  my $num = 0;
+  my $arg;
   foreach $arg (@args) {
     if ($num > 0) {
       $bench_func = "$bench_func,";
-      $decl = "$decl,";
     }
 
     $arg_struct = "$arg_struct volatile $arg arg$num;";
     $bench_func = "$bench_func variants[v].in[i].arg$num";
-    $decl = "$decl $arg";
     $num = $num + 1;
   }
 
   $arg_struct = $arg_struct . "};\n";
-  $decl = $decl . ");\n";
   $bench_func = $bench_func . ");\n";
 
-  # We create a hash of inputs for each variant of the test.
-  my $variant = "";
-  my @curvals;
-  my %vals;
-
-  open INPUTS, "<$func-inputs" or die $!;
-
-  LINE:while (<INPUTS>) {
-    chomp;
-
-    # New variant.
-    if (/^## (\w+): (\w+)/) {
-      #We only identify Name for now.
-      if ($1 ne "name") {
-        next LINE;
-      }
-
-      # Save values in the last variant.
-      my @copy = @curvals;
-      $vals{$variant} = \@copy;
-
-      # Prepare for the next.
-      $variant=$2;
-      undef @curvals;
-      next LINE;
-    }
-
-    # Skip over comments.
-    if (/^#/) {
-      next LINE;
-    }
-    push (@curvals, $_);
-  }
-
-  $vals{$variant} = \@curvals;
-
-  # Print the definitions and macros.
-  print $decl;
   print $bench_func;
   print $arg_struct;
   print $struct;
@@ -147,17 +146,24 @@ else {
     $c += 1;
   }
   print "};\n\n";
-
   # Finally, print the last set of macros.
   print "#define NUM_VARIANTS $c\n";
   print "#define NUM_SAMPLES(i) (variants[i].count)\n";
   print "#define VARIANT(i) (variants[i].name)\n";
 }
+else {
+  print $bench_func . ");\n";
+  print "#define NUM_VARIANTS (1)\n";
+  print "#define NUM_SAMPLES(v) (1)\n";
+  print "#define VARIANT(v) FUNCNAME \"()\"\n"
+}
+
+
 
 # In some cases not storing a return value seems to result in the function call
 # being optimized out.
 if ($ret ne "void") {
-  print "static volatile $ret ret = 0.0;\n";
+  print "static volatile $ret ret;\n";
   $getret = "ret = ";
 }
 

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog               |   25 ++++++++-
 benchtests/Makefile     |   51 +-----------------
 benchtests/README       |   35 ++++++------
 benchtests/acos-inputs  |    3 +
 benchtests/acosh-inputs |    3 +
 benchtests/asin-inputs  |    3 +
 benchtests/asinh-inputs |    3 +
 benchtests/atan-inputs  |    3 +
 benchtests/atanh-inputs |    3 +
 benchtests/cos-inputs   |    3 +
 benchtests/cosh-inputs  |    3 +
 benchtests/exp-inputs   |    3 +
 benchtests/log-inputs   |    3 +
 benchtests/pow-inputs   |    3 +
 benchtests/rint-inputs  |    3 +
 benchtests/sin-inputs   |    3 +
 benchtests/sinh-inputs  |    3 +
 benchtests/tan-inputs   |    3 +
 benchtests/tanh-inputs  |    3 +
 scripts/bench.pl        |  134 ++++++++++++++++++++++++----------------------
 20 files changed, 161 insertions(+), 132 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]