windows-nt/Source/XPSP1/NT/base/crts/fpw32/tran/ia64/frnd.s

55 lines
761 B
ArmAsm
Raw Normal View History

2020-09-26 03:20:57 -05:00
.file "frnd.s"
.section .text
.proc _frnd#
.align 32
.global _frnd#
.align 32
_frnd:
// CONVERT BEGINS HERE WITH ARGUMENT IN f8
{ .mmi
// save the old fpsr in r2
mov r2=ar40;;
mov r3=r2
nop.i 0
} { .mlx
nop.m 0
movl r8=0x02000;;
} { .mmi
// clear sf0.V bit in r3
andcm r3=r3,r8;;
// set traps.PDV
or r3=0x23,r3
nop.i 0;;
} { .mib
mov ar40=r3
nop.i 0
nop.b 0;;
} { .mfi
nop.m 0
fcvt.fx.s0 f7=f8
nop.i 0;;
} { .mmi
mov r3=ar40;;
nop.m 0
// examine the sf0.V bit (p6 = 1 if sf0.V set)
tbit.z p6,p7=r3,0x0d;;
} { .mfb
nop.m 0
(p6) fcvt.xf f8=f7
nop.b 0;;
}
// CONVERT ENDS HERE WITH RESULT IN f8
done:
{ .mmb
mov ar40=r2
// store result
nop.m 0
// return
br.ret.sptk b0;;
}
.endp _frnd