[at91] add TQMa9263 board setup
[openwrt.git] / toolchain / gcc / patches / 4.3.5 / 943-avr32_fix_f64_cmp.patch
1 --- a/gcc/config/avr32/lib1funcs.S
2 +++ b/gcc/config/avr32/lib1funcs.S
3 @@ -1389,25 +1389,30 @@ __avr32_f64_cmp_lt:
4 #endif
5
6 /* compare magnitude of op1 and op2 */
7 + st.w --sp, lr
8 + st.w --sp, r7
9 lsl r11,1 /* Remove sign bit of op1 */
10 srcs r12 /* Sign op1 to lsb of r12*/
11 - subfeq r10, 0
12 - breq 3f /* op1 zero */
13 lsl r9,1 /* Remove sign bit of op2 */
14 + srcs r7
15 rol r12 /* Sign op2 to lsb of lr, sign bit op1 bit 1 of r12*/
16
17
18 /* Check for Nan */
19 - pushm lr
20 - mov_imm lr, 0xffe00000
21 + mov_imm lr, 0xffe00000
22 cp.w r10,0
23 cpc r11,lr
24 brhi 0f /* We have NaN */
25 cp.w r8,0
26 cpc r9,lr
27 brhi 0f /* We have NaN */
28 - popm lr
29 -
30 +
31 + cp.w r11, 0
32 + subfeq r10, 0
33 + breq 3f /* op1 zero */
34 + ld.w r7, sp++
35 + ld.w lr, sp++
36 +
37 cp.w r12,3 /* both operands negative ?*/
38 breq 1f
39
40 @@ -1453,18 +1458,22 @@ __avr32_f64_cmp_lt:
41 #endif
42
43 0:
44 + ld.w r7, sp++
45 popm pc, r12=0
46 #endif
47
48 3:
49 - lsl r9,1 /* Remove sign bit of op1 */
50 + cp.w r7, 1 /* Check sign bit from r9 */
51 #ifdef L_avr32_f64_cmp_ge
52 - srcs r12 /* If op2 is negative then op1 >= op2. */
53 + sreq r12 /* If op2 is negative then op1 >= op2. */
54 #endif
55 #ifdef L_avr32_f64_cmp_lt
56 - srcc r12 /* If op2 is positve then op1 <= op2. */
57 + srne r12 /* If op2 is positve then op1 <= op2. */
58 #endif
59 - subfeq r8, 0
60 + cp.w r9, 0
61 + subfeq r8, 0
62 + ld.w r7, sp++
63 + ld.w lr, sp++
64 #ifdef L_avr32_f64_cmp_ge
65 reteq 1 /* Both operands are zero. Return true. */
66 #endif
This page took 0.04308 seconds and 5 git commands to generate.