summaryrefslogtreecommitdiff
path: root/asm/MSL_C/MSL_Common_Embedded/Math/e_rem_pio2.s
blob: 0ee9c7c46775401e31cd82bae7fbd799928e439a (plain)
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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
.include "macros.inc"

.section .text, "ax"  # 0x80006980 - 0x803E1E60

.global __ieee754_rem_pio2
__ieee754_rem_pio2:
/* 801D1F40 001CDBA0  94 21 FF A0 */	stwu r1, -0x60(r1)
/* 801D1F44 001CDBA4  7C 08 02 A6 */	mflr r0
/* 801D1F48 001CDBA8  3C 80 3F E9 */	lis r4, 0x3FE921FB@ha
/* 801D1F4C 001CDBAC  90 01 00 64 */	stw r0, 0x64(r1)
/* 801D1F50 001CDBB0  38 04 21 FB */	addi r0, r4, 0x3FE921FB@l
/* 801D1F54 001CDBB4  93 E1 00 5C */	stw r31, 0x5c(r1)
/* 801D1F58 001CDBB8  D8 21 00 08 */	stfd f1, 8(r1)
/* 801D1F5C 001CDBBC  83 E1 00 08 */	lwz r31, 8(r1)
/* 801D1F60 001CDBC0  93 C1 00 58 */	stw r30, 0x58(r1)
/* 801D1F64 001CDBC4  7C 7E 1B 78 */	mr r30, r3
/* 801D1F68 001CDBC8  57 E6 00 7E */	clrlwi r6, r31, 1
/* 801D1F6C 001CDBCC  7C 06 00 00 */	cmpw r6, r0
/* 801D1F70 001CDBD0  41 81 00 18 */	bgt lbl_801D1F88
/* 801D1F74 001CDBD4  C8 02 94 08 */	lfd f0, lbl_80641A08-_SDA2_BASE_(r2)
/* 801D1F78 001CDBD8  D8 23 00 00 */	stfd f1, 0(r3)
/* 801D1F7C 001CDBDC  D8 03 00 08 */	stfd f0, 8(r3)
/* 801D1F80 001CDBE0  38 60 00 00 */	li r3, 0
/* 801D1F84 001CDBE4  48 00 03 3C */	b lbl_801D22C0
lbl_801D1F88:
/* 801D1F88 001CDBE8  3C 80 40 03 */	lis r4, 0x4002D97C@ha
/* 801D1F8C 001CDBEC  38 04 D9 7C */	addi r0, r4, 0x4002D97C@l
/* 801D1F90 001CDBF0  7C 06 00 00 */	cmpw r6, r0
/* 801D1F94 001CDBF4  40 80 00 CC */	bge lbl_801D2060
/* 801D1F98 001CDBF8  2C 1F 00 00 */	cmpwi r31, 0
/* 801D1F9C 001CDBFC  40 81 00 64 */	ble lbl_801D2000
/* 801D1FA0 001CDC00  C8 02 94 10 */	lfd f0, lbl_80641A10-_SDA2_BASE_(r2)
/* 801D1FA4 001CDC04  3C 06 C0 07 */	addis r0, r6, 0xc007
/* 801D1FA8 001CDC08  28 00 21 FB */	cmplwi r0, 0x21fb
/* 801D1FAC 001CDC0C  FC 61 00 28 */	fsub f3, f1, f0
/* 801D1FB0 001CDC10  D8 61 00 10 */	stfd f3, 0x10(r1)
/* 801D1FB4 001CDC14  41 82 00 20 */	beq lbl_801D1FD4
/* 801D1FB8 001CDC18  C8 42 94 18 */	lfd f2, lbl_80641A18-_SDA2_BASE_(r2)
/* 801D1FBC 001CDC1C  FC 23 10 28 */	fsub f1, f3, f2
/* 801D1FC0 001CDC20  FC 03 08 28 */	fsub f0, f3, f1
/* 801D1FC4 001CDC24  D8 23 00 00 */	stfd f1, 0(r3)
/* 801D1FC8 001CDC28  FC 00 10 28 */	fsub f0, f0, f2
/* 801D1FCC 001CDC2C  D8 03 00 08 */	stfd f0, 8(r3)
/* 801D1FD0 001CDC30  48 00 00 28 */	b lbl_801D1FF8
lbl_801D1FD4:
/* 801D1FD4 001CDC34  C8 02 94 20 */	lfd f0, lbl_80641A20-_SDA2_BASE_(r2)
/* 801D1FD8 001CDC38  C8 42 94 28 */	lfd f2, lbl_80641A28-_SDA2_BASE_(r2)
/* 801D1FDC 001CDC3C  FC 03 00 28 */	fsub f0, f3, f0
/* 801D1FE0 001CDC40  FC 20 10 28 */	fsub f1, f0, f2
/* 801D1FE4 001CDC44  D8 01 00 10 */	stfd f0, 0x10(r1)
/* 801D1FE8 001CDC48  FC 00 08 28 */	fsub f0, f0, f1
/* 801D1FEC 001CDC4C  D8 23 00 00 */	stfd f1, 0(r3)
/* 801D1FF0 001CDC50  FC 00 10 28 */	fsub f0, f0, f2
/* 801D1FF4 001CDC54  D8 03 00 08 */	stfd f0, 8(r3)
lbl_801D1FF8:
/* 801D1FF8 001CDC58  38 60 00 01 */	li r3, 1
/* 801D1FFC 001CDC5C  48 00 02 C4 */	b lbl_801D22C0
lbl_801D2000:
/* 801D2000 001CDC60  C8 02 94 10 */	lfd f0, lbl_80641A10-_SDA2_BASE_(r2)
/* 801D2004 001CDC64  3C 06 C0 07 */	addis r0, r6, 0xc007
/* 801D2008 001CDC68  28 00 21 FB */	cmplwi r0, 0x21fb
/* 801D200C 001CDC6C  FC 60 08 2A */	fadd f3, f0, f1
/* 801D2010 001CDC70  D8 61 00 10 */	stfd f3, 0x10(r1)
/* 801D2014 001CDC74  41 82 00 20 */	beq lbl_801D2034
/* 801D2018 001CDC78  C8 42 94 18 */	lfd f2, lbl_80641A18-_SDA2_BASE_(r2)
/* 801D201C 001CDC7C  FC 22 18 2A */	fadd f1, f2, f3
/* 801D2020 001CDC80  FC 03 08 28 */	fsub f0, f3, f1
/* 801D2024 001CDC84  D8 23 00 00 */	stfd f1, 0(r3)
/* 801D2028 001CDC88  FC 02 00 2A */	fadd f0, f2, f0
/* 801D202C 001CDC8C  D8 03 00 08 */	stfd f0, 8(r3)
/* 801D2030 001CDC90  48 00 00 28 */	b lbl_801D2058
lbl_801D2034:
/* 801D2034 001CDC94  C8 02 94 20 */	lfd f0, lbl_80641A20-_SDA2_BASE_(r2)
/* 801D2038 001CDC98  C8 42 94 28 */	lfd f2, lbl_80641A28-_SDA2_BASE_(r2)
/* 801D203C 001CDC9C  FC 03 00 2A */	fadd f0, f3, f0
/* 801D2040 001CDCA0  FC 22 00 2A */	fadd f1, f2, f0
/* 801D2044 001CDCA4  D8 01 00 10 */	stfd f0, 0x10(r1)
/* 801D2048 001CDCA8  FC 00 08 28 */	fsub f0, f0, f1
/* 801D204C 001CDCAC  D8 23 00 00 */	stfd f1, 0(r3)
/* 801D2050 001CDCB0  FC 02 00 2A */	fadd f0, f2, f0
/* 801D2054 001CDCB4  D8 03 00 08 */	stfd f0, 8(r3)
lbl_801D2058:
/* 801D2058 001CDCB8  38 60 FF FF */	li r3, -1
/* 801D205C 001CDCBC  48 00 02 64 */	b lbl_801D22C0
lbl_801D2060:
/* 801D2060 001CDCC0  3C 80 41 39 */	lis r4, 0x413921FB@ha
/* 801D2064 001CDCC4  38 04 21 FB */	addi r0, r4, 0x413921FB@l
/* 801D2068 001CDCC8  7C 06 00 00 */	cmpw r6, r0
/* 801D206C 001CDCCC  41 81 01 48 */	bgt lbl_801D21B4
/* 801D2070 001CDCD0  FC A0 0A 10 */	fabs f5, f1
/* 801D2074 001CDCD4  C8 02 94 38 */	lfd f0, lbl_80641A38-_SDA2_BASE_(r2)
/* 801D2078 001CDCD8  3C 00 43 30 */	lis r0, 0x4330
/* 801D207C 001CDCDC  C8 42 94 30 */	lfd f2, lbl_80641A30-_SDA2_BASE_(r2)
/* 801D2080 001CDCE0  90 01 00 38 */	stw r0, 0x38(r1)
/* 801D2084 001CDCE4  FC 80 01 72 */	fmul f4, f0, f5
/* 801D2088 001CDCE8  C8 62 94 58 */	lfd f3, lbl_80641A58-_SDA2_BASE_(r2)
/* 801D208C 001CDCEC  C8 22 94 10 */	lfd f1, lbl_80641A10-_SDA2_BASE_(r2)
/* 801D2090 001CDCF0  C8 02 94 18 */	lfd f0, lbl_80641A18-_SDA2_BASE_(r2)
/* 801D2094 001CDCF4  FC 42 20 2A */	fadd f2, f2, f4
/* 801D2098 001CDCF8  FC 40 10 1E */	fctiwz f2, f2
/* 801D209C 001CDCFC  D8 41 00 30 */	stfd f2, 0x30(r1)
/* 801D20A0 001CDD00  80 A1 00 34 */	lwz r5, 0x34(r1)
/* 801D20A4 001CDD04  6C A0 80 00 */	xoris r0, r5, 0x8000
/* 801D20A8 001CDD08  2C 05 00 20 */	cmpwi r5, 0x20
/* 801D20AC 001CDD0C  90 01 00 3C */	stw r0, 0x3c(r1)
/* 801D20B0 001CDD10  C8 41 00 38 */	lfd f2, 0x38(r1)
/* 801D20B4 001CDD14  FC C2 18 28 */	fsub f6, f2, f3
/* 801D20B8 001CDD18  FC 21 01 B2 */	fmul f1, f1, f6
/* 801D20BC 001CDD1C  FC 40 01 B2 */	fmul f2, f0, f6
/* 801D20C0 001CDD20  FC 85 08 28 */	fsub f4, f5, f1
/* 801D20C4 001CDD24  40 80 00 2C */	bge lbl_801D20F0
/* 801D20C8 001CDD28  38 05 FF FF */	addi r0, r5, -1
/* 801D20CC 001CDD2C  3C 80 80 40 */	lis r4, lbl_803FD470@ha
/* 801D20D0 001CDD30  54 00 10 3A */	slwi r0, r0, 2
/* 801D20D4 001CDD34  38 84 D4 70 */	addi r4, r4, lbl_803FD470@l
/* 801D20D8 001CDD38  7C 04 00 2E */	lwzx r0, r4, r0
/* 801D20DC 001CDD3C  7C 06 00 00 */	cmpw r6, r0
/* 801D20E0 001CDD40  41 82 00 10 */	beq lbl_801D20F0
/* 801D20E4 001CDD44  FC 04 10 28 */	fsub f0, f4, f2
/* 801D20E8 001CDD48  D8 03 00 00 */	stfd f0, 0(r3)
/* 801D20EC 001CDD4C  48 00 00 90 */	b lbl_801D217C
lbl_801D20F0:
/* 801D20F0 001CDD50  FC 04 10 28 */	fsub f0, f4, f2
/* 801D20F4 001CDD54  7C C4 A6 70 */	srawi r4, r6, 0x14
/* 801D20F8 001CDD58  D8 03 00 00 */	stfd f0, 0(r3)
/* 801D20FC 001CDD5C  80 03 00 00 */	lwz r0, 0(r3)
/* 801D2100 001CDD60  54 00 65 7E */	rlwinm r0, r0, 0xc, 0x15, 0x1f
/* 801D2104 001CDD64  7C 00 20 50 */	subf r0, r0, r4
/* 801D2108 001CDD68  2C 00 00 10 */	cmpwi r0, 0x10
/* 801D210C 001CDD6C  40 81 00 70 */	ble lbl_801D217C
/* 801D2110 001CDD70  C8 22 94 20 */	lfd f1, lbl_80641A20-_SDA2_BASE_(r2)
/* 801D2114 001CDD74  FC 40 20 90 */	fmr f2, f4
/* 801D2118 001CDD78  C8 02 94 28 */	lfd f0, lbl_80641A28-_SDA2_BASE_(r2)
/* 801D211C 001CDD7C  FC 61 01 B2 */	fmul f3, f1, f6
/* 801D2120 001CDD80  FC 20 01 B2 */	fmul f1, f0, f6
/* 801D2124 001CDD84  FC 84 18 28 */	fsub f4, f4, f3
/* 801D2128 001CDD88  FC 02 20 28 */	fsub f0, f2, f4
/* 801D212C 001CDD8C  FC 00 18 28 */	fsub f0, f0, f3
/* 801D2130 001CDD90  FC 41 00 28 */	fsub f2, f1, f0
/* 801D2134 001CDD94  FC 04 10 28 */	fsub f0, f4, f2
/* 801D2138 001CDD98  D8 03 00 00 */	stfd f0, 0(r3)
/* 801D213C 001CDD9C  80 03 00 00 */	lwz r0, 0(r3)
/* 801D2140 001CDDA0  54 00 65 7E */	rlwinm r0, r0, 0xc, 0x15, 0x1f
/* 801D2144 001CDDA4  7C 00 20 50 */	subf r0, r0, r4
/* 801D2148 001CDDA8  2C 00 00 31 */	cmpwi r0, 0x31
/* 801D214C 001CDDAC  40 81 00 30 */	ble lbl_801D217C
/* 801D2150 001CDDB0  C8 22 94 40 */	lfd f1, lbl_80641A40-_SDA2_BASE_(r2)
/* 801D2154 001CDDB4  FC 40 20 90 */	fmr f2, f4
/* 801D2158 001CDDB8  C8 02 94 48 */	lfd f0, lbl_80641A48-_SDA2_BASE_(r2)
/* 801D215C 001CDDBC  FC 61 01 B2 */	fmul f3, f1, f6
/* 801D2160 001CDDC0  FC 20 01 B2 */	fmul f1, f0, f6
/* 801D2164 001CDDC4  FC 84 18 28 */	fsub f4, f4, f3
/* 801D2168 001CDDC8  FC 02 20 28 */	fsub f0, f2, f4
/* 801D216C 001CDDCC  FC 00 18 28 */	fsub f0, f0, f3
/* 801D2170 001CDDD0  FC 41 00 28 */	fsub f2, f1, f0
/* 801D2174 001CDDD4  FC 04 10 28 */	fsub f0, f4, f2
/* 801D2178 001CDDD8  D8 03 00 00 */	stfd f0, 0(r3)
lbl_801D217C:
/* 801D217C 001CDDDC  C8 23 00 00 */	lfd f1, 0(r3)
/* 801D2180 001CDDE0  2C 1F 00 00 */	cmpwi r31, 0
/* 801D2184 001CDDE4  FC 04 08 28 */	fsub f0, f4, f1
/* 801D2188 001CDDE8  FC 00 10 28 */	fsub f0, f0, f2
/* 801D218C 001CDDEC  D8 03 00 08 */	stfd f0, 8(r3)
/* 801D2190 001CDDF0  40 80 00 1C */	bge lbl_801D21AC
/* 801D2194 001CDDF4  FC 20 08 50 */	fneg f1, f1
/* 801D2198 001CDDF8  FC 00 00 50 */	fneg f0, f0
/* 801D219C 001CDDFC  D8 23 00 00 */	stfd f1, 0(r3)
/* 801D21A0 001CDE00  D8 03 00 08 */	stfd f0, 8(r3)
/* 801D21A4 001CDE04  7C 65 00 D0 */	neg r3, r5
/* 801D21A8 001CDE08  48 00 01 18 */	b lbl_801D22C0
lbl_801D21AC:
/* 801D21AC 001CDE0C  7C A3 2B 78 */	mr r3, r5
/* 801D21B0 001CDE10  48 00 01 10 */	b lbl_801D22C0
lbl_801D21B4:
/* 801D21B4 001CDE14  3C 00 7F F0 */	lis r0, 0x7ff0
/* 801D21B8 001CDE18  7C 06 00 00 */	cmpw r6, r0
/* 801D21BC 001CDE1C  41 80 00 18 */	blt lbl_801D21D4
/* 801D21C0 001CDE20  FC 01 08 28 */	fsub f0, f1, f1
/* 801D21C4 001CDE24  D8 03 00 08 */	stfd f0, 8(r3)
/* 801D21C8 001CDE28  D8 03 00 00 */	stfd f0, 0(r3)
/* 801D21CC 001CDE2C  38 60 00 00 */	li r3, 0
/* 801D21D0 001CDE30  48 00 00 F0 */	b lbl_801D22C0
lbl_801D21D4:
/* 801D21D4 001CDE34  7C C3 A6 70 */	srawi r3, r6, 0x14
/* 801D21D8 001CDE38  3C 00 43 30 */	lis r0, 0x4330
/* 801D21DC 001CDE3C  38 A3 FB EA */	addi r5, r3, -1046
/* 801D21E0 001CDE40  80 81 00 0C */	lwz r4, 0xc(r1)
/* 801D21E4 001CDE44  54 A3 A0 16 */	slwi r3, r5, 0x14
/* 801D21E8 001CDE48  90 01 00 30 */	stw r0, 0x30(r1)
/* 801D21EC 001CDE4C  7C 63 30 50 */	subf r3, r3, r6
/* 801D21F0 001CDE50  C8 A2 94 58 */	lfd f5, lbl_80641A58-_SDA2_BASE_(r2)
/* 801D21F4 001CDE54  90 81 00 14 */	stw r4, 0x14(r1)
/* 801D21F8 001CDE58  38 81 00 30 */	addi r4, r1, 0x30
/* 801D21FC 001CDE5C  C8 82 94 50 */	lfd f4, lbl_80641A50-_SDA2_BASE_(r2)
/* 801D2200 001CDE60  38 C0 00 03 */	li r6, 3
/* 801D2204 001CDE64  90 61 00 10 */	stw r3, 0x10(r1)
/* 801D2208 001CDE68  C8 22 94 08 */	lfd f1, lbl_80641A08-_SDA2_BASE_(r2)
/* 801D220C 001CDE6C  C8 61 00 10 */	lfd f3, 0x10(r1)
/* 801D2210 001CDE70  90 01 00 48 */	stw r0, 0x48(r1)
/* 801D2214 001CDE74  FC 00 18 1E */	fctiwz f0, f3
/* 801D2218 001CDE78  D8 01 00 38 */	stfd f0, 0x38(r1)
/* 801D221C 001CDE7C  80 01 00 3C */	lwz r0, 0x3c(r1)
/* 801D2220 001CDE80  6C 00 80 00 */	xoris r0, r0, 0x8000
/* 801D2224 001CDE84  90 01 00 34 */	stw r0, 0x34(r1)
/* 801D2228 001CDE88  C8 01 00 30 */	lfd f0, 0x30(r1)
/* 801D222C 001CDE8C  FC 40 28 28 */	fsub f2, f0, f5
/* 801D2230 001CDE90  FC 03 10 28 */	fsub f0, f3, f2
/* 801D2234 001CDE94  D8 41 00 18 */	stfd f2, 0x18(r1)
/* 801D2238 001CDE98  FC 64 00 32 */	fmul f3, f4, f0
/* 801D223C 001CDE9C  FC 00 18 1E */	fctiwz f0, f3
/* 801D2240 001CDEA0  D8 01 00 40 */	stfd f0, 0x40(r1)
/* 801D2244 001CDEA4  80 01 00 44 */	lwz r0, 0x44(r1)
/* 801D2248 001CDEA8  6C 00 80 00 */	xoris r0, r0, 0x8000
/* 801D224C 001CDEAC  90 01 00 4C */	stw r0, 0x4c(r1)
/* 801D2250 001CDEB0  C8 01 00 48 */	lfd f0, 0x48(r1)
/* 801D2254 001CDEB4  FC 40 28 28 */	fsub f2, f0, f5
/* 801D2258 001CDEB8  FC 03 10 28 */	fsub f0, f3, f2
/* 801D225C 001CDEBC  D8 41 00 20 */	stfd f2, 0x20(r1)
/* 801D2260 001CDEC0  FC 04 00 32 */	fmul f0, f4, f0
/* 801D2264 001CDEC4  D8 01 00 10 */	stfd f0, 0x10(r1)
/* 801D2268 001CDEC8  D8 01 00 28 */	stfd f0, 0x28(r1)
/* 801D226C 001CDECC  48 00 00 0C */	b lbl_801D2278
lbl_801D2270:
/* 801D2270 001CDED0  38 84 FF F8 */	addi r4, r4, -8
/* 801D2274 001CDED4  38 C6 FF FF */	addi r6, r6, -1
lbl_801D2278:
/* 801D2278 001CDED8  C8 04 FF F8 */	lfd f0, -8(r4)
/* 801D227C 001CDEDC  FC 01 00 00 */	fcmpu cr0, f1, f0
/* 801D2280 001CDEE0  41 82 FF F0 */	beq lbl_801D2270
/* 801D2284 001CDEE4  3D 00 80 40 */	lis r8, lbl_803FD368@ha
/* 801D2288 001CDEE8  7F C4 F3 78 */	mr r4, r30
/* 801D228C 001CDEEC  38 61 00 18 */	addi r3, r1, 0x18
/* 801D2290 001CDEF0  38 E0 00 02 */	li r7, 2
/* 801D2294 001CDEF4  39 08 D3 68 */	addi r8, r8, lbl_803FD368@l
/* 801D2298 001CDEF8  48 00 01 51 */	bl __kernel_rem_pio2
/* 801D229C 001CDEFC  2C 1F 00 00 */	cmpwi r31, 0
/* 801D22A0 001CDF00  40 80 00 20 */	bge lbl_801D22C0
/* 801D22A4 001CDF04  C8 3E 00 00 */	lfd f1, 0(r30)
/* 801D22A8 001CDF08  7C 63 00 D0 */	neg r3, r3
/* 801D22AC 001CDF0C  C8 1E 00 08 */	lfd f0, 8(r30)
/* 801D22B0 001CDF10  FC 20 08 50 */	fneg f1, f1
/* 801D22B4 001CDF14  FC 00 00 50 */	fneg f0, f0
/* 801D22B8 001CDF18  D8 3E 00 00 */	stfd f1, 0(r30)
/* 801D22BC 001CDF1C  D8 1E 00 08 */	stfd f0, 8(r30)
lbl_801D22C0:
/* 801D22C0 001CDF20  80 01 00 64 */	lwz r0, 0x64(r1)
/* 801D22C4 001CDF24  83 E1 00 5C */	lwz r31, 0x5c(r1)
/* 801D22C8 001CDF28  83 C1 00 58 */	lwz r30, 0x58(r1)
/* 801D22CC 001CDF2C  7C 08 03 A6 */	mtlr r0
/* 801D22D0 001CDF30  38 21 00 60 */	addi r1, r1, 0x60
/* 801D22D4 001CDF34  4E 80 00 20 */	blr