Blame sysdeps/hppa/rshift.S

Packit 6c4009
;! HP-PA  __mpn_rshift --
Packit 6c4009
Packit 6c4009
;! Copyright (C) 1992-2018 Free Software Foundation, Inc.
Packit 6c4009
Packit 6c4009
;! This file is part of the GNU MP Library.
Packit 6c4009
Packit 6c4009
;! The GNU MP Library is free software; you can redistribute it and/or modify
Packit 6c4009
;! it under the terms of the GNU Lesser General Public License as published by
Packit 6c4009
;! the Free Software Foundation; either version 2.1 of the License, or (at your
Packit 6c4009
;! option) any later version.
Packit 6c4009
Packit 6c4009
;! The GNU MP Library is distributed in the hope that it will be useful, but
Packit 6c4009
;! WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
Packit 6c4009
;! or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
Packit 6c4009
;! License for more details.
Packit 6c4009
Packit 6c4009
;! You should have received a copy of the GNU Lesser General Public License
Packit 6c4009
;! along with the GNU MP Library.  If not, see
Packit 6c4009
;! <http://www.gnu.org/licenses/>.
Packit 6c4009
Packit 6c4009
Packit 6c4009
;! INPUT PARAMETERS
Packit 6c4009
;! res_ptr	gr26
Packit 6c4009
;! s_ptr	gr25
Packit 6c4009
;! size		gr24
Packit 6c4009
;! cnt		gr23
Packit 6c4009
Packit 6c4009
	.text
Packit 6c4009
	.export		__mpn_rshift
Packit 6c4009
__mpn_rshift:
Packit 6c4009
	.proc
Packit 6c4009
	.callinfo	frame=64,no_calls
Packit 6c4009
	.entry
Packit 6c4009
Packit 6c4009
	ldws,ma		4(%r25),%r22
Packit 6c4009
	mtsar		%r23
Packit 6c4009
	addib,=		-1,%r24,L$0004
Packit 6c4009
	vshd		%r22,%r0,%r28		;! compute carry out limb
Packit 6c4009
	ldws,ma		4(%r25),%r29
Packit 6c4009
	addib,=		-1,%r24,L$0002
Packit 6c4009
	vshd		%r29,%r22,%r20
Packit 6c4009
Packit 6c4009
L$loop:	ldws,ma		4(%r25),%r22
Packit 6c4009
	stws,ma		%r20,4(%r26)
Packit 6c4009
	addib,=		-1,%r24,L$0003
Packit 6c4009
	vshd		%r22,%r29,%r20
Packit 6c4009
	ldws,ma		4(%r25),%r29
Packit 6c4009
	stws,ma		%r20,4(%r26)
Packit 6c4009
	addib,<>	-1,%r24,L$loop
Packit 6c4009
	vshd		%r29,%r22,%r20
Packit 6c4009
Packit 6c4009
L$0002:	stws,ma		%r20,4(%r26)
Packit 6c4009
	vshd		%r0,%r29,%r20
Packit 6c4009
	bv		0(%r2)
Packit 6c4009
	stw		%r20,0(%r26)
Packit 6c4009
L$0003:	stws,ma		%r20,4(%r26)
Packit 6c4009
L$0004:	vshd		%r0,%r22,%r20
Packit 6c4009
	bv		0(%r2)
Packit 6c4009
	stw		%r20,0(%r26)
Packit 6c4009
Packit 6c4009
	.exit
Packit 6c4009
	.procend