Subversion Repositories Kolibri OS

Rev

Rev 425 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 425 Rev 431
-
 
1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
 
2
;;                                                              ;;
-
 
3
;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;;
-
 
4
;; Distributed under terms of the GNU General Public License    ;;
-
 
5
;;                                                              ;;
-
 
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1
; params
7
 
2
;  edi= output
8
; params
3
;  eax= input stream 1
9
;  edi= output
4
;  ebx= input stream 2
10
;  eax= input stream 1
5
 
11
;  ebx= input stream 2
6
if used mmx_mix_2
12
 
7
 
13
if used mmx_mix_2
8
align 4
14
 
9
mmx_mix_2:
15
align 4
10
           movq mm0, [eax]
16
mmx_mix_2:
11
           movq mm1, [eax+8]
17
           movq mm0, [eax]
12
           movq mm2, [eax+16]
18
           movq mm1, [eax+8]
13
           movq mm3, [eax+24]
19
           movq mm2, [eax+16]
14
           movq mm4, [eax+32]
20
           movq mm3, [eax+24]
15
           movq mm5, [eax+40]
21
           movq mm4, [eax+32]
16
           movq mm6, [eax+48]
22
           movq mm5, [eax+40]
17
           movq mm7, [eax+56]
23
           movq mm6, [eax+48]
18
 
24
           movq mm7, [eax+56]
19
           paddsw mm0, [ebx]
25
 
20
           movq [edi], mm0
26
           paddsw mm0, [ebx]
21
           paddsw mm1,[ebx+8]
27
           movq [edi], mm0
22
           movq [edi+8], mm1
28
           paddsw mm1,[ebx+8]
23
           paddsw mm2, [ebx+16]
29
           movq [edi+8], mm1
24
           movq [edi+16], mm2
30
           paddsw mm2, [ebx+16]
25
           paddsw mm3, [ebx+24]
31
           movq [edi+16], mm2
26
           movq [edi+24], mm3
32
           paddsw mm3, [ebx+24]
27
           paddsw mm4, [ebx+32]
33
           movq [edi+24], mm3
28
           movq [edi+32], mm4
34
           paddsw mm4, [ebx+32]
29
           paddsw mm5, [ebx+40]
35
           movq [edi+32], mm4
30
           movq [edi+40], mm5
36
           paddsw mm5, [ebx+40]
31
           paddsw mm6, [ebx+48]
37
           movq [edi+40], mm5
32
           movq [edi+48], mm6
38
           paddsw mm6, [ebx+48]
33
           paddsw mm7, [ebx+56]
39
           movq [edi+48], mm6
34
           movq [edi+56], mm7
40
           paddsw mm7, [ebx+56]
35
 
41
           movq [edi+56], mm7
36
           movq mm0, [eax+64]
42
 
37
           movq mm1, [eax+72]
43
           movq mm0, [eax+64]
38
           movq mm2, [eax+80]
44
           movq mm1, [eax+72]
39
           movq mm3, [eax+88]
45
           movq mm2, [eax+80]
40
           movq mm4, [eax+96]
46
           movq mm3, [eax+88]
41
           movq mm5, [eax+104]
47
           movq mm4, [eax+96]
42
           movq mm6, [eax+112]
48
           movq mm5, [eax+104]
43
           movq mm7, [eax+120]
49
           movq mm6, [eax+112]
44
 
50
           movq mm7, [eax+120]
45
           paddsw mm0, [ebx+64]
51
 
46
           movq [edi+64], mm0
52
           paddsw mm0, [ebx+64]
47
           paddsw mm1, [ebx+72]
53
           movq [edi+64], mm0
48
           movq [edi+72], mm1
54
           paddsw mm1, [ebx+72]
49
           paddsw mm2, [ebx+80]
55
           movq [edi+72], mm1
50
           movq [edi+80], mm2
56
           paddsw mm2, [ebx+80]
51
           paddsw mm3, [ebx+88]
57
           movq [edi+80], mm2
52
           movq [edi+88], mm3
58
           paddsw mm3, [ebx+88]
53
           paddsw mm4, [ebx+96]
59
           movq [edi+88], mm3
54
           movq [edi+96], mm4
60
           paddsw mm4, [ebx+96]
55
           paddsw mm5, [ecx+104]
61
           movq [edi+96], mm4
56
           movq [edx+104], mm5
62
           paddsw mm5, [ecx+104]
57
           paddsw mm6, [ebx+112]
63
           movq [edx+104], mm5
58
           movq [edi+112], mm6
64
           paddsw mm6, [ebx+112]
59
           paddsw mm7, [ebx+120]
65
           movq [edi+112], mm6
60
           movq [edi+120], mm7
66
           paddsw mm7, [ebx+120]
