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);
101 void gst_fieldanalysis_orc_init (void);
104 /* begin Orc C target preamble */
105 #define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x)))
106 #define ORC_ABS(a) ((a)<0 ? -(a) : (a))
107 #define ORC_MIN(a,b) ((a)<(b) ? (a) : (b))
108 #define ORC_MAX(a,b) ((a)>(b) ? (a) : (b))
109 #define ORC_SB_MAX 127
110 #define ORC_SB_MIN (-1-ORC_SB_MAX)
111 #define ORC_UB_MAX 255
113 #define ORC_SW_MAX 32767
114 #define ORC_SW_MIN (-1-ORC_SW_MAX)
115 #define ORC_UW_MAX 65535
117 #define ORC_SL_MAX 2147483647
118 #define ORC_SL_MIN (-1-ORC_SL_MAX)
119 #define ORC_UL_MAX 4294967295U
121 #define ORC_CLAMP_SB(x) ORC_CLAMP(x,ORC_SB_MIN,ORC_SB_MAX)
122 #define ORC_CLAMP_UB(x) ORC_CLAMP(x,ORC_UB_MIN,ORC_UB_MAX)
123 #define ORC_CLAMP_SW(x) ORC_CLAMP(x,ORC_SW_MIN,ORC_SW_MAX)
124 #define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX)
125 #define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX)
126 #define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX)
127 #define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8))
128 #define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24))
129 #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))
130 #define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset)))
131 #define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff))
132 #define ORC_ISNAN(x) ((((x)&0x7f800000) == 0x7f800000) && (((x)&0x007fffff) != 0))
133 #define ORC_DENORMAL_DOUBLE(x) ((x) & ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == 0) ? ORC_UINT64_C(0xfff0000000000000) : ORC_UINT64_C(0xffffffffffffffff)))
134 #define ORC_ISNAN_DOUBLE(x) ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == ORC_UINT64_C(0x7ff0000000000000)) && (((x)&ORC_UINT64_C(0x000fffffffffffff)) != 0))
136 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
137 #define ORC_RESTRICT restrict
138 #elif defined(__GNUC__) && __GNUC__ >= 4
139 #define ORC_RESTRICT __restrict__
144 /* end Orc C target preamble */
148 /* orc_same_parity_sad_planar_yuv */
151 orc_same_parity_sad_planar_yuv (guint32 * ORC_RESTRICT a1,
152 const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
156 const orc_int8 *ORC_RESTRICT ptr4;
157 const orc_int8 *ORC_RESTRICT ptr5;
158 orc_union32 var12 = { 0 };
170 ptr4 = (orc_int8 *) s1;
171 ptr5 = (orc_int8 *) s2;
176 for (i = 0; i < n; i++) {
180 var39.i = (orc_uint8) var36;
184 var40.i = (orc_uint8) var37;
186 var41.i = var39.i - var40.i;
188 var42.i = ORC_ABS (var41.i);
190 var43.i = (orc_uint16) var42.i;
192 var44.i = (var43.i > var38.i) ? (~0) : 0;
194 var45.i = var43.i & var44.i;
196 var12.i = var12.i + var45.i;
204 _backup_orc_same_parity_sad_planar_yuv (OrcExecutor * ORC_RESTRICT ex)
208 const orc_int8 *ORC_RESTRICT ptr4;
209 const orc_int8 *ORC_RESTRICT ptr5;
210 orc_union32 var12 = { 0 };
222 ptr4 = (orc_int8 *) ex->arrays[4];
223 ptr5 = (orc_int8 *) ex->arrays[5];
226 var38.i = ex->params[25];
228 for (i = 0; i < n; i++) {
232 var39.i = (orc_uint8) var36;
236 var40.i = (orc_uint8) var37;
238 var41.i = var39.i - var40.i;
240 var42.i = ORC_ABS (var41.i);
242 var43.i = (orc_uint16) var42.i;
244 var44.i = (var43.i > var38.i) ? (~0) : 0;
246 var45.i = var43.i & var44.i;
248 var12.i = var12.i + var45.i;
250 ex->accumulators[0] = var12.i;
254 static OrcProgram *_orc_program_orc_same_parity_sad_planar_yuv;
256 orc_same_parity_sad_planar_yuv (guint32 * ORC_RESTRICT a1,
257 const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
260 OrcExecutor _ex, *ex = &_ex;
261 OrcProgram *p = _orc_program_orc_same_parity_sad_planar_yuv;
262 void (*func) (OrcExecutor *);
267 ex->arrays[ORC_VAR_S1] = (void *) s1;
268 ex->arrays[ORC_VAR_S2] = (void *) s2;
269 ex->params[ORC_VAR_P2] = p2;
273 *a1 = orc_executor_get_accumulator (ex, ORC_VAR_A1);
278 /* orc_same_parity_ssd_planar_yuv */
281 orc_same_parity_ssd_planar_yuv (guint32 * ORC_RESTRICT a1,
282 const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
286 const orc_int8 *ORC_RESTRICT ptr4;
287 const orc_int8 *ORC_RESTRICT ptr5;
288 orc_union32 var12 = { 0 };
299 ptr4 = (orc_int8 *) s1;
300 ptr5 = (orc_int8 *) s2;
305 for (i = 0; i < n; i++) {
309 var39.i = (orc_uint8) var36;
313 var40.i = (orc_uint8) var37;
315 var41.i = var39.i - var40.i;
317 var42.i = var41.i * var41.i;
319 var43.i = (var42.i > var38.i) ? (~0) : 0;
321 var44.i = var42.i & var43.i;
323 var12.i = var12.i + var44.i;
331 _backup_orc_same_parity_ssd_planar_yuv (OrcExecutor * ORC_RESTRICT ex)
335 const orc_int8 *ORC_RESTRICT ptr4;
336 const orc_int8 *ORC_RESTRICT ptr5;
337 orc_union32 var12 = { 0 };
348 ptr4 = (orc_int8 *) ex->arrays[4];
349 ptr5 = (orc_int8 *) ex->arrays[5];
352 var38.i = ex->params[25];
354 for (i = 0; i < n; i++) {
358 var39.i = (orc_uint8) var36;
362 var40.i = (orc_uint8) var37;
364 var41.i = var39.i - var40.i;
366 var42.i = var41.i * var41.i;
368 var43.i = (var42.i > var38.i) ? (~0) : 0;
370 var44.i = var42.i & var43.i;
372 var12.i = var12.i + var44.i;
374 ex->accumulators[0] = var12.i;
378 static OrcProgram *_orc_program_orc_same_parity_ssd_planar_yuv;
380 orc_same_parity_ssd_planar_yuv (guint32 * ORC_RESTRICT a1,
381 const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
384 OrcExecutor _ex, *ex = &_ex;
385 OrcProgram *p = _orc_program_orc_same_parity_ssd_planar_yuv;
386 void (*func) (OrcExecutor *);
391 ex->arrays[ORC_VAR_S1] = (void *) s1;
392 ex->arrays[ORC_VAR_S2] = (void *) s2;
393 ex->params[ORC_VAR_P2] = p2;
397 *a1 = orc_executor_get_accumulator (ex, ORC_VAR_A1);
402 /* orc_same_parity_3_tap_planar_yuv */
405 orc_same_parity_3_tap_planar_yuv (guint32 * ORC_RESTRICT a1,
406 const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
407 const orc_uint8 * ORC_RESTRICT s3, const orc_uint8 * ORC_RESTRICT s4,
408 const orc_uint8 * ORC_RESTRICT s5, const orc_uint8 * ORC_RESTRICT s6,
412 const orc_int8 *ORC_RESTRICT ptr4;
413 const orc_int8 *ORC_RESTRICT ptr5;
414 const orc_int8 *ORC_RESTRICT ptr6;
415 const orc_int8 *ORC_RESTRICT ptr7;
416 const orc_int8 *ORC_RESTRICT ptr8;
417 const orc_int8 *ORC_RESTRICT ptr9;
418 orc_union32 var12 = { 0 };
444 ptr4 = (orc_int8 *) s1;
445 ptr5 = (orc_int8 *) s2;
446 ptr6 = (orc_int8 *) s3;
447 ptr7 = (orc_int8 *) s4;
448 ptr8 = (orc_int8 *) s5;
449 ptr9 = (orc_int8 *) s6;
454 for (i = 0; i < n; i++) {
458 var47.i = (orc_uint8) var40;
462 var48.i = (orc_uint8) var41;
466 var49.i = (orc_uint8) var42;
470 var50.i = (orc_uint8) var43;
474 var51.i = (orc_uint8) var44;
478 var52.i = (orc_uint8) var45;
480 var53.i = var48.i << 2;
482 var54.i = var51.i << 2;
484 var55.i = var47.i + var53.i;
486 var56.i = var55.i + var49.i;
488 var57.i = var50.i + var54.i;
490 var58.i = var57.i + var52.i;
492 var59.i = var56.i - var58.i;
494 var60.i = ORC_ABS (var59.i);
496 var61.i = (orc_uint16) var60.i;
498 var62.i = (var61.i > var46.i) ? (~0) : 0;
500 var63.i = var61.i & var62.i;
502 var12.i = var12.i + var63.i;
510 _backup_orc_same_parity_3_tap_planar_yuv (OrcExecutor * ORC_RESTRICT ex)
514 const orc_int8 *ORC_RESTRICT ptr4;
515 const orc_int8 *ORC_RESTRICT ptr5;
516 const orc_int8 *ORC_RESTRICT ptr6;
517 const orc_int8 *ORC_RESTRICT ptr7;
518 const orc_int8 *ORC_RESTRICT ptr8;
519 const orc_int8 *ORC_RESTRICT ptr9;
520 orc_union32 var12 = { 0 };
546 ptr4 = (orc_int8 *) ex->arrays[4];
547 ptr5 = (orc_int8 *) ex->arrays[5];
548 ptr6 = (orc_int8 *) ex->arrays[6];
549 ptr7 = (orc_int8 *) ex->arrays[7];
550 ptr8 = (orc_int8 *) ex->arrays[8];
551 ptr9 = (orc_int8 *) ex->arrays[9];
554 var46.i = ex->params[25];
556 for (i = 0; i < n; i++) {
560 var47.i = (orc_uint8) var40;
564 var48.i = (orc_uint8) var41;
568 var49.i = (orc_uint8) var42;
572 var50.i = (orc_uint8) var43;
576 var51.i = (orc_uint8) var44;
580 var52.i = (orc_uint8) var45;
582 var53.i = var48.i << 2;
584 var54.i = var51.i << 2;
586 var55.i = var47.i + var53.i;
588 var56.i = var55.i + var49.i;
590 var57.i = var50.i + var54.i;
592 var58.i = var57.i + var52.i;
594 var59.i = var56.i - var58.i;
596 var60.i = ORC_ABS (var59.i);
598 var61.i = (orc_uint16) var60.i;
600 var62.i = (var61.i > var46.i) ? (~0) : 0;
602 var63.i = var61.i & var62.i;
604 var12.i = var12.i + var63.i;
606 ex->accumulators[0] = var12.i;
610 static OrcProgram *_orc_program_orc_same_parity_3_tap_planar_yuv;
612 orc_same_parity_3_tap_planar_yuv (guint32 * ORC_RESTRICT a1,
613 const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
614 const orc_uint8 * ORC_RESTRICT s3, const orc_uint8 * ORC_RESTRICT s4,
615 const orc_uint8 * ORC_RESTRICT s5, const orc_uint8 * ORC_RESTRICT s6,
618 OrcExecutor _ex, *ex = &_ex;
619 OrcProgram *p = _orc_program_orc_same_parity_3_tap_planar_yuv;
620 void (*func) (OrcExecutor *);
625 ex->arrays[ORC_VAR_S1] = (void *) s1;
626 ex->arrays[ORC_VAR_S2] = (void *) s2;
627 ex->arrays[ORC_VAR_S3] = (void *) s3;
628 ex->arrays[ORC_VAR_S4] = (void *) s4;
629 ex->arrays[ORC_VAR_S5] = (void *) s5;
630 ex->arrays[ORC_VAR_S6] = (void *) s6;
631 ex->params[ORC_VAR_P2] = p2;
635 *a1 = orc_executor_get_accumulator (ex, ORC_VAR_A1);
640 /* orc_opposite_parity_5_tap_planar_yuv */
643 orc_opposite_parity_5_tap_planar_yuv (guint32 * ORC_RESTRICT a1,
644 const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
645 const orc_uint8 * ORC_RESTRICT s3, const orc_uint8 * ORC_RESTRICT s4,
646 const orc_uint8 * ORC_RESTRICT s5, int p2, int n)
649 const orc_int8 *ORC_RESTRICT ptr4;
650 const orc_int8 *ORC_RESTRICT ptr5;
651 const orc_int8 *ORC_RESTRICT ptr6;
652 const orc_int8 *ORC_RESTRICT ptr7;
653 const orc_int8 *ORC_RESTRICT ptr8;
654 orc_union32 var12 = { 0 };
680 ptr4 = (orc_int8 *) s1;
681 ptr5 = (orc_int8 *) s2;
682 ptr6 = (orc_int8 *) s3;
683 ptr7 = (orc_int8 *) s4;
684 ptr8 = (orc_int8 *) s5;
687 var44.i = (int) 0x00000003; /* 3 or 1.4822e-323f */
689 var45.i = (int) 0x00000003; /* 3 or 1.4822e-323f */
693 for (i = 0; i < n; i++) {
697 var47.i = (orc_uint8) var39;
701 var48.i = (orc_uint8) var40;
705 var49.i = (orc_uint8) var41;
709 var50.i = (orc_uint8) var42;
713 var51.i = (orc_uint8) var43;
715 var52.i = var49.i << 2;
717 var53.i = (var48.i * var44.i) & 0xffff;
719 var54.i = (var50.i * var45.i) & 0xffff;
721 var55.i = var47.i - var53.i;
723 var56.i = var55.i + var52.i;
725 var57.i = var56.i - var54.i;
727 var58.i = var57.i + var51.i;
729 var59.i = ORC_ABS (var58.i);
731 var60.i = (orc_uint16) var59.i;
733 var61.i = (var60.i > var46.i) ? (~0) : 0;
735 var62.i = var60.i & var61.i;
737 var12.i = var12.i + var62.i;
745 _backup_orc_opposite_parity_5_tap_planar_yuv (OrcExecutor * ORC_RESTRICT ex)
749 const orc_int8 *ORC_RESTRICT ptr4;
750 const orc_int8 *ORC_RESTRICT ptr5;
751 const orc_int8 *ORC_RESTRICT ptr6;
752 const orc_int8 *ORC_RESTRICT ptr7;
753 const orc_int8 *ORC_RESTRICT ptr8;
754 orc_union32 var12 = { 0 };
780 ptr4 = (orc_int8 *) ex->arrays[4];
781 ptr5 = (orc_int8 *) ex->arrays[5];
782 ptr6 = (orc_int8 *) ex->arrays[6];
783 ptr7 = (orc_int8 *) ex->arrays[7];
784 ptr8 = (orc_int8 *) ex->arrays[8];
787 var44.i = (int) 0x00000003; /* 3 or 1.4822e-323f */
789 var45.i = (int) 0x00000003; /* 3 or 1.4822e-323f */
791 var46.i = ex->params[25];
793 for (i = 0; i < n; i++) {
797 var47.i = (orc_uint8) var39;
801 var48.i = (orc_uint8) var40;
805 var49.i = (orc_uint8) var41;
809 var50.i = (orc_uint8) var42;
813 var51.i = (orc_uint8) var43;
815 var52.i = var49.i << 2;
817 var53.i = (var48.i * var44.i) & 0xffff;
819 var54.i = (var50.i * var45.i) & 0xffff;
821 var55.i = var47.i - var53.i;
823 var56.i = var55.i + var52.i;
825 var57.i = var56.i - var54.i;
827 var58.i = var57.i + var51.i;
829 var59.i = ORC_ABS (var58.i);
831 var60.i = (orc_uint16) var59.i;
833 var61.i = (var60.i > var46.i) ? (~0) : 0;
835 var62.i = var60.i & var61.i;
837 var12.i = var12.i + var62.i;
839 ex->accumulators[0] = var12.i;
843 static OrcProgram *_orc_program_orc_opposite_parity_5_tap_planar_yuv;
845 orc_opposite_parity_5_tap_planar_yuv (guint32 * ORC_RESTRICT a1,
846 const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
847 const orc_uint8 * ORC_RESTRICT s3, const orc_uint8 * ORC_RESTRICT s4,
848 const orc_uint8 * ORC_RESTRICT s5, int p2, int n)
850 OrcExecutor _ex, *ex = &_ex;
851 OrcProgram *p = _orc_program_orc_opposite_parity_5_tap_planar_yuv;
852 void (*func) (OrcExecutor *);
857 ex->arrays[ORC_VAR_S1] = (void *) s1;
858 ex->arrays[ORC_VAR_S2] = (void *) s2;
859 ex->arrays[ORC_VAR_S3] = (void *) s3;
860 ex->arrays[ORC_VAR_S4] = (void *) s4;
861 ex->arrays[ORC_VAR_S5] = (void *) s5;
862 ex->params[ORC_VAR_P2] = p2;
866 *a1 = orc_executor_get_accumulator (ex, ORC_VAR_A1);
872 gst_fieldanalysis_orc_init (void)
876 /* orc_same_parity_sad_planar_yuv */
879 p = orc_program_new ();
880 orc_program_set_name (p, "orc_same_parity_sad_planar_yuv");
881 orc_program_set_backup_function (p, _backup_orc_same_parity_sad_planar_yuv);
882 orc_program_add_source (p, 1, "s1");
883 orc_program_add_source (p, 1, "s2");
884 orc_program_add_accumulator (p, 4, "a1");
885 orc_program_add_parameter (p, 4, "p2");
886 orc_program_add_temporary (p, 2, "t1");
887 orc_program_add_temporary (p, 2, "t2");
888 orc_program_add_temporary (p, 4, "t3");
889 orc_program_add_temporary (p, 4, "t4");
891 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
893 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
895 orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
897 orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1,
899 orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1,
901 orc_program_append_2 (p, "cmpgtsl", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_P2,
903 orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4,
905 orc_program_append_2 (p, "accl", 0, ORC_VAR_A1, ORC_VAR_T3, ORC_VAR_D1,
908 orc_program_compile (p);
910 _orc_program_orc_same_parity_sad_planar_yuv = p;
913 /* orc_same_parity_ssd_planar_yuv */
916 p = orc_program_new ();
917 orc_program_set_name (p, "orc_same_parity_ssd_planar_yuv");
918 orc_program_set_backup_function (p, _backup_orc_same_parity_ssd_planar_yuv);
919 orc_program_add_source (p, 1, "s1");
920 orc_program_add_source (p, 1, "s2");
921 orc_program_add_accumulator (p, 4, "a1");
922 orc_program_add_parameter (p, 4, "p2");
923 orc_program_add_temporary (p, 2, "t1");
924 orc_program_add_temporary (p, 2, "t2");
925 orc_program_add_temporary (p, 4, "t3");
926 orc_program_add_temporary (p, 4, "t4");
928 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
930 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
932 orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
934 orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1,
936 orc_program_append_2 (p, "cmpgtsl", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_P2,
938 orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4,
940 orc_program_append_2 (p, "accl", 0, ORC_VAR_A1, ORC_VAR_T3, ORC_VAR_D1,
943 orc_program_compile (p);
945 _orc_program_orc_same_parity_ssd_planar_yuv = p;
948 /* orc_same_parity_3_tap_planar_yuv */
951 p = orc_program_new ();
952 orc_program_set_name (p, "orc_same_parity_3_tap_planar_yuv");
953 orc_program_set_backup_function (p,
954 _backup_orc_same_parity_3_tap_planar_yuv);
955 orc_program_add_source (p, 1, "s1");
956 orc_program_add_source (p, 1, "s2");
957 orc_program_add_source (p, 1, "s3");
958 orc_program_add_source (p, 1, "s4");
959 orc_program_add_source (p, 1, "s5");
960 orc_program_add_source (p, 1, "s6");
961 orc_program_add_accumulator (p, 4, "a1");
962 orc_program_add_constant (p, 4, 0x00000002, "c1");
963 orc_program_add_parameter (p, 4, "p2");
964 orc_program_add_temporary (p, 2, "t1");
965 orc_program_add_temporary (p, 2, "t2");
966 orc_program_add_temporary (p, 2, "t3");
967 orc_program_add_temporary (p, 2, "t4");
968 orc_program_add_temporary (p, 2, "t5");
969 orc_program_add_temporary (p, 2, "t6");
970 orc_program_add_temporary (p, 4, "t7");
971 orc_program_add_temporary (p, 4, "t8");
973 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
975 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
977 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1,
979 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T4, ORC_VAR_S4, ORC_VAR_D1,
981 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T5, ORC_VAR_S5, ORC_VAR_D1,
983 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T6, ORC_VAR_S6, ORC_VAR_D1,
985 orc_program_append_2 (p, "shlw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1,
987 orc_program_append_2 (p, "shlw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C1,
989 orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
991 orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T3,
993 orc_program_append_2 (p, "addw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5,
995 orc_program_append_2 (p, "addw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T6,
997 orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T4,
999 orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1,
1001 orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T7, ORC_VAR_T1, ORC_VAR_D1,
1003 orc_program_append_2 (p, "cmpgtsl", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_P2,
1005 orc_program_append_2 (p, "andl", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T8,
1007 orc_program_append_2 (p, "accl", 0, ORC_VAR_A1, ORC_VAR_T7, ORC_VAR_D1,
1010 orc_program_compile (p);
1012 _orc_program_orc_same_parity_3_tap_planar_yuv = p;
1015 /* orc_opposite_parity_5_tap_planar_yuv */
1018 p = orc_program_new ();
1019 orc_program_set_name (p, "orc_opposite_parity_5_tap_planar_yuv");
1020 orc_program_set_backup_function (p,
1021 _backup_orc_opposite_parity_5_tap_planar_yuv);
1022 orc_program_add_source (p, 1, "s1");
1023 orc_program_add_source (p, 1, "s2");
1024 orc_program_add_source (p, 1, "s3");
1025 orc_program_add_source (p, 1, "s4");
1026 orc_program_add_source (p, 1, "s5");
1027 orc_program_add_accumulator (p, 4, "a1");
1028 orc_program_add_constant (p, 4, 0x00000002, "c1");
1029 orc_program_add_constant (p, 4, 0x00000003, "c2");
1030 orc_program_add_parameter (p, 4, "p2");
1031 orc_program_add_temporary (p, 2, "t1");
1032 orc_program_add_temporary (p, 2, "t2");
1033 orc_program_add_temporary (p, 2, "t3");
1034 orc_program_add_temporary (p, 2, "t4");
1035 orc_program_add_temporary (p, 2, "t5");
1036 orc_program_add_temporary (p, 4, "t6");
1037 orc_program_add_temporary (p, 4, "t7");
1039 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
1041 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
1043 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1,
1045 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T4, ORC_VAR_S4, ORC_VAR_D1,
1047 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T5, ORC_VAR_S5, ORC_VAR_D1,
1049 orc_program_append_2 (p, "shlw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C1,
1051 orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2,
1053 orc_program_append_2 (p, "mullw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C2,
1055 orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
1057 orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T3,
1059 orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T4,
1061 orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T5,
1063 orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1,
1065 orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_D1,
1067 orc_program_append_2 (p, "cmpgtsl", 0, ORC_VAR_T7, ORC_VAR_T6, ORC_VAR_P2,
1069 orc_program_append_2 (p, "andl", 0, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T7,
1071 orc_program_append_2 (p, "accl", 0, ORC_VAR_A1, ORC_VAR_T6, ORC_VAR_D1,
1074 orc_program_compile (p);
1076 _orc_program_orc_opposite_parity_5_tap_planar_yuv = p;