Module Name:    src
Committed By:   joerg
Date:           Fri Mar 19 20:11:22 UTC 2010

Modified Files:
        src/distrib/sets/lists/comp: mi
        src/share/man/man3: Makefile
Added Files:
        src/share/man/man3: fast_divide32.3

Log Message:
Add man page for fast_divide32.


To generate a diff of this commit:
cvs rdiff -u -r1.1406 -r1.1407 src/distrib/sets/lists/comp/mi
cvs rdiff -u -r1.39 -r1.40 src/share/man/man3/Makefile
cvs rdiff -u -r0 -r1.1 src/share/man/man3/fast_divide32.3

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/distrib/sets/lists/comp/mi
diff -u src/distrib/sets/lists/comp/mi:1.1406 src/distrib/sets/lists/comp/mi:1.1407
--- src/distrib/sets/lists/comp/mi:1.1406	Mon Mar  8 12:32:17 2010
+++ src/distrib/sets/lists/comp/mi	Fri Mar 19 20:11:21 2010
@@ -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

Index: src/share/man/man3/Makefile
diff -u src/share/man/man3/Makefile:1.39 src/share/man/man3/Makefile:1.40
--- src/share/man/man3/Makefile:1.39	Mon Mar  1 16:36:15 2010
+++ src/share/man/man3/Makefile	Fri Mar 19 20:11:22 2010
@@ -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 \

Added files:

Index: src/share/man/man3/fast_divide32.3
diff -u /dev/null src/share/man/man3/fast_divide32.3:1.1
--- /dev/null	Fri Mar 19 20:11:22 2010
+++ src/share/man/man3/fast_divide32.3	Fri Mar 19 20:11:22 2010
@@ -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 .

Reply via email to