summaryrefslogtreecommitdiff
path: root/asm/MSL_C/MSL_Common_Embedded/Math/e_atan2.s
blob: 817db988c69436a3ed6919dd190099155f5026af (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
.include "macros.inc"

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

.global __ieee754_atan2
__ieee754_atan2:
/* 801D1158 001CCDB8  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 801D115C 001CCDBC  7C 08 02 A6 */	mflr r0
/* 801D1160 001CCDC0  3C 60 7F F0 */	lis r3, 0x7ff0
/* 801D1164 001CCDC4  D8 41 00 10 */	stfd f2, 0x10(r1)
/* 801D1168 001CCDC8  81 01 00 14 */	lwz r8, 0x14(r1)
/* 801D116C 001CCDCC  90 01 00 34 */	stw r0, 0x34(r1)
/* 801D1170 001CCDD0  7C 08 00 D0 */	neg r0, r8
/* 801D1174 001CCDD4  80 81 00 10 */	lwz r4, 0x10(r1)
/* 801D1178 001CCDD8  7D 00 03 78 */	or r0, r8, r0
/* 801D117C 001CCDDC  D8 21 00 08 */	stfd f1, 8(r1)
/* 801D1180 001CCDE0  54 86 00 7E */	clrlwi r6, r4, 1
/* 801D1184 001CCDE4  54 00 0F FE */	srwi r0, r0, 0x1f
/* 801D1188 001CCDE8  80 A1 00 08 */	lwz r5, 8(r1)
/* 801D118C 001CCDEC  7C C0 03 78 */	or r0, r6, r0
/* 801D1190 001CCDF0  93 E1 00 2C */	stw r31, 0x2c(r1)
/* 801D1194 001CCDF4  7C 00 18 40 */	cmplw r0, r3
/* 801D1198 001CCDF8  81 21 00 0C */	lwz r9, 0xc(r1)
/* 801D119C 001CCDFC  54 A7 00 7E */	clrlwi r7, r5, 1
/* 801D11A0 001CCE00  41 81 00 1C */	bgt lbl_801D11BC
/* 801D11A4 001CCE04  7C 09 00 D0 */	neg r0, r9
/* 801D11A8 001CCE08  7D 20 03 78 */	or r0, r9, r0
/* 801D11AC 001CCE0C  54 00 0F FE */	srwi r0, r0, 0x1f
/* 801D11B0 001CCE10  7C E0 03 78 */	or r0, r7, r0
/* 801D11B4 001CCE14  7C 00 18 40 */	cmplw r0, r3
/* 801D11B8 001CCE18  40 81 00 0C */	ble lbl_801D11C4
lbl_801D11BC:
/* 801D11BC 001CCE1C  FC 22 08 2A */	fadd f1, f2, f1
/* 801D11C0 001CCE20  48 00 01 F4 */	b lbl_801D13B4
lbl_801D11C4:
/* 801D11C4 001CCE24  3C 04 C0 10 */	addis r0, r4, 0xc010
/* 801D11C8 001CCE28  7C 00 43 79 */	or. r0, r0, r8
/* 801D11CC 001CCE2C  40 82 00 0C */	bne lbl_801D11D8
/* 801D11D0 001CCE30  48 00 2C 3D */	bl atan
/* 801D11D4 001CCE34  48 00 01 E0 */	b lbl_801D13B4
lbl_801D11D8:
/* 801D11D8 001CCE38  7C E0 4B 79 */	or. r0, r7, r9
/* 801D11DC 001CCE3C  54 9F 17 BC */	rlwinm r31, r4, 2, 0x1e, 0x1e
/* 801D11E0 001CCE40  50 BF 0F FE */	rlwimi r31, r5, 1, 0x1f, 0x1f
/* 801D11E4 001CCE44  40 82 00 3C */	bne lbl_801D1220
/* 801D11E8 001CCE48  2C 1F 00 02 */	cmpwi r31, 2
/* 801D11EC 001CCE4C  41 82 00 24 */	beq lbl_801D1210
/* 801D11F0 001CCE50  40 80 00 10 */	bge lbl_801D1200
/* 801D11F4 001CCE54  2C 1F 00 00 */	cmpwi r31, 0
/* 801D11F8 001CCE58  40 80 01 BC */	bge lbl_801D13B4
/* 801D11FC 001CCE5C  48 00 00 24 */	b lbl_801D1220
lbl_801D1200:
/* 801D1200 001CCE60  2C 1F 00 04 */	cmpwi r31, 4
/* 801D1204 001CCE64  40 80 00 1C */	bge lbl_801D1220
/* 801D1208 001CCE68  48 00 00 10 */	b lbl_801D1218
/* 801D120C 001CCE6C  48 00 01 A8 */	b lbl_801D13B4
lbl_801D1210:
/* 801D1210 001CCE70  C8 22 92 A0 */	lfd f1, lbl_806418A0-_SDA2_BASE_(r2)
/* 801D1214 001CCE74  48 00 01 A0 */	b lbl_801D13B4
lbl_801D1218:
/* 801D1218 001CCE78  C8 22 92 A8 */	lfd f1, lbl_806418A8-_SDA2_BASE_(r2)
/* 801D121C 001CCE7C  48 00 01 98 */	b lbl_801D13B4
lbl_801D1220:
/* 801D1220 001CCE80  7C C0 43 79 */	or. r0, r6, r8
/* 801D1224 001CCE84  40 82 00 1C */	bne lbl_801D1240
/* 801D1228 001CCE88  2C 05 00 00 */	cmpwi r5, 0
/* 801D122C 001CCE8C  40 80 00 0C */	bge lbl_801D1238
/* 801D1230 001CCE90  C8 22 92 B0 */	lfd f1, lbl_806418B0-_SDA2_BASE_(r2)
/* 801D1234 001CCE94  48 00 01 80 */	b lbl_801D13B4
lbl_801D1238:
/* 801D1238 001CCE98  C8 22 92 B8 */	lfd f1, lbl_806418B8-_SDA2_BASE_(r2)
/* 801D123C 001CCE9C  48 00 01 78 */	b lbl_801D13B4
lbl_801D1240:
/* 801D1240 001CCEA0  3C 06 80 10 */	addis r0, r6, 0x8010
/* 801D1244 001CCEA4  28 00 00 00 */	cmplwi r0, 0
/* 801D1248 001CCEA8  40 82 00 A0 */	bne lbl_801D12E8
/* 801D124C 001CCEAC  3C 07 80 10 */	addis r0, r7, 0x8010
/* 801D1250 001CCEB0  28 00 00 00 */	cmplwi r0, 0
/* 801D1254 001CCEB4  40 82 00 4C */	bne lbl_801D12A0
/* 801D1258 001CCEB8  2C 1F 00 02 */	cmpwi r31, 2
/* 801D125C 001CCEBC  41 82 00 34 */	beq lbl_801D1290
/* 801D1260 001CCEC0  40 80 00 14 */	bge lbl_801D1274
/* 801D1264 001CCEC4  2C 1F 00 00 */	cmpwi r31, 0
/* 801D1268 001CCEC8  41 82 00 18 */	beq lbl_801D1280
/* 801D126C 001CCECC  40 80 00 1C */	bge lbl_801D1288
/* 801D1270 001CCED0  48 00 00 78 */	b lbl_801D12E8
lbl_801D1274:
/* 801D1274 001CCED4  2C 1F 00 04 */	cmpwi r31, 4
/* 801D1278 001CCED8  40 80 00 70 */	bge lbl_801D12E8
/* 801D127C 001CCEDC  48 00 00 1C */	b lbl_801D1298
lbl_801D1280:
/* 801D1280 001CCEE0  C8 22 92 C0 */	lfd f1, lbl_806418C0-_SDA2_BASE_(r2)
/* 801D1284 001CCEE4  48 00 01 30 */	b lbl_801D13B4
lbl_801D1288:
/* 801D1288 001CCEE8  C8 22 92 C8 */	lfd f1, lbl_806418C8-_SDA2_BASE_(r2)
/* 801D128C 001CCEEC  48 00 01 28 */	b lbl_801D13B4
lbl_801D1290:
/* 801D1290 001CCEF0  C8 22 92 D0 */	lfd f1, lbl_806418D0-_SDA2_BASE_(r2)
/* 801D1294 001CCEF4  48 00 01 20 */	b lbl_801D13B4
lbl_801D1298:
/* 801D1298 001CCEF8  C8 22 92 D8 */	lfd f1, lbl_806418D8-_SDA2_BASE_(r2)
/* 801D129C 001CCEFC  48 00 01 18 */	b lbl_801D13B4
lbl_801D12A0:
/* 801D12A0 001CCF00  2C 1F 00 02 */	cmpwi r31, 2
/* 801D12A4 001CCF04  41 82 00 34 */	beq lbl_801D12D8
/* 801D12A8 001CCF08  40 80 00 14 */	bge lbl_801D12BC
/* 801D12AC 001CCF0C  2C 1F 00 00 */	cmpwi r31, 0
/* 801D12B0 001CCF10  41 82 00 18 */	beq lbl_801D12C8
/* 801D12B4 001CCF14  40 80 00 1C */	bge lbl_801D12D0
/* 801D12B8 001CCF18  48 00 00 30 */	b lbl_801D12E8
lbl_801D12BC:
/* 801D12BC 001CCF1C  2C 1F 00 04 */	cmpwi r31, 4
/* 801D12C0 001CCF20  40 80 00 28 */	bge lbl_801D12E8
/* 801D12C4 001CCF24  48 00 00 1C */	b lbl_801D12E0
lbl_801D12C8:
/* 801D12C8 001CCF28  C8 22 92 E0 */	lfd f1, lbl_806418E0-_SDA2_BASE_(r2)
/* 801D12CC 001CCF2C  48 00 00 E8 */	b lbl_801D13B4
lbl_801D12D0:
/* 801D12D0 001CCF30  C8 22 92 E8 */	lfd f1, lbl_806418E8-_SDA2_BASE_(r2)
/* 801D12D4 001CCF34  48 00 00 E0 */	b lbl_801D13B4
lbl_801D12D8:
/* 801D12D8 001CCF38  C8 22 92 A0 */	lfd f1, lbl_806418A0-_SDA2_BASE_(r2)
/* 801D12DC 001CCF3C  48 00 00 D8 */	b lbl_801D13B4
lbl_801D12E0:
/* 801D12E0 001CCF40  C8 22 92 A8 */	lfd f1, lbl_806418A8-_SDA2_BASE_(r2)
/* 801D12E4 001CCF44  48 00 00 D0 */	b lbl_801D13B4
lbl_801D12E8:
/* 801D12E8 001CCF48  3C 07 80 10 */	addis r0, r7, 0x8010
/* 801D12EC 001CCF4C  28 00 00 00 */	cmplwi r0, 0
/* 801D12F0 001CCF50  40 82 00 1C */	bne lbl_801D130C
/* 801D12F4 001CCF54  2C 05 00 00 */	cmpwi r5, 0
/* 801D12F8 001CCF58  40 80 00 0C */	bge lbl_801D1304
/* 801D12FC 001CCF5C  C8 22 92 B0 */	lfd f1, lbl_806418B0-_SDA2_BASE_(r2)
/* 801D1300 001CCF60  48 00 00 B4 */	b lbl_801D13B4
lbl_801D1304:
/* 801D1304 001CCF64  C8 22 92 B8 */	lfd f1, lbl_806418B8-_SDA2_BASE_(r2)
/* 801D1308 001CCF68  48 00 00 AC */	b lbl_801D13B4
lbl_801D130C:
/* 801D130C 001CCF6C  7C 06 38 50 */	subf r0, r6, r7
/* 801D1310 001CCF70  7C 00 A6 70 */	srawi r0, r0, 0x14
/* 801D1314 001CCF74  2C 00 00 3C */	cmpwi r0, 0x3c
/* 801D1318 001CCF78  40 81 00 10 */	ble lbl_801D1328
/* 801D131C 001CCF7C  C8 22 92 B8 */	lfd f1, lbl_806418B8-_SDA2_BASE_(r2)
/* 801D1320 001CCF80  D8 21 00 18 */	stfd f1, 0x18(r1)
/* 801D1324 001CCF84  48 00 00 30 */	b lbl_801D1354
lbl_801D1328:
/* 801D1328 001CCF88  2C 04 00 00 */	cmpwi r4, 0
/* 801D132C 001CCF8C  40 80 00 18 */	bge lbl_801D1344
/* 801D1330 001CCF90  2C 00 FF C4 */	cmpwi r0, -60
/* 801D1334 001CCF94  40 80 00 10 */	bge lbl_801D1344
/* 801D1338 001CCF98  C8 22 92 E0 */	lfd f1, lbl_806418E0-_SDA2_BASE_(r2)
/* 801D133C 001CCF9C  D8 21 00 18 */	stfd f1, 0x18(r1)
/* 801D1340 001CCFA0  48 00 00 14 */	b lbl_801D1354
lbl_801D1344:
/* 801D1344 001CCFA4  FC 01 10 24 */	fdiv f0, f1, f2
/* 801D1348 001CCFA8  FC 20 02 10 */	fabs f1, f0
/* 801D134C 001CCFAC  48 00 2A C1 */	bl atan
/* 801D1350 001CCFB0  D8 21 00 18 */	stfd f1, 0x18(r1)
lbl_801D1354:
/* 801D1354 001CCFB4  2C 1F 00 01 */	cmpwi r31, 1
/* 801D1358 001CCFB8  41 82 00 24 */	beq lbl_801D137C
/* 801D135C 001CCFBC  40 80 00 10 */	bge lbl_801D136C
/* 801D1360 001CCFC0  2C 1F 00 00 */	cmpwi r31, 0
/* 801D1364 001CCFC4  40 80 00 50 */	bge lbl_801D13B4
/* 801D1368 001CCFC8  48 00 00 3C */	b lbl_801D13A4
lbl_801D136C:
/* 801D136C 001CCFCC  2C 1F 00 03 */	cmpwi r31, 3
/* 801D1370 001CCFD0  40 80 00 34 */	bge lbl_801D13A4
/* 801D1374 001CCFD4  48 00 00 1C */	b lbl_801D1390
/* 801D1378 001CCFD8  48 00 00 3C */	b lbl_801D13B4
lbl_801D137C:
/* 801D137C 001CCFDC  80 01 00 18 */	lwz r0, 0x18(r1)
/* 801D1380 001CCFE0  6C 00 80 00 */	xoris r0, r0, 0x8000
/* 801D1384 001CCFE4  90 01 00 18 */	stw r0, 0x18(r1)
/* 801D1388 001CCFE8  C8 21 00 18 */	lfd f1, 0x18(r1)
/* 801D138C 001CCFEC  48 00 00 28 */	b lbl_801D13B4
lbl_801D1390:
/* 801D1390 001CCFF0  C8 42 92 F0 */	lfd f2, lbl_806418F0-_SDA2_BASE_(r2)
/* 801D1394 001CCFF4  C8 02 92 A0 */	lfd f0, lbl_806418A0-_SDA2_BASE_(r2)
/* 801D1398 001CCFF8  FC 21 10 28 */	fsub f1, f1, f2
/* 801D139C 001CCFFC  FC 20 08 28 */	fsub f1, f0, f1
/* 801D13A0 001CD000  48 00 00 14 */	b lbl_801D13B4
lbl_801D13A4:
/* 801D13A4 001CD004  C8 42 92 F0 */	lfd f2, lbl_806418F0-_SDA2_BASE_(r2)
/* 801D13A8 001CD008  C8 02 92 A0 */	lfd f0, lbl_806418A0-_SDA2_BASE_(r2)
/* 801D13AC 001CD00C  FC 21 10 28 */	fsub f1, f1, f2
/* 801D13B0 001CD010  FC 21 00 28 */	fsub f1, f1, f0
lbl_801D13B4:
/* 801D13B4 001CD014  80 01 00 34 */	lwz r0, 0x34(r1)
/* 801D13B8 001CD018  83 E1 00 2C */	lwz r31, 0x2c(r1)
/* 801D13BC 001CD01C  7C 08 03 A6 */	mtlr r0
/* 801D13C0 001CD020  38 21 00 30 */	addi r1, r1, 0x30
/* 801D13C4 001CD024  4E 80 00 20 */	blr