diff options
author | rearnsha <rearnsha@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-09-30 10:21:41 +0000 |
---|---|---|
committer | rearnsha <rearnsha@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-09-30 10:21:41 +0000 |
commit | c3bea1aec572ef4f4ec33b28cf759ff65613c214 (patch) | |
tree | 398517a90fb195dc2deb90e1ac0e3293a4271e22 /gcc/config/arm | |
parent | 3b9ee544a9cb1bb029c03cacf9d363e8f7733dfb (diff) | |
download | gcc-c3bea1aec572ef4f4ec33b28cf759ff65613c214.tar.gz |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@71939 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/arm')
-rw-r--r-- | gcc/config/arm/ieee754-df.S | 24 | ||||
-rw-r--r-- | gcc/config/arm/t-arm-elf | 2 |
2 files changed, 18 insertions, 8 deletions
diff --git a/gcc/config/arm/ieee754-df.S b/gcc/config/arm/ieee754-df.S index 2d5f487ff60..b04d3dfb5bf 100644 --- a/gcc/config/arm/ieee754-df.S +++ b/gcc/config/arm/ieee754-df.S @@ -1086,6 +1086,10 @@ ARM_FUNC_START fixdfsi FUNC_END fixdfsi +#endif /* L_fixdfsi */ + +#ifdef L_fixunsdfsi + ARM_FUNC_START fixunsdfsi orrs ip, xl, xh, lsl #1 movcss r0, #0 @ value is negative @@ -1096,13 +1100,13 @@ ARM_FUNC_START fixunsdfsi orr ip, ip, #0x00f00000 and r2, xh, ip teq r2, ip - beq 1f @ value is INF or NAN + beq 2f @ value is INF or NAN bic ip, ip, #0x40000000 cmp r2, ip - bcc 1b @ value is too small + bcc 1f @ value is too small add ip, ip, #(31 << 20) cmp r2, ip - bhi 2f @ value is too large + bhi 3f @ value is too large rsb r2, r2, ip mov ip, xh, lsl #11 @@ -1112,14 +1116,20 @@ ARM_FUNC_START fixunsdfsi mov r0, ip, lsr r2 RET -1: orrs xl, xl, xh, lsl #12 - bne 4b @ value is NAN. -2: mov r0, #0xffffffff @ maximum unsigned si +1: mov r0, #0 + RET + +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 FUNC_END fixunsdfsi -#endif /* L_fixunsdfdi */ +#endif /* L_fixunsdfsi */ #ifdef L_truncdfsf2 diff --git a/gcc/config/arm/t-arm-elf b/gcc/config/arm/t-arm-elf index 1b8f719b949..3f48f8b81e9 100644 --- a/gcc/config/arm/t-arm-elf +++ b/gcc/config/arm/t-arm-elf @@ -1,7 +1,7 @@ LIB1ASMSRC = arm/lib1funcs.asm LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _bb_init_func \ _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 \ _fixsfsi _fixunssfsi |