2 /* autogenerated from gstvideoscaleorc.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__
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")))
98 void video_scale_orc_merge_linear_u8 (orc_uint8 * ORC_RESTRICT d1,
99 const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
101 void video_scale_orc_merge_linear_u16 (orc_uint16 * ORC_RESTRICT d1,
102 const orc_uint16 * ORC_RESTRICT s1, const orc_uint16 * ORC_RESTRICT s2,
103 int p1, int p2, int n);
104 void video_scale_orc_splat_u16 (orc_uint16 * ORC_RESTRICT d1, int p1, int n);
105 void video_scale_orc_splat_u32 (orc_uint32 * ORC_RESTRICT d1, int p1, int n);
106 void video_scale_orc_splat_u64 (orc_uint64 * ORC_RESTRICT d1, orc_int64 p1,
108 void video_scale_orc_downsample_u8 (guint8 * ORC_RESTRICT d1,
109 const guint8 * ORC_RESTRICT s1, int n);
110 void video_scale_orc_downsample_u16 (guint16 * ORC_RESTRICT d1,
111 const guint16 * ORC_RESTRICT s1, int n);
112 void video_scale_orc_downsample_u32 (guint8 * ORC_RESTRICT d1,
113 const guint8 * ORC_RESTRICT s1, int n);
114 void video_scale_orc_downsample_yuyv (guint8 * ORC_RESTRICT d1,
115 const guint8 * ORC_RESTRICT s1, int n);
116 void video_scale_orc_resample_nearest_u8 (guint8 * ORC_RESTRICT d1,
117 const guint8 * ORC_RESTRICT s1, int p1, int p2, int n);
118 void video_scale_orc_resample_bilinear_u8 (guint8 * ORC_RESTRICT d1,
119 const guint8 * ORC_RESTRICT s1, int p1, int p2, int n);
120 void video_scale_orc_resample_nearest_u32 (guint8 * ORC_RESTRICT d1,
121 const guint8 * ORC_RESTRICT s1, int p1, int p2, int n);
122 void video_scale_orc_resample_bilinear_u32 (guint8 * ORC_RESTRICT d1,
123 const guint8 * ORC_RESTRICT s1, int p1, int p2, int n);
124 void video_scale_orc_resample_merge_bilinear_u32 (guint8 * ORC_RESTRICT d1,
125 guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1,
126 const guint8 * ORC_RESTRICT s2, int p1, int p2, int p3, int n);
127 void video_scale_orc_merge_bicubic_u8 (guint8 * ORC_RESTRICT d1,
128 const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
129 const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int p1,
130 int p2, int p3, int p4, int n);
133 /* begin Orc C target preamble */
134 #define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x)))
135 #define ORC_ABS(a) ((a)<0 ? -(a) : (a))
136 #define ORC_MIN(a,b) ((a)<(b) ? (a) : (b))
137 #define ORC_MAX(a,b) ((a)>(b) ? (a) : (b))
138 #define ORC_SB_MAX 127
139 #define ORC_SB_MIN (-1-ORC_SB_MAX)
140 #define ORC_UB_MAX 255
142 #define ORC_SW_MAX 32767
143 #define ORC_SW_MIN (-1-ORC_SW_MAX)
144 #define ORC_UW_MAX 65535
146 #define ORC_SL_MAX 2147483647
147 #define ORC_SL_MIN (-1-ORC_SL_MAX)
148 #define ORC_UL_MAX 4294967295U
150 #define ORC_CLAMP_SB(x) ORC_CLAMP(x,ORC_SB_MIN,ORC_SB_MAX)
151 #define ORC_CLAMP_UB(x) ORC_CLAMP(x,ORC_UB_MIN,ORC_UB_MAX)
152 #define ORC_CLAMP_SW(x) ORC_CLAMP(x,ORC_SW_MIN,ORC_SW_MAX)
153 #define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX)
154 #define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX)
155 #define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX)
156 #define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8))
157 #define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24))
158 #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))
159 #define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset)))
160 #define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff))
161 #define ORC_ISNAN(x) ((((x)&0x7f800000) == 0x7f800000) && (((x)&0x007fffff) != 0))
162 #define ORC_DENORMAL_DOUBLE(x) ((x) & ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == 0) ? ORC_UINT64_C(0xfff0000000000000) : ORC_UINT64_C(0xffffffffffffffff)))
163 #define ORC_ISNAN_DOUBLE(x) ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == ORC_UINT64_C(0x7ff0000000000000)) && (((x)&ORC_UINT64_C(0x000fffffffffffff)) != 0))
165 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
166 #define ORC_RESTRICT restrict
167 #elif defined(__GNUC__) && __GNUC__ >= 4
168 #define ORC_RESTRICT __restrict__
173 /* end Orc C target preamble */
177 /* video_scale_orc_merge_linear_u8 */
180 video_scale_orc_merge_linear_u8 (orc_uint8 * ORC_RESTRICT d1,
181 const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
185 orc_int8 *ORC_RESTRICT ptr0;
186 const orc_int8 *ORC_RESTRICT ptr4;
187 const orc_int8 *ORC_RESTRICT ptr5;
191 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
192 volatile orc_union16 var39;
205 ptr0 = (orc_int8 *) d1;
206 ptr4 = (orc_int8 *) s1;
207 ptr5 = (orc_int8 *) s2;
212 var39.i = (int) 0x00000080; /* 128 or 6.32404e-322f */
214 for (i = 0; i < n; i++) {
220 var42.i = (orc_uint8) var36;
224 var43.i = (orc_uint8) var37;
226 var44.i = var43.i - var42.i;
228 var45.i = (var44.i * var38.i) & 0xffff;
230 var46.i = var45.i + var39.i;
232 var47 = ((orc_uint16) var46.i) >> 8;
234 var40 = var47 + var41;
243 _backup_video_scale_orc_merge_linear_u8 (OrcExecutor * ORC_RESTRICT ex)
247 orc_int8 *ORC_RESTRICT ptr0;
248 const orc_int8 *ORC_RESTRICT ptr4;
249 const orc_int8 *ORC_RESTRICT ptr5;
253 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
254 volatile orc_union16 var39;
267 ptr0 = (orc_int8 *) ex->arrays[0];
268 ptr4 = (orc_int8 *) ex->arrays[4];
269 ptr5 = (orc_int8 *) ex->arrays[5];
272 var38.i = ex->params[24];
274 var39.i = (int) 0x00000080; /* 128 or 6.32404e-322f */
276 for (i = 0; i < n; i++) {
282 var42.i = (orc_uint8) var36;
286 var43.i = (orc_uint8) var37;
288 var44.i = var43.i - var42.i;
290 var45.i = (var44.i * var38.i) & 0xffff;
292 var46.i = var45.i + var39.i;
294 var47 = ((orc_uint16) var46.i) >> 8;
296 var40 = var47 + var41;
304 video_scale_orc_merge_linear_u8 (orc_uint8 * ORC_RESTRICT d1,
305 const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
308 OrcExecutor _ex, *ex = &_ex;
309 static volatile int p_inited = 0;
310 static OrcCode *c = 0;
311 void (*func) (OrcExecutor *);
314 orc_once_mutex_lock ();
319 static const orc_uint8 bc[] = {
320 1, 9, 31, 118, 105, 100, 101, 111, 95, 115, 99, 97, 108, 101, 95, 111,
321 114, 99, 95, 109, 101, 114, 103, 101, 95, 108, 105, 110, 101, 97, 114,
323 117, 56, 11, 1, 1, 12, 1, 1, 12, 1, 1, 14, 4, 128, 0, 0,
324 0, 16, 1, 20, 2, 20, 2, 20, 1, 20, 1, 43, 34, 4, 150, 32,
325 4, 150, 33, 5, 98, 33, 33, 32, 89, 33, 33, 24, 70, 33, 33, 16,
326 158, 35, 33, 33, 0, 35, 34, 2, 0,
328 p = orc_program_new_from_static_bytecode (bc);
329 orc_program_set_backup_function (p,
330 _backup_video_scale_orc_merge_linear_u8);
332 p = orc_program_new ();
333 orc_program_set_name (p, "video_scale_orc_merge_linear_u8");
334 orc_program_set_backup_function (p,
335 _backup_video_scale_orc_merge_linear_u8);
336 orc_program_add_destination (p, 1, "d1");
337 orc_program_add_source (p, 1, "s1");
338 orc_program_add_source (p, 1, "s2");
339 orc_program_add_constant (p, 4, 0x00000080, "c1");
340 orc_program_add_parameter (p, 1, "p1");
341 orc_program_add_temporary (p, 2, "t1");
342 orc_program_add_temporary (p, 2, "t2");
343 orc_program_add_temporary (p, 1, "t3");
344 orc_program_add_temporary (p, 1, "t4");
346 orc_program_append_2 (p, "loadb", 0, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_D1,
348 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
350 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
352 orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1,
354 orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1,
356 orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1,
358 orc_program_append_2 (p, "convhwb", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_D1,
360 orc_program_append_2 (p, "addb", 0, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_T3,
364 orc_program_compile (p);
365 c = orc_program_take_code (p);
366 orc_program_free (p);
369 orc_once_mutex_unlock ();
371 ex->arrays[ORC_VAR_A2] = c;
375 ex->arrays[ORC_VAR_D1] = d1;
376 ex->arrays[ORC_VAR_S1] = (void *) s1;
377 ex->arrays[ORC_VAR_S2] = (void *) s2;
378 ex->params[ORC_VAR_P1] = p1;
386 /* video_scale_orc_merge_linear_u16 */
389 video_scale_orc_merge_linear_u16 (orc_uint16 * ORC_RESTRICT d1,
390 const orc_uint16 * ORC_RESTRICT s1, const orc_uint16 * ORC_RESTRICT s2,
391 int p1, int p2, int n)
394 orc_union16 *ORC_RESTRICT ptr0;
395 const orc_union16 *ORC_RESTRICT ptr4;
396 const orc_union16 *ORC_RESTRICT ptr5;
407 ptr0 = (orc_union16 *) d1;
408 ptr4 = (orc_union16 *) s1;
409 ptr5 = (orc_union16 *) s2;
416 for (i = 0; i < n; i++) {
420 var39.i = ((orc_uint16) var34.i) * ((orc_uint16) var35.i);
424 var40.i = ((orc_uint16) var36.i) * ((orc_uint16) var37.i);
426 var41.i = var39.i + var40.i;
428 var42.i = ((orc_uint32) var41.i) >> 16;
439 _backup_video_scale_orc_merge_linear_u16 (OrcExecutor * ORC_RESTRICT ex)
443 orc_union16 *ORC_RESTRICT ptr0;
444 const orc_union16 *ORC_RESTRICT ptr4;
445 const orc_union16 *ORC_RESTRICT ptr5;
456 ptr0 = (orc_union16 *) ex->arrays[0];
457 ptr4 = (orc_union16 *) ex->arrays[4];
458 ptr5 = (orc_union16 *) ex->arrays[5];
461 var35.i = ex->params[24];
463 var37.i = ex->params[25];
465 for (i = 0; i < n; i++) {
469 var39.i = ((orc_uint16) var34.i) * ((orc_uint16) var35.i);
473 var40.i = ((orc_uint16) var36.i) * ((orc_uint16) var37.i);
475 var41.i = var39.i + var40.i;
477 var42.i = ((orc_uint32) var41.i) >> 16;
487 video_scale_orc_merge_linear_u16 (orc_uint16 * ORC_RESTRICT d1,
488 const orc_uint16 * ORC_RESTRICT s1, const orc_uint16 * ORC_RESTRICT s2,
489 int p1, int p2, int n)
491 OrcExecutor _ex, *ex = &_ex;
492 static volatile int p_inited = 0;
493 static OrcCode *c = 0;
494 void (*func) (OrcExecutor *);
497 orc_once_mutex_lock ();
502 static const orc_uint8 bc[] = {
503 1, 9, 32, 118, 105, 100, 101, 111, 95, 115, 99, 97, 108, 101, 95, 111,
504 114, 99, 95, 109, 101, 114, 103, 101, 95, 108, 105, 110, 101, 97, 114,
506 117, 49, 54, 11, 2, 2, 12, 2, 2, 12, 2, 2, 14, 4, 16, 0,
507 0, 0, 16, 2, 16, 2, 20, 4, 20, 4, 177, 32, 4, 24, 177, 33,
508 5, 25, 103, 32, 32, 33, 126, 32, 32, 16, 163, 0, 32, 2, 0,
510 p = orc_program_new_from_static_bytecode (bc);
511 orc_program_set_backup_function (p,
512 _backup_video_scale_orc_merge_linear_u16);
514 p = orc_program_new ();
515 orc_program_set_name (p, "video_scale_orc_merge_linear_u16");
516 orc_program_set_backup_function (p,
517 _backup_video_scale_orc_merge_linear_u16);
518 orc_program_add_destination (p, 2, "d1");
519 orc_program_add_source (p, 2, "s1");
520 orc_program_add_source (p, 2, "s2");
521 orc_program_add_constant (p, 4, 0x00000010, "c1");
522 orc_program_add_parameter (p, 2, "p1");
523 orc_program_add_parameter (p, 2, "p2");
524 orc_program_add_temporary (p, 4, "t1");
525 orc_program_add_temporary (p, 4, "t2");
527 orc_program_append_2 (p, "muluwl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1,
529 orc_program_append_2 (p, "muluwl", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_P2,
531 orc_program_append_2 (p, "addl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
533 orc_program_append_2 (p, "shrul", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
535 orc_program_append_2 (p, "convlw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
539 orc_program_compile (p);
540 c = orc_program_take_code (p);
541 orc_program_free (p);
544 orc_once_mutex_unlock ();
546 ex->arrays[ORC_VAR_A2] = c;
550 ex->arrays[ORC_VAR_D1] = d1;
551 ex->arrays[ORC_VAR_S1] = (void *) s1;
552 ex->arrays[ORC_VAR_S2] = (void *) s2;
553 ex->params[ORC_VAR_P1] = p1;
554 ex->params[ORC_VAR_P2] = p2;
562 /* video_scale_orc_splat_u16 */
565 video_scale_orc_splat_u16 (orc_uint16 * ORC_RESTRICT d1, int p1, int n)
568 orc_union16 *ORC_RESTRICT ptr0;
572 ptr0 = (orc_union16 *) d1;
577 for (i = 0; i < n; i++) {
588 _backup_video_scale_orc_splat_u16 (OrcExecutor * ORC_RESTRICT ex)
592 orc_union16 *ORC_RESTRICT ptr0;
596 ptr0 = (orc_union16 *) ex->arrays[0];
599 var32.i = ex->params[24];
601 for (i = 0; i < n; i++) {
611 video_scale_orc_splat_u16 (orc_uint16 * ORC_RESTRICT d1, int p1, int n)
613 OrcExecutor _ex, *ex = &_ex;
614 static volatile int p_inited = 0;
615 static OrcCode *c = 0;
616 void (*func) (OrcExecutor *);
619 orc_once_mutex_lock ();
624 static const orc_uint8 bc[] = {
625 1, 9, 25, 118, 105, 100, 101, 111, 95, 115, 99, 97, 108, 101, 95, 111,
626 114, 99, 95, 115, 112, 108, 97, 116, 95, 117, 49, 54, 11, 2, 2, 16,
629 p = orc_program_new_from_static_bytecode (bc);
630 orc_program_set_backup_function (p, _backup_video_scale_orc_splat_u16);
632 p = orc_program_new ();
633 orc_program_set_name (p, "video_scale_orc_splat_u16");
634 orc_program_set_backup_function (p, _backup_video_scale_orc_splat_u16);
635 orc_program_add_destination (p, 2, "d1");
636 orc_program_add_parameter (p, 2, "p1");
638 orc_program_append_2 (p, "copyw", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1,
642 orc_program_compile (p);
643 c = orc_program_take_code (p);
644 orc_program_free (p);
647 orc_once_mutex_unlock ();
649 ex->arrays[ORC_VAR_A2] = c;
653 ex->arrays[ORC_VAR_D1] = d1;
654 ex->params[ORC_VAR_P1] = p1;
662 /* video_scale_orc_splat_u32 */
665 video_scale_orc_splat_u32 (orc_uint32 * ORC_RESTRICT d1, int p1, int n)
668 orc_union32 *ORC_RESTRICT ptr0;
672 ptr0 = (orc_union32 *) d1;
677 for (i = 0; i < n; i++) {
688 _backup_video_scale_orc_splat_u32 (OrcExecutor * ORC_RESTRICT ex)
692 orc_union32 *ORC_RESTRICT ptr0;
696 ptr0 = (orc_union32 *) ex->arrays[0];
699 var32.i = ex->params[24];
701 for (i = 0; i < n; i++) {
711 video_scale_orc_splat_u32 (orc_uint32 * ORC_RESTRICT d1, int p1, int n)
713 OrcExecutor _ex, *ex = &_ex;
714 static volatile int p_inited = 0;
715 static OrcCode *c = 0;
716 void (*func) (OrcExecutor *);
719 orc_once_mutex_lock ();
724 static const orc_uint8 bc[] = {
725 1, 9, 25, 118, 105, 100, 101, 111, 95, 115, 99, 97, 108, 101, 95, 111,
726 114, 99, 95, 115, 112, 108, 97, 116, 95, 117, 51, 50, 11, 4, 4, 16,
729 p = orc_program_new_from_static_bytecode (bc);
730 orc_program_set_backup_function (p, _backup_video_scale_orc_splat_u32);
732 p = orc_program_new ();
733 orc_program_set_name (p, "video_scale_orc_splat_u32");
734 orc_program_set_backup_function (p, _backup_video_scale_orc_splat_u32);
735 orc_program_add_destination (p, 4, "d1");
736 orc_program_add_parameter (p, 4, "p1");
738 orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1,
742 orc_program_compile (p);
743 c = orc_program_take_code (p);
744 orc_program_free (p);
747 orc_once_mutex_unlock ();
749 ex->arrays[ORC_VAR_A2] = c;
753 ex->arrays[ORC_VAR_D1] = d1;
754 ex->params[ORC_VAR_P1] = p1;
762 /* video_scale_orc_splat_u64 */
765 video_scale_orc_splat_u64 (orc_uint64 * ORC_RESTRICT d1, orc_int64 p1, int n)
768 orc_union64 *ORC_RESTRICT ptr0;
772 ptr0 = (orc_union64 *) d1;
777 for (i = 0; i < n; i++) {
788 _backup_video_scale_orc_splat_u64 (OrcExecutor * ORC_RESTRICT ex)
792 orc_union64 *ORC_RESTRICT ptr0;
796 ptr0 = (orc_union64 *) ex->arrays[0];
800 (ex->params[24] & 0xffffffff) | ((orc_uint64) (ex->params[24 +
801 (ORC_VAR_T1 - ORC_VAR_P1)]) << 32);
803 for (i = 0; i < n; i++) {
813 video_scale_orc_splat_u64 (orc_uint64 * ORC_RESTRICT d1, orc_int64 p1, int n)
815 OrcExecutor _ex, *ex = &_ex;
816 static volatile int p_inited = 0;
817 static OrcCode *c = 0;
818 void (*func) (OrcExecutor *);
821 orc_once_mutex_lock ();
826 static const orc_uint8 bc[] = {
827 1, 9, 25, 118, 105, 100, 101, 111, 95, 115, 99, 97, 108, 101, 95, 111,
828 114, 99, 95, 115, 112, 108, 97, 116, 95, 117, 54, 52, 11, 8, 8, 18,
831 p = orc_program_new_from_static_bytecode (bc);
832 orc_program_set_backup_function (p, _backup_video_scale_orc_splat_u64);
834 p = orc_program_new ();
835 orc_program_set_name (p, "video_scale_orc_splat_u64");
836 orc_program_set_backup_function (p, _backup_video_scale_orc_splat_u64);
837 orc_program_add_destination (p, 8, "d1");
838 orc_program_add_parameter_int64 (p, 8, "p1");
840 orc_program_append_2 (p, "copyq", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1,
844 orc_program_compile (p);
845 c = orc_program_take_code (p);
846 orc_program_free (p);
849 orc_once_mutex_unlock ();
851 ex->arrays[ORC_VAR_A2] = c;
855 ex->arrays[ORC_VAR_D1] = d1;
859 ex->params[ORC_VAR_P1] = tmp.x2[0];
860 ex->params[ORC_VAR_T1] = tmp.x2[1];
869 /* video_scale_orc_downsample_u8 */
872 video_scale_orc_downsample_u8 (guint8 * ORC_RESTRICT d1,
873 const guint8 * ORC_RESTRICT s1, int n)
876 orc_int8 *ORC_RESTRICT ptr0;
877 const orc_union16 *ORC_RESTRICT ptr4;
883 ptr0 = (orc_int8 *) d1;
884 ptr4 = (orc_union16 *) s1;
887 for (i = 0; i < n; i++) {
898 var35 = ((orc_uint8) var36 + (orc_uint8) var37 + 1) >> 1;
907 _backup_video_scale_orc_downsample_u8 (OrcExecutor * ORC_RESTRICT ex)
911 orc_int8 *ORC_RESTRICT ptr0;
912 const orc_union16 *ORC_RESTRICT ptr4;
918 ptr0 = (orc_int8 *) ex->arrays[0];
919 ptr4 = (orc_union16 *) ex->arrays[4];
922 for (i = 0; i < n; i++) {
933 var35 = ((orc_uint8) var36 + (orc_uint8) var37 + 1) >> 1;
941 video_scale_orc_downsample_u8 (guint8 * ORC_RESTRICT d1,
942 const guint8 * ORC_RESTRICT s1, int n)
944 OrcExecutor _ex, *ex = &_ex;
945 static volatile int p_inited = 0;
946 static OrcCode *c = 0;
947 void (*func) (OrcExecutor *);
950 orc_once_mutex_lock ();
955 static const orc_uint8 bc[] = {
956 1, 9, 29, 118, 105, 100, 101, 111, 95, 115, 99, 97, 108, 101, 95, 111,
957 114, 99, 95, 100, 111, 119, 110, 115, 97, 109, 112, 108, 101, 95, 117,
959 11, 1, 1, 12, 2, 2, 20, 1, 20, 1, 199, 32, 33, 4, 39, 0,
962 p = orc_program_new_from_static_bytecode (bc);
963 orc_program_set_backup_function (p,
964 _backup_video_scale_orc_downsample_u8);
966 p = orc_program_new ();
967 orc_program_set_name (p, "video_scale_orc_downsample_u8");
968 orc_program_set_backup_function (p,
969 _backup_video_scale_orc_downsample_u8);
970 orc_program_add_destination (p, 1, "d1");
971 orc_program_add_source (p, 2, "s1");
972 orc_program_add_temporary (p, 1, "t1");
973 orc_program_add_temporary (p, 1, "t2");
975 orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1,
977 orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
981 orc_program_compile (p);
982 c = orc_program_take_code (p);
983 orc_program_free (p);
986 orc_once_mutex_unlock ();
988 ex->arrays[ORC_VAR_A2] = c;
992 ex->arrays[ORC_VAR_D1] = d1;
993 ex->arrays[ORC_VAR_S1] = (void *) s1;
1001 /* video_scale_orc_downsample_u16 */
1004 video_scale_orc_downsample_u16 (guint16 * ORC_RESTRICT d1,
1005 const guint16 * ORC_RESTRICT s1, int n)
1008 orc_union16 *ORC_RESTRICT ptr0;
1009 const orc_union32 *ORC_RESTRICT ptr4;
1015 ptr0 = (orc_union16 *) d1;
1016 ptr4 = (orc_union32 *) s1;
1019 for (i = 0; i < n; i++) {
1026 var36.i = _src.x2[1];
1027 var37.i = _src.x2[0];
1030 var35.i = ((orc_uint16) var36.i + (orc_uint16) var37.i + 1) >> 1;
1039 _backup_video_scale_orc_downsample_u16 (OrcExecutor * ORC_RESTRICT ex)
1043 orc_union16 *ORC_RESTRICT ptr0;
1044 const orc_union32 *ORC_RESTRICT ptr4;
1050 ptr0 = (orc_union16 *) ex->arrays[0];
1051 ptr4 = (orc_union32 *) ex->arrays[4];
1054 for (i = 0; i < n; i++) {
1061 var36.i = _src.x2[1];
1062 var37.i = _src.x2[0];
1065 var35.i = ((orc_uint16) var36.i + (orc_uint16) var37.i + 1) >> 1;
1073 video_scale_orc_downsample_u16 (guint16 * ORC_RESTRICT d1,
1074 const guint16 * ORC_RESTRICT s1, int n)
1076 OrcExecutor _ex, *ex = &_ex;
1077 static volatile int p_inited = 0;
1078 static OrcCode *c = 0;
1079 void (*func) (OrcExecutor *);
1082 orc_once_mutex_lock ();
1087 static const orc_uint8 bc[] = {
1088 1, 9, 30, 118, 105, 100, 101, 111, 95, 115, 99, 97, 108, 101, 95, 111,
1089 114, 99, 95, 100, 111, 119, 110, 115, 97, 109, 112, 108, 101, 95, 117,
1091 54, 11, 2, 2, 12, 4, 4, 20, 2, 20, 2, 198, 32, 33, 4, 76,
1094 p = orc_program_new_from_static_bytecode (bc);
1095 orc_program_set_backup_function (p,
1096 _backup_video_scale_orc_downsample_u16);
1098 p = orc_program_new ();
1099 orc_program_set_name (p, "video_scale_orc_downsample_u16");
1100 orc_program_set_backup_function (p,
1101 _backup_video_scale_orc_downsample_u16);
1102 orc_program_add_destination (p, 2, "d1");
1103 orc_program_add_source (p, 4, "s1");
1104 orc_program_add_temporary (p, 2, "t1");
1105 orc_program_add_temporary (p, 2, "t2");
1107 orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1,
1109 orc_program_append_2 (p, "avguw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
1113 orc_program_compile (p);
1114 c = orc_program_take_code (p);
1115 orc_program_free (p);
1118 orc_once_mutex_unlock ();
1120 ex->arrays[ORC_VAR_A2] = c;
1124 ex->arrays[ORC_VAR_D1] = d1;
1125 ex->arrays[ORC_VAR_S1] = (void *) s1;
1133 /* video_scale_orc_downsample_u32 */
1136 video_scale_orc_downsample_u32 (guint8 * ORC_RESTRICT d1,
1137 const guint8 * ORC_RESTRICT s1, int n)
1140 orc_union32 *ORC_RESTRICT ptr0;
1141 const orc_union64 *ORC_RESTRICT ptr4;
1147 ptr0 = (orc_union32 *) d1;
1148 ptr4 = (orc_union64 *) s1;
1151 for (i = 0; i < n; i++) {
1158 var36.i = _src.x2[1];
1159 var37.i = _src.x2[0];
1162 var35.x4[0] = ((orc_uint8) var36.x4[0] + (orc_uint8) var37.x4[0] + 1) >> 1;
1163 var35.x4[1] = ((orc_uint8) var36.x4[1] + (orc_uint8) var37.x4[1] + 1) >> 1;
1164 var35.x4[2] = ((orc_uint8) var36.x4[2] + (orc_uint8) var37.x4[2] + 1) >> 1;
1165 var35.x4[3] = ((orc_uint8) var36.x4[3] + (orc_uint8) var37.x4[3] + 1) >> 1;
1174 _backup_video_scale_orc_downsample_u32 (OrcExecutor * ORC_RESTRICT ex)
1178 orc_union32 *ORC_RESTRICT ptr0;
1179 const orc_union64 *ORC_RESTRICT ptr4;
1185 ptr0 = (orc_union32 *) ex->arrays[0];
1186 ptr4 = (orc_union64 *) ex->arrays[4];
1189 for (i = 0; i < n; i++) {
1196 var36.i = _src.x2[1];
1197 var37.i = _src.x2[0];
1200 var35.x4[0] = ((orc_uint8) var36.x4[0] + (orc_uint8) var37.x4[0] + 1) >> 1;
1201 var35.x4[1] = ((orc_uint8) var36.x4[1] + (orc_uint8) var37.x4[1] + 1) >> 1;
1202 var35.x4[2] = ((orc_uint8) var36.x4[2] + (orc_uint8) var37.x4[2] + 1) >> 1;
1203 var35.x4[3] = ((orc_uint8) var36.x4[3] + (orc_uint8) var37.x4[3] + 1) >> 1;
1211 video_scale_orc_downsample_u32 (guint8 * ORC_RESTRICT d1,
1212 const guint8 * ORC_RESTRICT s1, int n)
1214 OrcExecutor _ex, *ex = &_ex;
1215 static volatile int p_inited = 0;
1216 static OrcCode *c = 0;
1217 void (*func) (OrcExecutor *);
1220 orc_once_mutex_lock ();
1225 static const orc_uint8 bc[] = {
1226 1, 9, 30, 118, 105, 100, 101, 111, 95, 115, 99, 97, 108, 101, 95, 111,
1227 114, 99, 95, 100, 111, 119, 110, 115, 97, 109, 112, 108, 101, 95, 117,
1229 50, 11, 4, 4, 12, 8, 8, 20, 4, 20, 4, 197, 32, 33, 4, 21,
1230 2, 39, 0, 32, 33, 2, 0,
1232 p = orc_program_new_from_static_bytecode (bc);
1233 orc_program_set_backup_function (p,
1234 _backup_video_scale_orc_downsample_u32);
1236 p = orc_program_new ();
1237 orc_program_set_name (p, "video_scale_orc_downsample_u32");
1238 orc_program_set_backup_function (p,
1239 _backup_video_scale_orc_downsample_u32);
1240 orc_program_add_destination (p, 4, "d1");
1241 orc_program_add_source (p, 8, "s1");
1242 orc_program_add_temporary (p, 4, "t1");
1243 orc_program_add_temporary (p, 4, "t2");
1245 orc_program_append_2 (p, "splitql", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1,
1247 orc_program_append_2 (p, "avgub", 2, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
1251 orc_program_compile (p);
1252 c = orc_program_take_code (p);
1253 orc_program_free (p);
1256 orc_once_mutex_unlock ();
1258 ex->arrays[ORC_VAR_A2] = c;
1262 ex->arrays[ORC_VAR_D1] = d1;
1263 ex->arrays[ORC_VAR_S1] = (void *) s1;
1271 /* video_scale_orc_downsample_yuyv */
1274 video_scale_orc_downsample_yuyv (guint8 * ORC_RESTRICT d1,
1275 const guint8 * ORC_RESTRICT s1, int n)
1278 orc_union32 *ORC_RESTRICT ptr0;
1279 const orc_union64 *ORC_RESTRICT ptr4;
1291 ptr0 = (orc_union32 *) d1;
1292 ptr4 = (orc_union64 *) s1;
1295 for (i = 0; i < n; i++) {
1301 _src.i = var38.x4[0];
1302 var40.x4[0] = _src.x2[1];
1303 var41.x4[0] = _src.x2[0];
1307 _src.i = var38.x4[1];
1308 var40.x4[1] = _src.x2[1];
1309 var41.x4[1] = _src.x2[0];
1313 _src.i = var38.x4[2];
1314 var40.x4[2] = _src.x2[1];
1315 var41.x4[2] = _src.x2[0];
1319 _src.i = var38.x4[3];
1320 var40.x4[3] = _src.x2[1];
1321 var41.x4[3] = _src.x2[0];
1326 _src.i = var40.x2[0];
1327 var42.x2[0] = _src.x2[1];
1328 var43.x2[0] = _src.x2[0];
1332 _src.i = var40.x2[1];
1333 var42.x2[1] = _src.x2[1];
1334 var43.x2[1] = _src.x2[0];
1337 var44.x2[0] = ((orc_uint8) var42.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1;
1338 var44.x2[1] = ((orc_uint8) var42.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1;
1343 var45.i = _src.x2[1];
1344 var46.i = _src.x2[0];
1347 var47.x2[0] = ((orc_uint8) var45.x2[0] + (orc_uint8) var46.x2[0] + 1) >> 1;
1348 var47.x2[1] = ((orc_uint8) var45.x2[1] + (orc_uint8) var46.x2[1] + 1) >> 1;
1352 _dest.x2[0] = var44.x2[0];
1353 _dest.x2[1] = var47.x2[0];
1354 var39.x2[0] = _dest.i;
1358 _dest.x2[0] = var44.x2[1];
1359 _dest.x2[1] = var47.x2[1];
1360 var39.x2[1] = _dest.i;
1370 _backup_video_scale_orc_downsample_yuyv (OrcExecutor * ORC_RESTRICT ex)
1374 orc_union32 *ORC_RESTRICT ptr0;
1375 const orc_union64 *ORC_RESTRICT ptr4;
1387 ptr0 = (orc_union32 *) ex->arrays[0];
1388 ptr4 = (orc_union64 *) ex->arrays[4];
1391 for (i = 0; i < n; i++) {
1397 _src.i = var38.x4[0];
1398 var40.x4[0] = _src.x2[1];
1399 var41.x4[0] = _src.x2[0];
1403 _src.i = var38.x4[1];
1404 var40.x4[1] = _src.x2[1];
1405 var41.x4[1] = _src.x2[0];
1409 _src.i = var38.x4[2];
1410 var40.x4[2] = _src.x2[1];
1411 var41.x4[2] = _src.x2[0];
1415 _src.i = var38.x4[3];
1416 var40.x4[3] = _src.x2[1];
1417 var41.x4[3] = _src.x2[0];
1422 _src.i = var40.x2[0];
1423 var42.x2[0] = _src.x2[1];
1424 var43.x2[0] = _src.x2[0];
1428 _src.i = var40.x2[1];
1429 var42.x2[1] = _src.x2[1];
1430 var43.x2[1] = _src.x2[0];
1433 var44.x2[0] = ((orc_uint8) var42.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1;
1434 var44.x2[1] = ((orc_uint8) var42.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1;
1439 var45.i = _src.x2[1];
1440 var46.i = _src.x2[0];
1443 var47.x2[0] = ((orc_uint8) var45.x2[0] + (orc_uint8) var46.x2[0] + 1) >> 1;
1444 var47.x2[1] = ((orc_uint8) var45.x2[1] + (orc_uint8) var46.x2[1] + 1) >> 1;
1448 _dest.x2[0] = var44.x2[0];
1449 _dest.x2[1] = var47.x2[0];
1450 var39.x2[0] = _dest.i;
1454 _dest.x2[0] = var44.x2[1];
1455 _dest.x2[1] = var47.x2[1];
1456 var39.x2[1] = _dest.i;
1465 video_scale_orc_downsample_yuyv (guint8 * ORC_RESTRICT d1,
1466 const guint8 * ORC_RESTRICT s1, int n)
1468 OrcExecutor _ex, *ex = &_ex;
1469 static volatile int p_inited = 0;
1470 static OrcCode *c = 0;
1471 void (*func) (OrcExecutor *);
1474 orc_once_mutex_lock ();
1479 static const orc_uint8 bc[] = {
1480 1, 9, 31, 118, 105, 100, 101, 111, 95, 115, 99, 97, 108, 101, 95, 111,
1481 114, 99, 95, 100, 111, 119, 110, 115, 97, 109, 112, 108, 101, 95, 121,
1483 121, 118, 11, 4, 4, 12, 8, 8, 20, 4, 20, 4, 20, 2, 20, 2,
1484 20, 2, 20, 2, 21, 2, 199, 32, 33, 4, 21, 1, 199, 34, 35, 32,
1485 21, 1, 39, 36, 34, 35, 198, 34, 35, 33, 21, 1, 39, 37, 34, 35,
1486 21, 1, 196, 0, 36, 37, 2, 0,
1488 p = orc_program_new_from_static_bytecode (bc);
1489 orc_program_set_backup_function (p,
1490 _backup_video_scale_orc_downsample_yuyv);
1492 p = orc_program_new ();
1493 orc_program_set_name (p, "video_scale_orc_downsample_yuyv");
1494 orc_program_set_backup_function (p,
1495 _backup_video_scale_orc_downsample_yuyv);
1496 orc_program_add_destination (p, 4, "d1");
1497 orc_program_add_source (p, 8, "s1");
1498 orc_program_add_temporary (p, 4, "t1");
1499 orc_program_add_temporary (p, 4, "t2");
1500 orc_program_add_temporary (p, 2, "t3");
1501 orc_program_add_temporary (p, 2, "t4");
1502 orc_program_add_temporary (p, 2, "t5");
1503 orc_program_add_temporary (p, 2, "t6");
1505 orc_program_append_2 (p, "splitwb", 2, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1,
1507 orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T1,
1509 orc_program_append_2 (p, "avgub", 1, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_T4,
1511 orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2,
1513 orc_program_append_2 (p, "avgub", 1, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_T4,
1515 orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_T6,
1519 orc_program_compile (p);
1520 c = orc_program_take_code (p);
1521 orc_program_free (p);
1524 orc_once_mutex_unlock ();
1526 ex->arrays[ORC_VAR_A2] = c;
1530 ex->arrays[ORC_VAR_D1] = d1;
1531 ex->arrays[ORC_VAR_S1] = (void *) s1;
1539 /* video_scale_orc_resample_nearest_u8 */
1542 video_scale_orc_resample_nearest_u8 (guint8 * ORC_RESTRICT d1,
1543 const guint8 * ORC_RESTRICT s1, int p1, int p2, int n)
1546 orc_int8 *ORC_RESTRICT ptr0;
1547 const orc_int8 *ORC_RESTRICT ptr4;
1550 ptr0 = (orc_int8 *) d1;
1551 ptr4 = (orc_int8 *) s1;
1554 for (i = 0; i < n; i++) {
1556 var32 = ptr4[(p1 + i * p2) >> 16];
1565 _backup_video_scale_orc_resample_nearest_u8 (OrcExecutor * ORC_RESTRICT ex)
1569 orc_int8 *ORC_RESTRICT ptr0;
1570 const orc_int8 *ORC_RESTRICT ptr4;
1573 ptr0 = (orc_int8 *) ex->arrays[0];
1574 ptr4 = (orc_int8 *) ex->arrays[4];
1577 for (i = 0; i < n; i++) {
1579 var32 = ptr4[(ex->params[24] + i * ex->params[25]) >> 16];
1587 video_scale_orc_resample_nearest_u8 (guint8 * ORC_RESTRICT d1,
1588 const guint8 * ORC_RESTRICT s1, int p1, int p2, int n)
1590 OrcExecutor _ex, *ex = &_ex;
1591 static volatile int p_inited = 0;
1592 static OrcCode *c = 0;
1593 void (*func) (OrcExecutor *);
1596 orc_once_mutex_lock ();
1601 static const orc_uint8 bc[] = {
1602 1, 9, 35, 118, 105, 100, 101, 111, 95, 115, 99, 97, 108, 101, 95, 111,
1603 114, 99, 95, 114, 101, 115, 97, 109, 112, 108, 101, 95, 110, 101, 97,
1605 101, 115, 116, 95, 117, 56, 11, 1, 1, 12, 1, 1, 16, 4, 16, 4,
1606 48, 0, 4, 24, 25, 2, 0,
1608 p = orc_program_new_from_static_bytecode (bc);
1609 orc_program_set_backup_function (p,
1610 _backup_video_scale_orc_resample_nearest_u8);
1612 p = orc_program_new ();
1613 orc_program_set_name (p, "video_scale_orc_resample_nearest_u8");
1614 orc_program_set_backup_function (p,
1615 _backup_video_scale_orc_resample_nearest_u8);
1616 orc_program_add_destination (p, 1, "d1");
1617 orc_program_add_source (p, 1, "s1");
1618 orc_program_add_parameter (p, 4, "p1");
1619 orc_program_add_parameter (p, 4, "p2");
1621 orc_program_append_2 (p, "ldresnearb", 0, ORC_VAR_D1, ORC_VAR_S1,
1622 ORC_VAR_P1, ORC_VAR_P2);
1625 orc_program_compile (p);
1626 c = orc_program_take_code (p);
1627 orc_program_free (p);
1630 orc_once_mutex_unlock ();
1632 ex->arrays[ORC_VAR_A2] = c;
1636 ex->arrays[ORC_VAR_D1] = d1;
1637 ex->arrays[ORC_VAR_S1] = (void *) s1;
1638 ex->params[ORC_VAR_P1] = p1;
1639 ex->params[ORC_VAR_P2] = p2;
1647 /* video_scale_orc_resample_bilinear_u8 */
1650 video_scale_orc_resample_bilinear_u8 (guint8 * ORC_RESTRICT d1,
1651 const guint8 * ORC_RESTRICT s1, int p1, int p2, int n)
1654 orc_int8 *ORC_RESTRICT ptr0;
1655 const orc_int8 *ORC_RESTRICT ptr4;
1658 ptr0 = (orc_int8 *) d1;
1659 ptr4 = (orc_int8 *) s1;
1662 for (i = 0; i < n; i++) {
1665 int tmp = p1 + i * p2;
1667 ((orc_uint8) ptr4[tmp >> 16] * (256 - ((tmp >> 8) & 0xff)) +
1668 (orc_uint8) ptr4[(tmp >> 16) + 1] * ((tmp >> 8) & 0xff)) >> 8;
1678 _backup_video_scale_orc_resample_bilinear_u8 (OrcExecutor * ORC_RESTRICT ex)
1682 orc_int8 *ORC_RESTRICT ptr0;
1683 const orc_int8 *ORC_RESTRICT ptr4;
1686 ptr0 = (orc_int8 *) ex->arrays[0];
1687 ptr4 = (orc_int8 *) ex->arrays[4];
1690 for (i = 0; i < n; i++) {
1693 int tmp = ex->params[24] + i * ex->params[25];
1695 ((orc_uint8) ptr4[tmp >> 16] * (256 - ((tmp >> 8) & 0xff)) +
1696 (orc_uint8) ptr4[(tmp >> 16) + 1] * ((tmp >> 8) & 0xff)) >> 8;
1705 video_scale_orc_resample_bilinear_u8 (guint8 * ORC_RESTRICT d1,
1706 const guint8 * ORC_RESTRICT s1, int p1, int p2, int n)
1708 OrcExecutor _ex, *ex = &_ex;
1709 static volatile int p_inited = 0;
1710 static OrcCode *c = 0;
1711 void (*func) (OrcExecutor *);
1714 orc_once_mutex_lock ();
1719 static const orc_uint8 bc[] = {
1720 1, 9, 36, 118, 105, 100, 101, 111, 95, 115, 99, 97, 108, 101, 95, 111,
1721 114, 99, 95, 114, 101, 115, 97, 109, 112, 108, 101, 95, 98, 105, 108,
1723 110, 101, 97, 114, 95, 117, 56, 11, 1, 1, 12, 1, 1, 16, 4, 16,
1724 4, 50, 0, 4, 24, 25, 2, 0,
1726 p = orc_program_new_from_static_bytecode (bc);
1727 orc_program_set_backup_function (p,
1728 _backup_video_scale_orc_resample_bilinear_u8);
1730 p = orc_program_new ();
1731 orc_program_set_name (p, "video_scale_orc_resample_bilinear_u8");
1732 orc_program_set_backup_function (p,
1733 _backup_video_scale_orc_resample_bilinear_u8);
1734 orc_program_add_destination (p, 1, "d1");
1735 orc_program_add_source (p, 1, "s1");
1736 orc_program_add_parameter (p, 4, "p1");
1737 orc_program_add_parameter (p, 4, "p2");
1739 orc_program_append_2 (p, "ldreslinb", 0, ORC_VAR_D1, ORC_VAR_S1,
1740 ORC_VAR_P1, ORC_VAR_P2);
1743 orc_program_compile (p);
1744 c = orc_program_take_code (p);
1745 orc_program_free (p);
1748 orc_once_mutex_unlock ();
1750 ex->arrays[ORC_VAR_A2] = c;
1754 ex->arrays[ORC_VAR_D1] = d1;
1755 ex->arrays[ORC_VAR_S1] = (void *) s1;
1756 ex->params[ORC_VAR_P1] = p1;
1757 ex->params[ORC_VAR_P2] = p2;
1765 /* video_scale_orc_resample_nearest_u32 */
1768 video_scale_orc_resample_nearest_u32 (guint8 * ORC_RESTRICT d1,
1769 const guint8 * ORC_RESTRICT s1, int p1, int p2, int n)
1772 orc_union32 *ORC_RESTRICT ptr0;
1773 const orc_union32 *ORC_RESTRICT ptr4;
1776 ptr0 = (orc_union32 *) d1;
1777 ptr4 = (orc_union32 *) s1;
1780 for (i = 0; i < n; i++) {
1782 var32 = ptr4[(p1 + i * p2) >> 16];
1791 _backup_video_scale_orc_resample_nearest_u32 (OrcExecutor * ORC_RESTRICT ex)
1795 orc_union32 *ORC_RESTRICT ptr0;
1796 const orc_union32 *ORC_RESTRICT ptr4;
1799 ptr0 = (orc_union32 *) ex->arrays[0];
1800 ptr4 = (orc_union32 *) ex->arrays[4];
1803 for (i = 0; i < n; i++) {
1805 var32 = ptr4[(ex->params[24] + i * ex->params[25]) >> 16];
1813 video_scale_orc_resample_nearest_u32 (guint8 * ORC_RESTRICT d1,
1814 const guint8 * ORC_RESTRICT s1, int p1, int p2, int n)
1816 OrcExecutor _ex, *ex = &_ex;
1817 static volatile int p_inited = 0;
1818 static OrcCode *c = 0;
1819 void (*func) (OrcExecutor *);
1822 orc_once_mutex_lock ();
1827 static const orc_uint8 bc[] = {
1828 1, 9, 36, 118, 105, 100, 101, 111, 95, 115, 99, 97, 108, 101, 95, 111,
1829 114, 99, 95, 114, 101, 115, 97, 109, 112, 108, 101, 95, 110, 101, 97,
1831 101, 115, 116, 95, 117, 51, 50, 11, 4, 4, 12, 4, 4, 16, 4, 16,
1832 4, 49, 0, 4, 24, 25, 2, 0,
1834 p = orc_program_new_from_static_bytecode (bc);
1835 orc_program_set_backup_function (p,
1836 _backup_video_scale_orc_resample_nearest_u32);
1838 p = orc_program_new ();
1839 orc_program_set_name (p, "video_scale_orc_resample_nearest_u32");
1840 orc_program_set_backup_function (p,
1841 _backup_video_scale_orc_resample_nearest_u32);
1842 orc_program_add_destination (p, 4, "d1");
1843 orc_program_add_source (p, 4, "s1");
1844 orc_program_add_parameter (p, 4, "p1");
1845 orc_program_add_parameter (p, 4, "p2");
1847 orc_program_append_2 (p, "ldresnearl", 0, ORC_VAR_D1, ORC_VAR_S1,
1848 ORC_VAR_P1, ORC_VAR_P2);
1851 orc_program_compile (p);
1852 c = orc_program_take_code (p);
1853 orc_program_free (p);
1856 orc_once_mutex_unlock ();
1858 ex->arrays[ORC_VAR_A2] = c;
1862 ex->arrays[ORC_VAR_D1] = d1;
1863 ex->arrays[ORC_VAR_S1] = (void *) s1;
1864 ex->params[ORC_VAR_P1] = p1;
1865 ex->params[ORC_VAR_P2] = p2;
1873 /* video_scale_orc_resample_bilinear_u32 */
1876 video_scale_orc_resample_bilinear_u32 (guint8 * ORC_RESTRICT d1,
1877 const guint8 * ORC_RESTRICT s1, int p1, int p2, int n)
1880 orc_union32 *ORC_RESTRICT ptr0;
1881 const orc_union32 *ORC_RESTRICT ptr4;
1884 ptr0 = (orc_union32 *) d1;
1885 ptr4 = (orc_union32 *) s1;
1888 for (i = 0; i < n; i++) {
1891 int tmp = p1 + i * p2;
1892 orc_union32 a = ptr4[tmp >> 16];
1893 orc_union32 b = ptr4[(tmp >> 16) + 1];
1895 ((orc_uint8) a.x4[0] * (256 - ((tmp >> 8) & 0xff)) +
1896 (orc_uint8) b.x4[0] * ((tmp >> 8) & 0xff)) >> 8;
1898 ((orc_uint8) a.x4[1] * (256 - ((tmp >> 8) & 0xff)) +
1899 (orc_uint8) b.x4[1] * ((tmp >> 8) & 0xff)) >> 8;
1901 ((orc_uint8) a.x4[2] * (256 - ((tmp >> 8) & 0xff)) +
1902 (orc_uint8) b.x4[2] * ((tmp >> 8) & 0xff)) >> 8;
1904 ((orc_uint8) a.x4[3] * (256 - ((tmp >> 8) & 0xff)) +
1905 (orc_uint8) b.x4[3] * ((tmp >> 8) & 0xff)) >> 8;
1915 _backup_video_scale_orc_resample_bilinear_u32 (OrcExecutor * ORC_RESTRICT ex)
1919 orc_union32 *ORC_RESTRICT ptr0;
1920 const orc_union32 *ORC_RESTRICT ptr4;
1923 ptr0 = (orc_union32 *) ex->arrays[0];
1924 ptr4 = (orc_union32 *) ex->arrays[4];
1927 for (i = 0; i < n; i++) {
1930 int tmp = ex->params[24] + i * ex->params[25];
1931 orc_union32 a = ptr4[tmp >> 16];
1932 orc_union32 b = ptr4[(tmp >> 16) + 1];
1934 ((orc_uint8) a.x4[0] * (256 - ((tmp >> 8) & 0xff)) +
1935 (orc_uint8) b.x4[0] * ((tmp >> 8) & 0xff)) >> 8;
1937 ((orc_uint8) a.x4[1] * (256 - ((tmp >> 8) & 0xff)) +
1938 (orc_uint8) b.x4[1] * ((tmp >> 8) & 0xff)) >> 8;
1940 ((orc_uint8) a.x4[2] * (256 - ((tmp >> 8) & 0xff)) +
1941 (orc_uint8) b.x4[2] * ((tmp >> 8) & 0xff)) >> 8;
1943 ((orc_uint8) a.x4[3] * (256 - ((tmp >> 8) & 0xff)) +
1944 (orc_uint8) b.x4[3] * ((tmp >> 8) & 0xff)) >> 8;
1953 video_scale_orc_resample_bilinear_u32 (guint8 * ORC_RESTRICT d1,
1954 const guint8 * ORC_RESTRICT s1, int p1, int p2, int n)
1956 OrcExecutor _ex, *ex = &_ex;
1957 static volatile int p_inited = 0;
1958 static OrcCode *c = 0;
1959 void (*func) (OrcExecutor *);
1962 orc_once_mutex_lock ();
1967 static const orc_uint8 bc[] = {
1968 1, 9, 37, 118, 105, 100, 101, 111, 95, 115, 99, 97, 108, 101, 95, 111,
1969 114, 99, 95, 114, 101, 115, 97, 109, 112, 108, 101, 95, 98, 105, 108,
1971 110, 101, 97, 114, 95, 117, 51, 50, 11, 4, 4, 12, 4, 4, 16, 4,
1972 16, 4, 51, 0, 4, 24, 25, 2, 0,
1974 p = orc_program_new_from_static_bytecode (bc);
1975 orc_program_set_backup_function (p,
1976 _backup_video_scale_orc_resample_bilinear_u32);
1978 p = orc_program_new ();
1979 orc_program_set_name (p, "video_scale_orc_resample_bilinear_u32");
1980 orc_program_set_backup_function (p,
1981 _backup_video_scale_orc_resample_bilinear_u32);
1982 orc_program_add_destination (p, 4, "d1");
1983 orc_program_add_source (p, 4, "s1");
1984 orc_program_add_parameter (p, 4, "p1");
1985 orc_program_add_parameter (p, 4, "p2");
1987 orc_program_append_2 (p, "ldreslinl", 0, ORC_VAR_D1, ORC_VAR_S1,
1988 ORC_VAR_P1, ORC_VAR_P2);
1991 orc_program_compile (p);
1992 c = orc_program_take_code (p);
1993 orc_program_free (p);
1996 orc_once_mutex_unlock ();
1998 ex->arrays[ORC_VAR_A2] = c;
2002 ex->arrays[ORC_VAR_D1] = d1;
2003 ex->arrays[ORC_VAR_S1] = (void *) s1;
2004 ex->params[ORC_VAR_P1] = p1;
2005 ex->params[ORC_VAR_P2] = p2;
2013 /* video_scale_orc_resample_merge_bilinear_u32 */
2016 video_scale_orc_resample_merge_bilinear_u32 (guint8 * ORC_RESTRICT d1,
2017 guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1,
2018 const guint8 * ORC_RESTRICT s2, int p1, int p2, int p3, int n)
2021 orc_union32 *ORC_RESTRICT ptr0;
2022 orc_union32 *ORC_RESTRICT ptr1;
2023 const orc_union32 *ORC_RESTRICT ptr4;
2024 const orc_union32 *ORC_RESTRICT ptr5;
2035 ptr0 = (orc_union32 *) d1;
2036 ptr1 = (orc_union32 *) d2;
2037 ptr4 = (orc_union32 *) s1;
2038 ptr5 = (orc_union32 *) s2;
2046 for (i = 0; i < n; i++) {
2049 int tmp = p2 + i * p3;
2050 orc_union32 a = ptr5[tmp >> 16];
2051 orc_union32 b = ptr5[(tmp >> 16) + 1];
2053 ((orc_uint8) a.x4[0] * (256 - ((tmp >> 8) & 0xff)) +
2054 (orc_uint8) b.x4[0] * ((tmp >> 8) & 0xff)) >> 8;
2056 ((orc_uint8) a.x4[1] * (256 - ((tmp >> 8) & 0xff)) +
2057 (orc_uint8) b.x4[1] * ((tmp >> 8) & 0xff)) >> 8;
2059 ((orc_uint8) a.x4[2] * (256 - ((tmp >> 8) & 0xff)) +
2060 (orc_uint8) b.x4[2] * ((tmp >> 8) & 0xff)) >> 8;
2062 ((orc_uint8) a.x4[3] * (256 - ((tmp >> 8) & 0xff)) +
2063 (orc_uint8) b.x4[3] * ((tmp >> 8) & 0xff)) >> 8;
2070 var41.x4[0] = (orc_uint8) var40.x4[0];
2071 var41.x4[1] = (orc_uint8) var40.x4[1];
2072 var41.x4[2] = (orc_uint8) var40.x4[2];
2073 var41.x4[3] = (orc_uint8) var40.x4[3];
2075 var42.x4[0] = (orc_uint8) var39.x4[0];
2076 var42.x4[1] = (orc_uint8) var39.x4[1];
2077 var42.x4[2] = (orc_uint8) var39.x4[2];
2078 var42.x4[3] = (orc_uint8) var39.x4[3];
2080 var43.x4[0] = var42.x4[0] - var41.x4[0];
2081 var43.x4[1] = var42.x4[1] - var41.x4[1];
2082 var43.x4[2] = var42.x4[2] - var41.x4[2];
2083 var43.x4[3] = var42.x4[3] - var41.x4[3];
2085 var44.x4[0] = (var43.x4[0] * var37.x4[0]) & 0xffff;
2086 var44.x4[1] = (var43.x4[1] * var37.x4[1]) & 0xffff;
2087 var44.x4[2] = (var43.x4[2] * var37.x4[2]) & 0xffff;
2088 var44.x4[3] = (var43.x4[3] * var37.x4[3]) & 0xffff;
2090 var45.x4[0] = ((orc_uint16) var44.x4[0]) >> 8;
2091 var45.x4[1] = ((orc_uint16) var44.x4[1]) >> 8;
2092 var45.x4[2] = ((orc_uint16) var44.x4[2]) >> 8;
2093 var45.x4[3] = ((orc_uint16) var44.x4[3]) >> 8;
2095 var38.x4[0] = var45.x4[0] + var40.x4[0];
2096 var38.x4[1] = var45.x4[1] + var40.x4[1];
2097 var38.x4[2] = var45.x4[2] + var40.x4[2];
2098 var38.x4[3] = var45.x4[3] + var40.x4[3];
2107 _backup_video_scale_orc_resample_merge_bilinear_u32 (OrcExecutor *
2112 orc_union32 *ORC_RESTRICT ptr0;
2113 orc_union32 *ORC_RESTRICT ptr1;
2114 const orc_union32 *ORC_RESTRICT ptr4;
2115 const orc_union32 *ORC_RESTRICT ptr5;
2126 ptr0 = (orc_union32 *) ex->arrays[0];
2127 ptr1 = (orc_union32 *) ex->arrays[1];
2128 ptr4 = (orc_union32 *) ex->arrays[4];
2129 ptr5 = (orc_union32 *) ex->arrays[5];
2132 var37.x4[0] = ex->params[24];
2133 var37.x4[1] = ex->params[24];
2134 var37.x4[2] = ex->params[24];
2135 var37.x4[3] = ex->params[24];
2137 for (i = 0; i < n; i++) {
2140 int tmp = ex->params[25] + i * ex->params[26];
2141 orc_union32 a = ptr5[tmp >> 16];
2142 orc_union32 b = ptr5[(tmp >> 16) + 1];
2144 ((orc_uint8) a.x4[0] * (256 - ((tmp >> 8) & 0xff)) +
2145 (orc_uint8) b.x4[0] * ((tmp >> 8) & 0xff)) >> 8;
2147 ((orc_uint8) a.x4[1] * (256 - ((tmp >> 8) & 0xff)) +
2148 (orc_uint8) b.x4[1] * ((tmp >> 8) & 0xff)) >> 8;
2150 ((orc_uint8) a.x4[2] * (256 - ((tmp >> 8) & 0xff)) +
2151 (orc_uint8) b.x4[2] * ((tmp >> 8) & 0xff)) >> 8;
2153 ((orc_uint8) a.x4[3] * (256 - ((tmp >> 8) & 0xff)) +
2154 (orc_uint8) b.x4[3] * ((tmp >> 8) & 0xff)) >> 8;
2161 var41.x4[0] = (orc_uint8) var40.x4[0];
2162 var41.x4[1] = (orc_uint8) var40.x4[1];
2163 var41.x4[2] = (orc_uint8) var40.x4[2];
2164 var41.x4[3] = (orc_uint8) var40.x4[3];
2166 var42.x4[0] = (orc_uint8) var39.x4[0];
2167 var42.x4[1] = (orc_uint8) var39.x4[1];
2168 var42.x4[2] = (orc_uint8) var39.x4[2];
2169 var42.x4[3] = (orc_uint8) var39.x4[3];
2171 var43.x4[0] = var42.x4[0] - var41.x4[0];
2172 var43.x4[1] = var42.x4[1] - var41.x4[1];
2173 var43.x4[2] = var42.x4[2] - var41.x4[2];
2174 var43.x4[3] = var42.x4[3] - var41.x4[3];
2176 var44.x4[0] = (var43.x4[0] * var37.x4[0]) & 0xffff;
2177 var44.x4[1] = (var43.x4[1] * var37.x4[1]) & 0xffff;
2178 var44.x4[2] = (var43.x4[2] * var37.x4[2]) & 0xffff;
2179 var44.x4[3] = (var43.x4[3] * var37.x4[3]) & 0xffff;
2181 var45.x4[0] = ((orc_uint16) var44.x4[0]) >> 8;
2182 var45.x4[1] = ((orc_uint16) var44.x4[1]) >> 8;
2183 var45.x4[2] = ((orc_uint16) var44.x4[2]) >> 8;
2184 var45.x4[3] = ((orc_uint16) var44.x4[3]) >> 8;
2186 var38.x4[0] = var45.x4[0] + var40.x4[0];
2187 var38.x4[1] = var45.x4[1] + var40.x4[1];
2188 var38.x4[2] = var45.x4[2] + var40.x4[2];
2189 var38.x4[3] = var45.x4[3] + var40.x4[3];
2197 video_scale_orc_resample_merge_bilinear_u32 (guint8 * ORC_RESTRICT d1,
2198 guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1,
2199 const guint8 * ORC_RESTRICT s2, int p1, int p2, int p3, int n)
2201 OrcExecutor _ex, *ex = &_ex;
2202 static volatile int p_inited = 0;
2203 static OrcCode *c = 0;
2204 void (*func) (OrcExecutor *);
2207 orc_once_mutex_lock ();
2212 static const orc_uint8 bc[] = {
2213 1, 9, 43, 118, 105, 100, 101, 111, 95, 115, 99, 97, 108, 101, 95, 111,
2214 114, 99, 95, 114, 101, 115, 97, 109, 112, 108, 101, 95, 109, 101, 114,
2216 101, 95, 98, 105, 108, 105, 110, 101, 97, 114, 95, 117, 51, 50, 11, 4,
2217 4, 11, 4, 4, 12, 4, 4, 12, 4, 4, 16, 4, 16, 4, 16, 4,
2218 20, 4, 20, 4, 20, 4, 20, 8, 20, 8, 51, 33, 5, 25, 26, 128,
2219 1, 33, 113, 32, 4, 21, 2, 150, 35, 32, 21, 2, 150, 36, 33, 21,
2220 2, 98, 36, 36, 35, 21, 2, 89, 36, 36, 24, 21, 2, 158, 34, 36,
2221 21, 2, 33, 0, 34, 32, 2, 0,
2223 p = orc_program_new_from_static_bytecode (bc);
2224 orc_program_set_backup_function (p,
2225 _backup_video_scale_orc_resample_merge_bilinear_u32);
2227 p = orc_program_new ();
2228 orc_program_set_name (p, "video_scale_orc_resample_merge_bilinear_u32");
2229 orc_program_set_backup_function (p,
2230 _backup_video_scale_orc_resample_merge_bilinear_u32);
2231 orc_program_add_destination (p, 4, "d1");
2232 orc_program_add_destination (p, 4, "d2");
2233 orc_program_add_source (p, 4, "s1");
2234 orc_program_add_source (p, 4, "s2");
2235 orc_program_add_parameter (p, 4, "p1");
2236 orc_program_add_parameter (p, 4, "p2");
2237 orc_program_add_parameter (p, 4, "p3");
2238 orc_program_add_temporary (p, 4, "t1");
2239 orc_program_add_temporary (p, 4, "t2");
2240 orc_program_add_temporary (p, 4, "t3");
2241 orc_program_add_temporary (p, 8, "t4");
2242 orc_program_add_temporary (p, 8, "t5");
2244 orc_program_append_2 (p, "ldreslinl", 0, ORC_VAR_T2, ORC_VAR_S2,
2245 ORC_VAR_P2, ORC_VAR_P3);
2246 orc_program_append_2 (p, "storel", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_D1,
2248 orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
2250 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_D1,
2252 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_D1,
2254 orc_program_append_2 (p, "subw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4,
2256 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_P1,
2258 orc_program_append_2 (p, "convhwb", 2, ORC_VAR_T3, ORC_VAR_T5, ORC_VAR_D1,
2260 orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T1,
2264 orc_program_compile (p);
2265 c = orc_program_take_code (p);
2266 orc_program_free (p);
2269 orc_once_mutex_unlock ();
2271 ex->arrays[ORC_VAR_A2] = c;
2275 ex->arrays[ORC_VAR_D1] = d1;
2276 ex->arrays[ORC_VAR_D2] = d2;
2277 ex->arrays[ORC_VAR_S1] = (void *) s1;
2278 ex->arrays[ORC_VAR_S2] = (void *) s2;
2279 ex->params[ORC_VAR_P1] = p1;
2280 ex->params[ORC_VAR_P2] = p2;
2281 ex->params[ORC_VAR_P3] = p3;
2289 /* video_scale_orc_merge_bicubic_u8 */
2292 video_scale_orc_merge_bicubic_u8 (guint8 * ORC_RESTRICT d1,
2293 const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
2294 const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int p1,
2295 int p2, int p3, int p4, int n)
2298 orc_int8 *ORC_RESTRICT ptr0;
2299 const orc_int8 *ORC_RESTRICT ptr4;
2300 const orc_int8 *ORC_RESTRICT ptr5;
2301 const orc_int8 *ORC_RESTRICT ptr6;
2302 const orc_int8 *ORC_RESTRICT ptr7;
2311 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
2312 volatile orc_union16 var42;
2327 ptr0 = (orc_int8 *) d1;
2328 ptr4 = (orc_int8 *) s1;
2329 ptr5 = (orc_int8 *) s2;
2330 ptr6 = (orc_int8 *) s3;
2331 ptr7 = (orc_int8 *) s4;
2342 var42.i = (int) 0x00000020; /* 32 or 1.58101e-322f */
2344 for (i = 0; i < n; i++) {
2348 var44.i = ((orc_uint8) var34) * ((orc_uint8) var35);
2352 var45.i = ((orc_uint8) var36) * ((orc_uint8) var37);
2354 var46.i = var44.i + var45.i;
2358 var47.i = ((orc_uint8) var38) * ((orc_uint8) var39);
2360 var48.i = var46.i - var47.i;
2364 var49.i = ((orc_uint8) var40) * ((orc_uint8) var41);
2366 var50.i = var48.i - var49.i;
2368 var51.i = var50.i + var42.i;
2370 var52.i = var51.i >> 6;
2372 var43 = ORC_CLAMP_UB (var52.i);
2381 _backup_video_scale_orc_merge_bicubic_u8 (OrcExecutor * ORC_RESTRICT ex)
2385 orc_int8 *ORC_RESTRICT ptr0;
2386 const orc_int8 *ORC_RESTRICT ptr4;
2387 const orc_int8 *ORC_RESTRICT ptr5;
2388 const orc_int8 *ORC_RESTRICT ptr6;
2389 const orc_int8 *ORC_RESTRICT ptr7;
2398 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
2399 volatile orc_union16 var42;
2414 ptr0 = (orc_int8 *) ex->arrays[0];
2415 ptr4 = (orc_int8 *) ex->arrays[4];
2416 ptr5 = (orc_int8 *) ex->arrays[5];
2417 ptr6 = (orc_int8 *) ex->arrays[6];
2418 ptr7 = (orc_int8 *) ex->arrays[7];
2421 var35 = ex->params[25];
2423 var37 = ex->params[26];
2425 var39 = ex->params[24];
2427 var41 = ex->params[27];
2429 var42.i = (int) 0x00000020; /* 32 or 1.58101e-322f */
2431 for (i = 0; i < n; i++) {
2435 var44.i = ((orc_uint8) var34) * ((orc_uint8) var35);
2439 var45.i = ((orc_uint8) var36) * ((orc_uint8) var37);
2441 var46.i = var44.i + var45.i;
2445 var47.i = ((orc_uint8) var38) * ((orc_uint8) var39);
2447 var48.i = var46.i - var47.i;
2451 var49.i = ((orc_uint8) var40) * ((orc_uint8) var41);
2453 var50.i = var48.i - var49.i;
2455 var51.i = var50.i + var42.i;
2457 var52.i = var51.i >> 6;
2459 var43 = ORC_CLAMP_UB (var52.i);
2467 video_scale_orc_merge_bicubic_u8 (guint8 * ORC_RESTRICT d1,
2468 const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
2469 const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int p1,
2470 int p2, int p3, int p4, int n)
2472 OrcExecutor _ex, *ex = &_ex;
2473 static volatile int p_inited = 0;
2474 static OrcCode *c = 0;
2475 void (*func) (OrcExecutor *);
2478 orc_once_mutex_lock ();
2483 static const orc_uint8 bc[] = {
2484 1, 9, 32, 118, 105, 100, 101, 111, 95, 115, 99, 97, 108, 101, 95, 111,
2485 114, 99, 95, 109, 101, 114, 103, 101, 95, 98, 105, 99, 117, 98, 105, 99,
2486 95, 117, 56, 11, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12,
2487 1, 1, 14, 4, 32, 0, 0, 0, 14, 4, 6, 0, 0, 0, 16, 4,
2488 16, 4, 16, 4, 16, 4, 20, 2, 20, 2, 175, 32, 5, 25, 175, 33,
2489 6, 26, 70, 32, 32, 33, 175, 33, 4, 24, 98, 32, 32, 33, 175, 33,
2490 7, 27, 98, 32, 32, 33, 70, 32, 32, 16, 94, 32, 32, 17, 160, 0,
2493 p = orc_program_new_from_static_bytecode (bc);
2494 orc_program_set_backup_function (p,
2495 _backup_video_scale_orc_merge_bicubic_u8);
2497 p = orc_program_new ();
2498 orc_program_set_name (p, "video_scale_orc_merge_bicubic_u8");
2499 orc_program_set_backup_function (p,
2500 _backup_video_scale_orc_merge_bicubic_u8);
2501 orc_program_add_destination (p, 1, "d1");
2502 orc_program_add_source (p, 1, "s1");
2503 orc_program_add_source (p, 1, "s2");
2504 orc_program_add_source (p, 1, "s3");
2505 orc_program_add_source (p, 1, "s4");
2506 orc_program_add_constant (p, 4, 0x00000020, "c1");
2507 orc_program_add_constant (p, 4, 0x00000006, "c2");
2508 orc_program_add_parameter (p, 4, "p1");
2509 orc_program_add_parameter (p, 4, "p2");
2510 orc_program_add_parameter (p, 4, "p3");
2511 orc_program_add_parameter (p, 4, "p4");
2512 orc_program_add_temporary (p, 2, "t1");
2513 orc_program_add_temporary (p, 2, "t2");
2515 orc_program_append_2 (p, "mulubw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_P2,
2517 orc_program_append_2 (p, "mulubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_P3,
2519 orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
2521 orc_program_append_2 (p, "mulubw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_P1,
2523 orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
2525 orc_program_append_2 (p, "mulubw", 0, ORC_VAR_T2, ORC_VAR_S4, ORC_VAR_P4,
2527 orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
2529 orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
2531 orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2,
2533 orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1,
2534 ORC_VAR_D1, ORC_VAR_D1);
2537 orc_program_compile (p);
2538 c = orc_program_take_code (p);
2539 orc_program_free (p);
2542 orc_once_mutex_unlock ();
2544 ex->arrays[ORC_VAR_A2] = c;
2548 ex->arrays[ORC_VAR_D1] = d1;
2549 ex->arrays[ORC_VAR_S1] = (void *) s1;
2550 ex->arrays[ORC_VAR_S2] = (void *) s2;
2551 ex->arrays[ORC_VAR_S3] = (void *) s3;
2552 ex->arrays[ORC_VAR_S4] = (void *) s4;
2553 ex->params[ORC_VAR_P1] = p1;
2554 ex->params[ORC_VAR_P2] = p2;
2555 ex->params[ORC_VAR_P3] = p3;
2556 ex->params[ORC_VAR_P4] = p4;