[Gmp-commit] /var/hg/gmp: Moved table for x86_64 invert_limb to a separate file.

mercurial at gmplib.org mercurial at gmplib.org
Sun Apr 10 22:10:02 CEST 2011


details:   /var/hg/gmp/rev/58ab3bd9ca8d
changeset: 14120:58ab3bd9ca8d
user:      Niels M?ller <nisse at lysator.liu.se>
date:      Sun Apr 10 22:09:58 2011 +0200
description:
Moved table for x86_64 invert_limb to a separate file.

diffstat:

 ChangeLog                        |  14 ++++++++
 configure.in                     |   1 +
 mpn/asm-defs.m4                  |   1 +
 mpn/x86_64/invert_limb.asm       |  41 +------------------------
 mpn/x86_64/invert_limb_table.asm |  63 ++++++++++++++++++++++++++++++++++++++++
 5 files changed, 82 insertions(+), 38 deletions(-)

diffs (169 lines):

diff -r 1f26709da9c1 -r 58ab3bd9ca8d ChangeLog
--- a/ChangeLog	Sat Apr 09 13:25:22 2011 +0200
+++ b/ChangeLog	Sun Apr 10 22:09:58 2011 +0200
@@ -1,3 +1,17 @@
+2011-04-10  Niels Möller  <nisse at lysator.liu.se>
+
+	* mpn/asm-defs.m4 (define_mpn): Added invert_limb_table.
+
+	* configure.in: Add invert_limb_table to extra_functions_64 on
+	x86_64.
+
+	* mpn/x86_64/invert_limb.asm: Changed references from approx_tab
+	mpn_invert_limb_table.
+
+	* mpn/x86_64/invert_limb_table.asm (mpn_invert_limb_table): New
+	file. Extracted approximation table from invert_limb.asm, renamed
+	and made global.
+
 2011-03-30  Niels Möller  <nisse at lysator.liu.se>
 
 	* mpn/x86_64/div_qr_2u_pi1.asm: New file.
diff -r 1f26709da9c1 -r 58ab3bd9ca8d configure.in
--- a/configure.in	Sat Apr 09 13:25:22 2011 +0200
+++ b/configure.in	Sun Apr 10 22:09:58 2011 +0200
@@ -1515,6 +1515,7 @@
 	cyclecounter_size_64=2
 	abilist="64 32"
 	path_64="x86_64"
+	extra_functions_64="invert_limb_table"
 
 	case $host_cpu in
 	  x86_64)
diff -r 1f26709da9c1 -r 58ab3bd9ca8d mpn/asm-defs.m4
--- a/mpn/asm-defs.m4	Sat Apr 09 13:25:22 2011 +0200
+++ b/mpn/asm-defs.m4	Sun Apr 10 22:09:58 2011 +0200
@@ -1371,6 +1371,7 @@
 define_mpn(get_str)
 define_mpn(hamdist)
 define_mpn(invert_limb)
+define_mpn(invert_limb_table)
 define_mpn(ior_n)
 define_mpn(iorn_n)
 define_mpn(lshift)
