| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 | /* Round argument to nearest integer value. SH4 version. * According to ISO/IEC 9899:1999. This version doesn't handle range error. * If arg is not finite or if the result cannot be represented into a long, * return an unspecified value. No exception raised. * * Copyright (C) 2010 STMicroelectronics Ltd. * * Author: Christian Bruel <christian.bruel@st.com> * * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. */#include <sysdep.h>ENTRY(lrintf)	mov	#0,r0	sts	fpscr,r3	lds	r0,fpscr	flds	fr5,fpul	mov.l	LOCAL(mask),r1	sts	fpul,r2	and	r2,r1	mov.l	LOCAL(midway),r2	or	r1,r2	lds	r2,fpul	fsts	fpul,fr2	fadd	fr2,fr5	ftrc	fr5,fpul	sts	fpul,r0	float	fpul,fr2	fcmp/eq	fr5,fr2	bf/s	0f	mov	#1,r2	tst	r1,r1	and	r0,r2	movt	r1	shal	r1	tst	r2,r2	add	#-1,r1	bt	0f	sub	r1,r00:	rts	lds	r3,fpscr	.align 2LOCAL(mask):	.long	0x80000000LOCAL(midway):	.long	1056964608END(lrintf)
 |