1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
--- gcc-4.1.2/gcc/config/arm/ieee754-df-original.S 2007-06-25 10:22:06.000000000 +1000
+++ gcc-4.1.2/gcc/config/arm/ieee754-df.S 2007-06-25 10:27:17.000000000 +1000
@@ -717,6 +717,10 @@
cmn r4, #(53 + 1)
movle xl, #0
bicle xh, xh, #0x7fffffff
+#ifdef __MAVERICK__
+ cfmvdlr mvd0, xl
+ cfmvdhr mvd0, xh
+#endif
RETLDM "r4, r5, r6" le
@ Find out proper shift value.
@@ -738,6 +742,10 @@
adc xh, r2, xh, lsr r4
orrs lr, lr, r3, lsl #1
biceq xl, xl, r3, lsr #31
+#ifdef __MAVERICK__
+ cfmvdlr mvd0, xl
+ cfmvdhr mvd0, xh
+#endif
RETLDM "r4, r5, r6"
@ shift result right of 21 to 31 bits, or left 11 to 1 bits after
@@ -752,6 +760,10 @@
adc xh, xh, #0
orrs lr, lr, r3, lsl #1
biceq xl, xl, r3, lsr #31
+#ifdef __MAVERICK__
+ cfmvdlr mvd0, xl
+ cfmvdhr mvd0, xh
+#endif
RETLDM "r4, r5, r6"
@ Shift value right of 32 to 64 bits, or 0 to 32 bits after a switch
@@ -766,6 +778,10 @@
add xl, xl, r3, lsr #31
orrs lr, lr, r3, lsl #1
biceq xl, xl, r3, lsr #31
+#ifdef __MAVERICK__
+ cfmvdlr mvd0, xl
+ cfmvdhr mvd0, xh
+#endif
RETLDM "r4, r5, r6"
@ One or both arguments are denormalized.
@@ -808,6 +824,10 @@
eor xh, xh, yh
bic xh, xh, #0x7fffffff
mov xl, #0
+#ifdef __MAVERICK__
+ cfmvdlr mvd0, xl
+ cfmvdhr mvd0, xh
+#endif
RETLDM "r4, r5, r6"
1: @ One or both args are INF or NAN.
@@ -837,12 +857,20 @@
orr xh, xh, #0x7f000000
orr xh, xh, #0x00f00000
mov xl, #0
+#ifdef __MAVERICK__
+ cfmvdlr mvd0, xl
+ cfmvdhr mvd0, xh
+#endif
RETLDM "r4, r5, r6"
@ Return a quiet NAN.
LSYM(Lml_n):
orr xh, xh, #0x7f000000
orr xh, xh, #0x00f80000
+#ifdef __MAVERICK__
+ cfmvdlr mvd0, xl
+ cfmvdhr mvd0, xh
+#endif
RETLDM "r4, r5, r6"
FUNC_END aeabi_dmul
--- gcc-4.1.2/gcc/config/arm/ieee754-sf-original.S 2007-06-25 10:18:52.000000000 +1000
+++ gcc-4.1.2/gcc/config/arm/ieee754-sf.S 2007-06-25 10:40:25.000000000 +1000
@@ -518,6 +518,9 @@
@ Check if denormalized result is possible, otherwise return signed 0.
cmn r2, #(24 + 1)
bicle r0, r0, #0x7fffffff
+#ifdef __MAVERICK__
+ cfmvsr mvf0, r0
+#endif
RETc(le)
@ Shift value right, round, etc.
@@ -530,6 +533,9 @@
adc r0, r0, #0
orrs r3, r3, ip, lsl #1
biceq r0, r0, ip, lsr #31
+#ifdef __MAVERICK__
+ cfmvsr mvf0, r0
+#endif
RET
@ One or both arguments are denormalized.
@@ -567,6 +573,9 @@
LSYM(Lml_z):
eor r0, r0, r1
bic r0, r0, #0x7fffffff
+#ifdef __MAVERICK__
+ cfmvsr mvf0, r0
+#endif
RET
1: @ One or both args are INF or NAN.
@@ -595,12 +604,18 @@
and r0, r0, #0x80000000
orr r0, r0, #0x7f000000
orr r0, r0, #0x00800000
+#ifdef __MAVERICK__
+ cfmvsr mvf0, r0
+#endif
RET
@ Return a quiet NAN.
LSYM(Lml_n):
orr r0, r0, #0x7f000000
orr r0, r0, #0x00c00000
+#ifdef __MAVERICK__
+ cfmvsr mvf0, r0
+#endif
RET
FUNC_END aeabi_fmul
@@ -677,6 +692,9 @@
adds r2, r2, #127
rsbgts r3, r2, #255
orrgt r0, r0, r2, lsl #23
+#ifdef __MAVERICK__
+ cfmvsr mvf0, r0
+#endif
RETc(gt)
orr r0, r0, #0x00800000
|