diff -r 1f26709da9c1 -r 58ab3bd9ca8d mpn/x86_64/invert_limb.asm
--- a/mpn/x86_64/invert_limb.asm	Sat Apr 09 13:25:22 2011 +0200
+++ b/mpn/x86_64/invert_limb.asm	Sun Apr 10 22:09:58 2011 +0200
@@ -42,12 +42,12 @@
 	shr	$55, %rax		C			 1	 1	 1
 ifdef(`PIC',`
 ifdef(`DARWIN',`
-	mov	approx_tab at GOTPCREL(%rip), %r8
+	mov	mpn_invert_limb_table at GOTPCREL(%rip), %r8
 	add	$-512, %r8
 ',`
-	lea	-512+approx_tab(%rip), %r8
+	lea	-512+mpn_invert_limb_table(%rip), %r8
 ')',`
-	movabs	$-512+approx_tab, %r8
+	movabs	$-512+mpn_invert_limb_table, %r8
 ')
 	movzwl	(%r8,%rax,2), R32(%rcx)	C	%rcx = v0
 
@@ -96,39 +96,4 @@
 	ret
 EPILOGUE()
 
-	RODATA
-	ALIGN(2)
-approx_tab:
-	.value	0x7fd,0x7f5,0x7ed,0x7e5,0x7dd,0x7d5,0x7ce,0x7c6
-	.value	0x7bf,0x7b7,0x7b0,0x7a8,0x7a1,0x79a,0x792,0x78b
-	.value	0x784,0x77d,0x776,0x76f,0x768,0x761,0x75b,0x754
-	.value	0x74d,0x747,0x740,0x739,0x733,0x72c,0x726,0x720
-	.value	0x719,0x713,0x70d,0x707,0x700,0x6fa,0x6f4,0x6ee
-	.value	0x6e8,0x6e2,0x6dc,0x6d6,0x6d1,0x6cb,0x6c5,0x6bf
-	.value	0x6ba,0x6b4,0x6ae,0x6a9,0x6a3,0x69e,0x698,0x693
-	.value	0x68d,0x688,0x683,0x67d,0x678,0x673,0x66e,0x669
-	.value	0x664,0x65e,0x659,0x654,0x64f,0x64a,0x645,0x640
-	.value	0x63c,0x637,0x632,0x62d,0x628,0x624,0x61f,0x61a
-	.value	0x616,0x611,0x60c,0x608,0x603,0x5ff,0x5fa,0x5f6
-	.value	0x5f1,0x5ed,0x5e9,0x5e4,0x5e0,0x5dc,0x5d7,0x5d3
-	.value	0x5cf,0x5cb,0x5c6,0x5c2,0x5be,0x5ba,0x5b6,0x5b2
-	.value	0x5ae,0x5aa,0x5a6,0x5a2,0x59e,0x59a,0x596,0x592
-	.value	0x58e,0x58a,0x586,0x583,0x57f,0x57b,0x577,0x574
-	.value	0x570,0x56c,0x568,0x565,0x561,0x55e,0x55a,0x556
-	.value	0x553,0x54f,0x54c,0x548,0x545,0x541,0x53e,0x53a
-	.value	0x537,0x534,0x530,0x52d,0x52a,0x526,0x523,0x520
-	.value	0x51c,0x519,0x516,0x513,0x50f,0x50c,0x509,0x506
-	.value	0x503,0x500,0x4fc,0x4f9,0x4f6,0x4f3,0x4f0,0x4ed
-	.value	0x4ea,0x4e7,0x4e4,0x4e1,0x4de,0x4db,0x4d8,0x4d5
-	.value	0x4d2,0x4cf,0x4cc,0x4ca,0x4c7,0x4c4,0x4c1,0x4be
-	.value	0x4bb,0x4b9,0x4b6,0x4b3,0x4b0,0x4ad,0x4ab,0x4a8
-	.value	0x4a5,0x4a3,0x4a0,0x49d,0x49b,0x498,0x495,0x493
-	.value	0x490,0x48d,0x48b,0x488,0x486,0x483,0x481,0x47e
-	.value	0x47c,0x479,0x477,0x474,0x472,0x46f,0x46d,0x46a
-	.value	0x468,0x465,0x463,0x461,0x45e,0x45c,0x459,0x457
-	.value	0x455,0x452,0x450,0x44e,0x44b,0x449,0x447,0x444
-	.value	0x442,0x440,0x43e,0x43b,0x439,0x437,0x435,0x432
-	.value	0x430,0x42e,0x42c,0x42a,0x428,0x425,0x423,0x421
-	.value	0x41f,0x41d,0x41b,0x419,0x417,0x414,0x412,0x410
-	.value	0x40e,0x40c,0x40a,0x408,0x406,0x404,0x402,0x400
 ASM_END()
diff -r 1f26709da9c1 -r 58ab3bd9ca8d mpn/x86_64/invert_limb_table.asm
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mpn/x86_64/invert_limb_table.asm	Sun Apr 10 22:09:58 2011 +0200
@@ -0,0 +1,63 @@
+dnl  Table used for mpn_invert_limb
+
+dnl  Contributed to the GNU project by Torbjorn Granlund and Niels Möller.
+
+dnl  Copyright 2004, 2007, 2008, 2009, 2011 Free Software Foundation, Inc.
+
+dnl  This file is part of the GNU MP Library.
+
+dnl  The GNU MP Library is free software; you can redistribute it and/or modify
+dnl  it under the terms of the GNU Lesser General Public License as published
+dnl  by the Free Software Foundation; either version 3 of the License, or (at
+dnl  your option) any later version.
+
+dnl  The GNU MP Library is distributed in the hope that it will be useful, but
+dnl  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+dnl  or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
+dnl  License for more details.
+
+dnl  You should have received a copy of the GNU Lesser General Public License
+dnl  along with the GNU MP Library.  If not, see http://www.gnu.org/licenses/.
+
+include(`../config.m4')
+
+ASM_START()
+C Table entry X contains floor (0x7fd00 / (0x100 + X))
+
+	RODATA
+	ALIGN(2)
+	GLOBL mpn_invert_limb_table
+mpn_invert_limb_table:
+	.value	0x7fd,0x7f5,0x7ed,0x7e5,0x7dd,0x7d5,0x7ce,0x7c6
+	.value	0x7bf,0x7b7,0x7b0,0x7a8,0x7a1,0x79a,0x792,0x78b
+	.value	0x784,0x77d,0x776,0x76f,0x768,0x761,0x75b,0x754
+	.value	0x74d,0x747,0x740,0x739,0x733,0x72c,0x726,0x720
+	.value	0x719,0x713,0x70d,0x707,0x700,0x6fa,0x6f4,0x6ee
+	.value	0x6e8,0x6e2,0x6dc,0x6d6,0x6d1,0x6cb,0x6c5,0x6bf
+	.value	0x6ba,0x6b4,0x6ae,0x6a9,0x6a3,0x69e,0x698,0x693
+	.value	0x68d,0x688,0x683,0x67d,0x678,0x673,0x66e,0x669
+	.value	0x664,0x65e,0x659,0x654,0x64f,0x64a,0x645,0x640
+	.value	0x63c,0x637,0x632,0x62d,0x628,0x624,0x61f,0x61a
+	.value	0x616,0x611,0x60c,0x608,0x603,0x5ff,0x5fa,0x5f6
+	.value	0x5f1,0x5ed,0x5e9,0x5e4,0x5e0,0x5dc,0x5d7,0x5d3
+	.value	0x5cf,0x5cb,0x5c6,0x5c2,0x5be,0x5ba,0x5b6,0x5b2
+	.value	0x5ae,0x5aa,0x5a6,0x5a2,0x59e,0x59a,0x596,0x592
+	.value	0x58e,0x58a,0x586,0x583,0x57f,0x57b,0x577,0x574
+	.value	0x570,0x56c,0x568,0x565,0x561,0x55e,0x55a,0x556
+	.value	0x553,0x54f,0x54c,0x548,0x545,0x541,0x53e,0x53a
+	.value	0x537,0x534,0x530,0x52d,0x52a,0x526,0x523,0x520
+	.value	0x51c,0x519,0x516,0x513,0x50f,0x50c,0x509,0x506
+	.value	0x503,0x500,0x4fc,0x4f9,0x4f6,0x4f3,0x4f0,0x4ed
+	.value	0x4ea,0x4e7,0x4e4,0x4e1,0x4de,0x4db,0x4d8,0x4d5
+	.value	0x4d2,0x4cf,0x4cc,0x4ca,0x4c7,0x4c4,0x4c1,0x4be
+	.value	0x4bb,0x4b9,0x4b6,0x4b3,0x4b0,0x4ad,0x4ab,0x4a8
+	.value	0x4a5,0x4a3,0x4a0,0x49d,0x49b,0x498,0x495,0x493
+	.value	0x490,0x48d,0x48b,0x488,0x486,0x483,0x481,0x47e
+	.value	0x47c,0x479,0x477,0x474,0x472,0x46f,0x46d,0x46a
+	.value	0x468,0x465,0x463,0x461,0x45e,0x45c,0x459,0x457
+	.value	0x455,0x452,0x450,0x44e,0x44b,0x449,0x447,0x444
+	.value	0x442,0x440,0x43e,0x43b,0x439,0x437,0x435,0x432
+	.value	0x430,0x42e,0x42c,0x42a,0x428,0x425,0x423,0x421
+	.value	0x41f,0x41d,0x41b,0x419,0x417,0x414,0x412,0x410
+	.value	0x40e,0x40c,0x40a,0x408,0x406,0x404,0x402,0x400
+ASM_END()


More information about the gmp-commit mailing list