⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mul_1.s

📁 Glibc 2.3.2源代码(解压后有100多M)
💻 S
字号:
/* SPARC v9 __mpn_mul_1 -- Multiply a limb vector with a single limb and   store the product in a second limb vector.   Copyright (C) 1995, 1996 Free Software Foundation, Inc.   This file is part of the GNU MP Library.   The GNU MP Library is free software; you can redistribute it and/or modify   it under the terms of the GNU Lesser General Public License as published by   the Free Software Foundation; either version 2.1 of the License, or (at your   option) any later version.   The GNU MP Library is distributed in the hope that it will be useful, but   WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public   License for more details.   You should have received a copy of the GNU Lesser General Public License   along with the GNU MP Library; see the file COPYING.LIB.  If not, write to   the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,   MA 02111-1307, USA.  */#include <sysdep.h>/* INPUT PARAMETERS   res_ptr	o0   s1_ptr	o1   size		o2   s2_limb	o3  */ENTRY(__mpn_mul_1)	!#PROLOGUE#	0	save	%sp,-192,%sp	!#PROLOGUE#	1	sub	%g0,%i2,%o7	sllx	%o7,3,%g5	sub	%i1,%g5,%o3	sub	%i0,%g5,%o4	mov	0,%o0			! zero cy_limb	srl	%i3,0,%o1		! extract low 32 bits of s2_limb	srlx	%i3,32,%i3		! extract high 32 bits of s2_limb	mov	1,%o2	sllx	%o2,32,%o2		! o2 = 0x100000000	!   hi   !             !  mid-1 !             !  mid-2 !		 !   lo   !.Loop:	sllx	%o7,3,%g1	ldx	[%o3+%g1],%g5	srl	%g5,0,%i0		! zero hi bits	srlx	%g5,32,%g5	mulx	%o1,%i0,%i4		! lo product	mulx	%i3,%i0,%i1		! mid-1 product	mulx	%o1,%g5,%l2		! mid-2 product	mulx	%i3,%g5,%i5		! hi product	srlx	%i4,32,%i0		! extract high 32 bits of lo product...	add	%i1,%i0,%i1		! ...and add it to the mid-1 product	addcc	%i1,%l2,%i1		! add mid products	mov	0,%l0			! we need the carry from that add...	movcs	%xcc,%o2,%l0		! ...compute it and...	add	%i5,%l0,%i5		! ...add to bit 32 of the hi product	sllx	%i1,32,%i0		! align low bits of mid product	srl	%i4,0,%g5		! zero high 32 bits of lo product	add	%i0,%g5,%i0		! combine into low 64 bits of result	srlx	%i1,32,%i1		! extract high bits of mid product...	add	%i5,%i1,%i1		! ...and add them to the high result	addcc	%i0,%o0,%i0		! add cy_limb to low 64 bits of result	mov	0,%g5	movcs	%xcc,1,%g5	addcc	%o7,1,%o7	stx	%i0,[%o4+%g1]	bne,pt	%xcc,.Loop	 add	%i1,%g5,%o0		! compute new cy_limb	jmpl	%i7+8,%g0	 restore %o0,%g0,%o0END(__mpn_mul_1)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -