prime/asm/Runtime/e_rem_pio2.s

262 lines
13 KiB
ArmAsm
Raw Normal View History

2022-04-02 09:50:35 +00:00
.include "macros.inc"
2022-04-06 10:04:03 +00:00
.section .rodata
.global lbl_803D8790
lbl_803D8790:
.incbin "baserom.dol", 0x3D5790, 0x108
.global lbl_803D8898
lbl_803D8898:
.incbin "baserom.dol", 0x3D5898, 0x80
2022-04-02 09:50:35 +00:00
.section .text, "ax"
.global __ieee754_rem_pio2
__ieee754_rem_pio2:
/* 80392C2C 0038FB8C 94 21 FF A0 */ stwu r1, -0x60(r1)
/* 80392C30 0038FB90 7C 08 02 A6 */ mflr r0
/* 80392C34 0038FB94 3C 80 3F E9 */ lis r4, 0x3FE921FB@ha
/* 80392C38 0038FB98 90 01 00 64 */ stw r0, 0x64(r1)
/* 80392C3C 0038FB9C 38 04 21 FB */ addi r0, r4, 0x3FE921FB@l
/* 80392C40 0038FBA0 93 E1 00 5C */ stw r31, 0x5c(r1)
/* 80392C44 0038FBA4 D8 21 00 08 */ stfd f1, 8(r1)
/* 80392C48 0038FBA8 83 E1 00 08 */ lwz r31, 8(r1)
/* 80392C4C 0038FBAC 93 C1 00 58 */ stw r30, 0x58(r1)
/* 80392C50 0038FBB0 7C 7E 1B 78 */ mr r30, r3
/* 80392C54 0038FBB4 57 E6 00 7E */ clrlwi r6, r31, 1
/* 80392C58 0038FBB8 7C 06 00 00 */ cmpw r6, r0
/* 80392C5C 0038FBBC 41 81 00 18 */ bgt lbl_80392C74
/* 80392C60 0038FBC0 D8 3E 00 00 */ stfd f1, 0(r30)
/* 80392C64 0038FBC4 38 60 00 00 */ li r3, 0
/* 80392C68 0038FBC8 C8 02 D3 20 */ lfd f0, lbl_805AF040@sda21(r2)
/* 80392C6C 0038FBCC D8 1E 00 08 */ stfd f0, 8(r30)
/* 80392C70 0038FBD0 48 00 03 44 */ b lbl_80392FB4
lbl_80392C74:
/* 80392C74 0038FBD4 3C 60 40 03 */ lis r3, 0x4002D97C@ha
/* 80392C78 0038FBD8 38 03 D9 7C */ addi r0, r3, 0x4002D97C@l
/* 80392C7C 0038FBDC 7C 06 00 00 */ cmpw r6, r0
/* 80392C80 0038FBE0 40 80 00 DC */ bge lbl_80392D5C
/* 80392C84 0038FBE4 2C 1F 00 00 */ cmpwi r31, 0
/* 80392C88 0038FBE8 40 81 00 6C */ ble lbl_80392CF4
/* 80392C8C 0038FBEC C8 02 D3 28 */ lfd f0, lbl_805AF048@sda21(r2)
/* 80392C90 0038FBF0 3C 06 C0 07 */ addis r0, r6, 0xc007
/* 80392C94 0038FBF4 28 00 21 FB */ cmplwi r0, 0x21fb
/* 80392C98 0038FBF8 FC 41 00 28 */ fsub f2, f1, f0
/* 80392C9C 0038FBFC D8 41 00 10 */ stfd f2, 0x10(r1)
/* 80392CA0 0038FC00 41 82 00 24 */ beq lbl_80392CC4
/* 80392CA4 0038FC04 C8 22 D3 30 */ lfd f1, lbl_805AF050@sda21(r2)
/* 80392CA8 0038FC08 FC 02 08 28 */ fsub f0, f2, f1
/* 80392CAC 0038FC0C D8 1E 00 00 */ stfd f0, 0(r30)
/* 80392CB0 0038FC10 C8 1E 00 00 */ lfd f0, 0(r30)
/* 80392CB4 0038FC14 FC 02 00 28 */ fsub f0, f2, f0
/* 80392CB8 0038FC18 FC 00 08 28 */ fsub f0, f0, f1
/* 80392CBC 0038FC1C D8 1E 00 08 */ stfd f0, 8(r30)
/* 80392CC0 0038FC20 48 00 00 2C */ b lbl_80392CEC
lbl_80392CC4:
/* 80392CC4 0038FC24 C8 02 D3 38 */ lfd f0, lbl_805AF058@sda21(r2)
/* 80392CC8 0038FC28 C8 22 D3 40 */ lfd f1, lbl_805AF060@sda21(r2)
/* 80392CCC 0038FC2C FC 42 00 28 */ fsub f2, f2, f0
/* 80392CD0 0038FC30 FC 02 08 28 */ fsub f0, f2, f1
/* 80392CD4 0038FC34 D8 41 00 10 */ stfd f2, 0x10(r1)
/* 80392CD8 0038FC38 D8 1E 00 00 */ stfd f0, 0(r30)
/* 80392CDC 0038FC3C C8 1E 00 00 */ lfd f0, 0(r30)
/* 80392CE0 0038FC40 FC 02 00 28 */ fsub f0, f2, f0
/* 80392CE4 0038FC44 FC 00 08 28 */ fsub f0, f0, f1
/* 80392CE8 0038FC48 D8 1E 00 08 */ stfd f0, 8(r30)
lbl_80392CEC:
/* 80392CEC 0038FC4C 38 60 00 01 */ li r3, 1
/* 80392CF0 0038FC50 48 00 02 C4 */ b lbl_80392FB4
lbl_80392CF4:
/* 80392CF4 0038FC54 C8 02 D3 28 */ lfd f0, lbl_805AF048@sda21(r2)
/* 80392CF8 0038FC58 3C 06 C0 07 */ addis r0, r6, 0xc007
/* 80392CFC 0038FC5C 28 00 21 FB */ cmplwi r0, 0x21fb
/* 80392D00 0038FC60 FC 40 08 2A */ fadd f2, f0, f1
/* 80392D04 0038FC64 D8 41 00 10 */ stfd f2, 0x10(r1)
/* 80392D08 0038FC68 41 82 00 24 */ beq lbl_80392D2C
/* 80392D0C 0038FC6C C8 22 D3 30 */ lfd f1, lbl_805AF050@sda21(r2)
/* 80392D10 0038FC70 FC 01 10 2A */ fadd f0, f1, f2
/* 80392D14 0038FC74 D8 1E 00 00 */ stfd f0, 0(r30)
/* 80392D18 0038FC78 C8 1E 00 00 */ lfd f0, 0(r30)
/* 80392D1C 0038FC7C FC 02 00 28 */ fsub f0, f2, f0
/* 80392D20 0038FC80 FC 01 00 2A */ fadd f0, f1, f0
/* 80392D24 0038FC84 D8 1E 00 08 */ stfd f0, 8(r30)
/* 80392D28 0038FC88 48 00 00 2C */ b lbl_80392D54
lbl_80392D2C:
/* 80392D2C 0038FC8C C8 02 D3 38 */ lfd f0, lbl_805AF058@sda21(r2)
/* 80392D30 0038FC90 C8 22 D3 40 */ lfd f1, lbl_805AF060@sda21(r2)
/* 80392D34 0038FC94 FC 42 00 2A */ fadd f2, f2, f0
/* 80392D38 0038FC98 FC 01 10 2A */ fadd f0, f1, f2
/* 80392D3C 0038FC9C D8 41 00 10 */ stfd f2, 0x10(r1)
/* 80392D40 0038FCA0 D8 1E 00 00 */ stfd f0, 0(r30)
/* 80392D44 0038FCA4 C8 1E 00 00 */ lfd f0, 0(r30)
/* 80392D48 0038FCA8 FC 02 00 28 */ fsub f0, f2, f0
/* 80392D4C 0038FCAC FC 01 00 2A */ fadd f0, f1, f0
/* 80392D50 0038FCB0 D8 1E 00 08 */ stfd f0, 8(r30)
lbl_80392D54:
/* 80392D54 0038FCB4 38 60 FF FF */ li r3, -1
/* 80392D58 0038FCB8 48 00 02 5C */ b lbl_80392FB4
lbl_80392D5C:
/* 80392D5C 0038FCBC 3C 60 41 39 */ lis r3, 0x413921FB@ha
/* 80392D60 0038FCC0 38 03 21 FB */ addi r0, r3, 0x413921FB@l
/* 80392D64 0038FCC4 7C 06 00 00 */ cmpw r6, r0
/* 80392D68 0038FCC8 41 81 01 3C */ bgt lbl_80392EA4
/* 80392D6C 0038FCCC FC 80 0A 10 */ fabs f4, f1
/* 80392D70 0038FCD0 3C 00 43 30 */ lis r0, 0x4330
/* 80392D74 0038FCD4 C8 22 D3 50 */ lfd f1, lbl_805AF070@sda21(r2)
/* 80392D78 0038FCD8 C8 02 D3 48 */ lfd f0, lbl_805AF068@sda21(r2)
/* 80392D7C 0038FCDC 90 01 00 38 */ stw r0, 0x38(r1)
/* 80392D80 0038FCE0 FC 41 01 3A */ fmadd f2, f1, f4, f0
/* 80392D84 0038FCE4 C8 62 D3 70 */ lfd f3, lbl_805AF090@sda21(r2)
/* 80392D88 0038FCE8 C8 22 D3 28 */ lfd f1, lbl_805AF048@sda21(r2)
/* 80392D8C 0038FCEC C8 02 D3 30 */ lfd f0, lbl_805AF050@sda21(r2)
/* 80392D90 0038FCF0 FC 40 10 1E */ fctiwz f2, f2
/* 80392D94 0038FCF4 D8 41 00 30 */ stfd f2, 0x30(r1)
/* 80392D98 0038FCF8 80 61 00 34 */ lwz r3, 0x34(r1)
/* 80392D9C 0038FCFC 6C 60 80 00 */ xoris r0, r3, 0x8000
/* 80392DA0 0038FD00 2C 03 00 20 */ cmpwi r3, 0x20
/* 80392DA4 0038FD04 90 01 00 3C */ stw r0, 0x3c(r1)
/* 80392DA8 0038FD08 C8 41 00 38 */ lfd f2, 0x38(r1)
/* 80392DAC 0038FD0C FC A2 18 28 */ fsub f5, f2, f3
/* 80392DB0 0038FD10 FC 81 21 7C */ fnmsub f4, f1, f5, f4
/* 80392DB4 0038FD14 FC 20 01 72 */ fmul f1, f0, f5
/* 80392DB8 0038FD18 40 80 00 2C */ bge lbl_80392DE4
/* 80392DBC 0038FD1C 3C 80 80 3E */ lis r4, lbl_803D8898@ha
/* 80392DC0 0038FD20 54 60 10 3A */ slwi r0, r3, 2
/* 80392DC4 0038FD24 38 84 88 98 */ addi r4, r4, lbl_803D8898@l
/* 80392DC8 0038FD28 7C 84 02 14 */ add r4, r4, r0
/* 80392DCC 0038FD2C 80 04 FF FC */ lwz r0, -4(r4)
/* 80392DD0 0038FD30 7C 06 00 00 */ cmpw r6, r0
/* 80392DD4 0038FD34 41 82 00 10 */ beq lbl_80392DE4
/* 80392DD8 0038FD38 FC 04 08 28 */ fsub f0, f4, f1
/* 80392DDC 0038FD3C D8 1E 00 00 */ stfd f0, 0(r30)
/* 80392DE0 0038FD40 48 00 00 88 */ b lbl_80392E68
lbl_80392DE4:
/* 80392DE4 0038FD44 FC 04 08 28 */ fsub f0, f4, f1
/* 80392DE8 0038FD48 7C C4 A6 70 */ srawi r4, r6, 0x14
/* 80392DEC 0038FD4C D8 1E 00 00 */ stfd f0, 0(r30)
/* 80392DF0 0038FD50 80 1E 00 00 */ lwz r0, 0(r30)
/* 80392DF4 0038FD54 54 00 65 7E */ rlwinm r0, r0, 0xc, 0x15, 0x1f
/* 80392DF8 0038FD58 7C 00 20 50 */ subf r0, r0, r4
/* 80392DFC 0038FD5C 2C 00 00 10 */ cmpwi r0, 0x10
/* 80392E00 0038FD60 40 81 00 68 */ ble lbl_80392E68
/* 80392E04 0038FD64 C8 02 D3 38 */ lfd f0, lbl_805AF058@sda21(r2)
/* 80392E08 0038FD68 FC 60 20 90 */ fmr f3, f4
/* 80392E0C 0038FD6C C8 22 D3 40 */ lfd f1, lbl_805AF060@sda21(r2)
/* 80392E10 0038FD70 FC 40 01 72 */ fmul f2, f0, f5
/* 80392E14 0038FD74 FC 84 10 28 */ fsub f4, f4, f2
/* 80392E18 0038FD78 FC 03 20 28 */ fsub f0, f3, f4
/* 80392E1C 0038FD7C FC 00 10 28 */ fsub f0, f0, f2
/* 80392E20 0038FD80 FC 21 01 78 */ fmsub f1, f1, f5, f0
/* 80392E24 0038FD84 FC 04 08 28 */ fsub f0, f4, f1
/* 80392E28 0038FD88 D8 1E 00 00 */ stfd f0, 0(r30)
/* 80392E2C 0038FD8C 80 1E 00 00 */ lwz r0, 0(r30)
/* 80392E30 0038FD90 54 00 65 7E */ rlwinm r0, r0, 0xc, 0x15, 0x1f
/* 80392E34 0038FD94 7C 00 20 50 */ subf r0, r0, r4
/* 80392E38 0038FD98 2C 00 00 31 */ cmpwi r0, 0x31
/* 80392E3C 0038FD9C 40 81 00 2C */ ble lbl_80392E68
/* 80392E40 0038FDA0 C8 02 D3 58 */ lfd f0, lbl_805AF078@sda21(r2)
/* 80392E44 0038FDA4 FC 40 20 90 */ fmr f2, f4
/* 80392E48 0038FDA8 C8 22 D3 60 */ lfd f1, lbl_805AF080@sda21(r2)
/* 80392E4C 0038FDAC FC 60 01 72 */ fmul f3, f0, f5
/* 80392E50 0038FDB0 FC 84 18 28 */ fsub f4, f4, f3
/* 80392E54 0038FDB4 FC 02 20 28 */ fsub f0, f2, f4
/* 80392E58 0038FDB8 FC 00 18 28 */ fsub f0, f0, f3
/* 80392E5C 0038FDBC FC 21 01 78 */ fmsub f1, f1, f5, f0
/* 80392E60 0038FDC0 FC 04 08 28 */ fsub f0, f4, f1
/* 80392E64 0038FDC4 D8 1E 00 00 */ stfd f0, 0(r30)
lbl_80392E68:
/* 80392E68 0038FDC8 C8 1E 00 00 */ lfd f0, 0(r30)
/* 80392E6C 0038FDCC 2C 1F 00 00 */ cmpwi r31, 0
/* 80392E70 0038FDD0 FC 04 00 28 */ fsub f0, f4, f0
/* 80392E74 0038FDD4 FC 00 08 28 */ fsub f0, f0, f1
/* 80392E78 0038FDD8 D8 1E 00 08 */ stfd f0, 8(r30)
/* 80392E7C 0038FDDC 40 80 01 38 */ bge lbl_80392FB4
/* 80392E80 0038FDE0 C8 1E 00 00 */ lfd f0, 0(r30)
/* 80392E84 0038FDE4 7C 63 00 D0 */ neg r3, r3
/* 80392E88 0038FDE8 FC 00 00 50 */ fneg f0, f0
/* 80392E8C 0038FDEC D8 1E 00 00 */ stfd f0, 0(r30)
/* 80392E90 0038FDF0 C8 1E 00 08 */ lfd f0, 8(r30)
/* 80392E94 0038FDF4 FC 00 00 50 */ fneg f0, f0
/* 80392E98 0038FDF8 D8 1E 00 08 */ stfd f0, 8(r30)
/* 80392E9C 0038FDFC 48 00 01 18 */ b lbl_80392FB4
/* 80392EA0 0038FE00 48 00 01 14 */ b lbl_80392FB4
lbl_80392EA4:
/* 80392EA4 0038FE04 3C 00 7F F0 */ lis r0, 0x7ff0
/* 80392EA8 0038FE08 7C 06 00 00 */ cmpw r6, r0
/* 80392EAC 0038FE0C 41 80 00 18 */ blt lbl_80392EC4
/* 80392EB0 0038FE10 FC 01 08 28 */ fsub f0, f1, f1
/* 80392EB4 0038FE14 38 60 00 00 */ li r3, 0
/* 80392EB8 0038FE18 D8 1E 00 08 */ stfd f0, 8(r30)
/* 80392EBC 0038FE1C D8 1E 00 00 */ stfd f0, 0(r30)
/* 80392EC0 0038FE20 48 00 00 F4 */ b lbl_80392FB4
lbl_80392EC4:
/* 80392EC4 0038FE24 7C C3 A6 70 */ srawi r3, r6, 0x14
/* 80392EC8 0038FE28 3C 00 43 30 */ lis r0, 0x4330
/* 80392ECC 0038FE2C 38 A3 FB EA */ addi r5, r3, -1046
/* 80392ED0 0038FE30 80 81 00 0C */ lwz r4, 0xc(r1)
/* 80392ED4 0038FE34 54 A3 A0 16 */ slwi r3, r5, 0x14
/* 80392ED8 0038FE38 90 01 00 30 */ stw r0, 0x30(r1)
/* 80392EDC 0038FE3C 7C 63 30 50 */ subf r3, r3, r6
/* 80392EE0 0038FE40 C8 A2 D3 70 */ lfd f5, lbl_805AF090@sda21(r2)
/* 80392EE4 0038FE44 90 81 00 14 */ stw r4, 0x14(r1)
/* 80392EE8 0038FE48 38 81 00 30 */ addi r4, r1, 0x30
/* 80392EEC 0038FE4C C8 82 D3 68 */ lfd f4, lbl_805AF088@sda21(r2)
/* 80392EF0 0038FE50 38 C0 00 03 */ li r6, 3
/* 80392EF4 0038FE54 90 61 00 10 */ stw r3, 0x10(r1)
/* 80392EF8 0038FE58 C8 22 D3 20 */ lfd f1, lbl_805AF040@sda21(r2)
/* 80392EFC 0038FE5C C8 61 00 10 */ lfd f3, 0x10(r1)
/* 80392F00 0038FE60 90 01 00 48 */ stw r0, 0x48(r1)
/* 80392F04 0038FE64 FC 00 18 1E */ fctiwz f0, f3
/* 80392F08 0038FE68 D8 01 00 38 */ stfd f0, 0x38(r1)
/* 80392F0C 0038FE6C 80 01 00 3C */ lwz r0, 0x3c(r1)
/* 80392F10 0038FE70 6C 00 80 00 */ xoris r0, r0, 0x8000
/* 80392F14 0038FE74 90 01 00 34 */ stw r0, 0x34(r1)
/* 80392F18 0038FE78 C8 01 00 30 */ lfd f0, 0x30(r1)
/* 80392F1C 0038FE7C FC 40 28 28 */ fsub f2, f0, f5
/* 80392F20 0038FE80 FC 03 10 28 */ fsub f0, f3, f2
/* 80392F24 0038FE84 D8 41 00 18 */ stfd f2, 0x18(r1)
/* 80392F28 0038FE88 FC 64 00 32 */ fmul f3, f4, f0
/* 80392F2C 0038FE8C FC 00 18 1E */ fctiwz f0, f3
/* 80392F30 0038FE90 D8 61 00 10 */ stfd f3, 0x10(r1)
/* 80392F34 0038FE94 D8 01 00 40 */ stfd f0, 0x40(r1)
/* 80392F38 0038FE98 80 01 00 44 */ lwz r0, 0x44(r1)
/* 80392F3C 0038FE9C 6C 00 80 00 */ xoris r0, r0, 0x8000
/* 80392F40 0038FEA0 90 01 00 4C */ stw r0, 0x4c(r1)
/* 80392F44 0038FEA4 C8 01 00 48 */ lfd f0, 0x48(r1)
/* 80392F48 0038FEA8 FC 40 28 28 */ fsub f2, f0, f5
/* 80392F4C 0038FEAC FC 03 10 28 */ fsub f0, f3, f2
/* 80392F50 0038FEB0 D8 41 00 20 */ stfd f2, 0x20(r1)
/* 80392F54 0038FEB4 FC 04 00 32 */ fmul f0, f4, f0
/* 80392F58 0038FEB8 D8 01 00 10 */ stfd f0, 0x10(r1)
/* 80392F5C 0038FEBC D8 01 00 28 */ stfd f0, 0x28(r1)
/* 80392F60 0038FEC0 48 00 00 0C */ b lbl_80392F6C
lbl_80392F64:
/* 80392F64 0038FEC4 38 84 FF F8 */ addi r4, r4, -8
/* 80392F68 0038FEC8 38 C6 FF FF */ addi r6, r6, -1
lbl_80392F6C:
/* 80392F6C 0038FECC C8 04 FF F8 */ lfd f0, -8(r4)
/* 80392F70 0038FED0 FC 01 00 00 */ fcmpu cr0, f1, f0
/* 80392F74 0038FED4 41 82 FF F0 */ beq lbl_80392F64
/* 80392F78 0038FED8 3C 60 80 3E */ lis r3, lbl_803D8790@ha
/* 80392F7C 0038FEDC 7F C4 F3 78 */ mr r4, r30
/* 80392F80 0038FEE0 39 03 87 90 */ addi r8, r3, lbl_803D8790@l
/* 80392F84 0038FEE4 38 E0 00 02 */ li r7, 2
/* 80392F88 0038FEE8 38 61 00 18 */ addi r3, r1, 0x18
/* 80392F8C 0038FEEC 48 00 01 35 */ bl __kernel_rem_pio2
/* 80392F90 0038FEF0 2C 1F 00 00 */ cmpwi r31, 0
/* 80392F94 0038FEF4 40 80 00 20 */ bge lbl_80392FB4
/* 80392F98 0038FEF8 C8 1E 00 00 */ lfd f0, 0(r30)
/* 80392F9C 0038FEFC 7C 63 00 D0 */ neg r3, r3
/* 80392FA0 0038FF00 FC 00 00 50 */ fneg f0, f0
/* 80392FA4 0038FF04 D8 1E 00 00 */ stfd f0, 0(r30)
/* 80392FA8 0038FF08 C8 1E 00 08 */ lfd f0, 8(r30)
/* 80392FAC 0038FF0C FC 00 00 50 */ fneg f0, f0
/* 80392FB0 0038FF10 D8 1E 00 08 */ stfd f0, 8(r30)
lbl_80392FB4:
/* 80392FB4 0038FF14 80 01 00 64 */ lwz r0, 0x64(r1)
/* 80392FB8 0038FF18 83 E1 00 5C */ lwz r31, 0x5c(r1)
/* 80392FBC 0038FF1C 83 C1 00 58 */ lwz r30, 0x58(r1)
/* 80392FC0 0038FF20 7C 08 03 A6 */ mtlr r0
/* 80392FC4 0038FF24 38 21 00 60 */ addi r1, r1, 0x60
/* 80392FC8 0038FF28 4E 80 00 20 */ blr