148 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			148 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
.global mli4
 | 
						|
.global mlu4
 | 
						|
 | 
						|
mli4:
 | 
						|
	mov	%o0, %y
 | 
						|
	andncc	%o0, 0xfff, %g0
 | 
						|
	bn	mul_shortway1
 | 
						|
	nop
 | 
						|
	andcc	%g0, %g0, %o4
 | 
						|
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %g0, %o4
 | 
						|
 | 
						|
	tst	%o0
 | 
						|
	rd	%y, %o0
 | 
						|
	bge	1f
 | 
						|
	tst	%o0
 | 
						|
	sub	%o4, %o1, %o4
 | 
						|
1:	retl
 | 
						|
	mov	%o4, %o1
 | 
						|
 | 
						|
mul_shortway1:
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %g0, %o4
 | 
						|
 | 
						|
	rd	%y, %o5
 | 
						|
	sll	%o4, 12, %o0
 | 
						|
	srl	%o5, 20, %o5
 | 
						|
 | 
						|
	or	%o5, %o4, %o0
 | 
						|
	retl
 | 
						|
	mov	%o4, %o1
 | 
						|
 | 
						|
mlu4:
 | 
						|
	or	%o0, %o1, %o4
 | 
						|
	mov	%o0, %y
 | 
						|
	andncc	%o4, 0xfff, %o5
 | 
						|
	bn	mul_shortway2
 | 
						|
	andcc	%g0, %g0, %o4
 | 
						|
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %g0, %o4
 | 
						|
 | 
						|
	tst	%o0
 | 
						|
	bge	1f
 | 
						|
	nop
 | 
						|
	add	%o4, %o0, %o4
 | 
						|
1:
 | 
						|
	rd	%y, %o0
 | 
						|
	retl
 | 
						|
	addcc	%o4, %g0, %o1
 | 
						|
 | 
						|
mul_shortway2:
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %o1, %o4
 | 
						|
	mulscc	%o4, %g0, %o4
 | 
						|
 | 
						|
	rd	%y, %o5
 | 
						|
	sll	%o4, 12, %o0
 | 
						|
	srl	%o5, 20, %o5
 | 
						|
 | 
						|
	or	%o5, %o4, %o0
 | 
						|
	retl
 | 
						|
	addcc	%g0, %g0, %o1
 | 
						|
 |