summaryrefslogtreecommitdiff
path: root/asm/MSL_C/MSL_Common_Embedded/Math/e_asin.s
blob: 9737cd4db1b8416419d3acf19c5a6a4752c52dc6 (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
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
.include "macros.inc"

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

.global __ieee754_asin
__ieee754_asin:
/* 801D0EC0 001CCB20  94 21 FF B0 */	stwu r1, -0x50(r1)
/* 801D0EC4 001CCB24  7C 08 02 A6 */	mflr r0
/* 801D0EC8 001CCB28  90 01 00 54 */	stw r0, 0x54(r1)
/* 801D0ECC 001CCB2C  DB E1 00 40 */	stfd f31, 0x40(r1)
/* 801D0ED0 001CCB30  F3 E1 00 48 */	psq_st f31, 72(r1), 0, qr0
/* 801D0ED4 001CCB34  DB C1 00 30 */	stfd f30, 0x30(r1)
/* 801D0ED8 001CCB38  F3 C1 00 38 */	psq_st f30, 56(r1), 0, qr0
/* 801D0EDC 001CCB3C  DB A1 00 20 */	stfd f29, 0x20(r1)
/* 801D0EE0 001CCB40  F3 A1 00 28 */	psq_st f29, 40(r1), 0, qr0
/* 801D0EE4 001CCB44  3C 00 3F F0 */	lis r0, 0x3ff0
/* 801D0EE8 001CCB48  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 801D0EEC 001CCB4C  D8 21 00 08 */	stfd f1, 8(r1)
/* 801D0EF0 001CCB50  83 E1 00 08 */	lwz r31, 8(r1)
/* 801D0EF4 001CCB54  93 C1 00 18 */	stw r30, 0x18(r1)
/* 801D0EF8 001CCB58  57 FE 00 7E */	clrlwi r30, r31, 1
/* 801D0EFC 001CCB5C  7C 1E 00 00 */	cmpw r30, r0
/* 801D0F00 001CCB60  41 80 00 38 */	blt lbl_801D0F38
/* 801D0F04 001CCB64  80 01 00 0C */	lwz r0, 0xc(r1)
/* 801D0F08 001CCB68  3C 7E C0 10 */	addis r3, r30, 0xc010
/* 801D0F0C 001CCB6C  7C 60 03 79 */	or. r0, r3, r0
/* 801D0F10 001CCB70  40 82 00 1C */	bne lbl_801D0F2C
/* 801D0F14 001CCB74  C8 42 92 18 */	lfd f2, lbl_80641818-_SDA2_BASE_(r2)
/* 801D0F18 001CCB78  C8 02 92 20 */	lfd f0, lbl_80641820-_SDA2_BASE_(r2)
/* 801D0F1C 001CCB7C  FC 42 00 72 */	fmul f2, f2, f1
/* 801D0F20 001CCB80  FC 00 00 72 */	fmul f0, f0, f1
/* 801D0F24 001CCB84  FC 22 00 2A */	fadd f1, f2, f0
/* 801D0F28 001CCB88  48 00 02 00 */	b lbl_801D1128
lbl_801D0F2C:
/* 801D0F2C 001CCB8C  3C 60 80 64 */	lis r3, lbl_8063D6B8@ha
/* 801D0F30 001CCB90  C0 23 D6 B8 */	lfs f1, lbl_8063D6B8@l(r3)
/* 801D0F34 001CCB94  48 00 01 F4 */	b lbl_801D1128
lbl_801D0F38:
/* 801D0F38 001CCB98  3C 00 3F E0 */	lis r0, 0x3fe0
/* 801D0F3C 001CCB9C  7C 1E 00 00 */	cmpw r30, r0
/* 801D0F40 001CCBA0  40 80 00 B8 */	bge lbl_801D0FF8
/* 801D0F44 001CCBA4  3C 00 3E 40 */	lis r0, 0x3e40
/* 801D0F48 001CCBA8  7C 1E 00 00 */	cmpw r30, r0
/* 801D0F4C 001CCBAC  40 80 00 1C */	bge lbl_801D0F68
/* 801D0F50 001CCBB0  C8 42 92 28 */	lfd f2, lbl_80641828-_SDA2_BASE_(r2)
/* 801D0F54 001CCBB4  C8 02 92 30 */	lfd f0, lbl_80641830-_SDA2_BASE_(r2)
/* 801D0F58 001CCBB8  FC 42 08 2A */	fadd f2, f2, f1
/* 801D0F5C 001CCBBC  FC 02 00 40 */	fcmpo cr0, f2, f0
/* 801D0F60 001CCBC0  40 81 00 0C */	ble lbl_801D0F6C
/* 801D0F64 001CCBC4  48 00 01 C4 */	b lbl_801D1128
lbl_801D0F68:
/* 801D0F68 001CCBC8  FF E1 00 72 */	fmul f31, f1, f1
lbl_801D0F6C:
/* 801D0F6C 001CCBCC  C8 42 92 60 */	lfd f2, lbl_80641860-_SDA2_BASE_(r2)
/* 801D0F70 001CCBD0  C8 02 92 80 */	lfd f0, lbl_80641880-_SDA2_BASE_(r2)
/* 801D0F74 001CCBD4  FC 82 07 F2 */	fmul f4, f2, f31
/* 801D0F78 001CCBD8  C8 62 92 58 */	lfd f3, lbl_80641858-_SDA2_BASE_(r2)
/* 801D0F7C 001CCBDC  C9 02 92 50 */	lfd f8, lbl_80641850-_SDA2_BASE_(r2)
/* 801D0F80 001CCBE0  FC 40 07 F2 */	fmul f2, f0, f31
/* 801D0F84 001CCBE4  C8 02 92 78 */	lfd f0, lbl_80641878-_SDA2_BASE_(r2)
/* 801D0F88 001CCBE8  C8 E2 92 48 */	lfd f7, lbl_80641848-_SDA2_BASE_(r2)
/* 801D0F8C 001CCBEC  FC 83 20 2A */	fadd f4, f3, f4
/* 801D0F90 001CCBF0  C8 62 92 70 */	lfd f3, lbl_80641870-_SDA2_BASE_(r2)
/* 801D0F94 001CCBF4  FC 00 10 2A */	fadd f0, f0, f2
/* 801D0F98 001CCBF8  C8 42 92 68 */	lfd f2, lbl_80641868-_SDA2_BASE_(r2)
/* 801D0F9C 001CCBFC  FD 3F 01 32 */	fmul f9, f31, f4
/* 801D0FA0 001CCC00  C8 C2 92 40 */	lfd f6, lbl_80641840-_SDA2_BASE_(r2)
/* 801D0FA4 001CCC04  C8 A2 92 38 */	lfd f5, lbl_80641838-_SDA2_BASE_(r2)
/* 801D0FA8 001CCC08  FC 9F 00 32 */	fmul f4, f31, f0
/* 801D0FAC 001CCC0C  C8 02 92 30 */	lfd f0, lbl_80641830-_SDA2_BASE_(r2)
/* 801D0FB0 001CCC10  FD 08 48 2A */	fadd f8, f8, f9
/* 801D0FB4 001CCC14  FC 63 20 2A */	fadd f3, f3, f4
/* 801D0FB8 001CCC18  FC 9F 02 32 */	fmul f4, f31, f8
/* 801D0FBC 001CCC1C  FC 7F 00 F2 */	fmul f3, f31, f3
/* 801D0FC0 001CCC20  FC 87 20 2A */	fadd f4, f7, f4
/* 801D0FC4 001CCC24  FC 42 18 2A */	fadd f2, f2, f3
/* 801D0FC8 001CCC28  FC 7F 01 32 */	fmul f3, f31, f4
/* 801D0FCC 001CCC2C  FC 5F 00 B2 */	fmul f2, f31, f2
/* 801D0FD0 001CCC30  FC 66 18 2A */	fadd f3, f6, f3
/* 801D0FD4 001CCC34  FC 40 10 2A */	fadd f2, f0, f2
/* 801D0FD8 001CCC38  FC 1F 00 F2 */	fmul f0, f31, f3
/* 801D0FDC 001CCC3C  FC 05 00 2A */	fadd f0, f5, f0
/* 801D0FE0 001CCC40  FC 1F 00 32 */	fmul f0, f31, f0
/* 801D0FE4 001CCC44  FC 40 10 24 */	fdiv f2, f0, f2
/* 801D0FE8 001CCC48  FC 01 00 B2 */	fmul f0, f1, f2
/* 801D0FEC 001CCC4C  D8 41 00 10 */	stfd f2, 0x10(r1)
/* 801D0FF0 001CCC50  FC 21 00 2A */	fadd f1, f1, f0
/* 801D0FF4 001CCC54  48 00 01 34 */	b lbl_801D1128
lbl_801D0FF8:
/* 801D0FF8 001CCC58  FC 20 0A 10 */	fabs f1, f1
/* 801D0FFC 001CCC5C  C9 62 92 30 */	lfd f11, lbl_80641830-_SDA2_BASE_(r2)
/* 801D1000 001CCC60  C8 42 92 88 */	lfd f2, lbl_80641888-_SDA2_BASE_(r2)
/* 801D1004 001CCC64  C8 02 92 60 */	lfd f0, lbl_80641860-_SDA2_BASE_(r2)
/* 801D1008 001CCC68  FC 6B 08 28 */	fsub f3, f11, f1
/* 801D100C 001CCC6C  C8 22 92 80 */	lfd f1, lbl_80641880-_SDA2_BASE_(r2)
/* 801D1010 001CCC70  C9 22 92 58 */	lfd f9, lbl_80641858-_SDA2_BASE_(r2)
/* 801D1014 001CCC74  C9 02 92 50 */	lfd f8, lbl_80641850-_SDA2_BASE_(r2)
/* 801D1018 001CCC78  FF E2 00 F2 */	fmul f31, f2, f3
/* 801D101C 001CCC7C  C8 62 92 78 */	lfd f3, lbl_80641878-_SDA2_BASE_(r2)
/* 801D1020 001CCC80  C8 42 92 70 */	lfd f2, lbl_80641870-_SDA2_BASE_(r2)
/* 801D1024 001CCC84  C8 E2 92 48 */	lfd f7, lbl_80641848-_SDA2_BASE_(r2)
/* 801D1028 001CCC88  C8 C2 92 40 */	lfd f6, lbl_80641840-_SDA2_BASE_(r2)
/* 801D102C 001CCC8C  FD 40 07 F2 */	fmul f10, f0, f31
/* 801D1030 001CCC90  C8 02 92 68 */	lfd f0, lbl_80641868-_SDA2_BASE_(r2)
/* 801D1034 001CCC94  FC 81 07 F2 */	fmul f4, f1, f31
/* 801D1038 001CCC98  C8 A2 92 38 */	lfd f5, lbl_80641838-_SDA2_BASE_(r2)
/* 801D103C 001CCC9C  FD 29 50 2A */	fadd f9, f9, f10
/* 801D1040 001CCCA0  FC 20 F8 90 */	fmr f1, f31
/* 801D1044 001CCCA4  FC 63 20 2A */	fadd f3, f3, f4
/* 801D1048 001CCCA8  FC 9F 02 72 */	fmul f4, f31, f9
/* 801D104C 001CCCAC  FC 7F 00 F2 */	fmul f3, f31, f3
/* 801D1050 001CCCB0  FC 88 20 2A */	fadd f4, f8, f4
/* 801D1054 001CCCB4  FC 42 18 2A */	fadd f2, f2, f3
/* 801D1058 001CCCB8  FC 7F 01 32 */	fmul f3, f31, f4
/* 801D105C 001CCCBC  FC 5F 00 B2 */	fmul f2, f31, f2
/* 801D1060 001CCCC0  FC 67 18 2A */	fadd f3, f7, f3
/* 801D1064 001CCCC4  FC 00 10 2A */	fadd f0, f0, f2
/* 801D1068 001CCCC8  FC 5F 00 F2 */	fmul f2, f31, f3
/* 801D106C 001CCCCC  FC 1F 00 32 */	fmul f0, f31, f0
/* 801D1070 001CCCD0  FC 46 10 2A */	fadd f2, f6, f2
/* 801D1074 001CCCD4  FF AB 00 2A */	fadd f29, f11, f0
/* 801D1078 001CCCD8  FC 1F 00 B2 */	fmul f0, f31, f2
/* 801D107C 001CCCDC  FC 05 00 2A */	fadd f0, f5, f0
/* 801D1080 001CCCE0  FF DF 00 32 */	fmul f30, f31, f0
/* 801D1084 001CCCE4  48 00 37 B1 */	bl sqrt
/* 801D1088 001CCCE8  3C 60 3F EF */	lis r3, 0x3FEF3333@ha
/* 801D108C 001CCCEC  38 03 33 33 */	addi r0, r3, 0x3FEF3333@l
/* 801D1090 001CCCF0  7C 1E 00 00 */	cmpw r30, r0
/* 801D1094 001CCCF4  41 80 00 30 */	blt lbl_801D10C4
/* 801D1098 001CCCF8  FC BE E8 24 */	fdiv f5, f30, f29
/* 801D109C 001CCCFC  C8 62 92 90 */	lfd f3, lbl_80641890-_SDA2_BASE_(r2)
/* 801D10A0 001CCD00  C8 42 92 20 */	lfd f2, lbl_80641820-_SDA2_BASE_(r2)
/* 801D10A4 001CCD04  C8 02 92 18 */	lfd f0, lbl_80641818-_SDA2_BASE_(r2)
/* 801D10A8 001CCD08  FC 81 01 72 */	fmul f4, f1, f5
/* 801D10AC 001CCD0C  D8 A1 00 10 */	stfd f5, 0x10(r1)
/* 801D10B0 001CCD10  FC 21 20 2A */	fadd f1, f1, f4
/* 801D10B4 001CCD14  FC 23 00 72 */	fmul f1, f3, f1
/* 801D10B8 001CCD18  FC 21 10 28 */	fsub f1, f1, f2
/* 801D10BC 001CCD1C  FC 20 08 28 */	fsub f1, f0, f1
/* 801D10C0 001CCD20  48 00 00 58 */	b lbl_801D1118
lbl_801D10C4:
/* 801D10C4 001CCD24  D8 21 00 10 */	stfd f1, 0x10(r1)
/* 801D10C8 001CCD28  38 00 00 00 */	li r0, 0
/* 801D10CC 001CCD2C  C8 A2 92 90 */	lfd f5, lbl_80641890-_SDA2_BASE_(r2)
/* 801D10D0 001CCD30  FD 1E E8 24 */	fdiv f8, f30, f29
/* 801D10D4 001CCD34  90 01 00 14 */	stw r0, 0x14(r1)
/* 801D10D8 001CCD38  C8 62 92 20 */	lfd f3, lbl_80641820-_SDA2_BASE_(r2)
/* 801D10DC 001CCD3C  C8 E1 00 10 */	lfd f7, 0x10(r1)
/* 801D10E0 001CCD40  C8 42 92 98 */	lfd f2, lbl_80641898-_SDA2_BASE_(r2)
/* 801D10E4 001CCD44  FC 85 00 72 */	fmul f4, f5, f1
/* 801D10E8 001CCD48  FC 07 01 F2 */	fmul f0, f7, f7
/* 801D10EC 001CCD4C  FC C1 38 2A */	fadd f6, f1, f7
/* 801D10F0 001CCD50  FC 84 02 32 */	fmul f4, f4, f8
/* 801D10F4 001CCD54  FC 3F 00 28 */	fsub f1, f31, f0
/* 801D10F8 001CCD58  FC 05 01 F2 */	fmul f0, f5, f7
/* 801D10FC 001CCD5C  FC 21 30 24 */	fdiv f1, f1, f6
/* 801D1100 001CCD60  FC 25 00 72 */	fmul f1, f5, f1
/* 801D1104 001CCD64  FC 23 08 28 */	fsub f1, f3, f1
/* 801D1108 001CCD68  FC 62 00 28 */	fsub f3, f2, f0
/* 801D110C 001CCD6C  FC 04 08 28 */	fsub f0, f4, f1
/* 801D1110 001CCD70  FC 00 18 28 */	fsub f0, f0, f3
/* 801D1114 001CCD74  FC 22 00 28 */	fsub f1, f2, f0
lbl_801D1118:
/* 801D1118 001CCD78  2C 1F 00 00 */	cmpwi r31, 0
/* 801D111C 001CCD7C  40 81 00 08 */	ble lbl_801D1124
/* 801D1120 001CCD80  48 00 00 08 */	b lbl_801D1128
lbl_801D1124:
/* 801D1124 001CCD84  FC 20 08 50 */	fneg f1, f1
lbl_801D1128:
/* 801D1128 001CCD88  E3 E1 00 48 */	psq_l f31, 72(r1), 0, qr0
/* 801D112C 001CCD8C  CB E1 00 40 */	lfd f31, 0x40(r1)
/* 801D1130 001CCD90  E3 C1 00 38 */	psq_l f30, 56(r1), 0, qr0
/* 801D1134 001CCD94  CB C1 00 30 */	lfd f30, 0x30(r1)
/* 801D1138 001CCD98  E3 A1 00 28 */	psq_l f29, 40(r1), 0, qr0
/* 801D113C 001CCD9C  CB A1 00 20 */	lfd f29, 0x20(r1)
/* 801D1140 001CCDA0  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 801D1144 001CCDA4  80 01 00 54 */	lwz r0, 0x54(r1)
/* 801D1148 001CCDA8  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 801D114C 001CCDAC  7C 08 03 A6 */	mtlr r0
/* 801D1150 001CCDB0  38 21 00 50 */	addi r1, r1, 0x50
/* 801D1154 001CCDB4  4E 80 00 20 */	blr