summaryrefslogtreecommitdiff
path: root/asm/MSL_C/MSL_Common_Embedded/Math/s_cos.s
blob: 5f733c3decdca70c7217b20675e3b87a07607170 (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
.include "macros.inc"

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

.global cos
cos:
/* 801D4078 001CFCD8  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 801D407C 001CFCDC  7C 08 02 A6 */	mflr r0
/* 801D4080 001CFCE0  3C 60 3F E9 */	lis r3, 0x3FE921FB@ha
/* 801D4084 001CFCE4  C8 42 95 80 */	lfd f2, lbl_80641B80-_SDA2_BASE_(r2)
/* 801D4088 001CFCE8  D8 21 00 08 */	stfd f1, 8(r1)
/* 801D408C 001CFCEC  90 01 00 24 */	stw r0, 0x24(r1)
/* 801D4090 001CFCF0  38 03 21 FB */	addi r0, r3, 0x3FE921FB@l
/* 801D4094 001CFCF4  80 61 00 08 */	lwz r3, 8(r1)
/* 801D4098 001CFCF8  54 63 00 7E */	clrlwi r3, r3, 1
/* 801D409C 001CFCFC  7C 03 00 00 */	cmpw r3, r0
/* 801D40A0 001CFD00  41 81 00 0C */	bgt lbl_801D40AC
/* 801D40A4 001CFD04  4B FF E2 35 */	bl __kernel_cos
/* 801D40A8 001CFD08  48 00 00 94 */	b lbl_801D413C
lbl_801D40AC:
/* 801D40AC 001CFD0C  3C 00 7F F0 */	lis r0, 0x7ff0
/* 801D40B0 001CFD10  7C 03 00 00 */	cmpw r3, r0
/* 801D40B4 001CFD14  41 80 00 0C */	blt lbl_801D40C0
/* 801D40B8 001CFD18  FC 21 08 28 */	fsub f1, f1, f1
/* 801D40BC 001CFD1C  48 00 00 80 */	b lbl_801D413C
lbl_801D40C0:
/* 801D40C0 001CFD20  38 61 00 10 */	addi r3, r1, 0x10
/* 801D40C4 001CFD24  4B FF DE 7D */	bl __ieee754_rem_pio2
/* 801D40C8 001CFD28  54 60 07 BE */	clrlwi r0, r3, 0x1e
/* 801D40CC 001CFD2C  2C 00 00 01 */	cmpwi r0, 1
/* 801D40D0 001CFD30  41 82 00 30 */	beq lbl_801D4100
/* 801D40D4 001CFD34  40 80 00 10 */	bge lbl_801D40E4
/* 801D40D8 001CFD38  2C 00 00 00 */	cmpwi r0, 0
/* 801D40DC 001CFD3C  40 80 00 14 */	bge lbl_801D40F0
/* 801D40E0 001CFD40  48 00 00 4C */	b lbl_801D412C
lbl_801D40E4:
/* 801D40E4 001CFD44  2C 00 00 03 */	cmpwi r0, 3
/* 801D40E8 001CFD48  40 80 00 44 */	bge lbl_801D412C
/* 801D40EC 001CFD4C  48 00 00 2C */	b lbl_801D4118
lbl_801D40F0:
/* 801D40F0 001CFD50  C8 21 00 10 */	lfd f1, 0x10(r1)
/* 801D40F4 001CFD54  C8 41 00 18 */	lfd f2, 0x18(r1)
/* 801D40F8 001CFD58  4B FF E1 E1 */	bl __kernel_cos
/* 801D40FC 001CFD5C  48 00 00 40 */	b lbl_801D413C
lbl_801D4100:
/* 801D4100 001CFD60  C8 21 00 10 */	lfd f1, 0x10(r1)
/* 801D4104 001CFD64  38 60 00 01 */	li r3, 1
/* 801D4108 001CFD68  C8 41 00 18 */	lfd f2, 0x18(r1)
/* 801D410C 001CFD6C  4B FF F9 E9 */	bl __kernel_sin
/* 801D4110 001CFD70  FC 20 08 50 */	fneg f1, f1
/* 801D4114 001CFD74  48 00 00 28 */	b lbl_801D413C
lbl_801D4118:
/* 801D4118 001CFD78  C8 21 00 10 */	lfd f1, 0x10(r1)
/* 801D411C 001CFD7C  C8 41 00 18 */	lfd f2, 0x18(r1)
/* 801D4120 001CFD80  4B FF E1 B9 */	bl __kernel_cos
/* 801D4124 001CFD84  FC 20 08 50 */	fneg f1, f1
/* 801D4128 001CFD88  48 00 00 14 */	b lbl_801D413C
lbl_801D412C:
/* 801D412C 001CFD8C  C8 21 00 10 */	lfd f1, 0x10(r1)
/* 801D4130 001CFD90  38 60 00 01 */	li r3, 1
/* 801D4134 001CFD94  C8 41 00 18 */	lfd f2, 0x18(r1)
/* 801D4138 001CFD98  4B FF F9 BD */	bl __kernel_sin
lbl_801D413C:
/* 801D413C 001CFD9C  80 01 00 24 */	lwz r0, 0x24(r1)
/* 801D4140 001CFDA0  7C 08 03 A6 */	mtlr r0
/* 801D4144 001CFDA4  38 21 00 20 */	addi r1, r1, 0x20
/* 801D4148 001CFDA8  4E 80 00 20 */	blr