Subversion Repositories Kolibri OS

Rev

Rev 425 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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