445a7981bf34a29c5b9ab8ac689716cdc9dc140d
[platform/upstream/gstreamer.git] / ext / cog / gstcogorc.orc
1
2
3 .function cogorc_downsample_horiz_cosite_1tap
4 .dest 1 d1
5 .source 2 s1
6
7 select0wb d1, s1
8
9
10 .function cogorc_downsample_horiz_cosite_3tap
11 .dest 1 d1
12 .source 2 s1
13 .source 2 s2
14 .temp 1 t1
15 .temp 1 t2
16 .temp 1 t3
17 .temp 2 t4
18 .temp 2 t5
19 .temp 2 t6
20
21 copyw t4, s1
22 select0wb t1, t4
23 select1wb t2, t4
24 select0wb t3, s2
25 convubw t4, t1
26 convubw t5, t2
27 convubw t6, t3
28 mullw t5, t5, 2
29 addw t4, t4, t6
30 addw t4, t4, t5
31 addw t4, t4, 2
32 shrsw t4, t4, 2
33 convsuswb d1, t4
34
35
36 .function cogorc_downsample_420_jpeg
37 .dest 1 d1
38 .source 2 s1
39 .source 2 s2
40 .temp 2 t1
41 .temp 1 t2
42 .temp 1 t3
43 .temp 1 t4
44 .temp 1 t5
45
46 copyw t1, s1
47 select0wb t2, t1
48 select1wb t3, t1
49 avgub t2, t2, t3
50 copyw t1, s2
51 select0wb t4, t1
52 select1wb t5, t1
53 avgub t4, t4, t5
54 avgub d1, t2, t4
55
56
57 .function cogorc_downsample_vert_halfsite_2tap
58 .dest 1 d1
59 .source 1 s1
60 .source 1 s2
61
62 avgub d1, s1, s2
63
64
65 .function cogorc_downsample_vert_cosite_3tap
66 .dest 1 d1
67 .source 1 s1
68 .source 1 s2
69 .source 1 s3
70 .temp 2 t1
71 .temp 2 t2
72 .temp 2 t3
73
74 convubw t1, s1
75 convubw t2, s2
76 convubw t3, s3
77 mullw t2, t2, 2
78 addw t1, t1, t3
79 addw t1, t1, t2
80 addw t1, t1, 2
81 shrsw t1, t1, 2
82 convsuswb d1, t1
83
84
85
86 .function cogorc_downsample_vert_halfsite_4tap
87 .dest 1 d1
88 .source 1 s1
89 .source 1 s2
90 .source 1 s3
91 .source 1 s4
92 .temp 2 t1
93 .temp 2 t2
94 .temp 2 t3
95 .temp 2 t4
96
97 convubw t1, s1
98 convubw t2, s2
99 convubw t3, s3
100 convubw t4, s4
101 addw t2, t2, t3
102 mullw t2, t2, 26
103 addw t1, t1, t4
104 mullw t1, t1, 6
105 addw t2, t2, t1
106 addw t2, t2, 32
107 shrsw t2, t2, 6
108 convsuswb d1, t2
109
110
111 .function cogorc_upsample_horiz_cosite_1tap
112 .dest 2 d1 guint8
113 .source 1 s1
114 .temp 1 t1
115
116 copyb t1, s1
117 mergebw d1, t1, t1
118
119
120 .function cogorc_upsample_horiz_cosite
121 .dest 2 d1 guint8
122 .source 1 s1
123 .source 1 s2
124 .temp 1 t1
125 .temp 1 t2
126
127 copyb t1, s1
128 avgub t2, t1, s2
129 mergebw d1, t1, t2
130
131
132 .function cogorc_upsample_vert_avgub
133 .dest 1 d1
134 .source 1 s1
135 .source 1 s2
136
137 avgub d1, s1, s2
138
139
140
141
142 .function orc_unpack_yuyv_y
143 .dest 1 d1
144 .source 2 s1
145
146 select0wb d1, s1
147
148
149 .function orc_unpack_yuyv_u
150 .dest 1 d1
151 .source 4 s1
152 .temp 2 t1
153
154 select0lw t1, s1
155 select1wb d1, t1
156
157
158 .function orc_unpack_yuyv_v
159 .dest 1 d1
160 .source 4 s1
161 .temp 2 t1
162
163 select1lw t1, s1
164 select1wb d1, t1
165
166
167 .function orc_pack_yuyv
168 .dest 4 d1
169 .source 2 s1 guint8
170 .source 1 s2
171 .source 1 s3
172 .temp 1 t1
173 .temp 1 t2
174 .temp 2 t3
175 .temp 2 t4
176 .temp 2 t5
177
178 copyw t5, s1
179 select0wb t1, t5
180 select1wb t2, t5
181 mergebw t3, t1, s2
182 mergebw t4, t2, s3
183 mergewl d1, t3, t4
184
185
186 .function orc_unpack_uyvy_y
187 .dest 1 d1
188 .source 2 s1
189
190 select1wb d1, s1
191
192
193 .function orc_unpack_uyvy_u
194 .dest 1 d1
195 .source 4 s1
196 .temp 2 t1
197
198 select0lw t1, s1
199 select0wb d1, t1
200
201
202 .function orc_unpack_uyvy_v
203 .dest 1 d1
204 .source 4 s1
205 .temp 2 t1
206
207 select1lw t1, s1
208 select0wb d1, t1
209
210
211 .function orc_pack_uyvy
212 .dest 4 d1
213 .source 2 s1 guint8
214 .source 1 s2
215 .source 1 s3
216 .temp 1 t1
217 .temp 1 t2
218 .temp 2 t3
219 .temp 2 t4
220 .temp 2 t5
221
222 copyw t5, s1
223 select0wb t1, t5
224 select1wb t2, t5
225 mergebw t3, s2, t1
226 mergebw t4, s3, t2
227 mergewl d1, t3, t4
228
229
230 .function orc_addc_convert_u8_s16
231 .dest 1 d1
232 .source 2 s1 gint16
233 .temp 2 t1
234
235 addw t1, s1, 128
236 convsuswb d1, t1
237
238
239 .function orc_subc_convert_s16_u8
240 .dest 2 d1 gint16
241 .source 1 s1
242 .temp 2 t1
243
244 convubw t1, s1
245 subw d1, t1, 128
246
247
248 .function orc_splat_u8_ns
249 .dest 1 d1
250 .param 1 p1
251
252 copyb d1, p1
253
254
255 .function orc_splat_s16_ns
256 .dest 2 d1 gint16
257 .param 2 p1
258
259 copyw d1, p1
260
261
262 .function orc_matrix2_u8
263 .dest 1 d1 guint8
264 .source 1 s1 guint8
265 .source 1 s2 guint8
266 .param 2 p1
267 .param 2 p2
268 .param 2 p3
269 .temp 2 t1
270 .temp 2 t2
271
272 convubw t1, s1
273 mullw t1, t1, p1
274 convubw t2, s2
275 mullw t2, t2, p2
276 addw t1, t1, t2
277 addw t1, t1, p3
278 shrsw t1, t1, 6
279 convsuswb d1, t1
280
281
282 .function orc_matrix2_11_u8
283 .dest 1 d1 guint8
284 .source 1 s1 guint8
285 .source 1 s2 guint8
286 .param 2 p1
287 .param 2 p2
288 .temp 2 t1
289 .temp 2 t2
290 .temp 2 t3
291 .temp 2 t4
292
293 convubw t1, s1
294 subw t1, t1, 16
295 mullw t3, t1, p1
296 convubw t2, s2
297 subw t2, t2, 128
298 mullw t4, t2, p2
299 addw t3, t3, t4
300 addw t3, t3, 128
301 shrsw t3, t3, 8
302 addw t3, t3, t1
303 addw t3, t3, t2
304 convsuswb d1, t3
305
306
307 .function orc_matrix2_12_u8
308 .dest 1 d1 guint8
309 .source 1 s1 guint8
310 .source 1 s2 guint8
311 .param 2 p1
312 .param 2 p2
313 .temp 2 t1
314 .temp 2 t2
315 .temp 2 t3
316 .temp 2 t4
317
318 convubw t1, s1
319 subw t1, t1, 16
320 mullw t3, t1, p1
321 convubw t2, s2
322 subw t2, t2, 128
323 mullw t4, t2, p2
324 addw t3, t3, t4
325 addw t3, t3, 128
326 shrsw t3, t3, 8
327 addw t3, t3, t1
328 addw t3, t3, t2
329 addw t3, t3, t2
330 convsuswb d1, t3
331
332
333 .function orc_matrix3_u8
334 .dest 1 d1 guint8
335 .source 1 s1 guint8
336 .source 1 s2 guint8
337 .source 1 s3 guint8
338 .param 2 p1
339 .param 2 p2
340 .param 2 p3
341 .param 2 p4
342 .temp 2 t1
343 .temp 2 t2
344
345 convubw t1, s1
346 mullw t1, t1, p1
347 convubw t2, s2
348 mullw t2, t2, p2
349 addw t1, t1, t2
350 convubw t2, s3
351 mullw t2, t2, p3
352 addw t1, t1, t2
353 addw t1, t1, p4
354 shrsw t1, t1, 6
355 convsuswb d1, t1
356
357
358 .function orc_matrix3_100_u8
359 .dest 1 d1 guint8
360 .source 1 s1 guint8
361 .source 1 s2 guint8
362 .source 1 s3 guint8
363 .param 2 p1
364 .param 2 p2
365 .param 2 p3
366 .temp 2 t1
367 .temp 2 t2
368 .temp 2 t3
369 #.temp 2 t4
370
371 convubw t1, s1
372 subw t1, t1, 16
373 mullw t3, t1, p1
374 convubw t2, s2
375 subw t2, t2, 128
376 mullw t2, t2, p2
377 addw t3, t3, t2
378 convubw t2, s3
379 subw t2, t2, 128
380 mullw t2, t2, p3
381 addw t3, t3, t2
382 addw t3, t3, 128
383 shrsw t3, t3, 8
384 addw t3, t3, t1
385 convsuswb d1, t3
386
387
388 .function orc_matrix3_100_offset_u8
389 .dest 1 d1 guint8
390 .source 1 s1 guint8
391 .source 1 s2 guint8
392 .source 1 s3 guint8
393 .param 2 p1
394 .param 2 p2
395 .param 2 p3
396 .param 2 p4
397 .param 2 p5
398 #.param 2 p6
399 .temp 2 t1
400 .temp 2 t2
401 .temp 2 t3
402 #.temp 2 t3
403 #.temp 2 t4
404
405 convubw t3, s1
406 mullw t1, t3, p1
407 convubw t2, s2
408 mullw t2, t2, p2
409 addw t1, t1, t2
410 convubw t2, s3
411 mullw t2, t2, p3
412 addw t1, t1, t2
413 addw t1, t1, p4
414 shrsw t1, t1, p5
415 #addw t1, t1, p6
416 addw t1, t1, t3
417 convsuswb d1, t1
418
419
420
421 .function orc_matrix3_000_u8
422 .dest 1 d1 guint8
423 .source 1 s1 guint8
424 .source 1 s2 guint8
425 .source 1 s3 guint8
426 .param 2 p1
427 .param 2 p2
428 .param 2 p3
429 .param 2 p4
430 .param 2 p5
431 #.param 2 p6
432 .temp 2 t1
433 .temp 2 t2
434 #.temp 2 t3
435 #.temp 2 t4
436
437 convubw t1, s1
438 mullw t1, t1, p1
439 convubw t2, s2
440 mullw t2, t2, p2
441 addw t1, t1, t2
442 convubw t2, s3
443 mullw t2, t2, p3
444 addw t1, t1, t2
445 addw t1, t1, p4
446 shrsw t1, t1, p5
447 #addw t1, t1, p6
448 convwb d1, t1
449
450
451
452 .function orc_pack_123x
453 .dest 4 d1 guint32
454 .source 1 s1
455 .source 1 s2
456 .source 1 s3
457 .param 1 p1
458 .temp 2 t1
459 .temp 2 t2
460
461 mergebw t1, s1, s2
462 mergebw t2, s3, p1
463 mergewl d1, t1, t2
464
465
466 .function orc_pack_x123
467 .dest 4 d1 guint32
468 .source 1 s1
469 .source 1 s2
470 .source 1 s3
471 .param 1 p1
472 .temp 2 t1
473 .temp 2 t2
474
475 mergebw t1, p1, s1
476 mergebw t2, s2, s3
477 mergewl d1, t1, t2
478
479
480 .function cogorc_combine2_u8
481 .dest 1 d1
482 .source 1 s1
483 .source 1 s2
484 .param 2 p1
485 .param 2 p2
486 .temp 2 t1
487 .temp 2 t2
488
489 convubw t1, s1
490 mullw t1, t1, p1
491 convubw t2, s2
492 mullw t2, t2, p2
493 addw t1, t1, t2
494 shruw t1, t1, 8
495 convuuswb d1, t1
496
497
498 .function cogorc_combine4_u8
499 .dest 1 d1
500 .source 1 s1
501 .source 1 s2
502 .source 1 s3
503 .source 1 s4
504 .param 2 p1
505 .param 2 p2
506 .param 2 p3
507 .param 2 p4
508 .temp 2 t1
509 .temp 2 t2
510
511 convubw t1, s1
512 mullw t1, t1, p1
513 convubw t2, s2
514 mullw t2, t2, p2
515 addw t1, t1, t2
516 convubw t2, s3
517 mullw t2, t2, p3
518 addw t1, t1, t2
519 convubw t2, s4
520 mullw t2, t2, p4
521 addw t1, t1, t2
522 addw t1, t1, 32
523 shrsw t1, t1, 6
524 convsuswb d1, t1
525
526
527 .function cogorc_unpack_axyz_0
528 .dest 1 d1
529 .source 4 s1
530 .temp 2 t1
531
532 select0lw t1, s1
533 select0wb d1, t1
534
535
536 .function cogorc_unpack_axyz_1
537 .dest 1 d1
538 .source 4 s1
539 .temp 2 t1
540
541 select0lw t1, s1
542 select1wb d1, t1
543
544
545 .function cogorc_unpack_axyz_2
546 .dest 1 d1
547 .source 4 s1
548 .temp 2 t1
549
550 select1lw t1, s1
551 select0wb d1, t1
552
553
554 .function cogorc_unpack_axyz_3
555 .dest 1 d1
556 .source 4 s1
557 .temp 2 t1
558
559 select1lw t1, s1
560 select1wb d1, t1
561
562