61
           ret
67
           movq [edi+120], mm7
62
 
68
           ret
63
align 4
69
 
64
mmx_mix_3:
70
align 4
65
           movq mm0, [eax]
71
mmx_mix_3:
66
           movq mm1, [eax+8]
72
           movq mm0, [eax]
67
           movq mm2, [eax+16]
73
           movq mm1, [eax+8]
68
           movq mm3, [eax+24]
74
           movq mm2, [eax+16]
69
           movq mm4, [eax+32]
75
           movq mm3, [eax+24]
70
           movq mm5, [eax+40]
76
           movq mm4, [eax+32]
71
           movq mm6, [eax+48]
77
           movq mm5, [eax+40]
72
           movq mm7, [eax+56]
78
           movq mm6, [eax+48]
73
 
79
           movq mm7, [eax+56]
74
           paddsw mm0, [ebx]
80
 
75
           paddsw mm1, [ebx+8]
81
           paddsw mm0, [ebx]
76
           paddsw mm2, [ebx+16]
82
           paddsw mm1, [ebx+8]
77
           paddsw mm3, [ebx+24]
83
           paddsw mm2, [ebx+16]
78
           paddsw mm4, [ebx+32]
84
           paddsw mm3, [ebx+24]
79
           paddsw mm5, [ebx+40]
85
           paddsw mm4, [ebx+32]
80
           paddsw mm6, [ebx+48]
86
           paddsw mm5, [ebx+40]
81
           paddsw mm7, [ebx+56]
87
           paddsw mm6, [ebx+48]
82
           paddsw mm0, [ecx]
88
           paddsw mm7, [ebx+56]
83
           movq [edi], mm0
89
           paddsw mm0, [ecx]
84
           paddsw mm1,[ecx+8]
90
           movq [edi], mm0
85
           movq [edi+8], mm1
91
           paddsw mm1,[ecx+8]
86
           paddsw mm2, [ecx+16]
92
           movq [edi+8], mm1
87
           movq [edi+16], mm2
93
           paddsw mm2, [ecx+16]
88
           paddsw mm3, [ecx+24]
94
           movq [edi+16], mm2
89
           movq [edi+24], mm3
95
           paddsw mm3, [ecx+24]
90
           paddsw mm4, [ecx+32]
96
           movq [edi+24], mm3
91
           movq [edi+32], mm4
97
           paddsw mm4, [ecx+32]
92
           paddsw mm5, [ecx+40]
98
           movq [edi+32], mm4
93
           movq [edi+40], mm5
99
           paddsw mm5, [ecx+40]
94
           paddsw mm6, [ecx+48]
100
           movq [edi+40], mm5
95
           movq [edi+48], mm6
101
           paddsw mm6, [ecx+48]
96
           paddsw mm7, [ecx+56]
102
           movq [edi+48], mm6
97
           movq [edi+56], mm7
103
           paddsw mm7, [ecx+56]
98
 
104
           movq [edi+56], mm7
99
           movq mm0, [eax+64]
105
 
100
           movq mm1, [eax+72]
106
           movq mm0, [eax+64]
101
           movq mm2, [eax+80]
107
           movq mm1, [eax+72]
102
           movq mm3, [eax+88]
108
           movq mm2, [eax+80]
103
           movq mm4, [eax+96]
109
           movq mm3, [eax+88]
104
           movq mm5, [eax+104]
110
           movq mm4, [eax+96]
105
           movq mm6, [eax+112]
111
           movq mm5, [eax+104]
106
           movq mm7, [eax+120]
112
           movq mm6, [eax+112]
107
           paddsw mm0, [ebx+64]
113
           movq mm7, [eax+120]
108
           paddsw mm1, [ebx+72]
114
           paddsw mm0, [ebx+64]
109
           paddsw mm2, [ebx+80]
115
           paddsw mm1, [ebx+72]
110
           paddsw mm3, [ebx+88]
116
           paddsw mm2, [ebx+80]
111
           paddsw mm4, [ebx+96]
117
           paddsw mm3, [ebx+88]
112
           paddsw mm5, [ebx+104]
118
           paddsw mm4, [ebx+96]
113
           paddsw mm6, [ebx+112]
119
           paddsw mm5, [ebx+104]
114
           paddsw mm7, [ebx+120]
120
           paddsw mm6, [ebx+112]
115
           paddsw mm0, [ecx+64]
121
           paddsw mm7, [ebx+120]
116
           movq [edi+64], mm0
122
           paddsw mm0, [ecx+64]
117
           paddsw mm1, [ecx+72]
123
           movq [edi+64], mm0
118
           movq [edi+72], mm1
124
           paddsw mm1, [ecx+72]
