1 
2 /* autogenerated from gstfieldanalysisorc.orc */
3 
4 #ifdef HAVE_CONFIG_H
5 #include "config.h"
6 #endif
7 #include <glib.h>
8 
9 #ifndef _ORC_INTEGER_TYPEDEFS_
10 #define _ORC_INTEGER_TYPEDEFS_
11 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
12 #include <stdint.h>
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
33 #else
34 #include <limits.h>
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)
45 #else
46 typedef long orc_int64;
47 typedef unsigned long orc_uint64;
48 #define ORC_UINT64_C(x) (x##UL)
49 #endif
50 #endif
51 typedef union
52 {
53   orc_int16 i;
54   orc_int8 x2[2];
55 } orc_union16;
56 typedef union
57 {
58   orc_int32 i;
59   float f;
60   orc_int16 x2[2];
61   orc_int8 x4[4];
62 } orc_union32;
63 typedef union
64 {
65   orc_int64 i;
66   double f;
67   orc_int32 x2[2];
68   float x2f[2];
69   orc_int16 x4[4];
70 } orc_union64;
71 #endif
72 #ifndef ORC_RESTRICT
73 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
74 #define ORC_RESTRICT restrict
75 #elif defined(__GNUC__) && __GNUC__ >= 4
76 #define ORC_RESTRICT __restrict__
77 #else
78 #define ORC_RESTRICT
79 #endif
80 #endif
81 
82 #ifndef ORC_INTERNAL
83 #if defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)
84 #define ORC_INTERNAL __attribute__((visibility("hidden")))
85 #elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)
86 #define ORC_INTERNAL __hidden
87 #elif defined (__GNUC__)
88 #define ORC_INTERNAL __attribute__((visibility("hidden")))
89 #else
90 #define ORC_INTERNAL
91 #endif
92 #endif
93 
94 
95 #ifndef DISABLE_ORC
96 #include <orc/orc.h>
97 #endif
98 void fieldanalysis_orc_same_parity_sad_planar_yuv (guint32 * ORC_RESTRICT a1,
99     const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
100     int p1, int n);
101 void fieldanalysis_orc_same_parity_ssd_planar_yuv (guint32 * ORC_RESTRICT a1,
102     const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
103     int p1, int n);
104 void fieldanalysis_orc_same_parity_3_tap_planar_yuv (guint32 * ORC_RESTRICT a1,
105     const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
106     const orc_uint8 * ORC_RESTRICT s3, const orc_uint8 * ORC_RESTRICT s4,
107     const orc_uint8 * ORC_RESTRICT s5, const orc_uint8 * ORC_RESTRICT s6,
108     int p1, int n);
109 void fieldanalysis_orc_opposite_parity_5_tap_planar_yuv (guint32 *
110     ORC_RESTRICT a1, const orc_uint8 * ORC_RESTRICT s1,
111     const orc_uint8 * ORC_RESTRICT s2, const orc_uint8 * ORC_RESTRICT s3,
112     const orc_uint8 * ORC_RESTRICT s4, const orc_uint8 * ORC_RESTRICT s5,
113     int p1, int n);
114 
115 
116 /* begin Orc C target preamble */
117 #define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x)))
118 #define ORC_ABS(a) ((a)<0 ? -(a) : (a))
119 #define ORC_MIN(a,b) ((a)<(b) ? (a) : (b))
120 #define ORC_MAX(a,b) ((a)>(b) ? (a) : (b))
121 #define ORC_SB_MAX 127
122 #define ORC_SB_MIN (-1-ORC_SB_MAX)
123 #define ORC_UB_MAX (orc_uint8) 255
124 #define ORC_UB_MIN 0
125 #define ORC_SW_MAX 32767
126 #define ORC_SW_MIN (-1-ORC_SW_MAX)
127 #define ORC_UW_MAX (orc_uint16)65535
128 #define ORC_UW_MIN 0
129 #define ORC_SL_MAX 2147483647
130 #define ORC_SL_MIN (-1-ORC_SL_MAX)
131 #define ORC_UL_MAX 4294967295U
132 #define ORC_UL_MIN 0
133 #define ORC_CLAMP_SB(x) ORC_CLAMP(x,ORC_SB_MIN,ORC_SB_MAX)
134 #define ORC_CLAMP_UB(x) ORC_CLAMP(x,ORC_UB_MIN,ORC_UB_MAX)
135 #define ORC_CLAMP_SW(x) ORC_CLAMP(x,ORC_SW_MIN,ORC_SW_MAX)
136 #define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX)
137 #define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX)
138 #define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX)
139 #define ORC_SWAP_W(x) ((((x)&0xffU)<<8) | (((x)&0xff00U)>>8))
140 #define ORC_SWAP_L(x) ((((x)&0xffU)<<24) | (((x)&0xff00U)<<8) | (((x)&0xff0000U)>>8) | (((x)&0xff000000U)>>24))
141 #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))
142 #define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset)))
143 #define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff))
144 #define ORC_ISNAN(x) ((((x)&0x7f800000) == 0x7f800000) && (((x)&0x007fffff) != 0))
145 #define ORC_DENORMAL_DOUBLE(x) ((x) & ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == 0) ? ORC_UINT64_C(0xfff0000000000000) : ORC_UINT64_C(0xffffffffffffffff)))
146 #define ORC_ISNAN_DOUBLE(x) ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == ORC_UINT64_C(0x7ff0000000000000)) && (((x)&ORC_UINT64_C(0x000fffffffffffff)) != 0))
147 #ifndef ORC_RESTRICT
148 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
149 #define ORC_RESTRICT restrict
150 #elif defined(__GNUC__) && __GNUC__ >= 4
151 #define ORC_RESTRICT __restrict__
152 #else
153 #define ORC_RESTRICT
154 #endif
155 #endif
156 /* end Orc C target preamble */
157 
158 
159 
160 /* fieldanalysis_orc_same_parity_sad_planar_yuv */
161 #ifdef DISABLE_ORC
162 void
fieldanalysis_orc_same_parity_sad_planar_yuv(guint32 * ORC_RESTRICT a1,const orc_uint8 * ORC_RESTRICT s1,const orc_uint8 * ORC_RESTRICT s2,int p1,int n)163 fieldanalysis_orc_same_parity_sad_planar_yuv (guint32 * ORC_RESTRICT a1,
164     const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
165     int p1, int n)
166 {
167   int i;
168   const orc_int8 *ORC_RESTRICT ptr4;
169   const orc_int8 *ORC_RESTRICT ptr5;
170   orc_union32 var12 = { 0 };
171   orc_int8 var36;
172   orc_int8 var37;
173   orc_union32 var38;
174   orc_union16 var39;
175   orc_union16 var40;
176   orc_union16 var41;
177   orc_union16 var42;
178   orc_union32 var43;
179   orc_union32 var44;
180   orc_union32 var45;
181 
182   ptr4 = (orc_int8 *) s1;
183   ptr5 = (orc_int8 *) s2;
184 
185   /* 7: loadpl */
186   var38.i = p1;
187 
188   for (i = 0; i < n; i++) {
189     /* 0: loadb */
190     var36 = ptr4[i];
191     /* 1: convubw */
192     var39.i = (orc_uint8) var36;
193     /* 2: loadb */
194     var37 = ptr5[i];
195     /* 3: convubw */
196     var40.i = (orc_uint8) var37;
197     /* 4: subw */
198     var41.i = var39.i - var40.i;
199     /* 5: absw */
200     var42.i = ORC_ABS (var41.i);
201     /* 6: convuwl */
202     var43.i = (orc_uint16) var42.i;
203     /* 8: cmpgtsl */
204     var44.i = (var43.i > var38.i) ? (~0) : 0;
205     /* 9: andl */
206     var45.i = var43.i & var44.i;
207     /* 10: accl */
208     var12.i = ((orc_uint32) var12.i) + ((orc_uint32) var45.i);
209   }
210   *a1 = var12.i;
211 
212 }
213 
214 #else
215 static void
_backup_fieldanalysis_orc_same_parity_sad_planar_yuv(OrcExecutor * ORC_RESTRICT ex)216 _backup_fieldanalysis_orc_same_parity_sad_planar_yuv (OrcExecutor *
217     ORC_RESTRICT ex)
218 {
219   int i;
220   int n = ex->n;
221   const orc_int8 *ORC_RESTRICT ptr4;
222   const orc_int8 *ORC_RESTRICT ptr5;
223   orc_union32 var12 = { 0 };
224   orc_int8 var36;
225   orc_int8 var37;
226   orc_union32 var38;
227   orc_union16 var39;
228   orc_union16 var40;
229   orc_union16 var41;
230   orc_union16 var42;
231   orc_union32 var43;
232   orc_union32 var44;
233   orc_union32 var45;
234 
235   ptr4 = (orc_int8 *) ex->arrays[4];
236   ptr5 = (orc_int8 *) ex->arrays[5];
237 
238   /* 7: loadpl */
239   var38.i = ex->params[24];
240 
241   for (i = 0; i < n; i++) {
242     /* 0: loadb */
243     var36 = ptr4[i];
244     /* 1: convubw */
245     var39.i = (orc_uint8) var36;
246     /* 2: loadb */
247     var37 = ptr5[i];
248     /* 3: convubw */
249     var40.i = (orc_uint8) var37;
250     /* 4: subw */
251     var41.i = var39.i - var40.i;
252     /* 5: absw */
253     var42.i = ORC_ABS (var41.i);
254     /* 6: convuwl */
255     var43.i = (orc_uint16) var42.i;
256     /* 8: cmpgtsl */
257     var44.i = (var43.i > var38.i) ? (~0) : 0;
258     /* 9: andl */
259     var45.i = var43.i & var44.i;
260     /* 10: accl */
261     var12.i = ((orc_uint32) var12.i) + ((orc_uint32) var45.i);
262   }
263   ex->accumulators[0] = var12.i;
264 
265 }
266 
267 void
fieldanalysis_orc_same_parity_sad_planar_yuv(guint32 * ORC_RESTRICT a1,const orc_uint8 * ORC_RESTRICT s1,const orc_uint8 * ORC_RESTRICT s2,int p1,int n)268 fieldanalysis_orc_same_parity_sad_planar_yuv (guint32 * ORC_RESTRICT a1,
269     const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
270     int p1, int n)
271 {
272   OrcExecutor _ex, *ex = &_ex;
273   static volatile int p_inited = 0;
274   static OrcCode *c = 0;
275   void (*func) (OrcExecutor *);
276 
277   if (!p_inited) {
278     orc_once_mutex_lock ();
279     if (!p_inited) {
280       OrcProgram *p;
281 
282 #if 1
283       static const orc_uint8 bc[] = {
284         1, 9, 44, 102, 105, 101, 108, 100, 97, 110, 97, 108, 121, 115, 105, 115,
285         95, 111, 114, 99, 95, 115, 97, 109, 101, 95, 112, 97, 114, 105, 116,
286             121,
287         95, 115, 97, 100, 95, 112, 108, 97, 110, 97, 114, 95, 121, 117, 118, 12,
288         1, 1, 12, 1, 1, 13, 4, 16, 4, 20, 2, 20, 2, 20, 4, 20,
289         4, 150, 32, 4, 150, 33, 5, 98, 32, 32, 33, 69, 32, 32, 154, 34,
290         32, 111, 35, 34, 24, 106, 34, 34, 35, 181, 12, 34, 2, 0,
291       };
292       p = orc_program_new_from_static_bytecode (bc);
293       orc_program_set_backup_function (p,
294           _backup_fieldanalysis_orc_same_parity_sad_planar_yuv);
295 #else
296       p = orc_program_new ();
297       orc_program_set_name (p, "fieldanalysis_orc_same_parity_sad_planar_yuv");
298       orc_program_set_backup_function (p,
299           _backup_fieldanalysis_orc_same_parity_sad_planar_yuv);
300       orc_program_add_source (p, 1, "s1");
301       orc_program_add_source (p, 1, "s2");
302       orc_program_add_accumulator (p, 4, "a1");
303       orc_program_add_parameter (p, 4, "p1");
304       orc_program_add_temporary (p, 2, "t1");
305       orc_program_add_temporary (p, 2, "t2");
306       orc_program_add_temporary (p, 4, "t3");
307       orc_program_add_temporary (p, 4, "t4");
308 
309       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
310           ORC_VAR_D1);
311       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
312           ORC_VAR_D1);
313       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
314           ORC_VAR_D1);
315       orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1,
316           ORC_VAR_D1);
317       orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1,
318           ORC_VAR_D1);
319       orc_program_append_2 (p, "cmpgtsl", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_P1,
320           ORC_VAR_D1);
321       orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4,
322           ORC_VAR_D1);
323       orc_program_append_2 (p, "accl", 0, ORC_VAR_A1, ORC_VAR_T3, ORC_VAR_D1,
324           ORC_VAR_D1);
325 #endif
326 
327       orc_program_compile (p);
328       c = orc_program_take_code (p);
329       orc_program_free (p);
330     }
331     p_inited = TRUE;
332     orc_once_mutex_unlock ();
333   }
334   ex->arrays[ORC_VAR_A2] = c;
335   ex->program = 0;
336 
337   ex->n = n;
338   ex->arrays[ORC_VAR_S1] = (void *) s1;
339   ex->arrays[ORC_VAR_S2] = (void *) s2;
340   ex->params[ORC_VAR_P1] = p1;
341 
342   func = c->exec;
343   func (ex);
344   *a1 = orc_executor_get_accumulator (ex, ORC_VAR_A1);
345 }
346 #endif
347 
348 
349 /* fieldanalysis_orc_same_parity_ssd_planar_yuv */
350 #ifdef DISABLE_ORC
351 void
fieldanalysis_orc_same_parity_ssd_planar_yuv(guint32 * ORC_RESTRICT a1,const orc_uint8 * ORC_RESTRICT s1,const orc_uint8 * ORC_RESTRICT s2,int p1,int n)352 fieldanalysis_orc_same_parity_ssd_planar_yuv (guint32 * ORC_RESTRICT a1,
353     const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
354     int p1, int n)
355 {
356   int i;
357   const orc_int8 *ORC_RESTRICT ptr4;
358   const orc_int8 *ORC_RESTRICT ptr5;
359   orc_union32 var12 = { 0 };
360   orc_int8 var36;
361   orc_int8 var37;
362   orc_union32 var38;
363   orc_union16 var39;
364   orc_union16 var40;
365   orc_union16 var41;
366   orc_union32 var42;
367   orc_union32 var43;
368   orc_union32 var44;
369 
370   ptr4 = (orc_int8 *) s1;
371   ptr5 = (orc_int8 *) s2;
372 
373   /* 6: loadpl */
374   var38.i = p1;
375 
376   for (i = 0; i < n; i++) {
377     /* 0: loadb */
378     var36 = ptr4[i];
379     /* 1: convubw */
380     var39.i = (orc_uint8) var36;
381     /* 2: loadb */
382     var37 = ptr5[i];
383     /* 3: convubw */
384     var40.i = (orc_uint8) var37;
385     /* 4: subw */
386     var41.i = var39.i - var40.i;
387     /* 5: mulswl */
388     var42.i = var41.i * var41.i;
389     /* 7: cmpgtsl */
390     var43.i = (var42.i > var38.i) ? (~0) : 0;
391     /* 8: andl */
392     var44.i = var42.i & var43.i;
393     /* 9: accl */
394     var12.i = ((orc_uint32) var12.i) + ((orc_uint32) var44.i);
395   }
396   *a1 = var12.i;
397 
398 }
399 
400 #else
401 static void
_backup_fieldanalysis_orc_same_parity_ssd_planar_yuv(OrcExecutor * ORC_RESTRICT ex)402 _backup_fieldanalysis_orc_same_parity_ssd_planar_yuv (OrcExecutor *
403     ORC_RESTRICT ex)
404 {
405   int i;
406   int n = ex->n;
407   const orc_int8 *ORC_RESTRICT ptr4;
408   const orc_int8 *ORC_RESTRICT ptr5;
409   orc_union32 var12 = { 0 };
410   orc_int8 var36;
411   orc_int8 var37;
412   orc_union32 var38;
413   orc_union16 var39;
414   orc_union16 var40;
415   orc_union16 var41;
416   orc_union32 var42;
417   orc_union32 var43;
418   orc_union32 var44;
419 
420   ptr4 = (orc_int8 *) ex->arrays[4];
421   ptr5 = (orc_int8 *) ex->arrays[5];
422 
423   /* 6: loadpl */
424   var38.i = ex->params[24];
425 
426   for (i = 0; i < n; i++) {
427     /* 0: loadb */
428     var36 = ptr4[i];
429     /* 1: convubw */
430     var39.i = (orc_uint8) var36;
431     /* 2: loadb */
432     var37 = ptr5[i];
433     /* 3: convubw */
434     var40.i = (orc_uint8) var37;
435     /* 4: subw */
436     var41.i = var39.i - var40.i;
437     /* 5: mulswl */
438     var42.i = var41.i * var41.i;
439     /* 7: cmpgtsl */
440     var43.i = (var42.i > var38.i) ? (~0) : 0;
441     /* 8: andl */
442     var44.i = var42.i & var43.i;
443     /* 9: accl */
444     var12.i = ((orc_uint32) var12.i) + ((orc_uint32) var44.i);
445   }
446   ex->accumulators[0] = var12.i;
447 
448 }
449 
450 void
fieldanalysis_orc_same_parity_ssd_planar_yuv(guint32 * ORC_RESTRICT a1,const orc_uint8 * ORC_RESTRICT s1,const orc_uint8 * ORC_RESTRICT s2,int p1,int n)451 fieldanalysis_orc_same_parity_ssd_planar_yuv (guint32 * ORC_RESTRICT a1,
452     const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
453     int p1, int n)
454 {
455   OrcExecutor _ex, *ex = &_ex;
456   static volatile int p_inited = 0;
457   static OrcCode *c = 0;
458   void (*func) (OrcExecutor *);
459 
460   if (!p_inited) {
461     orc_once_mutex_lock ();
462     if (!p_inited) {
463       OrcProgram *p;
464 
465 #if 1
466       static const orc_uint8 bc[] = {
467         1, 9, 44, 102, 105, 101, 108, 100, 97, 110, 97, 108, 121, 115, 105, 115,
468         95, 111, 114, 99, 95, 115, 97, 109, 101, 95, 112, 97, 114, 105, 116,
469             121,
470         95, 115, 115, 100, 95, 112, 108, 97, 110, 97, 114, 95, 121, 117, 118,
471             12,
472         1, 1, 12, 1, 1, 13, 4, 16, 4, 20, 2, 20, 2, 20, 4, 20,
473         4, 150, 32, 4, 150, 33, 5, 98, 32, 32, 33, 176, 34, 32, 32, 111,
474         35, 34, 24, 106, 34, 34, 35, 181, 12, 34, 2, 0,
475       };
476       p = orc_program_new_from_static_bytecode (bc);
477       orc_program_set_backup_function (p,
478           _backup_fieldanalysis_orc_same_parity_ssd_planar_yuv);
479 #else
480       p = orc_program_new ();
481       orc_program_set_name (p, "fieldanalysis_orc_same_parity_ssd_planar_yuv");
482       orc_program_set_backup_function (p,
483           _backup_fieldanalysis_orc_same_parity_ssd_planar_yuv);
484       orc_program_add_source (p, 1, "s1");
485       orc_program_add_source (p, 1, "s2");
486       orc_program_add_accumulator (p, 4, "a1");
487       orc_program_add_parameter (p, 4, "p1");
488       orc_program_add_temporary (p, 2, "t1");
489       orc_program_add_temporary (p, 2, "t2");
490       orc_program_add_temporary (p, 4, "t3");
491       orc_program_add_temporary (p, 4, "t4");
492 
493       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
494           ORC_VAR_D1);
495       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
496           ORC_VAR_D1);
497       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
498           ORC_VAR_D1);
499       orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1,
500           ORC_VAR_D1);
501       orc_program_append_2 (p, "cmpgtsl", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_P1,
502           ORC_VAR_D1);
503       orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4,
504           ORC_VAR_D1);
505       orc_program_append_2 (p, "accl", 0, ORC_VAR_A1, ORC_VAR_T3, ORC_VAR_D1,
506           ORC_VAR_D1);
507 #endif
508 
509       orc_program_compile (p);
510       c = orc_program_take_code (p);
511       orc_program_free (p);
512     }
513     p_inited = TRUE;
514     orc_once_mutex_unlock ();
515   }
516   ex->arrays[ORC_VAR_A2] = c;
517   ex->program = 0;
518 
519   ex->n = n;
520   ex->arrays[ORC_VAR_S1] = (void *) s1;
521   ex->arrays[ORC_VAR_S2] = (void *) s2;
522   ex->params[ORC_VAR_P1] = p1;
523 
524   func = c->exec;
525   func (ex);
526   *a1 = orc_executor_get_accumulator (ex, ORC_VAR_A1);
527 }
528 #endif
529 
530 
531 /* fieldanalysis_orc_same_parity_3_tap_planar_yuv */
532 #ifdef DISABLE_ORC
533 void
fieldanalysis_orc_same_parity_3_tap_planar_yuv(guint32 * ORC_RESTRICT a1,const orc_uint8 * ORC_RESTRICT s1,const orc_uint8 * ORC_RESTRICT s2,const orc_uint8 * ORC_RESTRICT s3,const orc_uint8 * ORC_RESTRICT s4,const orc_uint8 * ORC_RESTRICT s5,const orc_uint8 * ORC_RESTRICT s6,int p1,int n)534 fieldanalysis_orc_same_parity_3_tap_planar_yuv (guint32 * ORC_RESTRICT a1,
535     const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
536     const orc_uint8 * ORC_RESTRICT s3, const orc_uint8 * ORC_RESTRICT s4,
537     const orc_uint8 * ORC_RESTRICT s5, const orc_uint8 * ORC_RESTRICT s6,
538     int p1, int n)
539 {
540   int i;
541   const orc_int8 *ORC_RESTRICT ptr4;
542   const orc_int8 *ORC_RESTRICT ptr5;
543   const orc_int8 *ORC_RESTRICT ptr6;
544   const orc_int8 *ORC_RESTRICT ptr7;
545   const orc_int8 *ORC_RESTRICT ptr8;
546   const orc_int8 *ORC_RESTRICT ptr9;
547   orc_union32 var12 = { 0 };
548   orc_int8 var40;
549   orc_int8 var41;
550   orc_int8 var42;
551   orc_int8 var43;
552   orc_int8 var44;
553   orc_int8 var45;
554   orc_union32 var46;
555   orc_union16 var47;
556   orc_union16 var48;
557   orc_union16 var49;
558   orc_union16 var50;
559   orc_union16 var51;
560   orc_union16 var52;
561   orc_union16 var53;
562   orc_union16 var54;
563   orc_union16 var55;
564   orc_union16 var56;
565   orc_union16 var57;
566   orc_union16 var58;
567   orc_union16 var59;
568   orc_union16 var60;
569   orc_union32 var61;
570   orc_union32 var62;
571   orc_union32 var63;
572 
573   ptr4 = (orc_int8 *) s1;
574   ptr5 = (orc_int8 *) s2;
575   ptr6 = (orc_int8 *) s3;
576   ptr7 = (orc_int8 *) s4;
577   ptr8 = (orc_int8 *) s5;
578   ptr9 = (orc_int8 *) s6;
579 
580   /* 21: loadpl */
581   var46.i = p1;
582 
583   for (i = 0; i < n; i++) {
584     /* 0: loadb */
585     var40 = ptr4[i];
586     /* 1: convubw */
587     var47.i = (orc_uint8) var40;
588     /* 2: loadb */
589     var41 = ptr5[i];
590     /* 3: convubw */
591     var48.i = (orc_uint8) var41;
592     /* 4: loadb */
593     var42 = ptr6[i];
594     /* 5: convubw */
595     var49.i = (orc_uint8) var42;
596     /* 6: loadb */
597     var43 = ptr7[i];
598     /* 7: convubw */
599     var50.i = (orc_uint8) var43;
600     /* 8: loadb */
601     var44 = ptr8[i];
602     /* 9: convubw */
603     var51.i = (orc_uint8) var44;
604     /* 10: loadb */
605     var45 = ptr9[i];
606     /* 11: convubw */
607     var52.i = (orc_uint8) var45;
608     /* 12: shlw */
609     var53.i = ((orc_uint16) var48.i) << 2;
610     /* 13: shlw */
611     var54.i = ((orc_uint16) var51.i) << 2;
612     /* 14: addw */
613     var55.i = var47.i + var53.i;
614     /* 15: addw */
615     var56.i = var55.i + var49.i;
616     /* 16: addw */
617     var57.i = var50.i + var54.i;
618     /* 17: addw */
619     var58.i = var57.i + var52.i;
620     /* 18: subw */
621     var59.i = var56.i - var58.i;
622     /* 19: absw */
623     var60.i = ORC_ABS (var59.i);
624     /* 20: convuwl */
625     var61.i = (orc_uint16) var60.i;
626     /* 22: cmpgtsl */
627     var62.i = (var61.i > var46.i) ? (~0) : 0;
628     /* 23: andl */
629     var63.i = var61.i & var62.i;
630     /* 24: accl */
631     var12.i = ((orc_uint32) var12.i) + ((orc_uint32) var63.i);
632   }
633   *a1 = var12.i;
634 
635 }
636 
637 #else
638 static void
_backup_fieldanalysis_orc_same_parity_3_tap_planar_yuv(OrcExecutor * ORC_RESTRICT ex)639 _backup_fieldanalysis_orc_same_parity_3_tap_planar_yuv (OrcExecutor *
640     ORC_RESTRICT ex)
641 {
642   int i;
643   int n = ex->n;
644   const orc_int8 *ORC_RESTRICT ptr4;
645   const orc_int8 *ORC_RESTRICT ptr5;
646   const orc_int8 *ORC_RESTRICT ptr6;
647   const orc_int8 *ORC_RESTRICT ptr7;
648   const orc_int8 *ORC_RESTRICT ptr8;
649   const orc_int8 *ORC_RESTRICT ptr9;
650   orc_union32 var12 = { 0 };
651   orc_int8 var40;
652   orc_int8 var41;
653   orc_int8 var42;
654   orc_int8 var43;
655   orc_int8 var44;
656   orc_int8 var45;
657   orc_union32 var46;
658   orc_union16 var47;
659   orc_union16 var48;
660   orc_union16 var49;
661   orc_union16 var50;
662   orc_union16 var51;
663   orc_union16 var52;
664   orc_union16 var53;
665   orc_union16 var54;
666   orc_union16 var55;
667   orc_union16 var56;
668   orc_union16 var57;
669   orc_union16 var58;
670   orc_union16 var59;
671   orc_union16 var60;
672   orc_union32 var61;
673   orc_union32 var62;
674   orc_union32 var63;
675 
676   ptr4 = (orc_int8 *) ex->arrays[4];
677   ptr5 = (orc_int8 *) ex->arrays[5];
678   ptr6 = (orc_int8 *) ex->arrays[6];
679   ptr7 = (orc_int8 *) ex->arrays[7];
680   ptr8 = (orc_int8 *) ex->arrays[8];
681   ptr9 = (orc_int8 *) ex->arrays[9];
682 
683   /* 21: loadpl */
684   var46.i = ex->params[24];
685 
686   for (i = 0; i < n; i++) {
687     /* 0: loadb */
688     var40 = ptr4[i];
689     /* 1: convubw */
690     var47.i = (orc_uint8) var40;
691     /* 2: loadb */
692     var41 = ptr5[i];
693     /* 3: convubw */
694     var48.i = (orc_uint8) var41;
695     /* 4: loadb */
696     var42 = ptr6[i];
697     /* 5: convubw */
698     var49.i = (orc_uint8) var42;
699     /* 6: loadb */
700     var43 = ptr7[i];
701     /* 7: convubw */
702     var50.i = (orc_uint8) var43;
703     /* 8: loadb */
704     var44 = ptr8[i];
705     /* 9: convubw */
706     var51.i = (orc_uint8) var44;
707     /* 10: loadb */
708     var45 = ptr9[i];
709     /* 11: convubw */
710     var52.i = (orc_uint8) var45;
711     /* 12: shlw */
712     var53.i = ((orc_uint16) var48.i) << 2;
713     /* 13: shlw */
714     var54.i = ((orc_uint16) var51.i) << 2;
715     /* 14: addw */
716     var55.i = var47.i + var53.i;
717     /* 15: addw */
718     var56.i = var55.i + var49.i;
719     /* 16: addw */
720     var57.i = var50.i + var54.i;
721     /* 17: addw */
722     var58.i = var57.i + var52.i;
723     /* 18: subw */
724     var59.i = var56.i - var58.i;
725     /* 19: absw */
726     var60.i = ORC_ABS (var59.i);
727     /* 20: convuwl */
728     var61.i = (orc_uint16) var60.i;
729     /* 22: cmpgtsl */
730     var62.i = (var61.i > var46.i) ? (~0) : 0;
731     /* 23: andl */
732     var63.i = var61.i & var62.i;
733     /* 24: accl */
734     var12.i = ((orc_uint32) var12.i) + ((orc_uint32) var63.i);
735   }
736   ex->accumulators[0] = var12.i;
737 
738 }
739 
740 void
fieldanalysis_orc_same_parity_3_tap_planar_yuv(guint32 * ORC_RESTRICT a1,const orc_uint8 * ORC_RESTRICT s1,const orc_uint8 * ORC_RESTRICT s2,const orc_uint8 * ORC_RESTRICT s3,const orc_uint8 * ORC_RESTRICT s4,const orc_uint8 * ORC_RESTRICT s5,const orc_uint8 * ORC_RESTRICT s6,int p1,int n)741 fieldanalysis_orc_same_parity_3_tap_planar_yuv (guint32 * ORC_RESTRICT a1,
742     const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
743     const orc_uint8 * ORC_RESTRICT s3, const orc_uint8 * ORC_RESTRICT s4,
744     const orc_uint8 * ORC_RESTRICT s5, const orc_uint8 * ORC_RESTRICT s6,
745     int p1, int n)
746 {
747   OrcExecutor _ex, *ex = &_ex;
748   static volatile int p_inited = 0;
749   static OrcCode *c = 0;
750   void (*func) (OrcExecutor *);
751 
752   if (!p_inited) {
753     orc_once_mutex_lock ();
754     if (!p_inited) {
755       OrcProgram *p;
756 
757 #if 1
758       static const orc_uint8 bc[] = {
759         1, 9, 46, 102, 105, 101, 108, 100, 97, 110, 97, 108, 121, 115, 105, 115,
760         95, 111, 114, 99, 95, 115, 97, 109, 101, 95, 112, 97, 114, 105, 116,
761             121,
762         95, 51, 95, 116, 97, 112, 95, 112, 108, 97, 110, 97, 114, 95, 121, 117,
763         118, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1,
764         12, 1, 1, 13, 4, 14, 2, 2, 0, 0, 0, 16, 4, 20, 2, 20,
765         2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, 150, 32, 4,
766         150, 33, 5, 150, 34, 6, 150, 35, 7, 150, 36, 8, 150, 37, 9, 93,
767         33, 33, 16, 93, 36, 36, 16, 70, 32, 32, 33, 70, 32, 32, 34, 70,
768         35, 35, 36, 70, 35, 35, 37, 98, 32, 32, 35, 69, 32, 32, 154, 38,
769         32, 111, 39, 38, 24, 106, 38, 38, 39, 181, 12, 38, 2, 0,
770       };
771       p = orc_program_new_from_static_bytecode (bc);
772       orc_program_set_backup_function (p,
773           _backup_fieldanalysis_orc_same_parity_3_tap_planar_yuv);
774 #else
775       p = orc_program_new ();
776       orc_program_set_name (p,
777           "fieldanalysis_orc_same_parity_3_tap_planar_yuv");
778       orc_program_set_backup_function (p,
779           _backup_fieldanalysis_orc_same_parity_3_tap_planar_yuv);
780       orc_program_add_source (p, 1, "s1");
781       orc_program_add_source (p, 1, "s2");
782       orc_program_add_source (p, 1, "s3");
783       orc_program_add_source (p, 1, "s4");
784       orc_program_add_source (p, 1, "s5");
785       orc_program_add_source (p, 1, "s6");
786       orc_program_add_accumulator (p, 4, "a1");
787       orc_program_add_constant (p, 2, 0x00000002, "c1");
788       orc_program_add_parameter (p, 4, "p1");
789       orc_program_add_temporary (p, 2, "t1");
790       orc_program_add_temporary (p, 2, "t2");
791       orc_program_add_temporary (p, 2, "t3");
792       orc_program_add_temporary (p, 2, "t4");
793       orc_program_add_temporary (p, 2, "t5");
794       orc_program_add_temporary (p, 2, "t6");
795       orc_program_add_temporary (p, 4, "t7");
796       orc_program_add_temporary (p, 4, "t8");
797 
798       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
799           ORC_VAR_D1);
800       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
801           ORC_VAR_D1);
802       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1,
803           ORC_VAR_D1);
804       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T4, ORC_VAR_S4, ORC_VAR_D1,
805           ORC_VAR_D1);
806       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T5, ORC_VAR_S5, ORC_VAR_D1,
807           ORC_VAR_D1);
808       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T6, ORC_VAR_S6, ORC_VAR_D1,
809           ORC_VAR_D1);
810       orc_program_append_2 (p, "shlw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1,
811           ORC_VAR_D1);
812       orc_program_append_2 (p, "shlw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C1,
813           ORC_VAR_D1);
814       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
815           ORC_VAR_D1);
816       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T3,
817           ORC_VAR_D1);
818       orc_program_append_2 (p, "addw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5,
819           ORC_VAR_D1);
820       orc_program_append_2 (p, "addw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T6,
821           ORC_VAR_D1);
822       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T4,
823           ORC_VAR_D1);
824       orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1,
825           ORC_VAR_D1);
826       orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T7, ORC_VAR_T1, ORC_VAR_D1,
827           ORC_VAR_D1);
828       orc_program_append_2 (p, "cmpgtsl", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_P1,
829           ORC_VAR_D1);
830       orc_program_append_2 (p, "andl", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T8,
831           ORC_VAR_D1);
832       orc_program_append_2 (p, "accl", 0, ORC_VAR_A1, ORC_VAR_T7, ORC_VAR_D1,
833           ORC_VAR_D1);
834 #endif
835 
836       orc_program_compile (p);
837       c = orc_program_take_code (p);
838       orc_program_free (p);
839     }
840     p_inited = TRUE;
841     orc_once_mutex_unlock ();
842   }
843   ex->arrays[ORC_VAR_A2] = c;
844   ex->program = 0;
845 
846   ex->n = n;
847   ex->arrays[ORC_VAR_S1] = (void *) s1;
848   ex->arrays[ORC_VAR_S2] = (void *) s2;
849   ex->arrays[ORC_VAR_S3] = (void *) s3;
850   ex->arrays[ORC_VAR_S4] = (void *) s4;
851   ex->arrays[ORC_VAR_S5] = (void *) s5;
852   ex->arrays[ORC_VAR_S6] = (void *) s6;
853   ex->params[ORC_VAR_P1] = p1;
854 
855   func = c->exec;
856   func (ex);
857   *a1 = orc_executor_get_accumulator (ex, ORC_VAR_A1);
858 }
859 #endif
860 
861 
862 /* fieldanalysis_orc_opposite_parity_5_tap_planar_yuv */
863 #ifdef DISABLE_ORC
864 void
fieldanalysis_orc_opposite_parity_5_tap_planar_yuv(guint32 * ORC_RESTRICT a1,const orc_uint8 * ORC_RESTRICT s1,const orc_uint8 * ORC_RESTRICT s2,const orc_uint8 * ORC_RESTRICT s3,const orc_uint8 * ORC_RESTRICT s4,const orc_uint8 * ORC_RESTRICT s5,int p1,int n)865 fieldanalysis_orc_opposite_parity_5_tap_planar_yuv (guint32 * ORC_RESTRICT a1,
866     const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
867     const orc_uint8 * ORC_RESTRICT s3, const orc_uint8 * ORC_RESTRICT s4,
868     const orc_uint8 * ORC_RESTRICT s5, int p1, int n)
869 {
870   int i;
871   const orc_int8 *ORC_RESTRICT ptr4;
872   const orc_int8 *ORC_RESTRICT ptr5;
873   const orc_int8 *ORC_RESTRICT ptr6;
874   const orc_int8 *ORC_RESTRICT ptr7;
875   const orc_int8 *ORC_RESTRICT ptr8;
876   orc_union32 var12 = { 0 };
877   orc_int8 var39;
878   orc_int8 var40;
879   orc_int8 var41;
880   orc_int8 var42;
881   orc_int8 var43;
882 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
883   volatile orc_union16 var44;
884 #else
885   orc_union16 var44;
886 #endif
887   orc_union32 var45;
888   orc_union16 var46;
889   orc_union16 var47;
890   orc_union16 var48;
891   orc_union16 var49;
892   orc_union16 var50;
893   orc_union16 var51;
894   orc_union16 var52;
895   orc_union16 var53;
896   orc_union16 var54;
897   orc_union16 var55;
898   orc_union16 var56;
899   orc_union16 var57;
900   orc_union16 var58;
901   orc_union32 var59;
902   orc_union32 var60;
903   orc_union32 var61;
904 
905   ptr4 = (orc_int8 *) s1;
906   ptr5 = (orc_int8 *) s2;
907   ptr6 = (orc_int8 *) s3;
908   ptr7 = (orc_int8 *) s4;
909   ptr8 = (orc_int8 *) s5;
910 
911   /* 11: loadpw */
912   var44.i = 0x00000003;         /* 3 or 1.4822e-323f */
913   /* 20: loadpl */
914   var45.i = p1;
915 
916   for (i = 0; i < n; i++) {
917     /* 0: loadb */
918     var39 = ptr4[i];
919     /* 1: convubw */
920     var46.i = (orc_uint8) var39;
921     /* 2: loadb */
922     var40 = ptr5[i];
923     /* 3: convubw */
924     var47.i = (orc_uint8) var40;
925     /* 4: loadb */
926     var41 = ptr6[i];
927     /* 5: convubw */
928     var48.i = (orc_uint8) var41;
929     /* 6: loadb */
930     var42 = ptr7[i];
931     /* 7: convubw */
932     var49.i = (orc_uint8) var42;
933     /* 8: loadb */
934     var43 = ptr8[i];
935     /* 9: convubw */
936     var50.i = (orc_uint8) var43;
937     /* 10: shlw */
938     var51.i = ((orc_uint16) var48.i) << 2;
939     /* 12: mullw */
940     var52.i = (var47.i * var44.i) & 0xffff;
941     /* 13: mullw */
942     var53.i = (var49.i * var44.i) & 0xffff;
943     /* 14: subw */
944     var54.i = var46.i - var52.i;
945     /* 15: addw */
946     var55.i = var54.i + var51.i;
947     /* 16: subw */
948     var56.i = var55.i - var53.i;
949     /* 17: addw */
950     var57.i = var56.i + var50.i;
951     /* 18: absw */
952     var58.i = ORC_ABS (var57.i);
953     /* 19: convuwl */
954     var59.i = (orc_uint16) var58.i;
955     /* 21: cmpgtsl */
956     var60.i = (var59.i > var45.i) ? (~0) : 0;
957     /* 22: andl */
958     var61.i = var59.i & var60.i;
959     /* 23: accl */
960     var12.i = ((orc_uint32) var12.i) + ((orc_uint32) var61.i);
961   }
962   *a1 = var12.i;
963 
964 }
965 
966 #else
967 static void
_backup_fieldanalysis_orc_opposite_parity_5_tap_planar_yuv(OrcExecutor * ORC_RESTRICT ex)968 _backup_fieldanalysis_orc_opposite_parity_5_tap_planar_yuv (OrcExecutor *
969     ORC_RESTRICT ex)
970 {
971   int i;
972   int n = ex->n;
973   const orc_int8 *ORC_RESTRICT ptr4;
974   const orc_int8 *ORC_RESTRICT ptr5;
975   const orc_int8 *ORC_RESTRICT ptr6;
976   const orc_int8 *ORC_RESTRICT ptr7;
977   const orc_int8 *ORC_RESTRICT ptr8;
978   orc_union32 var12 = { 0 };
979   orc_int8 var39;
980   orc_int8 var40;
981   orc_int8 var41;
982   orc_int8 var42;
983   orc_int8 var43;
984 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
985   volatile orc_union16 var44;
986 #else
987   orc_union16 var44;
988 #endif
989   orc_union32 var45;
990   orc_union16 var46;
991   orc_union16 var47;
992   orc_union16 var48;
993   orc_union16 var49;
994   orc_union16 var50;
995   orc_union16 var51;
996   orc_union16 var52;
997   orc_union16 var53;
998   orc_union16 var54;
999   orc_union16 var55;
1000   orc_union16 var56;
1001   orc_union16 var57;
1002   orc_union16 var58;
1003   orc_union32 var59;
1004   orc_union32 var60;
1005   orc_union32 var61;
1006 
1007   ptr4 = (orc_int8 *) ex->arrays[4];
1008   ptr5 = (orc_int8 *) ex->arrays[5];
1009   ptr6 = (orc_int8 *) ex->arrays[6];
1010   ptr7 = (orc_int8 *) ex->arrays[7];
1011   ptr8 = (orc_int8 *) ex->arrays[8];
1012 
1013   /* 11: loadpw */
1014   var44.i = 0x00000003;         /* 3 or 1.4822e-323f */
1015   /* 20: loadpl */
1016   var45.i = ex->params[24];
1017 
1018   for (i = 0; i < n; i++) {
1019     /* 0: loadb */
1020     var39 = ptr4[i];
1021     /* 1: convubw */
1022     var46.i = (orc_uint8) var39;
1023     /* 2: loadb */
1024     var40 = ptr5[i];
1025     /* 3: convubw */
1026     var47.i = (orc_uint8) var40;
1027     /* 4: loadb */
1028     var41 = ptr6[i];
1029     /* 5: convubw */
1030     var48.i = (orc_uint8) var41;
1031     /* 6: loadb */
1032     var42 = ptr7[i];
1033     /* 7: convubw */
1034     var49.i = (orc_uint8) var42;
1035     /* 8: loadb */
1036     var43 = ptr8[i];
1037     /* 9: convubw */
1038     var50.i = (orc_uint8) var43;
1039     /* 10: shlw */
1040     var51.i = ((orc_uint16) var48.i) << 2;
1041     /* 12: mullw */
1042     var52.i = (var47.i * var44.i) & 0xffff;
1043     /* 13: mullw */
1044     var53.i = (var49.i * var44.i) & 0xffff;
1045     /* 14: subw */
1046     var54.i = var46.i - var52.i;
1047     /* 15: addw */
1048     var55.i = var54.i + var51.i;
1049     /* 16: subw */
1050     var56.i = var55.i - var53.i;
1051     /* 17: addw */
1052     var57.i = var56.i + var50.i;
1053     /* 18: absw */
1054     var58.i = ORC_ABS (var57.i);
1055     /* 19: convuwl */
1056     var59.i = (orc_uint16) var58.i;
1057     /* 21: cmpgtsl */
1058     var60.i = (var59.i > var45.i) ? (~0) : 0;
1059     /* 22: andl */
1060     var61.i = var59.i & var60.i;
1061     /* 23: accl */
1062     var12.i = ((orc_uint32) var12.i) + ((orc_uint32) var61.i);
1063   }
1064   ex->accumulators[0] = var12.i;
1065 
1066 }
1067 
1068 void
fieldanalysis_orc_opposite_parity_5_tap_planar_yuv(guint32 * ORC_RESTRICT a1,const orc_uint8 * ORC_RESTRICT s1,const orc_uint8 * ORC_RESTRICT s2,const orc_uint8 * ORC_RESTRICT s3,const orc_uint8 * ORC_RESTRICT s4,const orc_uint8 * ORC_RESTRICT s5,int p1,int n)1069 fieldanalysis_orc_opposite_parity_5_tap_planar_yuv (guint32 * ORC_RESTRICT a1,
1070     const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
1071     const orc_uint8 * ORC_RESTRICT s3, const orc_uint8 * ORC_RESTRICT s4,
1072     const orc_uint8 * ORC_RESTRICT s5, int p1, int n)
1073 {
1074   OrcExecutor _ex, *ex = &_ex;
1075   static volatile int p_inited = 0;
1076   static OrcCode *c = 0;
1077   void (*func) (OrcExecutor *);
1078 
1079   if (!p_inited) {
1080     orc_once_mutex_lock ();
1081     if (!p_inited) {
1082       OrcProgram *p;
1083 
1084 #if 1
1085       static const orc_uint8 bc[] = {
1086         1, 9, 50, 102, 105, 101, 108, 100, 97, 110, 97, 108, 121, 115, 105, 115,
1087         95, 111, 114, 99, 95, 111, 112, 112, 111, 115, 105, 116, 101, 95, 112,
1088             97,
1089         114, 105, 116, 121, 95, 53, 95, 116, 97, 112, 95, 112, 108, 97, 110, 97,
1090         114, 95, 121, 117, 118, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1,
1091         1, 12, 1, 1, 13, 4, 14, 2, 2, 0, 0, 0, 14, 2, 3, 0,
1092         0, 0, 16, 4, 20, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 4,
1093         20, 4, 150, 32, 4, 150, 33, 5, 150, 34, 6, 150, 35, 7, 150, 36,
1094         8, 93, 34, 34, 16, 89, 33, 33, 17, 89, 35, 35, 17, 98, 32, 32,
1095         33, 70, 32, 32, 34, 98, 32, 32, 35, 70, 32, 32, 36, 69, 32, 32,
1096         154, 37, 32, 111, 38, 37, 24, 106, 37, 37, 38, 181, 12, 37, 2, 0,
1097 
1098       };
1099       p = orc_program_new_from_static_bytecode (bc);
1100       orc_program_set_backup_function (p,
1101           _backup_fieldanalysis_orc_opposite_parity_5_tap_planar_yuv);
1102 #else
1103       p = orc_program_new ();
1104       orc_program_set_name (p,
1105           "fieldanalysis_orc_opposite_parity_5_tap_planar_yuv");
1106       orc_program_set_backup_function (p,
1107           _backup_fieldanalysis_orc_opposite_parity_5_tap_planar_yuv);
1108       orc_program_add_source (p, 1, "s1");
1109       orc_program_add_source (p, 1, "s2");
1110       orc_program_add_source (p, 1, "s3");
1111       orc_program_add_source (p, 1, "s4");
1112       orc_program_add_source (p, 1, "s5");
1113       orc_program_add_accumulator (p, 4, "a1");
1114       orc_program_add_constant (p, 2, 0x00000002, "c1");
1115       orc_program_add_constant (p, 2, 0x00000003, "c2");
1116       orc_program_add_parameter (p, 4, "p1");
1117       orc_program_add_temporary (p, 2, "t1");
1118       orc_program_add_temporary (p, 2, "t2");
1119       orc_program_add_temporary (p, 2, "t3");
1120       orc_program_add_temporary (p, 2, "t4");
1121       orc_program_add_temporary (p, 2, "t5");
1122       orc_program_add_temporary (p, 4, "t6");
1123       orc_program_add_temporary (p, 4, "t7");
1124 
1125       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
1126           ORC_VAR_D1);
1127       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
1128           ORC_VAR_D1);
1129       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1,
1130           ORC_VAR_D1);
1131       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T4, ORC_VAR_S4, ORC_VAR_D1,
1132           ORC_VAR_D1);
1133       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T5, ORC_VAR_S5, ORC_VAR_D1,
1134           ORC_VAR_D1);
1135       orc_program_append_2 (p, "shlw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C1,
1136           ORC_VAR_D1);
1137       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2,
1138           ORC_VAR_D1);
1139       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C2,
1140           ORC_VAR_D1);
1141       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
1142           ORC_VAR_D1);
1143       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T3,
1144           ORC_VAR_D1);
1145       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T4,
1146           ORC_VAR_D1);
1147       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T5,
1148           ORC_VAR_D1);
1149       orc_program_append_2 (p, "absw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1,
1150           ORC_VAR_D1);
1151       orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_D1,
1152           ORC_VAR_D1);
1153       orc_program_append_2 (p, "cmpgtsl", 0, ORC_VAR_T7, ORC_VAR_T6, ORC_VAR_P1,
1154           ORC_VAR_D1);
1155       orc_program_append_2 (p, "andl", 0, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T7,
1156           ORC_VAR_D1);
1157       orc_program_append_2 (p, "accl", 0, ORC_VAR_A1, ORC_VAR_T6, ORC_VAR_D1,
1158           ORC_VAR_D1);
1159 #endif
1160 
1161       orc_program_compile (p);
1162       c = orc_program_take_code (p);
1163       orc_program_free (p);
1164     }
1165     p_inited = TRUE;
1166     orc_once_mutex_unlock ();
1167   }
1168   ex->arrays[ORC_VAR_A2] = c;
1169   ex->program = 0;
1170 
1171   ex->n = n;
1172   ex->arrays[ORC_VAR_S1] = (void *) s1;
1173   ex->arrays[ORC_VAR_S2] = (void *) s2;
1174   ex->arrays[ORC_VAR_S3] = (void *) s3;
1175   ex->arrays[ORC_VAR_S4] = (void *) s4;
1176   ex->arrays[ORC_VAR_S5] = (void *) s5;
1177   ex->params[ORC_VAR_P1] = p1;
1178 
1179   func = c->exec;
1180   func (ex);
1181   *a1 = orc_executor_get_accumulator (ex, ORC_VAR_A1);
1182 }
1183 #endif
1184