1
|
.include "qf_common.inc"
|
2
|
|
3
|
.text
|
4
|
|
5
|
; ??-????????:
|
6
|
; void qf_mat44_mul(const float* a, const float* b, float* c);
|
7
|
|
8
|
; ???????????:
|
9
|
; * ??? 4-? ?????????? ?? - MCp0411100101
|
10
|
|
11
|
.global qf_mat44_mul
|
12
|
qf_mat44_mul:
|
13
|
.alias qf_mat44_mul.a #SP,4
|
14
|
.alias qf_mat44_mul.b #SP,8
|
15
|
.alias qf_mat44_mul.c #SP,12
|
16
|
.alias qf_mat44_mul.old_i32 #SP,-4
|
17
|
.alias qf_mat44_mul.old_i33 #SP,-8
|
18
|
.alias qf_mat44_mul.old_i34 #SP,-12
|
19
|
|
20
|
.alias qf_mat44_mul.stackb 12 ; ?????????? ???? ??? ????. #BP(#38) ?? ????????????.
|
21
|
.alias qf_mat44_mul.old_i32.newSP #SP,8
|
22
|
.alias qf_mat44_mul.old_i33.newSP #SP,4
|
23
|
.alias qf_mat44_mul.old_i34.newSP #SP
|
24
|
|
25
|
|
26
|
jmp qf_mat44_mul.P0
|
27
|
|
28
|
; ???????? ??? ???? ?????. ????? 1 ?? 3
|
29
|
SP13 := getl #SP
|
30
|
; ?????????? ??????? ?????????? ? ?????????
|
31
|
a := rdl qf_mat44_mul.a
|
32
|
b := rdl qf_mat44_mul.b
|
33
|
c := rdl qf_mat44_mul.c
|
34
|
; ???????? ??? ???? ?????. ????? 2 ?? 3
|
35
|
SP23 := subl @SP13, qf_mat44_mul.stackb
|
36
|
; ????????? ???????? ????????? 32, 33 ? 34
|
37
|
old_i32 := getl #32
|
38
|
old_i33 := getl #33
|
39
|
old_i34 := getl #34
|
40
|
; ???????? ??? ???? ?????. ????? 3 ?? 3
|
41
|
setl #SP, @SP23
|
42
|
; ?????? ? ????????? ???????? ?????????? ?? ?????????
|
43
|
setl #32, @a
|
44
|
setl #33, @b
|
45
|
setl #34, @c
|
46
|
; ?????????? ?????? ???????? ????????? ????????? ? ?????
|
47
|
wrl @old_i32, qf_mat44_mul.old_i32
|
48
|
wrl @old_i33, qf_mat44_mul.old_i33
|
49
|
wrl @old_i34, qf_mat44_mul.old_i34
|
50
|
complete
|
51
|
|
52
|
.local qf_mat44_mul.P0
|
53
|
qf_mat44_mul.P0:
|
54
|
; ????????? ????????. ????? 1 ?? 2
|
55
|
exit := rdl #SP, qf_mat44_mul.stackb
|
56
|
; ?????? ??????? "a"
|
57
|
va01 := rdq #32
|
58
|
va23 := rdq #32,8
|
59
|
va45 := rdq #32,16
|
60
|
va67 := rdq #32,24
|
61
|
va89 := rdq #32,32
|
62
|
vaAB := rdq #32,40
|
63
|
vaCD := rdq #32,48
|
64
|
vaEF := rdq #32,56
|
65
|
; ????????? ????????. ????? 2 ?? 2
|
66
|
jmp @exit
|
67
|
; ??????????????? ???????? ??? ???????? ??????? "a" ? ??????. ????? 1 ?? 2
|
68
|
va54 := pack @va45, @va45
|
69
|
va76 := pack @va67, @va67
|
70
|
; ?????? ??????? "b"
|
71
|
vb01 := rdq #33
|
72
|
vb23 := rdq #33,8
|
73
|
vb45 := rdq #33,16
|
74
|
vb67 := rdq #33,24
|
75
|
vb89 := rdq #33,32
|
76
|
vbAB := rdq #33,40
|
77
|
vbCD := rdq #33,48
|
78
|
vbEF := rdq #33,56
|
79
|
; ??????????????? ???????? ??? ???????? ??????? "a" ? ??????. ????? 2 ?? 2
|
80
|
vaDC := pack @vaCD, @vaCD
|
81
|
vaFE := pack @vaEF, @vaEF
|
82
|
; ???????? ????? ??????? "a"
|
83
|
va04 := patch @va45, @va01
|
84
|
va8C := patch @vaCD, @va89
|
85
|
va15 := pack @va54, @va01
|
86
|
va9D := pack @vaDC, @va89
|
87
|
va26 := patch @va67, @va23
|
88
|
vaAE := patch @vaEF, @vaAB
|
89
|
va37 := pack @va76, @va23
|
90
|
vaBF := pack @vaFE, @vaAB
|
91
|
; ????????? ???????????? ????? ??????? "a" ?? ????????? ??????? "b".
|
92
|
; ??????? ??????? ??? ????????????? ?????????? ??????? ??????????? ??????????.
|
93
|
; ???? ????????? ??? ?????. ?? ?????????? MCp0411100101 ??? ??????????
|
94
|
; ????????? ???????, ??? ?????????? ??????? ?????????? ???????????? ??????.
|
95
|
madd @va04, @vb01
|
96
|
madd @va8C, @vb23
|
97
|
madd @va15, @vb01
|
98
|
madd @va9D, @vb23
|
99
|
madd @va26, @vb01
|
100
|
madd @vaAE, @vb23
|
101
|
madd @va37, @vb01
|
102
|
madd @vaBF, @vb23
|
103
|
madd @va04, @vb45
|
104
|
madd @va8C, @vb67
|
105
|
madd @va15, @vb45
|
106
|
madd @va9D, @vb67
|
107
|
madd @va26, @vb45
|
108
|
madd @vaAE, @vb67
|
109
|
madd @va37, @vb45
|
110
|
madd @vaBF, @vb67
|
111
|
madd @va04, @vb89
|
112
|
madd @va8C, @vbAB
|
113
|
madd @va15, @vb89
|
114
|
madd @va9D, @vbAB
|
115
|
madd @va26, @vb89
|
116
|
madd @vaAE, @vbAB
|
117
|
madd @va37, @vb89
|
118
|
madd @vaBF, @vbAB
|
119
|
madd @va04, @vbCD
|
120
|
madd @va8C, @vbEF
|
121
|
madd @va15, @vbCD
|
122
|
madd @va9D, @vbEF
|
123
|
madd @va26, @vbCD
|
124
|
madd @vaAE, @vbEF
|
125
|
madd @va37, @vbCD
|
126
|
madd @vaBF, @vbEF
|
127
|
vc0 := addf @32, @31
|
128
|
vc1 := addf @31, @30
|
129
|
vc2 := addf @30, @29
|
130
|
vc3 := addf @29, @28
|
131
|
vc4 := addf @28, @27
|
132
|
vc5 := addf @27, @26
|
133
|
vc6 := addf @26, @25
|
134
|
vc7 := addf @25, @24
|
135
|
vc8 := addf @24, @23
|
136
|
vc9 := addf @23, @22
|
137
|
vcA := addf @22, @21
|
138
|
vcB := addf @21, @20
|
139
|
vcC := addf @20, @19
|
140
|
vcD := addf @19, @18
|
141
|
vcE := addf @18, @17
|
142
|
vcF := addf @17, @16
|
143
|
; ?????? ???????????,
|
144
|
; "wrl" ??? ???????? ???? ???????, ??? ???????? ? ?????? ? "wrq".
|
145
|
wrl @vc0, #34
|
146
|
wrl @vc1, #34,4
|
147
|
wrl @vc2, #34,8
|
148
|
wrl @vc3, #34,12
|
149
|
wrl @vc4, #34,16
|
150
|
wrl @vc5, #34,20
|
151
|
wrl @vc6, #34,24
|
152
|
wrl @vc7, #34,28
|
153
|
wrl @vc8, #34,32
|
154
|
wrl @vc9, #34,36
|
155
|
wrl @vcA, #34,40
|
156
|
wrl @vcB, #34,44
|
157
|
wrl @vcC, #34,48
|
158
|
wrl @vcD, #34,52
|
159
|
wrl @vcE, #34,56
|
160
|
wrl @vcF, #34,60
|
161
|
|
162
|
; ??????? ??? ???? ?????. ????? 1 ?? 3
|
163
|
SP13 := getl #SP
|
164
|
; ?????????????? ?????? ???????? ????????? ?????????. ????? 1 ?? 2
|
165
|
old_i34 := rdl qf_mat44_mul.old_i34.newSP
|
166
|
old_i33 := rdl qf_mat44_mul.old_i33.newSP
|
167
|
old_i32 := rdl qf_mat44_mul.old_i32.newSP
|
168
|
; ??????? ??? ???? ?????. ????? 2 ?? 3
|
169
|
SP23 := addl @SP13, qf_mat44_mul.stackb
|
170
|
; ?????????????? ?????? ???????? ????????? ?????????. ????? 2 ?? 2
|
171
|
setl #34, @old_i34
|
172
|
setl #33, @old_i33
|
173
|
setl #32, @old_i32
|
174
|
; ??????? ??? ???? ?????. ????? 3 ?? 3
|
175
|
setl #SP, @SP23
|
176
|
complete
|