119
           paddsw mm2, [ecx+80]
125
           movq [edi+72], mm1
120
           movq [edi+80], mm2
126
           paddsw mm2, [ecx+80]
121
           paddsw mm3, [ecx+88]
127
           movq [edi+80], mm2
122
           movq [edi+88], mm3
128
           paddsw mm3, [ecx+88]
123
           paddsw mm4, [ecx+96]
129
           movq [edi+88], mm3
124
           movq [edi+96], mm4
130
           paddsw mm4, [ecx+96]
125
           paddsw mm5, [ecx+104]
131
           movq [edi+96], mm4
126
           movq [edi+104], mm5
132
           paddsw mm5, [ecx+104]
127
           paddsw mm6, [ecx+112]
133
           movq [edi+104], mm5
128
           movq [edi+112], mm6
134
           paddsw mm6, [ecx+112]
129
           paddsw mm7, [ecx+120]
135
           movq [edi+112], mm6
130
           movq [edi+120], mm7
136
           paddsw mm7, [ecx+120]
131
           ret
137
           movq [edi+120], mm7
132
 
138
           ret
133
align 4
139
 
134
mmx_mix_4:
140
align 4
135
 
141
mmx_mix_4:
136
           movq mm0, [eax]
142
 
137
           movq mm2, [eax+8]
143
           movq mm0, [eax]
138
           movq mm4, [eax+16]
144
           movq mm2, [eax+8]
139
           movq mm6, [eax+24]
145
           movq mm4, [eax+16]
140
           movq mm1, [ebx]
146
           movq mm6, [eax+24]
141
           movq mm3, [ebx+8]
147
           movq mm1, [ebx]
142
           movq mm5, [ebx+16]
148
           movq mm3, [ebx+8]
143
           movq mm7, [ebx+24]
149
           movq mm5, [ebx+16]
144
           paddsw mm0, [ecx]
150
           movq mm7, [ebx+24]
145
           paddsw mm2, [ecx+8]
151
           paddsw mm0, [ecx]
146
           paddsw mm4, [ecx+16]
152
           paddsw mm2, [ecx+8]
147
           paddsw mm6, [ecx+24]
153
           paddsw mm4, [ecx+16]
148
           paddsw mm1, [edx]
154
           paddsw mm6, [ecx+24]
149
           paddsw mm3, [edx+8]
155
           paddsw mm1, [edx]
150
           paddsw mm5, [edx+16]
156
           paddsw mm3, [edx+8]
151
           paddsw mm7, [edx+24]
157
           paddsw mm5, [edx+16]
152
 
158
           paddsw mm7, [edx+24]
153
           paddsw mm0, mm1
159
 
154
           movq [edi], mm0
160
           paddsw mm0, mm1
155
           paddsw mm2, mm3
161
           movq [edi], mm0
156
           movq [edi+8], mm2
162
           paddsw mm2, mm3
157
           paddsw mm4, mm5
163
           movq [edi+8], mm2
158
           movq [edi+16], mm4
164
           paddsw mm4, mm5
159
           paddsw mm5, mm6
165
           movq [edi+16], mm4
160
           movq [edi+24], mm6
166
           paddsw mm5, mm6
161
 
167
           movq [edi+24], mm6
162
           movq mm0, [eax+32]
168
 
163
           movq mm2, [eax+40]
169
           movq mm0, [eax+32]
164
           movq mm4, [eax+48]
170
           movq mm2, [eax+40]
165
           movq mm6, [eax+56]
171
           movq mm4, [eax+48]
166
           movq mm1, [ebx+32]
172
           movq mm6, [eax+56]
167
           movq mm3, [ebx+40]
173
           movq mm1, [ebx+32]
168
           movq mm5, [ebx+48]
174
           movq mm3, [ebx+40]
169
           movq mm7, [ebx+56]
175
           movq mm5, [ebx+48]
170
           paddsw mm0, [ecx+32]
176
           movq mm7, [ebx+56]
171
           paddsw mm2, [ecx+40]
177
           paddsw mm0, [ecx+32]
172
           paddsw mm4, [ecx+48]
178
           paddsw mm2, [ecx+40]
173
           paddsw mm6, [ecx+56]
179
           paddsw mm4, [ecx+48]
174
           paddsw mm1, [edx+32]
180
           paddsw mm6, [ecx+56]
175
           paddsw mm3, [edx+40]
181
           paddsw mm1, [edx+32]
176
           paddsw mm5, [edx+48]
182
           paddsw mm3, [edx+40]
177
           paddsw mm7, [edx+56]
183
           paddsw mm5, [edx+48]
178
 
184
           paddsw mm7, [edx+56]
179
           paddsw mm0, mm1
185
 
180
           movq [edi+32], mm0
