2 /* autogenerated from tvtime.orc */
9 #ifndef _ORC_INTEGER_TYPEDEFS_
10 #define _ORC_INTEGER_TYPEDEFS_
11 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
13 typedef int8_t orc_int8;
14 typedef int16_t orc_int16;
15 typedef int32_t orc_int32;
16 typedef int64_t orc_int64;
17 typedef uint8_t orc_uint8;
18 typedef uint16_t orc_uint16;
19 typedef uint32_t orc_uint32;
20 typedef uint64_t orc_uint64;
21 #define ORC_UINT64_C(x) UINT64_C(x)
22 #elif defined(_MSC_VER)
23 typedef signed __int8 orc_int8;
24 typedef signed __int16 orc_int16;
25 typedef signed __int32 orc_int32;
26 typedef signed __int64 orc_int64;
27 typedef unsigned __int8 orc_uint8;
28 typedef unsigned __int16 orc_uint16;
29 typedef unsigned __int32 orc_uint32;
30 typedef unsigned __int64 orc_uint64;
31 #define ORC_UINT64_C(x) (x##Ui64)
32 #define inline __inline
35 typedef signed char orc_int8;
36 typedef short orc_int16;
37 typedef int orc_int32;
38 typedef unsigned char orc_uint8;
39 typedef unsigned short orc_uint16;
40 typedef unsigned int orc_uint32;
41 #if INT_MAX == LONG_MAX
42 typedef long long orc_int64;
43 typedef unsigned long long orc_uint64;
44 #define ORC_UINT64_C(x) (x##ULL)
46 typedef long orc_int64;
47 typedef unsigned long orc_uint64;
48 #define ORC_UINT64_C(x) (x##UL)
73 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
74 #define ORC_RESTRICT restrict
75 #elif defined(__GNUC__) && __GNUC__ >= 4
76 #define ORC_RESTRICT __restrict__
85 void deinterlace_line_vfir (guint8 * ORC_RESTRICT d1,
86 const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
87 const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4,
88 const guint8 * ORC_RESTRICT s5, int n);
89 void deinterlace_line_linear (guint8 * ORC_RESTRICT d1,
90 const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n);
91 void deinterlace_line_linear_blend (guint8 * ORC_RESTRICT d1,
92 const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
93 const guint8 * ORC_RESTRICT s3, int n);
94 void deinterlace_line_greedy (orc_uint8 * ORC_RESTRICT d1,
95 const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
96 const orc_uint8 * ORC_RESTRICT s3, const orc_uint8 * ORC_RESTRICT s4,
100 /* begin Orc C target preamble */
101 #define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x)))
102 #define ORC_ABS(a) ((a)<0 ? -(a) : (a))
103 #define ORC_MIN(a,b) ((a)<(b) ? (a) : (b))
104 #define ORC_MAX(a,b) ((a)>(b) ? (a) : (b))
105 #define ORC_SB_MAX 127
106 #define ORC_SB_MIN (-1-ORC_SB_MAX)
107 #define ORC_UB_MAX 255
109 #define ORC_SW_MAX 32767
110 #define ORC_SW_MIN (-1-ORC_SW_MAX)
111 #define ORC_UW_MAX 65535
113 #define ORC_SL_MAX 2147483647
114 #define ORC_SL_MIN (-1-ORC_SL_MAX)
115 #define ORC_UL_MAX 4294967295U
117 #define ORC_CLAMP_SB(x) ORC_CLAMP(x,ORC_SB_MIN,ORC_SB_MAX)
118 #define ORC_CLAMP_UB(x) ORC_CLAMP(x,ORC_UB_MIN,ORC_UB_MAX)
119 #define ORC_CLAMP_SW(x) ORC_CLAMP(x,ORC_SW_MIN,ORC_SW_MAX)
120 #define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX)
121 #define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX)
122 #define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX)
123 #define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8))
124 #define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24))
125 #define ORC_SWAP_Q(x) ((((x)&ORC_UINT64_C(0xff))<<56) | (((x)&ORC_UINT64_C(0xff00))<<40) | (((x)&ORC_UINT64_C(0xff0000))<<24) | (((x)&ORC_UINT64_C(0xff000000))<<8) | (((x)&ORC_UINT64_C(0xff00000000))>>8) | (((x)&ORC_UINT64_C(0xff0000000000))>>24) | (((x)&ORC_UINT64_C(0xff000000000000))>>40) | (((x)&ORC_UINT64_C(0xff00000000000000))>>56))
126 #define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset)))
127 #define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff))
128 #define ORC_ISNAN(x) ((((x)&0x7f800000) == 0x7f800000) && (((x)&0x007fffff) != 0))
129 #define ORC_DENORMAL_DOUBLE(x) ((x) & ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == 0) ? ORC_UINT64_C(0xfff0000000000000) : ORC_UINT64_C(0xffffffffffffffff)))
130 #define ORC_ISNAN_DOUBLE(x) ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == ORC_UINT64_C(0x7ff0000000000000)) && (((x)&ORC_UINT64_C(0x000fffffffffffff)) != 0))
132 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
133 #define ORC_RESTRICT restrict
134 #elif defined(__GNUC__) && __GNUC__ >= 4
135 #define ORC_RESTRICT __restrict__
140 /* end Orc C target preamble */
144 /* deinterlace_line_vfir */
147 deinterlace_line_vfir (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
148 const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3,
149 const guint8 * ORC_RESTRICT s4, const guint8 * ORC_RESTRICT s5, int n)
152 orc_int8 *ORC_RESTRICT ptr0;
153 const orc_int8 *ORC_RESTRICT ptr4;
154 const orc_int8 *ORC_RESTRICT ptr5;
155 const orc_int8 *ORC_RESTRICT ptr6;
156 const orc_int8 *ORC_RESTRICT ptr7;
157 const orc_int8 *ORC_RESTRICT ptr8;
179 ptr0 = (orc_int8 *) d1;
180 ptr4 = (orc_int8 *) s1;
181 ptr5 = (orc_int8 *) s2;
182 ptr6 = (orc_int8 *) s3;
183 ptr7 = (orc_int8 *) s4;
184 ptr8 = (orc_int8 *) s5;
187 var40.i = (int) 0x00000004; /* 4 or 1.97626e-323f */
189 for (i = 0; i < n; i++) {
193 var42.i = (orc_uint8) var35;
197 var43.i = (orc_uint8) var36;
199 var44.i = var42.i + var43.i;
203 var45.i = (orc_uint8) var37;
207 var46.i = (orc_uint8) var38;
209 var47.i = var45.i + var46.i;
211 var48.i = var47.i << 2;
215 var49.i = (orc_uint8) var39;
217 var50.i = var49.i << 1;
219 var51.i = var48.i - var44.i;
221 var52.i = var51.i + var50.i;
223 var53.i = var52.i + var40.i;
225 var54.i = var53.i >> 3;
227 var41 = ORC_CLAMP_UB (var54.i);
236 _backup_deinterlace_line_vfir (OrcExecutor * ORC_RESTRICT ex)
240 orc_int8 *ORC_RESTRICT ptr0;
241 const orc_int8 *ORC_RESTRICT ptr4;
242 const orc_int8 *ORC_RESTRICT ptr5;
243 const orc_int8 *ORC_RESTRICT ptr6;
244 const orc_int8 *ORC_RESTRICT ptr7;
245 const orc_int8 *ORC_RESTRICT ptr8;
267 ptr0 = (orc_int8 *) ex->arrays[0];
268 ptr4 = (orc_int8 *) ex->arrays[4];
269 ptr5 = (orc_int8 *) ex->arrays[5];
270 ptr6 = (orc_int8 *) ex->arrays[6];
271 ptr7 = (orc_int8 *) ex->arrays[7];
272 ptr8 = (orc_int8 *) ex->arrays[8];
275 var40.i = (int) 0x00000004; /* 4 or 1.97626e-323f */
277 for (i = 0; i < n; i++) {
281 var42.i = (orc_uint8) var35;
285 var43.i = (orc_uint8) var36;
287 var44.i = var42.i + var43.i;
291 var45.i = (orc_uint8) var37;
295 var46.i = (orc_uint8) var38;
297 var47.i = var45.i + var46.i;
299 var48.i = var47.i << 2;
303 var49.i = (orc_uint8) var39;
305 var50.i = var49.i << 1;
307 var51.i = var48.i - var44.i;
309 var52.i = var51.i + var50.i;
311 var53.i = var52.i + var40.i;
313 var54.i = var53.i >> 3;
315 var41 = ORC_CLAMP_UB (var54.i);
323 deinterlace_line_vfir (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
324 const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3,
325 const guint8 * ORC_RESTRICT s4, const guint8 * ORC_RESTRICT s5, int n)
327 OrcExecutor _ex, *ex = &_ex;
328 static volatile int p_inited = 0;
329 static OrcProgram *p = 0;
330 void (*func) (OrcExecutor *);
333 orc_once_mutex_lock ();
336 p = orc_program_new ();
337 orc_program_set_name (p, "deinterlace_line_vfir");
338 orc_program_set_backup_function (p, _backup_deinterlace_line_vfir);
339 orc_program_add_destination (p, 1, "d1");
340 orc_program_add_source (p, 1, "s1");
341 orc_program_add_source (p, 1, "s2");
342 orc_program_add_source (p, 1, "s3");
343 orc_program_add_source (p, 1, "s4");
344 orc_program_add_source (p, 1, "s5");
345 orc_program_add_constant (p, 4, 0x00000002, "c1");
346 orc_program_add_constant (p, 4, 0x00000001, "c2");
347 orc_program_add_constant (p, 4, 0x00000004, "c3");
348 orc_program_add_constant (p, 4, 0x00000003, "c4");
349 orc_program_add_temporary (p, 2, "t1");
350 orc_program_add_temporary (p, 2, "t2");
351 orc_program_add_temporary (p, 2, "t3");
353 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
355 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S5, ORC_VAR_D1,
357 orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
359 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
361 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S4, ORC_VAR_D1,
363 orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3,
365 orc_program_append_2 (p, "shlw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1,
367 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1,
369 orc_program_append_2 (p, "shlw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2,
371 orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1,
373 orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3,
375 orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C3,
377 orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4,
379 orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T2,
380 ORC_VAR_D1, ORC_VAR_D1);
382 orc_program_compile (p);
385 orc_once_mutex_unlock ();
390 ex->arrays[ORC_VAR_D1] = d1;
391 ex->arrays[ORC_VAR_S1] = (void *) s1;
392 ex->arrays[ORC_VAR_S2] = (void *) s2;
393 ex->arrays[ORC_VAR_S3] = (void *) s3;
394 ex->arrays[ORC_VAR_S4] = (void *) s4;
395 ex->arrays[ORC_VAR_S5] = (void *) s5;
403 /* deinterlace_line_linear */
406 deinterlace_line_linear (guint8 * ORC_RESTRICT d1,
407 const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
410 orc_int8 *ORC_RESTRICT ptr0;
411 const orc_int8 *ORC_RESTRICT ptr4;
412 const orc_int8 *ORC_RESTRICT ptr5;
417 ptr0 = (orc_int8 *) d1;
418 ptr4 = (orc_int8 *) s1;
419 ptr5 = (orc_int8 *) s2;
422 for (i = 0; i < n; i++) {
428 var34 = ((orc_uint8) var32 + (orc_uint8) var33 + 1) >> 1;
437 _backup_deinterlace_line_linear (OrcExecutor * ORC_RESTRICT ex)
441 orc_int8 *ORC_RESTRICT ptr0;
442 const orc_int8 *ORC_RESTRICT ptr4;
443 const orc_int8 *ORC_RESTRICT ptr5;
448 ptr0 = (orc_int8 *) ex->arrays[0];
449 ptr4 = (orc_int8 *) ex->arrays[4];
450 ptr5 = (orc_int8 *) ex->arrays[5];
453 for (i = 0; i < n; i++) {
459 var34 = ((orc_uint8) var32 + (orc_uint8) var33 + 1) >> 1;
467 deinterlace_line_linear (guint8 * ORC_RESTRICT d1,
468 const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
470 OrcExecutor _ex, *ex = &_ex;
471 static volatile int p_inited = 0;
472 static OrcProgram *p = 0;
473 void (*func) (OrcExecutor *);
476 orc_once_mutex_lock ();
479 p = orc_program_new ();
480 orc_program_set_name (p, "deinterlace_line_linear");
481 orc_program_set_backup_function (p, _backup_deinterlace_line_linear);
482 orc_program_add_destination (p, 1, "d1");
483 orc_program_add_source (p, 1, "s1");
484 orc_program_add_source (p, 1, "s2");
486 orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S2,
489 orc_program_compile (p);
492 orc_once_mutex_unlock ();
497 ex->arrays[ORC_VAR_D1] = d1;
498 ex->arrays[ORC_VAR_S1] = (void *) s1;
499 ex->arrays[ORC_VAR_S2] = (void *) s2;
507 /* deinterlace_line_linear_blend */
510 deinterlace_line_linear_blend (guint8 * ORC_RESTRICT d1,
511 const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
512 const guint8 * ORC_RESTRICT s3, int n)
515 orc_int8 *ORC_RESTRICT ptr0;
516 const orc_int8 *ORC_RESTRICT ptr4;
517 const orc_int8 *ORC_RESTRICT ptr5;
518 const orc_int8 *ORC_RESTRICT ptr6;
533 ptr0 = (orc_int8 *) d1;
534 ptr4 = (orc_int8 *) s1;
535 ptr5 = (orc_int8 *) s2;
536 ptr6 = (orc_int8 *) s3;
539 var38.i = (int) 0x00000002; /* 2 or 9.88131e-324f */
541 for (i = 0; i < n; i++) {
545 var40.i = (orc_uint8) var35;
549 var41.i = (orc_uint8) var36;
553 var42.i = (orc_uint8) var37;
555 var43.i = var40.i + var41.i;
557 var44.i = var42.i + var42.i;
559 var45.i = var43.i + var44.i;
561 var46.i = var45.i + var38.i;
563 var47.i = var46.i >> 2;
565 var39 = ORC_CLAMP_UB (var47.i);
574 _backup_deinterlace_line_linear_blend (OrcExecutor * ORC_RESTRICT ex)
578 orc_int8 *ORC_RESTRICT ptr0;
579 const orc_int8 *ORC_RESTRICT ptr4;
580 const orc_int8 *ORC_RESTRICT ptr5;
581 const orc_int8 *ORC_RESTRICT ptr6;
596 ptr0 = (orc_int8 *) ex->arrays[0];
597 ptr4 = (orc_int8 *) ex->arrays[4];
598 ptr5 = (orc_int8 *) ex->arrays[5];
599 ptr6 = (orc_int8 *) ex->arrays[6];
602 var38.i = (int) 0x00000002; /* 2 or 9.88131e-324f */
604 for (i = 0; i < n; i++) {
608 var40.i = (orc_uint8) var35;
612 var41.i = (orc_uint8) var36;
616 var42.i = (orc_uint8) var37;
618 var43.i = var40.i + var41.i;
620 var44.i = var42.i + var42.i;
622 var45.i = var43.i + var44.i;
624 var46.i = var45.i + var38.i;
626 var47.i = var46.i >> 2;
628 var39 = ORC_CLAMP_UB (var47.i);
636 deinterlace_line_linear_blend (guint8 * ORC_RESTRICT d1,
637 const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
638 const guint8 * ORC_RESTRICT s3, int n)
640 OrcExecutor _ex, *ex = &_ex;
641 static volatile int p_inited = 0;
642 static OrcProgram *p = 0;
643 void (*func) (OrcExecutor *);
646 orc_once_mutex_lock ();
649 p = orc_program_new ();
650 orc_program_set_name (p, "deinterlace_line_linear_blend");
651 orc_program_set_backup_function (p,
652 _backup_deinterlace_line_linear_blend);
653 orc_program_add_destination (p, 1, "d1");
654 orc_program_add_source (p, 1, "s1");
655 orc_program_add_source (p, 1, "s2");
656 orc_program_add_source (p, 1, "s3");
657 orc_program_add_constant (p, 4, 0x00000002, "c1");
658 orc_program_add_temporary (p, 2, "t1");
659 orc_program_add_temporary (p, 2, "t2");
660 orc_program_add_temporary (p, 2, "t3");
662 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
664 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
666 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1,
668 orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
670 orc_program_append_2 (p, "addw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T3,
672 orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T3,
674 orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
676 orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
678 orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1,
679 ORC_VAR_D1, ORC_VAR_D1);
681 orc_program_compile (p);
684 orc_once_mutex_unlock ();
689 ex->arrays[ORC_VAR_D1] = d1;
690 ex->arrays[ORC_VAR_S1] = (void *) s1;
691 ex->arrays[ORC_VAR_S2] = (void *) s2;
692 ex->arrays[ORC_VAR_S3] = (void *) s3;
700 /* deinterlace_line_greedy */
703 deinterlace_line_greedy (orc_uint8 * ORC_RESTRICT d1,
704 const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
705 const orc_uint8 * ORC_RESTRICT s3, const orc_uint8 * ORC_RESTRICT s4,
709 orc_int8 *ORC_RESTRICT ptr0;
710 const orc_int8 *ORC_RESTRICT ptr4;
711 const orc_int8 *ORC_RESTRICT ptr5;
712 const orc_int8 *ORC_RESTRICT ptr6;
713 const orc_int8 *ORC_RESTRICT ptr7;
742 ptr0 = (orc_int8 *) d1;
743 ptr4 = (orc_int8 *) s1;
744 ptr5 = (orc_int8 *) s2;
745 ptr6 = (orc_int8 *) s3;
746 ptr7 = (orc_int8 *) s4;
749 var44 = (int) 0x00000080; /* 128 or 6.32404e-322f */
751 var45 = (int) 0x00000080; /* 128 or 6.32404e-322f */
757 for (i = 0; i < n; i++) {
767 var53 = ((orc_uint8) var52 + (orc_uint8) var51 + 1) >> 1;
769 var54 = ORC_MAX ((orc_uint8) var49, (orc_uint8) var53);
771 var55 = ORC_MIN ((orc_uint8) var49, (orc_uint8) var53);
773 var56 = var54 - var55;
775 var57 = ORC_MAX ((orc_uint8) var50, (orc_uint8) var53);
777 var58 = ORC_MIN ((orc_uint8) var50, (orc_uint8) var53);
779 var59 = var57 - var58;
781 var60 = var56 ^ var44;
783 var61 = var59 ^ var45;
785 var62 = (var60 > var61) ? (~0) : 0;
787 var63 = var50 & var62;
789 var64 = (~var62) & var49;
791 var65 = var63 | var64;
793 var66 = ORC_MAX ((orc_uint8) var52, (orc_uint8) var51);
795 var67 = ORC_MIN ((orc_uint8) var52, (orc_uint8) var51);
797 var68 = ORC_CLAMP_UB ((orc_uint8) var66 + (orc_uint8) var46);
799 var69 = ORC_CLAMP_UB ((orc_uint8) var67 - (orc_uint8) var47);
801 var70 = ORC_MIN ((orc_uint8) var65, (orc_uint8) var68);
803 var48 = ORC_MAX ((orc_uint8) var70, (orc_uint8) var69);
812 _backup_deinterlace_line_greedy (OrcExecutor * ORC_RESTRICT ex)
816 orc_int8 *ORC_RESTRICT ptr0;
817 const orc_int8 *ORC_RESTRICT ptr4;
818 const orc_int8 *ORC_RESTRICT ptr5;
819 const orc_int8 *ORC_RESTRICT ptr6;
820 const orc_int8 *ORC_RESTRICT ptr7;
849 ptr0 = (orc_int8 *) ex->arrays[0];
850 ptr4 = (orc_int8 *) ex->arrays[4];
851 ptr5 = (orc_int8 *) ex->arrays[5];
852 ptr6 = (orc_int8 *) ex->arrays[6];
853 ptr7 = (orc_int8 *) ex->arrays[7];
856 var44 = (int) 0x00000080; /* 128 or 6.32404e-322f */
858 var45 = (int) 0x00000080; /* 128 or 6.32404e-322f */
860 var46 = ex->params[24];
862 var47 = ex->params[24];
864 for (i = 0; i < n; i++) {
874 var53 = ((orc_uint8) var52 + (orc_uint8) var51 + 1) >> 1;
876 var54 = ORC_MAX ((orc_uint8) var49, (orc_uint8) var53);
878 var55 = ORC_MIN ((orc_uint8) var49, (orc_uint8) var53);
880 var56 = var54 - var55;
882 var57 = ORC_MAX ((orc_uint8) var50, (orc_uint8) var53);
884 var58 = ORC_MIN ((orc_uint8) var50, (orc_uint8) var53);
886 var59 = var57 - var58;
888 var60 = var56 ^ var44;
890 var61 = var59 ^ var45;
892 var62 = (var60 > var61) ? (~0) : 0;
894 var63 = var50 & var62;
896 var64 = (~var62) & var49;
898 var65 = var63 | var64;
900 var66 = ORC_MAX ((orc_uint8) var52, (orc_uint8) var51);
902 var67 = ORC_MIN ((orc_uint8) var52, (orc_uint8) var51);
904 var68 = ORC_CLAMP_UB ((orc_uint8) var66 + (orc_uint8) var46);
906 var69 = ORC_CLAMP_UB ((orc_uint8) var67 - (orc_uint8) var47);
908 var70 = ORC_MIN ((orc_uint8) var65, (orc_uint8) var68);
910 var48 = ORC_MAX ((orc_uint8) var70, (orc_uint8) var69);
918 deinterlace_line_greedy (orc_uint8 * ORC_RESTRICT d1,
919 const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
920 const orc_uint8 * ORC_RESTRICT s3, const orc_uint8 * ORC_RESTRICT s4,
923 OrcExecutor _ex, *ex = &_ex;
924 static volatile int p_inited = 0;
925 static OrcProgram *p = 0;
926 void (*func) (OrcExecutor *);
929 orc_once_mutex_lock ();
932 p = orc_program_new ();
933 orc_program_set_name (p, "deinterlace_line_greedy");
934 orc_program_set_backup_function (p, _backup_deinterlace_line_greedy);
935 orc_program_add_destination (p, 1, "d1");
936 orc_program_add_source (p, 1, "s1");
937 orc_program_add_source (p, 1, "s2");
938 orc_program_add_source (p, 1, "s3");
939 orc_program_add_source (p, 1, "s4");
940 orc_program_add_constant (p, 4, 0x00000080, "c1");
941 orc_program_add_parameter (p, 1, "p1");
942 orc_program_add_temporary (p, 1, "t1");
943 orc_program_add_temporary (p, 1, "t2");
944 orc_program_add_temporary (p, 1, "t3");
945 orc_program_add_temporary (p, 1, "t4");
946 orc_program_add_temporary (p, 1, "t5");
947 orc_program_add_temporary (p, 1, "t6");
948 orc_program_add_temporary (p, 1, "t7");
949 orc_program_add_temporary (p, 1, "t8");
950 orc_program_add_temporary (p, 1, "t9");
951 orc_program_add_temporary (p, 1, "t10");
952 orc_program_add_temporary (p, 1, "t11");
953 orc_program_add_temporary (p, 1, "t12");
955 orc_program_append_2 (p, "loadb", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
957 orc_program_append_2 (p, "loadb", 0, ORC_VAR_T2, ORC_VAR_S4, ORC_VAR_D1,
959 orc_program_append_2 (p, "loadb", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1,
961 orc_program_append_2 (p, "loadb", 0, ORC_VAR_T4, ORC_VAR_S2, ORC_VAR_D1,
963 orc_program_append_2 (p, "avgub", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_T3,
965 orc_program_append_2 (p, "maxub", 0, ORC_VAR_T8, ORC_VAR_T1, ORC_VAR_T5,
967 orc_program_append_2 (p, "minub", 0, ORC_VAR_T9, ORC_VAR_T1, ORC_VAR_T5,
969 orc_program_append_2 (p, "subb", 0, ORC_VAR_T6, ORC_VAR_T8, ORC_VAR_T9,
971 orc_program_append_2 (p, "maxub", 0, ORC_VAR_T8, ORC_VAR_T2, ORC_VAR_T5,
973 orc_program_append_2 (p, "minub", 0, ORC_VAR_T9, ORC_VAR_T2, ORC_VAR_T5,
975 orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_T8, ORC_VAR_T9,
977 orc_program_append_2 (p, "xorb", 0, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_C1,
979 orc_program_append_2 (p, "xorb", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C1,
981 orc_program_append_2 (p, "cmpgtsb", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_T7,
983 orc_program_append_2 (p, "andb", 0, ORC_VAR_T8, ORC_VAR_T2, ORC_VAR_T9,
985 orc_program_append_2 (p, "andnb", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T1,
987 orc_program_append_2 (p, "orb", 0, ORC_VAR_T10, ORC_VAR_T8, ORC_VAR_T9,
989 orc_program_append_2 (p, "maxub", 0, ORC_VAR_T12, ORC_VAR_T4, ORC_VAR_T3,
991 orc_program_append_2 (p, "minub", 0, ORC_VAR_T11, ORC_VAR_T4, ORC_VAR_T3,
993 orc_program_append_2 (p, "addusb", 0, ORC_VAR_T12, ORC_VAR_T12,
994 ORC_VAR_P1, ORC_VAR_D1);
995 orc_program_append_2 (p, "subusb", 0, ORC_VAR_T11, ORC_VAR_T11,
996 ORC_VAR_P1, ORC_VAR_D1);
997 orc_program_append_2 (p, "minub", 0, ORC_VAR_T10, ORC_VAR_T10,
998 ORC_VAR_T12, ORC_VAR_D1);
999 orc_program_append_2 (p, "maxub", 0, ORC_VAR_D1, ORC_VAR_T10, ORC_VAR_T11,
1002 orc_program_compile (p);
1005 orc_once_mutex_unlock ();
1010 ex->arrays[ORC_VAR_D1] = d1;
1011 ex->arrays[ORC_VAR_S1] = (void *) s1;
1012 ex->arrays[ORC_VAR_S2] = (void *) s2;
1013 ex->arrays[ORC_VAR_S3] = (void *) s3;
1014 ex->arrays[ORC_VAR_S4] = (void *) s4;
1015 ex->params[ORC_VAR_P1] = p1;
1017 func = p->code_exec;