62 lines
		
	
	
	
		
			714 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
	
		
			714 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| .global cfu4, cfu8
 | |
| 
 | |
| .align 8
 | |
| Fdmaxint:
 | |
| .double 0r2147483648
 | |
| Fsmaxint:
 | |
| .single 0r2147483648
 | |
| maxint:
 | |
| .word	0x80000000
 | |
| 
 | |
| cfu4:
 | |
| 	ld	[%l0], %f0
 | |
| 	set	Fsmaxint, %o0
 | |
| 	ld	[%o0], %f1
 | |
| 	fcmps	%f0, %f1
 | |
| 	nop
 | |
| 	fbul	1f
 | |
| 	nop
 | |
| 	fsubs	%f0, %f1, %f0
 | |
| 	fstoi	%f0, %f1
 | |
| 	st	%f1,[%l0]
 | |
| 	ld	[%l0],%o0
 | |
| 	set	maxint, %o1
 | |
| 	ld	[%o1],%o2
 | |
| 	add	%o0, %o2, %o0
 | |
| 	ba	2f
 | |
| 	nop
 | |
| 1:
 | |
| 	fstoi	%f0, %f1
 | |
| 	st	%f1,[%l0]
 | |
| 	ld	[%l0],%o0
 | |
| 2:
 | |
| 	inc	4,%l0
 | |
| 	retl
 | |
| 	nop
 | |
| 
 | |
| cfu8:
 | |
| 	ld	[%l0], %f0
 | |
| 	ld	[%l0+4], %f1
 | |
| 	set	Fdmaxint, %o0
 | |
| 	ldd	[%o0], %f2
 | |
| 	fcmpd	%f0, %f2
 | |
| 	nop
 | |
| 	fbul	1f
 | |
| 	nop
 | |
| 	fsubd	%f0, %f2, %f0
 | |
| 	fdtoi	%f0, %f2
 | |
| 	st	%f2,[%l0]
 | |
| 	ld	[%l0],%o0
 | |
| 	set	maxint, %o1
 | |
| 	ld	[%o1],%o2
 | |
| 	add	%o0, %o2, %o0
 | |
| 	ba	2f
 | |
| 	nop
 | |
| 1:
 | |
| 	fdtoi	%f0, %f2
 | |
| 	st	%f2,[%l0]
 | |
| 	ld	[%l0],%o0
 | |
| 2:
 | |
| 	inc	8,%l0
 | |
| 	retl
 | |
| 	nop
 |