186
           paddsw mm0, mm1
181
           paddsw mm2, mm2
187
           movq [edi+32], mm0
182
           movq [edi+40], mm2
188
           paddsw mm2, mm2
183
           paddsw mm4, mm5
189
           movq [edi+40], mm2
184
           movq [edi+48], mm4
190
           paddsw mm4, mm5
185
           paddsw mm6, mm7
191
           movq [edi+48], mm4
186
           movq [edi+56], mm6
192
           paddsw mm6, mm7
187
 
193
           movq [edi+56], mm6
188
           movq mm0, [eax+64]
194
 
189
           movq mm2, [eax+72]
195
           movq mm0, [eax+64]
190
           movq mm4, [eax+80]
196
           movq mm2, [eax+72]
191
           movq mm6, [eax+88]
197
           movq mm4, [eax+80]
192
           movq mm1, [ebx+64]
198
           movq mm6, [eax+88]
193
           movq mm3, [ebx+72]
199
           movq mm1, [ebx+64]
194
           movq mm5, [ebx+80]
200
           movq mm3, [ebx+72]
195
           movq mm7, [ebx+88]
201
           movq mm5, [ebx+80]
196
           paddsw mm0, [ecx+64]
202
           movq mm7, [ebx+88]
197
           paddsw mm2, [ecx+72]
203
           paddsw mm0, [ecx+64]
198
           paddsw mm4, [ecx+80]
204
           paddsw mm2, [ecx+72]
199
           paddsw mm6, [ecx+88]
205
           paddsw mm4, [ecx+80]
200
           paddsw mm1, [edx+64]
206
           paddsw mm6, [ecx+88]
201
           paddsw mm3, [edx+72]
207
           paddsw mm1, [edx+64]
202
           paddsw mm5, [edx+80]
208
           paddsw mm3, [edx+72]
203
           paddsw mm7, [edx+88]
209
           paddsw mm5, [edx+80]
204
 
210
           paddsw mm7, [edx+88]
205
           paddsw mm0, mm1
211
 
206
           movq [edi+64], mm0
212
           paddsw mm0, mm1
207
           paddsw mm2, mm3
213
           movq [edi+64], mm0
208
           movq [edi+72], mm2
214
           paddsw mm2, mm3
209
           paddsw mm4, mm5
215
           movq [edi+72], mm2
210
           movq [edi+80], mm4
216
           paddsw mm4, mm5
211
           paddsw mm6, mm5
217
           movq [edi+80], mm4
212
           movq [edi+88], mm7
218
           paddsw mm6, mm5
213
 
219
           movq [edi+88], mm7
214
           movq mm0, [eax+96]
220
 
215
           movq mm2, [eax+104]
221
           movq mm0, [eax+96]
216
           movq mm4, [eax+112]
222
           movq mm2, [eax+104]
217
           movq mm6, [eax+120]
223
           movq mm4, [eax+112]
218
           movq mm1, [ebx+96]
224
           movq mm6, [eax+120]
219
           movq mm3, [ebx+104]
225
           movq mm1, [ebx+96]
220
           movq mm5, [ebx+112]
226
           movq mm3, [ebx+104]
221
           movq mm7, [ebx+120]
227
           movq mm5, [ebx+112]
222
           paddsw mm0, [ecx+96]
228
           movq mm7, [ebx+120]
223
           paddsw mm2, [ecx+104]
229
           paddsw mm0, [ecx+96]
224
           paddsw mm4, [ecx+112]
230
           paddsw mm2, [ecx+104]
225
           paddsw mm6, [ecx+120]
231
           paddsw mm4, [ecx+112]
226
           paddsw mm1, [edx+96]
232
           paddsw mm6, [ecx+120]
227
           paddsw mm3, [edx+104]
233
           paddsw mm1, [edx+96]
228
           paddsw mm5, [edx+112]
234
           paddsw mm3, [edx+104]
229
           paddsw mm7, [edx+120]
235
           paddsw mm5, [edx+112]
230
           paddsw mm0, mm1
236
           paddsw mm7, [edx+120]
231
           movq [eax+96], mm0
237
           paddsw mm0, mm1
232
           paddsw mm2, mm3
238
           movq [eax+96], mm0
233
           movq [edi+104], mm2
239
           paddsw mm2, mm3
234
           paddsw mm4, mm5
240
           movq [edi+104], mm2
235
           movq [edi+112], mm4
241
           paddsw mm4, mm5
236
           paddsw mm6, mm7
242
           movq [edi+112], mm4
237
           movq [edi+120], mm6
243
           paddsw mm6, mm7
238
           ret
244
           movq [edi+120], mm6
239
 
245
           ret
240
end if
246
 
-
 
247
end if