diff options
Diffstat (limited to 'asm/libstdc++/e_atan2.s')
-rw-r--r-- | asm/libstdc++/e_atan2.s | 193 |
1 files changed, 193 insertions, 0 deletions
diff --git a/asm/libstdc++/e_atan2.s b/asm/libstdc++/e_atan2.s new file mode 100644 index 0000000..817db98 --- /dev/null +++ b/asm/libstdc++/e_atan2.s @@ -0,0 +1,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
|