[toolchain/gcc/4.3.5]: additional avr32 fixes
[openwrt.git] / toolchain / gcc / patches / 4.3.5 / 942-avr32_fix_32bit_div.patch
1 --- a/gcc/config/avr32/lib1funcs.S
2 +++ b/gcc/config/avr32/lib1funcs.S
3 @@ -2257,10 +2257,13 @@ __avr32_f32_div:
4
5 /* Unpack */
6 lsl r12,1
7 - reteq 0 /* Return zero if op1 is zero */
8 lsl r11,1
9 breq 4f /* Check op2 for zero */
10 -
11 +
12 + tst r12, r12
13 + moveq r9, 0
14 + breq 12
15 +
16 /* Unpack op1*/
17 /* exp: r9 */
18 /* sf: r12 */
19 @@ -2279,9 +2282,14 @@ __avr32_f32_div:
20 breq 13f /*If number is subnormal*/
21 cp r10, 0xff
22 brhs 3f /* Check op2 for NaN or Inf */
23 -
24 lsl r11,7
25 sbr r11, 31 /*Implicit bit*/
26 +
27 + cp.w r9, 0
28 + subfeq r12, 0
29 + reteq 0 /* op1 is zero and op2 is not zero */
30 + /* or NaN so return zero */
31 +
32 14:
33
34 /* For UC3, store with predecrement is faster than stm */
This page took 0.04632 seconds and 5 git commands to generate.