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

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

.global sin
sin:
/* 801D4484 001D00E4  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 801D4488 001D00E8  7C 08 02 A6 */	mflr r0
/* 801D448C 001D00EC  3C 60 3F E9 */	lis r3, 0x3FE921FB@ha
/* 801D4490 001D00F0  C8 42 95 C8 */	lfd f2, lbl_80641BC8-_SDA2_BASE_(r2)
/* 801D4494 001D00F4  D8 21 00 08 */	stfd f1, 8(r1)
/* 801D4498 001D00F8  90 01 00 24 */	stw r0, 0x24(r1)
/* 801D449C 001D00FC  38 03 21 FB */	addi r0, r3, 0x3FE921FB@l
/* 801D44A0 001D0100  80 61 00 08 */	lwz r3, 8(r1)
/* 801D44A4 001D0104  54 63 00 7E */	clrlwi r3, r3, 1
/* 801D44A8 001D0108  7C 03 00 00 */	cmpw r3, r0
/* 801D44AC 001D010C  41 81 00 10 */	bgt lbl_801D44BC
/* 801D44B0 001D0110  38 60 00 00 */	li r3, 0
/* 801D44B4 001D0114  4B FF F6 41 */	bl __kernel_sin
/* 801D44B8 001D0118  48 00 00 94 */	b lbl_801D454C
lbl_801D44BC:
/* 801D44BC 001D011C  3C 00 7F F0 */	lis r0, 0x7ff0
/* 801D44C0 001D0120  7C 03 00 00 */	cmpw r3, r0
/* 801D44C4 001D0124  41 80 00 0C */	blt lbl_801D44D0
/* 801D44C8 001D0128  FC 21 08 28 */	fsub f1, f1, f1
/* 801D44CC 001D012C  48 00 00 80 */	b lbl_801D454C
lbl_801D44D0:
/* 801D44D0 001D0130  38 61 00 10 */	addi r3, r1, 0x10
/* 801D44D4 001D0134  4B FF DA 6D */	bl __ieee754_rem_pio2
/* 801D44D8 001D0138  54 60 07 BE */	clrlwi r0, r3, 0x1e
/* 801D44DC 001D013C  2C 00 00 01 */	cmpwi r0, 1
/* 801D44E0 001D0140  41 82 00 34 */	beq lbl_801D4514
/* 801D44E4 001D0144  40 80 00 10 */	bge lbl_801D44F4
/* 801D44E8 001D0148  2C 00 00 00 */	cmpwi r0, 0
/* 801D44EC 001D014C  40 80 00 14 */	bge lbl_801D4500
/* 801D44F0 001D0150  48 00 00 4C */	b lbl_801D453C
lbl_801D44F4:
/* 801D44F4 001D0154  2C 00 00 03 */	cmpwi r0, 3
/* 801D44F8 001D0158  40 80 00 44 */	bge lbl_801D453C
/* 801D44FC 001D015C  48 00 00 28 */	b lbl_801D4524
lbl_801D4500:
/* 801D4500 001D0160  C8 21 00 10 */	lfd f1, 0x10(r1)
/* 801D4504 001D0164  38 60 00 01 */	li r3, 1
/* 801D4508 001D0168  C8 41 00 18 */	lfd f2, 0x18(r1)
/* 801D450C 001D016C  4B FF F5 E9 */	bl __kernel_sin
/* 801D4510 001D0170  48 00 00 3C */	b lbl_801D454C
lbl_801D4514:
/* 801D4514 001D0174  C8 21 00 10 */	lfd f1, 0x10(r1)
/* 801D4518 001D0178  C8 41 00 18 */	lfd f2, 0x18(r1)
/* 801D451C 001D017C  4B FF DD BD */	bl __kernel_cos
/* 801D4520 001D0180  48 00 00 2C */	b lbl_801D454C
lbl_801D4524:
/* 801D4524 001D0184  C8 21 00 10 */	lfd f1, 0x10(r1)
/* 801D4528 001D0188  38 60 00 01 */	li r3, 1
/* 801D452C 001D018C  C8 41 00 18 */	lfd f2, 0x18(r1)
/* 801D4530 001D0190  4B FF F5 C5 */	bl __kernel_sin
/* 801D4534 001D0194  FC 20 08 50 */	fneg f1, f1
/* 801D4538 001D0198  48 00 00 14 */	b lbl_801D454C
lbl_801D453C:
/* 801D453C 001D019C  C8 21 00 10 */	lfd f1, 0x10(r1)
/* 801D4540 001D01A0  C8 41 00 18 */	lfd f2, 0x18(r1)
/* 801D4544 001D01A4  4B FF DD 95 */	bl __kernel_cos
/* 801D4548 001D01A8  FC 20 08 50 */	fneg f1, f1
lbl_801D454C:
/* 801D454C 001D01AC  80 01 00 24 */	lwz r0, 0x24(r1)
/* 801D4550 001D01B0  7C 08 03 A6 */	mtlr r0
/* 801D4554 001D01B4  38 21 00 20 */	addi r1, r1, 0x20
/* 801D4558 001D01B8  4E 80 00 20 */	blr