summaryrefslogtreecommitdiff
path: root/asm/libstdc++/math_api.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/libstdc++/math_api.s')
-rw-r--r--asm/libstdc++/math_api.s87
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