Subversion Repositories Kolibri OS

Rev

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

Rev Author Line No. Line
431 serge 1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2
;;                                                              ;;
2465 Serge 3
;; Copyright (C) KolibriOS team 2004-2011. All rights reserved. ;;
431 serge 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:
2434 Serge 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]
293 serge 25
 
2434 Serge 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
293 serge 42
 
2434 Serge 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]
293 serge 51
 
2434 Serge 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
293 serge 69
 
70
align 4
71
mmx_mix_3:
2434 Serge 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]
293 serge 80
 
2434 Serge 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
293 serge 105
 
2434 Serge 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
293 serge 139
 
140
align 4
141
mmx_mix_4:
142
 
2434 Serge 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]
293 serge 159
 
2434 Serge 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
293 serge 168
 
2434 Serge 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]
293 serge 185
 
2434 Serge 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
293 serge 194
 
2434 Serge 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]
293 serge 211
 
2434 Serge 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
293 serge 220
 
2434 Serge 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
293 serge 246
 
247
end if