videoaggregator: Create a new GstVideoAggregator baseclass
[platform/upstream/gstreamer.git] / gst-libs / gst / video / bad-video-orc-dist.c
1
2 /* autogenerated from bad-video-orc.orc */
3
4 #ifdef HAVE_CONFIG_H
5 #include "config.h"
6 #endif
7 #include <glib.h>
8
9 #ifndef _ORC_INTEGER_TYPEDEFS_
10 #define _ORC_INTEGER_TYPEDEFS_
11 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
12 #include <stdint.h>
13 typedef int8_t orc_int8;
14 typedef int16_t orc_int16;
15 typedef int32_t orc_int32;
16 typedef int64_t orc_int64;
17 typedef uint8_t orc_uint8;
18 typedef uint16_t orc_uint16;
19 typedef uint32_t orc_uint32;
20 typedef uint64_t orc_uint64;
21 #define ORC_UINT64_C(x) UINT64_C(x)
22 #elif defined(_MSC_VER)
23 typedef signed __int8 orc_int8;
24 typedef signed __int16 orc_int16;
25 typedef signed __int32 orc_int32;
26 typedef signed __int64 orc_int64;
27 typedef unsigned __int8 orc_uint8;
28 typedef unsigned __int16 orc_uint16;
29 typedef unsigned __int32 orc_uint32;
30 typedef unsigned __int64 orc_uint64;
31 #define ORC_UINT64_C(x) (x##Ui64)
32 #define inline __inline
33 #else
34 #include <limits.h>
35 typedef signed char orc_int8;
36 typedef short orc_int16;
37 typedef int orc_int32;
38 typedef unsigned char orc_uint8;
39 typedef unsigned short orc_uint16;
40 typedef unsigned int orc_uint32;
41 #if INT_MAX == LONG_MAX
42 typedef long long orc_int64;
43 typedef unsigned long long orc_uint64;
44 #define ORC_UINT64_C(x) (x##ULL)
45 #else
46 typedef long orc_int64;
47 typedef unsigned long orc_uint64;
48 #define ORC_UINT64_C(x) (x##UL)
49 #endif
50 #endif
51 typedef union
52 {
53   orc_int16 i;
54   orc_int8 x2[2];
55 } orc_union16;
56 typedef union
57 {
58   orc_int32 i;
59   float f;
60   orc_int16 x2[2];
61   orc_int8 x4[4];
62 } orc_union32;
63 typedef union
64 {
65   orc_int64 i;
66   double f;
67   orc_int32 x2[2];
68   float x2f[2];
69   orc_int16 x4[4];
70 } orc_union64;
71 #endif
72 #ifndef ORC_RESTRICT
73 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
74 #define ORC_RESTRICT restrict
75 #elif defined(__GNUC__) && __GNUC__ >= 4
76 #define ORC_RESTRICT __restrict__
77 #else
78 #define ORC_RESTRICT
79 #endif
80 #endif
81
82 #ifndef ORC_INTERNAL
83 #if defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)
84 #define ORC_INTERNAL __attribute__((visibility("hidden")))
85 #elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)
86 #define ORC_INTERNAL __hidden
87 #elif defined (__GNUC__)
88 #define ORC_INTERNAL __attribute__((visibility("hidden")))
89 #else
90 #define ORC_INTERNAL
91 #endif
92 #endif
93
94
95 #ifndef DISABLE_ORC
96 #include <orc/orc.h>
97 #endif
98 void video_convert_orc_memcpy_2d (guint8 * ORC_RESTRICT d1, int d1_stride,
99     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
100 void video_convert_orc_convert_I420_UYVY (guint8 * ORC_RESTRICT d1,
101     guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1,
102     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3,
103     const guint8 * ORC_RESTRICT s4, int n);
104 void video_convert_orc_convert_I420_YUY2 (guint8 * ORC_RESTRICT d1,
105     guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1,
106     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3,
107     const guint8 * ORC_RESTRICT s4, int n);
108 void video_convert_orc_convert_I420_AYUV (guint8 * ORC_RESTRICT d1,
109     guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1,
110     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3,
111     const guint8 * ORC_RESTRICT s4, int n);
112 void video_convert_orc_convert_YUY2_I420 (guint8 * ORC_RESTRICT d1,
113     guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
114     guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1,
115     const guint8 * ORC_RESTRICT s2, int n);
116 void video_convert_orc_convert_UYVY_YUY2 (guint8 * ORC_RESTRICT d1,
117     int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
118 void video_convert_orc_planar_chroma_420_422 (guint8 * ORC_RESTRICT d1,
119     int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride,
120     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
121 void video_convert_orc_planar_chroma_420_444 (guint8 * ORC_RESTRICT d1,
122     int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride,
123     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
124 void video_convert_orc_planar_chroma_422_444 (guint8 * ORC_RESTRICT d1,
125     int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
126 void video_convert_orc_planar_chroma_444_422 (guint8 * ORC_RESTRICT d1,
127     int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
128 void video_convert_orc_planar_chroma_444_420 (guint8 * ORC_RESTRICT d1,
129     int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride,
130     const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m);
131 void video_convert_orc_planar_chroma_422_420 (guint8 * ORC_RESTRICT d1,
132     int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride,
133     const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m);
134 void video_convert_orc_convert_YUY2_AYUV (guint8 * ORC_RESTRICT d1,
135     int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
136 void video_convert_orc_convert_UYVY_AYUV (guint8 * ORC_RESTRICT d1,
137     int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
138 void video_convert_orc_convert_YUY2_Y42B (guint8 * ORC_RESTRICT d1,
139     int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride,
140     guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1,
141     int s1_stride, int n, int m);
142 void video_convert_orc_convert_UYVY_Y42B (guint8 * ORC_RESTRICT d1,
143     int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride,
144     guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1,
145     int s1_stride, int n, int m);
146 void video_convert_orc_convert_YUY2_Y444 (guint8 * ORC_RESTRICT d1,
147     int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride,
148     guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1,
149     int s1_stride, int n, int m);
150 void video_convert_orc_convert_UYVY_Y444 (guint8 * ORC_RESTRICT d1,
151     int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride,
152     guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1,
153     int s1_stride, int n, int m);
154 void video_convert_orc_convert_UYVY_I420 (guint8 * ORC_RESTRICT d1,
155     guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
156     guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1,
157     const guint8 * ORC_RESTRICT s2, int n);
158 void video_convert_orc_convert_AYUV_I420 (guint8 * ORC_RESTRICT d1,
159     int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride,
160     guint8 * ORC_RESTRICT d3, int d3_stride, guint8 * ORC_RESTRICT d4,
161     int d4_stride, const guint8 * ORC_RESTRICT s1, int s1_stride,
162     const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m);
163 void video_convert_orc_convert_AYUV_YUY2 (guint8 * ORC_RESTRICT d1,
164     int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
165 void video_convert_orc_convert_AYUV_UYVY (guint8 * ORC_RESTRICT d1,
166     int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
167 void video_convert_orc_convert_AYUV_Y42B (guint8 * ORC_RESTRICT d1,
168     int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride,
169     guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1,
170     int s1_stride, int n, int m);
171 void video_convert_orc_convert_AYUV_Y444 (guint8 * ORC_RESTRICT d1,
172     int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride,
173     guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1,
174     int s1_stride, int n, int m);
175 void video_convert_orc_convert_Y42B_YUY2 (guint8 * ORC_RESTRICT d1,
176     int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride,
177     const guint8 * ORC_RESTRICT s2, int s2_stride,
178     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m);
179 void video_convert_orc_convert_Y42B_UYVY (guint8 * ORC_RESTRICT d1,
180     int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride,
181     const guint8 * ORC_RESTRICT s2, int s2_stride,
182     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m);
183 void video_convert_orc_convert_Y42B_AYUV (guint8 * ORC_RESTRICT d1,
184     int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride,
185     const guint8 * ORC_RESTRICT s2, int s2_stride,
186     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m);
187 void video_convert_orc_convert_Y444_YUY2 (guint8 * ORC_RESTRICT d1,
188     int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride,
189     const guint8 * ORC_RESTRICT s2, int s2_stride,
190     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m);
191 void video_convert_orc_convert_Y444_UYVY (guint8 * ORC_RESTRICT d1,
192     int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride,
193     const guint8 * ORC_RESTRICT s2, int s2_stride,
194     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m);
195 void video_convert_orc_convert_Y444_AYUV (guint8 * ORC_RESTRICT d1,
196     int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride,
197     const guint8 * ORC_RESTRICT s2, int s2_stride,
198     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m);
199 void video_convert_orc_convert_AYUV_ARGB (guint8 * ORC_RESTRICT d1,
200     int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1,
201     int p2, int p3, int p4, int p5, int n, int m);
202 void video_convert_orc_convert_AYUV_BGRA (guint8 * ORC_RESTRICT d1,
203     int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1,
204     int p2, int p3, int p4, int p5, int n, int m);
205 void video_convert_orc_convert_AYUV_ABGR (guint8 * ORC_RESTRICT d1,
206     int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1,
207     int p2, int p3, int p4, int p5, int n, int m);
208 void video_convert_orc_convert_AYUV_RGBA (guint8 * ORC_RESTRICT d1,
209     int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1,
210     int p2, int p3, int p4, int p5, int n, int m);
211 void video_convert_orc_convert_I420_BGRA (guint8 * ORC_RESTRICT d1,
212     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
213     const guint8 * ORC_RESTRICT s3, int p1, int p2, int p3, int p4, int p5,
214     int n);
215
216
217 /* begin Orc C target preamble */
218 #define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x)))
219 #define ORC_ABS(a) ((a)<0 ? -(a) : (a))
220 #define ORC_MIN(a,b) ((a)<(b) ? (a) : (b))
221 #define ORC_MAX(a,b) ((a)>(b) ? (a) : (b))
222 #define ORC_SB_MAX 127
223 #define ORC_SB_MIN (-1-ORC_SB_MAX)
224 #define ORC_UB_MAX 255
225 #define ORC_UB_MIN 0
226 #define ORC_SW_MAX 32767
227 #define ORC_SW_MIN (-1-ORC_SW_MAX)
228 #define ORC_UW_MAX 65535
229 #define ORC_UW_MIN 0
230 #define ORC_SL_MAX 2147483647
231 #define ORC_SL_MIN (-1-ORC_SL_MAX)
232 #define ORC_UL_MAX 4294967295U
233 #define ORC_UL_MIN 0
234 #define ORC_CLAMP_SB(x) ORC_CLAMP(x,ORC_SB_MIN,ORC_SB_MAX)
235 #define ORC_CLAMP_UB(x) ORC_CLAMP(x,ORC_UB_MIN,ORC_UB_MAX)
236 #define ORC_CLAMP_SW(x) ORC_CLAMP(x,ORC_SW_MIN,ORC_SW_MAX)
237 #define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX)
238 #define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX)
239 #define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX)
240 #define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8))
241 #define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24))
242 #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))
243 #define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset)))
244 #define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff))
245 #define ORC_ISNAN(x) ((((x)&0x7f800000) == 0x7f800000) && (((x)&0x007fffff) != 0))
246 #define ORC_DENORMAL_DOUBLE(x) ((x) & ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == 0) ? ORC_UINT64_C(0xfff0000000000000) : ORC_UINT64_C(0xffffffffffffffff)))
247 #define ORC_ISNAN_DOUBLE(x) ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == ORC_UINT64_C(0x7ff0000000000000)) && (((x)&ORC_UINT64_C(0x000fffffffffffff)) != 0))
248 #ifndef ORC_RESTRICT
249 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
250 #define ORC_RESTRICT restrict
251 #elif defined(__GNUC__) && __GNUC__ >= 4
252 #define ORC_RESTRICT __restrict__
253 #else
254 #define ORC_RESTRICT
255 #endif
256 #endif
257 /* end Orc C target preamble */
258
259
260
261 /* video_convert_orc_memcpy_2d */
262 #ifdef DISABLE_ORC
263 void
264 video_convert_orc_memcpy_2d (guint8 * ORC_RESTRICT d1, int d1_stride,
265     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
266 {
267   int i;
268   int j;
269   orc_int8 *ORC_RESTRICT ptr0;
270   const orc_int8 *ORC_RESTRICT ptr4;
271   orc_int8 var32;
272   orc_int8 var33;
273
274   for (j = 0; j < m; j++) {
275     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
276     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
277
278
279     for (i = 0; i < n; i++) {
280       /* 0: loadb */
281       var32 = ptr4[i];
282       /* 1: copyb */
283       var33 = var32;
284       /* 2: storeb */
285       ptr0[i] = var33;
286     }
287   }
288
289 }
290
291 #else
292 static void
293 _backup_video_convert_orc_memcpy_2d (OrcExecutor * ORC_RESTRICT ex)
294 {
295   int i;
296   int j;
297   int n = ex->n;
298   int m = ex->params[ORC_VAR_A1];
299   orc_int8 *ORC_RESTRICT ptr0;
300   const orc_int8 *ORC_RESTRICT ptr4;
301   orc_int8 var32;
302   orc_int8 var33;
303
304   for (j = 0; j < m; j++) {
305     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
306     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
307
308
309     for (i = 0; i < n; i++) {
310       /* 0: loadb */
311       var32 = ptr4[i];
312       /* 1: copyb */
313       var33 = var32;
314       /* 2: storeb */
315       ptr0[i] = var33;
316     }
317   }
318
319 }
320
321 void
322 video_convert_orc_memcpy_2d (guint8 * ORC_RESTRICT d1, int d1_stride,
323     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
324 {
325   OrcExecutor _ex, *ex = &_ex;
326   static volatile int p_inited = 0;
327   static OrcCode *c = 0;
328   void (*func) (OrcExecutor *);
329
330   if (!p_inited) {
331     orc_once_mutex_lock ();
332     if (!p_inited) {
333       OrcProgram *p;
334
335 #if 1
336       static const orc_uint8 bc[] = {
337         1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
338         116, 95, 111, 114, 99, 95, 109, 101, 109, 99, 112, 121, 95, 50, 100, 11,
339         1, 1, 12, 1, 1, 42, 0, 4, 2, 0,
340       };
341       p = orc_program_new_from_static_bytecode (bc);
342       orc_program_set_backup_function (p, _backup_video_convert_orc_memcpy_2d);
343 #else
344       p = orc_program_new ();
345       orc_program_set_2d (p);
346       orc_program_set_name (p, "video_convert_orc_memcpy_2d");
347       orc_program_set_backup_function (p, _backup_video_convert_orc_memcpy_2d);
348       orc_program_add_destination (p, 1, "d1");
349       orc_program_add_source (p, 1, "s1");
350
351       orc_program_append_2 (p, "copyb", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1,
352           ORC_VAR_D1);
353 #endif
354
355       orc_program_compile (p);
356       c = orc_program_take_code (p);
357       orc_program_free (p);
358     }
359     p_inited = TRUE;
360     orc_once_mutex_unlock ();
361   }
362   ex->arrays[ORC_VAR_A2] = c;
363   ex->program = 0;
364
365   ex->n = n;
366   ORC_EXECUTOR_M (ex) = m;
367   ex->arrays[ORC_VAR_D1] = d1;
368   ex->params[ORC_VAR_D1] = d1_stride;
369   ex->arrays[ORC_VAR_S1] = (void *) s1;
370   ex->params[ORC_VAR_S1] = s1_stride;
371
372   func = c->exec;
373   func (ex);
374 }
375 #endif
376
377
378 /* video_convert_orc_convert_I420_UYVY */
379 #ifdef DISABLE_ORC
380 void
381 video_convert_orc_convert_I420_UYVY (guint8 * ORC_RESTRICT d1,
382     guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1,
383     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3,
384     const guint8 * ORC_RESTRICT s4, int n)
385 {
386   int i;
387   orc_union32 *ORC_RESTRICT ptr0;
388   orc_union32 *ORC_RESTRICT ptr1;
389   const orc_union16 *ORC_RESTRICT ptr4;
390   const orc_union16 *ORC_RESTRICT ptr5;
391   const orc_int8 *ORC_RESTRICT ptr6;
392   const orc_int8 *ORC_RESTRICT ptr7;
393   orc_int8 var33;
394   orc_int8 var34;
395   orc_union16 var35;
396   orc_union32 var36;
397   orc_union16 var37;
398   orc_union32 var38;
399   orc_union16 var39;
400
401   ptr0 = (orc_union32 *) d1;
402   ptr1 = (orc_union32 *) d2;
403   ptr4 = (orc_union16 *) s1;
404   ptr5 = (orc_union16 *) s2;
405   ptr6 = (orc_int8 *) s3;
406   ptr7 = (orc_int8 *) s4;
407
408
409   for (i = 0; i < n; i++) {
410     /* 0: loadb */
411     var33 = ptr6[i];
412     /* 1: loadb */
413     var34 = ptr7[i];
414     /* 2: mergebw */
415     {
416       orc_union16 _dest;
417       _dest.x2[0] = var33;
418       _dest.x2[1] = var34;
419       var39.i = _dest.i;
420     }
421     /* 3: loadw */
422     var35 = ptr4[i];
423     /* 4: mergebw */
424     {
425       orc_union16 _dest;
426       _dest.x2[0] = var39.x2[0];
427       _dest.x2[1] = var35.x2[0];
428       var36.x2[0] = _dest.i;
429     }
430     {
431       orc_union16 _dest;
432       _dest.x2[0] = var39.x2[1];
433       _dest.x2[1] = var35.x2[1];
434       var36.x2[1] = _dest.i;
435     }
436     /* 5: storel */
437     ptr0[i] = var36;
438     /* 6: loadw */
439     var37 = ptr5[i];
440     /* 7: mergebw */
441     {
442       orc_union16 _dest;
443       _dest.x2[0] = var39.x2[0];
444       _dest.x2[1] = var37.x2[0];
445       var38.x2[0] = _dest.i;
446     }
447     {
448       orc_union16 _dest;
449       _dest.x2[0] = var39.x2[1];
450       _dest.x2[1] = var37.x2[1];
451       var38.x2[1] = _dest.i;
452     }
453     /* 8: storel */
454     ptr1[i] = var38;
455   }
456
457 }
458
459 #else
460 static void
461 _backup_video_convert_orc_convert_I420_UYVY (OrcExecutor * ORC_RESTRICT ex)
462 {
463   int i;
464   int n = ex->n;
465   orc_union32 *ORC_RESTRICT ptr0;
466   orc_union32 *ORC_RESTRICT ptr1;
467   const orc_union16 *ORC_RESTRICT ptr4;
468   const orc_union16 *ORC_RESTRICT ptr5;
469   const orc_int8 *ORC_RESTRICT ptr6;
470   const orc_int8 *ORC_RESTRICT ptr7;
471   orc_int8 var33;
472   orc_int8 var34;
473   orc_union16 var35;
474   orc_union32 var36;
475   orc_union16 var37;
476   orc_union32 var38;
477   orc_union16 var39;
478
479   ptr0 = (orc_union32 *) ex->arrays[0];
480   ptr1 = (orc_union32 *) ex->arrays[1];
481   ptr4 = (orc_union16 *) ex->arrays[4];
482   ptr5 = (orc_union16 *) ex->arrays[5];
483   ptr6 = (orc_int8 *) ex->arrays[6];
484   ptr7 = (orc_int8 *) ex->arrays[7];
485
486
487   for (i = 0; i < n; i++) {
488     /* 0: loadb */
489     var33 = ptr6[i];
490     /* 1: loadb */
491     var34 = ptr7[i];
492     /* 2: mergebw */
493     {
494       orc_union16 _dest;
495       _dest.x2[0] = var33;
496       _dest.x2[1] = var34;
497       var39.i = _dest.i;
498     }
499     /* 3: loadw */
500     var35 = ptr4[i];
501     /* 4: mergebw */
502     {
503       orc_union16 _dest;
504       _dest.x2[0] = var39.x2[0];
505       _dest.x2[1] = var35.x2[0];
506       var36.x2[0] = _dest.i;
507     }
508     {
509       orc_union16 _dest;
510       _dest.x2[0] = var39.x2[1];
511       _dest.x2[1] = var35.x2[1];
512       var36.x2[1] = _dest.i;
513     }
514     /* 5: storel */
515     ptr0[i] = var36;
516     /* 6: loadw */
517     var37 = ptr5[i];
518     /* 7: mergebw */
519     {
520       orc_union16 _dest;
521       _dest.x2[0] = var39.x2[0];
522       _dest.x2[1] = var37.x2[0];
523       var38.x2[0] = _dest.i;
524     }
525     {
526       orc_union16 _dest;
527       _dest.x2[0] = var39.x2[1];
528       _dest.x2[1] = var37.x2[1];
529       var38.x2[1] = _dest.i;
530     }
531     /* 8: storel */
532     ptr1[i] = var38;
533   }
534
535 }
536
537 void
538 video_convert_orc_convert_I420_UYVY (guint8 * ORC_RESTRICT d1,
539     guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1,
540     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3,
541     const guint8 * ORC_RESTRICT s4, int n)
542 {
543   OrcExecutor _ex, *ex = &_ex;
544   static volatile int p_inited = 0;
545   static OrcCode *c = 0;
546   void (*func) (OrcExecutor *);
547
548   if (!p_inited) {
549     orc_once_mutex_lock ();
550     if (!p_inited) {
551       OrcProgram *p;
552
553 #if 1
554       static const orc_uint8 bc[] = {
555         1, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
556         95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 73, 52, 50,
557         48, 95, 85, 89, 86, 89, 11, 4, 4, 11, 4, 4, 12, 2, 2, 12,
558         2, 2, 12, 1, 1, 12, 1, 1, 20, 2, 196, 32, 6, 7, 21, 1,
559         196, 0, 32, 4, 21, 1, 196, 1, 32, 5, 2, 0,
560       };
561       p = orc_program_new_from_static_bytecode (bc);
562       orc_program_set_backup_function (p,
563           _backup_video_convert_orc_convert_I420_UYVY);
564 #else
565       p = orc_program_new ();
566       orc_program_set_name (p, "video_convert_orc_convert_I420_UYVY");
567       orc_program_set_backup_function (p,
568           _backup_video_convert_orc_convert_I420_UYVY);
569       orc_program_add_destination (p, 4, "d1");
570       orc_program_add_destination (p, 4, "d2");
571       orc_program_add_source (p, 2, "s1");
572       orc_program_add_source (p, 2, "s2");
573       orc_program_add_source (p, 1, "s3");
574       orc_program_add_source (p, 1, "s4");
575       orc_program_add_temporary (p, 2, "t1");
576
577       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S3, ORC_VAR_S4,
578           ORC_VAR_D1);
579       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1,
580           ORC_VAR_D1);
581       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D2, ORC_VAR_T1, ORC_VAR_S2,
582           ORC_VAR_D1);
583 #endif
584
585       orc_program_compile (p);
586       c = orc_program_take_code (p);
587       orc_program_free (p);
588     }
589     p_inited = TRUE;
590     orc_once_mutex_unlock ();
591   }
592   ex->arrays[ORC_VAR_A2] = c;
593   ex->program = 0;
594
595   ex->n = n;
596   ex->arrays[ORC_VAR_D1] = d1;
597   ex->arrays[ORC_VAR_D2] = d2;
598   ex->arrays[ORC_VAR_S1] = (void *) s1;
599   ex->arrays[ORC_VAR_S2] = (void *) s2;
600   ex->arrays[ORC_VAR_S3] = (void *) s3;
601   ex->arrays[ORC_VAR_S4] = (void *) s4;
602
603   func = c->exec;
604   func (ex);
605 }
606 #endif
607
608
609 /* video_convert_orc_convert_I420_YUY2 */
610 #ifdef DISABLE_ORC
611 void
612 video_convert_orc_convert_I420_YUY2 (guint8 * ORC_RESTRICT d1,
613     guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1,
614     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3,
615     const guint8 * ORC_RESTRICT s4, int n)
616 {
617   int i;
618   orc_union32 *ORC_RESTRICT ptr0;
619   orc_union32 *ORC_RESTRICT ptr1;
620   const orc_union16 *ORC_RESTRICT ptr4;
621   const orc_union16 *ORC_RESTRICT ptr5;
622   const orc_int8 *ORC_RESTRICT ptr6;
623   const orc_int8 *ORC_RESTRICT ptr7;
624   orc_int8 var33;
625   orc_int8 var34;
626   orc_union16 var35;
627   orc_union32 var36;
628   orc_union16 var37;
629   orc_union32 var38;
630   orc_union16 var39;
631
632   ptr0 = (orc_union32 *) d1;
633   ptr1 = (orc_union32 *) d2;
634   ptr4 = (orc_union16 *) s1;
635   ptr5 = (orc_union16 *) s2;
636   ptr6 = (orc_int8 *) s3;
637   ptr7 = (orc_int8 *) s4;
638
639
640   for (i = 0; i < n; i++) {
641     /* 0: loadb */
642     var33 = ptr6[i];
643     /* 1: loadb */
644     var34 = ptr7[i];
645     /* 2: mergebw */
646     {
647       orc_union16 _dest;
648       _dest.x2[0] = var33;
649       _dest.x2[1] = var34;
650       var39.i = _dest.i;
651     }
652     /* 3: loadw */
653     var35 = ptr4[i];
654     /* 4: mergebw */
655     {
656       orc_union16 _dest;
657       _dest.x2[0] = var35.x2[0];
658       _dest.x2[1] = var39.x2[0];
659       var36.x2[0] = _dest.i;
660     }
661     {
662       orc_union16 _dest;
663       _dest.x2[0] = var35.x2[1];
664       _dest.x2[1] = var39.x2[1];
665       var36.x2[1] = _dest.i;
666     }
667     /* 5: storel */
668     ptr0[i] = var36;
669     /* 6: loadw */
670     var37 = ptr5[i];
671     /* 7: mergebw */
672     {
673       orc_union16 _dest;
674       _dest.x2[0] = var37.x2[0];
675       _dest.x2[1] = var39.x2[0];
676       var38.x2[0] = _dest.i;
677     }
678     {
679       orc_union16 _dest;
680       _dest.x2[0] = var37.x2[1];
681       _dest.x2[1] = var39.x2[1];
682       var38.x2[1] = _dest.i;
683     }
684     /* 8: storel */
685     ptr1[i] = var38;
686   }
687
688 }
689
690 #else
691 static void
692 _backup_video_convert_orc_convert_I420_YUY2 (OrcExecutor * ORC_RESTRICT ex)
693 {
694   int i;
695   int n = ex->n;
696   orc_union32 *ORC_RESTRICT ptr0;
697   orc_union32 *ORC_RESTRICT ptr1;
698   const orc_union16 *ORC_RESTRICT ptr4;
699   const orc_union16 *ORC_RESTRICT ptr5;
700   const orc_int8 *ORC_RESTRICT ptr6;
701   const orc_int8 *ORC_RESTRICT ptr7;
702   orc_int8 var33;
703   orc_int8 var34;
704   orc_union16 var35;
705   orc_union32 var36;
706   orc_union16 var37;
707   orc_union32 var38;
708   orc_union16 var39;
709
710   ptr0 = (orc_union32 *) ex->arrays[0];
711   ptr1 = (orc_union32 *) ex->arrays[1];
712   ptr4 = (orc_union16 *) ex->arrays[4];
713   ptr5 = (orc_union16 *) ex->arrays[5];
714   ptr6 = (orc_int8 *) ex->arrays[6];
715   ptr7 = (orc_int8 *) ex->arrays[7];
716
717
718   for (i = 0; i < n; i++) {
719     /* 0: loadb */
720     var33 = ptr6[i];
721     /* 1: loadb */
722     var34 = ptr7[i];
723     /* 2: mergebw */
724     {
725       orc_union16 _dest;
726       _dest.x2[0] = var33;
727       _dest.x2[1] = var34;
728       var39.i = _dest.i;
729     }
730     /* 3: loadw */
731     var35 = ptr4[i];
732     /* 4: mergebw */
733     {
734       orc_union16 _dest;
735       _dest.x2[0] = var35.x2[0];
736       _dest.x2[1] = var39.x2[0];
737       var36.x2[0] = _dest.i;
738     }
739     {
740       orc_union16 _dest;
741       _dest.x2[0] = var35.x2[1];
742       _dest.x2[1] = var39.x2[1];
743       var36.x2[1] = _dest.i;
744     }
745     /* 5: storel */
746     ptr0[i] = var36;
747     /* 6: loadw */
748     var37 = ptr5[i];
749     /* 7: mergebw */
750     {
751       orc_union16 _dest;
752       _dest.x2[0] = var37.x2[0];
753       _dest.x2[1] = var39.x2[0];
754       var38.x2[0] = _dest.i;
755     }
756     {
757       orc_union16 _dest;
758       _dest.x2[0] = var37.x2[1];
759       _dest.x2[1] = var39.x2[1];
760       var38.x2[1] = _dest.i;
761     }
762     /* 8: storel */
763     ptr1[i] = var38;
764   }
765
766 }
767
768 void
769 video_convert_orc_convert_I420_YUY2 (guint8 * ORC_RESTRICT d1,
770     guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1,
771     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3,
772     const guint8 * ORC_RESTRICT s4, int n)
773 {
774   OrcExecutor _ex, *ex = &_ex;
775   static volatile int p_inited = 0;
776   static OrcCode *c = 0;
777   void (*func) (OrcExecutor *);
778
779   if (!p_inited) {
780     orc_once_mutex_lock ();
781     if (!p_inited) {
782       OrcProgram *p;
783
784 #if 1
785       static const orc_uint8 bc[] = {
786         1, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
787         95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 73, 52, 50,
788         48, 95, 89, 85, 89, 50, 11, 4, 4, 11, 4, 4, 12, 2, 2, 12,
789         2, 2, 12, 1, 1, 12, 1, 1, 20, 2, 196, 32, 6, 7, 21, 1,
790         196, 0, 4, 32, 21, 1, 196, 1, 5, 32, 2, 0,
791       };
792       p = orc_program_new_from_static_bytecode (bc);
793       orc_program_set_backup_function (p,
794           _backup_video_convert_orc_convert_I420_YUY2);
795 #else
796       p = orc_program_new ();
797       orc_program_set_name (p, "video_convert_orc_convert_I420_YUY2");
798       orc_program_set_backup_function (p,
799           _backup_video_convert_orc_convert_I420_YUY2);
800       orc_program_add_destination (p, 4, "d1");
801       orc_program_add_destination (p, 4, "d2");
802       orc_program_add_source (p, 2, "s1");
803       orc_program_add_source (p, 2, "s2");
804       orc_program_add_source (p, 1, "s3");
805       orc_program_add_source (p, 1, "s4");
806       orc_program_add_temporary (p, 2, "t1");
807
808       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S3, ORC_VAR_S4,
809           ORC_VAR_D1);
810       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1,
811           ORC_VAR_D1);
812       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D2, ORC_VAR_S2, ORC_VAR_T1,
813           ORC_VAR_D1);
814 #endif
815
816       orc_program_compile (p);
817       c = orc_program_take_code (p);
818       orc_program_free (p);
819     }
820     p_inited = TRUE;
821     orc_once_mutex_unlock ();
822   }
823   ex->arrays[ORC_VAR_A2] = c;
824   ex->program = 0;
825
826   ex->n = n;
827   ex->arrays[ORC_VAR_D1] = d1;
828   ex->arrays[ORC_VAR_D2] = d2;
829   ex->arrays[ORC_VAR_S1] = (void *) s1;
830   ex->arrays[ORC_VAR_S2] = (void *) s2;
831   ex->arrays[ORC_VAR_S3] = (void *) s3;
832   ex->arrays[ORC_VAR_S4] = (void *) s4;
833
834   func = c->exec;
835   func (ex);
836 }
837 #endif
838
839
840 /* video_convert_orc_convert_I420_AYUV */
841 #ifdef DISABLE_ORC
842 void
843 video_convert_orc_convert_I420_AYUV (guint8 * ORC_RESTRICT d1,
844     guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1,
845     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3,
846     const guint8 * ORC_RESTRICT s4, int n)
847 {
848   int i;
849   orc_union32 *ORC_RESTRICT ptr0;
850   orc_union32 *ORC_RESTRICT ptr1;
851   const orc_int8 *ORC_RESTRICT ptr4;
852   const orc_int8 *ORC_RESTRICT ptr5;
853   const orc_int8 *ORC_RESTRICT ptr6;
854   const orc_int8 *ORC_RESTRICT ptr7;
855 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
856   volatile orc_int8 var36;
857 #else
858   orc_int8 var36;
859 #endif
860   orc_int8 var37;
861   orc_union32 var38;
862 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
863   volatile orc_int8 var39;
864 #else
865   orc_int8 var39;
866 #endif
867   orc_int8 var40;
868   orc_union32 var41;
869   orc_int8 var42;
870   orc_int8 var43;
871   orc_union16 var44;
872   orc_union16 var45;
873   orc_union16 var46;
874
875   ptr0 = (orc_union32 *) d1;
876   ptr1 = (orc_union32 *) d2;
877   ptr4 = (orc_int8 *) s1;
878   ptr5 = (orc_int8 *) s2;
879   ptr6 = (orc_int8 *) s3;
880   ptr7 = (orc_int8 *) s4;
881
882   /* 3: loadpb */
883   var36 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
884   /* 8: loadpb */
885   var39 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
886
887   for (i = 0; i < n; i++) {
888     /* 0: loadupdb */
889     var42 = ptr6[i >> 1];
890     /* 1: loadupdb */
891     var43 = ptr7[i >> 1];
892     /* 2: mergebw */
893     {
894       orc_union16 _dest;
895       _dest.x2[0] = var42;
896       _dest.x2[1] = var43;
897       var44.i = _dest.i;
898     }
899     /* 4: loadb */
900     var37 = ptr4[i];
901     /* 5: mergebw */
902     {
903       orc_union16 _dest;
904       _dest.x2[0] = var36;
905       _dest.x2[1] = var37;
906       var45.i = _dest.i;
907     }
908     /* 6: mergewl */
909     {
910       orc_union32 _dest;
911       _dest.x2[0] = var45.i;
912       _dest.x2[1] = var44.i;
913       var38.i = _dest.i;
914     }
915     /* 7: storel */
916     ptr0[i] = var38;
917     /* 9: loadb */
918     var40 = ptr5[i];
919     /* 10: mergebw */
920     {
921       orc_union16 _dest;
922       _dest.x2[0] = var39;
923       _dest.x2[1] = var40;
924       var46.i = _dest.i;
925     }
926     /* 11: mergewl */
927     {
928       orc_union32 _dest;
929       _dest.x2[0] = var46.i;
930       _dest.x2[1] = var44.i;
931       var41.i = _dest.i;
932     }
933     /* 12: storel */
934     ptr1[i] = var41;
935   }
936
937 }
938
939 #else
940 static void
941 _backup_video_convert_orc_convert_I420_AYUV (OrcExecutor * ORC_RESTRICT ex)
942 {
943   int i;
944   int n = ex->n;
945   orc_union32 *ORC_RESTRICT ptr0;
946   orc_union32 *ORC_RESTRICT ptr1;
947   const orc_int8 *ORC_RESTRICT ptr4;
948   const orc_int8 *ORC_RESTRICT ptr5;
949   const orc_int8 *ORC_RESTRICT ptr6;
950   const orc_int8 *ORC_RESTRICT ptr7;
951 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
952   volatile orc_int8 var36;
953 #else
954   orc_int8 var36;
955 #endif
956   orc_int8 var37;
957   orc_union32 var38;
958 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
959   volatile orc_int8 var39;
960 #else
961   orc_int8 var39;
962 #endif
963   orc_int8 var40;
964   orc_union32 var41;
965   orc_int8 var42;
966   orc_int8 var43;
967   orc_union16 var44;
968   orc_union16 var45;
969   orc_union16 var46;
970
971   ptr0 = (orc_union32 *) ex->arrays[0];
972   ptr1 = (orc_union32 *) ex->arrays[1];
973   ptr4 = (orc_int8 *) ex->arrays[4];
974   ptr5 = (orc_int8 *) ex->arrays[5];
975   ptr6 = (orc_int8 *) ex->arrays[6];
976   ptr7 = (orc_int8 *) ex->arrays[7];
977
978   /* 3: loadpb */
979   var36 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
980   /* 8: loadpb */
981   var39 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
982
983   for (i = 0; i < n; i++) {
984     /* 0: loadupdb */
985     var42 = ptr6[i >> 1];
986     /* 1: loadupdb */
987     var43 = ptr7[i >> 1];
988     /* 2: mergebw */
989     {
990       orc_union16 _dest;
991       _dest.x2[0] = var42;
992       _dest.x2[1] = var43;
993       var44.i = _dest.i;
994     }
995     /* 4: loadb */
996     var37 = ptr4[i];
997     /* 5: mergebw */
998     {
999       orc_union16 _dest;
1000       _dest.x2[0] = var36;
1001       _dest.x2[1] = var37;
1002       var45.i = _dest.i;
1003     }
1004     /* 6: mergewl */
1005     {
1006       orc_union32 _dest;
1007       _dest.x2[0] = var45.i;
1008       _dest.x2[1] = var44.i;
1009       var38.i = _dest.i;
1010     }
1011     /* 7: storel */
1012     ptr0[i] = var38;
1013     /* 9: loadb */
1014     var40 = ptr5[i];
1015     /* 10: mergebw */
1016     {
1017       orc_union16 _dest;
1018       _dest.x2[0] = var39;
1019       _dest.x2[1] = var40;
1020       var46.i = _dest.i;
1021     }
1022     /* 11: mergewl */
1023     {
1024       orc_union32 _dest;
1025       _dest.x2[0] = var46.i;
1026       _dest.x2[1] = var44.i;
1027       var41.i = _dest.i;
1028     }
1029     /* 12: storel */
1030     ptr1[i] = var41;
1031   }
1032
1033 }
1034
1035 void
1036 video_convert_orc_convert_I420_AYUV (guint8 * ORC_RESTRICT d1,
1037     guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1,
1038     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3,
1039     const guint8 * ORC_RESTRICT s4, int n)
1040 {
1041   OrcExecutor _ex, *ex = &_ex;
1042   static volatile int p_inited = 0;
1043   static OrcCode *c = 0;
1044   void (*func) (OrcExecutor *);
1045
1046   if (!p_inited) {
1047     orc_once_mutex_lock ();
1048     if (!p_inited) {
1049       OrcProgram *p;
1050
1051 #if 1
1052       static const orc_uint8 bc[] = {
1053         1, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
1054         95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 73, 52, 50,
1055         48, 95, 65, 89, 85, 86, 11, 4, 4, 11, 4, 4, 12, 1, 1, 12,
1056         1, 1, 12, 1, 1, 12, 1, 1, 14, 1, 255, 0, 0, 0, 20, 2,
1057         20, 2, 20, 1, 20, 1, 45, 34, 6, 45, 35, 7, 196, 32, 34, 35,
1058         196, 33, 16, 4, 195, 0, 33, 32, 196, 33, 16, 5, 195, 1, 33, 32,
1059         2, 0,
1060       };
1061       p = orc_program_new_from_static_bytecode (bc);
1062       orc_program_set_backup_function (p,
1063           _backup_video_convert_orc_convert_I420_AYUV);
1064 #else
1065       p = orc_program_new ();
1066       orc_program_set_name (p, "video_convert_orc_convert_I420_AYUV");
1067       orc_program_set_backup_function (p,
1068           _backup_video_convert_orc_convert_I420_AYUV);
1069       orc_program_add_destination (p, 4, "d1");
1070       orc_program_add_destination (p, 4, "d2");
1071       orc_program_add_source (p, 1, "s1");
1072       orc_program_add_source (p, 1, "s2");
1073       orc_program_add_source (p, 1, "s3");
1074       orc_program_add_source (p, 1, "s4");
1075       orc_program_add_constant (p, 1, 0x000000ff, "c1");
1076       orc_program_add_temporary (p, 2, "t1");
1077       orc_program_add_temporary (p, 2, "t2");
1078       orc_program_add_temporary (p, 1, "t3");
1079       orc_program_add_temporary (p, 1, "t4");
1080
1081       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T3, ORC_VAR_S3,
1082           ORC_VAR_D1, ORC_VAR_D1);
1083       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T4, ORC_VAR_S4,
1084           ORC_VAR_D1, ORC_VAR_D1);
1085       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4,
1086           ORC_VAR_D1);
1087       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1,
1088           ORC_VAR_D1);
1089       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
1090           ORC_VAR_D1);
1091       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S2,
1092           ORC_VAR_D1);
1093       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_T1,
1094           ORC_VAR_D1);
1095 #endif
1096
1097       orc_program_compile (p);
1098       c = orc_program_take_code (p);
1099       orc_program_free (p);
1100     }
1101     p_inited = TRUE;
1102     orc_once_mutex_unlock ();
1103   }
1104   ex->arrays[ORC_VAR_A2] = c;
1105   ex->program = 0;
1106
1107   ex->n = n;
1108   ex->arrays[ORC_VAR_D1] = d1;
1109   ex->arrays[ORC_VAR_D2] = d2;
1110   ex->arrays[ORC_VAR_S1] = (void *) s1;
1111   ex->arrays[ORC_VAR_S2] = (void *) s2;
1112   ex->arrays[ORC_VAR_S3] = (void *) s3;
1113   ex->arrays[ORC_VAR_S4] = (void *) s4;
1114
1115   func = c->exec;
1116   func (ex);
1117 }
1118 #endif
1119
1120
1121 /* video_convert_orc_convert_YUY2_I420 */
1122 #ifdef DISABLE_ORC
1123 void
1124 video_convert_orc_convert_YUY2_I420 (guint8 * ORC_RESTRICT d1,
1125     guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
1126     guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1,
1127     const guint8 * ORC_RESTRICT s2, int n)
1128 {
1129   int i;
1130   orc_union16 *ORC_RESTRICT ptr0;
1131   orc_union16 *ORC_RESTRICT ptr1;
1132   orc_int8 *ORC_RESTRICT ptr2;
1133   orc_int8 *ORC_RESTRICT ptr3;
1134   const orc_union32 *ORC_RESTRICT ptr4;
1135   const orc_union32 *ORC_RESTRICT ptr5;
1136   orc_union32 var35;
1137   orc_union32 var36;
1138   orc_int8 var37;
1139   orc_int8 var38;
1140   orc_union16 var39;
1141   orc_union16 var40;
1142   orc_union16 var41;
1143   orc_union16 var42;
1144   orc_union16 var43;
1145
1146   ptr0 = (orc_union16 *) d1;
1147   ptr1 = (orc_union16 *) d2;
1148   ptr2 = (orc_int8 *) d3;
1149   ptr3 = (orc_int8 *) d4;
1150   ptr4 = (orc_union32 *) s1;
1151   ptr5 = (orc_union32 *) s2;
1152
1153
1154   for (i = 0; i < n; i++) {
1155     /* 0: loadl */
1156     var35 = ptr4[i];
1157     /* 1: splitwb */
1158     {
1159       orc_union16 _src;
1160       _src.i = var35.x2[0];
1161       var39.x2[0] = _src.x2[1];
1162       var40.x2[0] = _src.x2[0];
1163     }
1164     {
1165       orc_union16 _src;
1166       _src.i = var35.x2[1];
1167       var39.x2[1] = _src.x2[1];
1168       var40.x2[1] = _src.x2[0];
1169     }
1170     /* 2: storew */
1171     ptr0[i] = var40;
1172     /* 3: loadl */
1173     var36 = ptr5[i];
1174     /* 4: splitwb */
1175     {
1176       orc_union16 _src;
1177       _src.i = var36.x2[0];
1178       var41.x2[0] = _src.x2[1];
1179       var42.x2[0] = _src.x2[0];
1180     }
1181     {
1182       orc_union16 _src;
1183       _src.i = var36.x2[1];
1184       var41.x2[1] = _src.x2[1];
1185       var42.x2[1] = _src.x2[0];
1186     }
1187     /* 5: storew */
1188     ptr1[i] = var42;
1189     /* 6: avgub */
1190     var43.x2[0] = ((orc_uint8) var39.x2[0] + (orc_uint8) var41.x2[0] + 1) >> 1;
1191     var43.x2[1] = ((orc_uint8) var39.x2[1] + (orc_uint8) var41.x2[1] + 1) >> 1;
1192     /* 7: splitwb */
1193     {
1194       orc_union16 _src;
1195       _src.i = var43.i;
1196       var37 = _src.x2[1];
1197       var38 = _src.x2[0];
1198     }
1199     /* 8: storeb */
1200     ptr3[i] = var37;
1201     /* 9: storeb */
1202     ptr2[i] = var38;
1203   }
1204
1205 }
1206
1207 #else
1208 static void
1209 _backup_video_convert_orc_convert_YUY2_I420 (OrcExecutor * ORC_RESTRICT ex)
1210 {
1211   int i;
1212   int n = ex->n;
1213   orc_union16 *ORC_RESTRICT ptr0;
1214   orc_union16 *ORC_RESTRICT ptr1;
1215   orc_int8 *ORC_RESTRICT ptr2;
1216   orc_int8 *ORC_RESTRICT ptr3;
1217   const orc_union32 *ORC_RESTRICT ptr4;
1218   const orc_union32 *ORC_RESTRICT ptr5;
1219   orc_union32 var35;
1220   orc_union32 var36;
1221   orc_int8 var37;
1222   orc_int8 var38;
1223   orc_union16 var39;
1224   orc_union16 var40;
1225   orc_union16 var41;
1226   orc_union16 var42;
1227   orc_union16 var43;
1228
1229   ptr0 = (orc_union16 *) ex->arrays[0];
1230   ptr1 = (orc_union16 *) ex->arrays[1];
1231   ptr2 = (orc_int8 *) ex->arrays[2];
1232   ptr3 = (orc_int8 *) ex->arrays[3];
1233   ptr4 = (orc_union32 *) ex->arrays[4];
1234   ptr5 = (orc_union32 *) ex->arrays[5];
1235
1236
1237   for (i = 0; i < n; i++) {
1238     /* 0: loadl */
1239     var35 = ptr4[i];
1240     /* 1: splitwb */
1241     {
1242       orc_union16 _src;
1243       _src.i = var35.x2[0];
1244       var39.x2[0] = _src.x2[1];
1245       var40.x2[0] = _src.x2[0];
1246     }
1247     {
1248       orc_union16 _src;
1249       _src.i = var35.x2[1];
1250       var39.x2[1] = _src.x2[1];
1251       var40.x2[1] = _src.x2[0];
1252     }
1253     /* 2: storew */
1254     ptr0[i] = var40;
1255     /* 3: loadl */
1256     var36 = ptr5[i];
1257     /* 4: splitwb */
1258     {
1259       orc_union16 _src;
1260       _src.i = var36.x2[0];
1261       var41.x2[0] = _src.x2[1];
1262       var42.x2[0] = _src.x2[0];
1263     }
1264     {
1265       orc_union16 _src;
1266       _src.i = var36.x2[1];
1267       var41.x2[1] = _src.x2[1];
1268       var42.x2[1] = _src.x2[0];
1269     }
1270     /* 5: storew */
1271     ptr1[i] = var42;
1272     /* 6: avgub */
1273     var43.x2[0] = ((orc_uint8) var39.x2[0] + (orc_uint8) var41.x2[0] + 1) >> 1;
1274     var43.x2[1] = ((orc_uint8) var39.x2[1] + (orc_uint8) var41.x2[1] + 1) >> 1;
1275     /* 7: splitwb */
1276     {
1277       orc_union16 _src;
1278       _src.i = var43.i;
1279       var37 = _src.x2[1];
1280       var38 = _src.x2[0];
1281     }
1282     /* 8: storeb */
1283     ptr3[i] = var37;
1284     /* 9: storeb */
1285     ptr2[i] = var38;
1286   }
1287
1288 }
1289
1290 void
1291 video_convert_orc_convert_YUY2_I420 (guint8 * ORC_RESTRICT d1,
1292     guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
1293     guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1,
1294     const guint8 * ORC_RESTRICT s2, int n)
1295 {
1296   OrcExecutor _ex, *ex = &_ex;
1297   static volatile int p_inited = 0;
1298   static OrcCode *c = 0;
1299   void (*func) (OrcExecutor *);
1300
1301   if (!p_inited) {
1302     orc_once_mutex_lock ();
1303     if (!p_inited) {
1304       OrcProgram *p;
1305
1306 #if 1
1307       static const orc_uint8 bc[] = {
1308         1, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
1309         95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 89, 85, 89,
1310         50, 95, 73, 52, 50, 48, 11, 2, 2, 11, 2, 2, 11, 1, 1, 11,
1311         1, 1, 12, 4, 4, 12, 4, 4, 20, 2, 20, 2, 20, 2, 21, 1,
1312         199, 32, 34, 4, 97, 0, 34, 21, 1, 199, 33, 34, 5, 97, 1, 34,
1313         21, 1, 39, 32, 32, 33, 199, 3, 2, 32, 2, 0,
1314       };
1315       p = orc_program_new_from_static_bytecode (bc);
1316       orc_program_set_backup_function (p,
1317           _backup_video_convert_orc_convert_YUY2_I420);
1318 #else
1319       p = orc_program_new ();
1320       orc_program_set_name (p, "video_convert_orc_convert_YUY2_I420");
1321       orc_program_set_backup_function (p,
1322           _backup_video_convert_orc_convert_YUY2_I420);
1323       orc_program_add_destination (p, 2, "d1");
1324       orc_program_add_destination (p, 2, "d2");
1325       orc_program_add_destination (p, 1, "d3");
1326       orc_program_add_destination (p, 1, "d4");
1327       orc_program_add_source (p, 4, "s1");
1328       orc_program_add_source (p, 4, "s2");
1329       orc_program_add_temporary (p, 2, "t1");
1330       orc_program_add_temporary (p, 2, "t2");
1331       orc_program_add_temporary (p, 2, "t3");
1332
1333       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_S1,
1334           ORC_VAR_D1);
1335       orc_program_append_2 (p, "storew", 0, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_D1,
1336           ORC_VAR_D1);
1337       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_S2,
1338           ORC_VAR_D1);
1339       orc_program_append_2 (p, "storew", 0, ORC_VAR_D2, ORC_VAR_T3, ORC_VAR_D1,
1340           ORC_VAR_D1);
1341       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
1342           ORC_VAR_D1);
1343       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D4, ORC_VAR_D3, ORC_VAR_T1,
1344           ORC_VAR_D1);
1345 #endif
1346
1347       orc_program_compile (p);
1348       c = orc_program_take_code (p);
1349       orc_program_free (p);
1350     }
1351     p_inited = TRUE;
1352     orc_once_mutex_unlock ();
1353   }
1354   ex->arrays[ORC_VAR_A2] = c;
1355   ex->program = 0;
1356
1357   ex->n = n;
1358   ex->arrays[ORC_VAR_D1] = d1;
1359   ex->arrays[ORC_VAR_D2] = d2;
1360   ex->arrays[ORC_VAR_D3] = d3;
1361   ex->arrays[ORC_VAR_D4] = d4;
1362   ex->arrays[ORC_VAR_S1] = (void *) s1;
1363   ex->arrays[ORC_VAR_S2] = (void *) s2;
1364
1365   func = c->exec;
1366   func (ex);
1367 }
1368 #endif
1369
1370
1371 /* video_convert_orc_convert_UYVY_YUY2 */
1372 #ifdef DISABLE_ORC
1373 void
1374 video_convert_orc_convert_UYVY_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
1375     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
1376 {
1377   int i;
1378   int j;
1379   orc_union32 *ORC_RESTRICT ptr0;
1380   const orc_union32 *ORC_RESTRICT ptr4;
1381   orc_union32 var32;
1382   orc_union32 var33;
1383
1384   for (j = 0; j < m; j++) {
1385     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
1386     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
1387
1388
1389     for (i = 0; i < n; i++) {
1390       /* 0: loadl */
1391       var32 = ptr4[i];
1392       /* 1: swapw */
1393       var33.x2[0] = ORC_SWAP_W (var32.x2[0]);
1394       var33.x2[1] = ORC_SWAP_W (var32.x2[1]);
1395       /* 2: storel */
1396       ptr0[i] = var33;
1397     }
1398   }
1399
1400 }
1401
1402 #else
1403 static void
1404 _backup_video_convert_orc_convert_UYVY_YUY2 (OrcExecutor * ORC_RESTRICT ex)
1405 {
1406   int i;
1407   int j;
1408   int n = ex->n;
1409   int m = ex->params[ORC_VAR_A1];
1410   orc_union32 *ORC_RESTRICT ptr0;
1411   const orc_union32 *ORC_RESTRICT ptr4;
1412   orc_union32 var32;
1413   orc_union32 var33;
1414
1415   for (j = 0; j < m; j++) {
1416     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
1417     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
1418
1419
1420     for (i = 0; i < n; i++) {
1421       /* 0: loadl */
1422       var32 = ptr4[i];
1423       /* 1: swapw */
1424       var33.x2[0] = ORC_SWAP_W (var32.x2[0]);
1425       var33.x2[1] = ORC_SWAP_W (var32.x2[1]);
1426       /* 2: storel */
1427       ptr0[i] = var33;
1428     }
1429   }
1430
1431 }
1432
1433 void
1434 video_convert_orc_convert_UYVY_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
1435     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
1436 {
1437   OrcExecutor _ex, *ex = &_ex;
1438   static volatile int p_inited = 0;
1439   static OrcCode *c = 0;
1440   void (*func) (OrcExecutor *);
1441
1442   if (!p_inited) {
1443     orc_once_mutex_lock ();
1444     if (!p_inited) {
1445       OrcProgram *p;
1446
1447 #if 1
1448       static const orc_uint8 bc[] = {
1449         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
1450         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 85, 89,
1451         86, 89, 95, 89, 85, 89, 50, 11, 4, 4, 12, 4, 4, 21, 1, 183,
1452         0, 4, 2, 0,
1453       };
1454       p = orc_program_new_from_static_bytecode (bc);
1455       orc_program_set_backup_function (p,
1456           _backup_video_convert_orc_convert_UYVY_YUY2);
1457 #else
1458       p = orc_program_new ();
1459       orc_program_set_2d (p);
1460       orc_program_set_name (p, "video_convert_orc_convert_UYVY_YUY2");
1461       orc_program_set_backup_function (p,
1462           _backup_video_convert_orc_convert_UYVY_YUY2);
1463       orc_program_add_destination (p, 4, "d1");
1464       orc_program_add_source (p, 4, "s1");
1465
1466       orc_program_append_2 (p, "swapw", 1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1,
1467           ORC_VAR_D1);
1468 #endif
1469
1470       orc_program_compile (p);
1471       c = orc_program_take_code (p);
1472       orc_program_free (p);
1473     }
1474     p_inited = TRUE;
1475     orc_once_mutex_unlock ();
1476   }
1477   ex->arrays[ORC_VAR_A2] = c;
1478   ex->program = 0;
1479
1480   ex->n = n;
1481   ORC_EXECUTOR_M (ex) = m;
1482   ex->arrays[ORC_VAR_D1] = d1;
1483   ex->params[ORC_VAR_D1] = d1_stride;
1484   ex->arrays[ORC_VAR_S1] = (void *) s1;
1485   ex->params[ORC_VAR_S1] = s1_stride;
1486
1487   func = c->exec;
1488   func (ex);
1489 }
1490 #endif
1491
1492
1493 /* video_convert_orc_planar_chroma_420_422 */
1494 #ifdef DISABLE_ORC
1495 void
1496 video_convert_orc_planar_chroma_420_422 (guint8 * ORC_RESTRICT d1,
1497     int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride,
1498     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
1499 {
1500   int i;
1501   int j;
1502   orc_int8 *ORC_RESTRICT ptr0;
1503   orc_int8 *ORC_RESTRICT ptr1;
1504   const orc_int8 *ORC_RESTRICT ptr4;
1505   orc_int8 var32;
1506   orc_int8 var33;
1507   orc_int8 var34;
1508   orc_int8 var35;
1509
1510   for (j = 0; j < m; j++) {
1511     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
1512     ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
1513     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
1514
1515
1516     for (i = 0; i < n; i++) {
1517       /* 0: loadb */
1518       var32 = ptr4[i];
1519       /* 1: copyb */
1520       var33 = var32;
1521       /* 2: storeb */
1522       ptr0[i] = var33;
1523       /* 3: loadb */
1524       var34 = ptr4[i];
1525       /* 4: copyb */
1526       var35 = var34;
1527       /* 5: storeb */
1528       ptr1[i] = var35;
1529     }
1530   }
1531
1532 }
1533
1534 #else
1535 static void
1536 _backup_video_convert_orc_planar_chroma_420_422 (OrcExecutor * ORC_RESTRICT ex)
1537 {
1538   int i;
1539   int j;
1540   int n = ex->n;
1541   int m = ex->params[ORC_VAR_A1];
1542   orc_int8 *ORC_RESTRICT ptr0;
1543   orc_int8 *ORC_RESTRICT ptr1;
1544   const orc_int8 *ORC_RESTRICT ptr4;
1545   orc_int8 var32;
1546   orc_int8 var33;
1547   orc_int8 var34;
1548   orc_int8 var35;
1549
1550   for (j = 0; j < m; j++) {
1551     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
1552     ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
1553     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
1554
1555
1556     for (i = 0; i < n; i++) {
1557       /* 0: loadb */
1558       var32 = ptr4[i];
1559       /* 1: copyb */
1560       var33 = var32;
1561       /* 2: storeb */
1562       ptr0[i] = var33;
1563       /* 3: loadb */
1564       var34 = ptr4[i];
1565       /* 4: copyb */
1566       var35 = var34;
1567       /* 5: storeb */
1568       ptr1[i] = var35;
1569     }
1570   }
1571
1572 }
1573
1574 void
1575 video_convert_orc_planar_chroma_420_422 (guint8 * ORC_RESTRICT d1,
1576     int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride,
1577     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
1578 {
1579   OrcExecutor _ex, *ex = &_ex;
1580   static volatile int p_inited = 0;
1581   static OrcCode *c = 0;
1582   void (*func) (OrcExecutor *);
1583
1584   if (!p_inited) {
1585     orc_once_mutex_lock ();
1586     if (!p_inited) {
1587       OrcProgram *p;
1588
1589 #if 1
1590       static const orc_uint8 bc[] = {
1591         1, 7, 9, 39, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
1592         116, 95, 111, 114, 99, 95, 112, 108, 97, 110, 97, 114, 95, 99, 104, 114,
1593         111, 109, 97, 95, 52, 50, 48, 95, 52, 50, 50, 11, 1, 1, 11, 1,
1594         1, 12, 1, 1, 42, 0, 4, 42, 1, 4, 2, 0,
1595       };
1596       p = orc_program_new_from_static_bytecode (bc);
1597       orc_program_set_backup_function (p,
1598           _backup_video_convert_orc_planar_chroma_420_422);
1599 #else
1600       p = orc_program_new ();
1601       orc_program_set_2d (p);
1602       orc_program_set_name (p, "video_convert_orc_planar_chroma_420_422");
1603       orc_program_set_backup_function (p,
1604           _backup_video_convert_orc_planar_chroma_420_422);
1605       orc_program_add_destination (p, 1, "d1");
1606       orc_program_add_destination (p, 1, "d2");
1607       orc_program_add_source (p, 1, "s1");
1608
1609       orc_program_append_2 (p, "copyb", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1,
1610           ORC_VAR_D1);
1611       orc_program_append_2 (p, "copyb", 0, ORC_VAR_D2, ORC_VAR_S1, ORC_VAR_D1,
1612           ORC_VAR_D1);
1613 #endif
1614
1615       orc_program_compile (p);
1616       c = orc_program_take_code (p);
1617       orc_program_free (p);
1618     }
1619     p_inited = TRUE;
1620     orc_once_mutex_unlock ();
1621   }
1622   ex->arrays[ORC_VAR_A2] = c;
1623   ex->program = 0;
1624
1625   ex->n = n;
1626   ORC_EXECUTOR_M (ex) = m;
1627   ex->arrays[ORC_VAR_D1] = d1;
1628   ex->params[ORC_VAR_D1] = d1_stride;
1629   ex->arrays[ORC_VAR_D2] = d2;
1630   ex->params[ORC_VAR_D2] = d2_stride;
1631   ex->arrays[ORC_VAR_S1] = (void *) s1;
1632   ex->params[ORC_VAR_S1] = s1_stride;
1633
1634   func = c->exec;
1635   func (ex);
1636 }
1637 #endif
1638
1639
1640 /* video_convert_orc_planar_chroma_420_444 */
1641 #ifdef DISABLE_ORC
1642 void
1643 video_convert_orc_planar_chroma_420_444 (guint8 * ORC_RESTRICT d1,
1644     int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride,
1645     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
1646 {
1647   int i;
1648   int j;
1649   orc_union16 *ORC_RESTRICT ptr0;
1650   orc_union16 *ORC_RESTRICT ptr1;
1651   const orc_int8 *ORC_RESTRICT ptr4;
1652   orc_int8 var33;
1653   orc_union16 var34;
1654
1655   for (j = 0; j < m; j++) {
1656     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
1657     ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
1658     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
1659
1660
1661     for (i = 0; i < n; i++) {
1662       /* 0: loadb */
1663       var33 = ptr4[i];
1664       /* 1: splatbw */
1665       var34.i = ((var33 & 0xff) << 8) | (var33 & 0xff);
1666       /* 2: storew */
1667       ptr0[i] = var34;
1668       /* 3: storew */
1669       ptr1[i] = var34;
1670     }
1671   }
1672
1673 }
1674
1675 #else
1676 static void
1677 _backup_video_convert_orc_planar_chroma_420_444 (OrcExecutor * ORC_RESTRICT ex)
1678 {
1679   int i;
1680   int j;
1681   int n = ex->n;
1682   int m = ex->params[ORC_VAR_A1];
1683   orc_union16 *ORC_RESTRICT ptr0;
1684   orc_union16 *ORC_RESTRICT ptr1;
1685   const orc_int8 *ORC_RESTRICT ptr4;
1686   orc_int8 var33;
1687   orc_union16 var34;
1688
1689   for (j = 0; j < m; j++) {
1690     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
1691     ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
1692     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
1693
1694
1695     for (i = 0; i < n; i++) {
1696       /* 0: loadb */
1697       var33 = ptr4[i];
1698       /* 1: splatbw */
1699       var34.i = ((var33 & 0xff) << 8) | (var33 & 0xff);
1700       /* 2: storew */
1701       ptr0[i] = var34;
1702       /* 3: storew */
1703       ptr1[i] = var34;
1704     }
1705   }
1706
1707 }
1708
1709 void
1710 video_convert_orc_planar_chroma_420_444 (guint8 * ORC_RESTRICT d1,
1711     int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride,
1712     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
1713 {
1714   OrcExecutor _ex, *ex = &_ex;
1715   static volatile int p_inited = 0;
1716   static OrcCode *c = 0;
1717   void (*func) (OrcExecutor *);
1718
1719   if (!p_inited) {
1720     orc_once_mutex_lock ();
1721     if (!p_inited) {
1722       OrcProgram *p;
1723
1724 #if 1
1725       static const orc_uint8 bc[] = {
1726         1, 7, 9, 39, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
1727         116, 95, 111, 114, 99, 95, 112, 108, 97, 110, 97, 114, 95, 99, 104, 114,
1728         111, 109, 97, 95, 52, 50, 48, 95, 52, 52, 52, 11, 2, 2, 11, 2,
1729         2, 12, 1, 1, 20, 2, 151, 32, 4, 97, 0, 32, 97, 1, 32, 2,
1730         0,
1731       };
1732       p = orc_program_new_from_static_bytecode (bc);
1733       orc_program_set_backup_function (p,
1734           _backup_video_convert_orc_planar_chroma_420_444);
1735 #else
1736       p = orc_program_new ();
1737       orc_program_set_2d (p);
1738       orc_program_set_name (p, "video_convert_orc_planar_chroma_420_444");
1739       orc_program_set_backup_function (p,
1740           _backup_video_convert_orc_planar_chroma_420_444);
1741       orc_program_add_destination (p, 2, "d1");
1742       orc_program_add_destination (p, 2, "d2");
1743       orc_program_add_source (p, 1, "s1");
1744       orc_program_add_temporary (p, 2, "t1");
1745
1746       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
1747           ORC_VAR_D1);
1748       orc_program_append_2 (p, "storew", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
1749           ORC_VAR_D1);
1750       orc_program_append_2 (p, "storew", 0, ORC_VAR_D2, ORC_VAR_T1, ORC_VAR_D1,
1751           ORC_VAR_D1);
1752 #endif
1753
1754       orc_program_compile (p);
1755       c = orc_program_take_code (p);
1756       orc_program_free (p);
1757     }
1758     p_inited = TRUE;
1759     orc_once_mutex_unlock ();
1760   }
1761   ex->arrays[ORC_VAR_A2] = c;
1762   ex->program = 0;
1763
1764   ex->n = n;
1765   ORC_EXECUTOR_M (ex) = m;
1766   ex->arrays[ORC_VAR_D1] = d1;
1767   ex->params[ORC_VAR_D1] = d1_stride;
1768   ex->arrays[ORC_VAR_D2] = d2;
1769   ex->params[ORC_VAR_D2] = d2_stride;
1770   ex->arrays[ORC_VAR_S1] = (void *) s1;
1771   ex->params[ORC_VAR_S1] = s1_stride;
1772
1773   func = c->exec;
1774   func (ex);
1775 }
1776 #endif
1777
1778
1779 /* video_convert_orc_planar_chroma_422_444 */
1780 #ifdef DISABLE_ORC
1781 void
1782 video_convert_orc_planar_chroma_422_444 (guint8 * ORC_RESTRICT d1,
1783     int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
1784 {
1785   int i;
1786   int j;
1787   orc_union16 *ORC_RESTRICT ptr0;
1788   const orc_int8 *ORC_RESTRICT ptr4;
1789   orc_int8 var33;
1790   orc_union16 var34;
1791
1792   for (j = 0; j < m; j++) {
1793     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
1794     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
1795
1796
1797     for (i = 0; i < n; i++) {
1798       /* 0: loadb */
1799       var33 = ptr4[i];
1800       /* 1: splatbw */
1801       var34.i = ((var33 & 0xff) << 8) | (var33 & 0xff);
1802       /* 2: storew */
1803       ptr0[i] = var34;
1804     }
1805   }
1806
1807 }
1808
1809 #else
1810 static void
1811 _backup_video_convert_orc_planar_chroma_422_444 (OrcExecutor * ORC_RESTRICT ex)
1812 {
1813   int i;
1814   int j;
1815   int n = ex->n;
1816   int m = ex->params[ORC_VAR_A1];
1817   orc_union16 *ORC_RESTRICT ptr0;
1818   const orc_int8 *ORC_RESTRICT ptr4;
1819   orc_int8 var33;
1820   orc_union16 var34;
1821
1822   for (j = 0; j < m; j++) {
1823     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
1824     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
1825
1826
1827     for (i = 0; i < n; i++) {
1828       /* 0: loadb */
1829       var33 = ptr4[i];
1830       /* 1: splatbw */
1831       var34.i = ((var33 & 0xff) << 8) | (var33 & 0xff);
1832       /* 2: storew */
1833       ptr0[i] = var34;
1834     }
1835   }
1836
1837 }
1838
1839 void
1840 video_convert_orc_planar_chroma_422_444 (guint8 * ORC_RESTRICT d1,
1841     int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
1842 {
1843   OrcExecutor _ex, *ex = &_ex;
1844   static volatile int p_inited = 0;
1845   static OrcCode *c = 0;
1846   void (*func) (OrcExecutor *);
1847
1848   if (!p_inited) {
1849     orc_once_mutex_lock ();
1850     if (!p_inited) {
1851       OrcProgram *p;
1852
1853 #if 1
1854       static const orc_uint8 bc[] = {
1855         1, 7, 9, 39, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
1856         116, 95, 111, 114, 99, 95, 112, 108, 97, 110, 97, 114, 95, 99, 104, 114,
1857         111, 109, 97, 95, 52, 50, 50, 95, 52, 52, 52, 11, 2, 2, 12, 1,
1858         1, 20, 2, 151, 32, 4, 97, 0, 32, 2, 0,
1859       };
1860       p = orc_program_new_from_static_bytecode (bc);
1861       orc_program_set_backup_function (p,
1862           _backup_video_convert_orc_planar_chroma_422_444);
1863 #else
1864       p = orc_program_new ();
1865       orc_program_set_2d (p);
1866       orc_program_set_name (p, "video_convert_orc_planar_chroma_422_444");
1867       orc_program_set_backup_function (p,
1868           _backup_video_convert_orc_planar_chroma_422_444);
1869       orc_program_add_destination (p, 2, "d1");
1870       orc_program_add_source (p, 1, "s1");
1871       orc_program_add_temporary (p, 2, "t1");
1872
1873       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
1874           ORC_VAR_D1);
1875       orc_program_append_2 (p, "storew", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
1876           ORC_VAR_D1);
1877 #endif
1878
1879       orc_program_compile (p);
1880       c = orc_program_take_code (p);
1881       orc_program_free (p);
1882     }
1883     p_inited = TRUE;
1884     orc_once_mutex_unlock ();
1885   }
1886   ex->arrays[ORC_VAR_A2] = c;
1887   ex->program = 0;
1888
1889   ex->n = n;
1890   ORC_EXECUTOR_M (ex) = m;
1891   ex->arrays[ORC_VAR_D1] = d1;
1892   ex->params[ORC_VAR_D1] = d1_stride;
1893   ex->arrays[ORC_VAR_S1] = (void *) s1;
1894   ex->params[ORC_VAR_S1] = s1_stride;
1895
1896   func = c->exec;
1897   func (ex);
1898 }
1899 #endif
1900
1901
1902 /* video_convert_orc_planar_chroma_444_422 */
1903 #ifdef DISABLE_ORC
1904 void
1905 video_convert_orc_planar_chroma_444_422 (guint8 * ORC_RESTRICT d1,
1906     int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
1907 {
1908   int i;
1909   int j;
1910   orc_int8 *ORC_RESTRICT ptr0;
1911   const orc_union16 *ORC_RESTRICT ptr4;
1912   orc_union16 var34;
1913   orc_int8 var35;
1914   orc_int8 var36;
1915   orc_int8 var37;
1916
1917   for (j = 0; j < m; j++) {
1918     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
1919     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
1920
1921
1922     for (i = 0; i < n; i++) {
1923       /* 0: loadw */
1924       var34 = ptr4[i];
1925       /* 1: splitwb */
1926       {
1927         orc_union16 _src;
1928         _src.i = var34.i;
1929         var36 = _src.x2[1];
1930         var37 = _src.x2[0];
1931       }
1932       /* 2: avgub */
1933       var35 = ((orc_uint8) var36 + (orc_uint8) var37 + 1) >> 1;
1934       /* 3: storeb */
1935       ptr0[i] = var35;
1936     }
1937   }
1938
1939 }
1940
1941 #else
1942 static void
1943 _backup_video_convert_orc_planar_chroma_444_422 (OrcExecutor * ORC_RESTRICT ex)
1944 {
1945   int i;
1946   int j;
1947   int n = ex->n;
1948   int m = ex->params[ORC_VAR_A1];
1949   orc_int8 *ORC_RESTRICT ptr0;
1950   const orc_union16 *ORC_RESTRICT ptr4;
1951   orc_union16 var34;
1952   orc_int8 var35;
1953   orc_int8 var36;
1954   orc_int8 var37;
1955
1956   for (j = 0; j < m; j++) {
1957     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
1958     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
1959
1960
1961     for (i = 0; i < n; i++) {
1962       /* 0: loadw */
1963       var34 = ptr4[i];
1964       /* 1: splitwb */
1965       {
1966         orc_union16 _src;
1967         _src.i = var34.i;
1968         var36 = _src.x2[1];
1969         var37 = _src.x2[0];
1970       }
1971       /* 2: avgub */
1972       var35 = ((orc_uint8) var36 + (orc_uint8) var37 + 1) >> 1;
1973       /* 3: storeb */
1974       ptr0[i] = var35;
1975     }
1976   }
1977
1978 }
1979
1980 void
1981 video_convert_orc_planar_chroma_444_422 (guint8 * ORC_RESTRICT d1,
1982     int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
1983 {
1984   OrcExecutor _ex, *ex = &_ex;
1985   static volatile int p_inited = 0;
1986   static OrcCode *c = 0;
1987   void (*func) (OrcExecutor *);
1988
1989   if (!p_inited) {
1990     orc_once_mutex_lock ();
1991     if (!p_inited) {
1992       OrcProgram *p;
1993
1994 #if 1
1995       static const orc_uint8 bc[] = {
1996         1, 7, 9, 39, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
1997         116, 95, 111, 114, 99, 95, 112, 108, 97, 110, 97, 114, 95, 99, 104, 114,
1998         111, 109, 97, 95, 52, 52, 52, 95, 52, 50, 50, 11, 1, 1, 12, 2,
1999         2, 20, 1, 20, 1, 199, 32, 33, 4, 39, 0, 32, 33, 2, 0,
2000       };
2001       p = orc_program_new_from_static_bytecode (bc);
2002       orc_program_set_backup_function (p,
2003           _backup_video_convert_orc_planar_chroma_444_422);
2004 #else
2005       p = orc_program_new ();
2006       orc_program_set_2d (p);
2007       orc_program_set_name (p, "video_convert_orc_planar_chroma_444_422");
2008       orc_program_set_backup_function (p,
2009           _backup_video_convert_orc_planar_chroma_444_422);
2010       orc_program_add_destination (p, 1, "d1");
2011       orc_program_add_source (p, 2, "s1");
2012       orc_program_add_temporary (p, 1, "t1");
2013       orc_program_add_temporary (p, 1, "t2");
2014
2015       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1,
2016           ORC_VAR_D1);
2017       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
2018           ORC_VAR_D1);
2019 #endif
2020
2021       orc_program_compile (p);
2022       c = orc_program_take_code (p);
2023       orc_program_free (p);
2024     }
2025     p_inited = TRUE;
2026     orc_once_mutex_unlock ();
2027   }
2028   ex->arrays[ORC_VAR_A2] = c;
2029   ex->program = 0;
2030
2031   ex->n = n;
2032   ORC_EXECUTOR_M (ex) = m;
2033   ex->arrays[ORC_VAR_D1] = d1;
2034   ex->params[ORC_VAR_D1] = d1_stride;
2035   ex->arrays[ORC_VAR_S1] = (void *) s1;
2036   ex->params[ORC_VAR_S1] = s1_stride;
2037
2038   func = c->exec;
2039   func (ex);
2040 }
2041 #endif
2042
2043
2044 /* video_convert_orc_planar_chroma_444_420 */
2045 #ifdef DISABLE_ORC
2046 void
2047 video_convert_orc_planar_chroma_444_420 (guint8 * ORC_RESTRICT d1,
2048     int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride,
2049     const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m)
2050 {
2051   int i;
2052   int j;
2053   orc_int8 *ORC_RESTRICT ptr0;
2054   const orc_union16 *ORC_RESTRICT ptr4;
2055   const orc_union16 *ORC_RESTRICT ptr5;
2056   orc_union16 var35;
2057   orc_union16 var36;
2058   orc_int8 var37;
2059   orc_union16 var38;
2060   orc_int8 var39;
2061   orc_int8 var40;
2062
2063   for (j = 0; j < m; j++) {
2064     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
2065     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
2066     ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
2067
2068
2069     for (i = 0; i < n; i++) {
2070       /* 0: loadw */
2071       var35 = ptr4[i];
2072       /* 1: loadw */
2073       var36 = ptr5[i];
2074       /* 2: avgub */
2075       var38.x2[0] =
2076           ((orc_uint8) var35.x2[0] + (orc_uint8) var36.x2[0] + 1) >> 1;
2077       var38.x2[1] =
2078           ((orc_uint8) var35.x2[1] + (orc_uint8) var36.x2[1] + 1) >> 1;
2079       /* 3: splitwb */
2080       {
2081         orc_union16 _src;
2082         _src.i = var38.i;
2083         var39 = _src.x2[1];
2084         var40 = _src.x2[0];
2085       }
2086       /* 4: avgub */
2087       var37 = ((orc_uint8) var39 + (orc_uint8) var40 + 1) >> 1;
2088       /* 5: storeb */
2089       ptr0[i] = var37;
2090     }
2091   }
2092
2093 }
2094
2095 #else
2096 static void
2097 _backup_video_convert_orc_planar_chroma_444_420 (OrcExecutor * ORC_RESTRICT ex)
2098 {
2099   int i;
2100   int j;
2101   int n = ex->n;
2102   int m = ex->params[ORC_VAR_A1];
2103   orc_int8 *ORC_RESTRICT ptr0;
2104   const orc_union16 *ORC_RESTRICT ptr4;
2105   const orc_union16 *ORC_RESTRICT ptr5;
2106   orc_union16 var35;
2107   orc_union16 var36;
2108   orc_int8 var37;
2109   orc_union16 var38;
2110   orc_int8 var39;
2111   orc_int8 var40;
2112
2113   for (j = 0; j < m; j++) {
2114     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
2115     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
2116     ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
2117
2118
2119     for (i = 0; i < n; i++) {
2120       /* 0: loadw */
2121       var35 = ptr4[i];
2122       /* 1: loadw */
2123       var36 = ptr5[i];
2124       /* 2: avgub */
2125       var38.x2[0] =
2126           ((orc_uint8) var35.x2[0] + (orc_uint8) var36.x2[0] + 1) >> 1;
2127       var38.x2[1] =
2128           ((orc_uint8) var35.x2[1] + (orc_uint8) var36.x2[1] + 1) >> 1;
2129       /* 3: splitwb */
2130       {
2131         orc_union16 _src;
2132         _src.i = var38.i;
2133         var39 = _src.x2[1];
2134         var40 = _src.x2[0];
2135       }
2136       /* 4: avgub */
2137       var37 = ((orc_uint8) var39 + (orc_uint8) var40 + 1) >> 1;
2138       /* 5: storeb */
2139       ptr0[i] = var37;
2140     }
2141   }
2142
2143 }
2144
2145 void
2146 video_convert_orc_planar_chroma_444_420 (guint8 * ORC_RESTRICT d1,
2147     int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride,
2148     const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m)
2149 {
2150   OrcExecutor _ex, *ex = &_ex;
2151   static volatile int p_inited = 0;
2152   static OrcCode *c = 0;
2153   void (*func) (OrcExecutor *);
2154
2155   if (!p_inited) {
2156     orc_once_mutex_lock ();
2157     if (!p_inited) {
2158       OrcProgram *p;
2159
2160 #if 1
2161       static const orc_uint8 bc[] = {
2162         1, 7, 9, 39, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
2163         116, 95, 111, 114, 99, 95, 112, 108, 97, 110, 97, 114, 95, 99, 104, 114,
2164         111, 109, 97, 95, 52, 52, 52, 95, 52, 50, 48, 11, 1, 1, 12, 2,
2165         2, 12, 2, 2, 20, 2, 20, 1, 20, 1, 21, 1, 39, 32, 4, 5,
2166         199, 33, 34, 32, 39, 0, 33, 34, 2, 0,
2167       };
2168       p = orc_program_new_from_static_bytecode (bc);
2169       orc_program_set_backup_function (p,
2170           _backup_video_convert_orc_planar_chroma_444_420);
2171 #else
2172       p = orc_program_new ();
2173       orc_program_set_2d (p);
2174       orc_program_set_name (p, "video_convert_orc_planar_chroma_444_420");
2175       orc_program_set_backup_function (p,
2176           _backup_video_convert_orc_planar_chroma_444_420);
2177       orc_program_add_destination (p, 1, "d1");
2178       orc_program_add_source (p, 2, "s1");
2179       orc_program_add_source (p, 2, "s2");
2180       orc_program_add_temporary (p, 2, "t1");
2181       orc_program_add_temporary (p, 1, "t2");
2182       orc_program_add_temporary (p, 1, "t3");
2183
2184       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S2,
2185           ORC_VAR_D1);
2186       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T1,
2187           ORC_VAR_D1);
2188       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T3,
2189           ORC_VAR_D1);
2190 #endif
2191
2192       orc_program_compile (p);
2193       c = orc_program_take_code (p);
2194       orc_program_free (p);
2195     }
2196     p_inited = TRUE;
2197     orc_once_mutex_unlock ();
2198   }
2199   ex->arrays[ORC_VAR_A2] = c;
2200   ex->program = 0;
2201
2202   ex->n = n;
2203   ORC_EXECUTOR_M (ex) = m;
2204   ex->arrays[ORC_VAR_D1] = d1;
2205   ex->params[ORC_VAR_D1] = d1_stride;
2206   ex->arrays[ORC_VAR_S1] = (void *) s1;
2207   ex->params[ORC_VAR_S1] = s1_stride;
2208   ex->arrays[ORC_VAR_S2] = (void *) s2;
2209   ex->params[ORC_VAR_S2] = s2_stride;
2210
2211   func = c->exec;
2212   func (ex);
2213 }
2214 #endif
2215
2216
2217 /* video_convert_orc_planar_chroma_422_420 */
2218 #ifdef DISABLE_ORC
2219 void
2220 video_convert_orc_planar_chroma_422_420 (guint8 * ORC_RESTRICT d1,
2221     int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride,
2222     const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m)
2223 {
2224   int i;
2225   int j;
2226   orc_int8 *ORC_RESTRICT ptr0;
2227   const orc_int8 *ORC_RESTRICT ptr4;
2228   const orc_int8 *ORC_RESTRICT ptr5;
2229   orc_int8 var32;
2230   orc_int8 var33;
2231   orc_int8 var34;
2232
2233   for (j = 0; j < m; j++) {
2234     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
2235     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
2236     ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
2237
2238
2239     for (i = 0; i < n; i++) {
2240       /* 0: loadb */
2241       var32 = ptr4[i];
2242       /* 1: loadb */
2243       var33 = ptr5[i];
2244       /* 2: avgub */
2245       var34 = ((orc_uint8) var32 + (orc_uint8) var33 + 1) >> 1;
2246       /* 3: storeb */
2247       ptr0[i] = var34;
2248     }
2249   }
2250
2251 }
2252
2253 #else
2254 static void
2255 _backup_video_convert_orc_planar_chroma_422_420 (OrcExecutor * ORC_RESTRICT ex)
2256 {
2257   int i;
2258   int j;
2259   int n = ex->n;
2260   int m = ex->params[ORC_VAR_A1];
2261   orc_int8 *ORC_RESTRICT ptr0;
2262   const orc_int8 *ORC_RESTRICT ptr4;
2263   const orc_int8 *ORC_RESTRICT ptr5;
2264   orc_int8 var32;
2265   orc_int8 var33;
2266   orc_int8 var34;
2267
2268   for (j = 0; j < m; j++) {
2269     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
2270     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
2271     ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
2272
2273
2274     for (i = 0; i < n; i++) {
2275       /* 0: loadb */
2276       var32 = ptr4[i];
2277       /* 1: loadb */
2278       var33 = ptr5[i];
2279       /* 2: avgub */
2280       var34 = ((orc_uint8) var32 + (orc_uint8) var33 + 1) >> 1;
2281       /* 3: storeb */
2282       ptr0[i] = var34;
2283     }
2284   }
2285
2286 }
2287
2288 void
2289 video_convert_orc_planar_chroma_422_420 (guint8 * ORC_RESTRICT d1,
2290     int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride,
2291     const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m)
2292 {
2293   OrcExecutor _ex, *ex = &_ex;
2294   static volatile int p_inited = 0;
2295   static OrcCode *c = 0;
2296   void (*func) (OrcExecutor *);
2297
2298   if (!p_inited) {
2299     orc_once_mutex_lock ();
2300     if (!p_inited) {
2301       OrcProgram *p;
2302
2303 #if 1
2304       static const orc_uint8 bc[] = {
2305         1, 7, 9, 39, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
2306         116, 95, 111, 114, 99, 95, 112, 108, 97, 110, 97, 114, 95, 99, 104, 114,
2307         111, 109, 97, 95, 52, 50, 50, 95, 52, 50, 48, 11, 1, 1, 12, 1,
2308         1, 12, 1, 1, 39, 0, 4, 5, 2, 0,
2309       };
2310       p = orc_program_new_from_static_bytecode (bc);
2311       orc_program_set_backup_function (p,
2312           _backup_video_convert_orc_planar_chroma_422_420);
2313 #else
2314       p = orc_program_new ();
2315       orc_program_set_2d (p);
2316       orc_program_set_name (p, "video_convert_orc_planar_chroma_422_420");
2317       orc_program_set_backup_function (p,
2318           _backup_video_convert_orc_planar_chroma_422_420);
2319       orc_program_add_destination (p, 1, "d1");
2320       orc_program_add_source (p, 1, "s1");
2321       orc_program_add_source (p, 1, "s2");
2322
2323       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S2,
2324           ORC_VAR_D1);
2325 #endif
2326
2327       orc_program_compile (p);
2328       c = orc_program_take_code (p);
2329       orc_program_free (p);
2330     }
2331     p_inited = TRUE;
2332     orc_once_mutex_unlock ();
2333   }
2334   ex->arrays[ORC_VAR_A2] = c;
2335   ex->program = 0;
2336
2337   ex->n = n;
2338   ORC_EXECUTOR_M (ex) = m;
2339   ex->arrays[ORC_VAR_D1] = d1;
2340   ex->params[ORC_VAR_D1] = d1_stride;
2341   ex->arrays[ORC_VAR_S1] = (void *) s1;
2342   ex->params[ORC_VAR_S1] = s1_stride;
2343   ex->arrays[ORC_VAR_S2] = (void *) s2;
2344   ex->params[ORC_VAR_S2] = s2_stride;
2345
2346   func = c->exec;
2347   func (ex);
2348 }
2349 #endif
2350
2351
2352 /* video_convert_orc_convert_YUY2_AYUV */
2353 #ifdef DISABLE_ORC
2354 void
2355 video_convert_orc_convert_YUY2_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
2356     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
2357 {
2358   int i;
2359   int j;
2360   orc_union64 *ORC_RESTRICT ptr0;
2361   const orc_union32 *ORC_RESTRICT ptr4;
2362   orc_union32 var36;
2363 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
2364   volatile orc_union16 var37;
2365 #else
2366   orc_union16 var37;
2367 #endif
2368   orc_union64 var38;
2369   orc_union16 var39;
2370   orc_union16 var40;
2371   orc_union32 var41;
2372   orc_union32 var42;
2373
2374   for (j = 0; j < m; j++) {
2375     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
2376     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
2377
2378     /* 2: loadpb */
2379     var37.x2[0] = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
2380     var37.x2[1] = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
2381
2382     for (i = 0; i < n; i++) {
2383       /* 0: loadl */
2384       var36 = ptr4[i];
2385       /* 1: splitwb */
2386       {
2387         orc_union16 _src;
2388         _src.i = var36.x2[0];
2389         var39.x2[0] = _src.x2[1];
2390         var40.x2[0] = _src.x2[0];
2391       }
2392       {
2393         orc_union16 _src;
2394         _src.i = var36.x2[1];
2395         var39.x2[1] = _src.x2[1];
2396         var40.x2[1] = _src.x2[0];
2397       }
2398       /* 3: mergebw */
2399       {
2400         orc_union16 _dest;
2401         _dest.x2[0] = var37.x2[0];
2402         _dest.x2[1] = var40.x2[0];
2403         var41.x2[0] = _dest.i;
2404       }
2405       {
2406         orc_union16 _dest;
2407         _dest.x2[0] = var37.x2[1];
2408         _dest.x2[1] = var40.x2[1];
2409         var41.x2[1] = _dest.i;
2410       }
2411       /* 4: mergewl */
2412       {
2413         orc_union32 _dest;
2414         _dest.x2[0] = var39.i;
2415         _dest.x2[1] = var39.i;
2416         var42.i = _dest.i;
2417       }
2418       /* 5: mergewl */
2419       {
2420         orc_union32 _dest;
2421         _dest.x2[0] = var41.x2[0];
2422         _dest.x2[1] = var42.x2[0];
2423         var38.x2[0] = _dest.i;
2424       }
2425       {
2426         orc_union32 _dest;
2427         _dest.x2[0] = var41.x2[1];
2428         _dest.x2[1] = var42.x2[1];
2429         var38.x2[1] = _dest.i;
2430       }
2431       /* 6: storeq */
2432       ptr0[i] = var38;
2433     }
2434   }
2435
2436 }
2437
2438 #else
2439 static void
2440 _backup_video_convert_orc_convert_YUY2_AYUV (OrcExecutor * ORC_RESTRICT ex)
2441 {
2442   int i;
2443   int j;
2444   int n = ex->n;
2445   int m = ex->params[ORC_VAR_A1];
2446   orc_union64 *ORC_RESTRICT ptr0;
2447   const orc_union32 *ORC_RESTRICT ptr4;
2448   orc_union32 var36;
2449 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
2450   volatile orc_union16 var37;
2451 #else
2452   orc_union16 var37;
2453 #endif
2454   orc_union64 var38;
2455   orc_union16 var39;
2456   orc_union16 var40;
2457   orc_union32 var41;
2458   orc_union32 var42;
2459
2460   for (j = 0; j < m; j++) {
2461     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
2462     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
2463
2464     /* 2: loadpb */
2465     var37.x2[0] = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
2466     var37.x2[1] = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
2467
2468     for (i = 0; i < n; i++) {
2469       /* 0: loadl */
2470       var36 = ptr4[i];
2471       /* 1: splitwb */
2472       {
2473         orc_union16 _src;
2474         _src.i = var36.x2[0];
2475         var39.x2[0] = _src.x2[1];
2476         var40.x2[0] = _src.x2[0];
2477       }
2478       {
2479         orc_union16 _src;
2480         _src.i = var36.x2[1];
2481         var39.x2[1] = _src.x2[1];
2482         var40.x2[1] = _src.x2[0];
2483       }
2484       /* 3: mergebw */
2485       {
2486         orc_union16 _dest;
2487         _dest.x2[0] = var37.x2[0];
2488         _dest.x2[1] = var40.x2[0];
2489         var41.x2[0] = _dest.i;
2490       }
2491       {
2492         orc_union16 _dest;
2493         _dest.x2[0] = var37.x2[1];
2494         _dest.x2[1] = var40.x2[1];
2495         var41.x2[1] = _dest.i;
2496       }
2497       /* 4: mergewl */
2498       {
2499         orc_union32 _dest;
2500         _dest.x2[0] = var39.i;
2501         _dest.x2[1] = var39.i;
2502         var42.i = _dest.i;
2503       }
2504       /* 5: mergewl */
2505       {
2506         orc_union32 _dest;
2507         _dest.x2[0] = var41.x2[0];
2508         _dest.x2[1] = var42.x2[0];
2509         var38.x2[0] = _dest.i;
2510       }
2511       {
2512         orc_union32 _dest;
2513         _dest.x2[0] = var41.x2[1];
2514         _dest.x2[1] = var42.x2[1];
2515         var38.x2[1] = _dest.i;
2516       }
2517       /* 6: storeq */
2518       ptr0[i] = var38;
2519     }
2520   }
2521
2522 }
2523
2524 void
2525 video_convert_orc_convert_YUY2_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
2526     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
2527 {
2528   OrcExecutor _ex, *ex = &_ex;
2529   static volatile int p_inited = 0;
2530   static OrcCode *c = 0;
2531   void (*func) (OrcExecutor *);
2532
2533   if (!p_inited) {
2534     orc_once_mutex_lock ();
2535     if (!p_inited) {
2536       OrcProgram *p;
2537
2538 #if 1
2539       static const orc_uint8 bc[] = {
2540         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
2541         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 89, 85,
2542         89, 50, 95, 65, 89, 85, 86, 11, 8, 8, 12, 4, 4, 14, 2, 255,
2543         0, 0, 0, 20, 2, 20, 2, 20, 4, 20, 4, 21, 1, 199, 33, 32,
2544         4, 21, 1, 196, 34, 16, 32, 195, 35, 33, 33, 21, 1, 195, 0, 34,
2545         35, 2, 0,
2546       };
2547       p = orc_program_new_from_static_bytecode (bc);
2548       orc_program_set_backup_function (p,
2549           _backup_video_convert_orc_convert_YUY2_AYUV);
2550 #else
2551       p = orc_program_new ();
2552       orc_program_set_2d (p);
2553       orc_program_set_name (p, "video_convert_orc_convert_YUY2_AYUV");
2554       orc_program_set_backup_function (p,
2555           _backup_video_convert_orc_convert_YUY2_AYUV);
2556       orc_program_add_destination (p, 8, "d1");
2557       orc_program_add_source (p, 4, "s1");
2558       orc_program_add_constant (p, 2, 0x000000ff, "c1");
2559       orc_program_add_temporary (p, 2, "t1");
2560       orc_program_add_temporary (p, 2, "t2");
2561       orc_program_add_temporary (p, 4, "t3");
2562       orc_program_add_temporary (p, 4, "t4");
2563
2564       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
2565           ORC_VAR_D1);
2566       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1,
2567           ORC_VAR_D1);
2568       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2,
2569           ORC_VAR_D1);
2570       orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4,
2571           ORC_VAR_D1);
2572 #endif
2573
2574       orc_program_compile (p);
2575       c = orc_program_take_code (p);
2576       orc_program_free (p);
2577     }
2578     p_inited = TRUE;
2579     orc_once_mutex_unlock ();
2580   }
2581   ex->arrays[ORC_VAR_A2] = c;
2582   ex->program = 0;
2583
2584   ex->n = n;
2585   ORC_EXECUTOR_M (ex) = m;
2586   ex->arrays[ORC_VAR_D1] = d1;
2587   ex->params[ORC_VAR_D1] = d1_stride;
2588   ex->arrays[ORC_VAR_S1] = (void *) s1;
2589   ex->params[ORC_VAR_S1] = s1_stride;
2590
2591   func = c->exec;
2592   func (ex);
2593 }
2594 #endif
2595
2596
2597 /* video_convert_orc_convert_UYVY_AYUV */
2598 #ifdef DISABLE_ORC
2599 void
2600 video_convert_orc_convert_UYVY_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
2601     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
2602 {
2603   int i;
2604   int j;
2605   orc_union64 *ORC_RESTRICT ptr0;
2606   const orc_union32 *ORC_RESTRICT ptr4;
2607   orc_union32 var36;
2608 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
2609   volatile orc_union16 var37;
2610 #else
2611   orc_union16 var37;
2612 #endif
2613   orc_union64 var38;
2614   orc_union16 var39;
2615   orc_union16 var40;
2616   orc_union32 var41;
2617   orc_union32 var42;
2618
2619   for (j = 0; j < m; j++) {
2620     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
2621     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
2622
2623     /* 2: loadpb */
2624     var37.x2[0] = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
2625     var37.x2[1] = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
2626
2627     for (i = 0; i < n; i++) {
2628       /* 0: loadl */
2629       var36 = ptr4[i];
2630       /* 1: splitwb */
2631       {
2632         orc_union16 _src;
2633         _src.i = var36.x2[0];
2634         var39.x2[0] = _src.x2[1];
2635         var40.x2[0] = _src.x2[0];
2636       }
2637       {
2638         orc_union16 _src;
2639         _src.i = var36.x2[1];
2640         var39.x2[1] = _src.x2[1];
2641         var40.x2[1] = _src.x2[0];
2642       }
2643       /* 3: mergebw */
2644       {
2645         orc_union16 _dest;
2646         _dest.x2[0] = var37.x2[0];
2647         _dest.x2[1] = var39.x2[0];
2648         var41.x2[0] = _dest.i;
2649       }
2650       {
2651         orc_union16 _dest;
2652         _dest.x2[0] = var37.x2[1];
2653         _dest.x2[1] = var39.x2[1];
2654         var41.x2[1] = _dest.i;
2655       }
2656       /* 4: mergewl */
2657       {
2658         orc_union32 _dest;
2659         _dest.x2[0] = var40.i;
2660         _dest.x2[1] = var40.i;
2661         var42.i = _dest.i;
2662       }
2663       /* 5: mergewl */
2664       {
2665         orc_union32 _dest;
2666         _dest.x2[0] = var41.x2[0];
2667         _dest.x2[1] = var42.x2[0];
2668         var38.x2[0] = _dest.i;
2669       }
2670       {
2671         orc_union32 _dest;
2672         _dest.x2[0] = var41.x2[1];
2673         _dest.x2[1] = var42.x2[1];
2674         var38.x2[1] = _dest.i;
2675       }
2676       /* 6: storeq */
2677       ptr0[i] = var38;
2678     }
2679   }
2680
2681 }
2682
2683 #else
2684 static void
2685 _backup_video_convert_orc_convert_UYVY_AYUV (OrcExecutor * ORC_RESTRICT ex)
2686 {
2687   int i;
2688   int j;
2689   int n = ex->n;
2690   int m = ex->params[ORC_VAR_A1];
2691   orc_union64 *ORC_RESTRICT ptr0;
2692   const orc_union32 *ORC_RESTRICT ptr4;
2693   orc_union32 var36;
2694 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
2695   volatile orc_union16 var37;
2696 #else
2697   orc_union16 var37;
2698 #endif
2699   orc_union64 var38;
2700   orc_union16 var39;
2701   orc_union16 var40;
2702   orc_union32 var41;
2703   orc_union32 var42;
2704
2705   for (j = 0; j < m; j++) {
2706     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
2707     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
2708
2709     /* 2: loadpb */
2710     var37.x2[0] = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
2711     var37.x2[1] = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
2712
2713     for (i = 0; i < n; i++) {
2714       /* 0: loadl */
2715       var36 = ptr4[i];
2716       /* 1: splitwb */
2717       {
2718         orc_union16 _src;
2719         _src.i = var36.x2[0];
2720         var39.x2[0] = _src.x2[1];
2721         var40.x2[0] = _src.x2[0];
2722       }
2723       {
2724         orc_union16 _src;
2725         _src.i = var36.x2[1];
2726         var39.x2[1] = _src.x2[1];
2727         var40.x2[1] = _src.x2[0];
2728       }
2729       /* 3: mergebw */
2730       {
2731         orc_union16 _dest;
2732         _dest.x2[0] = var37.x2[0];
2733         _dest.x2[1] = var39.x2[0];
2734         var41.x2[0] = _dest.i;
2735       }
2736       {
2737         orc_union16 _dest;
2738         _dest.x2[0] = var37.x2[1];
2739         _dest.x2[1] = var39.x2[1];
2740         var41.x2[1] = _dest.i;
2741       }
2742       /* 4: mergewl */
2743       {
2744         orc_union32 _dest;
2745         _dest.x2[0] = var40.i;
2746         _dest.x2[1] = var40.i;
2747         var42.i = _dest.i;
2748       }
2749       /* 5: mergewl */
2750       {
2751         orc_union32 _dest;
2752         _dest.x2[0] = var41.x2[0];
2753         _dest.x2[1] = var42.x2[0];
2754         var38.x2[0] = _dest.i;
2755       }
2756       {
2757         orc_union32 _dest;
2758         _dest.x2[0] = var41.x2[1];
2759         _dest.x2[1] = var42.x2[1];
2760         var38.x2[1] = _dest.i;
2761       }
2762       /* 6: storeq */
2763       ptr0[i] = var38;
2764     }
2765   }
2766
2767 }
2768
2769 void
2770 video_convert_orc_convert_UYVY_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
2771     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
2772 {
2773   OrcExecutor _ex, *ex = &_ex;
2774   static volatile int p_inited = 0;
2775   static OrcCode *c = 0;
2776   void (*func) (OrcExecutor *);
2777
2778   if (!p_inited) {
2779     orc_once_mutex_lock ();
2780     if (!p_inited) {
2781       OrcProgram *p;
2782
2783 #if 1
2784       static const orc_uint8 bc[] = {
2785         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
2786         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 85, 89,
2787         86, 89, 95, 65, 89, 85, 86, 11, 8, 8, 12, 4, 4, 14, 2, 255,
2788         0, 0, 0, 20, 2, 20, 2, 20, 4, 20, 4, 21, 1, 199, 32, 33,
2789         4, 21, 1, 196, 34, 16, 32, 195, 35, 33, 33, 21, 1, 195, 0, 34,
2790         35, 2, 0,
2791       };
2792       p = orc_program_new_from_static_bytecode (bc);
2793       orc_program_set_backup_function (p,
2794           _backup_video_convert_orc_convert_UYVY_AYUV);
2795 #else
2796       p = orc_program_new ();
2797       orc_program_set_2d (p);
2798       orc_program_set_name (p, "video_convert_orc_convert_UYVY_AYUV");
2799       orc_program_set_backup_function (p,
2800           _backup_video_convert_orc_convert_UYVY_AYUV);
2801       orc_program_add_destination (p, 8, "d1");
2802       orc_program_add_source (p, 4, "s1");
2803       orc_program_add_constant (p, 2, 0x000000ff, "c1");
2804       orc_program_add_temporary (p, 2, "t1");
2805       orc_program_add_temporary (p, 2, "t2");
2806       orc_program_add_temporary (p, 4, "t3");
2807       orc_program_add_temporary (p, 4, "t4");
2808
2809       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1,
2810           ORC_VAR_D1);
2811       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1,
2812           ORC_VAR_D1);
2813       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2,
2814           ORC_VAR_D1);
2815       orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4,
2816           ORC_VAR_D1);
2817 #endif
2818
2819       orc_program_compile (p);
2820       c = orc_program_take_code (p);
2821       orc_program_free (p);
2822     }
2823     p_inited = TRUE;
2824     orc_once_mutex_unlock ();
2825   }
2826   ex->arrays[ORC_VAR_A2] = c;
2827   ex->program = 0;
2828
2829   ex->n = n;
2830   ORC_EXECUTOR_M (ex) = m;
2831   ex->arrays[ORC_VAR_D1] = d1;
2832   ex->params[ORC_VAR_D1] = d1_stride;
2833   ex->arrays[ORC_VAR_S1] = (void *) s1;
2834   ex->params[ORC_VAR_S1] = s1_stride;
2835
2836   func = c->exec;
2837   func (ex);
2838 }
2839 #endif
2840
2841
2842 /* video_convert_orc_convert_YUY2_Y42B */
2843 #ifdef DISABLE_ORC
2844 void
2845 video_convert_orc_convert_YUY2_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride,
2846     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
2847     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
2848 {
2849   int i;
2850   int j;
2851   orc_union16 *ORC_RESTRICT ptr0;
2852   orc_int8 *ORC_RESTRICT ptr1;
2853   orc_int8 *ORC_RESTRICT ptr2;
2854   const orc_union32 *ORC_RESTRICT ptr4;
2855   orc_union32 var33;
2856   orc_union16 var34;
2857   orc_int8 var35;
2858   orc_int8 var36;
2859   orc_union16 var37;
2860
2861   for (j = 0; j < m; j++) {
2862     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
2863     ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
2864     ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j);
2865     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
2866
2867
2868     for (i = 0; i < n; i++) {
2869       /* 0: loadl */
2870       var33 = ptr4[i];
2871       /* 1: splitwb */
2872       {
2873         orc_union16 _src;
2874         _src.i = var33.x2[0];
2875         var37.x2[0] = _src.x2[1];
2876         var34.x2[0] = _src.x2[0];
2877       }
2878       {
2879         orc_union16 _src;
2880         _src.i = var33.x2[1];
2881         var37.x2[1] = _src.x2[1];
2882         var34.x2[1] = _src.x2[0];
2883       }
2884       /* 2: storew */
2885       ptr0[i] = var34;
2886       /* 3: splitwb */
2887       {
2888         orc_union16 _src;
2889         _src.i = var37.i;
2890         var35 = _src.x2[1];
2891         var36 = _src.x2[0];
2892       }
2893       /* 4: storeb */
2894       ptr2[i] = var35;
2895       /* 5: storeb */
2896       ptr1[i] = var36;
2897     }
2898   }
2899
2900 }
2901
2902 #else
2903 static void
2904 _backup_video_convert_orc_convert_YUY2_Y42B (OrcExecutor * ORC_RESTRICT ex)
2905 {
2906   int i;
2907   int j;
2908   int n = ex->n;
2909   int m = ex->params[ORC_VAR_A1];
2910   orc_union16 *ORC_RESTRICT ptr0;
2911   orc_int8 *ORC_RESTRICT ptr1;
2912   orc_int8 *ORC_RESTRICT ptr2;
2913   const orc_union32 *ORC_RESTRICT ptr4;
2914   orc_union32 var33;
2915   orc_union16 var34;
2916   orc_int8 var35;
2917   orc_int8 var36;
2918   orc_union16 var37;
2919
2920   for (j = 0; j < m; j++) {
2921     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
2922     ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
2923     ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j);
2924     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
2925
2926
2927     for (i = 0; i < n; i++) {
2928       /* 0: loadl */
2929       var33 = ptr4[i];
2930       /* 1: splitwb */
2931       {
2932         orc_union16 _src;
2933         _src.i = var33.x2[0];
2934         var37.x2[0] = _src.x2[1];
2935         var34.x2[0] = _src.x2[0];
2936       }
2937       {
2938         orc_union16 _src;
2939         _src.i = var33.x2[1];
2940         var37.x2[1] = _src.x2[1];
2941         var34.x2[1] = _src.x2[0];
2942       }
2943       /* 2: storew */
2944       ptr0[i] = var34;
2945       /* 3: splitwb */
2946       {
2947         orc_union16 _src;
2948         _src.i = var37.i;
2949         var35 = _src.x2[1];
2950         var36 = _src.x2[0];
2951       }
2952       /* 4: storeb */
2953       ptr2[i] = var35;
2954       /* 5: storeb */
2955       ptr1[i] = var36;
2956     }
2957   }
2958
2959 }
2960
2961 void
2962 video_convert_orc_convert_YUY2_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride,
2963     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
2964     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
2965 {
2966   OrcExecutor _ex, *ex = &_ex;
2967   static volatile int p_inited = 0;
2968   static OrcCode *c = 0;
2969   void (*func) (OrcExecutor *);
2970
2971   if (!p_inited) {
2972     orc_once_mutex_lock ();
2973     if (!p_inited) {
2974       OrcProgram *p;
2975
2976 #if 1
2977       static const orc_uint8 bc[] = {
2978         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
2979         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 89, 85,
2980         89, 50, 95, 89, 52, 50, 66, 11, 2, 2, 11, 1, 1, 11, 1, 1,
2981         12, 4, 4, 20, 2, 21, 1, 199, 32, 0, 4, 199, 2, 1, 32, 2,
2982         0,
2983       };
2984       p = orc_program_new_from_static_bytecode (bc);
2985       orc_program_set_backup_function (p,
2986           _backup_video_convert_orc_convert_YUY2_Y42B);
2987 #else
2988       p = orc_program_new ();
2989       orc_program_set_2d (p);
2990       orc_program_set_name (p, "video_convert_orc_convert_YUY2_Y42B");
2991       orc_program_set_backup_function (p,
2992           _backup_video_convert_orc_convert_YUY2_Y42B);
2993       orc_program_add_destination (p, 2, "d1");
2994       orc_program_add_destination (p, 1, "d2");
2995       orc_program_add_destination (p, 1, "d3");
2996       orc_program_add_source (p, 4, "s1");
2997       orc_program_add_temporary (p, 2, "t1");
2998
2999       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_S1,
3000           ORC_VAR_D1);
3001       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T1,
3002           ORC_VAR_D1);
3003 #endif
3004
3005       orc_program_compile (p);
3006       c = orc_program_take_code (p);
3007       orc_program_free (p);
3008     }
3009     p_inited = TRUE;
3010     orc_once_mutex_unlock ();
3011   }
3012   ex->arrays[ORC_VAR_A2] = c;
3013   ex->program = 0;
3014
3015   ex->n = n;
3016   ORC_EXECUTOR_M (ex) = m;
3017   ex->arrays[ORC_VAR_D1] = d1;
3018   ex->params[ORC_VAR_D1] = d1_stride;
3019   ex->arrays[ORC_VAR_D2] = d2;
3020   ex->params[ORC_VAR_D2] = d2_stride;
3021   ex->arrays[ORC_VAR_D3] = d3;
3022   ex->params[ORC_VAR_D3] = d3_stride;
3023   ex->arrays[ORC_VAR_S1] = (void *) s1;
3024   ex->params[ORC_VAR_S1] = s1_stride;
3025
3026   func = c->exec;
3027   func (ex);
3028 }
3029 #endif
3030
3031
3032 /* video_convert_orc_convert_UYVY_Y42B */
3033 #ifdef DISABLE_ORC
3034 void
3035 video_convert_orc_convert_UYVY_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride,
3036     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
3037     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
3038 {
3039   int i;
3040   int j;
3041   orc_union16 *ORC_RESTRICT ptr0;
3042   orc_int8 *ORC_RESTRICT ptr1;
3043   orc_int8 *ORC_RESTRICT ptr2;
3044   const orc_union32 *ORC_RESTRICT ptr4;
3045   orc_union32 var33;
3046   orc_union16 var34;
3047   orc_int8 var35;
3048   orc_int8 var36;
3049   orc_union16 var37;
3050
3051   for (j = 0; j < m; j++) {
3052     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
3053     ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
3054     ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j);
3055     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
3056
3057
3058     for (i = 0; i < n; i++) {
3059       /* 0: loadl */
3060       var33 = ptr4[i];
3061       /* 1: splitwb */
3062       {
3063         orc_union16 _src;
3064         _src.i = var33.x2[0];
3065         var34.x2[0] = _src.x2[1];
3066         var37.x2[0] = _src.x2[0];
3067       }
3068       {
3069         orc_union16 _src;
3070         _src.i = var33.x2[1];
3071         var34.x2[1] = _src.x2[1];
3072         var37.x2[1] = _src.x2[0];
3073       }
3074       /* 2: storew */
3075       ptr0[i] = var34;
3076       /* 3: splitwb */
3077       {
3078         orc_union16 _src;
3079         _src.i = var37.i;
3080         var35 = _src.x2[1];
3081         var36 = _src.x2[0];
3082       }
3083       /* 4: storeb */
3084       ptr2[i] = var35;
3085       /* 5: storeb */
3086       ptr1[i] = var36;
3087     }
3088   }
3089
3090 }
3091
3092 #else
3093 static void
3094 _backup_video_convert_orc_convert_UYVY_Y42B (OrcExecutor * ORC_RESTRICT ex)
3095 {
3096   int i;
3097   int j;
3098   int n = ex->n;
3099   int m = ex->params[ORC_VAR_A1];
3100   orc_union16 *ORC_RESTRICT ptr0;
3101   orc_int8 *ORC_RESTRICT ptr1;
3102   orc_int8 *ORC_RESTRICT ptr2;
3103   const orc_union32 *ORC_RESTRICT ptr4;
3104   orc_union32 var33;
3105   orc_union16 var34;
3106   orc_int8 var35;
3107   orc_int8 var36;
3108   orc_union16 var37;
3109
3110   for (j = 0; j < m; j++) {
3111     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
3112     ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
3113     ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j);
3114     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
3115
3116
3117     for (i = 0; i < n; i++) {
3118       /* 0: loadl */
3119       var33 = ptr4[i];
3120       /* 1: splitwb */
3121       {
3122         orc_union16 _src;
3123         _src.i = var33.x2[0];
3124         var34.x2[0] = _src.x2[1];
3125         var37.x2[0] = _src.x2[0];
3126       }
3127       {
3128         orc_union16 _src;
3129         _src.i = var33.x2[1];
3130         var34.x2[1] = _src.x2[1];
3131         var37.x2[1] = _src.x2[0];
3132       }
3133       /* 2: storew */
3134       ptr0[i] = var34;
3135       /* 3: splitwb */
3136       {
3137         orc_union16 _src;
3138         _src.i = var37.i;
3139         var35 = _src.x2[1];
3140         var36 = _src.x2[0];
3141       }
3142       /* 4: storeb */
3143       ptr2[i] = var35;
3144       /* 5: storeb */
3145       ptr1[i] = var36;
3146     }
3147   }
3148
3149 }
3150
3151 void
3152 video_convert_orc_convert_UYVY_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride,
3153     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
3154     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
3155 {
3156   OrcExecutor _ex, *ex = &_ex;
3157   static volatile int p_inited = 0;
3158   static OrcCode *c = 0;
3159   void (*func) (OrcExecutor *);
3160
3161   if (!p_inited) {
3162     orc_once_mutex_lock ();
3163     if (!p_inited) {
3164       OrcProgram *p;
3165
3166 #if 1
3167       static const orc_uint8 bc[] = {
3168         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
3169         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 85, 89,
3170         86, 89, 95, 89, 52, 50, 66, 11, 2, 2, 11, 1, 1, 11, 1, 1,
3171         12, 4, 4, 20, 2, 21, 1, 199, 0, 32, 4, 199, 2, 1, 32, 2,
3172         0,
3173       };
3174       p = orc_program_new_from_static_bytecode (bc);
3175       orc_program_set_backup_function (p,
3176           _backup_video_convert_orc_convert_UYVY_Y42B);
3177 #else
3178       p = orc_program_new ();
3179       orc_program_set_2d (p);
3180       orc_program_set_name (p, "video_convert_orc_convert_UYVY_Y42B");
3181       orc_program_set_backup_function (p,
3182           _backup_video_convert_orc_convert_UYVY_Y42B);
3183       orc_program_add_destination (p, 2, "d1");
3184       orc_program_add_destination (p, 1, "d2");
3185       orc_program_add_destination (p, 1, "d3");
3186       orc_program_add_source (p, 4, "s1");
3187       orc_program_add_temporary (p, 2, "t1");
3188
3189       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1,
3190           ORC_VAR_D1);
3191       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T1,
3192           ORC_VAR_D1);
3193 #endif
3194
3195       orc_program_compile (p);
3196       c = orc_program_take_code (p);
3197       orc_program_free (p);
3198     }
3199     p_inited = TRUE;
3200     orc_once_mutex_unlock ();
3201   }
3202   ex->arrays[ORC_VAR_A2] = c;
3203   ex->program = 0;
3204
3205   ex->n = n;
3206   ORC_EXECUTOR_M (ex) = m;
3207   ex->arrays[ORC_VAR_D1] = d1;
3208   ex->params[ORC_VAR_D1] = d1_stride;
3209   ex->arrays[ORC_VAR_D2] = d2;
3210   ex->params[ORC_VAR_D2] = d2_stride;
3211   ex->arrays[ORC_VAR_D3] = d3;
3212   ex->params[ORC_VAR_D3] = d3_stride;
3213   ex->arrays[ORC_VAR_S1] = (void *) s1;
3214   ex->params[ORC_VAR_S1] = s1_stride;
3215
3216   func = c->exec;
3217   func (ex);
3218 }
3219 #endif
3220
3221
3222 /* video_convert_orc_convert_YUY2_Y444 */
3223 #ifdef DISABLE_ORC
3224 void
3225 video_convert_orc_convert_YUY2_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride,
3226     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
3227     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
3228 {
3229   int i;
3230   int j;
3231   orc_union16 *ORC_RESTRICT ptr0;
3232   orc_union16 *ORC_RESTRICT ptr1;
3233   orc_union16 *ORC_RESTRICT ptr2;
3234   const orc_union32 *ORC_RESTRICT ptr4;
3235   orc_union32 var35;
3236   orc_union16 var36;
3237   orc_union16 var37;
3238   orc_union16 var38;
3239   orc_union16 var39;
3240   orc_int8 var40;
3241   orc_int8 var41;
3242
3243   for (j = 0; j < m; j++) {
3244     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
3245     ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
3246     ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j);
3247     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
3248
3249
3250     for (i = 0; i < n; i++) {
3251       /* 0: loadl */
3252       var35 = ptr4[i];
3253       /* 1: splitwb */
3254       {
3255         orc_union16 _src;
3256         _src.i = var35.x2[0];
3257         var39.x2[0] = _src.x2[1];
3258         var36.x2[0] = _src.x2[0];
3259       }
3260       {
3261         orc_union16 _src;
3262         _src.i = var35.x2[1];
3263         var39.x2[1] = _src.x2[1];
3264         var36.x2[1] = _src.x2[0];
3265       }
3266       /* 2: storew */
3267       ptr0[i] = var36;
3268       /* 3: splitwb */
3269       {
3270         orc_union16 _src;
3271         _src.i = var39.i;
3272         var40 = _src.x2[1];
3273         var41 = _src.x2[0];
3274       }
3275       /* 4: splatbw */
3276       var37.i = ((var41 & 0xff) << 8) | (var41 & 0xff);
3277       /* 5: storew */
3278       ptr1[i] = var37;
3279       /* 6: splatbw */
3280       var38.i = ((var40 & 0xff) << 8) | (var40 & 0xff);
3281       /* 7: storew */
3282       ptr2[i] = var38;
3283     }
3284   }
3285
3286 }
3287
3288 #else
3289 static void
3290 _backup_video_convert_orc_convert_YUY2_Y444 (OrcExecutor * ORC_RESTRICT ex)
3291 {
3292   int i;
3293   int j;
3294   int n = ex->n;
3295   int m = ex->params[ORC_VAR_A1];
3296   orc_union16 *ORC_RESTRICT ptr0;
3297   orc_union16 *ORC_RESTRICT ptr1;
3298   orc_union16 *ORC_RESTRICT ptr2;
3299   const orc_union32 *ORC_RESTRICT ptr4;
3300   orc_union32 var35;
3301   orc_union16 var36;
3302   orc_union16 var37;
3303   orc_union16 var38;
3304   orc_union16 var39;
3305   orc_int8 var40;
3306   orc_int8 var41;
3307
3308   for (j = 0; j < m; j++) {
3309     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
3310     ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
3311     ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j);
3312     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
3313
3314
3315     for (i = 0; i < n; i++) {
3316       /* 0: loadl */
3317       var35 = ptr4[i];
3318       /* 1: splitwb */
3319       {
3320         orc_union16 _src;
3321         _src.i = var35.x2[0];
3322         var39.x2[0] = _src.x2[1];
3323         var36.x2[0] = _src.x2[0];
3324       }
3325       {
3326         orc_union16 _src;
3327         _src.i = var35.x2[1];
3328         var39.x2[1] = _src.x2[1];
3329         var36.x2[1] = _src.x2[0];
3330       }
3331       /* 2: storew */
3332       ptr0[i] = var36;
3333       /* 3: splitwb */
3334       {
3335         orc_union16 _src;
3336         _src.i = var39.i;
3337         var40 = _src.x2[1];
3338         var41 = _src.x2[0];
3339       }
3340       /* 4: splatbw */
3341       var37.i = ((var41 & 0xff) << 8) | (var41 & 0xff);
3342       /* 5: storew */
3343       ptr1[i] = var37;
3344       /* 6: splatbw */
3345       var38.i = ((var40 & 0xff) << 8) | (var40 & 0xff);
3346       /* 7: storew */
3347       ptr2[i] = var38;
3348     }
3349   }
3350
3351 }
3352
3353 void
3354 video_convert_orc_convert_YUY2_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride,
3355     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
3356     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
3357 {
3358   OrcExecutor _ex, *ex = &_ex;
3359   static volatile int p_inited = 0;
3360   static OrcCode *c = 0;
3361   void (*func) (OrcExecutor *);
3362
3363   if (!p_inited) {
3364     orc_once_mutex_lock ();
3365     if (!p_inited) {
3366       OrcProgram *p;
3367
3368 #if 1
3369       static const orc_uint8 bc[] = {
3370         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
3371         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 89, 85,
3372         89, 50, 95, 89, 52, 52, 52, 11, 2, 2, 11, 2, 2, 11, 2, 2,
3373         12, 4, 4, 20, 2, 20, 1, 20, 1, 21, 1, 199, 32, 0, 4, 199,
3374         34, 33, 32, 151, 1, 33, 151, 2, 34, 2, 0,
3375       };
3376       p = orc_program_new_from_static_bytecode (bc);
3377       orc_program_set_backup_function (p,
3378           _backup_video_convert_orc_convert_YUY2_Y444);
3379 #else
3380       p = orc_program_new ();
3381       orc_program_set_2d (p);
3382       orc_program_set_name (p, "video_convert_orc_convert_YUY2_Y444");
3383       orc_program_set_backup_function (p,
3384           _backup_video_convert_orc_convert_YUY2_Y444);
3385       orc_program_add_destination (p, 2, "d1");
3386       orc_program_add_destination (p, 2, "d2");
3387       orc_program_add_destination (p, 2, "d3");
3388       orc_program_add_source (p, 4, "s1");
3389       orc_program_add_temporary (p, 2, "t1");
3390       orc_program_add_temporary (p, 1, "t2");
3391       orc_program_add_temporary (p, 1, "t3");
3392
3393       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_S1,
3394           ORC_VAR_D1);
3395       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_T1,
3396           ORC_VAR_D1);
3397       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_D1,
3398           ORC_VAR_D1);
3399       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_D3, ORC_VAR_T3, ORC_VAR_D1,
3400           ORC_VAR_D1);
3401 #endif
3402
3403       orc_program_compile (p);
3404       c = orc_program_take_code (p);
3405       orc_program_free (p);
3406     }
3407     p_inited = TRUE;
3408     orc_once_mutex_unlock ();
3409   }
3410   ex->arrays[ORC_VAR_A2] = c;
3411   ex->program = 0;
3412
3413   ex->n = n;
3414   ORC_EXECUTOR_M (ex) = m;
3415   ex->arrays[ORC_VAR_D1] = d1;
3416   ex->params[ORC_VAR_D1] = d1_stride;
3417   ex->arrays[ORC_VAR_D2] = d2;
3418   ex->params[ORC_VAR_D2] = d2_stride;
3419   ex->arrays[ORC_VAR_D3] = d3;
3420   ex->params[ORC_VAR_D3] = d3_stride;
3421   ex->arrays[ORC_VAR_S1] = (void *) s1;
3422   ex->params[ORC_VAR_S1] = s1_stride;
3423
3424   func = c->exec;
3425   func (ex);
3426 }
3427 #endif
3428
3429
3430 /* video_convert_orc_convert_UYVY_Y444 */
3431 #ifdef DISABLE_ORC
3432 void
3433 video_convert_orc_convert_UYVY_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride,
3434     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
3435     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
3436 {
3437   int i;
3438   int j;
3439   orc_union16 *ORC_RESTRICT ptr0;
3440   orc_union16 *ORC_RESTRICT ptr1;
3441   orc_union16 *ORC_RESTRICT ptr2;
3442   const orc_union32 *ORC_RESTRICT ptr4;
3443   orc_union32 var35;
3444   orc_union16 var36;
3445   orc_union16 var37;
3446   orc_union16 var38;
3447   orc_union16 var39;
3448   orc_int8 var40;
3449   orc_int8 var41;
3450
3451   for (j = 0; j < m; j++) {
3452     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
3453     ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
3454     ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j);
3455     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
3456
3457
3458     for (i = 0; i < n; i++) {
3459       /* 0: loadl */
3460       var35 = ptr4[i];
3461       /* 1: splitwb */
3462       {
3463         orc_union16 _src;
3464         _src.i = var35.x2[0];
3465         var36.x2[0] = _src.x2[1];
3466         var39.x2[0] = _src.x2[0];
3467       }
3468       {
3469         orc_union16 _src;
3470         _src.i = var35.x2[1];
3471         var36.x2[1] = _src.x2[1];
3472         var39.x2[1] = _src.x2[0];
3473       }
3474       /* 2: storew */
3475       ptr0[i] = var36;
3476       /* 3: splitwb */
3477       {
3478         orc_union16 _src;
3479         _src.i = var39.i;
3480         var40 = _src.x2[1];
3481         var41 = _src.x2[0];
3482       }
3483       /* 4: splatbw */
3484       var37.i = ((var41 & 0xff) << 8) | (var41 & 0xff);
3485       /* 5: storew */
3486       ptr1[i] = var37;
3487       /* 6: splatbw */
3488       var38.i = ((var40 & 0xff) << 8) | (var40 & 0xff);
3489       /* 7: storew */
3490       ptr2[i] = var38;
3491     }
3492   }
3493
3494 }
3495
3496 #else
3497 static void
3498 _backup_video_convert_orc_convert_UYVY_Y444 (OrcExecutor * ORC_RESTRICT ex)
3499 {
3500   int i;
3501   int j;
3502   int n = ex->n;
3503   int m = ex->params[ORC_VAR_A1];
3504   orc_union16 *ORC_RESTRICT ptr0;
3505   orc_union16 *ORC_RESTRICT ptr1;
3506   orc_union16 *ORC_RESTRICT ptr2;
3507   const orc_union32 *ORC_RESTRICT ptr4;
3508   orc_union32 var35;
3509   orc_union16 var36;
3510   orc_union16 var37;
3511   orc_union16 var38;
3512   orc_union16 var39;
3513   orc_int8 var40;
3514   orc_int8 var41;
3515
3516   for (j = 0; j < m; j++) {
3517     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
3518     ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
3519     ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j);
3520     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
3521
3522
3523     for (i = 0; i < n; i++) {
3524       /* 0: loadl */
3525       var35 = ptr4[i];
3526       /* 1: splitwb */
3527       {
3528         orc_union16 _src;
3529         _src.i = var35.x2[0];
3530         var36.x2[0] = _src.x2[1];
3531         var39.x2[0] = _src.x2[0];
3532       }
3533       {
3534         orc_union16 _src;
3535         _src.i = var35.x2[1];
3536         var36.x2[1] = _src.x2[1];
3537         var39.x2[1] = _src.x2[0];
3538       }
3539       /* 2: storew */
3540       ptr0[i] = var36;
3541       /* 3: splitwb */
3542       {
3543         orc_union16 _src;
3544         _src.i = var39.i;
3545         var40 = _src.x2[1];
3546         var41 = _src.x2[0];
3547       }
3548       /* 4: splatbw */
3549       var37.i = ((var41 & 0xff) << 8) | (var41 & 0xff);
3550       /* 5: storew */
3551       ptr1[i] = var37;
3552       /* 6: splatbw */
3553       var38.i = ((var40 & 0xff) << 8) | (var40 & 0xff);
3554       /* 7: storew */
3555       ptr2[i] = var38;
3556     }
3557   }
3558
3559 }
3560
3561 void
3562 video_convert_orc_convert_UYVY_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride,
3563     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
3564     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
3565 {
3566   OrcExecutor _ex, *ex = &_ex;
3567   static volatile int p_inited = 0;
3568   static OrcCode *c = 0;
3569   void (*func) (OrcExecutor *);
3570
3571   if (!p_inited) {
3572     orc_once_mutex_lock ();
3573     if (!p_inited) {
3574       OrcProgram *p;
3575
3576 #if 1
3577       static const orc_uint8 bc[] = {
3578         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
3579         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 85, 89,
3580         86, 89, 95, 89, 52, 52, 52, 11, 2, 2, 11, 2, 2, 11, 2, 2,
3581         12, 4, 4, 20, 2, 20, 1, 20, 1, 21, 1, 199, 0, 32, 4, 199,
3582         34, 33, 32, 151, 1, 33, 151, 2, 34, 2, 0,
3583       };
3584       p = orc_program_new_from_static_bytecode (bc);
3585       orc_program_set_backup_function (p,
3586           _backup_video_convert_orc_convert_UYVY_Y444);
3587 #else
3588       p = orc_program_new ();
3589       orc_program_set_2d (p);
3590       orc_program_set_name (p, "video_convert_orc_convert_UYVY_Y444");
3591       orc_program_set_backup_function (p,
3592           _backup_video_convert_orc_convert_UYVY_Y444);
3593       orc_program_add_destination (p, 2, "d1");
3594       orc_program_add_destination (p, 2, "d2");
3595       orc_program_add_destination (p, 2, "d3");
3596       orc_program_add_source (p, 4, "s1");
3597       orc_program_add_temporary (p, 2, "t1");
3598       orc_program_add_temporary (p, 1, "t2");
3599       orc_program_add_temporary (p, 1, "t3");
3600
3601       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1,
3602           ORC_VAR_D1);
3603       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_T1,
3604           ORC_VAR_D1);
3605       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_D1,
3606           ORC_VAR_D1);
3607       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_D3, ORC_VAR_T3, ORC_VAR_D1,
3608           ORC_VAR_D1);
3609 #endif
3610
3611       orc_program_compile (p);
3612       c = orc_program_take_code (p);
3613       orc_program_free (p);
3614     }
3615     p_inited = TRUE;
3616     orc_once_mutex_unlock ();
3617   }
3618   ex->arrays[ORC_VAR_A2] = c;
3619   ex->program = 0;
3620
3621   ex->n = n;
3622   ORC_EXECUTOR_M (ex) = m;
3623   ex->arrays[ORC_VAR_D1] = d1;
3624   ex->params[ORC_VAR_D1] = d1_stride;
3625   ex->arrays[ORC_VAR_D2] = d2;
3626   ex->params[ORC_VAR_D2] = d2_stride;
3627   ex->arrays[ORC_VAR_D3] = d3;
3628   ex->params[ORC_VAR_D3] = d3_stride;
3629   ex->arrays[ORC_VAR_S1] = (void *) s1;
3630   ex->params[ORC_VAR_S1] = s1_stride;
3631
3632   func = c->exec;
3633   func (ex);
3634 }
3635 #endif
3636
3637
3638 /* video_convert_orc_convert_UYVY_I420 */
3639 #ifdef DISABLE_ORC
3640 void
3641 video_convert_orc_convert_UYVY_I420 (guint8 * ORC_RESTRICT d1,
3642     guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
3643     guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1,
3644     const guint8 * ORC_RESTRICT s2, int n)
3645 {
3646   int i;
3647   orc_union16 *ORC_RESTRICT ptr0;
3648   orc_union16 *ORC_RESTRICT ptr1;
3649   orc_int8 *ORC_RESTRICT ptr2;
3650   orc_int8 *ORC_RESTRICT ptr3;
3651   const orc_union32 *ORC_RESTRICT ptr4;
3652   const orc_union32 *ORC_RESTRICT ptr5;
3653   orc_union32 var35;
3654   orc_union32 var36;
3655   orc_int8 var37;
3656   orc_int8 var38;
3657   orc_union16 var39;
3658   orc_union16 var40;
3659   orc_union16 var41;
3660   orc_union16 var42;
3661   orc_union16 var43;
3662
3663   ptr0 = (orc_union16 *) d1;
3664   ptr1 = (orc_union16 *) d2;
3665   ptr2 = (orc_int8 *) d3;
3666   ptr3 = (orc_int8 *) d4;
3667   ptr4 = (orc_union32 *) s1;
3668   ptr5 = (orc_union32 *) s2;
3669
3670
3671   for (i = 0; i < n; i++) {
3672     /* 0: loadl */
3673     var35 = ptr4[i];
3674     /* 1: splitwb */
3675     {
3676       orc_union16 _src;
3677       _src.i = var35.x2[0];
3678       var39.x2[0] = _src.x2[1];
3679       var40.x2[0] = _src.x2[0];
3680     }
3681     {
3682       orc_union16 _src;
3683       _src.i = var35.x2[1];
3684       var39.x2[1] = _src.x2[1];
3685       var40.x2[1] = _src.x2[0];
3686     }
3687     /* 2: storew */
3688     ptr0[i] = var39;
3689     /* 3: loadl */
3690     var36 = ptr5[i];
3691     /* 4: splitwb */
3692     {
3693       orc_union16 _src;
3694       _src.i = var36.x2[0];
3695       var41.x2[0] = _src.x2[1];
3696       var42.x2[0] = _src.x2[0];
3697     }
3698     {
3699       orc_union16 _src;
3700       _src.i = var36.x2[1];
3701       var41.x2[1] = _src.x2[1];
3702       var42.x2[1] = _src.x2[0];
3703     }
3704     /* 5: storew */
3705     ptr1[i] = var41;
3706     /* 6: avgub */
3707     var43.x2[0] = ((orc_uint8) var40.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
3708     var43.x2[1] = ((orc_uint8) var40.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
3709     /* 7: splitwb */
3710     {
3711       orc_union16 _src;
3712       _src.i = var43.i;
3713       var37 = _src.x2[1];
3714       var38 = _src.x2[0];
3715     }
3716     /* 8: storeb */
3717     ptr3[i] = var37;
3718     /* 9: storeb */
3719     ptr2[i] = var38;
3720   }
3721
3722 }
3723
3724 #else
3725 static void
3726 _backup_video_convert_orc_convert_UYVY_I420 (OrcExecutor * ORC_RESTRICT ex)
3727 {
3728   int i;
3729   int n = ex->n;
3730   orc_union16 *ORC_RESTRICT ptr0;
3731   orc_union16 *ORC_RESTRICT ptr1;
3732   orc_int8 *ORC_RESTRICT ptr2;
3733   orc_int8 *ORC_RESTRICT ptr3;
3734   const orc_union32 *ORC_RESTRICT ptr4;
3735   const orc_union32 *ORC_RESTRICT ptr5;
3736   orc_union32 var35;
3737   orc_union32 var36;
3738   orc_int8 var37;
3739   orc_int8 var38;
3740   orc_union16 var39;
3741   orc_union16 var40;
3742   orc_union16 var41;
3743   orc_union16 var42;
3744   orc_union16 var43;
3745
3746   ptr0 = (orc_union16 *) ex->arrays[0];
3747   ptr1 = (orc_union16 *) ex->arrays[1];
3748   ptr2 = (orc_int8 *) ex->arrays[2];
3749   ptr3 = (orc_int8 *) ex->arrays[3];
3750   ptr4 = (orc_union32 *) ex->arrays[4];
3751   ptr5 = (orc_union32 *) ex->arrays[5];
3752
3753
3754   for (i = 0; i < n; i++) {
3755     /* 0: loadl */
3756     var35 = ptr4[i];
3757     /* 1: splitwb */
3758     {
3759       orc_union16 _src;
3760       _src.i = var35.x2[0];
3761       var39.x2[0] = _src.x2[1];
3762       var40.x2[0] = _src.x2[0];
3763     }
3764     {
3765       orc_union16 _src;
3766       _src.i = var35.x2[1];
3767       var39.x2[1] = _src.x2[1];
3768       var40.x2[1] = _src.x2[0];
3769     }
3770     /* 2: storew */
3771     ptr0[i] = var39;
3772     /* 3: loadl */
3773     var36 = ptr5[i];
3774     /* 4: splitwb */
3775     {
3776       orc_union16 _src;
3777       _src.i = var36.x2[0];
3778       var41.x2[0] = _src.x2[1];
3779       var42.x2[0] = _src.x2[0];
3780     }
3781     {
3782       orc_union16 _src;
3783       _src.i = var36.x2[1];
3784       var41.x2[1] = _src.x2[1];
3785       var42.x2[1] = _src.x2[0];
3786     }
3787     /* 5: storew */
3788     ptr1[i] = var41;
3789     /* 6: avgub */
3790     var43.x2[0] = ((orc_uint8) var40.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
3791     var43.x2[1] = ((orc_uint8) var40.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
3792     /* 7: splitwb */
3793     {
3794       orc_union16 _src;
3795       _src.i = var43.i;
3796       var37 = _src.x2[1];
3797       var38 = _src.x2[0];
3798     }
3799     /* 8: storeb */
3800     ptr3[i] = var37;
3801     /* 9: storeb */
3802     ptr2[i] = var38;
3803   }
3804
3805 }
3806
3807 void
3808 video_convert_orc_convert_UYVY_I420 (guint8 * ORC_RESTRICT d1,
3809     guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
3810     guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1,
3811     const guint8 * ORC_RESTRICT s2, int n)
3812 {
3813   OrcExecutor _ex, *ex = &_ex;
3814   static volatile int p_inited = 0;
3815   static OrcCode *c = 0;
3816   void (*func) (OrcExecutor *);
3817
3818   if (!p_inited) {
3819     orc_once_mutex_lock ();
3820     if (!p_inited) {
3821       OrcProgram *p;
3822
3823 #if 1
3824       static const orc_uint8 bc[] = {
3825         1, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
3826         95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 85, 89, 86,
3827         89, 95, 73, 52, 50, 48, 11, 2, 2, 11, 2, 2, 11, 1, 1, 11,
3828         1, 1, 12, 4, 4, 12, 4, 4, 20, 2, 20, 2, 20, 2, 21, 1,
3829         199, 34, 32, 4, 97, 0, 34, 21, 1, 199, 34, 33, 5, 97, 1, 34,
3830         21, 1, 39, 32, 32, 33, 199, 3, 2, 32, 2, 0,
3831       };
3832       p = orc_program_new_from_static_bytecode (bc);
3833       orc_program_set_backup_function (p,
3834           _backup_video_convert_orc_convert_UYVY_I420);
3835 #else
3836       p = orc_program_new ();
3837       orc_program_set_name (p, "video_convert_orc_convert_UYVY_I420");
3838       orc_program_set_backup_function (p,
3839           _backup_video_convert_orc_convert_UYVY_I420);
3840       orc_program_add_destination (p, 2, "d1");
3841       orc_program_add_destination (p, 2, "d2");
3842       orc_program_add_destination (p, 1, "d3");
3843       orc_program_add_destination (p, 1, "d4");
3844       orc_program_add_source (p, 4, "s1");
3845       orc_program_add_source (p, 4, "s2");
3846       orc_program_add_temporary (p, 2, "t1");
3847       orc_program_add_temporary (p, 2, "t2");
3848       orc_program_add_temporary (p, 2, "t3");
3849
3850       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_S1,
3851           ORC_VAR_D1);
3852       orc_program_append_2 (p, "storew", 0, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_D1,
3853           ORC_VAR_D1);
3854       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_S2,
3855           ORC_VAR_D1);
3856       orc_program_append_2 (p, "storew", 0, ORC_VAR_D2, ORC_VAR_T3, ORC_VAR_D1,
3857           ORC_VAR_D1);
3858       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
3859           ORC_VAR_D1);
3860       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D4, ORC_VAR_D3, ORC_VAR_T1,
3861           ORC_VAR_D1);
3862 #endif
3863
3864       orc_program_compile (p);
3865       c = orc_program_take_code (p);
3866       orc_program_free (p);
3867     }
3868     p_inited = TRUE;
3869     orc_once_mutex_unlock ();
3870   }
3871   ex->arrays[ORC_VAR_A2] = c;
3872   ex->program = 0;
3873
3874   ex->n = n;
3875   ex->arrays[ORC_VAR_D1] = d1;
3876   ex->arrays[ORC_VAR_D2] = d2;
3877   ex->arrays[ORC_VAR_D3] = d3;
3878   ex->arrays[ORC_VAR_D4] = d4;
3879   ex->arrays[ORC_VAR_S1] = (void *) s1;
3880   ex->arrays[ORC_VAR_S2] = (void *) s2;
3881
3882   func = c->exec;
3883   func (ex);
3884 }
3885 #endif
3886
3887
3888 /* video_convert_orc_convert_AYUV_I420 */
3889 #ifdef DISABLE_ORC
3890 void
3891 video_convert_orc_convert_AYUV_I420 (guint8 * ORC_RESTRICT d1, int d1_stride,
3892     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
3893     int d3_stride, guint8 * ORC_RESTRICT d4, int d4_stride,
3894     const guint8 * ORC_RESTRICT s1, int s1_stride,
3895     const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m)
3896 {
3897   int i;
3898   int j;
3899   orc_union16 *ORC_RESTRICT ptr0;
3900   orc_union16 *ORC_RESTRICT ptr1;
3901   orc_int8 *ORC_RESTRICT ptr2;
3902   orc_int8 *ORC_RESTRICT ptr3;
3903   const orc_union64 *ORC_RESTRICT ptr4;
3904   const orc_union64 *ORC_RESTRICT ptr5;
3905   orc_union64 var40;
3906   orc_union16 var41;
3907   orc_union64 var42;
3908   orc_union16 var43;
3909   orc_int8 var44;
3910   orc_int8 var45;
3911   orc_union32 var46;
3912   orc_union32 var47;
3913   orc_union32 var48;
3914   orc_union32 var49;
3915   orc_union32 var50;
3916   orc_union16 var51;
3917   orc_union16 var52;
3918   orc_int8 var53;
3919   orc_int8 var54;
3920   orc_int8 var55;
3921   orc_int8 var56;
3922
3923   for (j = 0; j < m; j++) {
3924     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
3925     ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
3926     ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j);
3927     ptr3 = ORC_PTR_OFFSET (d4, d4_stride * j);
3928     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
3929     ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
3930
3931
3932     for (i = 0; i < n; i++) {
3933       /* 0: loadq */
3934       var40 = ptr4[i];
3935       /* 1: splitlw */
3936       {
3937         orc_union32 _src;
3938         _src.i = var40.x2[0];
3939         var46.x2[0] = _src.x2[1];
3940         var47.x2[0] = _src.x2[0];
3941       }
3942       {
3943         orc_union32 _src;
3944         _src.i = var40.x2[1];
3945         var46.x2[1] = _src.x2[1];
3946         var47.x2[1] = _src.x2[0];
3947       }
3948       /* 2: select1wb */
3949       {
3950         orc_union16 _src;
3951         _src.i = var47.x2[0];
3952         var41.x2[0] = _src.x2[1];
3953       }
3954       {
3955         orc_union16 _src;
3956         _src.i = var47.x2[1];
3957         var41.x2[1] = _src.x2[1];
3958       }
3959       /* 3: storew */
3960       ptr0[i] = var41;
3961       /* 4: loadq */
3962       var42 = ptr5[i];
3963       /* 5: splitlw */
3964       {
3965         orc_union32 _src;
3966         _src.i = var42.x2[0];
3967         var48.x2[0] = _src.x2[1];
3968         var49.x2[0] = _src.x2[0];
3969       }
3970       {
3971         orc_union32 _src;
3972         _src.i = var42.x2[1];
3973         var48.x2[1] = _src.x2[1];
3974         var49.x2[1] = _src.x2[0];
3975       }
3976       /* 6: select1wb */
3977       {
3978         orc_union16 _src;
3979         _src.i = var49.x2[0];
3980         var43.x2[0] = _src.x2[1];
3981       }
3982       {
3983         orc_union16 _src;
3984         _src.i = var49.x2[1];
3985         var43.x2[1] = _src.x2[1];
3986       }
3987       /* 7: storew */
3988       ptr1[i] = var43;
3989       /* 8: avgub */
3990       var50.x4[0] =
3991           ((orc_uint8) var46.x4[0] + (orc_uint8) var48.x4[0] + 1) >> 1;
3992       var50.x4[1] =
3993           ((orc_uint8) var46.x4[1] + (orc_uint8) var48.x4[1] + 1) >> 1;
3994       var50.x4[2] =
3995           ((orc_uint8) var46.x4[2] + (orc_uint8) var48.x4[2] + 1) >> 1;
3996       var50.x4[3] =
3997           ((orc_uint8) var46.x4[3] + (orc_uint8) var48.x4[3] + 1) >> 1;
3998       /* 9: splitwb */
3999       {
4000         orc_union16 _src;
4001         _src.i = var50.x2[0];
4002         var51.x2[0] = _src.x2[1];
4003         var52.x2[0] = _src.x2[0];
4004       }
4005       {
4006         orc_union16 _src;
4007         _src.i = var50.x2[1];
4008         var51.x2[1] = _src.x2[1];
4009         var52.x2[1] = _src.x2[0];
4010       }
4011       /* 10: splitwb */
4012       {
4013         orc_union16 _src;
4014         _src.i = var52.i;
4015         var53 = _src.x2[1];
4016         var54 = _src.x2[0];
4017       }
4018       /* 11: avgub */
4019       var44 = ((orc_uint8) var53 + (orc_uint8) var54 + 1) >> 1;
4020       /* 12: storeb */
4021       ptr2[i] = var44;
4022       /* 13: splitwb */
4023       {
4024         orc_union16 _src;
4025         _src.i = var51.i;
4026         var55 = _src.x2[1];
4027         var56 = _src.x2[0];
4028       }
4029       /* 14: avgub */
4030       var45 = ((orc_uint8) var55 + (orc_uint8) var56 + 1) >> 1;
4031       /* 15: storeb */
4032       ptr3[i] = var45;
4033     }
4034   }
4035
4036 }
4037
4038 #else
4039 static void
4040 _backup_video_convert_orc_convert_AYUV_I420 (OrcExecutor * ORC_RESTRICT ex)
4041 {
4042   int i;
4043   int j;
4044   int n = ex->n;
4045   int m = ex->params[ORC_VAR_A1];
4046   orc_union16 *ORC_RESTRICT ptr0;
4047   orc_union16 *ORC_RESTRICT ptr1;
4048   orc_int8 *ORC_RESTRICT ptr2;
4049   orc_int8 *ORC_RESTRICT ptr3;
4050   const orc_union64 *ORC_RESTRICT ptr4;
4051   const orc_union64 *ORC_RESTRICT ptr5;
4052   orc_union64 var40;
4053   orc_union16 var41;
4054   orc_union64 var42;
4055   orc_union16 var43;
4056   orc_int8 var44;
4057   orc_int8 var45;
4058   orc_union32 var46;
4059   orc_union32 var47;
4060   orc_union32 var48;
4061   orc_union32 var49;
4062   orc_union32 var50;
4063   orc_union16 var51;
4064   orc_union16 var52;
4065   orc_int8 var53;
4066   orc_int8 var54;
4067   orc_int8 var55;
4068   orc_int8 var56;
4069
4070   for (j = 0; j < m; j++) {
4071     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
4072     ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
4073     ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j);
4074     ptr3 = ORC_PTR_OFFSET (ex->arrays[3], ex->params[3] * j);
4075     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
4076     ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
4077
4078
4079     for (i = 0; i < n; i++) {
4080       /* 0: loadq */
4081       var40 = ptr4[i];
4082       /* 1: splitlw */
4083       {
4084         orc_union32 _src;
4085         _src.i = var40.x2[0];
4086         var46.x2[0] = _src.x2[1];
4087         var47.x2[0] = _src.x2[0];
4088       }
4089       {
4090         orc_union32 _src;
4091         _src.i = var40.x2[1];
4092         var46.x2[1] = _src.x2[1];
4093         var47.x2[1] = _src.x2[0];
4094       }
4095       /* 2: select1wb */
4096       {
4097         orc_union16 _src;
4098         _src.i = var47.x2[0];
4099         var41.x2[0] = _src.x2[1];
4100       }
4101       {
4102         orc_union16 _src;
4103         _src.i = var47.x2[1];
4104         var41.x2[1] = _src.x2[1];
4105       }
4106       /* 3: storew */
4107       ptr0[i] = var41;
4108       /* 4: loadq */
4109       var42 = ptr5[i];
4110       /* 5: splitlw */
4111       {
4112         orc_union32 _src;
4113         _src.i = var42.x2[0];
4114         var48.x2[0] = _src.x2[1];
4115         var49.x2[0] = _src.x2[0];
4116       }
4117       {
4118         orc_union32 _src;
4119         _src.i = var42.x2[1];
4120         var48.x2[1] = _src.x2[1];
4121         var49.x2[1] = _src.x2[0];
4122       }
4123       /* 6: select1wb */
4124       {
4125         orc_union16 _src;
4126         _src.i = var49.x2[0];
4127         var43.x2[0] = _src.x2[1];
4128       }
4129       {
4130         orc_union16 _src;
4131         _src.i = var49.x2[1];
4132         var43.x2[1] = _src.x2[1];
4133       }
4134       /* 7: storew */
4135       ptr1[i] = var43;
4136       /* 8: avgub */
4137       var50.x4[0] =
4138           ((orc_uint8) var46.x4[0] + (orc_uint8) var48.x4[0] + 1) >> 1;
4139       var50.x4[1] =
4140           ((orc_uint8) var46.x4[1] + (orc_uint8) var48.x4[1] + 1) >> 1;
4141       var50.x4[2] =
4142           ((orc_uint8) var46.x4[2] + (orc_uint8) var48.x4[2] + 1) >> 1;
4143       var50.x4[3] =
4144           ((orc_uint8) var46.x4[3] + (orc_uint8) var48.x4[3] + 1) >> 1;
4145       /* 9: splitwb */
4146       {
4147         orc_union16 _src;
4148         _src.i = var50.x2[0];
4149         var51.x2[0] = _src.x2[1];
4150         var52.x2[0] = _src.x2[0];
4151       }
4152       {
4153         orc_union16 _src;
4154         _src.i = var50.x2[1];
4155         var51.x2[1] = _src.x2[1];
4156         var52.x2[1] = _src.x2[0];
4157       }
4158       /* 10: splitwb */
4159       {
4160         orc_union16 _src;
4161         _src.i = var52.i;
4162         var53 = _src.x2[1];
4163         var54 = _src.x2[0];
4164       }
4165       /* 11: avgub */
4166       var44 = ((orc_uint8) var53 + (orc_uint8) var54 + 1) >> 1;
4167       /* 12: storeb */
4168       ptr2[i] = var44;
4169       /* 13: splitwb */
4170       {
4171         orc_union16 _src;
4172         _src.i = var51.i;
4173         var55 = _src.x2[1];
4174         var56 = _src.x2[0];
4175       }
4176       /* 14: avgub */
4177       var45 = ((orc_uint8) var55 + (orc_uint8) var56 + 1) >> 1;
4178       /* 15: storeb */
4179       ptr3[i] = var45;
4180     }
4181   }
4182
4183 }
4184
4185 void
4186 video_convert_orc_convert_AYUV_I420 (guint8 * ORC_RESTRICT d1, int d1_stride,
4187     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
4188     int d3_stride, guint8 * ORC_RESTRICT d4, int d4_stride,
4189     const guint8 * ORC_RESTRICT s1, int s1_stride,
4190     const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m)
4191 {
4192   OrcExecutor _ex, *ex = &_ex;
4193   static volatile int p_inited = 0;
4194   static OrcCode *c = 0;
4195   void (*func) (OrcExecutor *);
4196
4197   if (!p_inited) {
4198     orc_once_mutex_lock ();
4199     if (!p_inited) {
4200       OrcProgram *p;
4201
4202 #if 1
4203       static const orc_uint8 bc[] = {
4204         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
4205         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 65, 89,
4206         85, 86, 95, 73, 52, 50, 48, 11, 2, 2, 11, 2, 2, 11, 1, 1,
4207         11, 1, 1, 12, 8, 8, 12, 8, 8, 20, 4, 20, 4, 20, 4, 20,
4208         4, 20, 2, 20, 2, 20, 1, 20, 1, 21, 1, 198, 33, 32, 4, 21,
4209         1, 189, 0, 32, 21, 1, 198, 34, 32, 5, 21, 1, 189, 1, 32, 21,
4210         2, 39, 35, 33, 34, 21, 1, 199, 37, 36, 35, 199, 38, 39, 36, 39,
4211         2, 38, 39, 199, 38, 39, 37, 39, 3, 38, 39, 2, 0,
4212       };
4213       p = orc_program_new_from_static_bytecode (bc);
4214       orc_program_set_backup_function (p,
4215           _backup_video_convert_orc_convert_AYUV_I420);
4216 #else
4217       p = orc_program_new ();
4218       orc_program_set_2d (p);
4219       orc_program_set_name (p, "video_convert_orc_convert_AYUV_I420");
4220       orc_program_set_backup_function (p,
4221           _backup_video_convert_orc_convert_AYUV_I420);
4222       orc_program_add_destination (p, 2, "d1");
4223       orc_program_add_destination (p, 2, "d2");
4224       orc_program_add_destination (p, 1, "d3");
4225       orc_program_add_destination (p, 1, "d4");
4226       orc_program_add_source (p, 8, "s1");
4227       orc_program_add_source (p, 8, "s2");
4228       orc_program_add_temporary (p, 4, "t1");
4229       orc_program_add_temporary (p, 4, "t2");
4230       orc_program_add_temporary (p, 4, "t3");
4231       orc_program_add_temporary (p, 4, "t4");
4232       orc_program_add_temporary (p, 2, "t5");
4233       orc_program_add_temporary (p, 2, "t6");
4234       orc_program_add_temporary (p, 1, "t7");
4235       orc_program_add_temporary (p, 1, "t8");
4236
4237       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
4238           ORC_VAR_D1);
4239       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
4240           ORC_VAR_D1, ORC_VAR_D1);
4241       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_S2,
4242           ORC_VAR_D1);
4243       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D2, ORC_VAR_T1,
4244           ORC_VAR_D1, ORC_VAR_D1);
4245       orc_program_append_2 (p, "avgub", 2, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T3,
4246           ORC_VAR_D1);
4247       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_T4,
4248           ORC_VAR_D1);
4249       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T7, ORC_VAR_T8, ORC_VAR_T5,
4250           ORC_VAR_D1);
4251       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D3, ORC_VAR_T7, ORC_VAR_T8,
4252           ORC_VAR_D1);
4253       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T7, ORC_VAR_T8, ORC_VAR_T6,
4254           ORC_VAR_D1);
4255       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D4, ORC_VAR_T7, ORC_VAR_T8,
4256           ORC_VAR_D1);
4257 #endif
4258
4259       orc_program_compile (p);
4260       c = orc_program_take_code (p);
4261       orc_program_free (p);
4262     }
4263     p_inited = TRUE;
4264     orc_once_mutex_unlock ();
4265   }
4266   ex->arrays[ORC_VAR_A2] = c;
4267   ex->program = 0;
4268
4269   ex->n = n;
4270   ORC_EXECUTOR_M (ex) = m;
4271   ex->arrays[ORC_VAR_D1] = d1;
4272   ex->params[ORC_VAR_D1] = d1_stride;
4273   ex->arrays[ORC_VAR_D2] = d2;
4274   ex->params[ORC_VAR_D2] = d2_stride;
4275   ex->arrays[ORC_VAR_D3] = d3;
4276   ex->params[ORC_VAR_D3] = d3_stride;
4277   ex->arrays[ORC_VAR_D4] = d4;
4278   ex->params[ORC_VAR_D4] = d4_stride;
4279   ex->arrays[ORC_VAR_S1] = (void *) s1;
4280   ex->params[ORC_VAR_S1] = s1_stride;
4281   ex->arrays[ORC_VAR_S2] = (void *) s2;
4282   ex->params[ORC_VAR_S2] = s2_stride;
4283
4284   func = c->exec;
4285   func (ex);
4286 }
4287 #endif
4288
4289
4290 /* video_convert_orc_convert_AYUV_YUY2 */
4291 #ifdef DISABLE_ORC
4292 void
4293 video_convert_orc_convert_AYUV_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
4294     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
4295 {
4296   int i;
4297   int j;
4298   orc_union32 *ORC_RESTRICT ptr0;
4299   const orc_union64 *ORC_RESTRICT ptr4;
4300   orc_union64 var37;
4301   orc_union32 var38;
4302   orc_union32 var39;
4303   orc_union32 var40;
4304   orc_union16 var41;
4305   orc_union16 var42;
4306   orc_union16 var43;
4307   orc_union16 var44;
4308
4309   for (j = 0; j < m; j++) {
4310     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
4311     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
4312
4313
4314     for (i = 0; i < n; i++) {
4315       /* 0: loadq */
4316       var37 = ptr4[i];
4317       /* 1: splitlw */
4318       {
4319         orc_union32 _src;
4320         _src.i = var37.x2[0];
4321         var39.x2[0] = _src.x2[1];
4322         var40.x2[0] = _src.x2[0];
4323       }
4324       {
4325         orc_union32 _src;
4326         _src.i = var37.x2[1];
4327         var39.x2[1] = _src.x2[1];
4328         var40.x2[1] = _src.x2[0];
4329       }
4330       /* 2: splitlw */
4331       {
4332         orc_union32 _src;
4333         _src.i = var39.i;
4334         var41.i = _src.x2[1];
4335         var42.i = _src.x2[0];
4336       }
4337       /* 3: avgub */
4338       var43.x2[0] =
4339           ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
4340       var43.x2[1] =
4341           ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
4342       /* 4: select1wb */
4343       {
4344         orc_union16 _src;
4345         _src.i = var40.x2[0];
4346         var44.x2[0] = _src.x2[1];
4347       }
4348       {
4349         orc_union16 _src;
4350         _src.i = var40.x2[1];
4351         var44.x2[1] = _src.x2[1];
4352       }
4353       /* 5: mergebw */
4354       {
4355         orc_union16 _dest;
4356         _dest.x2[0] = var44.x2[0];
4357         _dest.x2[1] = var43.x2[0];
4358         var38.x2[0] = _dest.i;
4359       }
4360       {
4361         orc_union16 _dest;
4362         _dest.x2[0] = var44.x2[1];
4363         _dest.x2[1] = var43.x2[1];
4364         var38.x2[1] = _dest.i;
4365       }
4366       /* 6: storel */
4367       ptr0[i] = var38;
4368     }
4369   }
4370
4371 }
4372
4373 #else
4374 static void
4375 _backup_video_convert_orc_convert_AYUV_YUY2 (OrcExecutor * ORC_RESTRICT ex)
4376 {
4377   int i;
4378   int j;
4379   int n = ex->n;
4380   int m = ex->params[ORC_VAR_A1];
4381   orc_union32 *ORC_RESTRICT ptr0;
4382   const orc_union64 *ORC_RESTRICT ptr4;
4383   orc_union64 var37;
4384   orc_union32 var38;
4385   orc_union32 var39;
4386   orc_union32 var40;
4387   orc_union16 var41;
4388   orc_union16 var42;
4389   orc_union16 var43;
4390   orc_union16 var44;
4391
4392   for (j = 0; j < m; j++) {
4393     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
4394     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
4395
4396
4397     for (i = 0; i < n; i++) {
4398       /* 0: loadq */
4399       var37 = ptr4[i];
4400       /* 1: splitlw */
4401       {
4402         orc_union32 _src;
4403         _src.i = var37.x2[0];
4404         var39.x2[0] = _src.x2[1];
4405         var40.x2[0] = _src.x2[0];
4406       }
4407       {
4408         orc_union32 _src;
4409         _src.i = var37.x2[1];
4410         var39.x2[1] = _src.x2[1];
4411         var40.x2[1] = _src.x2[0];
4412       }
4413       /* 2: splitlw */
4414       {
4415         orc_union32 _src;
4416         _src.i = var39.i;
4417         var41.i = _src.x2[1];
4418         var42.i = _src.x2[0];
4419       }
4420       /* 3: avgub */
4421       var43.x2[0] =
4422           ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
4423       var43.x2[1] =
4424           ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
4425       /* 4: select1wb */
4426       {
4427         orc_union16 _src;
4428         _src.i = var40.x2[0];
4429         var44.x2[0] = _src.x2[1];
4430       }
4431       {
4432         orc_union16 _src;
4433         _src.i = var40.x2[1];
4434         var44.x2[1] = _src.x2[1];
4435       }
4436       /* 5: mergebw */
4437       {
4438         orc_union16 _dest;
4439         _dest.x2[0] = var44.x2[0];
4440         _dest.x2[1] = var43.x2[0];
4441         var38.x2[0] = _dest.i;
4442       }
4443       {
4444         orc_union16 _dest;
4445         _dest.x2[0] = var44.x2[1];
4446         _dest.x2[1] = var43.x2[1];
4447         var38.x2[1] = _dest.i;
4448       }
4449       /* 6: storel */
4450       ptr0[i] = var38;
4451     }
4452   }
4453
4454 }
4455
4456 void
4457 video_convert_orc_convert_AYUV_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
4458     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
4459 {
4460   OrcExecutor _ex, *ex = &_ex;
4461   static volatile int p_inited = 0;
4462   static OrcCode *c = 0;
4463   void (*func) (OrcExecutor *);
4464
4465   if (!p_inited) {
4466     orc_once_mutex_lock ();
4467     if (!p_inited) {
4468       OrcProgram *p;
4469
4470 #if 1
4471       static const orc_uint8 bc[] = {
4472         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
4473         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 65, 89,
4474         85, 86, 95, 89, 85, 89, 50, 11, 4, 4, 12, 8, 8, 20, 2, 20,
4475         2, 20, 2, 20, 4, 20, 4, 21, 1, 198, 36, 35, 4, 198, 33, 34,
4476         36, 21, 1, 39, 33, 33, 34, 21, 1, 189, 32, 35, 21, 1, 196, 0,
4477         32, 33, 2, 0,
4478       };
4479       p = orc_program_new_from_static_bytecode (bc);
4480       orc_program_set_backup_function (p,
4481           _backup_video_convert_orc_convert_AYUV_YUY2);
4482 #else
4483       p = orc_program_new ();
4484       orc_program_set_2d (p);
4485       orc_program_set_name (p, "video_convert_orc_convert_AYUV_YUY2");
4486       orc_program_set_backup_function (p,
4487           _backup_video_convert_orc_convert_AYUV_YUY2);
4488       orc_program_add_destination (p, 4, "d1");
4489       orc_program_add_source (p, 8, "s1");
4490       orc_program_add_temporary (p, 2, "t1");
4491       orc_program_add_temporary (p, 2, "t2");
4492       orc_program_add_temporary (p, 2, "t3");
4493       orc_program_add_temporary (p, 4, "t4");
4494       orc_program_add_temporary (p, 4, "t5");
4495
4496       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_S1,
4497           ORC_VAR_D1);
4498       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T5,
4499           ORC_VAR_D1);
4500       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3,
4501           ORC_VAR_D1);
4502       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T4,
4503           ORC_VAR_D1, ORC_VAR_D1);
4504       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
4505           ORC_VAR_D1);
4506 #endif
4507
4508       orc_program_compile (p);
4509       c = orc_program_take_code (p);
4510       orc_program_free (p);
4511     }
4512     p_inited = TRUE;
4513     orc_once_mutex_unlock ();
4514   }
4515   ex->arrays[ORC_VAR_A2] = c;
4516   ex->program = 0;
4517
4518   ex->n = n;
4519   ORC_EXECUTOR_M (ex) = m;
4520   ex->arrays[ORC_VAR_D1] = d1;
4521   ex->params[ORC_VAR_D1] = d1_stride;
4522   ex->arrays[ORC_VAR_S1] = (void *) s1;
4523   ex->params[ORC_VAR_S1] = s1_stride;
4524
4525   func = c->exec;
4526   func (ex);
4527 }
4528 #endif
4529
4530
4531 /* video_convert_orc_convert_AYUV_UYVY */
4532 #ifdef DISABLE_ORC
4533 void
4534 video_convert_orc_convert_AYUV_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
4535     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
4536 {
4537   int i;
4538   int j;
4539   orc_union32 *ORC_RESTRICT ptr0;
4540   const orc_union64 *ORC_RESTRICT ptr4;
4541   orc_union64 var37;
4542   orc_union32 var38;
4543   orc_union32 var39;
4544   orc_union32 var40;
4545   orc_union16 var41;
4546   orc_union16 var42;
4547   orc_union16 var43;
4548   orc_union16 var44;
4549
4550   for (j = 0; j < m; j++) {
4551     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
4552     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
4553
4554
4555     for (i = 0; i < n; i++) {
4556       /* 0: loadq */
4557       var37 = ptr4[i];
4558       /* 1: splitlw */
4559       {
4560         orc_union32 _src;
4561         _src.i = var37.x2[0];
4562         var39.x2[0] = _src.x2[1];
4563         var40.x2[0] = _src.x2[0];
4564       }
4565       {
4566         orc_union32 _src;
4567         _src.i = var37.x2[1];
4568         var39.x2[1] = _src.x2[1];
4569         var40.x2[1] = _src.x2[0];
4570       }
4571       /* 2: splitlw */
4572       {
4573         orc_union32 _src;
4574         _src.i = var39.i;
4575         var41.i = _src.x2[1];
4576         var42.i = _src.x2[0];
4577       }
4578       /* 3: avgub */
4579       var43.x2[0] =
4580           ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
4581       var43.x2[1] =
4582           ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
4583       /* 4: select1wb */
4584       {
4585         orc_union16 _src;
4586         _src.i = var40.x2[0];
4587         var44.x2[0] = _src.x2[1];
4588       }
4589       {
4590         orc_union16 _src;
4591         _src.i = var40.x2[1];
4592         var44.x2[1] = _src.x2[1];
4593       }
4594       /* 5: mergebw */
4595       {
4596         orc_union16 _dest;
4597         _dest.x2[0] = var43.x2[0];
4598         _dest.x2[1] = var44.x2[0];
4599         var38.x2[0] = _dest.i;
4600       }
4601       {
4602         orc_union16 _dest;
4603         _dest.x2[0] = var43.x2[1];
4604         _dest.x2[1] = var44.x2[1];
4605         var38.x2[1] = _dest.i;
4606       }
4607       /* 6: storel */
4608       ptr0[i] = var38;
4609     }
4610   }
4611
4612 }
4613
4614 #else
4615 static void
4616 _backup_video_convert_orc_convert_AYUV_UYVY (OrcExecutor * ORC_RESTRICT ex)
4617 {
4618   int i;
4619   int j;
4620   int n = ex->n;
4621   int m = ex->params[ORC_VAR_A1];
4622   orc_union32 *ORC_RESTRICT ptr0;
4623   const orc_union64 *ORC_RESTRICT ptr4;
4624   orc_union64 var37;
4625   orc_union32 var38;
4626   orc_union32 var39;
4627   orc_union32 var40;
4628   orc_union16 var41;
4629   orc_union16 var42;
4630   orc_union16 var43;
4631   orc_union16 var44;
4632
4633   for (j = 0; j < m; j++) {
4634     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
4635     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
4636
4637
4638     for (i = 0; i < n; i++) {
4639       /* 0: loadq */
4640       var37 = ptr4[i];
4641       /* 1: splitlw */
4642       {
4643         orc_union32 _src;
4644         _src.i = var37.x2[0];
4645         var39.x2[0] = _src.x2[1];
4646         var40.x2[0] = _src.x2[0];
4647       }
4648       {
4649         orc_union32 _src;
4650         _src.i = var37.x2[1];
4651         var39.x2[1] = _src.x2[1];
4652         var40.x2[1] = _src.x2[0];
4653       }
4654       /* 2: splitlw */
4655       {
4656         orc_union32 _src;
4657         _src.i = var39.i;
4658         var41.i = _src.x2[1];
4659         var42.i = _src.x2[0];
4660       }
4661       /* 3: avgub */
4662       var43.x2[0] =
4663           ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
4664       var43.x2[1] =
4665           ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
4666       /* 4: select1wb */
4667       {
4668         orc_union16 _src;
4669         _src.i = var40.x2[0];
4670         var44.x2[0] = _src.x2[1];
4671       }
4672       {
4673         orc_union16 _src;
4674         _src.i = var40.x2[1];
4675         var44.x2[1] = _src.x2[1];
4676       }
4677       /* 5: mergebw */
4678       {
4679         orc_union16 _dest;
4680         _dest.x2[0] = var43.x2[0];
4681         _dest.x2[1] = var44.x2[0];
4682         var38.x2[0] = _dest.i;
4683       }
4684       {
4685         orc_union16 _dest;
4686         _dest.x2[0] = var43.x2[1];
4687         _dest.x2[1] = var44.x2[1];
4688         var38.x2[1] = _dest.i;
4689       }
4690       /* 6: storel */
4691       ptr0[i] = var38;
4692     }
4693   }
4694
4695 }
4696
4697 void
4698 video_convert_orc_convert_AYUV_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
4699     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
4700 {
4701   OrcExecutor _ex, *ex = &_ex;
4702   static volatile int p_inited = 0;
4703   static OrcCode *c = 0;
4704   void (*func) (OrcExecutor *);
4705
4706   if (!p_inited) {
4707     orc_once_mutex_lock ();
4708     if (!p_inited) {
4709       OrcProgram *p;
4710
4711 #if 1
4712       static const orc_uint8 bc[] = {
4713         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
4714         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 65, 89,
4715         85, 86, 95, 85, 89, 86, 89, 11, 4, 4, 12, 8, 8, 20, 2, 20,
4716         2, 20, 2, 20, 4, 20, 4, 21, 1, 198, 36, 35, 4, 198, 33, 34,
4717         36, 21, 1, 39, 33, 33, 34, 21, 1, 189, 32, 35, 21, 1, 196, 0,
4718         33, 32, 2, 0,
4719       };
4720       p = orc_program_new_from_static_bytecode (bc);
4721       orc_program_set_backup_function (p,
4722           _backup_video_convert_orc_convert_AYUV_UYVY);
4723 #else
4724       p = orc_program_new ();
4725       orc_program_set_2d (p);
4726       orc_program_set_name (p, "video_convert_orc_convert_AYUV_UYVY");
4727       orc_program_set_backup_function (p,
4728           _backup_video_convert_orc_convert_AYUV_UYVY);
4729       orc_program_add_destination (p, 4, "d1");
4730       orc_program_add_source (p, 8, "s1");
4731       orc_program_add_temporary (p, 2, "t1");
4732       orc_program_add_temporary (p, 2, "t2");
4733       orc_program_add_temporary (p, 2, "t3");
4734       orc_program_add_temporary (p, 4, "t4");
4735       orc_program_add_temporary (p, 4, "t5");
4736
4737       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_S1,
4738           ORC_VAR_D1);
4739       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T5,
4740           ORC_VAR_D1);
4741       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3,
4742           ORC_VAR_D1);
4743       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T4,
4744           ORC_VAR_D1, ORC_VAR_D1);
4745       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
4746           ORC_VAR_D1);
4747 #endif
4748
4749       orc_program_compile (p);
4750       c = orc_program_take_code (p);
4751       orc_program_free (p);
4752     }
4753     p_inited = TRUE;
4754     orc_once_mutex_unlock ();
4755   }
4756   ex->arrays[ORC_VAR_A2] = c;
4757   ex->program = 0;
4758
4759   ex->n = n;
4760   ORC_EXECUTOR_M (ex) = m;
4761   ex->arrays[ORC_VAR_D1] = d1;
4762   ex->params[ORC_VAR_D1] = d1_stride;
4763   ex->arrays[ORC_VAR_S1] = (void *) s1;
4764   ex->params[ORC_VAR_S1] = s1_stride;
4765
4766   func = c->exec;
4767   func (ex);
4768 }
4769 #endif
4770
4771
4772 /* video_convert_orc_convert_AYUV_Y42B */
4773 #ifdef DISABLE_ORC
4774 void
4775 video_convert_orc_convert_AYUV_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride,
4776     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
4777     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
4778 {
4779   int i;
4780   int j;
4781   orc_union16 *ORC_RESTRICT ptr0;
4782   orc_int8 *ORC_RESTRICT ptr1;
4783   orc_int8 *ORC_RESTRICT ptr2;
4784   const orc_union64 *ORC_RESTRICT ptr4;
4785   orc_union64 var36;
4786   orc_int8 var37;
4787   orc_int8 var38;
4788   orc_union16 var39;
4789   orc_union32 var40;
4790   orc_union32 var41;
4791   orc_union16 var42;
4792   orc_union16 var43;
4793   orc_union16 var44;
4794
4795   for (j = 0; j < m; j++) {
4796     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
4797     ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
4798     ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j);
4799     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
4800
4801
4802     for (i = 0; i < n; i++) {
4803       /* 0: loadq */
4804       var36 = ptr4[i];
4805       /* 1: splitlw */
4806       {
4807         orc_union32 _src;
4808         _src.i = var36.x2[0];
4809         var40.x2[0] = _src.x2[1];
4810         var41.x2[0] = _src.x2[0];
4811       }
4812       {
4813         orc_union32 _src;
4814         _src.i = var36.x2[1];
4815         var40.x2[1] = _src.x2[1];
4816         var41.x2[1] = _src.x2[0];
4817       }
4818       /* 2: splitlw */
4819       {
4820         orc_union32 _src;
4821         _src.i = var40.i;
4822         var42.i = _src.x2[1];
4823         var43.i = _src.x2[0];
4824       }
4825       /* 3: avgub */
4826       var44.x2[0] =
4827           ((orc_uint8) var42.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1;
4828       var44.x2[1] =
4829           ((orc_uint8) var42.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1;
4830       /* 4: splitwb */
4831       {
4832         orc_union16 _src;
4833         _src.i = var44.i;
4834         var37 = _src.x2[1];
4835         var38 = _src.x2[0];
4836       }
4837       /* 5: storeb */
4838       ptr2[i] = var37;
4839       /* 6: storeb */
4840       ptr1[i] = var38;
4841       /* 7: select1wb */
4842       {
4843         orc_union16 _src;
4844         _src.i = var41.x2[0];
4845         var39.x2[0] = _src.x2[1];
4846       }
4847       {
4848         orc_union16 _src;
4849         _src.i = var41.x2[1];
4850         var39.x2[1] = _src.x2[1];
4851       }
4852       /* 8: storew */
4853       ptr0[i] = var39;
4854     }
4855   }
4856
4857 }
4858
4859 #else
4860 static void
4861 _backup_video_convert_orc_convert_AYUV_Y42B (OrcExecutor * ORC_RESTRICT ex)
4862 {
4863   int i;
4864   int j;
4865   int n = ex->n;
4866   int m = ex->params[ORC_VAR_A1];
4867   orc_union16 *ORC_RESTRICT ptr0;
4868   orc_int8 *ORC_RESTRICT ptr1;
4869   orc_int8 *ORC_RESTRICT ptr2;
4870   const orc_union64 *ORC_RESTRICT ptr4;
4871   orc_union64 var36;
4872   orc_int8 var37;
4873   orc_int8 var38;
4874   orc_union16 var39;
4875   orc_union32 var40;
4876   orc_union32 var41;
4877   orc_union16 var42;
4878   orc_union16 var43;
4879   orc_union16 var44;
4880
4881   for (j = 0; j < m; j++) {
4882     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
4883     ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
4884     ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j);
4885     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
4886
4887
4888     for (i = 0; i < n; i++) {
4889       /* 0: loadq */
4890       var36 = ptr4[i];
4891       /* 1: splitlw */
4892       {
4893         orc_union32 _src;
4894         _src.i = var36.x2[0];
4895         var40.x2[0] = _src.x2[1];
4896         var41.x2[0] = _src.x2[0];
4897       }
4898       {
4899         orc_union32 _src;
4900         _src.i = var36.x2[1];
4901         var40.x2[1] = _src.x2[1];
4902         var41.x2[1] = _src.x2[0];
4903       }
4904       /* 2: splitlw */
4905       {
4906         orc_union32 _src;
4907         _src.i = var40.i;
4908         var42.i = _src.x2[1];
4909         var43.i = _src.x2[0];
4910       }
4911       /* 3: avgub */
4912       var44.x2[0] =
4913           ((orc_uint8) var42.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1;
4914       var44.x2[1] =
4915           ((orc_uint8) var42.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1;
4916       /* 4: splitwb */
4917       {
4918         orc_union16 _src;
4919         _src.i = var44.i;
4920         var37 = _src.x2[1];
4921         var38 = _src.x2[0];
4922       }
4923       /* 5: storeb */
4924       ptr2[i] = var37;
4925       /* 6: storeb */
4926       ptr1[i] = var38;
4927       /* 7: select1wb */
4928       {
4929         orc_union16 _src;
4930         _src.i = var41.x2[0];
4931         var39.x2[0] = _src.x2[1];
4932       }
4933       {
4934         orc_union16 _src;
4935         _src.i = var41.x2[1];
4936         var39.x2[1] = _src.x2[1];
4937       }
4938       /* 8: storew */
4939       ptr0[i] = var39;
4940     }
4941   }
4942
4943 }
4944
4945 void
4946 video_convert_orc_convert_AYUV_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride,
4947     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
4948     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
4949 {
4950   OrcExecutor _ex, *ex = &_ex;
4951   static volatile int p_inited = 0;
4952   static OrcCode *c = 0;
4953   void (*func) (OrcExecutor *);
4954
4955   if (!p_inited) {
4956     orc_once_mutex_lock ();
4957     if (!p_inited) {
4958       OrcProgram *p;
4959
4960 #if 1
4961       static const orc_uint8 bc[] = {
4962         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
4963         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 65, 89,
4964         85, 86, 95, 89, 52, 50, 66, 11, 2, 2, 11, 1, 1, 11, 1, 1,
4965         12, 8, 8, 20, 4, 20, 4, 20, 2, 20, 2, 21, 1, 198, 33, 32,
4966         4, 198, 34, 35, 33, 21, 1, 39, 34, 34, 35, 199, 2, 1, 34, 21,
4967         1, 189, 0, 32, 2, 0,
4968       };
4969       p = orc_program_new_from_static_bytecode (bc);
4970       orc_program_set_backup_function (p,
4971           _backup_video_convert_orc_convert_AYUV_Y42B);
4972 #else
4973       p = orc_program_new ();
4974       orc_program_set_2d (p);
4975       orc_program_set_name (p, "video_convert_orc_convert_AYUV_Y42B");
4976       orc_program_set_backup_function (p,
4977           _backup_video_convert_orc_convert_AYUV_Y42B);
4978       orc_program_add_destination (p, 2, "d1");
4979       orc_program_add_destination (p, 1, "d2");
4980       orc_program_add_destination (p, 1, "d3");
4981       orc_program_add_source (p, 8, "s1");
4982       orc_program_add_temporary (p, 4, "t1");
4983       orc_program_add_temporary (p, 4, "t2");
4984       orc_program_add_temporary (p, 2, "t3");
4985       orc_program_add_temporary (p, 2, "t4");
4986
4987       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
4988           ORC_VAR_D1);
4989       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2,
4990           ORC_VAR_D1);
4991       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4,
4992           ORC_VAR_D1);
4993       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T3,
4994           ORC_VAR_D1);
4995       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
4996           ORC_VAR_D1, ORC_VAR_D1);
4997 #endif
4998
4999       orc_program_compile (p);
5000       c = orc_program_take_code (p);
5001       orc_program_free (p);
5002     }
5003     p_inited = TRUE;
5004     orc_once_mutex_unlock ();
5005   }
5006   ex->arrays[ORC_VAR_A2] = c;
5007   ex->program = 0;
5008
5009   ex->n = n;
5010   ORC_EXECUTOR_M (ex) = m;
5011   ex->arrays[ORC_VAR_D1] = d1;
5012   ex->params[ORC_VAR_D1] = d1_stride;
5013   ex->arrays[ORC_VAR_D2] = d2;
5014   ex->params[ORC_VAR_D2] = d2_stride;
5015   ex->arrays[ORC_VAR_D3] = d3;
5016   ex->params[ORC_VAR_D3] = d3_stride;
5017   ex->arrays[ORC_VAR_S1] = (void *) s1;
5018   ex->params[ORC_VAR_S1] = s1_stride;
5019
5020   func = c->exec;
5021   func (ex);
5022 }
5023 #endif
5024
5025
5026 /* video_convert_orc_convert_AYUV_Y444 */
5027 #ifdef DISABLE_ORC
5028 void
5029 video_convert_orc_convert_AYUV_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride,
5030     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
5031     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
5032 {
5033   int i;
5034   int j;
5035   orc_int8 *ORC_RESTRICT ptr0;
5036   orc_int8 *ORC_RESTRICT ptr1;
5037   orc_int8 *ORC_RESTRICT ptr2;
5038   const orc_union32 *ORC_RESTRICT ptr4;
5039   orc_union32 var34;
5040   orc_int8 var35;
5041   orc_int8 var36;
5042   orc_int8 var37;
5043   orc_union16 var38;
5044   orc_union16 var39;
5045
5046   for (j = 0; j < m; j++) {
5047     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
5048     ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
5049     ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j);
5050     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
5051
5052
5053     for (i = 0; i < n; i++) {
5054       /* 0: loadl */
5055       var34 = ptr4[i];
5056       /* 1: splitlw */
5057       {
5058         orc_union32 _src;
5059         _src.i = var34.i;
5060         var38.i = _src.x2[1];
5061         var39.i = _src.x2[0];
5062       }
5063       /* 2: splitwb */
5064       {
5065         orc_union16 _src;
5066         _src.i = var38.i;
5067         var35 = _src.x2[1];
5068         var36 = _src.x2[0];
5069       }
5070       /* 3: storeb */
5071       ptr2[i] = var35;
5072       /* 4: storeb */
5073       ptr1[i] = var36;
5074       /* 5: select1wb */
5075       {
5076         orc_union16 _src;
5077         _src.i = var39.i;
5078         var37 = _src.x2[1];
5079       }
5080       /* 6: storeb */
5081       ptr0[i] = var37;
5082     }
5083   }
5084
5085 }
5086
5087 #else
5088 static void
5089 _backup_video_convert_orc_convert_AYUV_Y444 (OrcExecutor * ORC_RESTRICT ex)
5090 {
5091   int i;
5092   int j;
5093   int n = ex->n;
5094   int m = ex->params[ORC_VAR_A1];
5095   orc_int8 *ORC_RESTRICT ptr0;
5096   orc_int8 *ORC_RESTRICT ptr1;
5097   orc_int8 *ORC_RESTRICT ptr2;
5098   const orc_union32 *ORC_RESTRICT ptr4;
5099   orc_union32 var34;
5100   orc_int8 var35;
5101   orc_int8 var36;
5102   orc_int8 var37;
5103   orc_union16 var38;
5104   orc_union16 var39;
5105
5106   for (j = 0; j < m; j++) {
5107     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
5108     ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
5109     ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j);
5110     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
5111
5112
5113     for (i = 0; i < n; i++) {
5114       /* 0: loadl */
5115       var34 = ptr4[i];
5116       /* 1: splitlw */
5117       {
5118         orc_union32 _src;
5119         _src.i = var34.i;
5120         var38.i = _src.x2[1];
5121         var39.i = _src.x2[0];
5122       }
5123       /* 2: splitwb */
5124       {
5125         orc_union16 _src;
5126         _src.i = var38.i;
5127         var35 = _src.x2[1];
5128         var36 = _src.x2[0];
5129       }
5130       /* 3: storeb */
5131       ptr2[i] = var35;
5132       /* 4: storeb */
5133       ptr1[i] = var36;
5134       /* 5: select1wb */
5135       {
5136         orc_union16 _src;
5137         _src.i = var39.i;
5138         var37 = _src.x2[1];
5139       }
5140       /* 6: storeb */
5141       ptr0[i] = var37;
5142     }
5143   }
5144
5145 }
5146
5147 void
5148 video_convert_orc_convert_AYUV_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride,
5149     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
5150     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
5151 {
5152   OrcExecutor _ex, *ex = &_ex;
5153   static volatile int p_inited = 0;
5154   static OrcCode *c = 0;
5155   void (*func) (OrcExecutor *);
5156
5157   if (!p_inited) {
5158     orc_once_mutex_lock ();
5159     if (!p_inited) {
5160       OrcProgram *p;
5161
5162 #if 1
5163       static const orc_uint8 bc[] = {
5164         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
5165         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 65, 89,
5166         85, 86, 95, 89, 52, 52, 52, 11, 1, 1, 11, 1, 1, 11, 1, 1,
5167         12, 4, 4, 20, 2, 20, 2, 198, 33, 32, 4, 199, 2, 1, 33, 189,
5168         0, 32, 2, 0,
5169       };
5170       p = orc_program_new_from_static_bytecode (bc);
5171       orc_program_set_backup_function (p,
5172           _backup_video_convert_orc_convert_AYUV_Y444);
5173 #else
5174       p = orc_program_new ();
5175       orc_program_set_2d (p);
5176       orc_program_set_name (p, "video_convert_orc_convert_AYUV_Y444");
5177       orc_program_set_backup_function (p,
5178           _backup_video_convert_orc_convert_AYUV_Y444);
5179       orc_program_add_destination (p, 1, "d1");
5180       orc_program_add_destination (p, 1, "d2");
5181       orc_program_add_destination (p, 1, "d3");
5182       orc_program_add_source (p, 4, "s1");
5183       orc_program_add_temporary (p, 2, "t1");
5184       orc_program_add_temporary (p, 2, "t2");
5185
5186       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
5187           ORC_VAR_D1);
5188       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T2,
5189           ORC_VAR_D1);
5190       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1,
5191           ORC_VAR_D1, ORC_VAR_D1);
5192 #endif
5193
5194       orc_program_compile (p);
5195       c = orc_program_take_code (p);
5196       orc_program_free (p);
5197     }
5198     p_inited = TRUE;
5199     orc_once_mutex_unlock ();
5200   }
5201   ex->arrays[ORC_VAR_A2] = c;
5202   ex->program = 0;
5203
5204   ex->n = n;
5205   ORC_EXECUTOR_M (ex) = m;
5206   ex->arrays[ORC_VAR_D1] = d1;
5207   ex->params[ORC_VAR_D1] = d1_stride;
5208   ex->arrays[ORC_VAR_D2] = d2;
5209   ex->params[ORC_VAR_D2] = d2_stride;
5210   ex->arrays[ORC_VAR_D3] = d3;
5211   ex->params[ORC_VAR_D3] = d3_stride;
5212   ex->arrays[ORC_VAR_S1] = (void *) s1;
5213   ex->params[ORC_VAR_S1] = s1_stride;
5214
5215   func = c->exec;
5216   func (ex);
5217 }
5218 #endif
5219
5220
5221 /* video_convert_orc_convert_Y42B_YUY2 */
5222 #ifdef DISABLE_ORC
5223 void
5224 video_convert_orc_convert_Y42B_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
5225     const guint8 * ORC_RESTRICT s1, int s1_stride,
5226     const guint8 * ORC_RESTRICT s2, int s2_stride,
5227     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
5228 {
5229   int i;
5230   int j;
5231   orc_union32 *ORC_RESTRICT ptr0;
5232   const orc_union16 *ORC_RESTRICT ptr4;
5233   const orc_int8 *ORC_RESTRICT ptr5;
5234   const orc_int8 *ORC_RESTRICT ptr6;
5235   orc_int8 var33;
5236   orc_int8 var34;
5237   orc_union16 var35;
5238   orc_union32 var36;
5239   orc_union16 var37;
5240
5241   for (j = 0; j < m; j++) {
5242     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
5243     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
5244     ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
5245     ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j);
5246
5247
5248     for (i = 0; i < n; i++) {
5249       /* 0: loadb */
5250       var33 = ptr5[i];
5251       /* 1: loadb */
5252       var34 = ptr6[i];
5253       /* 2: mergebw */
5254       {
5255         orc_union16 _dest;
5256         _dest.x2[0] = var33;
5257         _dest.x2[1] = var34;
5258         var37.i = _dest.i;
5259       }
5260       /* 3: loadw */
5261       var35 = ptr4[i];
5262       /* 4: mergebw */
5263       {
5264         orc_union16 _dest;
5265         _dest.x2[0] = var35.x2[0];
5266         _dest.x2[1] = var37.x2[0];
5267         var36.x2[0] = _dest.i;
5268       }
5269       {
5270         orc_union16 _dest;
5271         _dest.x2[0] = var35.x2[1];
5272         _dest.x2[1] = var37.x2[1];
5273         var36.x2[1] = _dest.i;
5274       }
5275       /* 5: storel */
5276       ptr0[i] = var36;
5277     }
5278   }
5279
5280 }
5281
5282 #else
5283 static void
5284 _backup_video_convert_orc_convert_Y42B_YUY2 (OrcExecutor * ORC_RESTRICT ex)
5285 {
5286   int i;
5287   int j;
5288   int n = ex->n;
5289   int m = ex->params[ORC_VAR_A1];
5290   orc_union32 *ORC_RESTRICT ptr0;
5291   const orc_union16 *ORC_RESTRICT ptr4;
5292   const orc_int8 *ORC_RESTRICT ptr5;
5293   const orc_int8 *ORC_RESTRICT ptr6;
5294   orc_int8 var33;
5295   orc_int8 var34;
5296   orc_union16 var35;
5297   orc_union32 var36;
5298   orc_union16 var37;
5299
5300   for (j = 0; j < m; j++) {
5301     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
5302     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
5303     ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
5304     ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j);
5305
5306
5307     for (i = 0; i < n; i++) {
5308       /* 0: loadb */
5309       var33 = ptr5[i];
5310       /* 1: loadb */
5311       var34 = ptr6[i];
5312       /* 2: mergebw */
5313       {
5314         orc_union16 _dest;
5315         _dest.x2[0] = var33;
5316         _dest.x2[1] = var34;
5317         var37.i = _dest.i;
5318       }
5319       /* 3: loadw */
5320       var35 = ptr4[i];
5321       /* 4: mergebw */
5322       {
5323         orc_union16 _dest;
5324         _dest.x2[0] = var35.x2[0];
5325         _dest.x2[1] = var37.x2[0];
5326         var36.x2[0] = _dest.i;
5327       }
5328       {
5329         orc_union16 _dest;
5330         _dest.x2[0] = var35.x2[1];
5331         _dest.x2[1] = var37.x2[1];
5332         var36.x2[1] = _dest.i;
5333       }
5334       /* 5: storel */
5335       ptr0[i] = var36;
5336     }
5337   }
5338
5339 }
5340
5341 void
5342 video_convert_orc_convert_Y42B_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
5343     const guint8 * ORC_RESTRICT s1, int s1_stride,
5344     const guint8 * ORC_RESTRICT s2, int s2_stride,
5345     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
5346 {
5347   OrcExecutor _ex, *ex = &_ex;
5348   static volatile int p_inited = 0;
5349   static OrcCode *c = 0;
5350   void (*func) (OrcExecutor *);
5351
5352   if (!p_inited) {
5353     orc_once_mutex_lock ();
5354     if (!p_inited) {
5355       OrcProgram *p;
5356
5357 #if 1
5358       static const orc_uint8 bc[] = {
5359         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
5360         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 89, 52,
5361         50, 66, 95, 89, 85, 89, 50, 11, 4, 4, 12, 2, 2, 12, 1, 1,
5362         12, 1, 1, 20, 2, 196, 32, 5, 6, 21, 1, 196, 0, 4, 32, 2,
5363         0,
5364       };
5365       p = orc_program_new_from_static_bytecode (bc);
5366       orc_program_set_backup_function (p,
5367           _backup_video_convert_orc_convert_Y42B_YUY2);
5368 #else
5369       p = orc_program_new ();
5370       orc_program_set_2d (p);
5371       orc_program_set_name (p, "video_convert_orc_convert_Y42B_YUY2");
5372       orc_program_set_backup_function (p,
5373           _backup_video_convert_orc_convert_Y42B_YUY2);
5374       orc_program_add_destination (p, 4, "d1");
5375       orc_program_add_source (p, 2, "s1");
5376       orc_program_add_source (p, 1, "s2");
5377       orc_program_add_source (p, 1, "s3");
5378       orc_program_add_temporary (p, 2, "t1");
5379
5380       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3,
5381           ORC_VAR_D1);
5382       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1,
5383           ORC_VAR_D1);
5384 #endif
5385
5386       orc_program_compile (p);
5387       c = orc_program_take_code (p);
5388       orc_program_free (p);
5389     }
5390     p_inited = TRUE;
5391     orc_once_mutex_unlock ();
5392   }
5393   ex->arrays[ORC_VAR_A2] = c;
5394   ex->program = 0;
5395
5396   ex->n = n;
5397   ORC_EXECUTOR_M (ex) = m;
5398   ex->arrays[ORC_VAR_D1] = d1;
5399   ex->params[ORC_VAR_D1] = d1_stride;
5400   ex->arrays[ORC_VAR_S1] = (void *) s1;
5401   ex->params[ORC_VAR_S1] = s1_stride;
5402   ex->arrays[ORC_VAR_S2] = (void *) s2;
5403   ex->params[ORC_VAR_S2] = s2_stride;
5404   ex->arrays[ORC_VAR_S3] = (void *) s3;
5405   ex->params[ORC_VAR_S3] = s3_stride;
5406
5407   func = c->exec;
5408   func (ex);
5409 }
5410 #endif
5411
5412
5413 /* video_convert_orc_convert_Y42B_UYVY */
5414 #ifdef DISABLE_ORC
5415 void
5416 video_convert_orc_convert_Y42B_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
5417     const guint8 * ORC_RESTRICT s1, int s1_stride,
5418     const guint8 * ORC_RESTRICT s2, int s2_stride,
5419     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
5420 {
5421   int i;
5422   int j;
5423   orc_union32 *ORC_RESTRICT ptr0;
5424   const orc_union16 *ORC_RESTRICT ptr4;
5425   const orc_int8 *ORC_RESTRICT ptr5;
5426   const orc_int8 *ORC_RESTRICT ptr6;
5427   orc_int8 var33;
5428   orc_int8 var34;
5429   orc_union16 var35;
5430   orc_union32 var36;
5431   orc_union16 var37;
5432
5433   for (j = 0; j < m; j++) {
5434     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
5435     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
5436     ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
5437     ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j);
5438
5439
5440     for (i = 0; i < n; i++) {
5441       /* 0: loadb */
5442       var33 = ptr5[i];
5443       /* 1: loadb */
5444       var34 = ptr6[i];
5445       /* 2: mergebw */
5446       {
5447         orc_union16 _dest;
5448         _dest.x2[0] = var33;
5449         _dest.x2[1] = var34;
5450         var37.i = _dest.i;
5451       }
5452       /* 3: loadw */
5453       var35 = ptr4[i];
5454       /* 4: mergebw */
5455       {
5456         orc_union16 _dest;
5457         _dest.x2[0] = var37.x2[0];
5458         _dest.x2[1] = var35.x2[0];
5459         var36.x2[0] = _dest.i;
5460       }
5461       {
5462         orc_union16 _dest;
5463         _dest.x2[0] = var37.x2[1];
5464         _dest.x2[1] = var35.x2[1];
5465         var36.x2[1] = _dest.i;
5466       }
5467       /* 5: storel */
5468       ptr0[i] = var36;
5469     }
5470   }
5471
5472 }
5473
5474 #else
5475 static void
5476 _backup_video_convert_orc_convert_Y42B_UYVY (OrcExecutor * ORC_RESTRICT ex)
5477 {
5478   int i;
5479   int j;
5480   int n = ex->n;
5481   int m = ex->params[ORC_VAR_A1];
5482   orc_union32 *ORC_RESTRICT ptr0;
5483   const orc_union16 *ORC_RESTRICT ptr4;
5484   const orc_int8 *ORC_RESTRICT ptr5;
5485   const orc_int8 *ORC_RESTRICT ptr6;
5486   orc_int8 var33;
5487   orc_int8 var34;
5488   orc_union16 var35;
5489   orc_union32 var36;
5490   orc_union16 var37;
5491
5492   for (j = 0; j < m; j++) {
5493     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
5494     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
5495     ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
5496     ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j);
5497
5498
5499     for (i = 0; i < n; i++) {
5500       /* 0: loadb */
5501       var33 = ptr5[i];
5502       /* 1: loadb */
5503       var34 = ptr6[i];
5504       /* 2: mergebw */
5505       {
5506         orc_union16 _dest;
5507         _dest.x2[0] = var33;
5508         _dest.x2[1] = var34;
5509         var37.i = _dest.i;
5510       }
5511       /* 3: loadw */
5512       var35 = ptr4[i];
5513       /* 4: mergebw */
5514       {
5515         orc_union16 _dest;
5516         _dest.x2[0] = var37.x2[0];
5517         _dest.x2[1] = var35.x2[0];
5518         var36.x2[0] = _dest.i;
5519       }
5520       {
5521         orc_union16 _dest;
5522         _dest.x2[0] = var37.x2[1];
5523         _dest.x2[1] = var35.x2[1];
5524         var36.x2[1] = _dest.i;
5525       }
5526       /* 5: storel */
5527       ptr0[i] = var36;
5528     }
5529   }
5530
5531 }
5532
5533 void
5534 video_convert_orc_convert_Y42B_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
5535     const guint8 * ORC_RESTRICT s1, int s1_stride,
5536     const guint8 * ORC_RESTRICT s2, int s2_stride,
5537     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
5538 {
5539   OrcExecutor _ex, *ex = &_ex;
5540   static volatile int p_inited = 0;
5541   static OrcCode *c = 0;
5542   void (*func) (OrcExecutor *);
5543
5544   if (!p_inited) {
5545     orc_once_mutex_lock ();
5546     if (!p_inited) {
5547       OrcProgram *p;
5548
5549 #if 1
5550       static const orc_uint8 bc[] = {
5551         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
5552         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 89, 52,
5553         50, 66, 95, 85, 89, 86, 89, 11, 4, 4, 12, 2, 2, 12, 1, 1,
5554         12, 1, 1, 20, 2, 196, 32, 5, 6, 21, 1, 196, 0, 32, 4, 2,
5555         0,
5556       };
5557       p = orc_program_new_from_static_bytecode (bc);
5558       orc_program_set_backup_function (p,
5559           _backup_video_convert_orc_convert_Y42B_UYVY);
5560 #else
5561       p = orc_program_new ();
5562       orc_program_set_2d (p);
5563       orc_program_set_name (p, "video_convert_orc_convert_Y42B_UYVY");
5564       orc_program_set_backup_function (p,
5565           _backup_video_convert_orc_convert_Y42B_UYVY);
5566       orc_program_add_destination (p, 4, "d1");
5567       orc_program_add_source (p, 2, "s1");
5568       orc_program_add_source (p, 1, "s2");
5569       orc_program_add_source (p, 1, "s3");
5570       orc_program_add_temporary (p, 2, "t1");
5571
5572       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3,
5573           ORC_VAR_D1);
5574       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1,
5575           ORC_VAR_D1);
5576 #endif
5577
5578       orc_program_compile (p);
5579       c = orc_program_take_code (p);
5580       orc_program_free (p);
5581     }
5582     p_inited = TRUE;
5583     orc_once_mutex_unlock ();
5584   }
5585   ex->arrays[ORC_VAR_A2] = c;
5586   ex->program = 0;
5587
5588   ex->n = n;
5589   ORC_EXECUTOR_M (ex) = m;
5590   ex->arrays[ORC_VAR_D1] = d1;
5591   ex->params[ORC_VAR_D1] = d1_stride;
5592   ex->arrays[ORC_VAR_S1] = (void *) s1;
5593   ex->params[ORC_VAR_S1] = s1_stride;
5594   ex->arrays[ORC_VAR_S2] = (void *) s2;
5595   ex->params[ORC_VAR_S2] = s2_stride;
5596   ex->arrays[ORC_VAR_S3] = (void *) s3;
5597   ex->params[ORC_VAR_S3] = s3_stride;
5598
5599   func = c->exec;
5600   func (ex);
5601 }
5602 #endif
5603
5604
5605 /* video_convert_orc_convert_Y42B_AYUV */
5606 #ifdef DISABLE_ORC
5607 void
5608 video_convert_orc_convert_Y42B_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
5609     const guint8 * ORC_RESTRICT s1, int s1_stride,
5610     const guint8 * ORC_RESTRICT s2, int s2_stride,
5611     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
5612 {
5613   int i;
5614   int j;
5615   orc_union64 *ORC_RESTRICT ptr0;
5616   const orc_union16 *ORC_RESTRICT ptr4;
5617   const orc_int8 *ORC_RESTRICT ptr5;
5618   const orc_int8 *ORC_RESTRICT ptr6;
5619   orc_int8 var36;
5620   orc_int8 var37;
5621 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
5622   volatile orc_union16 var38;
5623 #else
5624   orc_union16 var38;
5625 #endif
5626   orc_union16 var39;
5627   orc_union64 var40;
5628   orc_union16 var41;
5629   orc_union32 var42;
5630   orc_union32 var43;
5631
5632   for (j = 0; j < m; j++) {
5633     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
5634     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
5635     ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
5636     ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j);
5637
5638     /* 3: loadpb */
5639     var38.x2[0] = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
5640     var38.x2[1] = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
5641
5642     for (i = 0; i < n; i++) {
5643       /* 0: loadb */
5644       var36 = ptr5[i];
5645       /* 1: loadb */
5646       var37 = ptr6[i];
5647       /* 2: mergebw */
5648       {
5649         orc_union16 _dest;
5650         _dest.x2[0] = var36;
5651         _dest.x2[1] = var37;
5652         var41.i = _dest.i;
5653       }
5654       /* 4: loadw */
5655       var39 = ptr4[i];
5656       /* 5: mergebw */
5657       {
5658         orc_union16 _dest;
5659         _dest.x2[0] = var38.x2[0];
5660         _dest.x2[1] = var39.x2[0];
5661         var42.x2[0] = _dest.i;
5662       }
5663       {
5664         orc_union16 _dest;
5665         _dest.x2[0] = var38.x2[1];
5666         _dest.x2[1] = var39.x2[1];
5667         var42.x2[1] = _dest.i;
5668       }
5669       /* 6: mergewl */
5670       {
5671         orc_union32 _dest;
5672         _dest.x2[0] = var41.i;
5673         _dest.x2[1] = var41.i;
5674         var43.i = _dest.i;
5675       }
5676       /* 7: mergewl */
5677       {
5678         orc_union32 _dest;
5679         _dest.x2[0] = var42.x2[0];
5680         _dest.x2[1] = var43.x2[0];
5681         var40.x2[0] = _dest.i;
5682       }
5683       {
5684         orc_union32 _dest;
5685         _dest.x2[0] = var42.x2[1];
5686         _dest.x2[1] = var43.x2[1];
5687         var40.x2[1] = _dest.i;
5688       }
5689       /* 8: storeq */
5690       ptr0[i] = var40;
5691     }
5692   }
5693
5694 }
5695
5696 #else
5697 static void
5698 _backup_video_convert_orc_convert_Y42B_AYUV (OrcExecutor * ORC_RESTRICT ex)
5699 {
5700   int i;
5701   int j;
5702   int n = ex->n;
5703   int m = ex->params[ORC_VAR_A1];
5704   orc_union64 *ORC_RESTRICT ptr0;
5705   const orc_union16 *ORC_RESTRICT ptr4;
5706   const orc_int8 *ORC_RESTRICT ptr5;
5707   const orc_int8 *ORC_RESTRICT ptr6;
5708   orc_int8 var36;
5709   orc_int8 var37;
5710 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
5711   volatile orc_union16 var38;
5712 #else
5713   orc_union16 var38;
5714 #endif
5715   orc_union16 var39;
5716   orc_union64 var40;
5717   orc_union16 var41;
5718   orc_union32 var42;
5719   orc_union32 var43;
5720
5721   for (j = 0; j < m; j++) {
5722     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
5723     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
5724     ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
5725     ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j);
5726
5727     /* 3: loadpb */
5728     var38.x2[0] = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
5729     var38.x2[1] = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
5730
5731     for (i = 0; i < n; i++) {
5732       /* 0: loadb */
5733       var36 = ptr5[i];
5734       /* 1: loadb */
5735       var37 = ptr6[i];
5736       /* 2: mergebw */
5737       {
5738         orc_union16 _dest;
5739         _dest.x2[0] = var36;
5740         _dest.x2[1] = var37;
5741         var41.i = _dest.i;
5742       }
5743       /* 4: loadw */
5744       var39 = ptr4[i];
5745       /* 5: mergebw */
5746       {
5747         orc_union16 _dest;
5748         _dest.x2[0] = var38.x2[0];
5749         _dest.x2[1] = var39.x2[0];
5750         var42.x2[0] = _dest.i;
5751       }
5752       {
5753         orc_union16 _dest;
5754         _dest.x2[0] = var38.x2[1];
5755         _dest.x2[1] = var39.x2[1];
5756         var42.x2[1] = _dest.i;
5757       }
5758       /* 6: mergewl */
5759       {
5760         orc_union32 _dest;
5761         _dest.x2[0] = var41.i;
5762         _dest.x2[1] = var41.i;
5763         var43.i = _dest.i;
5764       }
5765       /* 7: mergewl */
5766       {
5767         orc_union32 _dest;
5768         _dest.x2[0] = var42.x2[0];
5769         _dest.x2[1] = var43.x2[0];
5770         var40.x2[0] = _dest.i;
5771       }
5772       {
5773         orc_union32 _dest;
5774         _dest.x2[0] = var42.x2[1];
5775         _dest.x2[1] = var43.x2[1];
5776         var40.x2[1] = _dest.i;
5777       }
5778       /* 8: storeq */
5779       ptr0[i] = var40;
5780     }
5781   }
5782
5783 }
5784
5785 void
5786 video_convert_orc_convert_Y42B_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
5787     const guint8 * ORC_RESTRICT s1, int s1_stride,
5788     const guint8 * ORC_RESTRICT s2, int s2_stride,
5789     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
5790 {
5791   OrcExecutor _ex, *ex = &_ex;
5792   static volatile int p_inited = 0;
5793   static OrcCode *c = 0;
5794   void (*func) (OrcExecutor *);
5795
5796   if (!p_inited) {
5797     orc_once_mutex_lock ();
5798     if (!p_inited) {
5799       OrcProgram *p;
5800
5801 #if 1
5802       static const orc_uint8 bc[] = {
5803         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
5804         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 89, 52,
5805         50, 66, 95, 65, 89, 85, 86, 11, 8, 8, 12, 2, 2, 12, 1, 1,
5806         12, 1, 1, 14, 1, 255, 0, 0, 0, 20, 2, 20, 2, 20, 4, 20,
5807         4, 196, 32, 5, 6, 21, 1, 196, 35, 16, 4, 195, 34, 32, 32, 21,
5808         1, 195, 0, 35, 34, 2, 0,
5809       };
5810       p = orc_program_new_from_static_bytecode (bc);
5811       orc_program_set_backup_function (p,
5812           _backup_video_convert_orc_convert_Y42B_AYUV);
5813 #else
5814       p = orc_program_new ();
5815       orc_program_set_2d (p);
5816       orc_program_set_name (p, "video_convert_orc_convert_Y42B_AYUV");
5817       orc_program_set_backup_function (p,
5818           _backup_video_convert_orc_convert_Y42B_AYUV);
5819       orc_program_add_destination (p, 8, "d1");
5820       orc_program_add_source (p, 2, "s1");
5821       orc_program_add_source (p, 1, "s2");
5822       orc_program_add_source (p, 1, "s3");
5823       orc_program_add_constant (p, 1, 0x000000ff, "c1");
5824       orc_program_add_temporary (p, 2, "t1");
5825       orc_program_add_temporary (p, 2, "t2");
5826       orc_program_add_temporary (p, 4, "t3");
5827       orc_program_add_temporary (p, 4, "t4");
5828
5829       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3,
5830           ORC_VAR_D1);
5831       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T4, ORC_VAR_C1, ORC_VAR_S1,
5832           ORC_VAR_D1);
5833       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1,
5834           ORC_VAR_D1);
5835       orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_T3,
5836           ORC_VAR_D1);
5837 #endif
5838
5839       orc_program_compile (p);
5840       c = orc_program_take_code (p);
5841       orc_program_free (p);
5842     }
5843     p_inited = TRUE;
5844     orc_once_mutex_unlock ();
5845   }
5846   ex->arrays[ORC_VAR_A2] = c;
5847   ex->program = 0;
5848
5849   ex->n = n;
5850   ORC_EXECUTOR_M (ex) = m;
5851   ex->arrays[ORC_VAR_D1] = d1;
5852   ex->params[ORC_VAR_D1] = d1_stride;
5853   ex->arrays[ORC_VAR_S1] = (void *) s1;
5854   ex->params[ORC_VAR_S1] = s1_stride;
5855   ex->arrays[ORC_VAR_S2] = (void *) s2;
5856   ex->params[ORC_VAR_S2] = s2_stride;
5857   ex->arrays[ORC_VAR_S3] = (void *) s3;
5858   ex->params[ORC_VAR_S3] = s3_stride;
5859
5860   func = c->exec;
5861   func (ex);
5862 }
5863 #endif
5864
5865
5866 /* video_convert_orc_convert_Y444_YUY2 */
5867 #ifdef DISABLE_ORC
5868 void
5869 video_convert_orc_convert_Y444_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
5870     const guint8 * ORC_RESTRICT s1, int s1_stride,
5871     const guint8 * ORC_RESTRICT s2, int s2_stride,
5872     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
5873 {
5874   int i;
5875   int j;
5876   orc_union32 *ORC_RESTRICT ptr0;
5877   const orc_union16 *ORC_RESTRICT ptr4;
5878   const orc_union16 *ORC_RESTRICT ptr5;
5879   const orc_union16 *ORC_RESTRICT ptr6;
5880   orc_union16 var36;
5881   orc_union16 var37;
5882   orc_union16 var38;
5883   orc_union32 var39;
5884   orc_union32 var40;
5885   orc_union16 var41;
5886   orc_union16 var42;
5887   orc_union16 var43;
5888
5889   for (j = 0; j < m; j++) {
5890     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
5891     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
5892     ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
5893     ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j);
5894
5895
5896     for (i = 0; i < n; i++) {
5897       /* 0: loadw */
5898       var36 = ptr5[i];
5899       /* 1: loadw */
5900       var37 = ptr6[i];
5901       /* 2: mergebw */
5902       {
5903         orc_union16 _dest;
5904         _dest.x2[0] = var36.x2[0];
5905         _dest.x2[1] = var37.x2[0];
5906         var40.x2[0] = _dest.i;
5907       }
5908       {
5909         orc_union16 _dest;
5910         _dest.x2[0] = var36.x2[1];
5911         _dest.x2[1] = var37.x2[1];
5912         var40.x2[1] = _dest.i;
5913       }
5914       /* 3: splitlw */
5915       {
5916         orc_union32 _src;
5917         _src.i = var40.i;
5918         var41.i = _src.x2[1];
5919         var42.i = _src.x2[0];
5920       }
5921       /* 4: avgub */
5922       var43.x2[0] =
5923           ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
5924       var43.x2[1] =
5925           ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
5926       /* 5: loadw */
5927       var38 = ptr4[i];
5928       /* 6: mergebw */
5929       {
5930         orc_union16 _dest;
5931         _dest.x2[0] = var38.x2[0];
5932         _dest.x2[1] = var43.x2[0];
5933         var39.x2[0] = _dest.i;
5934       }
5935       {
5936         orc_union16 _dest;
5937         _dest.x2[0] = var38.x2[1];
5938         _dest.x2[1] = var43.x2[1];
5939         var39.x2[1] = _dest.i;
5940       }
5941       /* 7: storel */
5942       ptr0[i] = var39;
5943     }
5944   }
5945
5946 }
5947
5948 #else
5949 static void
5950 _backup_video_convert_orc_convert_Y444_YUY2 (OrcExecutor * ORC_RESTRICT ex)
5951 {
5952   int i;
5953   int j;
5954   int n = ex->n;
5955   int m = ex->params[ORC_VAR_A1];
5956   orc_union32 *ORC_RESTRICT ptr0;
5957   const orc_union16 *ORC_RESTRICT ptr4;
5958   const orc_union16 *ORC_RESTRICT ptr5;
5959   const orc_union16 *ORC_RESTRICT ptr6;
5960   orc_union16 var36;
5961   orc_union16 var37;
5962   orc_union16 var38;
5963   orc_union32 var39;
5964   orc_union32 var40;
5965   orc_union16 var41;
5966   orc_union16 var42;
5967   orc_union16 var43;
5968
5969   for (j = 0; j < m; j++) {
5970     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
5971     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
5972     ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
5973     ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j);
5974
5975
5976     for (i = 0; i < n; i++) {
5977       /* 0: loadw */
5978       var36 = ptr5[i];
5979       /* 1: loadw */
5980       var37 = ptr6[i];
5981       /* 2: mergebw */
5982       {
5983         orc_union16 _dest;
5984         _dest.x2[0] = var36.x2[0];
5985         _dest.x2[1] = var37.x2[0];
5986         var40.x2[0] = _dest.i;
5987       }
5988       {
5989         orc_union16 _dest;
5990         _dest.x2[0] = var36.x2[1];
5991         _dest.x2[1] = var37.x2[1];
5992         var40.x2[1] = _dest.i;
5993       }
5994       /* 3: splitlw */
5995       {
5996         orc_union32 _src;
5997         _src.i = var40.i;
5998         var41.i = _src.x2[1];
5999         var42.i = _src.x2[0];
6000       }
6001       /* 4: avgub */
6002       var43.x2[0] =
6003           ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
6004       var43.x2[1] =
6005           ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
6006       /* 5: loadw */
6007       var38 = ptr4[i];
6008       /* 6: mergebw */
6009       {
6010         orc_union16 _dest;
6011         _dest.x2[0] = var38.x2[0];
6012         _dest.x2[1] = var43.x2[0];
6013         var39.x2[0] = _dest.i;
6014       }
6015       {
6016         orc_union16 _dest;
6017         _dest.x2[0] = var38.x2[1];
6018         _dest.x2[1] = var43.x2[1];
6019         var39.x2[1] = _dest.i;
6020       }
6021       /* 7: storel */
6022       ptr0[i] = var39;
6023     }
6024   }
6025
6026 }
6027
6028 void
6029 video_convert_orc_convert_Y444_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
6030     const guint8 * ORC_RESTRICT s1, int s1_stride,
6031     const guint8 * ORC_RESTRICT s2, int s2_stride,
6032     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
6033 {
6034   OrcExecutor _ex, *ex = &_ex;
6035   static volatile int p_inited = 0;
6036   static OrcCode *c = 0;
6037   void (*func) (OrcExecutor *);
6038
6039   if (!p_inited) {
6040     orc_once_mutex_lock ();
6041     if (!p_inited) {
6042       OrcProgram *p;
6043
6044 #if 1
6045       static const orc_uint8 bc[] = {
6046         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
6047         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 89, 52,
6048         52, 52, 95, 89, 85, 89, 50, 11, 4, 4, 12, 2, 2, 12, 2, 2,
6049         12, 2, 2, 20, 2, 20, 4, 20, 2, 20, 2, 21, 1, 196, 33, 5,
6050         6, 198, 34, 35, 33, 21, 1, 39, 32, 34, 35, 21, 1, 196, 0, 4,
6051         32, 2, 0,
6052       };
6053       p = orc_program_new_from_static_bytecode (bc);
6054       orc_program_set_backup_function (p,
6055           _backup_video_convert_orc_convert_Y444_YUY2);
6056 #else
6057       p = orc_program_new ();
6058       orc_program_set_2d (p);
6059       orc_program_set_name (p, "video_convert_orc_convert_Y444_YUY2");
6060       orc_program_set_backup_function (p,
6061           _backup_video_convert_orc_convert_Y444_YUY2);
6062       orc_program_add_destination (p, 4, "d1");
6063       orc_program_add_source (p, 2, "s1");
6064       orc_program_add_source (p, 2, "s2");
6065       orc_program_add_source (p, 2, "s3");
6066       orc_program_add_temporary (p, 2, "t1");
6067       orc_program_add_temporary (p, 4, "t2");
6068       orc_program_add_temporary (p, 2, "t3");
6069       orc_program_add_temporary (p, 2, "t4");
6070
6071       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S3,
6072           ORC_VAR_D1);
6073       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2,
6074           ORC_VAR_D1);
6075       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4,
6076           ORC_VAR_D1);
6077       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1,
6078           ORC_VAR_D1);
6079 #endif
6080
6081       orc_program_compile (p);
6082       c = orc_program_take_code (p);
6083       orc_program_free (p);
6084     }
6085     p_inited = TRUE;
6086     orc_once_mutex_unlock ();
6087   }
6088   ex->arrays[ORC_VAR_A2] = c;
6089   ex->program = 0;
6090
6091   ex->n = n;
6092   ORC_EXECUTOR_M (ex) = m;
6093   ex->arrays[ORC_VAR_D1] = d1;
6094   ex->params[ORC_VAR_D1] = d1_stride;
6095   ex->arrays[ORC_VAR_S1] = (void *) s1;
6096   ex->params[ORC_VAR_S1] = s1_stride;
6097   ex->arrays[ORC_VAR_S2] = (void *) s2;
6098   ex->params[ORC_VAR_S2] = s2_stride;
6099   ex->arrays[ORC_VAR_S3] = (void *) s3;
6100   ex->params[ORC_VAR_S3] = s3_stride;
6101
6102   func = c->exec;
6103   func (ex);
6104 }
6105 #endif
6106
6107
6108 /* video_convert_orc_convert_Y444_UYVY */
6109 #ifdef DISABLE_ORC
6110 void
6111 video_convert_orc_convert_Y444_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
6112     const guint8 * ORC_RESTRICT s1, int s1_stride,
6113     const guint8 * ORC_RESTRICT s2, int s2_stride,
6114     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
6115 {
6116   int i;
6117   int j;
6118   orc_union32 *ORC_RESTRICT ptr0;
6119   const orc_union16 *ORC_RESTRICT ptr4;
6120   const orc_union16 *ORC_RESTRICT ptr5;
6121   const orc_union16 *ORC_RESTRICT ptr6;
6122   orc_union16 var36;
6123   orc_union16 var37;
6124   orc_union16 var38;
6125   orc_union32 var39;
6126   orc_union32 var40;
6127   orc_union16 var41;
6128   orc_union16 var42;
6129   orc_union16 var43;
6130
6131   for (j = 0; j < m; j++) {
6132     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
6133     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
6134     ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
6135     ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j);
6136
6137
6138     for (i = 0; i < n; i++) {
6139       /* 0: loadw */
6140       var36 = ptr5[i];
6141       /* 1: loadw */
6142       var37 = ptr6[i];
6143       /* 2: mergebw */
6144       {
6145         orc_union16 _dest;
6146         _dest.x2[0] = var36.x2[0];
6147         _dest.x2[1] = var37.x2[0];
6148         var40.x2[0] = _dest.i;
6149       }
6150       {
6151         orc_union16 _dest;
6152         _dest.x2[0] = var36.x2[1];
6153         _dest.x2[1] = var37.x2[1];
6154         var40.x2[1] = _dest.i;
6155       }
6156       /* 3: splitlw */
6157       {
6158         orc_union32 _src;
6159         _src.i = var40.i;
6160         var41.i = _src.x2[1];
6161         var42.i = _src.x2[0];
6162       }
6163       /* 4: avgub */
6164       var43.x2[0] =
6165           ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
6166       var43.x2[1] =
6167           ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
6168       /* 5: loadw */
6169       var38 = ptr4[i];
6170       /* 6: mergebw */
6171       {
6172         orc_union16 _dest;
6173         _dest.x2[0] = var43.x2[0];
6174         _dest.x2[1] = var38.x2[0];
6175         var39.x2[0] = _dest.i;
6176       }
6177       {
6178         orc_union16 _dest;
6179         _dest.x2[0] = var43.x2[1];
6180         _dest.x2[1] = var38.x2[1];
6181         var39.x2[1] = _dest.i;
6182       }
6183       /* 7: storel */
6184       ptr0[i] = var39;
6185     }
6186   }
6187
6188 }
6189
6190 #else
6191 static void
6192 _backup_video_convert_orc_convert_Y444_UYVY (OrcExecutor * ORC_RESTRICT ex)
6193 {
6194   int i;
6195   int j;
6196   int n = ex->n;
6197   int m = ex->params[ORC_VAR_A1];
6198   orc_union32 *ORC_RESTRICT ptr0;
6199   const orc_union16 *ORC_RESTRICT ptr4;
6200   const orc_union16 *ORC_RESTRICT ptr5;
6201   const orc_union16 *ORC_RESTRICT ptr6;
6202   orc_union16 var36;
6203   orc_union16 var37;
6204   orc_union16 var38;
6205   orc_union32 var39;
6206   orc_union32 var40;
6207   orc_union16 var41;
6208   orc_union16 var42;
6209   orc_union16 var43;
6210
6211   for (j = 0; j < m; j++) {
6212     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
6213     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
6214     ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
6215     ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j);
6216
6217
6218     for (i = 0; i < n; i++) {
6219       /* 0: loadw */
6220       var36 = ptr5[i];
6221       /* 1: loadw */
6222       var37 = ptr6[i];
6223       /* 2: mergebw */
6224       {
6225         orc_union16 _dest;
6226         _dest.x2[0] = var36.x2[0];
6227         _dest.x2[1] = var37.x2[0];
6228         var40.x2[0] = _dest.i;
6229       }
6230       {
6231         orc_union16 _dest;
6232         _dest.x2[0] = var36.x2[1];
6233         _dest.x2[1] = var37.x2[1];
6234         var40.x2[1] = _dest.i;
6235       }
6236       /* 3: splitlw */
6237       {
6238         orc_union32 _src;
6239         _src.i = var40.i;
6240         var41.i = _src.x2[1];
6241         var42.i = _src.x2[0];
6242       }
6243       /* 4: avgub */
6244       var43.x2[0] =
6245           ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
6246       var43.x2[1] =
6247           ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
6248       /* 5: loadw */
6249       var38 = ptr4[i];
6250       /* 6: mergebw */
6251       {
6252         orc_union16 _dest;
6253         _dest.x2[0] = var43.x2[0];
6254         _dest.x2[1] = var38.x2[0];
6255         var39.x2[0] = _dest.i;
6256       }
6257       {
6258         orc_union16 _dest;
6259         _dest.x2[0] = var43.x2[1];
6260         _dest.x2[1] = var38.x2[1];
6261         var39.x2[1] = _dest.i;
6262       }
6263       /* 7: storel */
6264       ptr0[i] = var39;
6265     }
6266   }
6267
6268 }
6269
6270 void
6271 video_convert_orc_convert_Y444_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
6272     const guint8 * ORC_RESTRICT s1, int s1_stride,
6273     const guint8 * ORC_RESTRICT s2, int s2_stride,
6274     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
6275 {
6276   OrcExecutor _ex, *ex = &_ex;
6277   static volatile int p_inited = 0;
6278   static OrcCode *c = 0;
6279   void (*func) (OrcExecutor *);
6280
6281   if (!p_inited) {
6282     orc_once_mutex_lock ();
6283     if (!p_inited) {
6284       OrcProgram *p;
6285
6286 #if 1
6287       static const orc_uint8 bc[] = {
6288         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
6289         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 89, 52,
6290         52, 52, 95, 85, 89, 86, 89, 11, 4, 4, 12, 2, 2, 12, 2, 2,
6291         12, 2, 2, 20, 2, 20, 4, 20, 2, 20, 2, 21, 1, 196, 33, 5,
6292         6, 198, 34, 35, 33, 21, 1, 39, 32, 34, 35, 21, 1, 196, 0, 32,
6293         4, 2, 0,
6294       };
6295       p = orc_program_new_from_static_bytecode (bc);
6296       orc_program_set_backup_function (p,
6297           _backup_video_convert_orc_convert_Y444_UYVY);
6298 #else
6299       p = orc_program_new ();
6300       orc_program_set_2d (p);
6301       orc_program_set_name (p, "video_convert_orc_convert_Y444_UYVY");
6302       orc_program_set_backup_function (p,
6303           _backup_video_convert_orc_convert_Y444_UYVY);
6304       orc_program_add_destination (p, 4, "d1");
6305       orc_program_add_source (p, 2, "s1");
6306       orc_program_add_source (p, 2, "s2");
6307       orc_program_add_source (p, 2, "s3");
6308       orc_program_add_temporary (p, 2, "t1");
6309       orc_program_add_temporary (p, 4, "t2");
6310       orc_program_add_temporary (p, 2, "t3");
6311       orc_program_add_temporary (p, 2, "t4");
6312
6313       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S3,
6314           ORC_VAR_D1);
6315       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2,
6316           ORC_VAR_D1);
6317       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4,
6318           ORC_VAR_D1);
6319       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1,
6320           ORC_VAR_D1);
6321 #endif
6322
6323       orc_program_compile (p);
6324       c = orc_program_take_code (p);
6325       orc_program_free (p);
6326     }
6327     p_inited = TRUE;
6328     orc_once_mutex_unlock ();
6329   }
6330   ex->arrays[ORC_VAR_A2] = c;
6331   ex->program = 0;
6332
6333   ex->n = n;
6334   ORC_EXECUTOR_M (ex) = m;
6335   ex->arrays[ORC_VAR_D1] = d1;
6336   ex->params[ORC_VAR_D1] = d1_stride;
6337   ex->arrays[ORC_VAR_S1] = (void *) s1;
6338   ex->params[ORC_VAR_S1] = s1_stride;
6339   ex->arrays[ORC_VAR_S2] = (void *) s2;
6340   ex->params[ORC_VAR_S2] = s2_stride;
6341   ex->arrays[ORC_VAR_S3] = (void *) s3;
6342   ex->params[ORC_VAR_S3] = s3_stride;
6343
6344   func = c->exec;
6345   func (ex);
6346 }
6347 #endif
6348
6349
6350 /* video_convert_orc_convert_Y444_AYUV */
6351 #ifdef DISABLE_ORC
6352 void
6353 video_convert_orc_convert_Y444_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
6354     const guint8 * ORC_RESTRICT s1, int s1_stride,
6355     const guint8 * ORC_RESTRICT s2, int s2_stride,
6356     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
6357 {
6358   int i;
6359   int j;
6360   orc_union32 *ORC_RESTRICT ptr0;
6361   const orc_int8 *ORC_RESTRICT ptr4;
6362   const orc_int8 *ORC_RESTRICT ptr5;
6363   const orc_int8 *ORC_RESTRICT ptr6;
6364   orc_int8 var34;
6365   orc_int8 var35;
6366 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
6367   volatile orc_int8 var36;
6368 #else
6369   orc_int8 var36;
6370 #endif
6371   orc_int8 var37;
6372   orc_union32 var38;
6373   orc_union16 var39;
6374   orc_union16 var40;
6375
6376   for (j = 0; j < m; j++) {
6377     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
6378     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
6379     ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
6380     ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j);
6381
6382     /* 3: loadpb */
6383     var36 = (int) 0x000000ff;   /* 255 or 1.25987e-321f */
6384
6385     for (i = 0; i < n; i++) {
6386       /* 0: loadb */
6387       var34 = ptr5[i];
6388       /* 1: loadb */
6389       var35 = ptr6[i];
6390       /* 2: mergebw */
6391       {
6392         orc_union16 _dest;
6393         _dest.x2[0] = var34;
6394         _dest.x2[1] = var35;
6395         var39.i = _dest.i;
6396       }
6397       /* 4: loadb */
6398       var37 = ptr4[i];
6399       /* 5: mergebw */
6400       {
6401         orc_union16 _dest;
6402         _dest.x2[0] = var36;
6403         _dest.x2[1] = var37;
6404         var40.i = _dest.i;
6405       }
6406       /* 6: mergewl */
6407       {
6408         orc_union32 _dest;
6409         _dest.x2[0] = var40.i;
6410         _dest.x2[1] = var39.i;
6411         var38.i = _dest.i;
6412       }
6413       /* 7: storel */
6414       ptr0[i] = var38;
6415     }
6416   }
6417
6418 }
6419
6420 #else
6421 static void
6422 _backup_video_convert_orc_convert_Y444_AYUV (OrcExecutor * ORC_RESTRICT ex)
6423 {
6424   int i;
6425   int j;
6426   int n = ex->n;
6427   int m = ex->params[ORC_VAR_A1];
6428   orc_union32 *ORC_RESTRICT ptr0;
6429   const orc_int8 *ORC_RESTRICT ptr4;
6430   const orc_int8 *ORC_RESTRICT ptr5;
6431   const orc_int8 *ORC_RESTRICT ptr6;
6432   orc_int8 var34;
6433   orc_int8 var35;
6434 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
6435   volatile orc_int8 var36;
6436 #else
6437   orc_int8 var36;
6438 #endif
6439   orc_int8 var37;
6440   orc_union32 var38;
6441   orc_union16 var39;
6442   orc_union16 var40;
6443
6444   for (j = 0; j < m; j++) {
6445     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
6446     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
6447     ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
6448     ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j);
6449
6450     /* 3: loadpb */
6451     var36 = (int) 0x000000ff;   /* 255 or 1.25987e-321f */
6452
6453     for (i = 0; i < n; i++) {
6454       /* 0: loadb */
6455       var34 = ptr5[i];
6456       /* 1: loadb */
6457       var35 = ptr6[i];
6458       /* 2: mergebw */
6459       {
6460         orc_union16 _dest;
6461         _dest.x2[0] = var34;
6462         _dest.x2[1] = var35;
6463         var39.i = _dest.i;
6464       }
6465       /* 4: loadb */
6466       var37 = ptr4[i];
6467       /* 5: mergebw */
6468       {
6469         orc_union16 _dest;
6470         _dest.x2[0] = var36;
6471         _dest.x2[1] = var37;
6472         var40.i = _dest.i;
6473       }
6474       /* 6: mergewl */
6475       {
6476         orc_union32 _dest;
6477         _dest.x2[0] = var40.i;
6478         _dest.x2[1] = var39.i;
6479         var38.i = _dest.i;
6480       }
6481       /* 7: storel */
6482       ptr0[i] = var38;
6483     }
6484   }
6485
6486 }
6487
6488 void
6489 video_convert_orc_convert_Y444_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
6490     const guint8 * ORC_RESTRICT s1, int s1_stride,
6491     const guint8 * ORC_RESTRICT s2, int s2_stride,
6492     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
6493 {
6494   OrcExecutor _ex, *ex = &_ex;
6495   static volatile int p_inited = 0;
6496   static OrcCode *c = 0;
6497   void (*func) (OrcExecutor *);
6498
6499   if (!p_inited) {
6500     orc_once_mutex_lock ();
6501     if (!p_inited) {
6502       OrcProgram *p;
6503
6504 #if 1
6505       static const orc_uint8 bc[] = {
6506         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
6507         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 89, 52,
6508         52, 52, 95, 65, 89, 85, 86, 11, 4, 4, 12, 1, 1, 12, 1, 1,
6509         12, 1, 1, 14, 1, 255, 0, 0, 0, 20, 2, 20, 2, 196, 32, 5,
6510         6, 196, 33, 16, 4, 195, 0, 33, 32, 2, 0,
6511       };
6512       p = orc_program_new_from_static_bytecode (bc);
6513       orc_program_set_backup_function (p,
6514           _backup_video_convert_orc_convert_Y444_AYUV);
6515 #else
6516       p = orc_program_new ();
6517       orc_program_set_2d (p);
6518       orc_program_set_name (p, "video_convert_orc_convert_Y444_AYUV");
6519       orc_program_set_backup_function (p,
6520           _backup_video_convert_orc_convert_Y444_AYUV);
6521       orc_program_add_destination (p, 4, "d1");
6522       orc_program_add_source (p, 1, "s1");
6523       orc_program_add_source (p, 1, "s2");
6524       orc_program_add_source (p, 1, "s3");
6525       orc_program_add_constant (p, 1, 0x000000ff, "c1");
6526       orc_program_add_temporary (p, 2, "t1");
6527       orc_program_add_temporary (p, 2, "t2");
6528
6529       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3,
6530           ORC_VAR_D1);
6531       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1,
6532           ORC_VAR_D1);
6533       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
6534           ORC_VAR_D1);
6535 #endif
6536
6537       orc_program_compile (p);
6538       c = orc_program_take_code (p);
6539       orc_program_free (p);
6540     }
6541     p_inited = TRUE;
6542     orc_once_mutex_unlock ();
6543   }
6544   ex->arrays[ORC_VAR_A2] = c;
6545   ex->program = 0;
6546
6547   ex->n = n;
6548   ORC_EXECUTOR_M (ex) = m;
6549   ex->arrays[ORC_VAR_D1] = d1;
6550   ex->params[ORC_VAR_D1] = d1_stride;
6551   ex->arrays[ORC_VAR_S1] = (void *) s1;
6552   ex->params[ORC_VAR_S1] = s1_stride;
6553   ex->arrays[ORC_VAR_S2] = (void *) s2;
6554   ex->params[ORC_VAR_S2] = s2_stride;
6555   ex->arrays[ORC_VAR_S3] = (void *) s3;
6556   ex->params[ORC_VAR_S3] = s3_stride;
6557
6558   func = c->exec;
6559   func (ex);
6560 }
6561 #endif
6562
6563
6564 /* video_convert_orc_convert_AYUV_ARGB */
6565 #ifdef DISABLE_ORC
6566 void
6567 video_convert_orc_convert_AYUV_ARGB (guint8 * ORC_RESTRICT d1, int d1_stride,
6568     const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
6569     int p4, int p5, int n, int m)
6570 {
6571   int i;
6572   int j;
6573   orc_union32 *ORC_RESTRICT ptr0;
6574   const orc_union32 *ORC_RESTRICT ptr4;
6575   orc_union32 var46;
6576 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
6577   volatile orc_union32 var47;
6578 #else
6579   orc_union32 var47;
6580 #endif
6581   orc_union16 var48;
6582   orc_union16 var49;
6583   orc_union16 var50;
6584   orc_union16 var51;
6585   orc_union16 var52;
6586 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
6587   volatile orc_union32 var53;
6588 #else
6589   orc_union32 var53;
6590 #endif
6591   orc_union32 var54;
6592   orc_union32 var55;
6593   orc_union16 var56;
6594   orc_union16 var57;
6595   orc_int8 var58;
6596   orc_int8 var59;
6597   orc_int8 var60;
6598   orc_int8 var61;
6599   orc_union16 var62;
6600   orc_union16 var63;
6601   orc_union16 var64;
6602   orc_union16 var65;
6603   orc_union16 var66;
6604   orc_union16 var67;
6605   orc_union16 var68;
6606   orc_union16 var69;
6607   orc_union16 var70;
6608   orc_union16 var71;
6609   orc_union16 var72;
6610   orc_union16 var73;
6611   orc_int8 var74;
6612   orc_int8 var75;
6613   orc_int8 var76;
6614   orc_union16 var77;
6615   orc_union16 var78;
6616   orc_union32 var79;
6617
6618   for (j = 0; j < m; j++) {
6619     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
6620     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
6621
6622     /* 1: loadpb */
6623     var47.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
6624     var47.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
6625     var47.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
6626     var47.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
6627     /* 9: loadpw */
6628     var48.i = p1;
6629     /* 11: loadpw */
6630     var49.i = p2;
6631     /* 14: loadpw */
6632     var50.i = p3;
6633     /* 17: loadpw */
6634     var51.i = p4;
6635     /* 20: loadpw */
6636     var52.i = p5;
6637     /* 29: loadpb */
6638     var53.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
6639     var53.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
6640     var53.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
6641     var53.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
6642
6643     for (i = 0; i < n; i++) {
6644       /* 0: loadl */
6645       var46 = ptr4[i];
6646       /* 2: subb */
6647       var55.x4[0] = var46.x4[0] - var47.x4[0];
6648       var55.x4[1] = var46.x4[1] - var47.x4[1];
6649       var55.x4[2] = var46.x4[2] - var47.x4[2];
6650       var55.x4[3] = var46.x4[3] - var47.x4[3];
6651       /* 3: splitlw */
6652       {
6653         orc_union32 _src;
6654         _src.i = var55.i;
6655         var56.i = _src.x2[1];
6656         var57.i = _src.x2[0];
6657       }
6658       /* 4: splitwb */
6659       {
6660         orc_union16 _src;
6661         _src.i = var57.i;
6662         var58 = _src.x2[1];
6663         var59 = _src.x2[0];
6664       }
6665       /* 5: splitwb */
6666       {
6667         orc_union16 _src;
6668         _src.i = var56.i;
6669         var60 = _src.x2[1];
6670         var61 = _src.x2[0];
6671       }
6672       /* 6: splatbw */
6673       var62.i = ((var58 & 0xff) << 8) | (var58 & 0xff);
6674       /* 7: splatbw */
6675       var63.i = ((var61 & 0xff) << 8) | (var61 & 0xff);
6676       /* 8: splatbw */
6677       var64.i = ((var60 & 0xff) << 8) | (var60 & 0xff);
6678       /* 10: mulhsw */
6679       var65.i = (var62.i * var48.i) >> 16;
6680       /* 12: mulhsw */
6681       var66.i = (var64.i * var49.i) >> 16;
6682       /* 13: addssw */
6683       var67.i = ORC_CLAMP_SW (var65.i + var66.i);
6684       /* 15: mulhsw */
6685       var68.i = (var63.i * var50.i) >> 16;
6686       /* 16: addssw */
6687       var69.i = ORC_CLAMP_SW (var65.i + var68.i);
6688       /* 18: mulhsw */
6689       var70.i = (var63.i * var51.i) >> 16;
6690       /* 19: addssw */
6691       var71.i = ORC_CLAMP_SW (var65.i + var70.i);
6692       /* 21: mulhsw */
6693       var72.i = (var64.i * var52.i) >> 16;
6694       /* 22: addssw */
6695       var73.i = ORC_CLAMP_SW (var71.i + var72.i);
6696       /* 23: convssswb */
6697       var74 = ORC_CLAMP_SB (var67.i);
6698       /* 24: convssswb */
6699       var75 = ORC_CLAMP_SB (var73.i);
6700       /* 25: convssswb */
6701       var76 = ORC_CLAMP_SB (var69.i);
6702       /* 26: mergebw */
6703       {
6704         orc_union16 _dest;
6705         _dest.x2[0] = var59;
6706         _dest.x2[1] = var74;
6707         var77.i = _dest.i;
6708       }
6709       /* 27: mergebw */
6710       {
6711         orc_union16 _dest;
6712         _dest.x2[0] = var75;
6713         _dest.x2[1] = var76;
6714         var78.i = _dest.i;
6715       }
6716       /* 28: mergewl */
6717       {
6718         orc_union32 _dest;
6719         _dest.x2[0] = var77.i;
6720         _dest.x2[1] = var78.i;
6721         var79.i = _dest.i;
6722       }
6723       /* 30: addb */
6724       var54.x4[0] = var79.x4[0] + var53.x4[0];
6725       var54.x4[1] = var79.x4[1] + var53.x4[1];
6726       var54.x4[2] = var79.x4[2] + var53.x4[2];
6727       var54.x4[3] = var79.x4[3] + var53.x4[3];
6728       /* 31: storel */
6729       ptr0[i] = var54;
6730     }
6731   }
6732
6733 }
6734
6735 #else
6736 static void
6737 _backup_video_convert_orc_convert_AYUV_ARGB (OrcExecutor * ORC_RESTRICT ex)
6738 {
6739   int i;
6740   int j;
6741   int n = ex->n;
6742   int m = ex->params[ORC_VAR_A1];
6743   orc_union32 *ORC_RESTRICT ptr0;
6744   const orc_union32 *ORC_RESTRICT ptr4;
6745   orc_union32 var46;
6746 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
6747   volatile orc_union32 var47;
6748 #else
6749   orc_union32 var47;
6750 #endif
6751   orc_union16 var48;
6752   orc_union16 var49;
6753   orc_union16 var50;
6754   orc_union16 var51;
6755   orc_union16 var52;
6756 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
6757   volatile orc_union32 var53;
6758 #else
6759   orc_union32 var53;
6760 #endif
6761   orc_union32 var54;
6762   orc_union32 var55;
6763   orc_union16 var56;
6764   orc_union16 var57;
6765   orc_int8 var58;
6766   orc_int8 var59;
6767   orc_int8 var60;
6768   orc_int8 var61;
6769   orc_union16 var62;
6770   orc_union16 var63;
6771   orc_union16 var64;
6772   orc_union16 var65;
6773   orc_union16 var66;
6774   orc_union16 var67;
6775   orc_union16 var68;
6776   orc_union16 var69;
6777   orc_union16 var70;
6778   orc_union16 var71;
6779   orc_union16 var72;
6780   orc_union16 var73;
6781   orc_int8 var74;
6782   orc_int8 var75;
6783   orc_int8 var76;
6784   orc_union16 var77;
6785   orc_union16 var78;
6786   orc_union32 var79;
6787
6788   for (j = 0; j < m; j++) {
6789     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
6790     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
6791
6792     /* 1: loadpb */
6793     var47.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
6794     var47.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
6795     var47.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
6796     var47.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
6797     /* 9: loadpw */
6798     var48.i = ex->params[24];
6799     /* 11: loadpw */
6800     var49.i = ex->params[25];
6801     /* 14: loadpw */
6802     var50.i = ex->params[26];
6803     /* 17: loadpw */
6804     var51.i = ex->params[27];
6805     /* 20: loadpw */
6806     var52.i = ex->params[28];
6807     /* 29: loadpb */
6808     var53.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
6809     var53.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
6810     var53.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
6811     var53.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
6812
6813     for (i = 0; i < n; i++) {
6814       /* 0: loadl */
6815       var46 = ptr4[i];
6816       /* 2: subb */
6817       var55.x4[0] = var46.x4[0] - var47.x4[0];
6818       var55.x4[1] = var46.x4[1] - var47.x4[1];
6819       var55.x4[2] = var46.x4[2] - var47.x4[2];
6820       var55.x4[3] = var46.x4[3] - var47.x4[3];
6821       /* 3: splitlw */
6822       {
6823         orc_union32 _src;
6824         _src.i = var55.i;
6825         var56.i = _src.x2[1];
6826         var57.i = _src.x2[0];
6827       }
6828       /* 4: splitwb */
6829       {
6830         orc_union16 _src;
6831         _src.i = var57.i;
6832         var58 = _src.x2[1];
6833         var59 = _src.x2[0];
6834       }
6835       /* 5: splitwb */
6836       {
6837         orc_union16 _src;
6838         _src.i = var56.i;
6839         var60 = _src.x2[1];
6840         var61 = _src.x2[0];
6841       }
6842       /* 6: splatbw */
6843       var62.i = ((var58 & 0xff) << 8) | (var58 & 0xff);
6844       /* 7: splatbw */
6845       var63.i = ((var61 & 0xff) << 8) | (var61 & 0xff);
6846       /* 8: splatbw */
6847       var64.i = ((var60 & 0xff) << 8) | (var60 & 0xff);
6848       /* 10: mulhsw */
6849       var65.i = (var62.i * var48.i) >> 16;
6850       /* 12: mulhsw */
6851       var66.i = (var64.i * var49.i) >> 16;
6852       /* 13: addssw */
6853       var67.i = ORC_CLAMP_SW (var65.i + var66.i);
6854       /* 15: mulhsw */
6855       var68.i = (var63.i * var50.i) >> 16;
6856       /* 16: addssw */
6857       var69.i = ORC_CLAMP_SW (var65.i + var68.i);
6858       /* 18: mulhsw */
6859       var70.i = (var63.i * var51.i) >> 16;
6860       /* 19: addssw */
6861       var71.i = ORC_CLAMP_SW (var65.i + var70.i);
6862       /* 21: mulhsw */
6863       var72.i = (var64.i * var52.i) >> 16;
6864       /* 22: addssw */
6865       var73.i = ORC_CLAMP_SW (var71.i + var72.i);
6866       /* 23: convssswb */
6867       var74 = ORC_CLAMP_SB (var67.i);
6868       /* 24: convssswb */
6869       var75 = ORC_CLAMP_SB (var73.i);
6870       /* 25: convssswb */
6871       var76 = ORC_CLAMP_SB (var69.i);
6872       /* 26: mergebw */
6873       {
6874         orc_union16 _dest;
6875         _dest.x2[0] = var59;
6876         _dest.x2[1] = var74;
6877         var77.i = _dest.i;
6878       }
6879       /* 27: mergebw */
6880       {
6881         orc_union16 _dest;
6882         _dest.x2[0] = var75;
6883         _dest.x2[1] = var76;
6884         var78.i = _dest.i;
6885       }
6886       /* 28: mergewl */
6887       {
6888         orc_union32 _dest;
6889         _dest.x2[0] = var77.i;
6890         _dest.x2[1] = var78.i;
6891         var79.i = _dest.i;
6892       }
6893       /* 30: addb */
6894       var54.x4[0] = var79.x4[0] + var53.x4[0];
6895       var54.x4[1] = var79.x4[1] + var53.x4[1];
6896       var54.x4[2] = var79.x4[2] + var53.x4[2];
6897       var54.x4[3] = var79.x4[3] + var53.x4[3];
6898       /* 31: storel */
6899       ptr0[i] = var54;
6900     }
6901   }
6902
6903 }
6904
6905 void
6906 video_convert_orc_convert_AYUV_ARGB (guint8 * ORC_RESTRICT d1, int d1_stride,
6907     const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
6908     int p4, int p5, int n, int m)
6909 {
6910   OrcExecutor _ex, *ex = &_ex;
6911   static volatile int p_inited = 0;
6912   static OrcCode *c = 0;
6913   void (*func) (OrcExecutor *);
6914
6915   if (!p_inited) {
6916     orc_once_mutex_lock ();
6917     if (!p_inited) {
6918       OrcProgram *p;
6919
6920 #if 1
6921       static const orc_uint8 bc[] = {
6922         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
6923         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 65, 89,
6924         85, 86, 95, 65, 82, 71, 66, 11, 4, 4, 12, 4, 4, 14, 1, 128,
6925         0, 0, 0, 16, 2, 16, 2, 16, 2, 16, 2, 16, 2, 20, 1, 20,
6926         1, 20, 1, 20, 1, 20, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20,
6927         2, 20, 1, 20, 1, 20, 1, 20, 4, 21, 2, 65, 45, 4, 16, 198,
6928         38, 36, 45, 199, 33, 32, 36, 199, 35, 34, 38, 151, 36, 33, 151, 37,
6929         34, 151, 38, 35, 90, 36, 36, 24, 90, 39, 38, 25, 71, 39, 36, 39,
6930         90, 41, 37, 26, 71, 41, 36, 41, 90, 40, 37, 27, 71, 40, 36, 40,
6931         90, 36, 38, 28, 71, 40, 40, 36, 159, 42, 39, 159, 43, 40, 159, 44,
6932         41, 196, 39, 32, 42, 196, 41, 43, 44, 195, 45, 39, 41, 21, 2, 33,
6933         0, 45, 16, 2, 0,
6934       };
6935       p = orc_program_new_from_static_bytecode (bc);
6936       orc_program_set_backup_function (p,
6937           _backup_video_convert_orc_convert_AYUV_ARGB);
6938 #else
6939       p = orc_program_new ();
6940       orc_program_set_2d (p);
6941       orc_program_set_name (p, "video_convert_orc_convert_AYUV_ARGB");
6942       orc_program_set_backup_function (p,
6943           _backup_video_convert_orc_convert_AYUV_ARGB);
6944       orc_program_add_destination (p, 4, "d1");
6945       orc_program_add_source (p, 4, "s1");
6946       orc_program_add_constant (p, 1, 0x00000080, "c1");
6947       orc_program_add_parameter (p, 2, "p1");
6948       orc_program_add_parameter (p, 2, "p2");
6949       orc_program_add_parameter (p, 2, "p3");
6950       orc_program_add_parameter (p, 2, "p4");
6951       orc_program_add_parameter (p, 2, "p5");
6952       orc_program_add_temporary (p, 1, "t1");
6953       orc_program_add_temporary (p, 1, "t2");
6954       orc_program_add_temporary (p, 1, "t3");
6955       orc_program_add_temporary (p, 1, "t4");
6956       orc_program_add_temporary (p, 2, "t5");
6957       orc_program_add_temporary (p, 2, "t6");
6958       orc_program_add_temporary (p, 2, "t7");
6959       orc_program_add_temporary (p, 2, "t8");
6960       orc_program_add_temporary (p, 2, "t9");
6961       orc_program_add_temporary (p, 2, "t10");
6962       orc_program_add_temporary (p, 1, "t11");
6963       orc_program_add_temporary (p, 1, "t12");
6964       orc_program_add_temporary (p, 1, "t13");
6965       orc_program_add_temporary (p, 4, "t14");
6966
6967       orc_program_append_2 (p, "subb", 2, ORC_VAR_T14, ORC_VAR_S1, ORC_VAR_C1,
6968           ORC_VAR_D1);
6969       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T7, ORC_VAR_T5,
6970           ORC_VAR_T14, ORC_VAR_D1);
6971       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T5,
6972           ORC_VAR_D1);
6973       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T7,
6974           ORC_VAR_D1);
6975       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_D1,
6976           ORC_VAR_D1);
6977       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_D1,
6978           ORC_VAR_D1);
6979       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1,
6980           ORC_VAR_D1);
6981       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_P1,
6982           ORC_VAR_D1);
6983       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_P2,
6984           ORC_VAR_D1);
6985       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T8,
6986           ORC_VAR_D1);
6987       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T10, ORC_VAR_T6, ORC_VAR_P3,
6988           ORC_VAR_D1);
6989       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T5,
6990           ORC_VAR_T10, ORC_VAR_D1);
6991       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_P4,
6992           ORC_VAR_D1);
6993       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T9, ORC_VAR_T5, ORC_VAR_T9,
6994           ORC_VAR_D1);
6995       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T7, ORC_VAR_P5,
6996           ORC_VAR_D1);
6997       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T5,
6998           ORC_VAR_D1);
6999       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T11, ORC_VAR_T8,
7000           ORC_VAR_D1, ORC_VAR_D1);
7001       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T12, ORC_VAR_T9,
7002           ORC_VAR_D1, ORC_VAR_D1);
7003       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T13, ORC_VAR_T10,
7004           ORC_VAR_D1, ORC_VAR_D1);
7005       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T8, ORC_VAR_T1,
7006           ORC_VAR_T11, ORC_VAR_D1);
7007       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T10, ORC_VAR_T12,
7008           ORC_VAR_T13, ORC_VAR_D1);
7009       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T14, ORC_VAR_T8,
7010           ORC_VAR_T10, ORC_VAR_D1);
7011       orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T14, ORC_VAR_C1,
7012           ORC_VAR_D1);
7013 #endif
7014
7015       orc_program_compile (p);
7016       c = orc_program_take_code (p);
7017       orc_program_free (p);
7018     }
7019     p_inited = TRUE;
7020     orc_once_mutex_unlock ();
7021   }
7022   ex->arrays[ORC_VAR_A2] = c;
7023   ex->program = 0;
7024
7025   ex->n = n;
7026   ORC_EXECUTOR_M (ex) = m;
7027   ex->arrays[ORC_VAR_D1] = d1;
7028   ex->params[ORC_VAR_D1] = d1_stride;
7029   ex->arrays[ORC_VAR_S1] = (void *) s1;
7030   ex->params[ORC_VAR_S1] = s1_stride;
7031   ex->params[ORC_VAR_P1] = p1;
7032   ex->params[ORC_VAR_P2] = p2;
7033   ex->params[ORC_VAR_P3] = p3;
7034   ex->params[ORC_VAR_P4] = p4;
7035   ex->params[ORC_VAR_P5] = p5;
7036
7037   func = c->exec;
7038   func (ex);
7039 }
7040 #endif
7041
7042
7043 /* video_convert_orc_convert_AYUV_BGRA */
7044 #ifdef DISABLE_ORC
7045 void
7046 video_convert_orc_convert_AYUV_BGRA (guint8 * ORC_RESTRICT d1, int d1_stride,
7047     const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
7048     int p4, int p5, int n, int m)
7049 {
7050   int i;
7051   int j;
7052   orc_union32 *ORC_RESTRICT ptr0;
7053   const orc_union32 *ORC_RESTRICT ptr4;
7054   orc_union32 var46;
7055 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
7056   volatile orc_union32 var47;
7057 #else
7058   orc_union32 var47;
7059 #endif
7060   orc_union16 var48;
7061   orc_union16 var49;
7062   orc_union16 var50;
7063   orc_union16 var51;
7064   orc_union16 var52;
7065 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
7066   volatile orc_union32 var53;
7067 #else
7068   orc_union32 var53;
7069 #endif
7070   orc_union32 var54;
7071   orc_union32 var55;
7072   orc_union16 var56;
7073   orc_union16 var57;
7074   orc_int8 var58;
7075   orc_int8 var59;
7076   orc_int8 var60;
7077   orc_int8 var61;
7078   orc_union16 var62;
7079   orc_union16 var63;
7080   orc_union16 var64;
7081   orc_union16 var65;
7082   orc_union16 var66;
7083   orc_union16 var67;
7084   orc_union16 var68;
7085   orc_union16 var69;
7086   orc_union16 var70;
7087   orc_union16 var71;
7088   orc_union16 var72;
7089   orc_union16 var73;
7090   orc_int8 var74;
7091   orc_int8 var75;
7092   orc_int8 var76;
7093   orc_union16 var77;
7094   orc_union16 var78;
7095   orc_union32 var79;
7096
7097   for (j = 0; j < m; j++) {
7098     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
7099     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
7100
7101     /* 1: loadpb */
7102     var47.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7103     var47.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7104     var47.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7105     var47.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7106     /* 9: loadpw */
7107     var48.i = p1;
7108     /* 11: loadpw */
7109     var49.i = p2;
7110     /* 14: loadpw */
7111     var50.i = p3;
7112     /* 17: loadpw */
7113     var51.i = p4;
7114     /* 20: loadpw */
7115     var52.i = p5;
7116     /* 29: loadpb */
7117     var53.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7118     var53.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7119     var53.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7120     var53.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7121
7122     for (i = 0; i < n; i++) {
7123       /* 0: loadl */
7124       var46 = ptr4[i];
7125       /* 2: subb */
7126       var55.x4[0] = var46.x4[0] - var47.x4[0];
7127       var55.x4[1] = var46.x4[1] - var47.x4[1];
7128       var55.x4[2] = var46.x4[2] - var47.x4[2];
7129       var55.x4[3] = var46.x4[3] - var47.x4[3];
7130       /* 3: splitlw */
7131       {
7132         orc_union32 _src;
7133         _src.i = var55.i;
7134         var56.i = _src.x2[1];
7135         var57.i = _src.x2[0];
7136       }
7137       /* 4: splitwb */
7138       {
7139         orc_union16 _src;
7140         _src.i = var57.i;
7141         var58 = _src.x2[1];
7142         var59 = _src.x2[0];
7143       }
7144       /* 5: splitwb */
7145       {
7146         orc_union16 _src;
7147         _src.i = var56.i;
7148         var60 = _src.x2[1];
7149         var61 = _src.x2[0];
7150       }
7151       /* 6: splatbw */
7152       var62.i = ((var58 & 0xff) << 8) | (var58 & 0xff);
7153       /* 7: splatbw */
7154       var63.i = ((var61 & 0xff) << 8) | (var61 & 0xff);
7155       /* 8: splatbw */
7156       var64.i = ((var60 & 0xff) << 8) | (var60 & 0xff);
7157       /* 10: mulhsw */
7158       var65.i = (var62.i * var48.i) >> 16;
7159       /* 12: mulhsw */
7160       var66.i = (var64.i * var49.i) >> 16;
7161       /* 13: addssw */
7162       var67.i = ORC_CLAMP_SW (var65.i + var66.i);
7163       /* 15: mulhsw */
7164       var68.i = (var63.i * var50.i) >> 16;
7165       /* 16: addssw */
7166       var69.i = ORC_CLAMP_SW (var65.i + var68.i);
7167       /* 18: mulhsw */
7168       var70.i = (var63.i * var51.i) >> 16;
7169       /* 19: addssw */
7170       var71.i = ORC_CLAMP_SW (var65.i + var70.i);
7171       /* 21: mulhsw */
7172       var72.i = (var64.i * var52.i) >> 16;
7173       /* 22: addssw */
7174       var73.i = ORC_CLAMP_SW (var71.i + var72.i);
7175       /* 23: convssswb */
7176       var74 = ORC_CLAMP_SB (var67.i);
7177       /* 24: convssswb */
7178       var75 = ORC_CLAMP_SB (var73.i);
7179       /* 25: convssswb */
7180       var76 = ORC_CLAMP_SB (var69.i);
7181       /* 26: mergebw */
7182       {
7183         orc_union16 _dest;
7184         _dest.x2[0] = var76;
7185         _dest.x2[1] = var75;
7186         var77.i = _dest.i;
7187       }
7188       /* 27: mergebw */
7189       {
7190         orc_union16 _dest;
7191         _dest.x2[0] = var74;
7192         _dest.x2[1] = var59;
7193         var78.i = _dest.i;
7194       }
7195       /* 28: mergewl */
7196       {
7197         orc_union32 _dest;
7198         _dest.x2[0] = var77.i;
7199         _dest.x2[1] = var78.i;
7200         var79.i = _dest.i;
7201       }
7202       /* 30: addb */
7203       var54.x4[0] = var79.x4[0] + var53.x4[0];
7204       var54.x4[1] = var79.x4[1] + var53.x4[1];
7205       var54.x4[2] = var79.x4[2] + var53.x4[2];
7206       var54.x4[3] = var79.x4[3] + var53.x4[3];
7207       /* 31: storel */
7208       ptr0[i] = var54;
7209     }
7210   }
7211
7212 }
7213
7214 #else
7215 static void
7216 _backup_video_convert_orc_convert_AYUV_BGRA (OrcExecutor * ORC_RESTRICT ex)
7217 {
7218   int i;
7219   int j;
7220   int n = ex->n;
7221   int m = ex->params[ORC_VAR_A1];
7222   orc_union32 *ORC_RESTRICT ptr0;
7223   const orc_union32 *ORC_RESTRICT ptr4;
7224   orc_union32 var46;
7225 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
7226   volatile orc_union32 var47;
7227 #else
7228   orc_union32 var47;
7229 #endif
7230   orc_union16 var48;
7231   orc_union16 var49;
7232   orc_union16 var50;
7233   orc_union16 var51;
7234   orc_union16 var52;
7235 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
7236   volatile orc_union32 var53;
7237 #else
7238   orc_union32 var53;
7239 #endif
7240   orc_union32 var54;
7241   orc_union32 var55;
7242   orc_union16 var56;
7243   orc_union16 var57;
7244   orc_int8 var58;
7245   orc_int8 var59;
7246   orc_int8 var60;
7247   orc_int8 var61;
7248   orc_union16 var62;
7249   orc_union16 var63;
7250   orc_union16 var64;
7251   orc_union16 var65;
7252   orc_union16 var66;
7253   orc_union16 var67;
7254   orc_union16 var68;
7255   orc_union16 var69;
7256   orc_union16 var70;
7257   orc_union16 var71;
7258   orc_union16 var72;
7259   orc_union16 var73;
7260   orc_int8 var74;
7261   orc_int8 var75;
7262   orc_int8 var76;
7263   orc_union16 var77;
7264   orc_union16 var78;
7265   orc_union32 var79;
7266
7267   for (j = 0; j < m; j++) {
7268     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
7269     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
7270
7271     /* 1: loadpb */
7272     var47.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7273     var47.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7274     var47.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7275     var47.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7276     /* 9: loadpw */
7277     var48.i = ex->params[24];
7278     /* 11: loadpw */
7279     var49.i = ex->params[25];
7280     /* 14: loadpw */
7281     var50.i = ex->params[26];
7282     /* 17: loadpw */
7283     var51.i = ex->params[27];
7284     /* 20: loadpw */
7285     var52.i = ex->params[28];
7286     /* 29: loadpb */
7287     var53.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7288     var53.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7289     var53.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7290     var53.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7291
7292     for (i = 0; i < n; i++) {
7293       /* 0: loadl */
7294       var46 = ptr4[i];
7295       /* 2: subb */
7296       var55.x4[0] = var46.x4[0] - var47.x4[0];
7297       var55.x4[1] = var46.x4[1] - var47.x4[1];
7298       var55.x4[2] = var46.x4[2] - var47.x4[2];
7299       var55.x4[3] = var46.x4[3] - var47.x4[3];
7300       /* 3: splitlw */
7301       {
7302         orc_union32 _src;
7303         _src.i = var55.i;
7304         var56.i = _src.x2[1];
7305         var57.i = _src.x2[0];
7306       }
7307       /* 4: splitwb */
7308       {
7309         orc_union16 _src;
7310         _src.i = var57.i;
7311         var58 = _src.x2[1];
7312         var59 = _src.x2[0];
7313       }
7314       /* 5: splitwb */
7315       {
7316         orc_union16 _src;
7317         _src.i = var56.i;
7318         var60 = _src.x2[1];
7319         var61 = _src.x2[0];
7320       }
7321       /* 6: splatbw */
7322       var62.i = ((var58 & 0xff) << 8) | (var58 & 0xff);
7323       /* 7: splatbw */
7324       var63.i = ((var61 & 0xff) << 8) | (var61 & 0xff);
7325       /* 8: splatbw */
7326       var64.i = ((var60 & 0xff) << 8) | (var60 & 0xff);
7327       /* 10: mulhsw */
7328       var65.i = (var62.i * var48.i) >> 16;
7329       /* 12: mulhsw */
7330       var66.i = (var64.i * var49.i) >> 16;
7331       /* 13: addssw */
7332       var67.i = ORC_CLAMP_SW (var65.i + var66.i);
7333       /* 15: mulhsw */
7334       var68.i = (var63.i * var50.i) >> 16;
7335       /* 16: addssw */
7336       var69.i = ORC_CLAMP_SW (var65.i + var68.i);
7337       /* 18: mulhsw */
7338       var70.i = (var63.i * var51.i) >> 16;
7339       /* 19: addssw */
7340       var71.i = ORC_CLAMP_SW (var65.i + var70.i);
7341       /* 21: mulhsw */
7342       var72.i = (var64.i * var52.i) >> 16;
7343       /* 22: addssw */
7344       var73.i = ORC_CLAMP_SW (var71.i + var72.i);
7345       /* 23: convssswb */
7346       var74 = ORC_CLAMP_SB (var67.i);
7347       /* 24: convssswb */
7348       var75 = ORC_CLAMP_SB (var73.i);
7349       /* 25: convssswb */
7350       var76 = ORC_CLAMP_SB (var69.i);
7351       /* 26: mergebw */
7352       {
7353         orc_union16 _dest;
7354         _dest.x2[0] = var76;
7355         _dest.x2[1] = var75;
7356         var77.i = _dest.i;
7357       }
7358       /* 27: mergebw */
7359       {
7360         orc_union16 _dest;
7361         _dest.x2[0] = var74;
7362         _dest.x2[1] = var59;
7363         var78.i = _dest.i;
7364       }
7365       /* 28: mergewl */
7366       {
7367         orc_union32 _dest;
7368         _dest.x2[0] = var77.i;
7369         _dest.x2[1] = var78.i;
7370         var79.i = _dest.i;
7371       }
7372       /* 30: addb */
7373       var54.x4[0] = var79.x4[0] + var53.x4[0];
7374       var54.x4[1] = var79.x4[1] + var53.x4[1];
7375       var54.x4[2] = var79.x4[2] + var53.x4[2];
7376       var54.x4[3] = var79.x4[3] + var53.x4[3];
7377       /* 31: storel */
7378       ptr0[i] = var54;
7379     }
7380   }
7381
7382 }
7383
7384 void
7385 video_convert_orc_convert_AYUV_BGRA (guint8 * ORC_RESTRICT d1, int d1_stride,
7386     const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
7387     int p4, int p5, int n, int m)
7388 {
7389   OrcExecutor _ex, *ex = &_ex;
7390   static volatile int p_inited = 0;
7391   static OrcCode *c = 0;
7392   void (*func) (OrcExecutor *);
7393
7394   if (!p_inited) {
7395     orc_once_mutex_lock ();
7396     if (!p_inited) {
7397       OrcProgram *p;
7398
7399 #if 1
7400       static const orc_uint8 bc[] = {
7401         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
7402         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 65, 89,
7403         85, 86, 95, 66, 71, 82, 65, 11, 4, 4, 12, 4, 4, 14, 1, 128,
7404         0, 0, 0, 16, 2, 16, 2, 16, 2, 16, 2, 16, 2, 20, 1, 20,
7405         1, 20, 1, 20, 1, 20, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20,
7406         2, 20, 1, 20, 1, 20, 1, 20, 4, 21, 2, 65, 45, 4, 16, 198,
7407         38, 36, 45, 199, 33, 32, 36, 199, 35, 34, 38, 151, 36, 33, 151, 37,
7408         34, 151, 38, 35, 90, 36, 36, 24, 90, 39, 38, 25, 71, 39, 36, 39,
7409         90, 41, 37, 26, 71, 41, 36, 41, 90, 40, 37, 27, 71, 40, 36, 40,
7410         90, 36, 38, 28, 71, 40, 40, 36, 159, 42, 39, 159, 43, 40, 159, 44,
7411         41, 196, 41, 44, 43, 196, 39, 42, 32, 195, 45, 41, 39, 21, 2, 33,
7412         0, 45, 16, 2, 0,
7413       };
7414       p = orc_program_new_from_static_bytecode (bc);
7415       orc_program_set_backup_function (p,
7416           _backup_video_convert_orc_convert_AYUV_BGRA);
7417 #else
7418       p = orc_program_new ();
7419       orc_program_set_2d (p);
7420       orc_program_set_name (p, "video_convert_orc_convert_AYUV_BGRA");
7421       orc_program_set_backup_function (p,
7422           _backup_video_convert_orc_convert_AYUV_BGRA);
7423       orc_program_add_destination (p, 4, "d1");
7424       orc_program_add_source (p, 4, "s1");
7425       orc_program_add_constant (p, 1, 0x00000080, "c1");
7426       orc_program_add_parameter (p, 2, "p1");
7427       orc_program_add_parameter (p, 2, "p2");
7428       orc_program_add_parameter (p, 2, "p3");
7429       orc_program_add_parameter (p, 2, "p4");
7430       orc_program_add_parameter (p, 2, "p5");
7431       orc_program_add_temporary (p, 1, "t1");
7432       orc_program_add_temporary (p, 1, "t2");
7433       orc_program_add_temporary (p, 1, "t3");
7434       orc_program_add_temporary (p, 1, "t4");
7435       orc_program_add_temporary (p, 2, "t5");
7436       orc_program_add_temporary (p, 2, "t6");
7437       orc_program_add_temporary (p, 2, "t7");
7438       orc_program_add_temporary (p, 2, "t8");
7439       orc_program_add_temporary (p, 2, "t9");
7440       orc_program_add_temporary (p, 2, "t10");
7441       orc_program_add_temporary (p, 1, "t11");
7442       orc_program_add_temporary (p, 1, "t12");
7443       orc_program_add_temporary (p, 1, "t13");
7444       orc_program_add_temporary (p, 4, "t14");
7445
7446       orc_program_append_2 (p, "subb", 2, ORC_VAR_T14, ORC_VAR_S1, ORC_VAR_C1,
7447           ORC_VAR_D1);
7448       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T7, ORC_VAR_T5,
7449           ORC_VAR_T14, ORC_VAR_D1);
7450       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T5,
7451           ORC_VAR_D1);
7452       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T7,
7453           ORC_VAR_D1);
7454       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_D1,
7455           ORC_VAR_D1);
7456       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_D1,
7457           ORC_VAR_D1);
7458       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1,
7459           ORC_VAR_D1);
7460       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_P1,
7461           ORC_VAR_D1);
7462       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_P2,
7463           ORC_VAR_D1);
7464       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T8,
7465           ORC_VAR_D1);
7466       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T10, ORC_VAR_T6, ORC_VAR_P3,
7467           ORC_VAR_D1);
7468       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T5,
7469           ORC_VAR_T10, ORC_VAR_D1);
7470       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_P4,
7471           ORC_VAR_D1);
7472       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T9, ORC_VAR_T5, ORC_VAR_T9,
7473           ORC_VAR_D1);
7474       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T7, ORC_VAR_P5,
7475           ORC_VAR_D1);
7476       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T5,
7477           ORC_VAR_D1);
7478       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T11, ORC_VAR_T8,
7479           ORC_VAR_D1, ORC_VAR_D1);
7480       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T12, ORC_VAR_T9,
7481           ORC_VAR_D1, ORC_VAR_D1);
7482       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T13, ORC_VAR_T10,
7483           ORC_VAR_D1, ORC_VAR_D1);
7484       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T10, ORC_VAR_T13,
7485           ORC_VAR_T12, ORC_VAR_D1);
7486       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T8, ORC_VAR_T11,
7487           ORC_VAR_T1, ORC_VAR_D1);
7488       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T14, ORC_VAR_T10,
7489           ORC_VAR_T8, ORC_VAR_D1);
7490       orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T14, ORC_VAR_C1,
7491           ORC_VAR_D1);
7492 #endif
7493
7494       orc_program_compile (p);
7495       c = orc_program_take_code (p);
7496       orc_program_free (p);
7497     }
7498     p_inited = TRUE;
7499     orc_once_mutex_unlock ();
7500   }
7501   ex->arrays[ORC_VAR_A2] = c;
7502   ex->program = 0;
7503
7504   ex->n = n;
7505   ORC_EXECUTOR_M (ex) = m;
7506   ex->arrays[ORC_VAR_D1] = d1;
7507   ex->params[ORC_VAR_D1] = d1_stride;
7508   ex->arrays[ORC_VAR_S1] = (void *) s1;
7509   ex->params[ORC_VAR_S1] = s1_stride;
7510   ex->params[ORC_VAR_P1] = p1;
7511   ex->params[ORC_VAR_P2] = p2;
7512   ex->params[ORC_VAR_P3] = p3;
7513   ex->params[ORC_VAR_P4] = p4;
7514   ex->params[ORC_VAR_P5] = p5;
7515
7516   func = c->exec;
7517   func (ex);
7518 }
7519 #endif
7520
7521
7522 /* video_convert_orc_convert_AYUV_ABGR */
7523 #ifdef DISABLE_ORC
7524 void
7525 video_convert_orc_convert_AYUV_ABGR (guint8 * ORC_RESTRICT d1, int d1_stride,
7526     const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
7527     int p4, int p5, int n, int m)
7528 {
7529   int i;
7530   int j;
7531   orc_union32 *ORC_RESTRICT ptr0;
7532   const orc_union32 *ORC_RESTRICT ptr4;
7533   orc_union32 var46;
7534 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
7535   volatile orc_union32 var47;
7536 #else
7537   orc_union32 var47;
7538 #endif
7539   orc_union16 var48;
7540   orc_union16 var49;
7541   orc_union16 var50;
7542   orc_union16 var51;
7543   orc_union16 var52;
7544 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
7545   volatile orc_union32 var53;
7546 #else
7547   orc_union32 var53;
7548 #endif
7549   orc_union32 var54;
7550   orc_union32 var55;
7551   orc_union16 var56;
7552   orc_union16 var57;
7553   orc_int8 var58;
7554   orc_int8 var59;
7555   orc_int8 var60;
7556   orc_int8 var61;
7557   orc_union16 var62;
7558   orc_union16 var63;
7559   orc_union16 var64;
7560   orc_union16 var65;
7561   orc_union16 var66;
7562   orc_union16 var67;
7563   orc_union16 var68;
7564   orc_union16 var69;
7565   orc_union16 var70;
7566   orc_union16 var71;
7567   orc_union16 var72;
7568   orc_union16 var73;
7569   orc_int8 var74;
7570   orc_int8 var75;
7571   orc_int8 var76;
7572   orc_union16 var77;
7573   orc_union16 var78;
7574   orc_union32 var79;
7575
7576   for (j = 0; j < m; j++) {
7577     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
7578     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
7579
7580     /* 1: loadpb */
7581     var47.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7582     var47.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7583     var47.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7584     var47.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7585     /* 9: loadpw */
7586     var48.i = p1;
7587     /* 11: loadpw */
7588     var49.i = p2;
7589     /* 14: loadpw */
7590     var50.i = p3;
7591     /* 17: loadpw */
7592     var51.i = p4;
7593     /* 20: loadpw */
7594     var52.i = p5;
7595     /* 29: loadpb */
7596     var53.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7597     var53.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7598     var53.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7599     var53.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7600
7601     for (i = 0; i < n; i++) {
7602       /* 0: loadl */
7603       var46 = ptr4[i];
7604       /* 2: subb */
7605       var55.x4[0] = var46.x4[0] - var47.x4[0];
7606       var55.x4[1] = var46.x4[1] - var47.x4[1];
7607       var55.x4[2] = var46.x4[2] - var47.x4[2];
7608       var55.x4[3] = var46.x4[3] - var47.x4[3];
7609       /* 3: splitlw */
7610       {
7611         orc_union32 _src;
7612         _src.i = var55.i;
7613         var56.i = _src.x2[1];
7614         var57.i = _src.x2[0];
7615       }
7616       /* 4: splitwb */
7617       {
7618         orc_union16 _src;
7619         _src.i = var57.i;
7620         var58 = _src.x2[1];
7621         var59 = _src.x2[0];
7622       }
7623       /* 5: splitwb */
7624       {
7625         orc_union16 _src;
7626         _src.i = var56.i;
7627         var60 = _src.x2[1];
7628         var61 = _src.x2[0];
7629       }
7630       /* 6: splatbw */
7631       var62.i = ((var58 & 0xff) << 8) | (var58 & 0xff);
7632       /* 7: splatbw */
7633       var63.i = ((var61 & 0xff) << 8) | (var61 & 0xff);
7634       /* 8: splatbw */
7635       var64.i = ((var60 & 0xff) << 8) | (var60 & 0xff);
7636       /* 10: mulhsw */
7637       var65.i = (var62.i * var48.i) >> 16;
7638       /* 12: mulhsw */
7639       var66.i = (var64.i * var49.i) >> 16;
7640       /* 13: addssw */
7641       var67.i = ORC_CLAMP_SW (var65.i + var66.i);
7642       /* 15: mulhsw */
7643       var68.i = (var63.i * var50.i) >> 16;
7644       /* 16: addssw */
7645       var69.i = ORC_CLAMP_SW (var65.i + var68.i);
7646       /* 18: mulhsw */
7647       var70.i = (var63.i * var51.i) >> 16;
7648       /* 19: addssw */
7649       var71.i = ORC_CLAMP_SW (var65.i + var70.i);
7650       /* 21: mulhsw */
7651       var72.i = (var64.i * var52.i) >> 16;
7652       /* 22: addssw */
7653       var73.i = ORC_CLAMP_SW (var71.i + var72.i);
7654       /* 23: convssswb */
7655       var74 = ORC_CLAMP_SB (var67.i);
7656       /* 24: convssswb */
7657       var75 = ORC_CLAMP_SB (var73.i);
7658       /* 25: convssswb */
7659       var76 = ORC_CLAMP_SB (var69.i);
7660       /* 26: mergebw */
7661       {
7662         orc_union16 _dest;
7663         _dest.x2[0] = var59;
7664         _dest.x2[1] = var76;
7665         var77.i = _dest.i;
7666       }
7667       /* 27: mergebw */
7668       {
7669         orc_union16 _dest;
7670         _dest.x2[0] = var75;
7671         _dest.x2[1] = var74;
7672         var78.i = _dest.i;
7673       }
7674       /* 28: mergewl */
7675       {
7676         orc_union32 _dest;
7677         _dest.x2[0] = var77.i;
7678         _dest.x2[1] = var78.i;
7679         var79.i = _dest.i;
7680       }
7681       /* 30: addb */
7682       var54.x4[0] = var79.x4[0] + var53.x4[0];
7683       var54.x4[1] = var79.x4[1] + var53.x4[1];
7684       var54.x4[2] = var79.x4[2] + var53.x4[2];
7685       var54.x4[3] = var79.x4[3] + var53.x4[3];
7686       /* 31: storel */
7687       ptr0[i] = var54;
7688     }
7689   }
7690
7691 }
7692
7693 #else
7694 static void
7695 _backup_video_convert_orc_convert_AYUV_ABGR (OrcExecutor * ORC_RESTRICT ex)
7696 {
7697   int i;
7698   int j;
7699   int n = ex->n;
7700   int m = ex->params[ORC_VAR_A1];
7701   orc_union32 *ORC_RESTRICT ptr0;
7702   const orc_union32 *ORC_RESTRICT ptr4;
7703   orc_union32 var46;
7704 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
7705   volatile orc_union32 var47;
7706 #else
7707   orc_union32 var47;
7708 #endif
7709   orc_union16 var48;
7710   orc_union16 var49;
7711   orc_union16 var50;
7712   orc_union16 var51;
7713   orc_union16 var52;
7714 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
7715   volatile orc_union32 var53;
7716 #else
7717   orc_union32 var53;
7718 #endif
7719   orc_union32 var54;
7720   orc_union32 var55;
7721   orc_union16 var56;
7722   orc_union16 var57;
7723   orc_int8 var58;
7724   orc_int8 var59;
7725   orc_int8 var60;
7726   orc_int8 var61;
7727   orc_union16 var62;
7728   orc_union16 var63;
7729   orc_union16 var64;
7730   orc_union16 var65;
7731   orc_union16 var66;
7732   orc_union16 var67;
7733   orc_union16 var68;
7734   orc_union16 var69;
7735   orc_union16 var70;
7736   orc_union16 var71;
7737   orc_union16 var72;
7738   orc_union16 var73;
7739   orc_int8 var74;
7740   orc_int8 var75;
7741   orc_int8 var76;
7742   orc_union16 var77;
7743   orc_union16 var78;
7744   orc_union32 var79;
7745
7746   for (j = 0; j < m; j++) {
7747     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
7748     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
7749
7750     /* 1: loadpb */
7751     var47.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7752     var47.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7753     var47.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7754     var47.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7755     /* 9: loadpw */
7756     var48.i = ex->params[24];
7757     /* 11: loadpw */
7758     var49.i = ex->params[25];
7759     /* 14: loadpw */
7760     var50.i = ex->params[26];
7761     /* 17: loadpw */
7762     var51.i = ex->params[27];
7763     /* 20: loadpw */
7764     var52.i = ex->params[28];
7765     /* 29: loadpb */
7766     var53.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7767     var53.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7768     var53.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7769     var53.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7770
7771     for (i = 0; i < n; i++) {
7772       /* 0: loadl */
7773       var46 = ptr4[i];
7774       /* 2: subb */
7775       var55.x4[0] = var46.x4[0] - var47.x4[0];
7776       var55.x4[1] = var46.x4[1] - var47.x4[1];
7777       var55.x4[2] = var46.x4[2] - var47.x4[2];
7778       var55.x4[3] = var46.x4[3] - var47.x4[3];
7779       /* 3: splitlw */
7780       {
7781         orc_union32 _src;
7782         _src.i = var55.i;
7783         var56.i = _src.x2[1];
7784         var57.i = _src.x2[0];
7785       }
7786       /* 4: splitwb */
7787       {
7788         orc_union16 _src;
7789         _src.i = var57.i;
7790         var58 = _src.x2[1];
7791         var59 = _src.x2[0];
7792       }
7793       /* 5: splitwb */
7794       {
7795         orc_union16 _src;
7796         _src.i = var56.i;
7797         var60 = _src.x2[1];
7798         var61 = _src.x2[0];
7799       }
7800       /* 6: splatbw */
7801       var62.i = ((var58 & 0xff) << 8) | (var58 & 0xff);
7802       /* 7: splatbw */
7803       var63.i = ((var61 & 0xff) << 8) | (var61 & 0xff);
7804       /* 8: splatbw */
7805       var64.i = ((var60 & 0xff) << 8) | (var60 & 0xff);
7806       /* 10: mulhsw */
7807       var65.i = (var62.i * var48.i) >> 16;
7808       /* 12: mulhsw */
7809       var66.i = (var64.i * var49.i) >> 16;
7810       /* 13: addssw */
7811       var67.i = ORC_CLAMP_SW (var65.i + var66.i);
7812       /* 15: mulhsw */
7813       var68.i = (var63.i * var50.i) >> 16;
7814       /* 16: addssw */
7815       var69.i = ORC_CLAMP_SW (var65.i + var68.i);
7816       /* 18: mulhsw */
7817       var70.i = (var63.i * var51.i) >> 16;
7818       /* 19: addssw */
7819       var71.i = ORC_CLAMP_SW (var65.i + var70.i);
7820       /* 21: mulhsw */
7821       var72.i = (var64.i * var52.i) >> 16;
7822       /* 22: addssw */
7823       var73.i = ORC_CLAMP_SW (var71.i + var72.i);
7824       /* 23: convssswb */
7825       var74 = ORC_CLAMP_SB (var67.i);
7826       /* 24: convssswb */
7827       var75 = ORC_CLAMP_SB (var73.i);
7828       /* 25: convssswb */
7829       var76 = ORC_CLAMP_SB (var69.i);
7830       /* 26: mergebw */
7831       {
7832         orc_union16 _dest;
7833         _dest.x2[0] = var59;
7834         _dest.x2[1] = var76;
7835         var77.i = _dest.i;
7836       }
7837       /* 27: mergebw */
7838       {
7839         orc_union16 _dest;
7840         _dest.x2[0] = var75;
7841         _dest.x2[1] = var74;
7842         var78.i = _dest.i;
7843       }
7844       /* 28: mergewl */
7845       {
7846         orc_union32 _dest;
7847         _dest.x2[0] = var77.i;
7848         _dest.x2[1] = var78.i;
7849         var79.i = _dest.i;
7850       }
7851       /* 30: addb */
7852       var54.x4[0] = var79.x4[0] + var53.x4[0];
7853       var54.x4[1] = var79.x4[1] + var53.x4[1];
7854       var54.x4[2] = var79.x4[2] + var53.x4[2];
7855       var54.x4[3] = var79.x4[3] + var53.x4[3];
7856       /* 31: storel */
7857       ptr0[i] = var54;
7858     }
7859   }
7860
7861 }
7862
7863 void
7864 video_convert_orc_convert_AYUV_ABGR (guint8 * ORC_RESTRICT d1, int d1_stride,
7865     const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
7866     int p4, int p5, int n, int m)
7867 {
7868   OrcExecutor _ex, *ex = &_ex;
7869   static volatile int p_inited = 0;
7870   static OrcCode *c = 0;
7871   void (*func) (OrcExecutor *);
7872
7873   if (!p_inited) {
7874     orc_once_mutex_lock ();
7875     if (!p_inited) {
7876       OrcProgram *p;
7877
7878 #if 1
7879       static const orc_uint8 bc[] = {
7880         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
7881         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 65, 89,
7882         85, 86, 95, 65, 66, 71, 82, 11, 4, 4, 12, 4, 4, 14, 1, 128,
7883         0, 0, 0, 16, 2, 16, 2, 16, 2, 16, 2, 16, 2, 20, 1, 20,
7884         1, 20, 1, 20, 1, 20, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20,
7885         2, 20, 1, 20, 1, 20, 1, 20, 4, 21, 2, 65, 45, 4, 16, 198,
7886         38, 36, 45, 199, 33, 32, 36, 199, 35, 34, 38, 151, 36, 33, 151, 37,
7887         34, 151, 38, 35, 90, 36, 36, 24, 90, 39, 38, 25, 71, 39, 36, 39,
7888         90, 41, 37, 26, 71, 41, 36, 41, 90, 40, 37, 27, 71, 40, 36, 40,
7889         90, 36, 38, 28, 71, 40, 40, 36, 159, 42, 39, 159, 43, 40, 159, 44,
7890         41, 196, 41, 32, 44, 196, 39, 43, 42, 195, 45, 41, 39, 21, 2, 33,
7891         0, 45, 16, 2, 0,
7892       };
7893       p = orc_program_new_from_static_bytecode (bc);
7894       orc_program_set_backup_function (p,
7895           _backup_video_convert_orc_convert_AYUV_ABGR);
7896 #else
7897       p = orc_program_new ();
7898       orc_program_set_2d (p);
7899       orc_program_set_name (p, "video_convert_orc_convert_AYUV_ABGR");
7900       orc_program_set_backup_function (p,
7901           _backup_video_convert_orc_convert_AYUV_ABGR);
7902       orc_program_add_destination (p, 4, "d1");
7903       orc_program_add_source (p, 4, "s1");
7904       orc_program_add_constant (p, 1, 0x00000080, "c1");
7905       orc_program_add_parameter (p, 2, "p1");
7906       orc_program_add_parameter (p, 2, "p2");
7907       orc_program_add_parameter (p, 2, "p3");
7908       orc_program_add_parameter (p, 2, "p4");
7909       orc_program_add_parameter (p, 2, "p5");
7910       orc_program_add_temporary (p, 1, "t1");
7911       orc_program_add_temporary (p, 1, "t2");
7912       orc_program_add_temporary (p, 1, "t3");
7913       orc_program_add_temporary (p, 1, "t4");
7914       orc_program_add_temporary (p, 2, "t5");
7915       orc_program_add_temporary (p, 2, "t6");
7916       orc_program_add_temporary (p, 2, "t7");
7917       orc_program_add_temporary (p, 2, "t8");
7918       orc_program_add_temporary (p, 2, "t9");
7919       orc_program_add_temporary (p, 2, "t10");
7920       orc_program_add_temporary (p, 1, "t11");
7921       orc_program_add_temporary (p, 1, "t12");
7922       orc_program_add_temporary (p, 1, "t13");
7923       orc_program_add_temporary (p, 4, "t14");
7924
7925       orc_program_append_2 (p, "subb", 2, ORC_VAR_T14, ORC_VAR_S1, ORC_VAR_C1,
7926           ORC_VAR_D1);
7927       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T7, ORC_VAR_T5,
7928           ORC_VAR_T14, ORC_VAR_D1);
7929       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T5,
7930           ORC_VAR_D1);
7931       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T7,
7932           ORC_VAR_D1);
7933       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_D1,
7934           ORC_VAR_D1);
7935       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_D1,
7936           ORC_VAR_D1);
7937       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1,
7938           ORC_VAR_D1);
7939       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_P1,
7940           ORC_VAR_D1);
7941       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_P2,
7942           ORC_VAR_D1);
7943       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T8,
7944           ORC_VAR_D1);
7945       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T10, ORC_VAR_T6, ORC_VAR_P3,
7946           ORC_VAR_D1);
7947       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T5,
7948           ORC_VAR_T10, ORC_VAR_D1);
7949       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_P4,
7950           ORC_VAR_D1);
7951       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T9, ORC_VAR_T5, ORC_VAR_T9,
7952           ORC_VAR_D1);
7953       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T7, ORC_VAR_P5,
7954           ORC_VAR_D1);
7955       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T5,
7956           ORC_VAR_D1);
7957       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T11, ORC_VAR_T8,
7958           ORC_VAR_D1, ORC_VAR_D1);
7959       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T12, ORC_VAR_T9,
7960           ORC_VAR_D1, ORC_VAR_D1);
7961       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T13, ORC_VAR_T10,
7962           ORC_VAR_D1, ORC_VAR_D1);
7963       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T10, ORC_VAR_T1,
7964           ORC_VAR_T13, ORC_VAR_D1);
7965       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T8, ORC_VAR_T12,
7966           ORC_VAR_T11, ORC_VAR_D1);
7967       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T14, ORC_VAR_T10,
7968           ORC_VAR_T8, ORC_VAR_D1);
7969       orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T14, ORC_VAR_C1,
7970           ORC_VAR_D1);
7971 #endif
7972
7973       orc_program_compile (p);
7974       c = orc_program_take_code (p);
7975       orc_program_free (p);
7976     }
7977     p_inited = TRUE;
7978     orc_once_mutex_unlock ();
7979   }
7980   ex->arrays[ORC_VAR_A2] = c;
7981   ex->program = 0;
7982
7983   ex->n = n;
7984   ORC_EXECUTOR_M (ex) = m;
7985   ex->arrays[ORC_VAR_D1] = d1;
7986   ex->params[ORC_VAR_D1] = d1_stride;
7987   ex->arrays[ORC_VAR_S1] = (void *) s1;
7988   ex->params[ORC_VAR_S1] = s1_stride;
7989   ex->params[ORC_VAR_P1] = p1;
7990   ex->params[ORC_VAR_P2] = p2;
7991   ex->params[ORC_VAR_P3] = p3;
7992   ex->params[ORC_VAR_P4] = p4;
7993   ex->params[ORC_VAR_P5] = p5;
7994
7995   func = c->exec;
7996   func (ex);
7997 }
7998 #endif
7999
8000
8001 /* video_convert_orc_convert_AYUV_RGBA */
8002 #ifdef DISABLE_ORC
8003 void
8004 video_convert_orc_convert_AYUV_RGBA (guint8 * ORC_RESTRICT d1, int d1_stride,
8005     const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
8006     int p4, int p5, int n, int m)
8007 {
8008   int i;
8009   int j;
8010   orc_union32 *ORC_RESTRICT ptr0;
8011   const orc_union32 *ORC_RESTRICT ptr4;
8012   orc_union32 var46;
8013 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8014   volatile orc_union32 var47;
8015 #else
8016   orc_union32 var47;
8017 #endif
8018   orc_union16 var48;
8019   orc_union16 var49;
8020   orc_union16 var50;
8021   orc_union16 var51;
8022   orc_union16 var52;
8023 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8024   volatile orc_union32 var53;
8025 #else
8026   orc_union32 var53;
8027 #endif
8028   orc_union32 var54;
8029   orc_union32 var55;
8030   orc_union16 var56;
8031   orc_union16 var57;
8032   orc_int8 var58;
8033   orc_int8 var59;
8034   orc_int8 var60;
8035   orc_int8 var61;
8036   orc_union16 var62;
8037   orc_union16 var63;
8038   orc_union16 var64;
8039   orc_union16 var65;
8040   orc_union16 var66;
8041   orc_union16 var67;
8042   orc_union16 var68;
8043   orc_union16 var69;
8044   orc_union16 var70;
8045   orc_union16 var71;
8046   orc_union16 var72;
8047   orc_union16 var73;
8048   orc_int8 var74;
8049   orc_int8 var75;
8050   orc_int8 var76;
8051   orc_union16 var77;
8052   orc_union16 var78;
8053   orc_union32 var79;
8054
8055   for (j = 0; j < m; j++) {
8056     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
8057     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
8058
8059     /* 1: loadpb */
8060     var47.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8061     var47.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8062     var47.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8063     var47.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8064     /* 9: loadpw */
8065     var48.i = p1;
8066     /* 11: loadpw */
8067     var49.i = p2;
8068     /* 14: loadpw */
8069     var50.i = p3;
8070     /* 17: loadpw */
8071     var51.i = p4;
8072     /* 20: loadpw */
8073     var52.i = p5;
8074     /* 29: loadpb */
8075     var53.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8076     var53.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8077     var53.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8078     var53.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8079
8080     for (i = 0; i < n; i++) {
8081       /* 0: loadl */
8082       var46 = ptr4[i];
8083       /* 2: subb */
8084       var55.x4[0] = var46.x4[0] - var47.x4[0];
8085       var55.x4[1] = var46.x4[1] - var47.x4[1];
8086       var55.x4[2] = var46.x4[2] - var47.x4[2];
8087       var55.x4[3] = var46.x4[3] - var47.x4[3];
8088       /* 3: splitlw */
8089       {
8090         orc_union32 _src;
8091         _src.i = var55.i;
8092         var56.i = _src.x2[1];
8093         var57.i = _src.x2[0];
8094       }
8095       /* 4: splitwb */
8096       {
8097         orc_union16 _src;
8098         _src.i = var57.i;
8099         var58 = _src.x2[1];
8100         var59 = _src.x2[0];
8101       }
8102       /* 5: splitwb */
8103       {
8104         orc_union16 _src;
8105         _src.i = var56.i;
8106         var60 = _src.x2[1];
8107         var61 = _src.x2[0];
8108       }
8109       /* 6: splatbw */
8110       var62.i = ((var58 & 0xff) << 8) | (var58 & 0xff);
8111       /* 7: splatbw */
8112       var63.i = ((var61 & 0xff) << 8) | (var61 & 0xff);
8113       /* 8: splatbw */
8114       var64.i = ((var60 & 0xff) << 8) | (var60 & 0xff);
8115       /* 10: mulhsw */
8116       var65.i = (var62.i * var48.i) >> 16;
8117       /* 12: mulhsw */
8118       var66.i = (var64.i * var49.i) >> 16;
8119       /* 13: addssw */
8120       var67.i = ORC_CLAMP_SW (var65.i + var66.i);
8121       /* 15: mulhsw */
8122       var68.i = (var63.i * var50.i) >> 16;
8123       /* 16: addssw */
8124       var69.i = ORC_CLAMP_SW (var65.i + var68.i);
8125       /* 18: mulhsw */
8126       var70.i = (var63.i * var51.i) >> 16;
8127       /* 19: addssw */
8128       var71.i = ORC_CLAMP_SW (var65.i + var70.i);
8129       /* 21: mulhsw */
8130       var72.i = (var64.i * var52.i) >> 16;
8131       /* 22: addssw */
8132       var73.i = ORC_CLAMP_SW (var71.i + var72.i);
8133       /* 23: convssswb */
8134       var74 = ORC_CLAMP_SB (var67.i);
8135       /* 24: convssswb */
8136       var75 = ORC_CLAMP_SB (var73.i);
8137       /* 25: convssswb */
8138       var76 = ORC_CLAMP_SB (var69.i);
8139       /* 26: mergebw */
8140       {
8141         orc_union16 _dest;
8142         _dest.x2[0] = var74;
8143         _dest.x2[1] = var75;
8144         var77.i = _dest.i;
8145       }
8146       /* 27: mergebw */
8147       {
8148         orc_union16 _dest;
8149         _dest.x2[0] = var76;
8150         _dest.x2[1] = var59;
8151         var78.i = _dest.i;
8152       }
8153       /* 28: mergewl */
8154       {
8155         orc_union32 _dest;
8156         _dest.x2[0] = var77.i;
8157         _dest.x2[1] = var78.i;
8158         var79.i = _dest.i;
8159       }
8160       /* 30: addb */
8161       var54.x4[0] = var79.x4[0] + var53.x4[0];
8162       var54.x4[1] = var79.x4[1] + var53.x4[1];
8163       var54.x4[2] = var79.x4[2] + var53.x4[2];
8164       var54.x4[3] = var79.x4[3] + var53.x4[3];
8165       /* 31: storel */
8166       ptr0[i] = var54;
8167     }
8168   }
8169
8170 }
8171
8172 #else
8173 static void
8174 _backup_video_convert_orc_convert_AYUV_RGBA (OrcExecutor * ORC_RESTRICT ex)
8175 {
8176   int i;
8177   int j;
8178   int n = ex->n;
8179   int m = ex->params[ORC_VAR_A1];
8180   orc_union32 *ORC_RESTRICT ptr0;
8181   const orc_union32 *ORC_RESTRICT ptr4;
8182   orc_union32 var46;
8183 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8184   volatile orc_union32 var47;
8185 #else
8186   orc_union32 var47;
8187 #endif
8188   orc_union16 var48;
8189   orc_union16 var49;
8190   orc_union16 var50;
8191   orc_union16 var51;
8192   orc_union16 var52;
8193 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8194   volatile orc_union32 var53;
8195 #else
8196   orc_union32 var53;
8197 #endif
8198   orc_union32 var54;
8199   orc_union32 var55;
8200   orc_union16 var56;
8201   orc_union16 var57;
8202   orc_int8 var58;
8203   orc_int8 var59;
8204   orc_int8 var60;
8205   orc_int8 var61;
8206   orc_union16 var62;
8207   orc_union16 var63;
8208   orc_union16 var64;
8209   orc_union16 var65;
8210   orc_union16 var66;
8211   orc_union16 var67;
8212   orc_union16 var68;
8213   orc_union16 var69;
8214   orc_union16 var70;
8215   orc_union16 var71;
8216   orc_union16 var72;
8217   orc_union16 var73;
8218   orc_int8 var74;
8219   orc_int8 var75;
8220   orc_int8 var76;
8221   orc_union16 var77;
8222   orc_union16 var78;
8223   orc_union32 var79;
8224
8225   for (j = 0; j < m; j++) {
8226     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
8227     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
8228
8229     /* 1: loadpb */
8230     var47.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8231     var47.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8232     var47.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8233     var47.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8234     /* 9: loadpw */
8235     var48.i = ex->params[24];
8236     /* 11: loadpw */
8237     var49.i = ex->params[25];
8238     /* 14: loadpw */
8239     var50.i = ex->params[26];
8240     /* 17: loadpw */
8241     var51.i = ex->params[27];
8242     /* 20: loadpw */
8243     var52.i = ex->params[28];
8244     /* 29: loadpb */
8245     var53.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8246     var53.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8247     var53.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8248     var53.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8249
8250     for (i = 0; i < n; i++) {
8251       /* 0: loadl */
8252       var46 = ptr4[i];
8253       /* 2: subb */
8254       var55.x4[0] = var46.x4[0] - var47.x4[0];
8255       var55.x4[1] = var46.x4[1] - var47.x4[1];
8256       var55.x4[2] = var46.x4[2] - var47.x4[2];
8257       var55.x4[3] = var46.x4[3] - var47.x4[3];
8258       /* 3: splitlw */
8259       {
8260         orc_union32 _src;
8261         _src.i = var55.i;
8262         var56.i = _src.x2[1];
8263         var57.i = _src.x2[0];
8264       }
8265       /* 4: splitwb */
8266       {
8267         orc_union16 _src;
8268         _src.i = var57.i;
8269         var58 = _src.x2[1];
8270         var59 = _src.x2[0];
8271       }
8272       /* 5: splitwb */
8273       {
8274         orc_union16 _src;
8275         _src.i = var56.i;
8276         var60 = _src.x2[1];
8277         var61 = _src.x2[0];
8278       }
8279       /* 6: splatbw */
8280       var62.i = ((var58 & 0xff) << 8) | (var58 & 0xff);
8281       /* 7: splatbw */
8282       var63.i = ((var61 & 0xff) << 8) | (var61 & 0xff);
8283       /* 8: splatbw */
8284       var64.i = ((var60 & 0xff) << 8) | (var60 & 0xff);
8285       /* 10: mulhsw */
8286       var65.i = (var62.i * var48.i) >> 16;
8287       /* 12: mulhsw */
8288       var66.i = (var64.i * var49.i) >> 16;
8289       /* 13: addssw */
8290       var67.i = ORC_CLAMP_SW (var65.i + var66.i);
8291       /* 15: mulhsw */
8292       var68.i = (var63.i * var50.i) >> 16;
8293       /* 16: addssw */
8294       var69.i = ORC_CLAMP_SW (var65.i + var68.i);
8295       /* 18: mulhsw */
8296       var70.i = (var63.i * var51.i) >> 16;
8297       /* 19: addssw */
8298       var71.i = ORC_CLAMP_SW (var65.i + var70.i);
8299       /* 21: mulhsw */
8300       var72.i = (var64.i * var52.i) >> 16;
8301       /* 22: addssw */
8302       var73.i = ORC_CLAMP_SW (var71.i + var72.i);
8303       /* 23: convssswb */
8304       var74 = ORC_CLAMP_SB (var67.i);
8305       /* 24: convssswb */
8306       var75 = ORC_CLAMP_SB (var73.i);
8307       /* 25: convssswb */
8308       var76 = ORC_CLAMP_SB (var69.i);
8309       /* 26: mergebw */
8310       {
8311         orc_union16 _dest;
8312         _dest.x2[0] = var74;
8313         _dest.x2[1] = var75;
8314         var77.i = _dest.i;
8315       }
8316       /* 27: mergebw */
8317       {
8318         orc_union16 _dest;
8319         _dest.x2[0] = var76;
8320         _dest.x2[1] = var59;
8321         var78.i = _dest.i;
8322       }
8323       /* 28: mergewl */
8324       {
8325         orc_union32 _dest;
8326         _dest.x2[0] = var77.i;
8327         _dest.x2[1] = var78.i;
8328         var79.i = _dest.i;
8329       }
8330       /* 30: addb */
8331       var54.x4[0] = var79.x4[0] + var53.x4[0];
8332       var54.x4[1] = var79.x4[1] + var53.x4[1];
8333       var54.x4[2] = var79.x4[2] + var53.x4[2];
8334       var54.x4[3] = var79.x4[3] + var53.x4[3];
8335       /* 31: storel */
8336       ptr0[i] = var54;
8337     }
8338   }
8339
8340 }
8341
8342 void
8343 video_convert_orc_convert_AYUV_RGBA (guint8 * ORC_RESTRICT d1, int d1_stride,
8344     const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
8345     int p4, int p5, int n, int m)
8346 {
8347   OrcExecutor _ex, *ex = &_ex;
8348   static volatile int p_inited = 0;
8349   static OrcCode *c = 0;
8350   void (*func) (OrcExecutor *);
8351
8352   if (!p_inited) {
8353     orc_once_mutex_lock ();
8354     if (!p_inited) {
8355       OrcProgram *p;
8356
8357 #if 1
8358       static const orc_uint8 bc[] = {
8359         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
8360         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 65, 89,
8361         85, 86, 95, 82, 71, 66, 65, 11, 4, 4, 12, 4, 4, 14, 1, 128,
8362         0, 0, 0, 16, 2, 16, 2, 16, 2, 16, 2, 16, 2, 20, 1, 20,
8363         1, 20, 1, 20, 1, 20, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20,
8364         2, 20, 1, 20, 1, 20, 1, 20, 4, 21, 2, 65, 45, 4, 16, 198,
8365         38, 36, 45, 199, 33, 32, 36, 199, 35, 34, 38, 151, 36, 33, 151, 37,
8366         34, 151, 38, 35, 90, 36, 36, 24, 90, 39, 38, 25, 71, 39, 36, 39,
8367         90, 41, 37, 26, 71, 41, 36, 41, 90, 40, 37, 27, 71, 40, 36, 40,
8368         90, 36, 38, 28, 71, 40, 40, 36, 159, 42, 39, 159, 43, 40, 159, 44,
8369         41, 196, 39, 42, 43, 196, 41, 44, 32, 195, 45, 39, 41, 21, 2, 33,
8370         0, 45, 16, 2, 0,
8371       };
8372       p = orc_program_new_from_static_bytecode (bc);
8373       orc_program_set_backup_function (p,
8374           _backup_video_convert_orc_convert_AYUV_RGBA);
8375 #else
8376       p = orc_program_new ();
8377       orc_program_set_2d (p);
8378       orc_program_set_name (p, "video_convert_orc_convert_AYUV_RGBA");
8379       orc_program_set_backup_function (p,
8380           _backup_video_convert_orc_convert_AYUV_RGBA);
8381       orc_program_add_destination (p, 4, "d1");
8382       orc_program_add_source (p, 4, "s1");
8383       orc_program_add_constant (p, 1, 0x00000080, "c1");
8384       orc_program_add_parameter (p, 2, "p1");
8385       orc_program_add_parameter (p, 2, "p2");
8386       orc_program_add_parameter (p, 2, "p3");
8387       orc_program_add_parameter (p, 2, "p4");
8388       orc_program_add_parameter (p, 2, "p5");
8389       orc_program_add_temporary (p, 1, "t1");
8390       orc_program_add_temporary (p, 1, "t2");
8391       orc_program_add_temporary (p, 1, "t3");
8392       orc_program_add_temporary (p, 1, "t4");
8393       orc_program_add_temporary (p, 2, "t5");
8394       orc_program_add_temporary (p, 2, "t6");
8395       orc_program_add_temporary (p, 2, "t7");
8396       orc_program_add_temporary (p, 2, "t8");
8397       orc_program_add_temporary (p, 2, "t9");
8398       orc_program_add_temporary (p, 2, "t10");
8399       orc_program_add_temporary (p, 1, "t11");
8400       orc_program_add_temporary (p, 1, "t12");
8401       orc_program_add_temporary (p, 1, "t13");
8402       orc_program_add_temporary (p, 4, "t14");
8403
8404       orc_program_append_2 (p, "subb", 2, ORC_VAR_T14, ORC_VAR_S1, ORC_VAR_C1,
8405           ORC_VAR_D1);
8406       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T7, ORC_VAR_T5,
8407           ORC_VAR_T14, ORC_VAR_D1);
8408       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T5,
8409           ORC_VAR_D1);
8410       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T7,
8411           ORC_VAR_D1);
8412       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_D1,
8413           ORC_VAR_D1);
8414       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_D1,
8415           ORC_VAR_D1);
8416       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1,
8417           ORC_VAR_D1);
8418       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_P1,
8419           ORC_VAR_D1);
8420       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_P2,
8421           ORC_VAR_D1);
8422       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T8,
8423           ORC_VAR_D1);
8424       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T10, ORC_VAR_T6, ORC_VAR_P3,
8425           ORC_VAR_D1);
8426       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T5,
8427           ORC_VAR_T10, ORC_VAR_D1);
8428       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_P4,
8429           ORC_VAR_D1);
8430       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T9, ORC_VAR_T5, ORC_VAR_T9,
8431           ORC_VAR_D1);
8432       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T7, ORC_VAR_P5,
8433           ORC_VAR_D1);
8434       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T5,
8435           ORC_VAR_D1);
8436       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T11, ORC_VAR_T8,
8437           ORC_VAR_D1, ORC_VAR_D1);
8438       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T12, ORC_VAR_T9,
8439           ORC_VAR_D1, ORC_VAR_D1);
8440       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T13, ORC_VAR_T10,
8441           ORC_VAR_D1, ORC_VAR_D1);
8442       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T8, ORC_VAR_T11,
8443           ORC_VAR_T12, ORC_VAR_D1);
8444       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T10, ORC_VAR_T13,
8445           ORC_VAR_T1, ORC_VAR_D1);
8446       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T14, ORC_VAR_T8,
8447           ORC_VAR_T10, ORC_VAR_D1);
8448       orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T14, ORC_VAR_C1,
8449           ORC_VAR_D1);
8450 #endif
8451
8452       orc_program_compile (p);
8453       c = orc_program_take_code (p);
8454       orc_program_free (p);
8455     }
8456     p_inited = TRUE;
8457     orc_once_mutex_unlock ();
8458   }
8459   ex->arrays[ORC_VAR_A2] = c;
8460   ex->program = 0;
8461
8462   ex->n = n;
8463   ORC_EXECUTOR_M (ex) = m;
8464   ex->arrays[ORC_VAR_D1] = d1;
8465   ex->params[ORC_VAR_D1] = d1_stride;
8466   ex->arrays[ORC_VAR_S1] = (void *) s1;
8467   ex->params[ORC_VAR_S1] = s1_stride;
8468   ex->params[ORC_VAR_P1] = p1;
8469   ex->params[ORC_VAR_P2] = p2;
8470   ex->params[ORC_VAR_P3] = p3;
8471   ex->params[ORC_VAR_P4] = p4;
8472   ex->params[ORC_VAR_P5] = p5;
8473
8474   func = c->exec;
8475   func (ex);
8476 }
8477 #endif
8478
8479
8480 /* video_convert_orc_convert_I420_BGRA */
8481 #ifdef DISABLE_ORC
8482 void
8483 video_convert_orc_convert_I420_BGRA (guint8 * ORC_RESTRICT d1,
8484     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
8485     const guint8 * ORC_RESTRICT s3, int p1, int p2, int p3, int p4, int p5,
8486     int n)
8487 {
8488   int i;
8489   orc_union32 *ORC_RESTRICT ptr0;
8490   const orc_int8 *ORC_RESTRICT ptr4;
8491   const orc_int8 *ORC_RESTRICT ptr5;
8492   const orc_int8 *ORC_RESTRICT ptr6;
8493   orc_int8 var42;
8494 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8495   volatile orc_int8 var43;
8496 #else
8497   orc_int8 var43;
8498 #endif
8499 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8500   volatile orc_int8 var44;
8501 #else
8502   orc_int8 var44;
8503 #endif
8504 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8505   volatile orc_int8 var45;
8506 #else
8507   orc_int8 var45;
8508 #endif
8509   orc_union16 var46;
8510   orc_union16 var47;
8511   orc_union16 var48;
8512   orc_union16 var49;
8513   orc_union16 var50;
8514 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8515   volatile orc_int8 var51;
8516 #else
8517   orc_int8 var51;
8518 #endif
8519 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8520   volatile orc_union32 var52;
8521 #else
8522   orc_union32 var52;
8523 #endif
8524   orc_union32 var53;
8525   orc_int8 var54;
8526   orc_union16 var55;
8527   orc_int8 var56;
8528   orc_int8 var57;
8529   orc_union16 var58;
8530   orc_int8 var59;
8531   orc_int8 var60;
8532   orc_union16 var61;
8533   orc_union16 var62;
8534   orc_union16 var63;
8535   orc_union16 var64;
8536   orc_union16 var65;
8537   orc_union16 var66;
8538   orc_union16 var67;
8539   orc_union16 var68;
8540   orc_union16 var69;
8541   orc_union16 var70;
8542   orc_int8 var71;
8543   orc_int8 var72;
8544   orc_int8 var73;
8545   orc_union16 var74;
8546   orc_union16 var75;
8547   orc_union32 var76;
8548
8549   ptr0 = (orc_union32 *) d1;
8550   ptr4 = (orc_int8 *) s1;
8551   ptr5 = (orc_int8 *) s2;
8552   ptr6 = (orc_int8 *) s3;
8553
8554   /* 1: loadpb */
8555   var43 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8556   /* 5: loadpb */
8557   var44 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8558   /* 9: loadpb */
8559   var45 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8560   /* 12: loadpw */
8561   var46.i = p1;
8562   /* 14: loadpw */
8563   var47.i = p2;
8564   /* 17: loadpw */
8565   var48.i = p3;
8566   /* 20: loadpw */
8567   var49.i = p4;
8568   /* 23: loadpw */
8569   var50.i = p5;
8570   /* 30: loadpb */
8571   var51 = (int) 0x0000007f;     /* 127 or 6.27463e-322f */
8572   /* 33: loadpb */
8573   var52.x4[0] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
8574   var52.x4[1] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
8575   var52.x4[2] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
8576   var52.x4[3] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
8577
8578   for (i = 0; i < n; i++) {
8579     /* 0: loadb */
8580     var42 = ptr4[i];
8581     /* 2: subb */
8582     var54 = var42 - var43;
8583     /* 3: splatbw */
8584     var55.i = ((var54 & 0xff) << 8) | (var54 & 0xff);
8585     /* 4: loadupdb */
8586     var56 = ptr5[i >> 1];
8587     /* 6: subb */
8588     var57 = var56 - var44;
8589     /* 7: splatbw */
8590     var58.i = ((var57 & 0xff) << 8) | (var57 & 0xff);
8591     /* 8: loadupdb */
8592     var59 = ptr6[i >> 1];
8593     /* 10: subb */
8594     var60 = var59 - var45;
8595     /* 11: splatbw */
8596     var61.i = ((var60 & 0xff) << 8) | (var60 & 0xff);
8597     /* 13: mulhsw */
8598     var62.i = (var55.i * var46.i) >> 16;
8599     /* 15: mulhsw */
8600     var63.i = (var61.i * var47.i) >> 16;
8601     /* 16: addssw */
8602     var64.i = ORC_CLAMP_SW (var62.i + var63.i);
8603     /* 18: mulhsw */
8604     var65.i = (var58.i * var48.i) >> 16;
8605     /* 19: addssw */
8606     var66.i = ORC_CLAMP_SW (var62.i + var65.i);
8607     /* 21: mulhsw */
8608     var67.i = (var58.i * var49.i) >> 16;
8609     /* 22: addssw */
8610     var68.i = ORC_CLAMP_SW (var62.i + var67.i);
8611     /* 24: mulhsw */
8612     var69.i = (var61.i * var50.i) >> 16;
8613     /* 25: addssw */
8614     var70.i = ORC_CLAMP_SW (var68.i + var69.i);
8615     /* 26: convssswb */
8616     var71 = ORC_CLAMP_SB (var64.i);
8617     /* 27: convssswb */
8618     var72 = ORC_CLAMP_SB (var70.i);
8619     /* 28: convssswb */
8620     var73 = ORC_CLAMP_SB (var66.i);
8621     /* 29: mergebw */
8622     {
8623       orc_union16 _dest;
8624       _dest.x2[0] = var73;
8625       _dest.x2[1] = var72;
8626       var74.i = _dest.i;
8627     }
8628     /* 31: mergebw */
8629     {
8630       orc_union16 _dest;
8631       _dest.x2[0] = var71;
8632       _dest.x2[1] = var51;
8633       var75.i = _dest.i;
8634     }
8635     /* 32: mergewl */
8636     {
8637       orc_union32 _dest;
8638       _dest.x2[0] = var74.i;
8639       _dest.x2[1] = var75.i;
8640       var76.i = _dest.i;
8641     }
8642     /* 34: addb */
8643     var53.x4[0] = var76.x4[0] + var52.x4[0];
8644     var53.x4[1] = var76.x4[1] + var52.x4[1];
8645     var53.x4[2] = var76.x4[2] + var52.x4[2];
8646     var53.x4[3] = var76.x4[3] + var52.x4[3];
8647     /* 35: storel */
8648     ptr0[i] = var53;
8649   }
8650
8651 }
8652
8653 #else
8654 static void
8655 _backup_video_convert_orc_convert_I420_BGRA (OrcExecutor * ORC_RESTRICT ex)
8656 {
8657   int i;
8658   int n = ex->n;
8659   orc_union32 *ORC_RESTRICT ptr0;
8660   const orc_int8 *ORC_RESTRICT ptr4;
8661   const orc_int8 *ORC_RESTRICT ptr5;
8662   const orc_int8 *ORC_RESTRICT ptr6;
8663   orc_int8 var42;
8664 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8665   volatile orc_int8 var43;
8666 #else
8667   orc_int8 var43;
8668 #endif
8669 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8670   volatile orc_int8 var44;
8671 #else
8672   orc_int8 var44;
8673 #endif
8674 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8675   volatile orc_int8 var45;
8676 #else
8677   orc_int8 var45;
8678 #endif
8679   orc_union16 var46;
8680   orc_union16 var47;
8681   orc_union16 var48;
8682   orc_union16 var49;
8683   orc_union16 var50;
8684 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8685   volatile orc_int8 var51;
8686 #else
8687   orc_int8 var51;
8688 #endif
8689 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8690   volatile orc_union32 var52;
8691 #else
8692   orc_union32 var52;
8693 #endif
8694   orc_union32 var53;
8695   orc_int8 var54;
8696   orc_union16 var55;
8697   orc_int8 var56;
8698   orc_int8 var57;
8699   orc_union16 var58;
8700   orc_int8 var59;
8701   orc_int8 var60;
8702   orc_union16 var61;
8703   orc_union16 var62;
8704   orc_union16 var63;
8705   orc_union16 var64;
8706   orc_union16 var65;
8707   orc_union16 var66;
8708   orc_union16 var67;
8709   orc_union16 var68;
8710   orc_union16 var69;
8711   orc_union16 var70;
8712   orc_int8 var71;
8713   orc_int8 var72;
8714   orc_int8 var73;
8715   orc_union16 var74;
8716   orc_union16 var75;
8717   orc_union32 var76;
8718
8719   ptr0 = (orc_union32 *) ex->arrays[0];
8720   ptr4 = (orc_int8 *) ex->arrays[4];
8721   ptr5 = (orc_int8 *) ex->arrays[5];
8722   ptr6 = (orc_int8 *) ex->arrays[6];
8723
8724   /* 1: loadpb */
8725   var43 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8726   /* 5: loadpb */
8727   var44 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8728   /* 9: loadpb */
8729   var45 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8730   /* 12: loadpw */
8731   var46.i = ex->params[24];
8732   /* 14: loadpw */
8733   var47.i = ex->params[25];
8734   /* 17: loadpw */
8735   var48.i = ex->params[26];
8736   /* 20: loadpw */
8737   var49.i = ex->params[27];
8738   /* 23: loadpw */
8739   var50.i = ex->params[28];
8740   /* 30: loadpb */
8741   var51 = (int) 0x0000007f;     /* 127 or 6.27463e-322f */
8742   /* 33: loadpb */
8743   var52.x4[0] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
8744   var52.x4[1] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
8745   var52.x4[2] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
8746   var52.x4[3] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
8747
8748   for (i = 0; i < n; i++) {
8749     /* 0: loadb */
8750     var42 = ptr4[i];
8751     /* 2: subb */
8752     var54 = var42 - var43;
8753     /* 3: splatbw */
8754     var55.i = ((var54 & 0xff) << 8) | (var54 & 0xff);
8755     /* 4: loadupdb */
8756     var56 = ptr5[i >> 1];
8757     /* 6: subb */
8758     var57 = var56 - var44;
8759     /* 7: splatbw */
8760     var58.i = ((var57 & 0xff) << 8) | (var57 & 0xff);
8761     /* 8: loadupdb */
8762     var59 = ptr6[i >> 1];
8763     /* 10: subb */
8764     var60 = var59 - var45;
8765     /* 11: splatbw */
8766     var61.i = ((var60 & 0xff) << 8) | (var60 & 0xff);
8767     /* 13: mulhsw */
8768     var62.i = (var55.i * var46.i) >> 16;
8769     /* 15: mulhsw */
8770     var63.i = (var61.i * var47.i) >> 16;
8771     /* 16: addssw */
8772     var64.i = ORC_CLAMP_SW (var62.i + var63.i);
8773     /* 18: mulhsw */
8774     var65.i = (var58.i * var48.i) >> 16;
8775     /* 19: addssw */
8776     var66.i = ORC_CLAMP_SW (var62.i + var65.i);
8777     /* 21: mulhsw */
8778     var67.i = (var58.i * var49.i) >> 16;
8779     /* 22: addssw */
8780     var68.i = ORC_CLAMP_SW (var62.i + var67.i);
8781     /* 24: mulhsw */
8782     var69.i = (var61.i * var50.i) >> 16;
8783     /* 25: addssw */
8784     var70.i = ORC_CLAMP_SW (var68.i + var69.i);
8785     /* 26: convssswb */
8786     var71 = ORC_CLAMP_SB (var64.i);
8787     /* 27: convssswb */
8788     var72 = ORC_CLAMP_SB (var70.i);
8789     /* 28: convssswb */
8790     var73 = ORC_CLAMP_SB (var66.i);
8791     /* 29: mergebw */
8792     {
8793       orc_union16 _dest;
8794       _dest.x2[0] = var73;
8795       _dest.x2[1] = var72;
8796       var74.i = _dest.i;
8797     }
8798     /* 31: mergebw */
8799     {
8800       orc_union16 _dest;
8801       _dest.x2[0] = var71;
8802       _dest.x2[1] = var51;
8803       var75.i = _dest.i;
8804     }
8805     /* 32: mergewl */
8806     {
8807       orc_union32 _dest;
8808       _dest.x2[0] = var74.i;
8809       _dest.x2[1] = var75.i;
8810       var76.i = _dest.i;
8811     }
8812     /* 34: addb */
8813     var53.x4[0] = var76.x4[0] + var52.x4[0];
8814     var53.x4[1] = var76.x4[1] + var52.x4[1];
8815     var53.x4[2] = var76.x4[2] + var52.x4[2];
8816     var53.x4[3] = var76.x4[3] + var52.x4[3];
8817     /* 35: storel */
8818     ptr0[i] = var53;
8819   }
8820
8821 }
8822
8823 void
8824 video_convert_orc_convert_I420_BGRA (guint8 * ORC_RESTRICT d1,
8825     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
8826     const guint8 * ORC_RESTRICT s3, int p1, int p2, int p3, int p4, int p5,
8827     int n)
8828 {
8829   OrcExecutor _ex, *ex = &_ex;
8830   static volatile int p_inited = 0;
8831   static OrcCode *c = 0;
8832   void (*func) (OrcExecutor *);
8833
8834   if (!p_inited) {
8835     orc_once_mutex_lock ();
8836     if (!p_inited) {
8837       OrcProgram *p;
8838
8839 #if 1
8840       static const orc_uint8 bc[] = {
8841         1, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
8842         95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 73, 52, 50,
8843         48, 95, 66, 71, 82, 65, 11, 4, 4, 12, 1, 1, 12, 1, 1, 12,
8844         1, 1, 14, 1, 128, 0, 0, 0, 14, 4, 127, 0, 0, 0, 16, 2,
8845         16, 2, 16, 2, 16, 2, 16, 2, 20, 2, 20, 2, 20, 2, 20, 2,
8846         20, 2, 20, 2, 20, 1, 20, 1, 20, 1, 20, 4, 65, 38, 4, 16,
8847         151, 32, 38, 45, 38, 5, 65, 38, 38, 16, 151, 33, 38, 45, 38, 6,
8848         65, 38, 38, 16, 151, 34, 38, 90, 32, 32, 24, 90, 35, 34, 25, 71,
8849         35, 32, 35, 90, 37, 33, 26, 71, 37, 32, 37, 90, 36, 33, 27, 71,
8850         36, 32, 36, 90, 32, 34, 28, 71, 36, 36, 32, 159, 38, 35, 159, 39,
8851         36, 159, 40, 37, 196, 37, 40, 39, 196, 35, 38, 17, 195, 41, 37, 35,
8852         21, 2, 33, 0, 41, 16, 2, 0,
8853       };
8854       p = orc_program_new_from_static_bytecode (bc);
8855       orc_program_set_backup_function (p,
8856           _backup_video_convert_orc_convert_I420_BGRA);
8857 #else
8858       p = orc_program_new ();
8859       orc_program_set_name (p, "video_convert_orc_convert_I420_BGRA");
8860       orc_program_set_backup_function (p,
8861           _backup_video_convert_orc_convert_I420_BGRA);
8862       orc_program_add_destination (p, 4, "d1");
8863       orc_program_add_source (p, 1, "s1");
8864       orc_program_add_source (p, 1, "s2");
8865       orc_program_add_source (p, 1, "s3");
8866       orc_program_add_constant (p, 1, 0x00000080, "c1");
8867       orc_program_add_constant (p, 4, 0x0000007f, "c2");
8868       orc_program_add_parameter (p, 2, "p1");
8869       orc_program_add_parameter (p, 2, "p2");
8870       orc_program_add_parameter (p, 2, "p3");
8871       orc_program_add_parameter (p, 2, "p4");
8872       orc_program_add_parameter (p, 2, "p5");
8873       orc_program_add_temporary (p, 2, "t1");
8874       orc_program_add_temporary (p, 2, "t2");
8875       orc_program_add_temporary (p, 2, "t3");
8876       orc_program_add_temporary (p, 2, "t4");
8877       orc_program_add_temporary (p, 2, "t5");
8878       orc_program_add_temporary (p, 2, "t6");
8879       orc_program_add_temporary (p, 1, "t7");
8880       orc_program_add_temporary (p, 1, "t8");
8881       orc_program_add_temporary (p, 1, "t9");
8882       orc_program_add_temporary (p, 4, "t10");
8883
8884       orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_S1, ORC_VAR_C1,
8885           ORC_VAR_D1);
8886       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_D1,
8887           ORC_VAR_D1);
8888       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T7, ORC_VAR_S2,
8889           ORC_VAR_D1, ORC_VAR_D1);
8890       orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C1,
8891           ORC_VAR_D1);
8892       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T2, ORC_VAR_T7, ORC_VAR_D1,
8893           ORC_VAR_D1);
8894       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T7, ORC_VAR_S3,
8895           ORC_VAR_D1, ORC_VAR_D1);
8896       orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C1,
8897           ORC_VAR_D1);
8898       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T3, ORC_VAR_T7, ORC_VAR_D1,
8899           ORC_VAR_D1);
8900       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1,
8901           ORC_VAR_D1);
8902       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_P2,
8903           ORC_VAR_D1);
8904       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_T4,
8905           ORC_VAR_D1);
8906       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_P3,
8907           ORC_VAR_D1);
8908       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_T6,
8909           ORC_VAR_D1);
8910       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_P4,
8911           ORC_VAR_D1);
8912       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_T5,
8913           ORC_VAR_D1);
8914       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_P5,
8915           ORC_VAR_D1);
8916       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T1,
8917           ORC_VAR_D1);
8918       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T7, ORC_VAR_T4,
8919           ORC_VAR_D1, ORC_VAR_D1);
8920       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T8, ORC_VAR_T5,
8921           ORC_VAR_D1, ORC_VAR_D1);
8922       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T9, ORC_VAR_T6,
8923           ORC_VAR_D1, ORC_VAR_D1);
8924       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T6, ORC_VAR_T9, ORC_VAR_T8,
8925           ORC_VAR_D1);
8926       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T4, ORC_VAR_T7, ORC_VAR_C2,
8927           ORC_VAR_D1);
8928       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T10, ORC_VAR_T6,
8929           ORC_VAR_T4, ORC_VAR_D1);
8930       orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T10, ORC_VAR_C1,
8931           ORC_VAR_D1);
8932 #endif
8933
8934       orc_program_compile (p);
8935       c = orc_program_take_code (p);
8936       orc_program_free (p);
8937     }
8938     p_inited = TRUE;
8939     orc_once_mutex_unlock ();
8940   }
8941   ex->arrays[ORC_VAR_A2] = c;
8942   ex->program = 0;
8943
8944   ex->n = n;
8945   ex->arrays[ORC_VAR_D1] = d1;
8946   ex->arrays[ORC_VAR_S1] = (void *) s1;
8947   ex->arrays[ORC_VAR_S2] = (void *) s2;
8948   ex->arrays[ORC_VAR_S3] = (void *) s3;
8949   ex->params[ORC_VAR_P1] = p1;
8950   ex->params[ORC_VAR_P2] = p2;
8951   ex->params[ORC_VAR_P3] = p3;
8952   ex->params[ORC_VAR_P4] = p4;
8953   ex->params[ORC_VAR_P5] = p5;
8954
8955   func = c->exec;
8956   func (ex);
8957 }
8958 #endif