summaryrefslogtreecommitdiff
path: root/asm/MSL_C/MSL_Common/math_api.s
blob: 847341c4cb3b5b6ac44de1617ec4dc4f03c7b73c (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
.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