Nicolas Pitre <nico@cam.org>

Nicolas Pitre <nico@cam.org>
* arm/ieee754-df.S: split compilation of fixunsdfsi from
L_fixdfsi target.
* arm/t-arm-elf: add _fixunsdfsi target due to the above.

From-SVN: r71939
This commit is contained in:
Richard Earnshaw 2003-09-30 10:21:41 +00:00
parent ec2a60b0c4
commit 47edf59e90
3 changed files with 25 additions and 9 deletions

View File

@ -1,4 +1,10 @@
2003-09-80 Nathanael Nerode <neroden@gcc.gnu.org> 2003-09-30 Nicolas Pitre <nico@cam.org>
* arm/ieee754-df.S: split compilation of fixunsdfsi from
L_fixdfsi target.
* arm/t-arm-elf: add _fixunsdfsi target due to the above.
2003-09-30 Nathanael Nerode <neroden@gcc.gnu.org>
* config.gcc: Default use_fixproto to 'no'. * config.gcc: Default use_fixproto to 'no'.

View File

@ -1086,6 +1086,10 @@ ARM_FUNC_START fixdfsi
FUNC_END fixdfsi FUNC_END fixdfsi
#endif /* L_fixdfsi */
#ifdef L_fixunsdfsi
ARM_FUNC_START fixunsdfsi ARM_FUNC_START fixunsdfsi
orrs ip, xl, xh, lsl #1 orrs ip, xl, xh, lsl #1
movcss r0, #0 @ value is negative movcss r0, #0 @ value is negative
@ -1096,13 +1100,13 @@ ARM_FUNC_START fixunsdfsi
orr ip, ip, #0x00f00000 orr ip, ip, #0x00f00000
and r2, xh, ip and r2, xh, ip
teq r2, ip teq r2, ip
beq 1f @ value is INF or NAN beq 2f @ value is INF or NAN
bic ip, ip, #0x40000000 bic ip, ip, #0x40000000
cmp r2, ip cmp r2, ip
bcc 1b @ value is too small bcc 1f @ value is too small
add ip, ip, #(31 << 20) add ip, ip, #(31 << 20)
cmp r2, ip cmp r2, ip
bhi 2f @ value is too large bhi 3f @ value is too large
rsb r2, r2, ip rsb r2, r2, ip
mov ip, xh, lsl #11 mov ip, xh, lsl #11
@ -1112,14 +1116,20 @@ ARM_FUNC_START fixunsdfsi
mov r0, ip, lsr r2 mov r0, ip, lsr r2
RET RET
1: orrs xl, xl, xh, lsl #12 1: mov r0, #0
bne 4b @ value is NAN. RET
2: mov r0, #0xffffffff @ maximum unsigned si
2: orrs xl, xl, xh, lsl #12
bne 4f @ value is NAN.
3: mov r0, #0xffffffff @ maximum unsigned si
RET
4: mov r0, #0 @ How should we convert NAN?
RET RET
FUNC_END fixunsdfsi FUNC_END fixunsdfsi
#endif /* L_fixunsdfdi */ #endif /* L_fixunsdfsi */
#ifdef L_truncdfsf2 #ifdef L_truncdfsf2

View File

@ -1,7 +1,7 @@
LIB1ASMSRC = arm/lib1funcs.asm LIB1ASMSRC = arm/lib1funcs.asm
LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _bb_init_func \ LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _bb_init_func \
_call_via_rX _interwork_call_via_rX \ _call_via_rX _interwork_call_via_rX \
_negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi \ _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \
_truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \ _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \
_fixsfsi _fixunssfsi _fixsfsi _fixunssfsi