[Gmp-commit] /var/hg/gmp: 3 new changesets

mercurial at gmplib.org mercurial at gmplib.org
Wed Oct 23 23:20:31 CEST 2013


details:   /var/hg/gmp/rev/ac0142e9425d
changeset: 16068:ac0142e9425d
user:      Torbjorn Granlund <tege at gmplib.org>
date:      Wed Oct 23 23:04:48 2013 +0200
description:
(oplist): New define, data from `regnum'.
(regnum): Use x86_lookup, feed oplist.

details:   /var/hg/gmp/rev/2949f4da1277
changeset: 16069:2949f4da1277
user:      Torbjorn Granlund <tege at gmplib.org>
date:      Wed Oct 23 23:16:26 2013 +0200
description:
Comment fixes.

details:   /var/hg/gmp/rev/971c85d53a3e
changeset: 16070:971c85d53a3e
user:      Torbjorn Granlund <tege at gmplib.org>
date:      Wed Oct 23 23:20:24 2013 +0200
description:
ChangeLog

diffstat:

 ChangeLog                            |   5 +++++
 mpn/x86_64/coreihwl/sqr_basecase.asm |   7 ++++---
 mpn/x86_64/x86_64-defs.m4            |  19 ++++++++++---------
 3 files changed, 19 insertions(+), 12 deletions(-)

diffs (74 lines):

diff -r 5130e25c215c -r 971c85d53a3e ChangeLog
--- a/ChangeLog	Tue Oct 22 22:05:20 2013 +0200
+++ b/ChangeLog	Wed Oct 23 23:20:24 2013 +0200
@@ -1,3 +1,8 @@
+2013-10-23  Torbjorn Granlund  <tege at gmplib.org>
+
+	* mpn/x86_64/x86_64-defs.m4 (oplist): New define, data from `regnum'.
+	(regnum): Use x86_lookup, feed oplist.
+
 2013-10-22  Niels Möller  <nisse at lysator.liu.se>
 
 	* tests/devel/try.c: Support mpn_div_qr_1n_pi1.
diff -r 5130e25c215c -r 971c85d53a3e mpn/x86_64/coreihwl/sqr_basecase.asm
--- a/mpn/x86_64/coreihwl/sqr_basecase.asm	Tue Oct 22 22:05:20 2013 +0200
+++ b/mpn/x86_64/coreihwl/sqr_basecase.asm	Wed Oct 23 23:20:24 2013 +0200
@@ -34,7 +34,7 @@
 C Intel NHM	n/a		n/a			n/a
 C Intel SBR	n/a		n/a			n/a
 C Intel IBR	n/a		n/a			n/a
-C Intel HWL	 1.86		 2.15			 ?
+C Intel HWL	 1.86		 2.15			~2.5
 C Intel BWL	 ?		 ?			 ?
 C Intel atom	n/a		n/a			n/a
 C VIA nano	n/a		n/a			n/a
@@ -44,7 +44,8 @@
 C that the sqr_diag_addlsh1 loop was manually written.
 
 C TODO
-C  * Replace current unoptimised sqr_diag_addlsh1 loop.
+C  * Replace current unoptimised sqr_diag_addlsh1 loop; 1.75 c/l might be
+C    possible.
 C  * Consider splitting outer loop into 2, one for n = 1 (mod 2) and one for
 C    n = 0 (mod 2).  These loops could fall into specific "corner" code.
 C  * Consider splitting outer loop into 4.
@@ -85,7 +86,7 @@
 	mov	(up), %rdx
 	mov	8(up), %rcx
 	mulx(	%rcx, %r9, %r10)	C v0 * v1	W 1 2
-	mulx(	%rdx, %rax, %r8)		C v0 * v0	W 0 1
+	mulx(	%rdx, %rax, %r8)	C v0 * v0	W 0 1
 	mov	%rcx, %rdx
 	mulx(	%rdx, %r11, %rdx)	C v1 * v1	W 2 3
 	add	%r9, %r9		C		W 1
diff -r 5130e25c215c -r 971c85d53a3e mpn/x86_64/x86_64-defs.m4
--- a/mpn/x86_64/x86_64-defs.m4	Tue Oct 22 22:05:20 2013 +0200
+++ b/mpn/x86_64/x86_64-defs.m4	Wed Oct 23 23:20:24 2013 +0200
@@ -287,17 +287,18 @@
 dnl    ix(op)       0 for reg operand, 1 for plain pointer operand.
 dnl
 
-define(`regnum',
-`ifelse($1,`%rax',  0,	$1,`%rcx',  1,	$1,`%rdx',  2,	$1,`%rbx',  3,
-	$1,`%rsp',  4,	$1,`%rbp',  5,	$1,`%rsi',  6,	$1,`%rdi',  7,
-	$1,`%r8',   8,	$1,`%r9',   9,	$1,`%r10',  10,	$1,`%r11',  11,
-	$1,`%r12',  12,	$1,`%r13',  13,	$1,`%r14',  14,	$1,`%r15',  15,
-	$1,`(%rax)',16,	$1,`(%rcx)',17,	$1,`(%rdx)',18,	$1,`(%rbx)',19,
-	$1,`(%rsp)',20,	$1,`(%rbp)',21,	$1,`(%rsi)',22,	$1,`(%rdi)',23,
-	$1,`(%r8)', 24,	$1,`(%r9)', 25,	$1,`(%r10)',26,	$1,`(%r11)',27,
-	$1,`(%r12)',28,	$1,`(%r13)',29,	$1,`(%r14)',30,	$1,`(%r15)',31)')
+define(`regnum',`x86_lookup(`$1',oplist)')
 define(`regnumh',`eval(regnum($1)/8 & 1)')
 define(`ix',`eval(regnum($1)/16)')
+define(`oplist',
+``%rax',   0, `%rcx',   1, `%rdx',   2,  `%rbx',   3,
+ `%rsp',   4, `%rbp',   5, `%rsi',   6,  `%rdi',   7,
+ `%r8',    8, `%r9',    9, `%r10',  10,  `%r11',  11,
+ `%r12',  12, `%r13',  13, `%r14',  14,  `%r15',  15,
+ `(%rax)',16, `(%rcx)',17, `(%rdx)',18,  `(%rbx)',19,
+ `(%rsp)',20, `(%rbp)',21, `(%rsi)',22,  `(%rdi)',23,
+ `(%r8)', 24, `(%r9)', 25, `(%r10)',26,  `(%r11)',27,
+ `(%r12)',28, `(%r13)',29, `(%r14)',30,  `(%r15)' 31')
 
 
 dnl  Usage


More information about the gmp-commit mailing list