Home | History | Annotate | Line # | Download | only in s390_64
      1 dnl  S/390-64 mpn_lshiftc.
      2 
      3 dnl  Copyright 2011, 2014 Free Software Foundation, Inc.
      4 
      5 dnl  This file is part of the GNU MP Library.
      6 dnl
      7 dnl  The GNU MP Library is free software; you can redistribute it and/or modify
      8 dnl  it under the terms of either:
      9 dnl
     10 dnl    * the GNU Lesser General Public License as published by the Free
     11 dnl      Software Foundation; either version 3 of the License, or (at your
     12 dnl      option) any later version.
     13 dnl
     14 dnl  or
     15 dnl
     16 dnl    * the GNU General Public License as published by the Free Software
     17 dnl      Foundation; either version 2 of the License, or (at your option) any
     18 dnl      later version.
     19 dnl
     20 dnl  or both in parallel, as here.
     21 dnl
     22 dnl  The GNU MP Library is distributed in the hope that it will be useful, but
     23 dnl  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
     24 dnl  or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
     25 dnl  for more details.
     26 dnl
     27 dnl  You should have received copies of the GNU General Public License and the
     28 dnl  GNU Lesser General Public License along with the GNU MP Library.  If not,
     29 dnl  see https://www.gnu.org/licenses/.
     30 
     31 include(`../config.m4')
     32 
     33 C            cycles/limb
     34 C z900		 9
     35 C z990           3.5
     36 C z9		 ?
     37 C z10		 7
     38 C z196		 ?
     39 
     40 C NOTES
     41 C  * See notes in lshift.asm.
     42 
     43 C INPUT PARAMETERS
     44 define(`rp',	`%r2')
     45 define(`up',	`%r3')
     46 define(`n',	`%r4')
     47 define(`cnt',	`%r5')
     48 
     49 define(`tnc',	`%r6')
     50 
     51 ASM_START()
     52 PROLOGUE(mpn_lshiftc)
     53 	cghi	n, 3
     54 	jh	L(gt1)
     55 
     56 	stmg	%r6, %r8, 48(%r15)
     57 	larl	%r1, L(tab)-4
     58 	lcgr	tnc, cnt
     59 	sllg	n, n, 2
     60 	lghi	%r8, -1
     61 	b	0(n,%r1)
     62 L(tab):	j	L(n1)
     63 	j	L(n2)
     64 	j	L(n3)
     65 
     66 L(n1):	lg	%r1, 0(up)
     67 	sllg	%r0, %r1, 0(cnt)
     68 	xgr	%r0, %r8
     69 	stg	%r0, 0(rp)
     70 	srlg	%r2, %r1, 0(tnc)
     71 	lmg	%r6, %r8, 48(%r15)
     72 	br	%r14
     73 
     74 L(n2):	lg	%r1, 8(up)
     75 	srlg	%r4, %r1, 0(tnc)
     76 	sllg	%r0, %r1, 0(cnt)
     77 	j	L(cj)
     78 
     79 L(n3):	lg	%r1, 16(up)
     80 	srlg	%r4, %r1, 0(tnc)
     81 	sllg	%r0, %r1, 0(cnt)
     82 	lg	%r1, 8(up)
     83 	srlg	%r7, %r1, 0(tnc)
     84 	ogr	%r7, %r0
     85 	sllg	%r0, %r1, 0(cnt)
     86 	xgr	%r7, %r8
     87 	stg	%r7, 16(rp)
     88 L(cj):	lg	%r1, 0(up)
     89 	srlg	%r7, %r1, 0(tnc)
     90 	ogr	%r7, %r0
     91 	sllg	%r0, %r1, 0(cnt)
     92 	xgr	%r7, %r8
     93 	xgr	%r0, %r8
     94 	stg	%r7, 8(rp)
     95 	stg	%r0, 0(rp)
     96 	lgr	%r2, %r4
     97 	lmg	%r6, %r8, 48(%r15)
     98 	br	%r14
     99 
    100 L(gt1):	stmg	%r6, %r14, 48(%r15)
    101 	lcgr	tnc, cnt		C tnc = -cnt
    102 
    103 	sllg	%r1, n, 3
    104 	srlg	%r0, n, 2		C loop count
    105 
    106 	agr	up, %r1			C point up at end of U
    107 	agr	rp, %r1			C point rp at end of R
    108 	aghi	up, -56
    109 	aghi	rp, -40
    110 
    111 	lghi	%r7, 3
    112 	lghi	%r14, -1
    113 	ngr	%r7, n
    114 	je	L(b0)
    115 	cghi	%r7, 2
    116 	jl	L(b1)
    117 	je	L(b2)
    118 
    119 L(b3):	lg	%r7, 48(up)
    120 	srlg	%r9, %r7, 0(tnc)
    121 	sllg	%r11, %r7, 0(cnt)
    122 	lg	%r8, 40(up)
    123 	lg	%r7, 32(up)
    124 	srlg	%r4, %r8, 0(tnc)
    125 	sllg	%r13, %r8, 0(cnt)
    126 	ogr	%r11, %r4
    127 	la	rp, 16(rp)
    128 	xgr	%r11, %r14
    129 	j	L(lm3)
    130 
    131 L(b2):	lg	%r8, 48(up)
    132 	lg	%r7, 40(up)
    133 	srlg	%r9, %r8, 0(tnc)
    134 	sllg	%r13, %r8, 0(cnt)
    135 	la	rp, 24(rp)
    136 	la	up, 8(up)
    137 	j	L(lm2)
    138 
    139 L(b1):	lg	%r7, 48(up)
    140 	srlg	%r9, %r7, 0(tnc)
    141 	sllg	%r11, %r7, 0(cnt)
    142 	lg	%r8, 40(up)
    143 	lg	%r7, 32(up)
    144 	srlg	%r4, %r8, 0(tnc)
    145 	sllg	%r10, %r8, 0(cnt)
    146 	ogr	%r11, %r4
    147 	la	rp, 32(rp)
    148 	la	up, 16(up)
    149 	xgr	%r11, %r14
    150 	j	L(lm1)
    151 
    152 L(b0):	lg	%r8, 48(up)
    153 	lg	%r7, 40(up)
    154 	srlg	%r9, %r8, 0(tnc)
    155 	sllg	%r10, %r8, 0(cnt)
    156 	la	rp, 40(rp)
    157 	la	up, 24(up)
    158 	j	L(lm0)
    159 
    160 	ALIGN(8)
    161 L(top):	srlg	%r4, %r8, 0(tnc)
    162 	sllg	%r13, %r8, 0(cnt)
    163 	ogr	%r11, %r4
    164 	xgr	%r10, %r14
    165 	xgr	%r11, %r14
    166 	stg	%r10, 24(rp)
    167 L(lm3):	stg	%r11, 16(rp)
    168 L(lm2):	srlg	%r12, %r7, 0(tnc)
    169 	sllg	%r11, %r7, 0(cnt)
    170 	lg	%r8, 24(up)
    171 	lg	%r7, 16(up)
    172 	ogr	%r13, %r12
    173 	srlg	%r4, %r8, 0(tnc)
    174 	sllg	%r10, %r8, 0(cnt)
    175 	ogr	%r11, %r4
    176 	xgr	%r13, %r14
    177 	xgr	%r11, %r14
    178 	stg	%r13, 8(rp)
    179 L(lm1):	stg	%r11, 0(rp)
    180 L(lm0):	srlg	%r12, %r7, 0(tnc)
    181 	aghi	rp, -32
    182 	sllg	%r11, %r7, 0(cnt)
    183 	lg	%r8, 8(up)
    184 	lg	%r7, 0(up)
    185 	aghi	up, -32
    186 	ogr	%r10, %r12
    187 	brctg	%r0, L(top)
    188 
    189 L(end):	srlg	%r4, %r8, 0(tnc)
    190 	sllg	%r13, %r8, 0(cnt)
    191 	ogr	%r11, %r4
    192 	xgr	%r10, %r14
    193 	xgr	%r11, %r14
    194 	stg	%r10, 24(rp)
    195 	stg	%r11, 16(rp)
    196 	srlg	%r12, %r7, 0(tnc)
    197 	sllg	%r11, %r7, 0(cnt)
    198 	ogr	%r13, %r12
    199 	xgr	%r13, %r14
    200 	xgr	%r11, %r14
    201 	stg	%r13, 8(rp)
    202 	stg	%r11, 0(rp)
    203 	lgr	%r2, %r9
    204 
    205 	lmg	%r6, %r14, 48(%r15)
    206 	br	%r14
    207 EPILOGUE()
    208