diff options
Diffstat (limited to 'asm/libstdc++/math_api.s')
-rw-r--r-- | asm/libstdc++/math_api.s | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/asm/libstdc++/math_api.s b/asm/libstdc++/math_api.s new file mode 100644 index 0000000..847341c --- /dev/null +++ b/asm/libstdc++/math_api.s @@ -0,0 +1,87 @@ +.include "macros.inc" + +.section .text, "ax" # 0x80006980 - 0x803E1E60 + +.global __fpclassifyf +__fpclassifyf: +/* 801CA6B4 001C6314 94 21 FF F0 */ stwu r1, -0x10(r1) +/* 801CA6B8 001C6318 3C 00 7F 80 */ lis r0, 0x7f80 +/* 801CA6BC 001C631C D0 21 00 08 */ stfs f1, 8(r1) +/* 801CA6C0 001C6320 80 81 00 08 */ lwz r4, 8(r1) +/* 801CA6C4 001C6324 54 83 00 50 */ rlwinm r3, r4, 0, 1, 8 +/* 801CA6C8 001C6328 7C 03 00 00 */ cmpw r3, r0 +/* 801CA6CC 001C632C 41 82 00 14 */ beq lbl_801CA6E0 +/* 801CA6D0 001C6330 40 80 00 3C */ bge lbl_801CA70C +/* 801CA6D4 001C6334 2C 03 00 00 */ cmpwi r3, 0 +/* 801CA6D8 001C6338 41 82 00 20 */ beq lbl_801CA6F8 +/* 801CA6DC 001C633C 48 00 00 30 */ b lbl_801CA70C +lbl_801CA6E0: +/* 801CA6E0 001C6340 54 83 02 7E */ clrlwi r3, r4, 9 +/* 801CA6E4 001C6344 7C 03 00 D0 */ neg r0, r3 +/* 801CA6E8 001C6348 7C 00 1B 78 */ or r0, r0, r3 +/* 801CA6EC 001C634C 7C 03 FE 70 */ srawi r3, r0, 0x1f +/* 801CA6F0 001C6350 38 63 00 02 */ addi r3, r3, 2 +/* 801CA6F4 001C6354 48 00 00 1C */ b lbl_801CA710 +lbl_801CA6F8: +/* 801CA6F8 001C6358 54 80 02 7F */ clrlwi. r0, r4, 9 +/* 801CA6FC 001C635C 38 60 00 03 */ li r3, 3 +/* 801CA700 001C6360 41 82 00 10 */ beq lbl_801CA710 +/* 801CA704 001C6364 38 60 00 05 */ li r3, 5 +/* 801CA708 001C6368 48 00 00 08 */ b lbl_801CA710 +lbl_801CA70C: +/* 801CA70C 001C636C 38 60 00 04 */ li r3, 4 +lbl_801CA710: +/* 801CA710 001C6370 38 21 00 10 */ addi r1, r1, 0x10 +/* 801CA714 001C6374 4E 80 00 20 */ blr + +.global __signbitd +__signbitd: +/* 801CA718 001C6378 94 21 FF F0 */ stwu r1, -0x10(r1) +/* 801CA71C 001C637C D8 21 00 08 */ stfd f1, 8(r1) +/* 801CA720 001C6380 80 01 00 08 */ lwz r0, 8(r1) +/* 801CA724 001C6384 54 03 00 00 */ rlwinm r3, r0, 0, 0, 0 +/* 801CA728 001C6388 38 21 00 10 */ addi r1, r1, 0x10 +/* 801CA72C 001C638C 4E 80 00 20 */ blr + +.global __fpclassifyd +__fpclassifyd: +/* 801CA730 001C6390 94 21 FF F0 */ stwu r1, -0x10(r1) +/* 801CA734 001C6394 3C 00 7F F0 */ lis r0, 0x7ff0 +/* 801CA738 001C6398 D8 21 00 08 */ stfd f1, 8(r1) +/* 801CA73C 001C639C 80 81 00 08 */ lwz r4, 8(r1) +/* 801CA740 001C63A0 54 83 00 56 */ rlwinm r3, r4, 0, 1, 0xb +/* 801CA744 001C63A4 7C 03 00 00 */ cmpw r3, r0 +/* 801CA748 001C63A8 41 82 00 14 */ beq lbl_801CA75C +/* 801CA74C 001C63AC 40 80 00 58 */ bge lbl_801CA7A4 +/* 801CA750 001C63B0 2C 03 00 00 */ cmpwi r3, 0 +/* 801CA754 001C63B4 41 82 00 2C */ beq lbl_801CA780 +/* 801CA758 001C63B8 48 00 00 4C */ b lbl_801CA7A4 +lbl_801CA75C: +/* 801CA75C 001C63BC 54 80 03 3F */ clrlwi. r0, r4, 0xc +/* 801CA760 001C63C0 40 82 00 10 */ bne lbl_801CA770 +/* 801CA764 001C63C4 80 01 00 0C */ lwz r0, 0xc(r1) +/* 801CA768 001C63C8 2C 00 00 00 */ cmpwi r0, 0 +/* 801CA76C 001C63CC 41 82 00 0C */ beq lbl_801CA778 +lbl_801CA770: +/* 801CA770 001C63D0 38 60 00 01 */ li r3, 1 +/* 801CA774 001C63D4 48 00 00 34 */ b lbl_801CA7A8 +lbl_801CA778: +/* 801CA778 001C63D8 38 60 00 02 */ li r3, 2 +/* 801CA77C 001C63DC 48 00 00 2C */ b lbl_801CA7A8 +lbl_801CA780: +/* 801CA780 001C63E0 54 80 03 3F */ clrlwi. r0, r4, 0xc +/* 801CA784 001C63E4 40 82 00 10 */ bne lbl_801CA794 +/* 801CA788 001C63E8 80 01 00 0C */ lwz r0, 0xc(r1) +/* 801CA78C 001C63EC 2C 00 00 00 */ cmpwi r0, 0 +/* 801CA790 001C63F0 41 82 00 0C */ beq lbl_801CA79C +lbl_801CA794: +/* 801CA794 001C63F4 38 60 00 05 */ li r3, 5 +/* 801CA798 001C63F8 48 00 00 10 */ b lbl_801CA7A8 +lbl_801CA79C: +/* 801CA79C 001C63FC 38 60 00 03 */ li r3, 3 +/* 801CA7A0 001C6400 48 00 00 08 */ b lbl_801CA7A8 +lbl_801CA7A4: +/* 801CA7A4 001C6404 38 60 00 04 */ li r3, 4 +lbl_801CA7A8: +/* 801CA7A8 001C6408 38 21 00 10 */ addi r1, r1, 0x10 +/* 801CA7AC 001C640C 4E 80 00 20 */ blr |