summaryrefslogtreecommitdiff
path: root/asm/MSL_C/MSL_Common_Embedded/Math/k_tan.s
blob: b410c78ce65c5dd08f1395774ce01af52a1b61c4 (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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
.include "macros.inc"

.section .text, "ax"  # 0x80006980 - 0x803E1E60

.global __kernel_tan
__kernel_tan:
/* 801D3BB4 001CF814  94 21 FF B0 */	stwu r1, -0x50(r1)
/* 801D3BB8 001CF818  DB E1 00 40 */	stfd f31, 0x40(r1)
/* 801D3BBC 001CF81C  F3 E1 00 48 */	psq_st f31, 72(r1), 0, qr0
/* 801D3BC0 001CF820  DB C1 00 30 */	stfd f30, 0x30(r1)
/* 801D3BC4 001CF824  F3 C1 00 38 */	psq_st f30, 56(r1), 0, qr0
/* 801D3BC8 001CF828  D8 21 00 08 */	stfd f1, 8(r1)
/* 801D3BCC 001CF82C  3C 00 3E 30 */	lis r0, 0x3e30
/* 801D3BD0 001CF830  81 01 00 08 */	lwz r8, 8(r1)
/* 801D3BD4 001CF834  55 07 00 7E */	clrlwi r7, r8, 1
/* 801D3BD8 001CF838  7C 07 00 00 */	cmpw r7, r0
/* 801D3BDC 001CF83C  40 80 00 54 */	bge lbl_801D3C30
/* 801D3BE0 001CF840  FC 00 08 1E */	fctiwz f0, f1
/* 801D3BE4 001CF844  D8 01 00 20 */	stfd f0, 0x20(r1)
/* 801D3BE8 001CF848  80 01 00 24 */	lwz r0, 0x24(r1)
/* 801D3BEC 001CF84C  2C 00 00 00 */	cmpwi r0, 0
/* 801D3BF0 001CF850  40 82 00 40 */	bne lbl_801D3C30
/* 801D3BF4 001CF854  38 83 00 01 */	addi r4, r3, 1
/* 801D3BF8 001CF858  80 01 00 0C */	lwz r0, 0xc(r1)
/* 801D3BFC 001CF85C  7C 84 3B 78 */	or r4, r4, r7
/* 801D3C00 001CF860  7C 80 03 79 */	or. r0, r4, r0
/* 801D3C04 001CF864  40 82 00 14 */	bne lbl_801D3C18
/* 801D3C08 001CF868  FC 20 0A 10 */	fabs f1, f1
/* 801D3C0C 001CF86C  C8 02 95 20 */	lfd f0, lbl_80641B20-_SDA2_BASE_(r2)
/* 801D3C10 001CF870  FC 20 08 24 */	fdiv f1, f0, f1
/* 801D3C14 001CF874  48 00 01 E0 */	b lbl_801D3DF4
lbl_801D3C18:
/* 801D3C18 001CF878  2C 03 00 01 */	cmpwi r3, 1
/* 801D3C1C 001CF87C  40 82 00 08 */	bne lbl_801D3C24
/* 801D3C20 001CF880  48 00 01 D4 */	b lbl_801D3DF4
lbl_801D3C24:
/* 801D3C24 001CF884  C8 02 95 28 */	lfd f0, lbl_80641B28-_SDA2_BASE_(r2)
/* 801D3C28 001CF888  FC 20 08 24 */	fdiv f1, f0, f1
/* 801D3C2C 001CF88C  48 00 01 C8 */	b lbl_801D3DF4
lbl_801D3C30:
/* 801D3C30 001CF890  3C 80 3F E6 */	lis r4, 0x3FE59428@ha
/* 801D3C34 001CF894  38 04 94 28 */	addi r0, r4, 0x3FE59428@l
/* 801D3C38 001CF898  7C 07 00 00 */	cmpw r7, r0
/* 801D3C3C 001CF89C  41 80 00 30 */	blt lbl_801D3C6C
/* 801D3C40 001CF8A0  2C 08 00 00 */	cmpwi r8, 0
/* 801D3C44 001CF8A4  40 80 00 0C */	bge lbl_801D3C50
/* 801D3C48 001CF8A8  FC 20 08 50 */	fneg f1, f1
/* 801D3C4C 001CF8AC  FC 40 10 50 */	fneg f2, f2
lbl_801D3C50:
/* 801D3C50 001CF8B0  C8 62 95 30 */	lfd f3, lbl_80641B30-_SDA2_BASE_(r2)
/* 801D3C54 001CF8B4  C8 02 95 38 */	lfd f0, lbl_80641B38-_SDA2_BASE_(r2)
/* 801D3C58 001CF8B8  FC 23 08 28 */	fsub f1, f3, f1
/* 801D3C5C 001CF8BC  FC 00 10 28 */	fsub f0, f0, f2
/* 801D3C60 001CF8C0  C8 42 95 40 */	lfd f2, lbl_80641B40-_SDA2_BASE_(r2)
/* 801D3C64 001CF8C4  FC 21 00 2A */	fadd f1, f1, f0
/* 801D3C68 001CF8C8  D8 21 00 08 */	stfd f1, 8(r1)
lbl_801D3C6C:
/* 801D3C6C 001CF8CC  FC 01 00 72 */	fmul f0, f1, f1
/* 801D3C70 001CF8D0  3C C0 80 40 */	lis r6, lbl_803FD540@ha
/* 801D3C74 001CF8D4  38 A6 D5 40 */	addi r5, r6, lbl_803FD540@l
/* 801D3C78 001CF8D8  3C 80 3F E6 */	lis r4, 0x3FE59428@ha
/* 801D3C7C 001CF8DC  38 04 94 28 */	addi r0, r4, 0x3FE59428@l
/* 801D3C80 001CF8E0  C8 A5 00 60 */	lfd f5, 0x60(r5)
/* 801D3C84 001CF8E4  FC 60 00 32 */	fmul f3, f0, f0
/* 801D3C88 001CF8E8  C9 05 00 58 */	lfd f8, 0x58(r5)
/* 801D3C8C 001CF8EC  C8 C5 00 50 */	lfd f6, 0x50(r5)
/* 801D3C90 001CF8F0  7C 07 00 00 */	cmpw r7, r0
/* 801D3C94 001CF8F4  C9 45 00 48 */	lfd f10, 0x48(r5)
/* 801D3C98 001CF8F8  FC 80 00 72 */	fmul f4, f0, f1
/* 801D3C9C 001CF8FC  FC E3 01 72 */	fmul f7, f3, f5
/* 801D3CA0 001CF900  C8 A6 D5 40 */	lfd f5, -0x2ac0(r6)
/* 801D3CA4 001CF904  C9 25 00 40 */	lfd f9, 0x40(r5)
/* 801D3CA8 001CF908  FD 63 02 32 */	fmul f11, f3, f8
/* 801D3CAC 001CF90C  CB E5 00 38 */	lfd f31, 0x38(r5)
/* 801D3CB0 001CF910  C9 05 00 30 */	lfd f8, 0x30(r5)
/* 801D3CB4 001CF914  FC C6 38 2A */	fadd f6, f6, f7
/* 801D3CB8 001CF918  C9 A5 00 28 */	lfd f13, 0x28(r5)
/* 801D3CBC 001CF91C  FF CA 58 2A */	fadd f30, f10, f11
/* 801D3CC0 001CF920  C8 E5 00 20 */	lfd f7, 0x20(r5)
/* 801D3CC4 001CF924  FC A5 01 32 */	fmul f5, f5, f4
/* 801D3CC8 001CF928  C9 85 00 18 */	lfd f12, 0x18(r5)
/* 801D3CCC 001CF92C  FD 43 01 B2 */	fmul f10, f3, f6
/* 801D3CD0 001CF930  C8 C5 00 10 */	lfd f6, 0x10(r5)
/* 801D3CD4 001CF934  C9 65 00 08 */	lfd f11, 8(r5)
/* 801D3CD8 001CF938  FF C3 07 B2 */	fmul f30, f3, f30
/* 801D3CDC 001CF93C  D8 01 00 18 */	stfd f0, 0x18(r1)
/* 801D3CE0 001CF940  FD 29 50 2A */	fadd f9, f9, f10
/* 801D3CE4 001CF944  FD 5F F0 2A */	fadd f10, f31, f30
/* 801D3CE8 001CF948  FD 23 02 72 */	fmul f9, f3, f9
/* 801D3CEC 001CF94C  FD 43 02 B2 */	fmul f10, f3, f10
/* 801D3CF0 001CF950  FD 08 48 2A */	fadd f8, f8, f9
/* 801D3CF4 001CF954  FD 2D 50 2A */	fadd f9, f13, f10
/* 801D3CF8 001CF958  FD 03 02 32 */	fmul f8, f3, f8
/* 801D3CFC 001CF95C  FD 23 02 72 */	fmul f9, f3, f9
/* 801D3D00 001CF960  FC E7 40 2A */	fadd f7, f7, f8
/* 801D3D04 001CF964  FD 0C 48 2A */	fadd f8, f12, f9
/* 801D3D08 001CF968  FC E3 01 F2 */	fmul f7, f3, f7
/* 801D3D0C 001CF96C  FD 03 02 32 */	fmul f8, f3, f8
/* 801D3D10 001CF970  FC 66 38 2A */	fadd f3, f6, f7
/* 801D3D14 001CF974  FC CB 40 2A */	fadd f6, f11, f8
/* 801D3D18 001CF978  FC 60 00 F2 */	fmul f3, f0, f3
/* 801D3D1C 001CF97C  FC 66 18 2A */	fadd f3, f6, f3
/* 801D3D20 001CF980  FC 64 00 F2 */	fmul f3, f4, f3
/* 801D3D24 001CF984  FC 62 18 2A */	fadd f3, f2, f3
/* 801D3D28 001CF988  FC 00 00 F2 */	fmul f0, f0, f3
/* 801D3D2C 001CF98C  FC C2 00 2A */	fadd f6, f2, f0
/* 801D3D30 001CF990  FC C6 28 2A */	fadd f6, f6, f5
/* 801D3D34 001CF994  FC 81 30 2A */	fadd f4, f1, f6
/* 801D3D38 001CF998  41 80 00 64 */	blt lbl_801D3D9C
/* 801D3D3C 001CF99C  3C 80 43 30 */	lis r4, 0x4330
/* 801D3D40 001CF9A0  6C 60 80 00 */	xoris r0, r3, 0x8000
/* 801D3D44 001CF9A4  90 01 00 24 */	stw r0, 0x24(r1)
/* 801D3D48 001CF9A8  55 00 17 BC */	rlwinm r0, r8, 2, 0x1e, 0x1e
/* 801D3D4C 001CF9AC  20 00 00 01 */	subfic r0, r0, 1
/* 801D3D50 001CF9B0  C8 A2 95 50 */	lfd f5, lbl_80641B50-_SDA2_BASE_(r2)
/* 801D3D54 001CF9B4  90 81 00 20 */	stw r4, 0x20(r1)
/* 801D3D58 001CF9B8  6C 00 80 00 */	xoris r0, r0, 0x8000
/* 801D3D5C 001CF9BC  FC 64 01 32 */	fmul f3, f4, f4
/* 801D3D60 001CF9C0  C8 02 95 48 */	lfd f0, lbl_80641B48-_SDA2_BASE_(r2)
/* 801D3D64 001CF9C4  C8 41 00 20 */	lfd f2, 0x20(r1)
/* 801D3D68 001CF9C8  90 01 00 2C */	stw r0, 0x2c(r1)
/* 801D3D6C 001CF9CC  FC E2 28 28 */	fsub f7, f2, f5
/* 801D3D70 001CF9D0  90 81 00 28 */	stw r4, 0x28(r1)
/* 801D3D74 001CF9D4  FC 44 38 2A */	fadd f2, f4, f7
/* 801D3D78 001CF9D8  C8 81 00 28 */	lfd f4, 0x28(r1)
/* 801D3D7C 001CF9DC  FC 84 28 28 */	fsub f4, f4, f5
/* 801D3D80 001CF9E0  FC 43 10 24 */	fdiv f2, f3, f2
/* 801D3D84 001CF9E4  FC 42 30 28 */	fsub f2, f2, f6
/* 801D3D88 001CF9E8  FC 21 10 28 */	fsub f1, f1, f2
/* 801D3D8C 001CF9EC  FC 00 00 72 */	fmul f0, f0, f1
/* 801D3D90 001CF9F0  FC 07 00 28 */	fsub f0, f7, f0
/* 801D3D94 001CF9F4  FC 24 00 32 */	fmul f1, f4, f0
/* 801D3D98 001CF9F8  48 00 00 5C */	b lbl_801D3DF4
lbl_801D3D9C:
/* 801D3D9C 001CF9FC  2C 03 00 01 */	cmpwi r3, 1
/* 801D3DA0 001CFA00  40 82 00 0C */	bne lbl_801D3DAC
/* 801D3DA4 001CFA04  FC 20 20 90 */	fmr f1, f4
/* 801D3DA8 001CFA08  48 00 00 4C */	b lbl_801D3DF4
lbl_801D3DAC:
/* 801D3DAC 001CFA0C  C8 02 95 28 */	lfd f0, lbl_80641B28-_SDA2_BASE_(r2)
/* 801D3DB0 001CFA10  38 00 00 00 */	li r0, 0
/* 801D3DB4 001CFA14  D8 81 00 18 */	stfd f4, 0x18(r1)
/* 801D3DB8 001CFA18  FC A0 20 24 */	fdiv f5, f0, f4
/* 801D3DBC 001CFA1C  C8 42 95 20 */	lfd f2, lbl_80641B20-_SDA2_BASE_(r2)
/* 801D3DC0 001CFA20  90 01 00 1C */	stw r0, 0x1c(r1)
/* 801D3DC4 001CFA24  C8 81 00 18 */	lfd f4, 0x18(r1)
/* 801D3DC8 001CFA28  D8 A1 00 10 */	stfd f5, 0x10(r1)
/* 801D3DCC 001CFA2C  FC 04 08 28 */	fsub f0, f4, f1
/* 801D3DD0 001CFA30  90 01 00 14 */	stw r0, 0x14(r1)
/* 801D3DD4 001CFA34  FC 06 00 28 */	fsub f0, f6, f0
/* 801D3DD8 001CFA38  C8 61 00 10 */	lfd f3, 0x10(r1)
/* 801D3DDC 001CFA3C  FC 23 01 32 */	fmul f1, f3, f4
/* 801D3DE0 001CFA40  FC 03 00 32 */	fmul f0, f3, f0
/* 801D3DE4 001CFA44  FC 22 08 2A */	fadd f1, f2, f1
/* 801D3DE8 001CFA48  FC 01 00 2A */	fadd f0, f1, f0
/* 801D3DEC 001CFA4C  FC 05 00 32 */	fmul f0, f5, f0
/* 801D3DF0 001CFA50  FC 23 00 2A */	fadd f1, f3, f0
lbl_801D3DF4:
/* 801D3DF4 001CFA54  E3 E1 00 48 */	psq_l f31, 72(r1), 0, qr0
/* 801D3DF8 001CFA58  CB E1 00 40 */	lfd f31, 0x40(r1)
/* 801D3DFC 001CFA5C  E3 C1 00 38 */	psq_l f30, 56(r1), 0, qr0
/* 801D3E00 001CFA60  CB C1 00 30 */	lfd f30, 0x30(r1)
/* 801D3E04 001CFA64  38 21 00 50 */	addi r1, r1, 0x50
/* 801D3E08 001CFA68  4E 80 00 20 */	blr