2 /* autogenerated from gstfieldanalysisorc.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 orc_same_parity_sad_planar_yuv (guint32 * ORC_RESTRICT a1,
86 const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
88 void orc_same_parity_ssd_planar_yuv (guint32 * ORC_RESTRICT a1,
89 const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
91 void orc_same_parity_3_tap_planar_yuv (guint32 * ORC_RESTRICT a1,
92 const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
93 const orc_uint8 * ORC_RESTRICT s3, const orc_uint8 * ORC_RESTRICT s4,
94 const orc_uint8 * ORC_RESTRICT s5, const orc_uint8 * ORC_RESTRICT s6,
96 void orc_opposite_parity_5_tap_planar_yuv (guint32 * ORC_RESTRICT a1,
97 const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
98 const orc_uint8 * ORC_RESTRICT s3, const orc_uint8 * ORC_RESTRICT s4,
99 const orc_uint8 * ORC_RESTRICT s5, int p2, int n);
102 /* begin Orc C target preamble */
103 #define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x)))
104 #define ORC_ABS(a) ((a)<0 ? -(a) : (a))
105 #define ORC_MIN(a,b) ((a)<(b) ? (a) : (b))
106 #define ORC_MAX(a,b) ((a)>(b) ? (a) : (b))
107 #define ORC_SB_MAX 127
108 #define ORC_SB_MIN (-1-ORC_SB_MAX)
109 #define ORC_UB_MAX 255
111 #define ORC_SW_MAX 32767
112 #define ORC_SW_MIN (-1-ORC_SW_MAX)
113 #define ORC_UW_MAX 65535
115 #define ORC_SL_MAX 2147483647
116 #define ORC_SL_MIN (-1-ORC_SL_MAX)
117 #define ORC_UL_MAX 4294967295U
119 #define ORC_CLAMP_SB(x) ORC_CLAMP(x,ORC_SB_MIN,ORC_SB_MAX)
120 #define ORC_CLAMP_UB(x) ORC_CLAMP(x,ORC_UB_MIN,ORC_UB_MAX)
121 #define ORC_CLAMP_SW(x) ORC_CLAMP(x,ORC_SW_MIN,ORC_SW_MAX)
122 #define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX)
123 #define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX)
124 #define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX)
125 #define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8))
126 #define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24))
127 #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))
128 #define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset)))
129 #define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff))
130 #define ORC_ISNAN(x) ((((x)&0x7f800000) == 0x7f800000) && (((x)&0x007fffff) != 0))
131 #define ORC_DENORMAL_DOUBLE(x) ((x) & ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == 0) ? ORC_UINT64_C(0xfff0000000000000) : ORC_UINT64_C(0xffffffffffffffff)))
132 #define ORC_ISNAN_DOUBLE(x) ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == ORC_UINT64_C(0x7ff0000000000000)) && (((x)&ORC_UINT64_C(0x000fffffffffffff)) != 0))
134 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
135 #define ORC_RESTRICT restrict
136 #elif defined(__GNUC__) && __GNUC__ >= 4
137 #define ORC_RESTRICT __restrict__
142 /* end Orc C target preamble */
146 /* orc_same_parity_sad_planar_yuv */
149 orc_same_parity_sad_planar_yuv (guint32 * ORC_RESTRICT a1,
150 const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
154 const orc_int8 *ORC_RESTRICT ptr4;
155 const orc_int8 *ORC_RESTRICT ptr5;
156 orc_union32 var12 = { 0 };
168 ptr4 = (orc_int8 *) s1;
169 ptr5 = (orc_int8 *) s2;
174 for (i = 0; i < n; i++) {
178 var39.i = (orc_uint8) var36;
182 var40.i = (orc_uint8) var37;
184 var41.i = var39.i - var40.i;
186 var42.i = ORC_ABS (var41.i);
188 var43.i = (orc_uint16) var42.i;
190 var44.i = (var43.i > var38.i) ? (~0) : 0;
192 var45.i = var43.i & var44.i;
194 var12.i = var12.i + var45.i;
202 _backup_orc_same_parity_sad_planar_yuv (OrcExecutor * ORC_RESTRICT ex)
206 const orc_int8 *ORC_RESTRICT ptr4;
207 const orc_int8 *ORC_RESTRICT ptr5;
208 orc_union32 var12 = { 0 };
220 ptr4 = (orc_int8 *) ex->arrays[4];
221 ptr5 = (orc_int8 *) ex->arrays[5];
224 var38.i = ex->params[25];
226 for (i = 0; i < n; i++) {
230 var39.i = (orc_uint8) var36;
234 var40.i = (orc_uint8) var37;
236 var41.i = var39.i - var40.i;
238 var42.i = ORC_ABS (var41.i);
240 var43.i = (orc_uint16) var42.i;
242 var44.i = (var43.i > var38.i) ? (~0) : 0;
244 var45.i = var43.i & var44.i;
246 var12.i = var12.i + var45.i;
248 ex->accumulators[0] = var12.i;
253 orc_same_parity_sad_planar_yuv (guint32 * ORC_RESTRICT a1,
254 const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
257 OrcExecutor _ex, *ex = &_ex;
258 static volatile int p_inited = 0;
259 static OrcProgram *p = 0;
260 void (*func) (OrcExecutor *);
263 orc_once_mutex_lock ();
266 p = orc_program_new ();
267 orc_program_set_name (p, "orc_same_parity_sad_planar_yuv");
268 orc_program_set_backup_function (p,
269 _backup_orc_same_parity_sad_planar_yuv);
270 orc_program_add_source (p, 1, "s1");
271 orc_program_add_source (p, 1, "s2");
272 orc_program_add_accumulator (p, 4, "a1");
273 orc_program_add_parameter (p, 4, "p2");
274 orc_program_add_temporary (p, 2, "t1");
275 orc_program_add_temporary (p, 2, "t2");
276 orc_program_add_temporary (p, 4, "t3");
277 orc_program_add_temporary (p, 4, "t4");
279 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
281 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
283 orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
285 orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1,
287 orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1,
289 orc_program_append_2 (p, "cmpgtsl", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_P2,
291 orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4,
293 orc_program_append_2 (p, "accl", 0, ORC_VAR_A1, ORC_VAR_T3, ORC_VAR_D1,
296 orc_program_compile (p);
299 orc_once_mutex_unlock ();
304 ex->arrays[ORC_VAR_S1] = (void *) s1;
305 ex->arrays[ORC_VAR_S2] = (void *) s2;
306 ex->params[ORC_VAR_P2] = p2;
310 *a1 = orc_executor_get_accumulator (ex, ORC_VAR_A1);
315 /* orc_same_parity_ssd_planar_yuv */
318 orc_same_parity_ssd_planar_yuv (guint32 * ORC_RESTRICT a1,
319 const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
323 const orc_int8 *ORC_RESTRICT ptr4;
324 const orc_int8 *ORC_RESTRICT ptr5;
325 orc_union32 var12 = { 0 };
336 ptr4 = (orc_int8 *) s1;
337 ptr5 = (orc_int8 *) s2;
342 for (i = 0; i < n; i++) {
346 var39.i = (orc_uint8) var36;
350 var40.i = (orc_uint8) var37;
352 var41.i = var39.i - var40.i;
354 var42.i = var41.i * var41.i;
356 var43.i = (var42.i > var38.i) ? (~0) : 0;
358 var44.i = var42.i & var43.i;
360 var12.i = var12.i + var44.i;
368 _backup_orc_same_parity_ssd_planar_yuv (OrcExecutor * ORC_RESTRICT ex)
372 const orc_int8 *ORC_RESTRICT ptr4;
373 const orc_int8 *ORC_RESTRICT ptr5;
374 orc_union32 var12 = { 0 };
385 ptr4 = (orc_int8 *) ex->arrays[4];
386 ptr5 = (orc_int8 *) ex->arrays[5];
389 var38.i = ex->params[25];
391 for (i = 0; i < n; i++) {
395 var39.i = (orc_uint8) var36;
399 var40.i = (orc_uint8) var37;
401 var41.i = var39.i - var40.i;
403 var42.i = var41.i * var41.i;
405 var43.i = (var42.i > var38.i) ? (~0) : 0;
407 var44.i = var42.i & var43.i;
409 var12.i = var12.i + var44.i;
411 ex->accumulators[0] = var12.i;
416 orc_same_parity_ssd_planar_yuv (guint32 * ORC_RESTRICT a1,
417 const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
420 OrcExecutor _ex, *ex = &_ex;
421 static volatile int p_inited = 0;
422 static OrcProgram *p = 0;
423 void (*func) (OrcExecutor *);
426 orc_once_mutex_lock ();
429 p = orc_program_new ();
430 orc_program_set_name (p, "orc_same_parity_ssd_planar_yuv");
431 orc_program_set_backup_function (p,
432 _backup_orc_same_parity_ssd_planar_yuv);
433 orc_program_add_source (p, 1, "s1");
434 orc_program_add_source (p, 1, "s2");
435 orc_program_add_accumulator (p, 4, "a1");
436 orc_program_add_parameter (p, 4, "p2");
437 orc_program_add_temporary (p, 2, "t1");
438 orc_program_add_temporary (p, 2, "t2");
439 orc_program_add_temporary (p, 4, "t3");
440 orc_program_add_temporary (p, 4, "t4");
442 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
444 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
446 orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
448 orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1,
450 orc_program_append_2 (p, "cmpgtsl", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_P2,
452 orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4,
454 orc_program_append_2 (p, "accl", 0, ORC_VAR_A1, ORC_VAR_T3, ORC_VAR_D1,
457 orc_program_compile (p);
460 orc_once_mutex_unlock ();
465 ex->arrays[ORC_VAR_S1] = (void *) s1;
466 ex->arrays[ORC_VAR_S2] = (void *) s2;
467 ex->params[ORC_VAR_P2] = p2;
471 *a1 = orc_executor_get_accumulator (ex, ORC_VAR_A1);
476 /* orc_same_parity_3_tap_planar_yuv */
479 orc_same_parity_3_tap_planar_yuv (guint32 * ORC_RESTRICT a1,
480 const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
481 const orc_uint8 * ORC_RESTRICT s3, const orc_uint8 * ORC_RESTRICT s4,
482 const orc_uint8 * ORC_RESTRICT s5, const orc_uint8 * ORC_RESTRICT s6,
486 const orc_int8 *ORC_RESTRICT ptr4;
487 const orc_int8 *ORC_RESTRICT ptr5;
488 const orc_int8 *ORC_RESTRICT ptr6;
489 const orc_int8 *ORC_RESTRICT ptr7;
490 const orc_int8 *ORC_RESTRICT ptr8;
491 const orc_int8 *ORC_RESTRICT ptr9;
492 orc_union32 var12 = { 0 };
518 ptr4 = (orc_int8 *) s1;
519 ptr5 = (orc_int8 *) s2;
520 ptr6 = (orc_int8 *) s3;
521 ptr7 = (orc_int8 *) s4;
522 ptr8 = (orc_int8 *) s5;
523 ptr9 = (orc_int8 *) s6;
528 for (i = 0; i < n; i++) {
532 var47.i = (orc_uint8) var40;
536 var48.i = (orc_uint8) var41;
540 var49.i = (orc_uint8) var42;
544 var50.i = (orc_uint8) var43;
548 var51.i = (orc_uint8) var44;
552 var52.i = (orc_uint8) var45;
554 var53.i = var48.i << 2;
556 var54.i = var51.i << 2;
558 var55.i = var47.i + var53.i;
560 var56.i = var55.i + var49.i;
562 var57.i = var50.i + var54.i;
564 var58.i = var57.i + var52.i;
566 var59.i = var56.i - var58.i;
568 var60.i = ORC_ABS (var59.i);
570 var61.i = (orc_uint16) var60.i;
572 var62.i = (var61.i > var46.i) ? (~0) : 0;
574 var63.i = var61.i & var62.i;
576 var12.i = var12.i + var63.i;
584 _backup_orc_same_parity_3_tap_planar_yuv (OrcExecutor * ORC_RESTRICT ex)
588 const orc_int8 *ORC_RESTRICT ptr4;
589 const orc_int8 *ORC_RESTRICT ptr5;
590 const orc_int8 *ORC_RESTRICT ptr6;
591 const orc_int8 *ORC_RESTRICT ptr7;
592 const orc_int8 *ORC_RESTRICT ptr8;
593 const orc_int8 *ORC_RESTRICT ptr9;
594 orc_union32 var12 = { 0 };
620 ptr4 = (orc_int8 *) ex->arrays[4];
621 ptr5 = (orc_int8 *) ex->arrays[5];
622 ptr6 = (orc_int8 *) ex->arrays[6];
623 ptr7 = (orc_int8 *) ex->arrays[7];
624 ptr8 = (orc_int8 *) ex->arrays[8];
625 ptr9 = (orc_int8 *) ex->arrays[9];
628 var46.i = ex->params[25];
630 for (i = 0; i < n; i++) {
634 var47.i = (orc_uint8) var40;
638 var48.i = (orc_uint8) var41;
642 var49.i = (orc_uint8) var42;
646 var50.i = (orc_uint8) var43;
650 var51.i = (orc_uint8) var44;
654 var52.i = (orc_uint8) var45;
656 var53.i = var48.i << 2;
658 var54.i = var51.i << 2;
660 var55.i = var47.i + var53.i;
662 var56.i = var55.i + var49.i;
664 var57.i = var50.i + var54.i;
666 var58.i = var57.i + var52.i;
668 var59.i = var56.i - var58.i;
670 var60.i = ORC_ABS (var59.i);
672 var61.i = (orc_uint16) var60.i;
674 var62.i = (var61.i > var46.i) ? (~0) : 0;
676 var63.i = var61.i & var62.i;
678 var12.i = var12.i + var63.i;
680 ex->accumulators[0] = var12.i;
685 orc_same_parity_3_tap_planar_yuv (guint32 * ORC_RESTRICT a1,
686 const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
687 const orc_uint8 * ORC_RESTRICT s3, const orc_uint8 * ORC_RESTRICT s4,
688 const orc_uint8 * ORC_RESTRICT s5, const orc_uint8 * ORC_RESTRICT s6,
691 OrcExecutor _ex, *ex = &_ex;
692 static volatile int p_inited = 0;
693 static OrcProgram *p = 0;
694 void (*func) (OrcExecutor *);
697 orc_once_mutex_lock ();
700 p = orc_program_new ();
701 orc_program_set_name (p, "orc_same_parity_3_tap_planar_yuv");
702 orc_program_set_backup_function (p,
703 _backup_orc_same_parity_3_tap_planar_yuv);
704 orc_program_add_source (p, 1, "s1");
705 orc_program_add_source (p, 1, "s2");
706 orc_program_add_source (p, 1, "s3");
707 orc_program_add_source (p, 1, "s4");
708 orc_program_add_source (p, 1, "s5");
709 orc_program_add_source (p, 1, "s6");
710 orc_program_add_accumulator (p, 4, "a1");
711 orc_program_add_constant (p, 4, 0x00000002, "c1");
712 orc_program_add_parameter (p, 4, "p2");
713 orc_program_add_temporary (p, 2, "t1");
714 orc_program_add_temporary (p, 2, "t2");
715 orc_program_add_temporary (p, 2, "t3");
716 orc_program_add_temporary (p, 2, "t4");
717 orc_program_add_temporary (p, 2, "t5");
718 orc_program_add_temporary (p, 2, "t6");
719 orc_program_add_temporary (p, 4, "t7");
720 orc_program_add_temporary (p, 4, "t8");
722 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
724 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
726 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1,
728 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T4, ORC_VAR_S4, ORC_VAR_D1,
730 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T5, ORC_VAR_S5, ORC_VAR_D1,
732 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T6, ORC_VAR_S6, ORC_VAR_D1,
734 orc_program_append_2 (p, "shlw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1,
736 orc_program_append_2 (p, "shlw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C1,
738 orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
740 orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T3,
742 orc_program_append_2 (p, "addw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5,
744 orc_program_append_2 (p, "addw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T6,
746 orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T4,
748 orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1,
750 orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T7, ORC_VAR_T1, ORC_VAR_D1,
752 orc_program_append_2 (p, "cmpgtsl", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_P2,
754 orc_program_append_2 (p, "andl", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T8,
756 orc_program_append_2 (p, "accl", 0, ORC_VAR_A1, ORC_VAR_T7, ORC_VAR_D1,
759 orc_program_compile (p);
762 orc_once_mutex_unlock ();
767 ex->arrays[ORC_VAR_S1] = (void *) s1;
768 ex->arrays[ORC_VAR_S2] = (void *) s2;
769 ex->arrays[ORC_VAR_S3] = (void *) s3;
770 ex->arrays[ORC_VAR_S4] = (void *) s4;
771 ex->arrays[ORC_VAR_S5] = (void *) s5;
772 ex->arrays[ORC_VAR_S6] = (void *) s6;
773 ex->params[ORC_VAR_P2] = p2;
777 *a1 = orc_executor_get_accumulator (ex, ORC_VAR_A1);
782 /* orc_opposite_parity_5_tap_planar_yuv */
785 orc_opposite_parity_5_tap_planar_yuv (guint32 * ORC_RESTRICT a1,
786 const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
787 const orc_uint8 * ORC_RESTRICT s3, const orc_uint8 * ORC_RESTRICT s4,
788 const orc_uint8 * ORC_RESTRICT s5, int p2, int n)
791 const orc_int8 *ORC_RESTRICT ptr4;
792 const orc_int8 *ORC_RESTRICT ptr5;
793 const orc_int8 *ORC_RESTRICT ptr6;
794 const orc_int8 *ORC_RESTRICT ptr7;
795 const orc_int8 *ORC_RESTRICT ptr8;
796 orc_union32 var12 = { 0 };
822 ptr4 = (orc_int8 *) s1;
823 ptr5 = (orc_int8 *) s2;
824 ptr6 = (orc_int8 *) s3;
825 ptr7 = (orc_int8 *) s4;
826 ptr8 = (orc_int8 *) s5;
829 var44.i = (int) 0x00000003; /* 3 or 1.4822e-323f */
831 var45.i = (int) 0x00000003; /* 3 or 1.4822e-323f */
835 for (i = 0; i < n; i++) {
839 var47.i = (orc_uint8) var39;
843 var48.i = (orc_uint8) var40;
847 var49.i = (orc_uint8) var41;
851 var50.i = (orc_uint8) var42;
855 var51.i = (orc_uint8) var43;
857 var52.i = var49.i << 2;
859 var53.i = (var48.i * var44.i) & 0xffff;
861 var54.i = (var50.i * var45.i) & 0xffff;
863 var55.i = var47.i - var53.i;
865 var56.i = var55.i + var52.i;
867 var57.i = var56.i - var54.i;
869 var58.i = var57.i + var51.i;
871 var59.i = ORC_ABS (var58.i);
873 var60.i = (orc_uint16) var59.i;
875 var61.i = (var60.i > var46.i) ? (~0) : 0;
877 var62.i = var60.i & var61.i;
879 var12.i = var12.i + var62.i;
887 _backup_orc_opposite_parity_5_tap_planar_yuv (OrcExecutor * ORC_RESTRICT ex)
891 const orc_int8 *ORC_RESTRICT ptr4;
892 const orc_int8 *ORC_RESTRICT ptr5;
893 const orc_int8 *ORC_RESTRICT ptr6;
894 const orc_int8 *ORC_RESTRICT ptr7;
895 const orc_int8 *ORC_RESTRICT ptr8;
896 orc_union32 var12 = { 0 };
922 ptr4 = (orc_int8 *) ex->arrays[4];
923 ptr5 = (orc_int8 *) ex->arrays[5];
924 ptr6 = (orc_int8 *) ex->arrays[6];
925 ptr7 = (orc_int8 *) ex->arrays[7];
926 ptr8 = (orc_int8 *) ex->arrays[8];
929 var44.i = (int) 0x00000003; /* 3 or 1.4822e-323f */
931 var45.i = (int) 0x00000003; /* 3 or 1.4822e-323f */
933 var46.i = ex->params[25];
935 for (i = 0; i < n; i++) {
939 var47.i = (orc_uint8) var39;
943 var48.i = (orc_uint8) var40;
947 var49.i = (orc_uint8) var41;
951 var50.i = (orc_uint8) var42;
955 var51.i = (orc_uint8) var43;
957 var52.i = var49.i << 2;
959 var53.i = (var48.i * var44.i) & 0xffff;
961 var54.i = (var50.i * var45.i) & 0xffff;
963 var55.i = var47.i - var53.i;
965 var56.i = var55.i + var52.i;
967 var57.i = var56.i - var54.i;
969 var58.i = var57.i + var51.i;
971 var59.i = ORC_ABS (var58.i);
973 var60.i = (orc_uint16) var59.i;
975 var61.i = (var60.i > var46.i) ? (~0) : 0;
977 var62.i = var60.i & var61.i;
979 var12.i = var12.i + var62.i;
981 ex->accumulators[0] = var12.i;
986 orc_opposite_parity_5_tap_planar_yuv (guint32 * ORC_RESTRICT a1,
987 const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
988 const orc_uint8 * ORC_RESTRICT s3, const orc_uint8 * ORC_RESTRICT s4,
989 const orc_uint8 * ORC_RESTRICT s5, int p2, int n)
991 OrcExecutor _ex, *ex = &_ex;
992 static volatile int p_inited = 0;
993 static OrcProgram *p = 0;
994 void (*func) (OrcExecutor *);
997 orc_once_mutex_lock ();
1000 p = orc_program_new ();
1001 orc_program_set_name (p, "orc_opposite_parity_5_tap_planar_yuv");
1002 orc_program_set_backup_function (p,
1003 _backup_orc_opposite_parity_5_tap_planar_yuv);
1004 orc_program_add_source (p, 1, "s1");
1005 orc_program_add_source (p, 1, "s2");
1006 orc_program_add_source (p, 1, "s3");
1007 orc_program_add_source (p, 1, "s4");
1008 orc_program_add_source (p, 1, "s5");
1009 orc_program_add_accumulator (p, 4, "a1");
1010 orc_program_add_constant (p, 4, 0x00000002, "c1");
1011 orc_program_add_constant (p, 4, 0x00000003, "c2");
1012 orc_program_add_parameter (p, 4, "p2");
1013 orc_program_add_temporary (p, 2, "t1");
1014 orc_program_add_temporary (p, 2, "t2");
1015 orc_program_add_temporary (p, 2, "t3");
1016 orc_program_add_temporary (p, 2, "t4");
1017 orc_program_add_temporary (p, 2, "t5");
1018 orc_program_add_temporary (p, 4, "t6");
1019 orc_program_add_temporary (p, 4, "t7");
1021 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
1023 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
1025 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1,
1027 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T4, ORC_VAR_S4, ORC_VAR_D1,
1029 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T5, ORC_VAR_S5, ORC_VAR_D1,
1031 orc_program_append_2 (p, "shlw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C1,
1033 orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2,
1035 orc_program_append_2 (p, "mullw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C2,
1037 orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
1039 orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T3,
1041 orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T4,
1043 orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T5,
1045 orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1,
1047 orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_D1,
1049 orc_program_append_2 (p, "cmpgtsl", 0, ORC_VAR_T7, ORC_VAR_T6, ORC_VAR_P2,
1051 orc_program_append_2 (p, "andl", 0, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T7,
1053 orc_program_append_2 (p, "accl", 0, ORC_VAR_A1, ORC_VAR_T6, ORC_VAR_D1,
1056 orc_program_compile (p);
1059 orc_once_mutex_unlock ();
1064 ex->arrays[ORC_VAR_S1] = (void *) s1;
1065 ex->arrays[ORC_VAR_S2] = (void *) s2;
1066 ex->arrays[ORC_VAR_S3] = (void *) s3;
1067 ex->arrays[ORC_VAR_S4] = (void *) s4;
1068 ex->arrays[ORC_VAR_S5] = (void *) s5;
1069 ex->params[ORC_VAR_P2] = p2;
1071 func = p->code_exec;
1073 *a1 = orc_executor_get_accumulator (ex, ORC_VAR_A1);