[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