aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Earnshaw <rearnsha@gcc.gnu.org>2003-09-30 10:21:41 +0000
committerRichard Earnshaw <rearnsha@gcc.gnu.org>2003-09-30 10:21:41 +0000
commit47edf59e900f8d4efeac373f8b6b18f306ecf375 (patch)
tree398517a90fb195dc2deb90e1ac0e3293a4271e22 /gcc
parentec2a60b0c4664b30befdbb7dca0c4894a51ab1aa (diff)
downloadgcc-47edf59e900f8d4efeac373f8b6b18f306ecf375.zip
gcc-47edf59e900f8d4efeac373f8b6b18f306ecf375.tar.gz
gcc-47edf59e900f8d4efeac373f8b6b18f306ecf375.tar.bz2
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/config/arm/ieee754-df.S24
-rw-r--r--gcc/config/arm/t-arm-elf2
3 files changed, 25 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b4d0f4d..cb96868 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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'.
diff --git a/gcc/config/arm/ieee754-df.S b/gcc/config/arm/ieee754-df.S
index 2d5f487..b04d3df 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 1b8f719..3f48f8b 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