Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src Add man page for fast_divide32.



details:   https://anonhg.NetBSD.org/src/rev/6b335d587032
branches:  trunk
changeset: 753188:6b335d587032
user:      joerg <joerg%NetBSD.org@localhost>
date:      Fri Mar 19 20:11:21 2010 +0000

description:
Add man page for fast_divide32.

diffstat:

 distrib/sets/lists/comp/mi     |   11 ++++-
 share/man/man3/Makefile        |    6 +-
 share/man/man3/fast_divide32.3 |  100 +++++++++++++++++++++++++++++++++++++++++
 3 files changed, 114 insertions(+), 3 deletions(-)

diffs (167 lines):

diff -r d5b28db40b12 -r 6b335d587032 distrib/sets/lists/comp/mi
--- a/distrib/sets/lists/comp/mi        Fri Mar 19 20:07:00 2010 +0000
+++ b/distrib/sets/lists/comp/mi        Fri Mar 19 20:11:21 2010 +0000
@@ -1,4 +1,4 @@
-#      $NetBSD: mi,v 1.1406 2010/03/08 12:32:17 pooka Exp $
+#      $NetBSD: mi,v 1.1407 2010/03/19 20:11:21 joerg Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 #
@@ -5682,6 +5682,9 @@
 ./usr/share/man/cat3/extattr_string_to_namespace.0     comp-c-catman           .cat
 ./usr/share/man/cat3/fabs.0                    comp-c-catman           .cat
 ./usr/share/man/cat3/fabsf.0                   comp-c-catman           .cat
+./usr/share/man/cat3/fast_divide32.0           comp-c-catman           .cat
+./usr/share/man/cat3/fast_divide32_prepare.0   comp-c-catman           .cat
+./usr/share/man/cat3/fast_remainder32.0                comp-c-catman           .cat
 ./usr/share/man/cat3/fclose.0                  comp-c-catman           .cat
 ./usr/share/man/cat3/fdim.0                    comp-c-catman           .cat
 ./usr/share/man/cat3/fdimf.0                   comp-c-catman           .cat
@@ -11453,6 +11456,9 @@
 ./usr/share/man/html3/extattr_string_to_namespace.html comp-c-htmlman          html
 ./usr/share/man/html3/fabs.html                        comp-c-htmlman          html
 ./usr/share/man/html3/fabsf.html               comp-c-htmlman          html
+./usr/share/man/html3/fast_divide32.html               comp-c-htmlman          html
+./usr/share/man/html3/fast_divide32_prepare.html       comp-c-htmlman          html
+./usr/share/man/html3/fast_remainder32.html            comp-c-htmlman          html
 ./usr/share/man/html3/fclose.html              comp-c-htmlman          html
 ./usr/share/man/html3/fdim.html                        comp-c-htmlman          html
 ./usr/share/man/html3/fdimf.html               comp-c-htmlman          html
@@ -17134,6 +17140,9 @@
 ./usr/share/man/man3/extattr_string_to_namespace.3     comp-c-man              .man
 ./usr/share/man/man3/fabs.3                    comp-c-man              .man
 ./usr/share/man/man3/fabsf.3                   comp-c-man              .man
+./usr/share/man/man3/fast_divide32.3           comp-c-man              .man
+./usr/share/man/man3/fast_divide32_prepare.3   comp-c-man              .man
+./usr/share/man/man3/fast_remainder32.3                comp-c-man              .man
 ./usr/share/man/man3/fclose.3                  comp-c-man              .man
 ./usr/share/man/man3/fdim.3                    comp-c-man              .man
 ./usr/share/man/man3/fdimf.3                   comp-c-man              .man
diff -r d5b28db40b12 -r 6b335d587032 share/man/man3/Makefile
--- a/share/man/man3/Makefile   Fri Mar 19 20:07:00 2010 +0000
+++ b/share/man/man3/Makefile   Fri Mar 19 20:11:21 2010 +0000
@@ -1,9 +1,9 @@
-#      $NetBSD: Makefile,v 1.39 2010/03/01 16:36:15 jruoho Exp $
+#      $NetBSD: Makefile,v 1.40 2010/03/19 20:11:22 joerg Exp $
 #      @(#)Makefile    8.2 (Berkeley) 12/13/93
 
 MAN=   _DIAGASSERT.3 __UNCONST.3 CMSG_DATA.3 \
        __arraycount.3 assert.3 bits.3 bitstring.3 dlfcn.3 end.3 \
