2 /* autogenerated from compositororc.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 compositor_orc_splat_u32 (guint32 * ORC_RESTRICT d1, int p1, int n);
99 void compositor_orc_memcpy_u32 (guint32 * ORC_RESTRICT d1,
100 const guint32 * ORC_RESTRICT s1, int n);
101 void compositor_orc_blend_u8 (guint8 * ORC_RESTRICT d1, int d1_stride,
102 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m);
103 void compositor_orc_blend_argb (guint8 * ORC_RESTRICT d1, int d1_stride,
104 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m);
105 void compositor_orc_source_argb (guint8 * ORC_RESTRICT d1, int d1_stride,
106 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m);
107 void compositor_orc_blend_bgra (guint8 * ORC_RESTRICT d1, int d1_stride,
108 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m);
109 void compositor_orc_source_bgra (guint8 * ORC_RESTRICT d1, int d1_stride,
110 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m);
111 void compositor_orc_overlay_argb (guint8 * ORC_RESTRICT d1, int d1_stride,
112 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m);
113 void compositor_orc_overlay_argb_addition (guint8 * ORC_RESTRICT d1,
114 int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n,
116 void compositor_orc_overlay_bgra (guint8 * ORC_RESTRICT d1, int d1_stride,
117 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m);
118 void compositor_orc_overlay_bgra_addition (guint8 * ORC_RESTRICT d1,
119 int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n,
123 /* begin Orc C target preamble */
124 #define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x)))
125 #define ORC_ABS(a) ((a)<0 ? -(a) : (a))
126 #define ORC_MIN(a,b) ((a)<(b) ? (a) : (b))
127 #define ORC_MAX(a,b) ((a)>(b) ? (a) : (b))
128 #define ORC_SB_MAX 127
129 #define ORC_SB_MIN (-1-ORC_SB_MAX)
130 #define ORC_UB_MAX (orc_uint8) 255
132 #define ORC_SW_MAX 32767
133 #define ORC_SW_MIN (-1-ORC_SW_MAX)
134 #define ORC_UW_MAX (orc_uint16)65535
136 #define ORC_SL_MAX 2147483647
137 #define ORC_SL_MIN (-1-ORC_SL_MAX)
138 #define ORC_UL_MAX 4294967295U
140 #define ORC_CLAMP_SB(x) ORC_CLAMP(x,ORC_SB_MIN,ORC_SB_MAX)
141 #define ORC_CLAMP_UB(x) ORC_CLAMP(x,ORC_UB_MIN,ORC_UB_MAX)
142 #define ORC_CLAMP_SW(x) ORC_CLAMP(x,ORC_SW_MIN,ORC_SW_MAX)
143 #define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX)
144 #define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX)
145 #define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX)
146 #define ORC_SWAP_W(x) ((((x)&0xffU)<<8) | (((x)&0xff00U)>>8))
147 #define ORC_SWAP_L(x) ((((x)&0xffU)<<24) | (((x)&0xff00U)<<8) | (((x)&0xff0000U)>>8) | (((x)&0xff000000U)>>24))
148 #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))
149 #define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset)))
150 #define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff))
151 #define ORC_ISNAN(x) ((((x)&0x7f800000) == 0x7f800000) && (((x)&0x007fffff) != 0))
152 #define ORC_DENORMAL_DOUBLE(x) ((x) & ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == 0) ? ORC_UINT64_C(0xfff0000000000000) : ORC_UINT64_C(0xffffffffffffffff)))
153 #define ORC_ISNAN_DOUBLE(x) ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == ORC_UINT64_C(0x7ff0000000000000)) && (((x)&ORC_UINT64_C(0x000fffffffffffff)) != 0))
155 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
156 #define ORC_RESTRICT restrict
157 #elif defined(__GNUC__) && __GNUC__ >= 4
158 #define ORC_RESTRICT __restrict__
163 /* end Orc C target preamble */
167 /* compositor_orc_splat_u32 */
170 compositor_orc_splat_u32 (guint32 * ORC_RESTRICT d1, int p1, int n)
173 orc_union32 *ORC_RESTRICT ptr0;
177 ptr0 = (orc_union32 *) d1;
182 for (i = 0; i < n; i++) {
193 _backup_compositor_orc_splat_u32 (OrcExecutor * ORC_RESTRICT ex)
197 orc_union32 *ORC_RESTRICT ptr0;
201 ptr0 = (orc_union32 *) ex->arrays[0];
204 var32.i = ex->params[24];
206 for (i = 0; i < n; i++) {
216 compositor_orc_splat_u32 (guint32 * ORC_RESTRICT d1, int p1, int n)
218 OrcExecutor _ex, *ex = &_ex;
219 static volatile int p_inited = 0;
220 static OrcCode *c = 0;
221 void (*func) (OrcExecutor *);
224 orc_once_mutex_lock ();
229 static const orc_uint8 bc[] = {
230 1, 9, 24, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111, 114,
231 99, 95, 115, 112, 108, 97, 116, 95, 117, 51, 50, 11, 4, 4, 16, 4,
234 p = orc_program_new_from_static_bytecode (bc);
235 orc_program_set_backup_function (p, _backup_compositor_orc_splat_u32);
237 p = orc_program_new ();
238 orc_program_set_name (p, "compositor_orc_splat_u32");
239 orc_program_set_backup_function (p, _backup_compositor_orc_splat_u32);
240 orc_program_add_destination (p, 4, "d1");
241 orc_program_add_parameter (p, 4, "p1");
243 orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1,
247 orc_program_compile (p);
248 c = orc_program_take_code (p);
249 orc_program_free (p);
252 orc_once_mutex_unlock ();
254 ex->arrays[ORC_VAR_A2] = c;
258 ex->arrays[ORC_VAR_D1] = d1;
259 ex->params[ORC_VAR_P1] = p1;
267 /* compositor_orc_memcpy_u32 */
270 compositor_orc_memcpy_u32 (guint32 * ORC_RESTRICT d1,
271 const guint32 * ORC_RESTRICT s1, int n)
274 orc_union32 *ORC_RESTRICT ptr0;
275 const orc_union32 *ORC_RESTRICT ptr4;
279 ptr0 = (orc_union32 *) d1;
280 ptr4 = (orc_union32 *) s1;
283 for (i = 0; i < n; i++) {
296 _backup_compositor_orc_memcpy_u32 (OrcExecutor * ORC_RESTRICT ex)
300 orc_union32 *ORC_RESTRICT ptr0;
301 const orc_union32 *ORC_RESTRICT ptr4;
305 ptr0 = (orc_union32 *) ex->arrays[0];
306 ptr4 = (orc_union32 *) ex->arrays[4];
309 for (i = 0; i < n; i++) {
321 compositor_orc_memcpy_u32 (guint32 * ORC_RESTRICT d1,
322 const guint32 * ORC_RESTRICT s1, int n)
324 OrcExecutor _ex, *ex = &_ex;
325 static volatile int p_inited = 0;
326 static OrcCode *c = 0;
327 void (*func) (OrcExecutor *);
330 orc_once_mutex_lock ();
335 static const orc_uint8 bc[] = {
336 1, 9, 25, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111, 114,
337 99, 95, 109, 101, 109, 99, 112, 121, 95, 117, 51, 50, 11, 4, 4, 12,
338 4, 4, 112, 0, 4, 2, 0,
340 p = orc_program_new_from_static_bytecode (bc);
341 orc_program_set_backup_function (p, _backup_compositor_orc_memcpy_u32);
343 p = orc_program_new ();
344 orc_program_set_name (p, "compositor_orc_memcpy_u32");
345 orc_program_set_backup_function (p, _backup_compositor_orc_memcpy_u32);
346 orc_program_add_destination (p, 4, "d1");
347 orc_program_add_source (p, 4, "s1");
349 orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1,
353 orc_program_compile (p);
354 c = orc_program_take_code (p);
355 orc_program_free (p);
358 orc_once_mutex_unlock ();
360 ex->arrays[ORC_VAR_A2] = c;
364 ex->arrays[ORC_VAR_D1] = d1;
365 ex->arrays[ORC_VAR_S1] = (void *) s1;
373 /* compositor_orc_blend_u8 */
376 compositor_orc_blend_u8 (guint8 * ORC_RESTRICT d1, int d1_stride,
377 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
381 orc_int8 *ORC_RESTRICT ptr0;
382 const orc_int8 *ORC_RESTRICT ptr4;
395 for (j = 0; j < m; j++) {
396 ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
397 ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
402 for (i = 0; i < n; i++) {
406 var38.i = (orc_uint8) var34;
410 var39.i = (orc_uint8) var35;
412 var40.i = var39.i - var38.i;
414 var41.i = (var40.i * var36.i) & 0xffff;
416 var42.i = ((orc_uint16) var38.i) << 8;
418 var43.i = var42.i + var41.i;
420 var44.i = ((orc_uint16) var43.i) >> 8;
422 var37 = ORC_CLAMP_UB (var44.i);
432 _backup_compositor_orc_blend_u8 (OrcExecutor * ORC_RESTRICT ex)
437 int m = ex->params[ORC_VAR_A1];
438 orc_int8 *ORC_RESTRICT ptr0;
439 const orc_int8 *ORC_RESTRICT ptr4;
452 for (j = 0; j < m; j++) {
453 ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
454 ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
457 var36.i = ex->params[24];
459 for (i = 0; i < n; i++) {
463 var38.i = (orc_uint8) var34;
467 var39.i = (orc_uint8) var35;
469 var40.i = var39.i - var38.i;
471 var41.i = (var40.i * var36.i) & 0xffff;
473 var42.i = ((orc_uint16) var38.i) << 8;
475 var43.i = var42.i + var41.i;
477 var44.i = ((orc_uint16) var43.i) >> 8;
479 var37 = ORC_CLAMP_UB (var44.i);
488 compositor_orc_blend_u8 (guint8 * ORC_RESTRICT d1, int d1_stride,
489 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
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, 7, 9, 23, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111,
504 114, 99, 95, 98, 108, 101, 110, 100, 95, 117, 56, 11, 1, 1, 12, 1,
505 1, 14, 1, 8, 0, 0, 0, 16, 2, 20, 2, 20, 2, 150, 32, 0,
506 150, 33, 4, 98, 33, 33, 32, 89, 33, 33, 24, 93, 32, 32, 16, 70,
507 33, 32, 33, 95, 33, 33, 16, 160, 0, 33, 2, 0,
509 p = orc_program_new_from_static_bytecode (bc);
510 orc_program_set_backup_function (p, _backup_compositor_orc_blend_u8);
512 p = orc_program_new ();
513 orc_program_set_2d (p);
514 orc_program_set_name (p, "compositor_orc_blend_u8");
515 orc_program_set_backup_function (p, _backup_compositor_orc_blend_u8);
516 orc_program_add_destination (p, 1, "d1");
517 orc_program_add_source (p, 1, "s1");
518 orc_program_add_constant (p, 1, 0x00000008, "c1");
519 orc_program_add_parameter (p, 2, "p1");
520 orc_program_add_temporary (p, 2, "t1");
521 orc_program_add_temporary (p, 2, "t2");
523 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1,
525 orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1,
527 orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1,
529 orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1,
531 orc_program_append_2 (p, "shlw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
533 orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T2,
535 orc_program_append_2 (p, "shruw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1,
537 orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T2,
538 ORC_VAR_D1, ORC_VAR_D1);
541 orc_program_compile (p);
542 c = orc_program_take_code (p);
543 orc_program_free (p);
546 orc_once_mutex_unlock ();
548 ex->arrays[ORC_VAR_A2] = c;
552 ORC_EXECUTOR_M (ex) = m;
553 ex->arrays[ORC_VAR_D1] = d1;
554 ex->params[ORC_VAR_D1] = d1_stride;
555 ex->arrays[ORC_VAR_S1] = (void *) s1;
556 ex->params[ORC_VAR_S1] = s1_stride;
557 ex->params[ORC_VAR_P1] = p1;
565 /* compositor_orc_blend_argb */
568 compositor_orc_blend_argb (guint8 * ORC_RESTRICT d1, int d1_stride,
569 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
573 orc_union32 *ORC_RESTRICT ptr0;
574 const orc_union32 *ORC_RESTRICT ptr4;
576 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
577 volatile orc_union64 var40;
581 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
582 volatile orc_union32 var41;
604 for (j = 0; j < m; j++) {
605 ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
606 ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
614 var40.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
615 var40.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
616 var40.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
617 var40.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
619 var41.i = 0x000000ff; /* 255 or 1.25987e-321f */
621 for (i = 0; i < n; i++) {
630 ((((orc_uint32) var44) & 0xff) << 24) | ((((orc_uint32) var44) & 0xff)
631 << 16) | ((((orc_uint32) var44) & 0xff) << 8) | (((orc_uint32) var44)
634 var46.x4[0] = (orc_uint8) var45.x4[0];
635 var46.x4[1] = (orc_uint8) var45.x4[1];
636 var46.x4[2] = (orc_uint8) var45.x4[2];
637 var46.x4[3] = (orc_uint8) var45.x4[3];
639 var47.x4[0] = (var46.x4[0] * var39.x4[0]) & 0xffff;
640 var47.x4[1] = (var46.x4[1] * var39.x4[1]) & 0xffff;
641 var47.x4[2] = (var46.x4[2] * var39.x4[2]) & 0xffff;
642 var47.x4[3] = (var46.x4[3] * var39.x4[3]) & 0xffff;
645 ((orc_uint16) (((orc_uint16) (var47.x4[0] + 128)) +
646 (((orc_uint16) (var47.x4[0] + 128)) >> 8))) >> 8;
648 ((orc_uint16) (((orc_uint16) (var47.x4[1] + 128)) +
649 (((orc_uint16) (var47.x4[1] + 128)) >> 8))) >> 8;
651 ((orc_uint16) (((orc_uint16) (var47.x4[2] + 128)) +
652 (((orc_uint16) (var47.x4[2] + 128)) >> 8))) >> 8;
654 ((orc_uint16) (((orc_uint16) (var47.x4[3] + 128)) +
655 (((orc_uint16) (var47.x4[3] + 128)) >> 8))) >> 8;
657 var49.x4[0] = (orc_uint8) var42.x4[0];
658 var49.x4[1] = (orc_uint8) var42.x4[1];
659 var49.x4[2] = (orc_uint8) var42.x4[2];
660 var49.x4[3] = (orc_uint8) var42.x4[3];
662 var50.x4[0] = (var49.x4[0] * var48.x4[0]) & 0xffff;
663 var50.x4[1] = (var49.x4[1] * var48.x4[1]) & 0xffff;
664 var50.x4[2] = (var49.x4[2] * var48.x4[2]) & 0xffff;
665 var50.x4[3] = (var49.x4[3] * var48.x4[3]) & 0xffff;
667 var51.x4[0] = var40.x4[0] - var48.x4[0];
668 var51.x4[1] = var40.x4[1] - var48.x4[1];
669 var51.x4[2] = var40.x4[2] - var48.x4[2];
670 var51.x4[3] = var40.x4[3] - var48.x4[3];
674 var53.x4[0] = (orc_uint8) var52.x4[0];
675 var53.x4[1] = (orc_uint8) var52.x4[1];
676 var53.x4[2] = (orc_uint8) var52.x4[2];
677 var53.x4[3] = (orc_uint8) var52.x4[3];
679 var54.x4[0] = (var53.x4[0] * var51.x4[0]) & 0xffff;
680 var54.x4[1] = (var53.x4[1] * var51.x4[1]) & 0xffff;
681 var54.x4[2] = (var53.x4[2] * var51.x4[2]) & 0xffff;
682 var54.x4[3] = (var53.x4[3] * var51.x4[3]) & 0xffff;
684 var55.x4[0] = var54.x4[0] + var50.x4[0];
685 var55.x4[1] = var54.x4[1] + var50.x4[1];
686 var55.x4[2] = var54.x4[2] + var50.x4[2];
687 var55.x4[3] = var54.x4[3] + var50.x4[3];
690 ((orc_uint16) (((orc_uint16) (var55.x4[0] + 128)) +
691 (((orc_uint16) (var55.x4[0] + 128)) >> 8))) >> 8;
693 ((orc_uint16) (((orc_uint16) (var55.x4[1] + 128)) +
694 (((orc_uint16) (var55.x4[1] + 128)) >> 8))) >> 8;
696 ((orc_uint16) (((orc_uint16) (var55.x4[2] + 128)) +
697 (((orc_uint16) (var55.x4[2] + 128)) >> 8))) >> 8;
699 ((orc_uint16) (((orc_uint16) (var55.x4[3] + 128)) +
700 (((orc_uint16) (var55.x4[3] + 128)) >> 8))) >> 8;
702 var57.x4[0] = var56.x4[0];
703 var57.x4[1] = var56.x4[1];
704 var57.x4[2] = var56.x4[2];
705 var57.x4[3] = var56.x4[3];
707 var58.i = var57.i | var41.i;
717 _backup_compositor_orc_blend_argb (OrcExecutor * ORC_RESTRICT ex)
722 int m = ex->params[ORC_VAR_A1];
723 orc_union32 *ORC_RESTRICT ptr0;
724 const orc_union32 *ORC_RESTRICT ptr4;
726 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
727 volatile orc_union64 var40;
731 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
732 volatile orc_union32 var41;
754 for (j = 0; j < m; j++) {
755 ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
756 ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
759 var39.x4[0] = ex->params[24];
760 var39.x4[1] = ex->params[24];
761 var39.x4[2] = ex->params[24];
762 var39.x4[3] = ex->params[24];
764 var40.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
765 var40.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
766 var40.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
767 var40.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
769 var41.i = 0x000000ff; /* 255 or 1.25987e-321f */
771 for (i = 0; i < n; i++) {
780 ((((orc_uint32) var44) & 0xff) << 24) | ((((orc_uint32) var44) & 0xff)
781 << 16) | ((((orc_uint32) var44) & 0xff) << 8) | (((orc_uint32) var44)
784 var46.x4[0] = (orc_uint8) var45.x4[0];
785 var46.x4[1] = (orc_uint8) var45.x4[1];
786 var46.x4[2] = (orc_uint8) var45.x4[2];
787 var46.x4[3] = (orc_uint8) var45.x4[3];
789 var47.x4[0] = (var46.x4[0] * var39.x4[0]) & 0xffff;
790 var47.x4[1] = (var46.x4[1] * var39.x4[1]) & 0xffff;
791 var47.x4[2] = (var46.x4[2] * var39.x4[2]) & 0xffff;
792 var47.x4[3] = (var46.x4[3] * var39.x4[3]) & 0xffff;
795 ((orc_uint16) (((orc_uint16) (var47.x4[0] + 128)) +
796 (((orc_uint16) (var47.x4[0] + 128)) >> 8))) >> 8;
798 ((orc_uint16) (((orc_uint16) (var47.x4[1] + 128)) +
799 (((orc_uint16) (var47.x4[1] + 128)) >> 8))) >> 8;
801 ((orc_uint16) (((orc_uint16) (var47.x4[2] + 128)) +
802 (((orc_uint16) (var47.x4[2] + 128)) >> 8))) >> 8;
804 ((orc_uint16) (((orc_uint16) (var47.x4[3] + 128)) +
805 (((orc_uint16) (var47.x4[3] + 128)) >> 8))) >> 8;
807 var49.x4[0] = (orc_uint8) var42.x4[0];
808 var49.x4[1] = (orc_uint8) var42.x4[1];
809 var49.x4[2] = (orc_uint8) var42.x4[2];
810 var49.x4[3] = (orc_uint8) var42.x4[3];
812 var50.x4[0] = (var49.x4[0] * var48.x4[0]) & 0xffff;
813 var50.x4[1] = (var49.x4[1] * var48.x4[1]) & 0xffff;
814 var50.x4[2] = (var49.x4[2] * var48.x4[2]) & 0xffff;
815 var50.x4[3] = (var49.x4[3] * var48.x4[3]) & 0xffff;
817 var51.x4[0] = var40.x4[0] - var48.x4[0];
818 var51.x4[1] = var40.x4[1] - var48.x4[1];
819 var51.x4[2] = var40.x4[2] - var48.x4[2];
820 var51.x4[3] = var40.x4[3] - var48.x4[3];
824 var53.x4[0] = (orc_uint8) var52.x4[0];
825 var53.x4[1] = (orc_uint8) var52.x4[1];
826 var53.x4[2] = (orc_uint8) var52.x4[2];
827 var53.x4[3] = (orc_uint8) var52.x4[3];
829 var54.x4[0] = (var53.x4[0] * var51.x4[0]) & 0xffff;
830 var54.x4[1] = (var53.x4[1] * var51.x4[1]) & 0xffff;
831 var54.x4[2] = (var53.x4[2] * var51.x4[2]) & 0xffff;
832 var54.x4[3] = (var53.x4[3] * var51.x4[3]) & 0xffff;
834 var55.x4[0] = var54.x4[0] + var50.x4[0];
835 var55.x4[1] = var54.x4[1] + var50.x4[1];
836 var55.x4[2] = var54.x4[2] + var50.x4[2];
837 var55.x4[3] = var54.x4[3] + var50.x4[3];
840 ((orc_uint16) (((orc_uint16) (var55.x4[0] + 128)) +
841 (((orc_uint16) (var55.x4[0] + 128)) >> 8))) >> 8;
843 ((orc_uint16) (((orc_uint16) (var55.x4[1] + 128)) +
844 (((orc_uint16) (var55.x4[1] + 128)) >> 8))) >> 8;
846 ((orc_uint16) (((orc_uint16) (var55.x4[2] + 128)) +
847 (((orc_uint16) (var55.x4[2] + 128)) >> 8))) >> 8;
849 ((orc_uint16) (((orc_uint16) (var55.x4[3] + 128)) +
850 (((orc_uint16) (var55.x4[3] + 128)) >> 8))) >> 8;
852 var57.x4[0] = var56.x4[0];
853 var57.x4[1] = var56.x4[1];
854 var57.x4[2] = var56.x4[2];
855 var57.x4[3] = var56.x4[3];
857 var58.i = var57.i | var41.i;
866 compositor_orc_blend_argb (guint8 * ORC_RESTRICT d1, int d1_stride,
867 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
869 OrcExecutor _ex, *ex = &_ex;
870 static volatile int p_inited = 0;
871 static OrcCode *c = 0;
872 void (*func) (OrcExecutor *);
875 orc_once_mutex_lock ();
880 static const orc_uint8 bc[] = {
881 1, 7, 9, 25, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111,
882 114, 99, 95, 98, 108, 101, 110, 100, 95, 97, 114, 103, 98, 11, 4, 4,
883 12, 4, 4, 14, 4, 255, 0, 0, 0, 14, 2, 255, 0, 0, 0, 16,
884 2, 20, 4, 20, 2, 20, 1, 20, 4, 20, 8, 20, 8, 20, 8, 113,
885 32, 4, 163, 33, 32, 157, 34, 33, 152, 35, 34, 21, 2, 150, 38, 35,
886 21, 2, 89, 38, 38, 24, 21, 2, 80, 38, 38, 21, 2, 150, 37, 32,
887 21, 2, 89, 37, 37, 38, 21, 2, 98, 38, 17, 38, 113, 32, 0, 21,
888 2, 150, 36, 32, 21, 2, 89, 36, 36, 38, 21, 2, 70, 36, 36, 37,
889 21, 2, 80, 36, 36, 21, 2, 157, 32, 36, 123, 32, 32, 16, 128, 0,
892 p = orc_program_new_from_static_bytecode (bc);
893 orc_program_set_backup_function (p, _backup_compositor_orc_blend_argb);
895 p = orc_program_new ();
896 orc_program_set_2d (p);
897 orc_program_set_name (p, "compositor_orc_blend_argb");
898 orc_program_set_backup_function (p, _backup_compositor_orc_blend_argb);
899 orc_program_add_destination (p, 4, "d1");
900 orc_program_add_source (p, 4, "s1");
901 orc_program_add_constant (p, 4, 0x000000ff, "c1");
902 orc_program_add_constant (p, 2, 0x000000ff, "c2");
903 orc_program_add_parameter (p, 2, "p1");
904 orc_program_add_temporary (p, 4, "t1");
905 orc_program_add_temporary (p, 2, "t2");
906 orc_program_add_temporary (p, 1, "t3");
907 orc_program_add_temporary (p, 4, "t4");
908 orc_program_add_temporary (p, 8, "t5");
909 orc_program_add_temporary (p, 8, "t6");
910 orc_program_add_temporary (p, 8, "t7");
912 orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
914 orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1,
916 orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1,
918 orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1,
920 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1,
922 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_P1,
924 orc_program_append_2 (p, "div255w", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_D1,
926 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_D1,
928 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T7,
930 orc_program_append_2 (p, "subw", 2, ORC_VAR_T7, ORC_VAR_C2, ORC_VAR_T7,
932 orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1,
934 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_D1,
936 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T7,
938 orc_program_append_2 (p, "addw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T6,
940 orc_program_append_2 (p, "div255w", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_D1,
942 orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_D1,
944 orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
946 orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
950 orc_program_compile (p);
951 c = orc_program_take_code (p);
952 orc_program_free (p);
955 orc_once_mutex_unlock ();
957 ex->arrays[ORC_VAR_A2] = c;
961 ORC_EXECUTOR_M (ex) = m;
962 ex->arrays[ORC_VAR_D1] = d1;
963 ex->params[ORC_VAR_D1] = d1_stride;
964 ex->arrays[ORC_VAR_S1] = (void *) s1;
965 ex->params[ORC_VAR_S1] = s1_stride;
966 ex->params[ORC_VAR_P1] = p1;
974 /* compositor_orc_source_argb */
977 compositor_orc_source_argb (guint8 * ORC_RESTRICT d1, int d1_stride,
978 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
982 orc_union32 *ORC_RESTRICT ptr0;
983 const orc_union32 *ORC_RESTRICT ptr4;
985 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
986 volatile orc_union32 var39;
990 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
991 volatile orc_union32 var40;
1007 for (j = 0; j < m; j++) {
1008 ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
1009 ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
1017 var39.i = 0xffffff00; /* -256 or 2.122e-314f */
1019 var40.i = 0x000000ff; /* 255 or 1.25987e-321f */
1021 for (i = 0; i < n; i++) {
1030 ((((orc_uint32) var43) & 0xff) << 24) | ((((orc_uint32) var43) & 0xff)
1031 << 16) | ((((orc_uint32) var43) & 0xff) << 8) | (((orc_uint32) var43)
1034 var45.x4[0] = (orc_uint8) var44.x4[0];
1035 var45.x4[1] = (orc_uint8) var44.x4[1];
1036 var45.x4[2] = (orc_uint8) var44.x4[2];
1037 var45.x4[3] = (orc_uint8) var44.x4[3];
1039 var46.x4[0] = (var45.x4[0] * var38.x4[0]) & 0xffff;
1040 var46.x4[1] = (var45.x4[1] * var38.x4[1]) & 0xffff;
1041 var46.x4[2] = (var45.x4[2] * var38.x4[2]) & 0xffff;
1042 var46.x4[3] = (var45.x4[3] * var38.x4[3]) & 0xffff;
1045 ((orc_uint16) (((orc_uint16) (var46.x4[0] + 128)) +
1046 (((orc_uint16) (var46.x4[0] + 128)) >> 8))) >> 8;
1048 ((orc_uint16) (((orc_uint16) (var46.x4[1] + 128)) +
1049 (((orc_uint16) (var46.x4[1] + 128)) >> 8))) >> 8;
1051 ((orc_uint16) (((orc_uint16) (var46.x4[2] + 128)) +
1052 (((orc_uint16) (var46.x4[2] + 128)) >> 8))) >> 8;
1054 ((orc_uint16) (((orc_uint16) (var46.x4[3] + 128)) +
1055 (((orc_uint16) (var46.x4[3] + 128)) >> 8))) >> 8;
1057 var48.i = var41.i & var39.i;
1059 var49.x4[0] = var47.x4[0];
1060 var49.x4[1] = var47.x4[1];
1061 var49.x4[2] = var47.x4[2];
1062 var49.x4[3] = var47.x4[3];
1064 var50.i = var49.i & var40.i;
1066 var51.i = var48.i | var50.i;
1076 _backup_compositor_orc_source_argb (OrcExecutor * ORC_RESTRICT ex)
1081 int m = ex->params[ORC_VAR_A1];
1082 orc_union32 *ORC_RESTRICT ptr0;
1083 const orc_union32 *ORC_RESTRICT ptr4;
1085 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
1086 volatile orc_union32 var39;
1090 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
1091 volatile orc_union32 var40;
1107 for (j = 0; j < m; j++) {
1108 ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
1109 ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
1112 var38.x4[0] = ex->params[24];
1113 var38.x4[1] = ex->params[24];
1114 var38.x4[2] = ex->params[24];
1115 var38.x4[3] = ex->params[24];
1117 var39.i = 0xffffff00; /* -256 or 2.122e-314f */
1119 var40.i = 0x000000ff; /* 255 or 1.25987e-321f */
1121 for (i = 0; i < n; i++) {
1130 ((((orc_uint32) var43) & 0xff) << 24) | ((((orc_uint32) var43) & 0xff)
1131 << 16) | ((((orc_uint32) var43) & 0xff) << 8) | (((orc_uint32) var43)
1134 var45.x4[0] = (orc_uint8) var44.x4[0];
1135 var45.x4[1] = (orc_uint8) var44.x4[1];
1136 var45.x4[2] = (orc_uint8) var44.x4[2];
1137 var45.x4[3] = (orc_uint8) var44.x4[3];
1139 var46.x4[0] = (var45.x4[0] * var38.x4[0]) & 0xffff;
1140 var46.x4[1] = (var45.x4[1] * var38.x4[1]) & 0xffff;
1141 var46.x4[2] = (var45.x4[2] * var38.x4[2]) & 0xffff;
1142 var46.x4[3] = (var45.x4[3] * var38.x4[3]) & 0xffff;
1145 ((orc_uint16) (((orc_uint16) (var46.x4[0] + 128)) +
1146 (((orc_uint16) (var46.x4[0] + 128)) >> 8))) >> 8;
1148 ((orc_uint16) (((orc_uint16) (var46.x4[1] + 128)) +
1149 (((orc_uint16) (var46.x4[1] + 128)) >> 8))) >> 8;
1151 ((orc_uint16) (((orc_uint16) (var46.x4[2] + 128)) +
1152 (((orc_uint16) (var46.x4[2] + 128)) >> 8))) >> 8;
1154 ((orc_uint16) (((orc_uint16) (var46.x4[3] + 128)) +
1155 (((orc_uint16) (var46.x4[3] + 128)) >> 8))) >> 8;
1157 var48.i = var41.i & var39.i;
1159 var49.x4[0] = var47.x4[0];
1160 var49.x4[1] = var47.x4[1];
1161 var49.x4[2] = var47.x4[2];
1162 var49.x4[3] = var47.x4[3];
1164 var50.i = var49.i & var40.i;
1166 var51.i = var48.i | var50.i;
1175 compositor_orc_source_argb (guint8 * ORC_RESTRICT d1, int d1_stride,
1176 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
1178 OrcExecutor _ex, *ex = &_ex;
1179 static volatile int p_inited = 0;
1180 static OrcCode *c = 0;
1181 void (*func) (OrcExecutor *);
1184 orc_once_mutex_lock ();
1189 static const orc_uint8 bc[] = {
1190 1, 7, 9, 26, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111,
1191 114, 99, 95, 115, 111, 117, 114, 99, 101, 95, 97, 114, 103, 98, 11, 4,
1192 4, 12, 4, 4, 14, 4, 255, 0, 0, 0, 14, 4, 0, 255, 255, 255,
1193 16, 2, 20, 4, 20, 4, 20, 2, 20, 1, 20, 4, 20, 8, 113, 32,
1194 4, 163, 34, 32, 157, 35, 34, 152, 36, 35, 21, 2, 150, 37, 36, 21,
1195 2, 89, 37, 37, 24, 21, 2, 80, 37, 37, 106, 32, 32, 17, 21, 2,
1196 157, 33, 37, 106, 33, 33, 16, 123, 32, 32, 33, 128, 0, 32, 2, 0,
1199 p = orc_program_new_from_static_bytecode (bc);
1200 orc_program_set_backup_function (p, _backup_compositor_orc_source_argb);
1202 p = orc_program_new ();
1203 orc_program_set_2d (p);
1204 orc_program_set_name (p, "compositor_orc_source_argb");
1205 orc_program_set_backup_function (p, _backup_compositor_orc_source_argb);
1206 orc_program_add_destination (p, 4, "d1");
1207 orc_program_add_source (p, 4, "s1");
1208 orc_program_add_constant (p, 4, 0x000000ff, "c1");
1209 orc_program_add_constant (p, 4, 0xffffff00, "c2");
1210 orc_program_add_parameter (p, 2, "p1");
1211 orc_program_add_temporary (p, 4, "t1");
1212 orc_program_add_temporary (p, 4, "t2");
1213 orc_program_add_temporary (p, 2, "t3");
1214 orc_program_add_temporary (p, 1, "t4");
1215 orc_program_add_temporary (p, 4, "t5");
1216 orc_program_add_temporary (p, 8, "t6");
1218 orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
1220 orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1,
1222 orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1,
1224 orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1,
1226 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_D1,
1228 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_P1,
1230 orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1,
1232 orc_program_append_2 (p, "andl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2,
1234 orc_program_append_2 (p, "convwb", 2, ORC_VAR_T2, ORC_VAR_T6, ORC_VAR_D1,
1236 orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1,
1238 orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
1240 orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
1244 orc_program_compile (p);
1245 c = orc_program_take_code (p);
1246 orc_program_free (p);
1249 orc_once_mutex_unlock ();
1251 ex->arrays[ORC_VAR_A2] = c;
1255 ORC_EXECUTOR_M (ex) = m;
1256 ex->arrays[ORC_VAR_D1] = d1;
1257 ex->params[ORC_VAR_D1] = d1_stride;
1258 ex->arrays[ORC_VAR_S1] = (void *) s1;
1259 ex->params[ORC_VAR_S1] = s1_stride;
1260 ex->params[ORC_VAR_P1] = p1;
1268 /* compositor_orc_blend_bgra */
1271 compositor_orc_blend_bgra (guint8 * ORC_RESTRICT d1, int d1_stride,
1272 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
1276 orc_union32 *ORC_RESTRICT ptr0;
1277 const orc_union32 *ORC_RESTRICT ptr4;
1279 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
1280 volatile orc_union64 var41;
1284 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
1285 volatile orc_union32 var42;
1308 for (j = 0; j < m; j++) {
1309 ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
1310 ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
1318 var41.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
1319 var41.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
1320 var41.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
1321 var41.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
1323 var42.i = 0xff000000; /* -16777216 or 2.11371e-314f */
1325 for (i = 0; i < n; i++) {
1329 var44.i = ((orc_uint32) var43.i) >> 24;
1336 ((((orc_uint32) var46) & 0xff) << 24) | ((((orc_uint32) var46) & 0xff)
1337 << 16) | ((((orc_uint32) var46) & 0xff) << 8) | (((orc_uint32) var46)
1340 var48.x4[0] = (orc_uint8) var47.x4[0];
1341 var48.x4[1] = (orc_uint8) var47.x4[1];
1342 var48.x4[2] = (orc_uint8) var47.x4[2];
1343 var48.x4[3] = (orc_uint8) var47.x4[3];
1345 var49.x4[0] = (var48.x4[0] * var40.x4[0]) & 0xffff;
1346 var49.x4[1] = (var48.x4[1] * var40.x4[1]) & 0xffff;
1347 var49.x4[2] = (var48.x4[2] * var40.x4[2]) & 0xffff;
1348 var49.x4[3] = (var48.x4[3] * var40.x4[3]) & 0xffff;
1351 ((orc_uint16) (((orc_uint16) (var49.x4[0] + 128)) +
1352 (((orc_uint16) (var49.x4[0] + 128)) >> 8))) >> 8;
1354 ((orc_uint16) (((orc_uint16) (var49.x4[1] + 128)) +
1355 (((orc_uint16) (var49.x4[1] + 128)) >> 8))) >> 8;
1357 ((orc_uint16) (((orc_uint16) (var49.x4[2] + 128)) +
1358 (((orc_uint16) (var49.x4[2] + 128)) >> 8))) >> 8;
1360 ((orc_uint16) (((orc_uint16) (var49.x4[3] + 128)) +
1361 (((orc_uint16) (var49.x4[3] + 128)) >> 8))) >> 8;
1363 var51.x4[0] = (orc_uint8) var43.x4[0];
1364 var51.x4[1] = (orc_uint8) var43.x4[1];
1365 var51.x4[2] = (orc_uint8) var43.x4[2];
1366 var51.x4[3] = (orc_uint8) var43.x4[3];
1368 var52.x4[0] = (var51.x4[0] * var50.x4[0]) & 0xffff;
1369 var52.x4[1] = (var51.x4[1] * var50.x4[1]) & 0xffff;
1370 var52.x4[2] = (var51.x4[2] * var50.x4[2]) & 0xffff;
1371 var52.x4[3] = (var51.x4[3] * var50.x4[3]) & 0xffff;
1373 var53.x4[0] = var41.x4[0] - var50.x4[0];
1374 var53.x4[1] = var41.x4[1] - var50.x4[1];
1375 var53.x4[2] = var41.x4[2] - var50.x4[2];
1376 var53.x4[3] = var41.x4[3] - var50.x4[3];
1380 var55.x4[0] = (orc_uint8) var54.x4[0];
1381 var55.x4[1] = (orc_uint8) var54.x4[1];
1382 var55.x4[2] = (orc_uint8) var54.x4[2];
1383 var55.x4[3] = (orc_uint8) var54.x4[3];
1385 var56.x4[0] = (var55.x4[0] * var53.x4[0]) & 0xffff;
1386 var56.x4[1] = (var55.x4[1] * var53.x4[1]) & 0xffff;
1387 var56.x4[2] = (var55.x4[2] * var53.x4[2]) & 0xffff;
1388 var56.x4[3] = (var55.x4[3] * var53.x4[3]) & 0xffff;
1390 var57.x4[0] = var56.x4[0] + var52.x4[0];
1391 var57.x4[1] = var56.x4[1] + var52.x4[1];
1392 var57.x4[2] = var56.x4[2] + var52.x4[2];
1393 var57.x4[3] = var56.x4[3] + var52.x4[3];
1396 ((orc_uint16) (((orc_uint16) (var57.x4[0] + 128)) +
1397 (((orc_uint16) (var57.x4[0] + 128)) >> 8))) >> 8;
1399 ((orc_uint16) (((orc_uint16) (var57.x4[1] + 128)) +
1400 (((orc_uint16) (var57.x4[1] + 128)) >> 8))) >> 8;
1402 ((orc_uint16) (((orc_uint16) (var57.x4[2] + 128)) +
1403 (((orc_uint16) (var57.x4[2] + 128)) >> 8))) >> 8;
1405 ((orc_uint16) (((orc_uint16) (var57.x4[3] + 128)) +
1406 (((orc_uint16) (var57.x4[3] + 128)) >> 8))) >> 8;
1408 var59.x4[0] = var58.x4[0];
1409 var59.x4[1] = var58.x4[1];
1410 var59.x4[2] = var58.x4[2];
1411 var59.x4[3] = var58.x4[3];
1413 var60.i = var59.i | var42.i;
1423 _backup_compositor_orc_blend_bgra (OrcExecutor * ORC_RESTRICT ex)
1428 int m = ex->params[ORC_VAR_A1];
1429 orc_union32 *ORC_RESTRICT ptr0;
1430 const orc_union32 *ORC_RESTRICT ptr4;
1432 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
1433 volatile orc_union64 var41;
1437 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
1438 volatile orc_union32 var42;
1461 for (j = 0; j < m; j++) {
1462 ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
1463 ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
1466 var40.x4[0] = ex->params[24];
1467 var40.x4[1] = ex->params[24];
1468 var40.x4[2] = ex->params[24];
1469 var40.x4[3] = ex->params[24];
1471 var41.x4[0] = 0x000000ff; /* 255 or 1.25987e-321f */
1472 var41.x4[1] = 0x000000ff; /* 255 or 1.25987e-321f */
1473 var41.x4[2] = 0x000000ff; /* 255 or 1.25987e-321f */
1474 var41.x4[3] = 0x000000ff; /* 255 or 1.25987e-321f */
1476 var42.i = 0xff000000; /* -16777216 or 2.11371e-314f */
1478 for (i = 0; i < n; i++) {
1482 var44.i = ((orc_uint32) var43.i) >> 24;
1489 ((((orc_uint32) var46) & 0xff) << 24) | ((((orc_uint32) var46) & 0xff)
1490 << 16) | ((((orc_uint32) var46) & 0xff) << 8) | (((orc_uint32) var46)
1493 var48.x4[0] = (orc_uint8) var47.x4[0];
1494 var48.x4[1] = (orc_uint8) var47.x4[1];
1495 var48.x4[2] = (orc_uint8) var47.x4[2];
1496 var48.x4[3] = (orc_uint8) var47.x4[3];
1498 var49.x4[0] = (var48.x4[0] * var40.x4[0]) & 0xffff;
1499 var49.x4[1] = (var48.x4[1] * var40.x4[1]) & 0xffff;
1500 var49.x4[2] = (var48.x4[2] * var40.x4[2]) & 0xffff;
1501 var49.x4[3] = (var48.x4[3] * var40.x4[3]) & 0xffff;
1504 ((orc_uint16) (((orc_uint16) (var49.x4[0] + 128)) +
1505 (((orc_uint16) (var49.x4[0] + 128)) >> 8))) >> 8;
1507 ((orc_uint16) (((orc_uint16) (var49.x4[1] + 128)) +
1508 (((orc_uint16) (var49.x4[1] + 128)) >> 8))) >> 8;
1510 ((orc_uint16) (((orc_uint16) (var49.x4[2] + 128)) +
1511 (((orc_uint16) (var49.x4[2] + 128)) >> 8))) >> 8;
1513 ((orc_uint16) (((orc_uint16) (var49.x4[3] + 128)) +
1514 (((orc_uint16) (var49.x4[3] + 128)) >> 8))) >> 8;
1516 var51.x4[0] = (orc_uint8) var43.x4[0];
1517 var51.x4[1] = (orc_uint8) var43.x4[1];
1518 var51.x4[2] = (orc_uint8) var43.x4[2];
1519 var51.x4[3] = (orc_uint8) var43.x4[3];
1521 var52.x4[0] = (var51.x4[0] * var50.x4[0]) & 0xffff;
1522 var52.x4[1] = (var51.x4[1] * var50.x4[1]) & 0xffff;
1523 var52.x4[2] = (var51.x4[2] * var50.x4[2]) & 0xffff;
1524 var52.x4[3] = (var51.x4[3] * var50.x4[3]) & 0xffff;
1526 var53.x4[0] = var41.x4[0] - var50.x4[0];
1527 var53.x4[1] = var41.x4[1] - var50.x4[1];
1528 var53.x4[2] = var41.x4[2] - var50.x4[2];
1529 var53.x4[3] = var41.x4[3] - var50.x4[3];
1533 var55.x4[0] = (orc_uint8) var54.x4[0];
1534 var55.x4[1] = (orc_uint8) var54.x4[1];
1535 var55.x4[2] = (orc_uint8) var54.x4[2];
1536 var55.x4[3] = (orc_uint8) var54.x4[3];
1538 var56.x4[0] = (var55.x4[0] * var53.x4[0]) & 0xffff;
1539 var56.x4[1] = (var55.x4[1] * var53.x4[1]) & 0xffff;
1540 var56.x4[2] = (var55.x4[2] * var53.x4[2]) & 0xffff;
1541 var56.x4[3] = (var55.x4[3] * var53.x4[3]) & 0xffff;
1543 var57.x4[0] = var56.x4[0] + var52.x4[0];
1544 var57.x4[1] = var56.x4[1] + var52.x4[1];
1545 var57.x4[2] = var56.x4[2] + var52.x4[2];
1546 var57.x4[3] = var56.x4[3] + var52.x4[3];
1549 ((orc_uint16) (((orc_uint16) (var57.x4[0] + 128)) +
1550 (((orc_uint16) (var57.x4[0] + 128)) >> 8))) >> 8;
1552 ((orc_uint16) (((orc_uint16) (var57.x4[1] + 128)) +
1553 (((orc_uint16) (var57.x4[1] + 128)) >> 8))) >> 8;
1555 ((orc_uint16) (((orc_uint16) (var57.x4[2] + 128)) +
1556 (((orc_uint16) (var57.x4[2] + 128)) >> 8))) >> 8;
1558 ((orc_uint16) (((orc_uint16) (var57.x4[3] + 128)) +
1559 (((orc_uint16) (var57.x4[3] + 128)) >> 8))) >> 8;
1561 var59.x4[0] = var58.x4[0];
1562 var59.x4[1] = var58.x4[1];
1563 var59.x4[2] = var58.x4[2];
1564 var59.x4[3] = var58.x4[3];
1566 var60.i = var59.i | var42.i;
1575 compositor_orc_blend_bgra (guint8 * ORC_RESTRICT d1, int d1_stride,
1576 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
1578 OrcExecutor _ex, *ex = &_ex;
1579 static volatile int p_inited = 0;
1580 static OrcCode *c = 0;
1581 void (*func) (OrcExecutor *);
1584 orc_once_mutex_lock ();
1589 static const orc_uint8 bc[] = {
1590 1, 7, 9, 25, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111,
1591 114, 99, 95, 98, 108, 101, 110, 100, 95, 98, 103, 114, 97, 11, 4, 4,
1592 12, 4, 4, 14, 4, 0, 0, 0, 255, 14, 4, 24, 0, 0, 0, 14,
1593 2, 255, 0, 0, 0, 16, 2, 20, 4, 20, 4, 20, 2, 20, 1, 20,
1594 4, 20, 8, 20, 8, 20, 8, 113, 32, 4, 126, 33, 32, 17, 163, 34,
1595 33, 157, 35, 34, 152, 36, 35, 21, 2, 150, 39, 36, 21, 2, 89, 39,
1596 39, 24, 21, 2, 80, 39, 39, 21, 2, 150, 38, 32, 21, 2, 89, 38,
1597 38, 39, 21, 2, 98, 39, 18, 39, 113, 32, 0, 21, 2, 150, 37, 32,
1598 21, 2, 89, 37, 37, 39, 21, 2, 70, 37, 37, 38, 21, 2, 80, 37,
1599 37, 21, 2, 157, 32, 37, 123, 32, 32, 16, 128, 0, 32, 2, 0,
1601 p = orc_program_new_from_static_bytecode (bc);
1602 orc_program_set_backup_function (p, _backup_compositor_orc_blend_bgra);
1604 p = orc_program_new ();
1605 orc_program_set_2d (p);
1606 orc_program_set_name (p, "compositor_orc_blend_bgra");
1607 orc_program_set_backup_function (p, _backup_compositor_orc_blend_bgra);
1608 orc_program_add_destination (p, 4, "d1");
1609 orc_program_add_source (p, 4, "s1");
1610 orc_program_add_constant (p, 4, 0xff000000, "c1");
1611 orc_program_add_constant (p, 4, 0x00000018, "c2");
1612 orc_program_add_constant (p, 2, 0x000000ff, "c3");
1613 orc_program_add_parameter (p, 2, "p1");
1614 orc_program_add_temporary (p, 4, "t1");
1615 orc_program_add_temporary (p, 4, "t2");
1616 orc_program_add_temporary (p, 2, "t3");
1617 orc_program_add_temporary (p, 1, "t4");
1618 orc_program_add_temporary (p, 4, "t5");
1619 orc_program_add_temporary (p, 8, "t6");
1620 orc_program_add_temporary (p, 8, "t7");
1621 orc_program_add_temporary (p, 8, "t8");
1623 orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
1625 orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C2,
1627 orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1,
1629 orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1,
1631 orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1,
1633 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_D1,
1635 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_P1,
1637 orc_program_append_2 (p, "div255w", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_D1,
1639 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T1, ORC_VAR_D1,
1641 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T8,
1643 orc_program_append_2 (p, "subw", 2, ORC_VAR_T8, ORC_VAR_C3, ORC_VAR_T8,
1645 orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1,
1647 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_D1,
1649 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T8,
1651 orc_program_append_2 (p, "addw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T7,
1653 orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1,
1655 orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T6, ORC_VAR_D1,
1657 orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
1659 orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
1663 orc_program_compile (p);
1664 c = orc_program_take_code (p);
1665 orc_program_free (p);
1668 orc_once_mutex_unlock ();
1670 ex->arrays[ORC_VAR_A2] = c;
1674 ORC_EXECUTOR_M (ex) = m;
1675 ex->arrays[ORC_VAR_D1] = d1;
1676 ex->params[ORC_VAR_D1] = d1_stride;
1677 ex->arrays[ORC_VAR_S1] = (void *) s1;
1678 ex->params[ORC_VAR_S1] = s1_stride;
1679 ex->params[ORC_VAR_P1] = p1;
1687 /* compositor_orc_source_bgra */
1690 compositor_orc_source_bgra (guint8 * ORC_RESTRICT d1, int d1_stride,
1691 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
1695 orc_union32 *ORC_RESTRICT ptr0;
1696 const orc_union32 *ORC_RESTRICT ptr4;
1698 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
1699 volatile orc_union32 var39;
1703 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
1704 volatile orc_union32 var40;
1720 for (j = 0; j < m; j++) {
1721 ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
1722 ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
1730 var39.i = 0x00ffffff; /* 16777215 or 8.28905e-317f */
1732 var40.i = 0xff000000; /* -16777216 or 2.11371e-314f */
1734 for (i = 0; i < n; i++) {
1738 var42.i = ((orc_uint32) var41.i) >> 16;
1740 var43 = ((orc_uint16) var42.i) >> 8;
1743 ((((orc_uint32) var43) & 0xff) << 24) | ((((orc_uint32) var43) & 0xff)
1744 << 16) | ((((orc_uint32) var43) & 0xff) << 8) | (((orc_uint32) var43)
1747 var45.x4[0] = (orc_uint8) var44.x4[0];
1748 var45.x4[1] = (orc_uint8) var44.x4[1];
1749 var45.x4[2] = (orc_uint8) var44.x4[2];
1750 var45.x4[3] = (orc_uint8) var44.x4[3];
1752 var46.x4[0] = (var45.x4[0] * var38.x4[0]) & 0xffff;
1753 var46.x4[1] = (var45.x4[1] * var38.x4[1]) & 0xffff;
1754 var46.x4[2] = (var45.x4[2] * var38.x4[2]) & 0xffff;
1755 var46.x4[3] = (var45.x4[3] * var38.x4[3]) & 0xffff;
1758 ((orc_uint16) (((orc_uint16) (var46.x4[0] + 128)) +
1759 (((orc_uint16) (var46.x4[0] + 128)) >> 8))) >> 8;
1761 ((orc_uint16) (((orc_uint16) (var46.x4[1] + 128)) +
1762 (((orc_uint16) (var46.x4[1] + 128)) >> 8))) >> 8;
1764 ((orc_uint16) (((orc_uint16) (var46.x4[2] + 128)) +
1765 (((orc_uint16) (var46.x4[2] + 128)) >> 8))) >> 8;
1767 ((orc_uint16) (((orc_uint16) (var46.x4[3] + 128)) +
1768 (((orc_uint16) (var46.x4[3] + 128)) >> 8))) >> 8;
1770 var48.i = var41.i & var39.i;
1772 var49.x4[0] = var47.x4[0];
1773 var49.x4[1] = var47.x4[1];
1774 var49.x4[2] = var47.x4[2];
1775 var49.x4[3] = var47.x4[3];
1777 var50.i = var49.i & var40.i;
1779 var51.i = var48.i | var50.i;
1789 _backup_compositor_orc_source_bgra (OrcExecutor * ORC_RESTRICT ex)
1794 int m = ex->params[ORC_VAR_A1];
1795 orc_union32 *ORC_RESTRICT ptr0;
1796 const orc_union32 *ORC_RESTRICT ptr4;
1798 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
1799 volatile orc_union32 var39;
1803 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
1804 volatile orc_union32 var40;
1820 for (j = 0; j < m; j++) {
1821 ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
1822 ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
1825 var38.x4[0] = ex->params[24];
1826 var38.x4[1] = ex->params[24];
1827 var38.x4[2] = ex->params[24];
1828 var38.x4[3] = ex->params[24];
1830 var39.i = 0x00ffffff; /* 16777215 or 8.28905e-317f */
1832 var40.i = 0xff000000; /* -16777216 or 2.11371e-314f */
1834 for (i = 0; i < n; i++) {
1838 var42.i = ((orc_uint32) var41.i) >> 16;
1840 var43 = ((orc_uint16) var42.i) >> 8;
1843 ((((orc_uint32) var43) & 0xff) << 24) | ((((orc_uint32) var43) & 0xff)
1844 << 16) | ((((orc_uint32) var43) & 0xff) << 8) | (((orc_uint32) var43)
1847 var45.x4[0] = (orc_uint8) var44.x4[0];
1848 var45.x4[1] = (orc_uint8) var44.x4[1];
1849 var45.x4[2] = (orc_uint8) var44.x4[2];
1850 var45.x4[3] = (orc_uint8) var44.x4[3];
1852 var46.x4[0] = (var45.x4[0] * var38.x4[0]) & 0xffff;
1853 var46.x4[1] = (var45.x4[1] * var38.x4[1]) & 0xffff;
1854 var46.x4[2] = (var45.x4[2] * var38.x4[2]) & 0xffff;
1855 var46.x4[3] = (var45.x4[3] * var38.x4[3]) & 0xffff;
1858 ((orc_uint16) (((orc_uint16) (var46.x4[0] + 128)) +
1859 (((orc_uint16) (var46.x4[0] + 128)) >> 8))) >> 8;
1861 ((orc_uint16) (((orc_uint16) (var46.x4[1] + 128)) +
1862 (((orc_uint16) (var46.x4[1] + 128)) >> 8))) >> 8;
1864 ((orc_uint16) (((orc_uint16) (var46.x4[2] + 128)) +
1865 (((orc_uint16) (var46.x4[2] + 128)) >> 8))) >> 8;
1867 ((orc_uint16) (((orc_uint16) (var46.x4[3] + 128)) +
1868 (((orc_uint16) (var46.x4[3] + 128)) >> 8))) >> 8;
1870 var48.i = var41.i & var39.i;
1872 var49.x4[0] = var47.x4[0];
1873 var49.x4[1] = var47.x4[1];
1874 var49.x4[2] = var47.x4[2];
1875 var49.x4[3] = var47.x4[3];
1877 var50.i = var49.i & var40.i;
1879 var51.i = var48.i | var50.i;
1888 compositor_orc_source_bgra (guint8 * ORC_RESTRICT d1, int d1_stride,
1889 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
1891 OrcExecutor _ex, *ex = &_ex;
1892 static volatile int p_inited = 0;
1893 static OrcCode *c = 0;
1894 void (*func) (OrcExecutor *);
1897 orc_once_mutex_lock ();
1902 static const orc_uint8 bc[] = {
1903 1, 7, 9, 26, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111,
1904 114, 99, 95, 115, 111, 117, 114, 99, 101, 95, 98, 103, 114, 97, 11, 4,
1905 4, 12, 4, 4, 14, 4, 0, 0, 0, 255, 14, 4, 255, 255, 255, 0,
1906 16, 2, 20, 4, 20, 4, 20, 2, 20, 1, 20, 4, 20, 8, 113, 32,
1907 4, 164, 34, 32, 158, 35, 34, 152, 36, 35, 21, 2, 150, 37, 36, 21,
1908 2, 89, 37, 37, 24, 21, 2, 80, 37, 37, 106, 32, 32, 17, 21, 2,
1909 157, 33, 37, 106, 33, 33, 16, 123, 32, 32, 33, 128, 0, 32, 2, 0,
1912 p = orc_program_new_from_static_bytecode (bc);
1913 orc_program_set_backup_function (p, _backup_compositor_orc_source_bgra);
1915 p = orc_program_new ();
1916 orc_program_set_2d (p);
1917 orc_program_set_name (p, "compositor_orc_source_bgra");
1918 orc_program_set_backup_function (p, _backup_compositor_orc_source_bgra);
1919 orc_program_add_destination (p, 4, "d1");
1920 orc_program_add_source (p, 4, "s1");
1921 orc_program_add_constant (p, 4, 0xff000000, "c1");
1922 orc_program_add_constant (p, 4, 0x00ffffff, "c2");
1923 orc_program_add_parameter (p, 2, "p1");
1924 orc_program_add_temporary (p, 4, "t1");
1925 orc_program_add_temporary (p, 4, "t2");
1926 orc_program_add_temporary (p, 2, "t3");
1927 orc_program_add_temporary (p, 1, "t4");
1928 orc_program_add_temporary (p, 4, "t5");
1929 orc_program_add_temporary (p, 8, "t6");
1931 orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
1933 orc_program_append_2 (p, "convhlw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_D1,
1935 orc_program_append_2 (p, "convhwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1,
1937 orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1,
1939 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_D1,
1941 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_P1,
1943 orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1,
1945 orc_program_append_2 (p, "andl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2,
1947 orc_program_append_2 (p, "convwb", 2, ORC_VAR_T2, ORC_VAR_T6, ORC_VAR_D1,
1949 orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1,
1951 orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
1953 orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
1957 orc_program_compile (p);
1958 c = orc_program_take_code (p);
1959 orc_program_free (p);
1962 orc_once_mutex_unlock ();
1964 ex->arrays[ORC_VAR_A2] = c;
1968 ORC_EXECUTOR_M (ex) = m;
1969 ex->arrays[ORC_VAR_D1] = d1;
1970 ex->params[ORC_VAR_D1] = d1_stride;
1971 ex->arrays[ORC_VAR_S1] = (void *) s1;
1972 ex->params[ORC_VAR_S1] = s1_stride;
1973 ex->params[ORC_VAR_P1] = p1;
1981 /* compositor_orc_overlay_argb */
1984 compositor_orc_overlay_argb (guint8 * ORC_RESTRICT d1, int d1_stride,
1985 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
1989 orc_union32 *ORC_RESTRICT ptr0;
1990 const orc_union32 *ORC_RESTRICT ptr4;
1992 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
1993 volatile orc_union32 var42;
1997 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
1998 volatile orc_union32 var43;
2032 for (j = 0; j < m; j++) {
2033 ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
2034 ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
2042 var53.i = 0xffffffff; /* -1 or 2.122e-314f */
2044 var42.i = 0xffffff00; /* -256 or 2.122e-314f */
2046 var43.i = 0x000000ff; /* 255 or 1.25987e-321f */
2048 for (i = 0; i < n; i++) {
2057 ((((orc_uint32) var46) & 0xff) << 24) | ((((orc_uint32) var46) & 0xff)
2058 << 16) | ((((orc_uint32) var46) & 0xff) << 8) | (((orc_uint32) var46)
2061 var48.x4[0] = (orc_uint8) var47.x4[0];
2062 var48.x4[1] = (orc_uint8) var47.x4[1];
2063 var48.x4[2] = (orc_uint8) var47.x4[2];
2064 var48.x4[3] = (orc_uint8) var47.x4[3];
2066 var49.x4[0] = (var48.x4[0] * var41.x4[0]) & 0xffff;
2067 var49.x4[1] = (var48.x4[1] * var41.x4[1]) & 0xffff;
2068 var49.x4[2] = (var48.x4[2] * var41.x4[2]) & 0xffff;
2069 var49.x4[3] = (var48.x4[3] * var41.x4[3]) & 0xffff;
2072 ((orc_uint16) (((orc_uint16) (var49.x4[0] + 128)) +
2073 (((orc_uint16) (var49.x4[0] + 128)) >> 8))) >> 8;
2075 ((orc_uint16) (((orc_uint16) (var49.x4[1] + 128)) +
2076 (((orc_uint16) (var49.x4[1] + 128)) >> 8))) >> 8;
2078 ((orc_uint16) (((orc_uint16) (var49.x4[2] + 128)) +
2079 (((orc_uint16) (var49.x4[2] + 128)) >> 8))) >> 8;
2081 ((orc_uint16) (((orc_uint16) (var49.x4[3] + 128)) +
2082 (((orc_uint16) (var49.x4[3] + 128)) >> 8))) >> 8;
2084 var51.x4[0] = (orc_uint8) var44.x4[0];
2085 var51.x4[1] = (orc_uint8) var44.x4[1];
2086 var51.x4[2] = (orc_uint8) var44.x4[2];
2087 var51.x4[3] = (orc_uint8) var44.x4[3];
2089 var52.x4[0] = (var51.x4[0] * var50.x4[0]) & 0xffff;
2090 var52.x4[1] = (var51.x4[1] * var50.x4[1]) & 0xffff;
2091 var52.x4[2] = (var51.x4[2] * var50.x4[2]) & 0xffff;
2092 var52.x4[3] = (var51.x4[3] * var50.x4[3]) & 0xffff;
2094 var54.x4[0] = (orc_uint8) var53.x4[0];
2095 var54.x4[1] = (orc_uint8) var53.x4[1];
2096 var54.x4[2] = (orc_uint8) var53.x4[2];
2097 var54.x4[3] = (orc_uint8) var53.x4[3];
2099 var55.x4[0] = var54.x4[0] - var50.x4[0];
2100 var55.x4[1] = var54.x4[1] - var50.x4[1];
2101 var55.x4[2] = var54.x4[2] - var50.x4[2];
2102 var55.x4[3] = var54.x4[3] - var50.x4[3];
2111 ((((orc_uint32) var58) & 0xff) << 24) | ((((orc_uint32) var58) & 0xff)
2112 << 16) | ((((orc_uint32) var58) & 0xff) << 8) | (((orc_uint32) var58)
2115 var60.x4[0] = (orc_uint8) var59.x4[0];
2116 var60.x4[1] = (orc_uint8) var59.x4[1];
2117 var60.x4[2] = (orc_uint8) var59.x4[2];
2118 var60.x4[3] = (orc_uint8) var59.x4[3];
2120 var61.x4[0] = (var60.x4[0] * var55.x4[0]) & 0xffff;
2121 var61.x4[1] = (var60.x4[1] * var55.x4[1]) & 0xffff;
2122 var61.x4[2] = (var60.x4[2] * var55.x4[2]) & 0xffff;
2123 var61.x4[3] = (var60.x4[3] * var55.x4[3]) & 0xffff;
2126 ((orc_uint16) (((orc_uint16) (var61.x4[0] + 128)) +
2127 (((orc_uint16) (var61.x4[0] + 128)) >> 8))) >> 8;
2129 ((orc_uint16) (((orc_uint16) (var61.x4[1] + 128)) +
2130 (((orc_uint16) (var61.x4[1] + 128)) >> 8))) >> 8;
2132 ((orc_uint16) (((orc_uint16) (var61.x4[2] + 128)) +
2133 (((orc_uint16) (var61.x4[2] + 128)) >> 8))) >> 8;
2135 ((orc_uint16) (((orc_uint16) (var61.x4[3] + 128)) +
2136 (((orc_uint16) (var61.x4[3] + 128)) >> 8))) >> 8;
2138 var63.x4[0] = (orc_uint8) var56.x4[0];
2139 var63.x4[1] = (orc_uint8) var56.x4[1];
2140 var63.x4[2] = (orc_uint8) var56.x4[2];
2141 var63.x4[3] = (orc_uint8) var56.x4[3];
2143 var64.x4[0] = (var63.x4[0] * var62.x4[0]) & 0xffff;
2144 var64.x4[1] = (var63.x4[1] * var62.x4[1]) & 0xffff;
2145 var64.x4[2] = (var63.x4[2] * var62.x4[2]) & 0xffff;
2146 var64.x4[3] = (var63.x4[3] * var62.x4[3]) & 0xffff;
2148 var65.x4[0] = var64.x4[0] + var52.x4[0];
2149 var65.x4[1] = var64.x4[1] + var52.x4[1];
2150 var65.x4[2] = var64.x4[2] + var52.x4[2];
2151 var65.x4[3] = var64.x4[3] + var52.x4[3];
2153 var66.x4[0] = var62.x4[0] + var50.x4[0];
2154 var66.x4[1] = var62.x4[1] + var50.x4[1];
2155 var66.x4[2] = var62.x4[2] + var50.x4[2];
2156 var66.x4[3] = var62.x4[3] + var50.x4[3];
2159 ((var66.x4[0] & 0xff) ==
2160 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var65.x4[0]) /
2161 ((orc_uint16) var66.x4[0] & 0xff));
2163 ((var66.x4[1] & 0xff) ==
2164 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var65.x4[1]) /
2165 ((orc_uint16) var66.x4[1] & 0xff));
2167 ((var66.x4[2] & 0xff) ==
2168 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var65.x4[2]) /
2169 ((orc_uint16) var66.x4[2] & 0xff));
2171 ((var66.x4[3] & 0xff) ==
2172 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var65.x4[3]) /
2173 ((orc_uint16) var66.x4[3] & 0xff));
2175 var68.x4[0] = var67.x4[0];
2176 var68.x4[1] = var67.x4[1];
2177 var68.x4[2] = var67.x4[2];
2178 var68.x4[3] = var67.x4[3];
2180 var69.i = var68.i & var42.i;
2182 var70.x4[0] = var66.x4[0];
2183 var70.x4[1] = var66.x4[1];
2184 var70.x4[2] = var66.x4[2];
2185 var70.x4[3] = var66.x4[3];
2187 var71.i = var70.i & var43.i;
2189 var72.i = var69.i | var71.i;
2199 _backup_compositor_orc_overlay_argb (OrcExecutor * ORC_RESTRICT ex)
2204 int m = ex->params[ORC_VAR_A1];
2205 orc_union32 *ORC_RESTRICT ptr0;
2206 const orc_union32 *ORC_RESTRICT ptr4;
2208 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
2209 volatile orc_union32 var42;
2213 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
2214 volatile orc_union32 var43;
2248 for (j = 0; j < m; j++) {
2249 ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
2250 ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
2253 var41.x4[0] = ex->params[24];
2254 var41.x4[1] = ex->params[24];
2255 var41.x4[2] = ex->params[24];
2256 var41.x4[3] = ex->params[24];
2258 var53.i = 0xffffffff; /* -1 or 2.122e-314f */
2260 var42.i = 0xffffff00; /* -256 or 2.122e-314f */
2262 var43.i = 0x000000ff; /* 255 or 1.25987e-321f */
2264 for (i = 0; i < n; i++) {
2273 ((((orc_uint32) var46) & 0xff) << 24) | ((((orc_uint32) var46) & 0xff)
2274 << 16) | ((((orc_uint32) var46) & 0xff) << 8) | (((orc_uint32) var46)
2277 var48.x4[0] = (orc_uint8) var47.x4[0];
2278 var48.x4[1] = (orc_uint8) var47.x4[1];
2279 var48.x4[2] = (orc_uint8) var47.x4[2];
2280 var48.x4[3] = (orc_uint8) var47.x4[3];
2282 var49.x4[0] = (var48.x4[0] * var41.x4[0]) & 0xffff;
2283 var49.x4[1] = (var48.x4[1] * var41.x4[1]) & 0xffff;
2284 var49.x4[2] = (var48.x4[2] * var41.x4[2]) & 0xffff;
2285 var49.x4[3] = (var48.x4[3] * var41.x4[3]) & 0xffff;
2288 ((orc_uint16) (((orc_uint16) (var49.x4[0] + 128)) +
2289 (((orc_uint16) (var49.x4[0] + 128)) >> 8))) >> 8;
2291 ((orc_uint16) (((orc_uint16) (var49.x4[1] + 128)) +
2292 (((orc_uint16) (var49.x4[1] + 128)) >> 8))) >> 8;
2294 ((orc_uint16) (((orc_uint16) (var49.x4[2] + 128)) +
2295 (((orc_uint16) (var49.x4[2] + 128)) >> 8))) >> 8;
2297 ((orc_uint16) (((orc_uint16) (var49.x4[3] + 128)) +
2298 (((orc_uint16) (var49.x4[3] + 128)) >> 8))) >> 8;
2300 var51.x4[0] = (orc_uint8) var44.x4[0];
2301 var51.x4[1] = (orc_uint8) var44.x4[1];
2302 var51.x4[2] = (orc_uint8) var44.x4[2];
2303 var51.x4[3] = (orc_uint8) var44.x4[3];
2305 var52.x4[0] = (var51.x4[0] * var50.x4[0]) & 0xffff;
2306 var52.x4[1] = (var51.x4[1] * var50.x4[1]) & 0xffff;
2307 var52.x4[2] = (var51.x4[2] * var50.x4[2]) & 0xffff;
2308 var52.x4[3] = (var51.x4[3] * var50.x4[3]) & 0xffff;
2310 var54.x4[0] = (orc_uint8) var53.x4[0];
2311 var54.x4[1] = (orc_uint8) var53.x4[1];
2312 var54.x4[2] = (orc_uint8) var53.x4[2];
2313 var54.x4[3] = (orc_uint8) var53.x4[3];
2315 var55.x4[0] = var54.x4[0] - var50.x4[0];
2316 var55.x4[1] = var54.x4[1] - var50.x4[1];
2317 var55.x4[2] = var54.x4[2] - var50.x4[2];
2318 var55.x4[3] = var54.x4[3] - var50.x4[3];
2327 ((((orc_uint32) var58) & 0xff) << 24) | ((((orc_uint32) var58) & 0xff)
2328 << 16) | ((((orc_uint32) var58) & 0xff) << 8) | (((orc_uint32) var58)
2331 var60.x4[0] = (orc_uint8) var59.x4[0];
2332 var60.x4[1] = (orc_uint8) var59.x4[1];
2333 var60.x4[2] = (orc_uint8) var59.x4[2];
2334 var60.x4[3] = (orc_uint8) var59.x4[3];
2336 var61.x4[0] = (var60.x4[0] * var55.x4[0]) & 0xffff;
2337 var61.x4[1] = (var60.x4[1] * var55.x4[1]) & 0xffff;
2338 var61.x4[2] = (var60.x4[2] * var55.x4[2]) & 0xffff;
2339 var61.x4[3] = (var60.x4[3] * var55.x4[3]) & 0xffff;
2342 ((orc_uint16) (((orc_uint16) (var61.x4[0] + 128)) +
2343 (((orc_uint16) (var61.x4[0] + 128)) >> 8))) >> 8;
2345 ((orc_uint16) (((orc_uint16) (var61.x4[1] + 128)) +
2346 (((orc_uint16) (var61.x4[1] + 128)) >> 8))) >> 8;
2348 ((orc_uint16) (((orc_uint16) (var61.x4[2] + 128)) +
2349 (((orc_uint16) (var61.x4[2] + 128)) >> 8))) >> 8;
2351 ((orc_uint16) (((orc_uint16) (var61.x4[3] + 128)) +
2352 (((orc_uint16) (var61.x4[3] + 128)) >> 8))) >> 8;
2354 var63.x4[0] = (orc_uint8) var56.x4[0];
2355 var63.x4[1] = (orc_uint8) var56.x4[1];
2356 var63.x4[2] = (orc_uint8) var56.x4[2];
2357 var63.x4[3] = (orc_uint8) var56.x4[3];
2359 var64.x4[0] = (var63.x4[0] * var62.x4[0]) & 0xffff;
2360 var64.x4[1] = (var63.x4[1] * var62.x4[1]) & 0xffff;
2361 var64.x4[2] = (var63.x4[2] * var62.x4[2]) & 0xffff;
2362 var64.x4[3] = (var63.x4[3] * var62.x4[3]) & 0xffff;
2364 var65.x4[0] = var64.x4[0] + var52.x4[0];
2365 var65.x4[1] = var64.x4[1] + var52.x4[1];
2366 var65.x4[2] = var64.x4[2] + var52.x4[2];
2367 var65.x4[3] = var64.x4[3] + var52.x4[3];
2369 var66.x4[0] = var62.x4[0] + var50.x4[0];
2370 var66.x4[1] = var62.x4[1] + var50.x4[1];
2371 var66.x4[2] = var62.x4[2] + var50.x4[2];
2372 var66.x4[3] = var62.x4[3] + var50.x4[3];
2375 ((var66.x4[0] & 0xff) ==
2376 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var65.x4[0]) /
2377 ((orc_uint16) var66.x4[0] & 0xff));
2379 ((var66.x4[1] & 0xff) ==
2380 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var65.x4[1]) /
2381 ((orc_uint16) var66.x4[1] & 0xff));
2383 ((var66.x4[2] & 0xff) ==
2384 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var65.x4[2]) /
2385 ((orc_uint16) var66.x4[2] & 0xff));
2387 ((var66.x4[3] & 0xff) ==
2388 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var65.x4[3]) /
2389 ((orc_uint16) var66.x4[3] & 0xff));
2391 var68.x4[0] = var67.x4[0];
2392 var68.x4[1] = var67.x4[1];
2393 var68.x4[2] = var67.x4[2];
2394 var68.x4[3] = var67.x4[3];
2396 var69.i = var68.i & var42.i;
2398 var70.x4[0] = var66.x4[0];
2399 var70.x4[1] = var66.x4[1];
2400 var70.x4[2] = var66.x4[2];
2401 var70.x4[3] = var66.x4[3];
2403 var71.i = var70.i & var43.i;
2405 var72.i = var69.i | var71.i;
2414 compositor_orc_overlay_argb (guint8 * ORC_RESTRICT d1, int d1_stride,
2415 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
2417 OrcExecutor _ex, *ex = &_ex;
2418 static volatile int p_inited = 0;
2419 static OrcCode *c = 0;
2420 void (*func) (OrcExecutor *);
2423 orc_once_mutex_lock ();
2428 static const orc_uint8 bc[] = {
2429 1, 7, 9, 27, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111,
2430 114, 99, 95, 111, 118, 101, 114, 108, 97, 121, 95, 97, 114, 103, 98, 11,
2431 4, 4, 12, 4, 4, 14, 4, 255, 255, 255, 255, 14, 4, 255, 0, 0,
2432 0, 14, 4, 0, 255, 255, 255, 16, 2, 20, 4, 20, 2, 20, 1, 20,
2433 8, 20, 8, 20, 8, 20, 4, 20, 8, 20, 8, 113, 32, 4, 163, 33,
2434 32, 157, 34, 33, 152, 38, 34, 21, 2, 150, 35, 38, 21, 2, 89, 35,
2435 35, 24, 21, 2, 80, 35, 35, 21, 2, 150, 40, 32, 21, 2, 89, 40,
2436 40, 35, 115, 38, 16, 21, 2, 150, 36, 38, 21, 2, 98, 36, 36, 35,
2437 113, 32, 0, 163, 33, 32, 157, 34, 33, 152, 38, 34, 21, 2, 150, 37,
2438 38, 21, 2, 89, 37, 37, 36, 21, 2, 80, 37, 37, 21, 2, 150, 39,
2439 32, 21, 2, 89, 39, 39, 37, 21, 2, 70, 39, 39, 40, 21, 2, 70,
2440 37, 37, 35, 21, 2, 81, 39, 39, 37, 21, 2, 157, 32, 39, 106, 32,
2441 32, 18, 21, 2, 157, 38, 37, 106, 38, 38, 17, 123, 32, 32, 38, 128,
2444 p = orc_program_new_from_static_bytecode (bc);
2445 orc_program_set_backup_function (p, _backup_compositor_orc_overlay_argb);
2447 p = orc_program_new ();
2448 orc_program_set_2d (p);
2449 orc_program_set_name (p, "compositor_orc_overlay_argb");
2450 orc_program_set_backup_function (p, _backup_compositor_orc_overlay_argb);
2451 orc_program_add_destination (p, 4, "d1");
2452 orc_program_add_source (p, 4, "s1");
2453 orc_program_add_constant (p, 4, 0xffffffff, "c1");
2454 orc_program_add_constant (p, 4, 0x000000ff, "c2");
2455 orc_program_add_constant (p, 4, 0xffffff00, "c3");
2456 orc_program_add_parameter (p, 2, "p1");
2457 orc_program_add_temporary (p, 4, "t1");
2458 orc_program_add_temporary (p, 2, "t2");
2459 orc_program_add_temporary (p, 1, "t3");
2460 orc_program_add_temporary (p, 8, "t4");
2461 orc_program_add_temporary (p, 8, "t5");
2462 orc_program_add_temporary (p, 8, "t6");
2463 orc_program_add_temporary (p, 4, "t7");
2464 orc_program_add_temporary (p, 8, "t8");
2465 orc_program_add_temporary (p, 8, "t9");
2467 orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
2469 orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1,
2471 orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1,
2473 orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T7, ORC_VAR_T3, ORC_VAR_D1,
2475 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T4, ORC_VAR_T7, ORC_VAR_D1,
2477 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_P1,
2479 orc_program_append_2 (p, "div255w", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_D1,
2481 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T9, ORC_VAR_T1, ORC_VAR_D1,
2483 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T4,
2485 orc_program_append_2 (p, "loadpl", 0, ORC_VAR_T7, ORC_VAR_C1, ORC_VAR_D1,
2487 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T7, ORC_VAR_D1,
2489 orc_program_append_2 (p, "subw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4,
2491 orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1,
2493 orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1,
2495 orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1,
2497 orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T7, ORC_VAR_T3, ORC_VAR_D1,
2499 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T7, ORC_VAR_D1,
2501 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T5,
2503 orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1,
2505 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T8, ORC_VAR_T1, ORC_VAR_D1,
2507 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T6,
2509 orc_program_append_2 (p, "addw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T9,
2511 orc_program_append_2 (p, "addw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T4,
2513 orc_program_append_2 (p, "divluw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T6,
2515 orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_D1,
2517 orc_program_append_2 (p, "andl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C3,
2519 orc_program_append_2 (p, "convwb", 2, ORC_VAR_T7, ORC_VAR_T6, ORC_VAR_D1,
2521 orc_program_append_2 (p, "andl", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2,
2523 orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T7,
2525 orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
2529 orc_program_compile (p);
2530 c = orc_program_take_code (p);
2531 orc_program_free (p);
2534 orc_once_mutex_unlock ();
2536 ex->arrays[ORC_VAR_A2] = c;
2540 ORC_EXECUTOR_M (ex) = m;
2541 ex->arrays[ORC_VAR_D1] = d1;
2542 ex->params[ORC_VAR_D1] = d1_stride;
2543 ex->arrays[ORC_VAR_S1] = (void *) s1;
2544 ex->params[ORC_VAR_S1] = s1_stride;
2545 ex->params[ORC_VAR_P1] = p1;
2553 /* compositor_orc_overlay_argb_addition */
2556 compositor_orc_overlay_argb_addition (guint8 * ORC_RESTRICT d1, int d1_stride,
2557 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
2561 orc_union32 *ORC_RESTRICT ptr0;
2562 const orc_union32 *ORC_RESTRICT ptr4;
2564 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
2565 volatile orc_union32 var43;
2569 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
2570 volatile orc_union32 var44;
2610 for (j = 0; j < m; j++) {
2611 ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
2612 ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
2620 var54.i = 0xffffffff; /* -1 or 2.122e-314f */
2622 var43.i = 0xffffff00; /* -256 or 2.122e-314f */
2624 var44.i = 0x000000ff; /* 255 or 1.25987e-321f */
2626 for (i = 0; i < n; i++) {
2635 ((((orc_uint32) var47) & 0xff) << 24) | ((((orc_uint32) var47) & 0xff)
2636 << 16) | ((((orc_uint32) var47) & 0xff) << 8) | (((orc_uint32) var47)
2639 var49.x4[0] = (orc_uint8) var48.x4[0];
2640 var49.x4[1] = (orc_uint8) var48.x4[1];
2641 var49.x4[2] = (orc_uint8) var48.x4[2];
2642 var49.x4[3] = (orc_uint8) var48.x4[3];
2644 var50.x4[0] = (var49.x4[0] * var42.x4[0]) & 0xffff;
2645 var50.x4[1] = (var49.x4[1] * var42.x4[1]) & 0xffff;
2646 var50.x4[2] = (var49.x4[2] * var42.x4[2]) & 0xffff;
2647 var50.x4[3] = (var49.x4[3] * var42.x4[3]) & 0xffff;
2650 ((orc_uint16) (((orc_uint16) (var50.x4[0] + 128)) +
2651 (((orc_uint16) (var50.x4[0] + 128)) >> 8))) >> 8;
2653 ((orc_uint16) (((orc_uint16) (var50.x4[1] + 128)) +
2654 (((orc_uint16) (var50.x4[1] + 128)) >> 8))) >> 8;
2656 ((orc_uint16) (((orc_uint16) (var50.x4[2] + 128)) +
2657 (((orc_uint16) (var50.x4[2] + 128)) >> 8))) >> 8;
2659 ((orc_uint16) (((orc_uint16) (var50.x4[3] + 128)) +
2660 (((orc_uint16) (var50.x4[3] + 128)) >> 8))) >> 8;
2662 var52.x4[0] = (orc_uint8) var45.x4[0];
2663 var52.x4[1] = (orc_uint8) var45.x4[1];
2664 var52.x4[2] = (orc_uint8) var45.x4[2];
2665 var52.x4[3] = (orc_uint8) var45.x4[3];
2667 var53.x4[0] = (var52.x4[0] * var51.x4[0]) & 0xffff;
2668 var53.x4[1] = (var52.x4[1] * var51.x4[1]) & 0xffff;
2669 var53.x4[2] = (var52.x4[2] * var51.x4[2]) & 0xffff;
2670 var53.x4[3] = (var52.x4[3] * var51.x4[3]) & 0xffff;
2672 var55.x4[0] = (orc_uint8) var54.x4[0];
2673 var55.x4[1] = (orc_uint8) var54.x4[1];
2674 var55.x4[2] = (orc_uint8) var54.x4[2];
2675 var55.x4[3] = (orc_uint8) var54.x4[3];
2677 var56.x4[0] = var55.x4[0] - var51.x4[0];
2678 var56.x4[1] = var55.x4[1] - var51.x4[1];
2679 var56.x4[2] = var55.x4[2] - var51.x4[2];
2680 var56.x4[3] = var55.x4[3] - var51.x4[3];
2689 ((((orc_uint32) var59) & 0xff) << 24) | ((((orc_uint32) var59) & 0xff)
2690 << 16) | ((((orc_uint32) var59) & 0xff) << 8) | (((orc_uint32) var59)
2693 var61.x4[0] = (orc_uint8) var60.x4[0];
2694 var61.x4[1] = (orc_uint8) var60.x4[1];
2695 var61.x4[2] = (orc_uint8) var60.x4[2];
2696 var61.x4[3] = (orc_uint8) var60.x4[3];
2698 var62.x4[0] = (var61.x4[0] * var56.x4[0]) & 0xffff;
2699 var62.x4[1] = (var61.x4[1] * var56.x4[1]) & 0xffff;
2700 var62.x4[2] = (var61.x4[2] * var56.x4[2]) & 0xffff;
2701 var62.x4[3] = (var61.x4[3] * var56.x4[3]) & 0xffff;
2704 ((orc_uint16) (((orc_uint16) (var62.x4[0] + 128)) +
2705 (((orc_uint16) (var62.x4[0] + 128)) >> 8))) >> 8;
2707 ((orc_uint16) (((orc_uint16) (var62.x4[1] + 128)) +
2708 (((orc_uint16) (var62.x4[1] + 128)) >> 8))) >> 8;
2710 ((orc_uint16) (((orc_uint16) (var62.x4[2] + 128)) +
2711 (((orc_uint16) (var62.x4[2] + 128)) >> 8))) >> 8;
2713 ((orc_uint16) (((orc_uint16) (var62.x4[3] + 128)) +
2714 (((orc_uint16) (var62.x4[3] + 128)) >> 8))) >> 8;
2716 var64.x4[0] = (orc_uint8) var57.x4[0];
2717 var64.x4[1] = (orc_uint8) var57.x4[1];
2718 var64.x4[2] = (orc_uint8) var57.x4[2];
2719 var64.x4[3] = (orc_uint8) var57.x4[3];
2721 var65.x4[0] = (var64.x4[0] * var63.x4[0]) & 0xffff;
2722 var65.x4[1] = (var64.x4[1] * var63.x4[1]) & 0xffff;
2723 var65.x4[2] = (var64.x4[2] * var63.x4[2]) & 0xffff;
2724 var65.x4[3] = (var64.x4[3] * var63.x4[3]) & 0xffff;
2726 var66.x4[0] = var65.x4[0] + var53.x4[0];
2727 var66.x4[1] = var65.x4[1] + var53.x4[1];
2728 var66.x4[2] = var65.x4[2] + var53.x4[2];
2729 var66.x4[3] = var65.x4[3] + var53.x4[3];
2731 var67.x4[0] = var63.x4[0] + var51.x4[0];
2732 var67.x4[1] = var63.x4[1] + var51.x4[1];
2733 var67.x4[2] = var63.x4[2] + var51.x4[2];
2734 var67.x4[3] = var63.x4[3] + var51.x4[3];
2737 ((var67.x4[0] & 0xff) ==
2738 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var66.x4[0]) /
2739 ((orc_uint16) var67.x4[0] & 0xff));
2741 ((var67.x4[1] & 0xff) ==
2742 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var66.x4[1]) /
2743 ((orc_uint16) var67.x4[1] & 0xff));
2745 ((var67.x4[2] & 0xff) ==
2746 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var66.x4[2]) /
2747 ((orc_uint16) var67.x4[2] & 0xff));
2749 ((var67.x4[3] & 0xff) ==
2750 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var66.x4[3]) /
2751 ((orc_uint16) var67.x4[3] & 0xff));
2760 ((((orc_uint32) var71) & 0xff) << 24) | ((((orc_uint32) var71) & 0xff)
2761 << 16) | ((((orc_uint32) var71) & 0xff) << 8) | (((orc_uint32) var71)
2764 var73.x4[0] = (orc_uint8) var72.x4[0];
2765 var73.x4[1] = (orc_uint8) var72.x4[1];
2766 var73.x4[2] = (orc_uint8) var72.x4[2];
2767 var73.x4[3] = (orc_uint8) var72.x4[3];
2769 var74.x4[0] = var73.x4[0] + var51.x4[0];
2770 var74.x4[1] = var73.x4[1] + var51.x4[1];
2771 var74.x4[2] = var73.x4[2] + var51.x4[2];
2772 var74.x4[3] = var73.x4[3] + var51.x4[3];
2774 var75.x4[0] = var68.x4[0];
2775 var75.x4[1] = var68.x4[1];
2776 var75.x4[2] = var68.x4[2];
2777 var75.x4[3] = var68.x4[3];
2779 var76.i = var75.i & var43.i;
2781 var77.x4[0] = var74.x4[0];
2782 var77.x4[1] = var74.x4[1];
2783 var77.x4[2] = var74.x4[2];
2784 var77.x4[3] = var74.x4[3];
2786 var78.i = var77.i & var44.i;
2788 var79.i = var76.i | var78.i;
2798 _backup_compositor_orc_overlay_argb_addition (OrcExecutor * ORC_RESTRICT ex)
2803 int m = ex->params[ORC_VAR_A1];
2804 orc_union32 *ORC_RESTRICT ptr0;
2805 const orc_union32 *ORC_RESTRICT ptr4;
2807 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
2808 volatile orc_union32 var43;
2812 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
2813 volatile orc_union32 var44;
2853 for (j = 0; j < m; j++) {
2854 ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
2855 ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
2858 var42.x4[0] = ex->params[24];
2859 var42.x4[1] = ex->params[24];
2860 var42.x4[2] = ex->params[24];
2861 var42.x4[3] = ex->params[24];
2863 var54.i = 0xffffffff; /* -1 or 2.122e-314f */
2865 var43.i = 0xffffff00; /* -256 or 2.122e-314f */
2867 var44.i = 0x000000ff; /* 255 or 1.25987e-321f */
2869 for (i = 0; i < n; i++) {
2878 ((((orc_uint32) var47) & 0xff) << 24) | ((((orc_uint32) var47) & 0xff)
2879 << 16) | ((((orc_uint32) var47) & 0xff) << 8) | (((orc_uint32) var47)
2882 var49.x4[0] = (orc_uint8) var48.x4[0];
2883 var49.x4[1] = (orc_uint8) var48.x4[1];
2884 var49.x4[2] = (orc_uint8) var48.x4[2];
2885 var49.x4[3] = (orc_uint8) var48.x4[3];
2887 var50.x4[0] = (var49.x4[0] * var42.x4[0]) & 0xffff;
2888 var50.x4[1] = (var49.x4[1] * var42.x4[1]) & 0xffff;
2889 var50.x4[2] = (var49.x4[2] * var42.x4[2]) & 0xffff;
2890 var50.x4[3] = (var49.x4[3] * var42.x4[3]) & 0xffff;
2893 ((orc_uint16) (((orc_uint16) (var50.x4[0] + 128)) +
2894 (((orc_uint16) (var50.x4[0] + 128)) >> 8))) >> 8;
2896 ((orc_uint16) (((orc_uint16) (var50.x4[1] + 128)) +
2897 (((orc_uint16) (var50.x4[1] + 128)) >> 8))) >> 8;
2899 ((orc_uint16) (((orc_uint16) (var50.x4[2] + 128)) +
2900 (((orc_uint16) (var50.x4[2] + 128)) >> 8))) >> 8;
2902 ((orc_uint16) (((orc_uint16) (var50.x4[3] + 128)) +
2903 (((orc_uint16) (var50.x4[3] + 128)) >> 8))) >> 8;
2905 var52.x4[0] = (orc_uint8) var45.x4[0];
2906 var52.x4[1] = (orc_uint8) var45.x4[1];
2907 var52.x4[2] = (orc_uint8) var45.x4[2];
2908 var52.x4[3] = (orc_uint8) var45.x4[3];
2910 var53.x4[0] = (var52.x4[0] * var51.x4[0]) & 0xffff;
2911 var53.x4[1] = (var52.x4[1] * var51.x4[1]) & 0xffff;
2912 var53.x4[2] = (var52.x4[2] * var51.x4[2]) & 0xffff;
2913 var53.x4[3] = (var52.x4[3] * var51.x4[3]) & 0xffff;
2915 var55.x4[0] = (orc_uint8) var54.x4[0];
2916 var55.x4[1] = (orc_uint8) var54.x4[1];
2917 var55.x4[2] = (orc_uint8) var54.x4[2];
2918 var55.x4[3] = (orc_uint8) var54.x4[3];
2920 var56.x4[0] = var55.x4[0] - var51.x4[0];
2921 var56.x4[1] = var55.x4[1] - var51.x4[1];
2922 var56.x4[2] = var55.x4[2] - var51.x4[2];
2923 var56.x4[3] = var55.x4[3] - var51.x4[3];
2932 ((((orc_uint32) var59) & 0xff) << 24) | ((((orc_uint32) var59) & 0xff)
2933 << 16) | ((((orc_uint32) var59) & 0xff) << 8) | (((orc_uint32) var59)
2936 var61.x4[0] = (orc_uint8) var60.x4[0];
2937 var61.x4[1] = (orc_uint8) var60.x4[1];
2938 var61.x4[2] = (orc_uint8) var60.x4[2];
2939 var61.x4[3] = (orc_uint8) var60.x4[3];
2941 var62.x4[0] = (var61.x4[0] * var56.x4[0]) & 0xffff;
2942 var62.x4[1] = (var61.x4[1] * var56.x4[1]) & 0xffff;
2943 var62.x4[2] = (var61.x4[2] * var56.x4[2]) & 0xffff;
2944 var62.x4[3] = (var61.x4[3] * var56.x4[3]) & 0xffff;
2947 ((orc_uint16) (((orc_uint16) (var62.x4[0] + 128)) +
2948 (((orc_uint16) (var62.x4[0] + 128)) >> 8))) >> 8;
2950 ((orc_uint16) (((orc_uint16) (var62.x4[1] + 128)) +
2951 (((orc_uint16) (var62.x4[1] + 128)) >> 8))) >> 8;
2953 ((orc_uint16) (((orc_uint16) (var62.x4[2] + 128)) +
2954 (((orc_uint16) (var62.x4[2] + 128)) >> 8))) >> 8;
2956 ((orc_uint16) (((orc_uint16) (var62.x4[3] + 128)) +
2957 (((orc_uint16) (var62.x4[3] + 128)) >> 8))) >> 8;
2959 var64.x4[0] = (orc_uint8) var57.x4[0];
2960 var64.x4[1] = (orc_uint8) var57.x4[1];
2961 var64.x4[2] = (orc_uint8) var57.x4[2];
2962 var64.x4[3] = (orc_uint8) var57.x4[3];
2964 var65.x4[0] = (var64.x4[0] * var63.x4[0]) & 0xffff;
2965 var65.x4[1] = (var64.x4[1] * var63.x4[1]) & 0xffff;
2966 var65.x4[2] = (var64.x4[2] * var63.x4[2]) & 0xffff;
2967 var65.x4[3] = (var64.x4[3] * var63.x4[3]) & 0xffff;
2969 var66.x4[0] = var65.x4[0] + var53.x4[0];
2970 var66.x4[1] = var65.x4[1] + var53.x4[1];
2971 var66.x4[2] = var65.x4[2] + var53.x4[2];
2972 var66.x4[3] = var65.x4[3] + var53.x4[3];
2974 var67.x4[0] = var63.x4[0] + var51.x4[0];
2975 var67.x4[1] = var63.x4[1] + var51.x4[1];
2976 var67.x4[2] = var63.x4[2] + var51.x4[2];
2977 var67.x4[3] = var63.x4[3] + var51.x4[3];
2980 ((var67.x4[0] & 0xff) ==
2981 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var66.x4[0]) /
2982 ((orc_uint16) var67.x4[0] & 0xff));
2984 ((var67.x4[1] & 0xff) ==
2985 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var66.x4[1]) /
2986 ((orc_uint16) var67.x4[1] & 0xff));
2988 ((var67.x4[2] & 0xff) ==
2989 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var66.x4[2]) /
2990 ((orc_uint16) var67.x4[2] & 0xff));
2992 ((var67.x4[3] & 0xff) ==
2993 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var66.x4[3]) /
2994 ((orc_uint16) var67.x4[3] & 0xff));
3003 ((((orc_uint32) var71) & 0xff) << 24) | ((((orc_uint32) var71) & 0xff)
3004 << 16) | ((((orc_uint32) var71) & 0xff) << 8) | (((orc_uint32) var71)
3007 var73.x4[0] = (orc_uint8) var72.x4[0];
3008 var73.x4[1] = (orc_uint8) var72.x4[1];
3009 var73.x4[2] = (orc_uint8) var72.x4[2];
3010 var73.x4[3] = (orc_uint8) var72.x4[3];
3012 var74.x4[0] = var73.x4[0] + var51.x4[0];
3013 var74.x4[1] = var73.x4[1] + var51.x4[1];
3014 var74.x4[2] = var73.x4[2] + var51.x4[2];
3015 var74.x4[3] = var73.x4[3] + var51.x4[3];
3017 var75.x4[0] = var68.x4[0];
3018 var75.x4[1] = var68.x4[1];
3019 var75.x4[2] = var68.x4[2];
3020 var75.x4[3] = var68.x4[3];
3022 var76.i = var75.i & var43.i;
3024 var77.x4[0] = var74.x4[0];
3025 var77.x4[1] = var74.x4[1];
3026 var77.x4[2] = var74.x4[2];
3027 var77.x4[3] = var74.x4[3];
3029 var78.i = var77.i & var44.i;
3031 var79.i = var76.i | var78.i;
3040 compositor_orc_overlay_argb_addition (guint8 * ORC_RESTRICT d1, int d1_stride,
3041 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
3043 OrcExecutor _ex, *ex = &_ex;
3044 static volatile int p_inited = 0;
3045 static OrcCode *c = 0;
3046 void (*func) (OrcExecutor *);
3049 orc_once_mutex_lock ();
3054 static const orc_uint8 bc[] = {
3055 1, 7, 9, 36, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111,
3056 114, 99, 95, 111, 118, 101, 114, 108, 97, 121, 95, 97, 114, 103, 98, 95,
3057 97, 100, 100, 105, 116, 105, 111, 110, 11, 4, 4, 12, 4, 4, 14, 4,
3058 255, 255, 255, 255, 14, 4, 255, 0, 0, 0, 14, 4, 0, 255, 255, 255,
3059 16, 2, 20, 4, 20, 2, 20, 1, 20, 8, 20, 8, 20, 8, 20, 8,
3060 20, 4, 20, 8, 20, 8, 113, 32, 4, 163, 33, 32, 157, 34, 33, 152,
3061 39, 34, 21, 2, 150, 35, 39, 21, 2, 89, 35, 35, 24, 21, 2, 80,
3062 35, 35, 21, 2, 150, 41, 32, 21, 2, 89, 41, 41, 35, 115, 39, 16,
3063 21, 2, 150, 36, 39, 21, 2, 98, 36, 36, 35, 113, 32, 0, 163, 33,
3064 32, 157, 34, 33, 152, 39, 34, 21, 2, 150, 37, 39, 21, 2, 89, 37,
3065 37, 36, 21, 2, 80, 37, 37, 21, 2, 150, 40, 32, 21, 2, 89, 40,
3066 40, 37, 21, 2, 70, 40, 40, 41, 21, 2, 70, 37, 37, 35, 21, 2,
3067 81, 40, 40, 37, 113, 32, 0, 163, 33, 32, 157, 34, 33, 152, 39, 34,
3068 21, 2, 150, 38, 39, 21, 2, 70, 38, 38, 35, 21, 2, 157, 32, 40,
3069 106, 32, 32, 18, 21, 2, 157, 39, 38, 106, 39, 39, 17, 123, 32, 32,
3070 39, 128, 0, 32, 2, 0,
3072 p = orc_program_new_from_static_bytecode (bc);
3073 orc_program_set_backup_function (p,
3074 _backup_compositor_orc_overlay_argb_addition);
3076 p = orc_program_new ();
3077 orc_program_set_2d (p);
3078 orc_program_set_name (p, "compositor_orc_overlay_argb_addition");
3079 orc_program_set_backup_function (p,
3080 _backup_compositor_orc_overlay_argb_addition);
3081 orc_program_add_destination (p, 4, "d1");
3082 orc_program_add_source (p, 4, "s1");
3083 orc_program_add_constant (p, 4, 0xffffffff, "c1");
3084 orc_program_add_constant (p, 4, 0x000000ff, "c2");
3085 orc_program_add_constant (p, 4, 0xffffff00, "c3");
3086 orc_program_add_parameter (p, 2, "p1");
3087 orc_program_add_temporary (p, 4, "t1");
3088 orc_program_add_temporary (p, 2, "t2");
3089 orc_program_add_temporary (p, 1, "t3");
3090 orc_program_add_temporary (p, 8, "t4");
3091 orc_program_add_temporary (p, 8, "t5");
3092 orc_program_add_temporary (p, 8, "t6");
3093 orc_program_add_temporary (p, 8, "t7");
3094 orc_program_add_temporary (p, 4, "t8");
3095 orc_program_add_temporary (p, 8, "t9");
3096 orc_program_add_temporary (p, 8, "t10");
3098 orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
3100 orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1,
3102 orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1,
3104 orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T8, ORC_VAR_T3, ORC_VAR_D1,
3106 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T4, ORC_VAR_T8, ORC_VAR_D1,
3108 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_P1,
3110 orc_program_append_2 (p, "div255w", 2, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_D1,
3112 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T10, ORC_VAR_T1,
3113 ORC_VAR_D1, ORC_VAR_D1);
3114 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T10, ORC_VAR_T10, ORC_VAR_T4,
3116 orc_program_append_2 (p, "loadpl", 0, ORC_VAR_T8, ORC_VAR_C1, ORC_VAR_D1,
3118 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T8, ORC_VAR_D1,
3120 orc_program_append_2 (p, "subw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4,
3122 orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1,
3124 orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1,
3126 orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1,
3128 orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T8, ORC_VAR_T3, ORC_VAR_D1,
3130 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T8, ORC_VAR_D1,
3132 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T5,
3134 orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1,
3136 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T9, ORC_VAR_T1, ORC_VAR_D1,
3138 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T6,
3140 orc_program_append_2 (p, "addw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T10,
3142 orc_program_append_2 (p, "addw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T4,
3144 orc_program_append_2 (p, "divluw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T6,
3146 orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1,
3148 orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1,
3150 orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1,
3152 orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T8, ORC_VAR_T3, ORC_VAR_D1,
3154 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T8, ORC_VAR_D1,
3156 orc_program_append_2 (p, "addw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T4,
3158 orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_D1,
3160 orc_program_append_2 (p, "andl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C3,
3162 orc_program_append_2 (p, "convwb", 2, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_D1,
3164 orc_program_append_2 (p, "andl", 0, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_C2,
3166 orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T8,
3168 orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
3172 orc_program_compile (p);
3173 c = orc_program_take_code (p);
3174 orc_program_free (p);
3177 orc_once_mutex_unlock ();
3179 ex->arrays[ORC_VAR_A2] = c;
3183 ORC_EXECUTOR_M (ex) = m;
3184 ex->arrays[ORC_VAR_D1] = d1;
3185 ex->params[ORC_VAR_D1] = d1_stride;
3186 ex->arrays[ORC_VAR_S1] = (void *) s1;
3187 ex->params[ORC_VAR_S1] = s1_stride;
3188 ex->params[ORC_VAR_P1] = p1;
3196 /* compositor_orc_overlay_bgra */
3199 compositor_orc_overlay_bgra (guint8 * ORC_RESTRICT d1, int d1_stride,
3200 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
3204 orc_union32 *ORC_RESTRICT ptr0;
3205 const orc_union32 *ORC_RESTRICT ptr4;
3207 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
3208 volatile orc_union32 var43;
3212 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
3213 volatile orc_union32 var44;
3249 for (j = 0; j < m; j++) {
3250 ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
3251 ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
3259 var55.i = 0xffffffff; /* -1 or 2.122e-314f */
3261 var43.i = 0x00ffffff; /* 16777215 or 8.28905e-317f */
3263 var44.i = 0xff000000; /* -16777216 or 2.11371e-314f */
3265 for (i = 0; i < n; i++) {
3269 var46.i = ((orc_uint32) var45.i) >> 24;
3276 ((((orc_uint32) var48) & 0xff) << 24) | ((((orc_uint32) var48) & 0xff)
3277 << 16) | ((((orc_uint32) var48) & 0xff) << 8) | (((orc_uint32) var48)
3280 var50.x4[0] = (orc_uint8) var49.x4[0];
3281 var50.x4[1] = (orc_uint8) var49.x4[1];
3282 var50.x4[2] = (orc_uint8) var49.x4[2];
3283 var50.x4[3] = (orc_uint8) var49.x4[3];
3285 var51.x4[0] = (var50.x4[0] * var42.x4[0]) & 0xffff;
3286 var51.x4[1] = (var50.x4[1] * var42.x4[1]) & 0xffff;
3287 var51.x4[2] = (var50.x4[2] * var42.x4[2]) & 0xffff;
3288 var51.x4[3] = (var50.x4[3] * var42.x4[3]) & 0xffff;
3291 ((orc_uint16) (((orc_uint16) (var51.x4[0] + 128)) +
3292 (((orc_uint16) (var51.x4[0] + 128)) >> 8))) >> 8;
3294 ((orc_uint16) (((orc_uint16) (var51.x4[1] + 128)) +
3295 (((orc_uint16) (var51.x4[1] + 128)) >> 8))) >> 8;
3297 ((orc_uint16) (((orc_uint16) (var51.x4[2] + 128)) +
3298 (((orc_uint16) (var51.x4[2] + 128)) >> 8))) >> 8;
3300 ((orc_uint16) (((orc_uint16) (var51.x4[3] + 128)) +
3301 (((orc_uint16) (var51.x4[3] + 128)) >> 8))) >> 8;
3303 var53.x4[0] = (orc_uint8) var45.x4[0];
3304 var53.x4[1] = (orc_uint8) var45.x4[1];
3305 var53.x4[2] = (orc_uint8) var45.x4[2];
3306 var53.x4[3] = (orc_uint8) var45.x4[3];
3308 var54.x4[0] = (var53.x4[0] * var52.x4[0]) & 0xffff;
3309 var54.x4[1] = (var53.x4[1] * var52.x4[1]) & 0xffff;
3310 var54.x4[2] = (var53.x4[2] * var52.x4[2]) & 0xffff;
3311 var54.x4[3] = (var53.x4[3] * var52.x4[3]) & 0xffff;
3313 var56.x4[0] = (orc_uint8) var55.x4[0];
3314 var56.x4[1] = (orc_uint8) var55.x4[1];
3315 var56.x4[2] = (orc_uint8) var55.x4[2];
3316 var56.x4[3] = (orc_uint8) var55.x4[3];
3318 var57.x4[0] = var56.x4[0] - var52.x4[0];
3319 var57.x4[1] = var56.x4[1] - var52.x4[1];
3320 var57.x4[2] = var56.x4[2] - var52.x4[2];
3321 var57.x4[3] = var56.x4[3] - var52.x4[3];
3325 var59.i = ((orc_uint32) var58.i) >> 24;
3332 ((((orc_uint32) var61) & 0xff) << 24) | ((((orc_uint32) var61) & 0xff)
3333 << 16) | ((((orc_uint32) var61) & 0xff) << 8) | (((orc_uint32) var61)
3336 var63.x4[0] = (orc_uint8) var62.x4[0];
3337 var63.x4[1] = (orc_uint8) var62.x4[1];
3338 var63.x4[2] = (orc_uint8) var62.x4[2];
3339 var63.x4[3] = (orc_uint8) var62.x4[3];
3341 var64.x4[0] = (var63.x4[0] * var57.x4[0]) & 0xffff;
3342 var64.x4[1] = (var63.x4[1] * var57.x4[1]) & 0xffff;
3343 var64.x4[2] = (var63.x4[2] * var57.x4[2]) & 0xffff;
3344 var64.x4[3] = (var63.x4[3] * var57.x4[3]) & 0xffff;
3347 ((orc_uint16) (((orc_uint16) (var64.x4[0] + 128)) +
3348 (((orc_uint16) (var64.x4[0] + 128)) >> 8))) >> 8;
3350 ((orc_uint16) (((orc_uint16) (var64.x4[1] + 128)) +
3351 (((orc_uint16) (var64.x4[1] + 128)) >> 8))) >> 8;
3353 ((orc_uint16) (((orc_uint16) (var64.x4[2] + 128)) +
3354 (((orc_uint16) (var64.x4[2] + 128)) >> 8))) >> 8;
3356 ((orc_uint16) (((orc_uint16) (var64.x4[3] + 128)) +
3357 (((orc_uint16) (var64.x4[3] + 128)) >> 8))) >> 8;
3359 var66.x4[0] = (orc_uint8) var58.x4[0];
3360 var66.x4[1] = (orc_uint8) var58.x4[1];
3361 var66.x4[2] = (orc_uint8) var58.x4[2];
3362 var66.x4[3] = (orc_uint8) var58.x4[3];
3364 var67.x4[0] = (var66.x4[0] * var65.x4[0]) & 0xffff;
3365 var67.x4[1] = (var66.x4[1] * var65.x4[1]) & 0xffff;
3366 var67.x4[2] = (var66.x4[2] * var65.x4[2]) & 0xffff;
3367 var67.x4[3] = (var66.x4[3] * var65.x4[3]) & 0xffff;
3369 var68.x4[0] = var67.x4[0] + var54.x4[0];
3370 var68.x4[1] = var67.x4[1] + var54.x4[1];
3371 var68.x4[2] = var67.x4[2] + var54.x4[2];
3372 var68.x4[3] = var67.x4[3] + var54.x4[3];
3374 var69.x4[0] = var65.x4[0] + var52.x4[0];
3375 var69.x4[1] = var65.x4[1] + var52.x4[1];
3376 var69.x4[2] = var65.x4[2] + var52.x4[2];
3377 var69.x4[3] = var65.x4[3] + var52.x4[3];
3380 ((var69.x4[0] & 0xff) ==
3381 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var68.x4[0]) /
3382 ((orc_uint16) var69.x4[0] & 0xff));
3384 ((var69.x4[1] & 0xff) ==
3385 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var68.x4[1]) /
3386 ((orc_uint16) var69.x4[1] & 0xff));
3388 ((var69.x4[2] & 0xff) ==
3389 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var68.x4[2]) /
3390 ((orc_uint16) var69.x4[2] & 0xff));
3392 ((var69.x4[3] & 0xff) ==
3393 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var68.x4[3]) /
3394 ((orc_uint16) var69.x4[3] & 0xff));
3396 var71.x4[0] = var70.x4[0];
3397 var71.x4[1] = var70.x4[1];
3398 var71.x4[2] = var70.x4[2];
3399 var71.x4[3] = var70.x4[3];
3401 var72.i = var71.i & var43.i;
3403 var73.x4[0] = var69.x4[0];
3404 var73.x4[1] = var69.x4[1];
3405 var73.x4[2] = var69.x4[2];
3406 var73.x4[3] = var69.x4[3];
3408 var74.i = var73.i & var44.i;
3410 var75.i = var72.i | var74.i;
3420 _backup_compositor_orc_overlay_bgra (OrcExecutor * ORC_RESTRICT ex)
3425 int m = ex->params[ORC_VAR_A1];
3426 orc_union32 *ORC_RESTRICT ptr0;
3427 const orc_union32 *ORC_RESTRICT ptr4;
3429 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
3430 volatile orc_union32 var43;
3434 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
3435 volatile orc_union32 var44;
3471 for (j = 0; j < m; j++) {
3472 ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
3473 ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
3476 var42.x4[0] = ex->params[24];
3477 var42.x4[1] = ex->params[24];
3478 var42.x4[2] = ex->params[24];
3479 var42.x4[3] = ex->params[24];
3481 var55.i = 0xffffffff; /* -1 or 2.122e-314f */
3483 var43.i = 0x00ffffff; /* 16777215 or 8.28905e-317f */
3485 var44.i = 0xff000000; /* -16777216 or 2.11371e-314f */
3487 for (i = 0; i < n; i++) {
3491 var46.i = ((orc_uint32) var45.i) >> 24;
3498 ((((orc_uint32) var48) & 0xff) << 24) | ((((orc_uint32) var48) & 0xff)
3499 << 16) | ((((orc_uint32) var48) & 0xff) << 8) | (((orc_uint32) var48)
3502 var50.x4[0] = (orc_uint8) var49.x4[0];
3503 var50.x4[1] = (orc_uint8) var49.x4[1];
3504 var50.x4[2] = (orc_uint8) var49.x4[2];
3505 var50.x4[3] = (orc_uint8) var49.x4[3];
3507 var51.x4[0] = (var50.x4[0] * var42.x4[0]) & 0xffff;
3508 var51.x4[1] = (var50.x4[1] * var42.x4[1]) & 0xffff;
3509 var51.x4[2] = (var50.x4[2] * var42.x4[2]) & 0xffff;
3510 var51.x4[3] = (var50.x4[3] * var42.x4[3]) & 0xffff;
3513 ((orc_uint16) (((orc_uint16) (var51.x4[0] + 128)) +
3514 (((orc_uint16) (var51.x4[0] + 128)) >> 8))) >> 8;
3516 ((orc_uint16) (((orc_uint16) (var51.x4[1] + 128)) +
3517 (((orc_uint16) (var51.x4[1] + 128)) >> 8))) >> 8;
3519 ((orc_uint16) (((orc_uint16) (var51.x4[2] + 128)) +
3520 (((orc_uint16) (var51.x4[2] + 128)) >> 8))) >> 8;
3522 ((orc_uint16) (((orc_uint16) (var51.x4[3] + 128)) +
3523 (((orc_uint16) (var51.x4[3] + 128)) >> 8))) >> 8;
3525 var53.x4[0] = (orc_uint8) var45.x4[0];
3526 var53.x4[1] = (orc_uint8) var45.x4[1];
3527 var53.x4[2] = (orc_uint8) var45.x4[2];
3528 var53.x4[3] = (orc_uint8) var45.x4[3];
3530 var54.x4[0] = (var53.x4[0] * var52.x4[0]) & 0xffff;
3531 var54.x4[1] = (var53.x4[1] * var52.x4[1]) & 0xffff;
3532 var54.x4[2] = (var53.x4[2] * var52.x4[2]) & 0xffff;
3533 var54.x4[3] = (var53.x4[3] * var52.x4[3]) & 0xffff;
3535 var56.x4[0] = (orc_uint8) var55.x4[0];
3536 var56.x4[1] = (orc_uint8) var55.x4[1];
3537 var56.x4[2] = (orc_uint8) var55.x4[2];
3538 var56.x4[3] = (orc_uint8) var55.x4[3];
3540 var57.x4[0] = var56.x4[0] - var52.x4[0];
3541 var57.x4[1] = var56.x4[1] - var52.x4[1];
3542 var57.x4[2] = var56.x4[2] - var52.x4[2];
3543 var57.x4[3] = var56.x4[3] - var52.x4[3];
3547 var59.i = ((orc_uint32) var58.i) >> 24;
3554 ((((orc_uint32) var61) & 0xff) << 24) | ((((orc_uint32) var61) & 0xff)
3555 << 16) | ((((orc_uint32) var61) & 0xff) << 8) | (((orc_uint32) var61)
3558 var63.x4[0] = (orc_uint8) var62.x4[0];
3559 var63.x4[1] = (orc_uint8) var62.x4[1];
3560 var63.x4[2] = (orc_uint8) var62.x4[2];
3561 var63.x4[3] = (orc_uint8) var62.x4[3];
3563 var64.x4[0] = (var63.x4[0] * var57.x4[0]) & 0xffff;
3564 var64.x4[1] = (var63.x4[1] * var57.x4[1]) & 0xffff;
3565 var64.x4[2] = (var63.x4[2] * var57.x4[2]) & 0xffff;
3566 var64.x4[3] = (var63.x4[3] * var57.x4[3]) & 0xffff;
3569 ((orc_uint16) (((orc_uint16) (var64.x4[0] + 128)) +
3570 (((orc_uint16) (var64.x4[0] + 128)) >> 8))) >> 8;
3572 ((orc_uint16) (((orc_uint16) (var64.x4[1] + 128)) +
3573 (((orc_uint16) (var64.x4[1] + 128)) >> 8))) >> 8;
3575 ((orc_uint16) (((orc_uint16) (var64.x4[2] + 128)) +
3576 (((orc_uint16) (var64.x4[2] + 128)) >> 8))) >> 8;
3578 ((orc_uint16) (((orc_uint16) (var64.x4[3] + 128)) +
3579 (((orc_uint16) (var64.x4[3] + 128)) >> 8))) >> 8;
3581 var66.x4[0] = (orc_uint8) var58.x4[0];
3582 var66.x4[1] = (orc_uint8) var58.x4[1];
3583 var66.x4[2] = (orc_uint8) var58.x4[2];
3584 var66.x4[3] = (orc_uint8) var58.x4[3];
3586 var67.x4[0] = (var66.x4[0] * var65.x4[0]) & 0xffff;
3587 var67.x4[1] = (var66.x4[1] * var65.x4[1]) & 0xffff;
3588 var67.x4[2] = (var66.x4[2] * var65.x4[2]) & 0xffff;
3589 var67.x4[3] = (var66.x4[3] * var65.x4[3]) & 0xffff;
3591 var68.x4[0] = var67.x4[0] + var54.x4[0];
3592 var68.x4[1] = var67.x4[1] + var54.x4[1];
3593 var68.x4[2] = var67.x4[2] + var54.x4[2];
3594 var68.x4[3] = var67.x4[3] + var54.x4[3];
3596 var69.x4[0] = var65.x4[0] + var52.x4[0];
3597 var69.x4[1] = var65.x4[1] + var52.x4[1];
3598 var69.x4[2] = var65.x4[2] + var52.x4[2];
3599 var69.x4[3] = var65.x4[3] + var52.x4[3];
3602 ((var69.x4[0] & 0xff) ==
3603 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var68.x4[0]) /
3604 ((orc_uint16) var69.x4[0] & 0xff));
3606 ((var69.x4[1] & 0xff) ==
3607 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var68.x4[1]) /
3608 ((orc_uint16) var69.x4[1] & 0xff));
3610 ((var69.x4[2] & 0xff) ==
3611 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var68.x4[2]) /
3612 ((orc_uint16) var69.x4[2] & 0xff));
3614 ((var69.x4[3] & 0xff) ==
3615 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var68.x4[3]) /
3616 ((orc_uint16) var69.x4[3] & 0xff));
3618 var71.x4[0] = var70.x4[0];
3619 var71.x4[1] = var70.x4[1];
3620 var71.x4[2] = var70.x4[2];
3621 var71.x4[3] = var70.x4[3];
3623 var72.i = var71.i & var43.i;
3625 var73.x4[0] = var69.x4[0];
3626 var73.x4[1] = var69.x4[1];
3627 var73.x4[2] = var69.x4[2];
3628 var73.x4[3] = var69.x4[3];
3630 var74.i = var73.i & var44.i;
3632 var75.i = var72.i | var74.i;
3641 compositor_orc_overlay_bgra (guint8 * ORC_RESTRICT d1, int d1_stride,
3642 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
3644 OrcExecutor _ex, *ex = &_ex;
3645 static volatile int p_inited = 0;
3646 static OrcCode *c = 0;
3647 void (*func) (OrcExecutor *);
3650 orc_once_mutex_lock ();
3655 static const orc_uint8 bc[] = {
3656 1, 7, 9, 27, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111,
3657 114, 99, 95, 111, 118, 101, 114, 108, 97, 121, 95, 98, 103, 114, 97, 11,
3658 4, 4, 12, 4, 4, 14, 4, 255, 255, 255, 255, 14, 4, 0, 0, 0,
3659 255, 14, 4, 255, 255, 255, 0, 14, 4, 24, 0, 0, 0, 16, 2, 20,
3660 4, 20, 4, 20, 2, 20, 1, 20, 8, 20, 8, 20, 8, 20, 4, 20,
3661 8, 20, 8, 113, 32, 4, 126, 33, 32, 19, 163, 34, 33, 157, 35, 34,
3662 152, 39, 35, 21, 2, 150, 36, 39, 21, 2, 89, 36, 36, 24, 21, 2,
3663 80, 36, 36, 21, 2, 150, 41, 32, 21, 2, 89, 41, 41, 36, 115, 39,
3664 16, 21, 2, 150, 37, 39, 21, 2, 98, 37, 37, 36, 113, 32, 0, 126,
3665 33, 32, 19, 163, 34, 33, 157, 35, 34, 152, 39, 35, 21, 2, 150, 38,
3666 39, 21, 2, 89, 38, 38, 37, 21, 2, 80, 38, 38, 21, 2, 150, 40,
3667 32, 21, 2, 89, 40, 40, 38, 21, 2, 70, 40, 40, 41, 21, 2, 70,
3668 38, 38, 36, 21, 2, 81, 40, 40, 38, 21, 2, 157, 32, 40, 106, 32,
3669 32, 18, 21, 2, 157, 39, 38, 106, 39, 39, 17, 123, 32, 32, 39, 128,
3672 p = orc_program_new_from_static_bytecode (bc);
3673 orc_program_set_backup_function (p, _backup_compositor_orc_overlay_bgra);
3675 p = orc_program_new ();
3676 orc_program_set_2d (p);
3677 orc_program_set_name (p, "compositor_orc_overlay_bgra");
3678 orc_program_set_backup_function (p, _backup_compositor_orc_overlay_bgra);
3679 orc_program_add_destination (p, 4, "d1");
3680 orc_program_add_source (p, 4, "s1");
3681 orc_program_add_constant (p, 4, 0xffffffff, "c1");
3682 orc_program_add_constant (p, 4, 0xff000000, "c2");
3683 orc_program_add_constant (p, 4, 0x00ffffff, "c3");
3684 orc_program_add_constant (p, 4, 0x00000018, "c4");
3685 orc_program_add_parameter (p, 2, "p1");
3686 orc_program_add_temporary (p, 4, "t1");
3687 orc_program_add_temporary (p, 4, "t2");
3688 orc_program_add_temporary (p, 2, "t3");
3689 orc_program_add_temporary (p, 1, "t4");
3690 orc_program_add_temporary (p, 8, "t5");
3691 orc_program_add_temporary (p, 8, "t6");
3692 orc_program_add_temporary (p, 8, "t7");
3693 orc_program_add_temporary (p, 4, "t8");
3694 orc_program_add_temporary (p, 8, "t9");
3695 orc_program_add_temporary (p, 8, "t10");
3697 orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
3699 orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C4,
3701 orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1,
3703 orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1,
3705 orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T8, ORC_VAR_T4, ORC_VAR_D1,
3707 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T8, ORC_VAR_D1,
3709 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_P1,
3711 orc_program_append_2 (p, "div255w", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_D1,
3713 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T10, ORC_VAR_T1,
3714 ORC_VAR_D1, ORC_VAR_D1);
3715 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T10, ORC_VAR_T10, ORC_VAR_T5,
3717 orc_program_append_2 (p, "loadpl", 0, ORC_VAR_T8, ORC_VAR_C1, ORC_VAR_D1,
3719 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T8, ORC_VAR_D1,
3721 orc_program_append_2 (p, "subw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T5,
3723 orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1,
3725 orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C4,
3727 orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1,
3729 orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1,
3731 orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T8, ORC_VAR_T4, ORC_VAR_D1,
3733 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T8, ORC_VAR_D1,
3735 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T6,
3737 orc_program_append_2 (p, "div255w", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_D1,
3739 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T9, ORC_VAR_T1, ORC_VAR_D1,
3741 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T7,
3743 orc_program_append_2 (p, "addw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T10,
3745 orc_program_append_2 (p, "addw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T5,
3747 orc_program_append_2 (p, "divluw", 2, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T7,
3749 orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_D1,
3751 orc_program_append_2 (p, "andl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C3,
3753 orc_program_append_2 (p, "convwb", 2, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_D1,
3755 orc_program_append_2 (p, "andl", 0, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_C2,
3757 orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T8,
3759 orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
3763 orc_program_compile (p);
3764 c = orc_program_take_code (p);
3765 orc_program_free (p);
3768 orc_once_mutex_unlock ();
3770 ex->arrays[ORC_VAR_A2] = c;
3774 ORC_EXECUTOR_M (ex) = m;
3775 ex->arrays[ORC_VAR_D1] = d1;
3776 ex->params[ORC_VAR_D1] = d1_stride;
3777 ex->arrays[ORC_VAR_S1] = (void *) s1;
3778 ex->params[ORC_VAR_S1] = s1_stride;
3779 ex->params[ORC_VAR_P1] = p1;
3787 /* compositor_orc_overlay_bgra_addition */
3790 compositor_orc_overlay_bgra_addition (guint8 * ORC_RESTRICT d1, int d1_stride,
3791 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
3795 orc_union32 *ORC_RESTRICT ptr0;
3796 const orc_union32 *ORC_RESTRICT ptr4;
3798 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
3799 volatile orc_union32 var44;
3803 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
3804 volatile orc_union32 var45;
3847 for (j = 0; j < m; j++) {
3848 ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
3849 ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
3857 var56.i = 0xffffffff; /* -1 or 2.122e-314f */
3859 var44.i = 0x00ffffff; /* 16777215 or 8.28905e-317f */
3861 var45.i = 0xff000000; /* -16777216 or 2.11371e-314f */
3863 for (i = 0; i < n; i++) {
3867 var47.i = ((orc_uint32) var46.i) >> 24;
3874 ((((orc_uint32) var49) & 0xff) << 24) | ((((orc_uint32) var49) & 0xff)
3875 << 16) | ((((orc_uint32) var49) & 0xff) << 8) | (((orc_uint32) var49)
3878 var51.x4[0] = (orc_uint8) var50.x4[0];
3879 var51.x4[1] = (orc_uint8) var50.x4[1];
3880 var51.x4[2] = (orc_uint8) var50.x4[2];
3881 var51.x4[3] = (orc_uint8) var50.x4[3];
3883 var52.x4[0] = (var51.x4[0] * var43.x4[0]) & 0xffff;
3884 var52.x4[1] = (var51.x4[1] * var43.x4[1]) & 0xffff;
3885 var52.x4[2] = (var51.x4[2] * var43.x4[2]) & 0xffff;
3886 var52.x4[3] = (var51.x4[3] * var43.x4[3]) & 0xffff;
3889 ((orc_uint16) (((orc_uint16) (var52.x4[0] + 128)) +
3890 (((orc_uint16) (var52.x4[0] + 128)) >> 8))) >> 8;
3892 ((orc_uint16) (((orc_uint16) (var52.x4[1] + 128)) +
3893 (((orc_uint16) (var52.x4[1] + 128)) >> 8))) >> 8;
3895 ((orc_uint16) (((orc_uint16) (var52.x4[2] + 128)) +
3896 (((orc_uint16) (var52.x4[2] + 128)) >> 8))) >> 8;
3898 ((orc_uint16) (((orc_uint16) (var52.x4[3] + 128)) +
3899 (((orc_uint16) (var52.x4[3] + 128)) >> 8))) >> 8;
3901 var54.x4[0] = (orc_uint8) var46.x4[0];
3902 var54.x4[1] = (orc_uint8) var46.x4[1];
3903 var54.x4[2] = (orc_uint8) var46.x4[2];
3904 var54.x4[3] = (orc_uint8) var46.x4[3];
3906 var55.x4[0] = (var54.x4[0] * var53.x4[0]) & 0xffff;
3907 var55.x4[1] = (var54.x4[1] * var53.x4[1]) & 0xffff;
3908 var55.x4[2] = (var54.x4[2] * var53.x4[2]) & 0xffff;
3909 var55.x4[3] = (var54.x4[3] * var53.x4[3]) & 0xffff;
3911 var57.x4[0] = (orc_uint8) var56.x4[0];
3912 var57.x4[1] = (orc_uint8) var56.x4[1];
3913 var57.x4[2] = (orc_uint8) var56.x4[2];
3914 var57.x4[3] = (orc_uint8) var56.x4[3];
3916 var58.x4[0] = var57.x4[0] - var53.x4[0];
3917 var58.x4[1] = var57.x4[1] - var53.x4[1];
3918 var58.x4[2] = var57.x4[2] - var53.x4[2];
3919 var58.x4[3] = var57.x4[3] - var53.x4[3];
3923 var60.i = ((orc_uint32) var59.i) >> 24;
3930 ((((orc_uint32) var62) & 0xff) << 24) | ((((orc_uint32) var62) & 0xff)
3931 << 16) | ((((orc_uint32) var62) & 0xff) << 8) | (((orc_uint32) var62)
3934 var64.x4[0] = (orc_uint8) var63.x4[0];
3935 var64.x4[1] = (orc_uint8) var63.x4[1];
3936 var64.x4[2] = (orc_uint8) var63.x4[2];
3937 var64.x4[3] = (orc_uint8) var63.x4[3];
3939 var65.x4[0] = (var64.x4[0] * var58.x4[0]) & 0xffff;
3940 var65.x4[1] = (var64.x4[1] * var58.x4[1]) & 0xffff;
3941 var65.x4[2] = (var64.x4[2] * var58.x4[2]) & 0xffff;
3942 var65.x4[3] = (var64.x4[3] * var58.x4[3]) & 0xffff;
3945 ((orc_uint16) (((orc_uint16) (var65.x4[0] + 128)) +
3946 (((orc_uint16) (var65.x4[0] + 128)) >> 8))) >> 8;
3948 ((orc_uint16) (((orc_uint16) (var65.x4[1] + 128)) +
3949 (((orc_uint16) (var65.x4[1] + 128)) >> 8))) >> 8;
3951 ((orc_uint16) (((orc_uint16) (var65.x4[2] + 128)) +
3952 (((orc_uint16) (var65.x4[2] + 128)) >> 8))) >> 8;
3954 ((orc_uint16) (((orc_uint16) (var65.x4[3] + 128)) +
3955 (((orc_uint16) (var65.x4[3] + 128)) >> 8))) >> 8;
3957 var67.x4[0] = (orc_uint8) var59.x4[0];
3958 var67.x4[1] = (orc_uint8) var59.x4[1];
3959 var67.x4[2] = (orc_uint8) var59.x4[2];
3960 var67.x4[3] = (orc_uint8) var59.x4[3];
3962 var68.x4[0] = (var67.x4[0] * var66.x4[0]) & 0xffff;
3963 var68.x4[1] = (var67.x4[1] * var66.x4[1]) & 0xffff;
3964 var68.x4[2] = (var67.x4[2] * var66.x4[2]) & 0xffff;
3965 var68.x4[3] = (var67.x4[3] * var66.x4[3]) & 0xffff;
3967 var69.x4[0] = var68.x4[0] + var55.x4[0];
3968 var69.x4[1] = var68.x4[1] + var55.x4[1];
3969 var69.x4[2] = var68.x4[2] + var55.x4[2];
3970 var69.x4[3] = var68.x4[3] + var55.x4[3];
3972 var70.x4[0] = var66.x4[0] + var53.x4[0];
3973 var70.x4[1] = var66.x4[1] + var53.x4[1];
3974 var70.x4[2] = var66.x4[2] + var53.x4[2];
3975 var70.x4[3] = var66.x4[3] + var53.x4[3];
3978 ((var70.x4[0] & 0xff) ==
3979 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var69.x4[0]) /
3980 ((orc_uint16) var70.x4[0] & 0xff));
3982 ((var70.x4[1] & 0xff) ==
3983 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var69.x4[1]) /
3984 ((orc_uint16) var70.x4[1] & 0xff));
3986 ((var70.x4[2] & 0xff) ==
3987 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var69.x4[2]) /
3988 ((orc_uint16) var70.x4[2] & 0xff));
3990 ((var70.x4[3] & 0xff) ==
3991 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var69.x4[3]) /
3992 ((orc_uint16) var70.x4[3] & 0xff));
3996 var73.i = ((orc_uint32) var72.i) >> 24;
4003 ((((orc_uint32) var75) & 0xff) << 24) | ((((orc_uint32) var75) & 0xff)
4004 << 16) | ((((orc_uint32) var75) & 0xff) << 8) | (((orc_uint32) var75)
4007 var77.x4[0] = (orc_uint8) var76.x4[0];
4008 var77.x4[1] = (orc_uint8) var76.x4[1];
4009 var77.x4[2] = (orc_uint8) var76.x4[2];
4010 var77.x4[3] = (orc_uint8) var76.x4[3];
4012 var78.x4[0] = var77.x4[0] + var53.x4[0];
4013 var78.x4[1] = var77.x4[1] + var53.x4[1];
4014 var78.x4[2] = var77.x4[2] + var53.x4[2];
4015 var78.x4[3] = var77.x4[3] + var53.x4[3];
4017 var79.x4[0] = var71.x4[0];
4018 var79.x4[1] = var71.x4[1];
4019 var79.x4[2] = var71.x4[2];
4020 var79.x4[3] = var71.x4[3];
4022 var80.i = var79.i & var44.i;
4024 var81.x4[0] = var78.x4[0];
4025 var81.x4[1] = var78.x4[1];
4026 var81.x4[2] = var78.x4[2];
4027 var81.x4[3] = var78.x4[3];
4029 var82.i = var81.i & var45.i;
4031 var83.i = var80.i | var82.i;
4041 _backup_compositor_orc_overlay_bgra_addition (OrcExecutor * ORC_RESTRICT ex)
4046 int m = ex->params[ORC_VAR_A1];
4047 orc_union32 *ORC_RESTRICT ptr0;
4048 const orc_union32 *ORC_RESTRICT ptr4;
4050 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
4051 volatile orc_union32 var44;
4055 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
4056 volatile orc_union32 var45;
4099 for (j = 0; j < m; j++) {
4100 ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
4101 ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
4104 var43.x4[0] = ex->params[24];
4105 var43.x4[1] = ex->params[24];
4106 var43.x4[2] = ex->params[24];
4107 var43.x4[3] = ex->params[24];
4109 var56.i = 0xffffffff; /* -1 or 2.122e-314f */
4111 var44.i = 0x00ffffff; /* 16777215 or 8.28905e-317f */
4113 var45.i = 0xff000000; /* -16777216 or 2.11371e-314f */
4115 for (i = 0; i < n; i++) {
4119 var47.i = ((orc_uint32) var46.i) >> 24;
4126 ((((orc_uint32) var49) & 0xff) << 24) | ((((orc_uint32) var49) & 0xff)
4127 << 16) | ((((orc_uint32) var49) & 0xff) << 8) | (((orc_uint32) var49)
4130 var51.x4[0] = (orc_uint8) var50.x4[0];
4131 var51.x4[1] = (orc_uint8) var50.x4[1];
4132 var51.x4[2] = (orc_uint8) var50.x4[2];
4133 var51.x4[3] = (orc_uint8) var50.x4[3];
4135 var52.x4[0] = (var51.x4[0] * var43.x4[0]) & 0xffff;
4136 var52.x4[1] = (var51.x4[1] * var43.x4[1]) & 0xffff;
4137 var52.x4[2] = (var51.x4[2] * var43.x4[2]) & 0xffff;
4138 var52.x4[3] = (var51.x4[3] * var43.x4[3]) & 0xffff;
4141 ((orc_uint16) (((orc_uint16) (var52.x4[0] + 128)) +
4142 (((orc_uint16) (var52.x4[0] + 128)) >> 8))) >> 8;
4144 ((orc_uint16) (((orc_uint16) (var52.x4[1] + 128)) +
4145 (((orc_uint16) (var52.x4[1] + 128)) >> 8))) >> 8;
4147 ((orc_uint16) (((orc_uint16) (var52.x4[2] + 128)) +
4148 (((orc_uint16) (var52.x4[2] + 128)) >> 8))) >> 8;
4150 ((orc_uint16) (((orc_uint16) (var52.x4[3] + 128)) +
4151 (((orc_uint16) (var52.x4[3] + 128)) >> 8))) >> 8;
4153 var54.x4[0] = (orc_uint8) var46.x4[0];
4154 var54.x4[1] = (orc_uint8) var46.x4[1];
4155 var54.x4[2] = (orc_uint8) var46.x4[2];
4156 var54.x4[3] = (orc_uint8) var46.x4[3];
4158 var55.x4[0] = (var54.x4[0] * var53.x4[0]) & 0xffff;
4159 var55.x4[1] = (var54.x4[1] * var53.x4[1]) & 0xffff;
4160 var55.x4[2] = (var54.x4[2] * var53.x4[2]) & 0xffff;
4161 var55.x4[3] = (var54.x4[3] * var53.x4[3]) & 0xffff;
4163 var57.x4[0] = (orc_uint8) var56.x4[0];
4164 var57.x4[1] = (orc_uint8) var56.x4[1];
4165 var57.x4[2] = (orc_uint8) var56.x4[2];
4166 var57.x4[3] = (orc_uint8) var56.x4[3];
4168 var58.x4[0] = var57.x4[0] - var53.x4[0];
4169 var58.x4[1] = var57.x4[1] - var53.x4[1];
4170 var58.x4[2] = var57.x4[2] - var53.x4[2];
4171 var58.x4[3] = var57.x4[3] - var53.x4[3];
4175 var60.i = ((orc_uint32) var59.i) >> 24;
4182 ((((orc_uint32) var62) & 0xff) << 24) | ((((orc_uint32) var62) & 0xff)
4183 << 16) | ((((orc_uint32) var62) & 0xff) << 8) | (((orc_uint32) var62)
4186 var64.x4[0] = (orc_uint8) var63.x4[0];
4187 var64.x4[1] = (orc_uint8) var63.x4[1];
4188 var64.x4[2] = (orc_uint8) var63.x4[2];
4189 var64.x4[3] = (orc_uint8) var63.x4[3];
4191 var65.x4[0] = (var64.x4[0] * var58.x4[0]) & 0xffff;
4192 var65.x4[1] = (var64.x4[1] * var58.x4[1]) & 0xffff;
4193 var65.x4[2] = (var64.x4[2] * var58.x4[2]) & 0xffff;
4194 var65.x4[3] = (var64.x4[3] * var58.x4[3]) & 0xffff;
4197 ((orc_uint16) (((orc_uint16) (var65.x4[0] + 128)) +
4198 (((orc_uint16) (var65.x4[0] + 128)) >> 8))) >> 8;
4200 ((orc_uint16) (((orc_uint16) (var65.x4[1] + 128)) +
4201 (((orc_uint16) (var65.x4[1] + 128)) >> 8))) >> 8;
4203 ((orc_uint16) (((orc_uint16) (var65.x4[2] + 128)) +
4204 (((orc_uint16) (var65.x4[2] + 128)) >> 8))) >> 8;
4206 ((orc_uint16) (((orc_uint16) (var65.x4[3] + 128)) +
4207 (((orc_uint16) (var65.x4[3] + 128)) >> 8))) >> 8;
4209 var67.x4[0] = (orc_uint8) var59.x4[0];
4210 var67.x4[1] = (orc_uint8) var59.x4[1];
4211 var67.x4[2] = (orc_uint8) var59.x4[2];
4212 var67.x4[3] = (orc_uint8) var59.x4[3];
4214 var68.x4[0] = (var67.x4[0] * var66.x4[0]) & 0xffff;
4215 var68.x4[1] = (var67.x4[1] * var66.x4[1]) & 0xffff;
4216 var68.x4[2] = (var67.x4[2] * var66.x4[2]) & 0xffff;
4217 var68.x4[3] = (var67.x4[3] * var66.x4[3]) & 0xffff;
4219 var69.x4[0] = var68.x4[0] + var55.x4[0];
4220 var69.x4[1] = var68.x4[1] + var55.x4[1];
4221 var69.x4[2] = var68.x4[2] + var55.x4[2];
4222 var69.x4[3] = var68.x4[3] + var55.x4[3];
4224 var70.x4[0] = var66.x4[0] + var53.x4[0];
4225 var70.x4[1] = var66.x4[1] + var53.x4[1];
4226 var70.x4[2] = var66.x4[2] + var53.x4[2];
4227 var70.x4[3] = var66.x4[3] + var53.x4[3];
4230 ((var70.x4[0] & 0xff) ==
4231 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var69.x4[0]) /
4232 ((orc_uint16) var70.x4[0] & 0xff));
4234 ((var70.x4[1] & 0xff) ==
4235 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var69.x4[1]) /
4236 ((orc_uint16) var70.x4[1] & 0xff));
4238 ((var70.x4[2] & 0xff) ==
4239 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var69.x4[2]) /
4240 ((orc_uint16) var70.x4[2] & 0xff));
4242 ((var70.x4[3] & 0xff) ==
4243 0) ? 255 : ORC_CLAMP_UB (((orc_uint16) var69.x4[3]) /
4244 ((orc_uint16) var70.x4[3] & 0xff));
4248 var73.i = ((orc_uint32) var72.i) >> 24;
4255 ((((orc_uint32) var75) & 0xff) << 24) | ((((orc_uint32) var75) & 0xff)
4256 << 16) | ((((orc_uint32) var75) & 0xff) << 8) | (((orc_uint32) var75)
4259 var77.x4[0] = (orc_uint8) var76.x4[0];
4260 var77.x4[1] = (orc_uint8) var76.x4[1];
4261 var77.x4[2] = (orc_uint8) var76.x4[2];
4262 var77.x4[3] = (orc_uint8) var76.x4[3];
4264 var78.x4[0] = var77.x4[0] + var53.x4[0];
4265 var78.x4[1] = var77.x4[1] + var53.x4[1];
4266 var78.x4[2] = var77.x4[2] + var53.x4[2];
4267 var78.x4[3] = var77.x4[3] + var53.x4[3];
4269 var79.x4[0] = var71.x4[0];
4270 var79.x4[1] = var71.x4[1];
4271 var79.x4[2] = var71.x4[2];
4272 var79.x4[3] = var71.x4[3];
4274 var80.i = var79.i & var44.i;
4276 var81.x4[0] = var78.x4[0];
4277 var81.x4[1] = var78.x4[1];
4278 var81.x4[2] = var78.x4[2];
4279 var81.x4[3] = var78.x4[3];
4281 var82.i = var81.i & var45.i;
4283 var83.i = var80.i | var82.i;
4292 compositor_orc_overlay_bgra_addition (guint8 * ORC_RESTRICT d1, int d1_stride,
4293 const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
4295 OrcExecutor _ex, *ex = &_ex;
4296 static volatile int p_inited = 0;
4297 static OrcCode *c = 0;
4298 void (*func) (OrcExecutor *);
4301 orc_once_mutex_lock ();
4306 static const orc_uint8 bc[] = {
4307 1, 7, 9, 36, 99, 111, 109, 112, 111, 115, 105, 116, 111, 114, 95, 111,
4308 114, 99, 95, 111, 118, 101, 114, 108, 97, 121, 95, 98, 103, 114, 97, 95,
4309 97, 100, 100, 105, 116, 105, 111, 110, 11, 4, 4, 12, 4, 4, 14, 4,
4310 255, 255, 255, 255, 14, 4, 0, 0, 0, 255, 14, 4, 255, 255, 255, 0,
4311 14, 4, 24, 0, 0, 0, 16, 2, 20, 4, 20, 4, 20, 2, 20, 1,
4312 20, 8, 20, 8, 20, 8, 20, 8, 20, 4, 20, 8, 20, 8, 113, 32,
4313 4, 126, 33, 32, 19, 163, 34, 33, 157, 35, 34, 152, 40, 35, 21, 2,
4314 150, 36, 40, 21, 2, 89, 36, 36, 24, 21, 2, 80, 36, 36, 21, 2,
4315 150, 42, 32, 21, 2, 89, 42, 42, 36, 115, 40, 16, 21, 2, 150, 37,
4316 40, 21, 2, 98, 37, 37, 36, 113, 32, 0, 126, 33, 32, 19, 163, 34,
4317 33, 157, 35, 34, 152, 40, 35, 21, 2, 150, 38, 40, 21, 2, 89, 38,
4318 38, 37, 21, 2, 80, 38, 38, 21, 2, 150, 41, 32, 21, 2, 89, 41,
4319 41, 38, 21, 2, 70, 41, 41, 42, 21, 2, 70, 38, 38, 36, 21, 2,
4320 81, 41, 41, 38, 113, 32, 0, 126, 33, 32, 19, 163, 34, 33, 157, 35,
4321 34, 152, 40, 35, 21, 2, 150, 39, 40, 21, 2, 70, 39, 39, 36, 21,
4322 2, 157, 32, 41, 106, 32, 32, 18, 21, 2, 157, 40, 39, 106, 40, 40,
4323 17, 123, 32, 32, 40, 128, 0, 32, 2, 0,
4325 p = orc_program_new_from_static_bytecode (bc);
4326 orc_program_set_backup_function (p,
4327 _backup_compositor_orc_overlay_bgra_addition);
4329 p = orc_program_new ();
4330 orc_program_set_2d (p);
4331 orc_program_set_name (p, "compositor_orc_overlay_bgra_addition");
4332 orc_program_set_backup_function (p,
4333 _backup_compositor_orc_overlay_bgra_addition);
4334 orc_program_add_destination (p, 4, "d1");
4335 orc_program_add_source (p, 4, "s1");
4336 orc_program_add_constant (p, 4, 0xffffffff, "c1");
4337 orc_program_add_constant (p, 4, 0xff000000, "c2");
4338 orc_program_add_constant (p, 4, 0x00ffffff, "c3");
4339 orc_program_add_constant (p, 4, 0x00000018, "c4");
4340 orc_program_add_parameter (p, 2, "p1");
4341 orc_program_add_temporary (p, 4, "t1");
4342 orc_program_add_temporary (p, 4, "t2");
4343 orc_program_add_temporary (p, 2, "t3");
4344 orc_program_add_temporary (p, 1, "t4");
4345 orc_program_add_temporary (p, 8, "t5");
4346 orc_program_add_temporary (p, 8, "t6");
4347 orc_program_add_temporary (p, 8, "t7");
4348 orc_program_add_temporary (p, 8, "t8");
4349 orc_program_add_temporary (p, 4, "t9");
4350 orc_program_add_temporary (p, 8, "t10");
4351 orc_program_add_temporary (p, 8, "t11");
4353 orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
4355 orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C4,
4357 orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1,
4359 orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1,
4361 orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T9, ORC_VAR_T4, ORC_VAR_D1,
4363 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T9, ORC_VAR_D1,
4365 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_P1,
4367 orc_program_append_2 (p, "div255w", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_D1,
4369 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T11, ORC_VAR_T1,
4370 ORC_VAR_D1, ORC_VAR_D1);
4371 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T11, ORC_VAR_T11, ORC_VAR_T5,
4373 orc_program_append_2 (p, "loadpl", 0, ORC_VAR_T9, ORC_VAR_C1, ORC_VAR_D1,
4375 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T9, ORC_VAR_D1,
4377 orc_program_append_2 (p, "subw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T5,
4379 orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1,
4381 orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C4,
4383 orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1,
4385 orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1,
4387 orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T9, ORC_VAR_T4, ORC_VAR_D1,
4389 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T9, ORC_VAR_D1,
4391 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T6,
4393 orc_program_append_2 (p, "div255w", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_D1,
4395 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T10, ORC_VAR_T1,
4396 ORC_VAR_D1, ORC_VAR_D1);
4397 orc_program_append_2 (p, "mullw", 2, ORC_VAR_T10, ORC_VAR_T10, ORC_VAR_T7,
4399 orc_program_append_2 (p, "addw", 2, ORC_VAR_T10, ORC_VAR_T10, ORC_VAR_T11,
4401 orc_program_append_2 (p, "addw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T5,
4403 orc_program_append_2 (p, "divluw", 2, ORC_VAR_T10, ORC_VAR_T10,
4404 ORC_VAR_T7, ORC_VAR_D1);
4405 orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1,
4407 orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C4,
4409 orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1,
4411 orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1,
4413 orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T9, ORC_VAR_T4, ORC_VAR_D1,
4415 orc_program_append_2 (p, "convubw", 2, ORC_VAR_T8, ORC_VAR_T9, ORC_VAR_D1,
4417 orc_program_append_2 (p, "addw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T5,
4419 orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T10, ORC_VAR_D1,
4421 orc_program_append_2 (p, "andl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C3,
4423 orc_program_append_2 (p, "convwb", 2, ORC_VAR_T9, ORC_VAR_T8, ORC_VAR_D1,
4425 orc_program_append_2 (p, "andl", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_C2,
4427 orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T9,
4429 orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
4433 orc_program_compile (p);
4434 c = orc_program_take_code (p);
4435 orc_program_free (p);
4438 orc_once_mutex_unlock ();
4440 ex->arrays[ORC_VAR_A2] = c;
4444 ORC_EXECUTOR_M (ex) = m;
4445 ex->arrays[ORC_VAR_D1] = d1;
4446 ex->params[ORC_VAR_D1] = d1_stride;
4447 ex->arrays[ORC_VAR_S1] = (void *) s1;
4448 ex->params[ORC_VAR_S1] = s1_stride;
4449 ex->params[ORC_VAR_P1] = p1;