diff options
author | Torbjorn Granlund <tege@gmplib.org> | 2011-10-20 00:31:34 +0200 |
---|---|---|
committer | Torbjorn Granlund <tege@gmplib.org> | 2011-10-20 00:31:34 +0200 |
commit | 08ace36d1918457ccbf20650a53d344f9e9bc881 (patch) | |
tree | 2f57217cd3b22d7220a897c9f418bb1a4a8d01c7 /mpn/s390_64 | |
parent | 9494db6b6e32b3b64d97179a7c2bbbc388afefa4 (diff) | |
download | gmp-08ace36d1918457ccbf20650a53d344f9e9bc881.tar.gz |
Rewrite like s390_32/esame code.
Diffstat (limited to 'mpn/s390_64')
-rw-r--r-- | mpn/s390_64/sqr_diag_addlsh1.asm | 33 |
1 files changed, 17 insertions, 16 deletions
diff --git a/mpn/s390_64/sqr_diag_addlsh1.asm b/mpn/s390_64/sqr_diag_addlsh1.asm index 793a4c107..8c9dbc1d8 100644 --- a/mpn/s390_64/sqr_diag_addlsh1.asm +++ b/mpn/s390_64/sqr_diag_addlsh1.asm @@ -20,8 +20,8 @@ dnl along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. include(`../config.m4') C cycles/limb -C z900 24.5 -C z990 18.5 +C z900 ? +C z990 14.5 C z9 ? C z10 ? C z196 ? @@ -36,39 +36,40 @@ ASM_START() PROLOGUE(mpn_sqr_diag_addlsh1) stmg %r6, %r9, 48(%r15) + lghi %r9, -1 C save non-carry state + lg %r1, 0(up) mlgr %r0, %r1 aghi n, -1 lg %r7, 0(tp) - srlg %r9, %r7, 63 - sllg %r7, %r7, 1 - lgr %r6, %r1 - algr %r7, %r0 + algr %r7, %r7 + lghi %r6, 0 j L(mid) L(top): lmg %r6, %r7, 8(tp) la tp, 16(tp) - srlg %r8, %r6, 63 - sllg %r6, %r6, 1 - la %r6, 0(%r6,%r9) - srlg %r9, %r7, 63 - sllg %r7, %r7, 1 - la %r7, 0(%r7,%r8) + alcgr %r6, %r6 + alcgr %r7, %r7 +L(mid): slbgr %r8, %r8 C save carry + aghi %r9, 1 C restore old carry alcgr %r6, %r1 alcgr %r7, %r0 -L(mid): stmg %r6, %r7, 0(rp) + stmg %r6, %r7, 0(rp) la rp, 16(rp) lg %r1, 8(up) la up, 8(up) + lgr %r9, %r8 C copy carry save register mlgr %r0, %r1 brctg n, L(top) L(end): lg %r6, 8(tp) - srlg %r7, %r6, 63 - sllg %r6, %r6, 1 - la %r6, 0(%r6,%r9) + alcgr %r6, %r6 + slbgr %r8, %r8 C save carry + aghi %r9, 1 C restore old carry + lghi %r7, 1 alcgr %r6, %r1 alcgr %r7, %r0 + algr %r7, %r8 stmg %r6, %r7, 0(rp) lmg %r6, %r9, 48(%r15) |