-       gcq.3 intro.3 offsetof.3 queue.3 stdarg.3 sysexits.3 \
+       fast_divide32.3 gcq.3 intro.3 offsetof.3 queue.3 stdarg.3 sysexits.3 \
        tgmath.3 timeradd.3 tree.3 varargs.3
 
 USETBL=        # used by queue.3
@@ -25,6 +25,8 @@
        bits.3 __SHIFTOUT.3 \
        bits.3 __SHIFTOUT_MASK.3
 MLINKS+=end.3 edata.3 end.3 etext.3
+MLINKS+=fast_divide32.3 fast_divide32_prepare.3 \
+       fast_divide32.3 fast_remainder32.3
 MLINKS+=gcq.3 GCQ_INIT.3 \
        gcq.3 GCQ_INIT_HEAD.3 \
        gcq.3 gcq_init.3 \
diff -r d5b28db40b12 -r 6b335d587032 share/man/man3/fast_divide32.3
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/share/man/man3/fast_divide32.3    Fri Mar 19 20:11:21 2010 +0000
@@ -0,0 +1,100 @@
+.\"    $NetBSD: fast_divide32.3,v 1.1 2010/03/19 20:11:22 joerg Exp $
+.\"
+.\" Copyright (c) 2010 The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Joerg Sonnenberger.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+.\" PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+.\" POSSIBILITY OF SUCH DAMAGE.
+.\"
+.Dd March 19, 2010
+.Dt FAST_DIVIDE32 3
+.Os
+.Sh NAME
+.Nm fast_divide32 ,
+.Nm fast_divide32_prepare ,
+.Nm fast_remainder32
+.Nd fast 32bit division and remainder
+.Sh SYNOPSIS
+.In sys/bitops.h
+.Ft uint32_t
+.Fn fast_divide32 "uint32_t v" "uint32_t div" "uint32_t m" "uint8_t s1" \
+"uint8_t s2"
+.Ft uint32_t
+.Fn fast_remainder32 "uint32_t v" "uint32_t div" "uint32_t m" "uint8_t s1" \
+"uint8_t s2"
+.Ft void
+.Fn fast_divide32_prepare "uint32_t div" "uint32_t *m" "uint8_t *s1" \
+"uint8_t *s2"
+.Sh DESCRIPTION
+The
+.Nm fast_divide32
+and
+.Nm fast_remainder32
+functions compute the equivalent of
+.Fa v / Fa div
+and
+.Fa v % Fa div
+using optimised CPU instructions.
+The constants
+.Fa m ,
+.Fa s1
+and
+.Fa s2
+must first be preset for a given value of
+.Fa div
+with the
+.Nm fast_divide32_prepare
+function.
+.Sh RATIONALE
+These functions are useful for inner loops and other performance-sensitive
+tasks.
+The functions expand to code that is typically slightly larger than
+a plain division instruction, but requires less time to execute.
+The code for constant
+.Fa div
+arguments should be equivalent to the assembly created by GCC.
+.Sh EXAMPLE
+The following example computes q=a/b and r=a%b:
+.Bd -literal
+uint32_t a, b, q, r, m;
+uint8_t s1, s2;
+
+fast_divide32_prepare(b, &m, &s1, &s2);
+
+q = fast_divide32(a, b, m, s1, s2);
+r = fast_remainder32(a, b, m, s1, s2);
+.Ed
+.Sh SEE ALSO
+.Rs
+.%A Torbj\(:orn Granlund
+.%A Peter L. Montgomery
+.%T Division by Invariant Integers Using Multiplication
+.%D 1994
+.%U http://swox.se/~tg/divcnst-pldi94.pdf
+.Re
+.Sh HISTORY
+The
+.Nm
+function appeared in
+.Nx 6.0 .



Home | Main Index | Thread Index | Old Index