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
|
#include "PR/asm.h"
#include "PR/regdef.h"
.text
.align 5
#define MTX_INTPART 0
#define MTX_FRACPART 0x20
LEAF(guMtxF2L)
li.s fv0, 65536.0
li t9, 0xFFFF0000
addu t8, a1, MTX_FRACPART
1:
lwc1 ft0, 0(a0)
mul.s ft1, ft0, fv0
trunc.w.s ft2, ft1
lwc1 ft3, 4(a0)
mul.s ft4, ft3, fv0
trunc.w.s ft5, ft4
mfc1 t0, ft2
mfc1 t1, ft5
and t2, t0, t9
srl t3, t1, 0x10
or t4, t2, t3
sw t4, (MTX_INTPART)(a1)
sll t5, t0, 0x10
and t6, t1, 0xFFFF
or t7, t5, t6
sw t7, (MTX_FRACPART)(a1)
addu a1, a1, 4
addu a0, a0, 8
bne a1, t8, 1b
jr ra
END(guMtxF2L)
|