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