Release 1.1.1
[platform/upstream/gstreamer.git] / gst / videoconvert / gstvideoconvertorc-dist.c
1
2 /* autogenerated from gstvideoconvertorc.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 n, int m);
201 void video_convert_orc_convert_AYUV_BGRA (guint8 * ORC_RESTRICT d1,
202     int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
203 void video_convert_orc_convert_AYUV_ABGR (guint8 * ORC_RESTRICT d1,
204     int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
205 void video_convert_orc_convert_AYUV_RGBA (guint8 * ORC_RESTRICT d1,
206     int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
207 void video_convert_orc_convert_I420_BGRA (guint8 * ORC_RESTRICT d1,
208     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
209     const guint8 * ORC_RESTRICT s3, int n);
210 void video_convert_orc_convert_I420_BGRA_avg (guint8 * ORC_RESTRICT d1,
211     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
212     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4,
213     const guint8 * ORC_RESTRICT s5, int n);
214 void video_convert_orc_getline_I420 (guint8 * ORC_RESTRICT d1,
215     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
216     const guint8 * ORC_RESTRICT s3, int n);
217 void video_convert_orc_getline_YUV9 (guint8 * ORC_RESTRICT d1,
218     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
219     const guint8 * ORC_RESTRICT s3, int n);
220 void video_convert_orc_getline_YUY2 (guint8 * ORC_RESTRICT d1,
221     const guint8 * ORC_RESTRICT s1, int n);
222 void video_convert_orc_getline_UYVY (guint8 * ORC_RESTRICT d1,
223     const guint8 * ORC_RESTRICT s1, int n);
224 void video_convert_orc_getline_YVYU (guint8 * ORC_RESTRICT d1,
225     const guint8 * ORC_RESTRICT s1, int n);
226 void video_convert_orc_getline_Y42B (guint8 * ORC_RESTRICT d1,
227     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
228     const guint8 * ORC_RESTRICT s3, int n);
229 void video_convert_orc_getline_Y444 (guint8 * ORC_RESTRICT d1,
230     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
231     const guint8 * ORC_RESTRICT s3, int n);
232 void video_convert_orc_getline_Y800 (guint8 * ORC_RESTRICT d1,
233     const guint8 * ORC_RESTRICT s1, int n);
234 void video_convert_orc_getline_Y16 (guint8 * ORC_RESTRICT d1,
235     const guint8 * ORC_RESTRICT s1, int n);
236 void video_convert_orc_getline_BGRA (guint8 * ORC_RESTRICT d1,
237     const guint8 * ORC_RESTRICT s1, int n);
238 void video_convert_orc_getline_ABGR (guint8 * ORC_RESTRICT d1,
239     const guint8 * ORC_RESTRICT s1, int n);
240 void video_convert_orc_getline_RGBA (guint8 * ORC_RESTRICT d1,
241     const guint8 * ORC_RESTRICT s1, int n);
242 void video_convert_orc_getline_NV12 (guint8 * ORC_RESTRICT d1,
243     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n);
244 void video_convert_orc_getline_NV21 (guint8 * ORC_RESTRICT d1,
245     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n);
246 void video_convert_orc_getline_A420 (guint8 * ORC_RESTRICT d1,
247     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
248     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n);
249 void video_convert_orc_putline_I420 (guint8 * ORC_RESTRICT d1,
250     guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
251     const guint8 * ORC_RESTRICT s1, int n);
252 void video_convert_orc_putline_YUY2 (guint8 * ORC_RESTRICT d1,
253     const guint8 * ORC_RESTRICT s1, int n);
254 void video_convert_orc_putline_YVYU (guint8 * ORC_RESTRICT d1,
255     const guint8 * ORC_RESTRICT s1, int n);
256 void video_convert_orc_putline_UYVY (guint8 * ORC_RESTRICT d1,
257     const guint8 * ORC_RESTRICT s1, int n);
258 void video_convert_orc_putline_Y42B (guint8 * ORC_RESTRICT d1,
259     guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
260     const guint8 * ORC_RESTRICT s1, int n);
261 void video_convert_orc_putline_Y444 (guint8 * ORC_RESTRICT d1,
262     guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
263     const guint8 * ORC_RESTRICT s1, int n);
264 void video_convert_orc_putline_Y800 (guint8 * ORC_RESTRICT d1,
265     const guint8 * ORC_RESTRICT s1, int n);
266 void video_convert_orc_putline_Y16 (guint8 * ORC_RESTRICT d1,
267     const guint8 * ORC_RESTRICT s1, int n);
268 void video_convert_orc_putline_BGRA (guint8 * ORC_RESTRICT d1,
269     const guint8 * ORC_RESTRICT s1, int n);
270 void video_convert_orc_putline_ABGR (guint8 * ORC_RESTRICT d1,
271     const guint8 * ORC_RESTRICT s1, int n);
272 void video_convert_orc_putline_RGBA (guint8 * ORC_RESTRICT d1,
273     const guint8 * ORC_RESTRICT s1, int n);
274 void video_convert_orc_putline_NV12 (guint8 * ORC_RESTRICT d1,
275     guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, int n);
276 void video_convert_orc_putline_NV21 (guint8 * ORC_RESTRICT d1,
277     guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, int n);
278 void video_convert_orc_putline_A420 (guint8 * ORC_RESTRICT d1,
279     guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
280     guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1, int n);
281
282
283 /* begin Orc C target preamble */
284 #define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x)))
285 #define ORC_ABS(a) ((a)<0 ? -(a) : (a))
286 #define ORC_MIN(a,b) ((a)<(b) ? (a) : (b))
287 #define ORC_MAX(a,b) ((a)>(b) ? (a) : (b))
288 #define ORC_SB_MAX 127
289 #define ORC_SB_MIN (-1-ORC_SB_MAX)
290 #define ORC_UB_MAX 255
291 #define ORC_UB_MIN 0
292 #define ORC_SW_MAX 32767
293 #define ORC_SW_MIN (-1-ORC_SW_MAX)
294 #define ORC_UW_MAX 65535
295 #define ORC_UW_MIN 0
296 #define ORC_SL_MAX 2147483647
297 #define ORC_SL_MIN (-1-ORC_SL_MAX)
298 #define ORC_UL_MAX 4294967295U
299 #define ORC_UL_MIN 0
300 #define ORC_CLAMP_SB(x) ORC_CLAMP(x,ORC_SB_MIN,ORC_SB_MAX)
301 #define ORC_CLAMP_UB(x) ORC_CLAMP(x,ORC_UB_MIN,ORC_UB_MAX)
302 #define ORC_CLAMP_SW(x) ORC_CLAMP(x,ORC_SW_MIN,ORC_SW_MAX)
303 #define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX)
304 #define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX)
305 #define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX)
306 #define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8))
307 #define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24))
308 #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))
309 #define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset)))
310 #define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff))
311 #define ORC_ISNAN(x) ((((x)&0x7f800000) == 0x7f800000) && (((x)&0x007fffff) != 0))
312 #define ORC_DENORMAL_DOUBLE(x) ((x) & ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == 0) ? ORC_UINT64_C(0xfff0000000000000) : ORC_UINT64_C(0xffffffffffffffff)))
313 #define ORC_ISNAN_DOUBLE(x) ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == ORC_UINT64_C(0x7ff0000000000000)) && (((x)&ORC_UINT64_C(0x000fffffffffffff)) != 0))
314 #ifndef ORC_RESTRICT
315 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
316 #define ORC_RESTRICT restrict
317 #elif defined(__GNUC__) && __GNUC__ >= 4
318 #define ORC_RESTRICT __restrict__
319 #else
320 #define ORC_RESTRICT
321 #endif
322 #endif
323 /* end Orc C target preamble */
324
325
326
327 /* video_convert_orc_memcpy_2d */
328 #ifdef DISABLE_ORC
329 void
330 video_convert_orc_memcpy_2d (guint8 * ORC_RESTRICT d1, int d1_stride,
331     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
332 {
333   int i;
334   int j;
335   orc_int8 *ORC_RESTRICT ptr0;
336   const orc_int8 *ORC_RESTRICT ptr4;
337   orc_int8 var32;
338   orc_int8 var33;
339
340   for (j = 0; j < m; j++) {
341     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
342     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
343
344
345     for (i = 0; i < n; i++) {
346       /* 0: loadb */
347       var32 = ptr4[i];
348       /* 1: copyb */
349       var33 = var32;
350       /* 2: storeb */
351       ptr0[i] = var33;
352     }
353   }
354
355 }
356
357 #else
358 static void
359 _backup_video_convert_orc_memcpy_2d (OrcExecutor * ORC_RESTRICT ex)
360 {
361   int i;
362   int j;
363   int n = ex->n;
364   int m = ex->params[ORC_VAR_A1];
365   orc_int8 *ORC_RESTRICT ptr0;
366   const orc_int8 *ORC_RESTRICT ptr4;
367   orc_int8 var32;
368   orc_int8 var33;
369
370   for (j = 0; j < m; j++) {
371     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
372     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
373
374
375     for (i = 0; i < n; i++) {
376       /* 0: loadb */
377       var32 = ptr4[i];
378       /* 1: copyb */
379       var33 = var32;
380       /* 2: storeb */
381       ptr0[i] = var33;
382     }
383   }
384
385 }
386
387 void
388 video_convert_orc_memcpy_2d (guint8 * ORC_RESTRICT d1, int d1_stride,
389     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
390 {
391   OrcExecutor _ex, *ex = &_ex;
392   static volatile int p_inited = 0;
393   static OrcCode *c = 0;
394   void (*func) (OrcExecutor *);
395
396   if (!p_inited) {
397     orc_once_mutex_lock ();
398     if (!p_inited) {
399       OrcProgram *p;
400
401 #if 1
402       static const orc_uint8 bc[] = {
403         1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
404         116, 95, 111, 114, 99, 95, 109, 101, 109, 99, 112, 121, 95, 50, 100, 11,
405         1, 1, 12, 1, 1, 42, 0, 4, 2, 0,
406       };
407       p = orc_program_new_from_static_bytecode (bc);
408       orc_program_set_backup_function (p, _backup_video_convert_orc_memcpy_2d);
409 #else
410       p = orc_program_new ();
411       orc_program_set_2d (p);
412       orc_program_set_name (p, "video_convert_orc_memcpy_2d");
413       orc_program_set_backup_function (p, _backup_video_convert_orc_memcpy_2d);
414       orc_program_add_destination (p, 1, "d1");
415       orc_program_add_source (p, 1, "s1");
416
417       orc_program_append_2 (p, "copyb", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1,
418           ORC_VAR_D1);
419 #endif
420
421       orc_program_compile (p);
422       c = orc_program_take_code (p);
423       orc_program_free (p);
424     }
425     p_inited = TRUE;
426     orc_once_mutex_unlock ();
427   }
428   ex->arrays[ORC_VAR_A2] = c;
429   ex->program = 0;
430
431   ex->n = n;
432   ORC_EXECUTOR_M (ex) = m;
433   ex->arrays[ORC_VAR_D1] = d1;
434   ex->params[ORC_VAR_D1] = d1_stride;
435   ex->arrays[ORC_VAR_S1] = (void *) s1;
436   ex->params[ORC_VAR_S1] = s1_stride;
437
438   func = c->exec;
439   func (ex);
440 }
441 #endif
442
443
444 /* video_convert_orc_convert_I420_UYVY */
445 #ifdef DISABLE_ORC
446 void
447 video_convert_orc_convert_I420_UYVY (guint8 * ORC_RESTRICT d1,
448     guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1,
449     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3,
450     const guint8 * ORC_RESTRICT s4, int n)
451 {
452   int i;
453   orc_union32 *ORC_RESTRICT ptr0;
454   orc_union32 *ORC_RESTRICT ptr1;
455   const orc_union16 *ORC_RESTRICT ptr4;
456   const orc_union16 *ORC_RESTRICT ptr5;
457   const orc_int8 *ORC_RESTRICT ptr6;
458   const orc_int8 *ORC_RESTRICT ptr7;
459   orc_int8 var33;
460   orc_int8 var34;
461   orc_union16 var35;
462   orc_union32 var36;
463   orc_union16 var37;
464   orc_union32 var38;
465   orc_union16 var39;
466
467   ptr0 = (orc_union32 *) d1;
468   ptr1 = (orc_union32 *) d2;
469   ptr4 = (orc_union16 *) s1;
470   ptr5 = (orc_union16 *) s2;
471   ptr6 = (orc_int8 *) s3;
472   ptr7 = (orc_int8 *) s4;
473
474
475   for (i = 0; i < n; i++) {
476     /* 0: loadb */
477     var33 = ptr6[i];
478     /* 1: loadb */
479     var34 = ptr7[i];
480     /* 2: mergebw */
481     {
482       orc_union16 _dest;
483       _dest.x2[0] = var33;
484       _dest.x2[1] = var34;
485       var39.i = _dest.i;
486     }
487     /* 3: loadw */
488     var35 = ptr4[i];
489     /* 4: mergebw */
490     {
491       orc_union16 _dest;
492       _dest.x2[0] = var39.x2[0];
493       _dest.x2[1] = var35.x2[0];
494       var36.x2[0] = _dest.i;
495     }
496     {
497       orc_union16 _dest;
498       _dest.x2[0] = var39.x2[1];
499       _dest.x2[1] = var35.x2[1];
500       var36.x2[1] = _dest.i;
501     }
502     /* 5: storel */
503     ptr0[i] = var36;
504     /* 6: loadw */
505     var37 = ptr5[i];
506     /* 7: mergebw */
507     {
508       orc_union16 _dest;
509       _dest.x2[0] = var39.x2[0];
510       _dest.x2[1] = var37.x2[0];
511       var38.x2[0] = _dest.i;
512     }
513     {
514       orc_union16 _dest;
515       _dest.x2[0] = var39.x2[1];
516       _dest.x2[1] = var37.x2[1];
517       var38.x2[1] = _dest.i;
518     }
519     /* 8: storel */
520     ptr1[i] = var38;
521   }
522
523 }
524
525 #else
526 static void
527 _backup_video_convert_orc_convert_I420_UYVY (OrcExecutor * ORC_RESTRICT ex)
528 {
529   int i;
530   int n = ex->n;
531   orc_union32 *ORC_RESTRICT ptr0;
532   orc_union32 *ORC_RESTRICT ptr1;
533   const orc_union16 *ORC_RESTRICT ptr4;
534   const orc_union16 *ORC_RESTRICT ptr5;
535   const orc_int8 *ORC_RESTRICT ptr6;
536   const orc_int8 *ORC_RESTRICT ptr7;
537   orc_int8 var33;
538   orc_int8 var34;
539   orc_union16 var35;
540   orc_union32 var36;
541   orc_union16 var37;
542   orc_union32 var38;
543   orc_union16 var39;
544
545   ptr0 = (orc_union32 *) ex->arrays[0];
546   ptr1 = (orc_union32 *) ex->arrays[1];
547   ptr4 = (orc_union16 *) ex->arrays[4];
548   ptr5 = (orc_union16 *) ex->arrays[5];
549   ptr6 = (orc_int8 *) ex->arrays[6];
550   ptr7 = (orc_int8 *) ex->arrays[7];
551
552
553   for (i = 0; i < n; i++) {
554     /* 0: loadb */
555     var33 = ptr6[i];
556     /* 1: loadb */
557     var34 = ptr7[i];
558     /* 2: mergebw */
559     {
560       orc_union16 _dest;
561       _dest.x2[0] = var33;
562       _dest.x2[1] = var34;
563       var39.i = _dest.i;
564     }
565     /* 3: loadw */
566     var35 = ptr4[i];
567     /* 4: mergebw */
568     {
569       orc_union16 _dest;
570       _dest.x2[0] = var39.x2[0];
571       _dest.x2[1] = var35.x2[0];
572       var36.x2[0] = _dest.i;
573     }
574     {
575       orc_union16 _dest;
576       _dest.x2[0] = var39.x2[1];
577       _dest.x2[1] = var35.x2[1];
578       var36.x2[1] = _dest.i;
579     }
580     /* 5: storel */
581     ptr0[i] = var36;
582     /* 6: loadw */
583     var37 = ptr5[i];
584     /* 7: mergebw */
585     {
586       orc_union16 _dest;
587       _dest.x2[0] = var39.x2[0];
588       _dest.x2[1] = var37.x2[0];
589       var38.x2[0] = _dest.i;
590     }
591     {
592       orc_union16 _dest;
593       _dest.x2[0] = var39.x2[1];
594       _dest.x2[1] = var37.x2[1];
595       var38.x2[1] = _dest.i;
596     }
597     /* 8: storel */
598     ptr1[i] = var38;
599   }
600
601 }
602
603 void
604 video_convert_orc_convert_I420_UYVY (guint8 * ORC_RESTRICT d1,
605     guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1,
606     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3,
607     const guint8 * ORC_RESTRICT s4, int n)
608 {
609   OrcExecutor _ex, *ex = &_ex;
610   static volatile int p_inited = 0;
611   static OrcCode *c = 0;
612   void (*func) (OrcExecutor *);
613
614   if (!p_inited) {
615     orc_once_mutex_lock ();
616     if (!p_inited) {
617       OrcProgram *p;
618
619 #if 1
620       static const orc_uint8 bc[] = {
621         1, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
622         95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 73, 52, 50,
623         48, 95, 85, 89, 86, 89, 11, 4, 4, 11, 4, 4, 12, 2, 2, 12,
624         2, 2, 12, 1, 1, 12, 1, 1, 20, 2, 196, 32, 6, 7, 21, 1,
625         196, 0, 32, 4, 21, 1, 196, 1, 32, 5, 2, 0,
626       };
627       p = orc_program_new_from_static_bytecode (bc);
628       orc_program_set_backup_function (p,
629           _backup_video_convert_orc_convert_I420_UYVY);
630 #else
631       p = orc_program_new ();
632       orc_program_set_name (p, "video_convert_orc_convert_I420_UYVY");
633       orc_program_set_backup_function (p,
634           _backup_video_convert_orc_convert_I420_UYVY);
635       orc_program_add_destination (p, 4, "d1");
636       orc_program_add_destination (p, 4, "d2");
637       orc_program_add_source (p, 2, "s1");
638       orc_program_add_source (p, 2, "s2");
639       orc_program_add_source (p, 1, "s3");
640       orc_program_add_source (p, 1, "s4");
641       orc_program_add_temporary (p, 2, "t1");
642
643       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S3, ORC_VAR_S4,
644           ORC_VAR_D1);
645       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1,
646           ORC_VAR_D1);
647       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D2, ORC_VAR_T1, ORC_VAR_S2,
648           ORC_VAR_D1);
649 #endif
650
651       orc_program_compile (p);
652       c = orc_program_take_code (p);
653       orc_program_free (p);
654     }
655     p_inited = TRUE;
656     orc_once_mutex_unlock ();
657   }
658   ex->arrays[ORC_VAR_A2] = c;
659   ex->program = 0;
660
661   ex->n = n;
662   ex->arrays[ORC_VAR_D1] = d1;
663   ex->arrays[ORC_VAR_D2] = d2;
664   ex->arrays[ORC_VAR_S1] = (void *) s1;
665   ex->arrays[ORC_VAR_S2] = (void *) s2;
666   ex->arrays[ORC_VAR_S3] = (void *) s3;
667   ex->arrays[ORC_VAR_S4] = (void *) s4;
668
669   func = c->exec;
670   func (ex);
671 }
672 #endif
673
674
675 /* video_convert_orc_convert_I420_YUY2 */
676 #ifdef DISABLE_ORC
677 void
678 video_convert_orc_convert_I420_YUY2 (guint8 * ORC_RESTRICT d1,
679     guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1,
680     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3,
681     const guint8 * ORC_RESTRICT s4, int n)
682 {
683   int i;
684   orc_union32 *ORC_RESTRICT ptr0;
685   orc_union32 *ORC_RESTRICT ptr1;
686   const orc_union16 *ORC_RESTRICT ptr4;
687   const orc_union16 *ORC_RESTRICT ptr5;
688   const orc_int8 *ORC_RESTRICT ptr6;
689   const orc_int8 *ORC_RESTRICT ptr7;
690   orc_int8 var33;
691   orc_int8 var34;
692   orc_union16 var35;
693   orc_union32 var36;
694   orc_union16 var37;
695   orc_union32 var38;
696   orc_union16 var39;
697
698   ptr0 = (orc_union32 *) d1;
699   ptr1 = (orc_union32 *) d2;
700   ptr4 = (orc_union16 *) s1;
701   ptr5 = (orc_union16 *) s2;
702   ptr6 = (orc_int8 *) s3;
703   ptr7 = (orc_int8 *) s4;
704
705
706   for (i = 0; i < n; i++) {
707     /* 0: loadb */
708     var33 = ptr6[i];
709     /* 1: loadb */
710     var34 = ptr7[i];
711     /* 2: mergebw */
712     {
713       orc_union16 _dest;
714       _dest.x2[0] = var33;
715       _dest.x2[1] = var34;
716       var39.i = _dest.i;
717     }
718     /* 3: loadw */
719     var35 = ptr4[i];
720     /* 4: mergebw */
721     {
722       orc_union16 _dest;
723       _dest.x2[0] = var35.x2[0];
724       _dest.x2[1] = var39.x2[0];
725       var36.x2[0] = _dest.i;
726     }
727     {
728       orc_union16 _dest;
729       _dest.x2[0] = var35.x2[1];
730       _dest.x2[1] = var39.x2[1];
731       var36.x2[1] = _dest.i;
732     }
733     /* 5: storel */
734     ptr0[i] = var36;
735     /* 6: loadw */
736     var37 = ptr5[i];
737     /* 7: mergebw */
738     {
739       orc_union16 _dest;
740       _dest.x2[0] = var37.x2[0];
741       _dest.x2[1] = var39.x2[0];
742       var38.x2[0] = _dest.i;
743     }
744     {
745       orc_union16 _dest;
746       _dest.x2[0] = var37.x2[1];
747       _dest.x2[1] = var39.x2[1];
748       var38.x2[1] = _dest.i;
749     }
750     /* 8: storel */
751     ptr1[i] = var38;
752   }
753
754 }
755
756 #else
757 static void
758 _backup_video_convert_orc_convert_I420_YUY2 (OrcExecutor * ORC_RESTRICT ex)
759 {
760   int i;
761   int n = ex->n;
762   orc_union32 *ORC_RESTRICT ptr0;
763   orc_union32 *ORC_RESTRICT ptr1;
764   const orc_union16 *ORC_RESTRICT ptr4;
765   const orc_union16 *ORC_RESTRICT ptr5;
766   const orc_int8 *ORC_RESTRICT ptr6;
767   const orc_int8 *ORC_RESTRICT ptr7;
768   orc_int8 var33;
769   orc_int8 var34;
770   orc_union16 var35;
771   orc_union32 var36;
772   orc_union16 var37;
773   orc_union32 var38;
774   orc_union16 var39;
775
776   ptr0 = (orc_union32 *) ex->arrays[0];
777   ptr1 = (orc_union32 *) ex->arrays[1];
778   ptr4 = (orc_union16 *) ex->arrays[4];
779   ptr5 = (orc_union16 *) ex->arrays[5];
780   ptr6 = (orc_int8 *) ex->arrays[6];
781   ptr7 = (orc_int8 *) ex->arrays[7];
782
783
784   for (i = 0; i < n; i++) {
785     /* 0: loadb */
786     var33 = ptr6[i];
787     /* 1: loadb */
788     var34 = ptr7[i];
789     /* 2: mergebw */
790     {
791       orc_union16 _dest;
792       _dest.x2[0] = var33;
793       _dest.x2[1] = var34;
794       var39.i = _dest.i;
795     }
796     /* 3: loadw */
797     var35 = ptr4[i];
798     /* 4: mergebw */
799     {
800       orc_union16 _dest;
801       _dest.x2[0] = var35.x2[0];
802       _dest.x2[1] = var39.x2[0];
803       var36.x2[0] = _dest.i;
804     }
805     {
806       orc_union16 _dest;
807       _dest.x2[0] = var35.x2[1];
808       _dest.x2[1] = var39.x2[1];
809       var36.x2[1] = _dest.i;
810     }
811     /* 5: storel */
812     ptr0[i] = var36;
813     /* 6: loadw */
814     var37 = ptr5[i];
815     /* 7: mergebw */
816     {
817       orc_union16 _dest;
818       _dest.x2[0] = var37.x2[0];
819       _dest.x2[1] = var39.x2[0];
820       var38.x2[0] = _dest.i;
821     }
822     {
823       orc_union16 _dest;
824       _dest.x2[0] = var37.x2[1];
825       _dest.x2[1] = var39.x2[1];
826       var38.x2[1] = _dest.i;
827     }
828     /* 8: storel */
829     ptr1[i] = var38;
830   }
831
832 }
833
834 void
835 video_convert_orc_convert_I420_YUY2 (guint8 * ORC_RESTRICT d1,
836     guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1,
837     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3,
838     const guint8 * ORC_RESTRICT s4, int n)
839 {
840   OrcExecutor _ex, *ex = &_ex;
841   static volatile int p_inited = 0;
842   static OrcCode *c = 0;
843   void (*func) (OrcExecutor *);
844
845   if (!p_inited) {
846     orc_once_mutex_lock ();
847     if (!p_inited) {
848       OrcProgram *p;
849
850 #if 1
851       static const orc_uint8 bc[] = {
852         1, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
853         95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 73, 52, 50,
854         48, 95, 89, 85, 89, 50, 11, 4, 4, 11, 4, 4, 12, 2, 2, 12,
855         2, 2, 12, 1, 1, 12, 1, 1, 20, 2, 196, 32, 6, 7, 21, 1,
856         196, 0, 4, 32, 21, 1, 196, 1, 5, 32, 2, 0,
857       };
858       p = orc_program_new_from_static_bytecode (bc);
859       orc_program_set_backup_function (p,
860           _backup_video_convert_orc_convert_I420_YUY2);
861 #else
862       p = orc_program_new ();
863       orc_program_set_name (p, "video_convert_orc_convert_I420_YUY2");
864       orc_program_set_backup_function (p,
865           _backup_video_convert_orc_convert_I420_YUY2);
866       orc_program_add_destination (p, 4, "d1");
867       orc_program_add_destination (p, 4, "d2");
868       orc_program_add_source (p, 2, "s1");
869       orc_program_add_source (p, 2, "s2");
870       orc_program_add_source (p, 1, "s3");
871       orc_program_add_source (p, 1, "s4");
872       orc_program_add_temporary (p, 2, "t1");
873
874       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S3, ORC_VAR_S4,
875           ORC_VAR_D1);
876       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1,
877           ORC_VAR_D1);
878       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D2, ORC_VAR_S2, ORC_VAR_T1,
879           ORC_VAR_D1);
880 #endif
881
882       orc_program_compile (p);
883       c = orc_program_take_code (p);
884       orc_program_free (p);
885     }
886     p_inited = TRUE;
887     orc_once_mutex_unlock ();
888   }
889   ex->arrays[ORC_VAR_A2] = c;
890   ex->program = 0;
891
892   ex->n = n;
893   ex->arrays[ORC_VAR_D1] = d1;
894   ex->arrays[ORC_VAR_D2] = d2;
895   ex->arrays[ORC_VAR_S1] = (void *) s1;
896   ex->arrays[ORC_VAR_S2] = (void *) s2;
897   ex->arrays[ORC_VAR_S3] = (void *) s3;
898   ex->arrays[ORC_VAR_S4] = (void *) s4;
899
900   func = c->exec;
901   func (ex);
902 }
903 #endif
904
905
906 /* video_convert_orc_convert_I420_AYUV */
907 #ifdef DISABLE_ORC
908 void
909 video_convert_orc_convert_I420_AYUV (guint8 * ORC_RESTRICT d1,
910     guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1,
911     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3,
912     const guint8 * ORC_RESTRICT s4, int n)
913 {
914   int i;
915   orc_union32 *ORC_RESTRICT ptr0;
916   orc_union32 *ORC_RESTRICT ptr1;
917   const orc_int8 *ORC_RESTRICT ptr4;
918   const orc_int8 *ORC_RESTRICT ptr5;
919   const orc_int8 *ORC_RESTRICT ptr6;
920   const orc_int8 *ORC_RESTRICT ptr7;
921 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
922   volatile orc_int8 var36;
923 #else
924   orc_int8 var36;
925 #endif
926   orc_int8 var37;
927   orc_union32 var38;
928 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
929   volatile orc_int8 var39;
930 #else
931   orc_int8 var39;
932 #endif
933   orc_int8 var40;
934   orc_union32 var41;
935   orc_int8 var42;
936   orc_int8 var43;
937   orc_union16 var44;
938   orc_union16 var45;
939   orc_union16 var46;
940
941   ptr0 = (orc_union32 *) d1;
942   ptr1 = (orc_union32 *) d2;
943   ptr4 = (orc_int8 *) s1;
944   ptr5 = (orc_int8 *) s2;
945   ptr6 = (orc_int8 *) s3;
946   ptr7 = (orc_int8 *) s4;
947
948   /* 3: loadpb */
949   var36 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
950   /* 8: loadpb */
951   var39 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
952
953   for (i = 0; i < n; i++) {
954     /* 0: loadupdb */
955     var42 = ptr6[i >> 1];
956     /* 1: loadupdb */
957     var43 = ptr7[i >> 1];
958     /* 2: mergebw */
959     {
960       orc_union16 _dest;
961       _dest.x2[0] = var42;
962       _dest.x2[1] = var43;
963       var44.i = _dest.i;
964     }
965     /* 4: loadb */
966     var37 = ptr4[i];
967     /* 5: mergebw */
968     {
969       orc_union16 _dest;
970       _dest.x2[0] = var36;
971       _dest.x2[1] = var37;
972       var45.i = _dest.i;
973     }
974     /* 6: mergewl */
975     {
976       orc_union32 _dest;
977       _dest.x2[0] = var45.i;
978       _dest.x2[1] = var44.i;
979       var38.i = _dest.i;
980     }
981     /* 7: storel */
982     ptr0[i] = var38;
983     /* 9: loadb */
984     var40 = ptr5[i];
985     /* 10: mergebw */
986     {
987       orc_union16 _dest;
988       _dest.x2[0] = var39;
989       _dest.x2[1] = var40;
990       var46.i = _dest.i;
991     }
992     /* 11: mergewl */
993     {
994       orc_union32 _dest;
995       _dest.x2[0] = var46.i;
996       _dest.x2[1] = var44.i;
997       var41.i = _dest.i;
998     }
999     /* 12: storel */
1000     ptr1[i] = var41;
1001   }
1002
1003 }
1004
1005 #else
1006 static void
1007 _backup_video_convert_orc_convert_I420_AYUV (OrcExecutor * ORC_RESTRICT ex)
1008 {
1009   int i;
1010   int n = ex->n;
1011   orc_union32 *ORC_RESTRICT ptr0;
1012   orc_union32 *ORC_RESTRICT ptr1;
1013   const orc_int8 *ORC_RESTRICT ptr4;
1014   const orc_int8 *ORC_RESTRICT ptr5;
1015   const orc_int8 *ORC_RESTRICT ptr6;
1016   const orc_int8 *ORC_RESTRICT ptr7;
1017 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
1018   volatile orc_int8 var36;
1019 #else
1020   orc_int8 var36;
1021 #endif
1022   orc_int8 var37;
1023   orc_union32 var38;
1024 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
1025   volatile orc_int8 var39;
1026 #else
1027   orc_int8 var39;
1028 #endif
1029   orc_int8 var40;
1030   orc_union32 var41;
1031   orc_int8 var42;
1032   orc_int8 var43;
1033   orc_union16 var44;
1034   orc_union16 var45;
1035   orc_union16 var46;
1036
1037   ptr0 = (orc_union32 *) ex->arrays[0];
1038   ptr1 = (orc_union32 *) ex->arrays[1];
1039   ptr4 = (orc_int8 *) ex->arrays[4];
1040   ptr5 = (orc_int8 *) ex->arrays[5];
1041   ptr6 = (orc_int8 *) ex->arrays[6];
1042   ptr7 = (orc_int8 *) ex->arrays[7];
1043
1044   /* 3: loadpb */
1045   var36 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
1046   /* 8: loadpb */
1047   var39 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
1048
1049   for (i = 0; i < n; i++) {
1050     /* 0: loadupdb */
1051     var42 = ptr6[i >> 1];
1052     /* 1: loadupdb */
1053     var43 = ptr7[i >> 1];
1054     /* 2: mergebw */
1055     {
1056       orc_union16 _dest;
1057       _dest.x2[0] = var42;
1058       _dest.x2[1] = var43;
1059       var44.i = _dest.i;
1060     }
1061     /* 4: loadb */
1062     var37 = ptr4[i];
1063     /* 5: mergebw */
1064     {
1065       orc_union16 _dest;
1066       _dest.x2[0] = var36;
1067       _dest.x2[1] = var37;
1068       var45.i = _dest.i;
1069     }
1070     /* 6: mergewl */
1071     {
1072       orc_union32 _dest;
1073       _dest.x2[0] = var45.i;
1074       _dest.x2[1] = var44.i;
1075       var38.i = _dest.i;
1076     }
1077     /* 7: storel */
1078     ptr0[i] = var38;
1079     /* 9: loadb */
1080     var40 = ptr5[i];
1081     /* 10: mergebw */
1082     {
1083       orc_union16 _dest;
1084       _dest.x2[0] = var39;
1085       _dest.x2[1] = var40;
1086       var46.i = _dest.i;
1087     }
1088     /* 11: mergewl */
1089     {
1090       orc_union32 _dest;
1091       _dest.x2[0] = var46.i;
1092       _dest.x2[1] = var44.i;
1093       var41.i = _dest.i;
1094     }
1095     /* 12: storel */
1096     ptr1[i] = var41;
1097   }
1098
1099 }
1100
1101 void
1102 video_convert_orc_convert_I420_AYUV (guint8 * ORC_RESTRICT d1,
1103     guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1,
1104     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3,
1105     const guint8 * ORC_RESTRICT s4, int n)
1106 {
1107   OrcExecutor _ex, *ex = &_ex;
1108   static volatile int p_inited = 0;
1109   static OrcCode *c = 0;
1110   void (*func) (OrcExecutor *);
1111
1112   if (!p_inited) {
1113     orc_once_mutex_lock ();
1114     if (!p_inited) {
1115       OrcProgram *p;
1116
1117 #if 1
1118       static const orc_uint8 bc[] = {
1119         1, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
1120         95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 73, 52, 50,
1121         48, 95, 65, 89, 85, 86, 11, 4, 4, 11, 4, 4, 12, 1, 1, 12,
1122         1, 1, 12, 1, 1, 12, 1, 1, 14, 1, 255, 0, 0, 0, 20, 2,
1123         20, 2, 20, 1, 20, 1, 45, 34, 6, 45, 35, 7, 196, 32, 34, 35,
1124         196, 33, 16, 4, 195, 0, 33, 32, 196, 33, 16, 5, 195, 1, 33, 32,
1125         2, 0,
1126       };
1127       p = orc_program_new_from_static_bytecode (bc);
1128       orc_program_set_backup_function (p,
1129           _backup_video_convert_orc_convert_I420_AYUV);
1130 #else
1131       p = orc_program_new ();
1132       orc_program_set_name (p, "video_convert_orc_convert_I420_AYUV");
1133       orc_program_set_backup_function (p,
1134           _backup_video_convert_orc_convert_I420_AYUV);
1135       orc_program_add_destination (p, 4, "d1");
1136       orc_program_add_destination (p, 4, "d2");
1137       orc_program_add_source (p, 1, "s1");
1138       orc_program_add_source (p, 1, "s2");
1139       orc_program_add_source (p, 1, "s3");
1140       orc_program_add_source (p, 1, "s4");
1141       orc_program_add_constant (p, 1, 0x000000ff, "c1");
1142       orc_program_add_temporary (p, 2, "t1");
1143       orc_program_add_temporary (p, 2, "t2");
1144       orc_program_add_temporary (p, 1, "t3");
1145       orc_program_add_temporary (p, 1, "t4");
1146
1147       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T3, ORC_VAR_S3,
1148           ORC_VAR_D1, ORC_VAR_D1);
1149       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T4, ORC_VAR_S4,
1150           ORC_VAR_D1, ORC_VAR_D1);
1151       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4,
1152           ORC_VAR_D1);
1153       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1,
1154           ORC_VAR_D1);
1155       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
1156           ORC_VAR_D1);
1157       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S2,
1158           ORC_VAR_D1);
1159       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_T1,
1160           ORC_VAR_D1);
1161 #endif
1162
1163       orc_program_compile (p);
1164       c = orc_program_take_code (p);
1165       orc_program_free (p);
1166     }
1167     p_inited = TRUE;
1168     orc_once_mutex_unlock ();
1169   }
1170   ex->arrays[ORC_VAR_A2] = c;
1171   ex->program = 0;
1172
1173   ex->n = n;
1174   ex->arrays[ORC_VAR_D1] = d1;
1175   ex->arrays[ORC_VAR_D2] = d2;
1176   ex->arrays[ORC_VAR_S1] = (void *) s1;
1177   ex->arrays[ORC_VAR_S2] = (void *) s2;
1178   ex->arrays[ORC_VAR_S3] = (void *) s3;
1179   ex->arrays[ORC_VAR_S4] = (void *) s4;
1180
1181   func = c->exec;
1182   func (ex);
1183 }
1184 #endif
1185
1186
1187 /* video_convert_orc_convert_YUY2_I420 */
1188 #ifdef DISABLE_ORC
1189 void
1190 video_convert_orc_convert_YUY2_I420 (guint8 * ORC_RESTRICT d1,
1191     guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
1192     guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1,
1193     const guint8 * ORC_RESTRICT s2, int n)
1194 {
1195   int i;
1196   orc_union16 *ORC_RESTRICT ptr0;
1197   orc_union16 *ORC_RESTRICT ptr1;
1198   orc_int8 *ORC_RESTRICT ptr2;
1199   orc_int8 *ORC_RESTRICT ptr3;
1200   const orc_union32 *ORC_RESTRICT ptr4;
1201   const orc_union32 *ORC_RESTRICT ptr5;
1202   orc_union32 var35;
1203   orc_union32 var36;
1204   orc_int8 var37;
1205   orc_int8 var38;
1206   orc_union16 var39;
1207   orc_union16 var40;
1208   orc_union16 var41;
1209   orc_union16 var42;
1210   orc_union16 var43;
1211
1212   ptr0 = (orc_union16 *) d1;
1213   ptr1 = (orc_union16 *) d2;
1214   ptr2 = (orc_int8 *) d3;
1215   ptr3 = (orc_int8 *) d4;
1216   ptr4 = (orc_union32 *) s1;
1217   ptr5 = (orc_union32 *) s2;
1218
1219
1220   for (i = 0; i < n; i++) {
1221     /* 0: loadl */
1222     var35 = ptr4[i];
1223     /* 1: splitwb */
1224     {
1225       orc_union16 _src;
1226       _src.i = var35.x2[0];
1227       var39.x2[0] = _src.x2[1];
1228       var40.x2[0] = _src.x2[0];
1229     }
1230     {
1231       orc_union16 _src;
1232       _src.i = var35.x2[1];
1233       var39.x2[1] = _src.x2[1];
1234       var40.x2[1] = _src.x2[0];
1235     }
1236     /* 2: storew */
1237     ptr0[i] = var40;
1238     /* 3: loadl */
1239     var36 = ptr5[i];
1240     /* 4: splitwb */
1241     {
1242       orc_union16 _src;
1243       _src.i = var36.x2[0];
1244       var41.x2[0] = _src.x2[1];
1245       var42.x2[0] = _src.x2[0];
1246     }
1247     {
1248       orc_union16 _src;
1249       _src.i = var36.x2[1];
1250       var41.x2[1] = _src.x2[1];
1251       var42.x2[1] = _src.x2[0];
1252     }
1253     /* 5: storew */
1254     ptr1[i] = var42;
1255     /* 6: avgub */
1256     var43.x2[0] = ((orc_uint8) var39.x2[0] + (orc_uint8) var41.x2[0] + 1) >> 1;
1257     var43.x2[1] = ((orc_uint8) var39.x2[1] + (orc_uint8) var41.x2[1] + 1) >> 1;
1258     /* 7: splitwb */
1259     {
1260       orc_union16 _src;
1261       _src.i = var43.i;
1262       var37 = _src.x2[1];
1263       var38 = _src.x2[0];
1264     }
1265     /* 8: storeb */
1266     ptr3[i] = var37;
1267     /* 9: storeb */
1268     ptr2[i] = var38;
1269   }
1270
1271 }
1272
1273 #else
1274 static void
1275 _backup_video_convert_orc_convert_YUY2_I420 (OrcExecutor * ORC_RESTRICT ex)
1276 {
1277   int i;
1278   int n = ex->n;
1279   orc_union16 *ORC_RESTRICT ptr0;
1280   orc_union16 *ORC_RESTRICT ptr1;
1281   orc_int8 *ORC_RESTRICT ptr2;
1282   orc_int8 *ORC_RESTRICT ptr3;
1283   const orc_union32 *ORC_RESTRICT ptr4;
1284   const orc_union32 *ORC_RESTRICT ptr5;
1285   orc_union32 var35;
1286   orc_union32 var36;
1287   orc_int8 var37;
1288   orc_int8 var38;
1289   orc_union16 var39;
1290   orc_union16 var40;
1291   orc_union16 var41;
1292   orc_union16 var42;
1293   orc_union16 var43;
1294
1295   ptr0 = (orc_union16 *) ex->arrays[0];
1296   ptr1 = (orc_union16 *) ex->arrays[1];
1297   ptr2 = (orc_int8 *) ex->arrays[2];
1298   ptr3 = (orc_int8 *) ex->arrays[3];
1299   ptr4 = (orc_union32 *) ex->arrays[4];
1300   ptr5 = (orc_union32 *) ex->arrays[5];
1301
1302
1303   for (i = 0; i < n; i++) {
1304     /* 0: loadl */
1305     var35 = ptr4[i];
1306     /* 1: splitwb */
1307     {
1308       orc_union16 _src;
1309       _src.i = var35.x2[0];
1310       var39.x2[0] = _src.x2[1];
1311       var40.x2[0] = _src.x2[0];
1312     }
1313     {
1314       orc_union16 _src;
1315       _src.i = var35.x2[1];
1316       var39.x2[1] = _src.x2[1];
1317       var40.x2[1] = _src.x2[0];
1318     }
1319     /* 2: storew */
1320     ptr0[i] = var40;
1321     /* 3: loadl */
1322     var36 = ptr5[i];
1323     /* 4: splitwb */
1324     {
1325       orc_union16 _src;
1326       _src.i = var36.x2[0];
1327       var41.x2[0] = _src.x2[1];
1328       var42.x2[0] = _src.x2[0];
1329     }
1330     {
1331       orc_union16 _src;
1332       _src.i = var36.x2[1];
1333       var41.x2[1] = _src.x2[1];
1334       var42.x2[1] = _src.x2[0];
1335     }
1336     /* 5: storew */
1337     ptr1[i] = var42;
1338     /* 6: avgub */
1339     var43.x2[0] = ((orc_uint8) var39.x2[0] + (orc_uint8) var41.x2[0] + 1) >> 1;
1340     var43.x2[1] = ((orc_uint8) var39.x2[1] + (orc_uint8) var41.x2[1] + 1) >> 1;
1341     /* 7: splitwb */
1342     {
1343       orc_union16 _src;
1344       _src.i = var43.i;
1345       var37 = _src.x2[1];
1346       var38 = _src.x2[0];
1347     }
1348     /* 8: storeb */
1349     ptr3[i] = var37;
1350     /* 9: storeb */
1351     ptr2[i] = var38;
1352   }
1353
1354 }
1355
1356 void
1357 video_convert_orc_convert_YUY2_I420 (guint8 * ORC_RESTRICT d1,
1358     guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
1359     guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1,
1360     const guint8 * ORC_RESTRICT s2, int n)
1361 {
1362   OrcExecutor _ex, *ex = &_ex;
1363   static volatile int p_inited = 0;
1364   static OrcCode *c = 0;
1365   void (*func) (OrcExecutor *);
1366
1367   if (!p_inited) {
1368     orc_once_mutex_lock ();
1369     if (!p_inited) {
1370       OrcProgram *p;
1371
1372 #if 1
1373       static const orc_uint8 bc[] = {
1374         1, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
1375         95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 89, 85, 89,
1376         50, 95, 73, 52, 50, 48, 11, 2, 2, 11, 2, 2, 11, 1, 1, 11,
1377         1, 1, 12, 4, 4, 12, 4, 4, 20, 2, 20, 2, 20, 2, 21, 1,
1378         199, 32, 34, 4, 97, 0, 34, 21, 1, 199, 33, 34, 5, 97, 1, 34,
1379         21, 1, 39, 32, 32, 33, 199, 3, 2, 32, 2, 0,
1380       };
1381       p = orc_program_new_from_static_bytecode (bc);
1382       orc_program_set_backup_function (p,
1383           _backup_video_convert_orc_convert_YUY2_I420);
1384 #else
1385       p = orc_program_new ();
1386       orc_program_set_name (p, "video_convert_orc_convert_YUY2_I420");
1387       orc_program_set_backup_function (p,
1388           _backup_video_convert_orc_convert_YUY2_I420);
1389       orc_program_add_destination (p, 2, "d1");
1390       orc_program_add_destination (p, 2, "d2");
1391       orc_program_add_destination (p, 1, "d3");
1392       orc_program_add_destination (p, 1, "d4");
1393       orc_program_add_source (p, 4, "s1");
1394       orc_program_add_source (p, 4, "s2");
1395       orc_program_add_temporary (p, 2, "t1");
1396       orc_program_add_temporary (p, 2, "t2");
1397       orc_program_add_temporary (p, 2, "t3");
1398
1399       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_S1,
1400           ORC_VAR_D1);
1401       orc_program_append_2 (p, "storew", 0, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_D1,
1402           ORC_VAR_D1);
1403       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_S2,
1404           ORC_VAR_D1);
1405       orc_program_append_2 (p, "storew", 0, ORC_VAR_D2, ORC_VAR_T3, ORC_VAR_D1,
1406           ORC_VAR_D1);
1407       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
1408           ORC_VAR_D1);
1409       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D4, ORC_VAR_D3, ORC_VAR_T1,
1410           ORC_VAR_D1);
1411 #endif
1412
1413       orc_program_compile (p);
1414       c = orc_program_take_code (p);
1415       orc_program_free (p);
1416     }
1417     p_inited = TRUE;
1418     orc_once_mutex_unlock ();
1419   }
1420   ex->arrays[ORC_VAR_A2] = c;
1421   ex->program = 0;
1422
1423   ex->n = n;
1424   ex->arrays[ORC_VAR_D1] = d1;
1425   ex->arrays[ORC_VAR_D2] = d2;
1426   ex->arrays[ORC_VAR_D3] = d3;
1427   ex->arrays[ORC_VAR_D4] = d4;
1428   ex->arrays[ORC_VAR_S1] = (void *) s1;
1429   ex->arrays[ORC_VAR_S2] = (void *) s2;
1430
1431   func = c->exec;
1432   func (ex);
1433 }
1434 #endif
1435
1436
1437 /* video_convert_orc_convert_UYVY_YUY2 */
1438 #ifdef DISABLE_ORC
1439 void
1440 video_convert_orc_convert_UYVY_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
1441     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
1442 {
1443   int i;
1444   int j;
1445   orc_union32 *ORC_RESTRICT ptr0;
1446   const orc_union32 *ORC_RESTRICT ptr4;
1447   orc_union32 var32;
1448   orc_union32 var33;
1449
1450   for (j = 0; j < m; j++) {
1451     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
1452     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
1453
1454
1455     for (i = 0; i < n; i++) {
1456       /* 0: loadl */
1457       var32 = ptr4[i];
1458       /* 1: swapw */
1459       var33.x2[0] = ORC_SWAP_W (var32.x2[0]);
1460       var33.x2[1] = ORC_SWAP_W (var32.x2[1]);
1461       /* 2: storel */
1462       ptr0[i] = var33;
1463     }
1464   }
1465
1466 }
1467
1468 #else
1469 static void
1470 _backup_video_convert_orc_convert_UYVY_YUY2 (OrcExecutor * ORC_RESTRICT ex)
1471 {
1472   int i;
1473   int j;
1474   int n = ex->n;
1475   int m = ex->params[ORC_VAR_A1];
1476   orc_union32 *ORC_RESTRICT ptr0;
1477   const orc_union32 *ORC_RESTRICT ptr4;
1478   orc_union32 var32;
1479   orc_union32 var33;
1480
1481   for (j = 0; j < m; j++) {
1482     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
1483     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
1484
1485
1486     for (i = 0; i < n; i++) {
1487       /* 0: loadl */
1488       var32 = ptr4[i];
1489       /* 1: swapw */
1490       var33.x2[0] = ORC_SWAP_W (var32.x2[0]);
1491       var33.x2[1] = ORC_SWAP_W (var32.x2[1]);
1492       /* 2: storel */
1493       ptr0[i] = var33;
1494     }
1495   }
1496
1497 }
1498
1499 void
1500 video_convert_orc_convert_UYVY_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
1501     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
1502 {
1503   OrcExecutor _ex, *ex = &_ex;
1504   static volatile int p_inited = 0;
1505   static OrcCode *c = 0;
1506   void (*func) (OrcExecutor *);
1507
1508   if (!p_inited) {
1509     orc_once_mutex_lock ();
1510     if (!p_inited) {
1511       OrcProgram *p;
1512
1513 #if 1
1514       static const orc_uint8 bc[] = {
1515         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
1516         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 85, 89,
1517         86, 89, 95, 89, 85, 89, 50, 11, 4, 4, 12, 4, 4, 21, 1, 183,
1518         0, 4, 2, 0,
1519       };
1520       p = orc_program_new_from_static_bytecode (bc);
1521       orc_program_set_backup_function (p,
1522           _backup_video_convert_orc_convert_UYVY_YUY2);
1523 #else
1524       p = orc_program_new ();
1525       orc_program_set_2d (p);
1526       orc_program_set_name (p, "video_convert_orc_convert_UYVY_YUY2");
1527       orc_program_set_backup_function (p,
1528           _backup_video_convert_orc_convert_UYVY_YUY2);
1529       orc_program_add_destination (p, 4, "d1");
1530       orc_program_add_source (p, 4, "s1");
1531
1532       orc_program_append_2 (p, "swapw", 1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1,
1533           ORC_VAR_D1);
1534 #endif
1535
1536       orc_program_compile (p);
1537       c = orc_program_take_code (p);
1538       orc_program_free (p);
1539     }
1540     p_inited = TRUE;
1541     orc_once_mutex_unlock ();
1542   }
1543   ex->arrays[ORC_VAR_A2] = c;
1544   ex->program = 0;
1545
1546   ex->n = n;
1547   ORC_EXECUTOR_M (ex) = m;
1548   ex->arrays[ORC_VAR_D1] = d1;
1549   ex->params[ORC_VAR_D1] = d1_stride;
1550   ex->arrays[ORC_VAR_S1] = (void *) s1;
1551   ex->params[ORC_VAR_S1] = s1_stride;
1552
1553   func = c->exec;
1554   func (ex);
1555 }
1556 #endif
1557
1558
1559 /* video_convert_orc_planar_chroma_420_422 */
1560 #ifdef DISABLE_ORC
1561 void
1562 video_convert_orc_planar_chroma_420_422 (guint8 * ORC_RESTRICT d1,
1563     int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride,
1564     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
1565 {
1566   int i;
1567   int j;
1568   orc_int8 *ORC_RESTRICT ptr0;
1569   orc_int8 *ORC_RESTRICT ptr1;
1570   const orc_int8 *ORC_RESTRICT ptr4;
1571   orc_int8 var32;
1572   orc_int8 var33;
1573   orc_int8 var34;
1574   orc_int8 var35;
1575
1576   for (j = 0; j < m; j++) {
1577     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
1578     ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
1579     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
1580
1581
1582     for (i = 0; i < n; i++) {
1583       /* 0: loadb */
1584       var32 = ptr4[i];
1585       /* 1: copyb */
1586       var33 = var32;
1587       /* 2: storeb */
1588       ptr0[i] = var33;
1589       /* 3: loadb */
1590       var34 = ptr4[i];
1591       /* 4: copyb */
1592       var35 = var34;
1593       /* 5: storeb */
1594       ptr1[i] = var35;
1595     }
1596   }
1597
1598 }
1599
1600 #else
1601 static void
1602 _backup_video_convert_orc_planar_chroma_420_422 (OrcExecutor * ORC_RESTRICT ex)
1603 {
1604   int i;
1605   int j;
1606   int n = ex->n;
1607   int m = ex->params[ORC_VAR_A1];
1608   orc_int8 *ORC_RESTRICT ptr0;
1609   orc_int8 *ORC_RESTRICT ptr1;
1610   const orc_int8 *ORC_RESTRICT ptr4;
1611   orc_int8 var32;
1612   orc_int8 var33;
1613   orc_int8 var34;
1614   orc_int8 var35;
1615
1616   for (j = 0; j < m; j++) {
1617     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
1618     ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
1619     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
1620
1621
1622     for (i = 0; i < n; i++) {
1623       /* 0: loadb */
1624       var32 = ptr4[i];
1625       /* 1: copyb */
1626       var33 = var32;
1627       /* 2: storeb */
1628       ptr0[i] = var33;
1629       /* 3: loadb */
1630       var34 = ptr4[i];
1631       /* 4: copyb */
1632       var35 = var34;
1633       /* 5: storeb */
1634       ptr1[i] = var35;
1635     }
1636   }
1637
1638 }
1639
1640 void
1641 video_convert_orc_planar_chroma_420_422 (guint8 * ORC_RESTRICT d1,
1642     int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride,
1643     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
1644 {
1645   OrcExecutor _ex, *ex = &_ex;
1646   static volatile int p_inited = 0;
1647   static OrcCode *c = 0;
1648   void (*func) (OrcExecutor *);
1649
1650   if (!p_inited) {
1651     orc_once_mutex_lock ();
1652     if (!p_inited) {
1653       OrcProgram *p;
1654
1655 #if 1
1656       static const orc_uint8 bc[] = {
1657         1, 7, 9, 39, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
1658         116, 95, 111, 114, 99, 95, 112, 108, 97, 110, 97, 114, 95, 99, 104, 114,
1659         111, 109, 97, 95, 52, 50, 48, 95, 52, 50, 50, 11, 1, 1, 11, 1,
1660         1, 12, 1, 1, 42, 0, 4, 42, 1, 4, 2, 0,
1661       };
1662       p = orc_program_new_from_static_bytecode (bc);
1663       orc_program_set_backup_function (p,
1664           _backup_video_convert_orc_planar_chroma_420_422);
1665 #else
1666       p = orc_program_new ();
1667       orc_program_set_2d (p);
1668       orc_program_set_name (p, "video_convert_orc_planar_chroma_420_422");
1669       orc_program_set_backup_function (p,
1670           _backup_video_convert_orc_planar_chroma_420_422);
1671       orc_program_add_destination (p, 1, "d1");
1672       orc_program_add_destination (p, 1, "d2");
1673       orc_program_add_source (p, 1, "s1");
1674
1675       orc_program_append_2 (p, "copyb", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1,
1676           ORC_VAR_D1);
1677       orc_program_append_2 (p, "copyb", 0, ORC_VAR_D2, ORC_VAR_S1, ORC_VAR_D1,
1678           ORC_VAR_D1);
1679 #endif
1680
1681       orc_program_compile (p);
1682       c = orc_program_take_code (p);
1683       orc_program_free (p);
1684     }
1685     p_inited = TRUE;
1686     orc_once_mutex_unlock ();
1687   }
1688   ex->arrays[ORC_VAR_A2] = c;
1689   ex->program = 0;
1690
1691   ex->n = n;
1692   ORC_EXECUTOR_M (ex) = m;
1693   ex->arrays[ORC_VAR_D1] = d1;
1694   ex->params[ORC_VAR_D1] = d1_stride;
1695   ex->arrays[ORC_VAR_D2] = d2;
1696   ex->params[ORC_VAR_D2] = d2_stride;
1697   ex->arrays[ORC_VAR_S1] = (void *) s1;
1698   ex->params[ORC_VAR_S1] = s1_stride;
1699
1700   func = c->exec;
1701   func (ex);
1702 }
1703 #endif
1704
1705
1706 /* video_convert_orc_planar_chroma_420_444 */
1707 #ifdef DISABLE_ORC
1708 void
1709 video_convert_orc_planar_chroma_420_444 (guint8 * ORC_RESTRICT d1,
1710     int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride,
1711     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
1712 {
1713   int i;
1714   int j;
1715   orc_union16 *ORC_RESTRICT ptr0;
1716   orc_union16 *ORC_RESTRICT ptr1;
1717   const orc_int8 *ORC_RESTRICT ptr4;
1718   orc_int8 var33;
1719   orc_union16 var34;
1720
1721   for (j = 0; j < m; j++) {
1722     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
1723     ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
1724     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
1725
1726
1727     for (i = 0; i < n; i++) {
1728       /* 0: loadb */
1729       var33 = ptr4[i];
1730       /* 1: splatbw */
1731       var34.i = ((var33 & 0xff) << 8) | (var33 & 0xff);
1732       /* 2: storew */
1733       ptr0[i] = var34;
1734       /* 3: storew */
1735       ptr1[i] = var34;
1736     }
1737   }
1738
1739 }
1740
1741 #else
1742 static void
1743 _backup_video_convert_orc_planar_chroma_420_444 (OrcExecutor * ORC_RESTRICT ex)
1744 {
1745   int i;
1746   int j;
1747   int n = ex->n;
1748   int m = ex->params[ORC_VAR_A1];
1749   orc_union16 *ORC_RESTRICT ptr0;
1750   orc_union16 *ORC_RESTRICT ptr1;
1751   const orc_int8 *ORC_RESTRICT ptr4;
1752   orc_int8 var33;
1753   orc_union16 var34;
1754
1755   for (j = 0; j < m; j++) {
1756     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
1757     ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
1758     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
1759
1760
1761     for (i = 0; i < n; i++) {
1762       /* 0: loadb */
1763       var33 = ptr4[i];
1764       /* 1: splatbw */
1765       var34.i = ((var33 & 0xff) << 8) | (var33 & 0xff);
1766       /* 2: storew */
1767       ptr0[i] = var34;
1768       /* 3: storew */
1769       ptr1[i] = var34;
1770     }
1771   }
1772
1773 }
1774
1775 void
1776 video_convert_orc_planar_chroma_420_444 (guint8 * ORC_RESTRICT d1,
1777     int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride,
1778     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
1779 {
1780   OrcExecutor _ex, *ex = &_ex;
1781   static volatile int p_inited = 0;
1782   static OrcCode *c = 0;
1783   void (*func) (OrcExecutor *);
1784
1785   if (!p_inited) {
1786     orc_once_mutex_lock ();
1787     if (!p_inited) {
1788       OrcProgram *p;
1789
1790 #if 1
1791       static const orc_uint8 bc[] = {
1792         1, 7, 9, 39, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
1793         116, 95, 111, 114, 99, 95, 112, 108, 97, 110, 97, 114, 95, 99, 104, 114,
1794         111, 109, 97, 95, 52, 50, 48, 95, 52, 52, 52, 11, 2, 2, 11, 2,
1795         2, 12, 1, 1, 20, 2, 151, 32, 4, 97, 0, 32, 97, 1, 32, 2,
1796         0,
1797       };
1798       p = orc_program_new_from_static_bytecode (bc);
1799       orc_program_set_backup_function (p,
1800           _backup_video_convert_orc_planar_chroma_420_444);
1801 #else
1802       p = orc_program_new ();
1803       orc_program_set_2d (p);
1804       orc_program_set_name (p, "video_convert_orc_planar_chroma_420_444");
1805       orc_program_set_backup_function (p,
1806           _backup_video_convert_orc_planar_chroma_420_444);
1807       orc_program_add_destination (p, 2, "d1");
1808       orc_program_add_destination (p, 2, "d2");
1809       orc_program_add_source (p, 1, "s1");
1810       orc_program_add_temporary (p, 2, "t1");
1811
1812       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
1813           ORC_VAR_D1);
1814       orc_program_append_2 (p, "storew", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
1815           ORC_VAR_D1);
1816       orc_program_append_2 (p, "storew", 0, ORC_VAR_D2, ORC_VAR_T1, ORC_VAR_D1,
1817           ORC_VAR_D1);
1818 #endif
1819
1820       orc_program_compile (p);
1821       c = orc_program_take_code (p);
1822       orc_program_free (p);
1823     }
1824     p_inited = TRUE;
1825     orc_once_mutex_unlock ();
1826   }
1827   ex->arrays[ORC_VAR_A2] = c;
1828   ex->program = 0;
1829
1830   ex->n = n;
1831   ORC_EXECUTOR_M (ex) = m;
1832   ex->arrays[ORC_VAR_D1] = d1;
1833   ex->params[ORC_VAR_D1] = d1_stride;
1834   ex->arrays[ORC_VAR_D2] = d2;
1835   ex->params[ORC_VAR_D2] = d2_stride;
1836   ex->arrays[ORC_VAR_S1] = (void *) s1;
1837   ex->params[ORC_VAR_S1] = s1_stride;
1838
1839   func = c->exec;
1840   func (ex);
1841 }
1842 #endif
1843
1844
1845 /* video_convert_orc_planar_chroma_422_444 */
1846 #ifdef DISABLE_ORC
1847 void
1848 video_convert_orc_planar_chroma_422_444 (guint8 * ORC_RESTRICT d1,
1849     int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
1850 {
1851   int i;
1852   int j;
1853   orc_union16 *ORC_RESTRICT ptr0;
1854   const orc_int8 *ORC_RESTRICT ptr4;
1855   orc_int8 var33;
1856   orc_union16 var34;
1857
1858   for (j = 0; j < m; j++) {
1859     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
1860     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
1861
1862
1863     for (i = 0; i < n; i++) {
1864       /* 0: loadb */
1865       var33 = ptr4[i];
1866       /* 1: splatbw */
1867       var34.i = ((var33 & 0xff) << 8) | (var33 & 0xff);
1868       /* 2: storew */
1869       ptr0[i] = var34;
1870     }
1871   }
1872
1873 }
1874
1875 #else
1876 static void
1877 _backup_video_convert_orc_planar_chroma_422_444 (OrcExecutor * ORC_RESTRICT ex)
1878 {
1879   int i;
1880   int j;
1881   int n = ex->n;
1882   int m = ex->params[ORC_VAR_A1];
1883   orc_union16 *ORC_RESTRICT ptr0;
1884   const orc_int8 *ORC_RESTRICT ptr4;
1885   orc_int8 var33;
1886   orc_union16 var34;
1887
1888   for (j = 0; j < m; j++) {
1889     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
1890     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
1891
1892
1893     for (i = 0; i < n; i++) {
1894       /* 0: loadb */
1895       var33 = ptr4[i];
1896       /* 1: splatbw */
1897       var34.i = ((var33 & 0xff) << 8) | (var33 & 0xff);
1898       /* 2: storew */
1899       ptr0[i] = var34;
1900     }
1901   }
1902
1903 }
1904
1905 void
1906 video_convert_orc_planar_chroma_422_444 (guint8 * ORC_RESTRICT d1,
1907     int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
1908 {
1909   OrcExecutor _ex, *ex = &_ex;
1910   static volatile int p_inited = 0;
1911   static OrcCode *c = 0;
1912   void (*func) (OrcExecutor *);
1913
1914   if (!p_inited) {
1915     orc_once_mutex_lock ();
1916     if (!p_inited) {
1917       OrcProgram *p;
1918
1919 #if 1
1920       static const orc_uint8 bc[] = {
1921         1, 7, 9, 39, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
1922         116, 95, 111, 114, 99, 95, 112, 108, 97, 110, 97, 114, 95, 99, 104, 114,
1923         111, 109, 97, 95, 52, 50, 50, 95, 52, 52, 52, 11, 2, 2, 12, 1,
1924         1, 20, 2, 151, 32, 4, 97, 0, 32, 2, 0,
1925       };
1926       p = orc_program_new_from_static_bytecode (bc);
1927       orc_program_set_backup_function (p,
1928           _backup_video_convert_orc_planar_chroma_422_444);
1929 #else
1930       p = orc_program_new ();
1931       orc_program_set_2d (p);
1932       orc_program_set_name (p, "video_convert_orc_planar_chroma_422_444");
1933       orc_program_set_backup_function (p,
1934           _backup_video_convert_orc_planar_chroma_422_444);
1935       orc_program_add_destination (p, 2, "d1");
1936       orc_program_add_source (p, 1, "s1");
1937       orc_program_add_temporary (p, 2, "t1");
1938
1939       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
1940           ORC_VAR_D1);
1941       orc_program_append_2 (p, "storew", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
1942           ORC_VAR_D1);
1943 #endif
1944
1945       orc_program_compile (p);
1946       c = orc_program_take_code (p);
1947       orc_program_free (p);
1948     }
1949     p_inited = TRUE;
1950     orc_once_mutex_unlock ();
1951   }
1952   ex->arrays[ORC_VAR_A2] = c;
1953   ex->program = 0;
1954
1955   ex->n = n;
1956   ORC_EXECUTOR_M (ex) = m;
1957   ex->arrays[ORC_VAR_D1] = d1;
1958   ex->params[ORC_VAR_D1] = d1_stride;
1959   ex->arrays[ORC_VAR_S1] = (void *) s1;
1960   ex->params[ORC_VAR_S1] = s1_stride;
1961
1962   func = c->exec;
1963   func (ex);
1964 }
1965 #endif
1966
1967
1968 /* video_convert_orc_planar_chroma_444_422 */
1969 #ifdef DISABLE_ORC
1970 void
1971 video_convert_orc_planar_chroma_444_422 (guint8 * ORC_RESTRICT d1,
1972     int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
1973 {
1974   int i;
1975   int j;
1976   orc_int8 *ORC_RESTRICT ptr0;
1977   const orc_union16 *ORC_RESTRICT ptr4;
1978   orc_union16 var34;
1979   orc_int8 var35;
1980   orc_int8 var36;
1981   orc_int8 var37;
1982
1983   for (j = 0; j < m; j++) {
1984     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
1985     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
1986
1987
1988     for (i = 0; i < n; i++) {
1989       /* 0: loadw */
1990       var34 = ptr4[i];
1991       /* 1: splitwb */
1992       {
1993         orc_union16 _src;
1994         _src.i = var34.i;
1995         var36 = _src.x2[1];
1996         var37 = _src.x2[0];
1997       }
1998       /* 2: avgub */
1999       var35 = ((orc_uint8) var36 + (orc_uint8) var37 + 1) >> 1;
2000       /* 3: storeb */
2001       ptr0[i] = var35;
2002     }
2003   }
2004
2005 }
2006
2007 #else
2008 static void
2009 _backup_video_convert_orc_planar_chroma_444_422 (OrcExecutor * ORC_RESTRICT ex)
2010 {
2011   int i;
2012   int j;
2013   int n = ex->n;
2014   int m = ex->params[ORC_VAR_A1];
2015   orc_int8 *ORC_RESTRICT ptr0;
2016   const orc_union16 *ORC_RESTRICT ptr4;
2017   orc_union16 var34;
2018   orc_int8 var35;
2019   orc_int8 var36;
2020   orc_int8 var37;
2021
2022   for (j = 0; j < m; j++) {
2023     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
2024     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
2025
2026
2027     for (i = 0; i < n; i++) {
2028       /* 0: loadw */
2029       var34 = ptr4[i];
2030       /* 1: splitwb */
2031       {
2032         orc_union16 _src;
2033         _src.i = var34.i;
2034         var36 = _src.x2[1];
2035         var37 = _src.x2[0];
2036       }
2037       /* 2: avgub */
2038       var35 = ((orc_uint8) var36 + (orc_uint8) var37 + 1) >> 1;
2039       /* 3: storeb */
2040       ptr0[i] = var35;
2041     }
2042   }
2043
2044 }
2045
2046 void
2047 video_convert_orc_planar_chroma_444_422 (guint8 * ORC_RESTRICT d1,
2048     int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
2049 {
2050   OrcExecutor _ex, *ex = &_ex;
2051   static volatile int p_inited = 0;
2052   static OrcCode *c = 0;
2053   void (*func) (OrcExecutor *);
2054
2055   if (!p_inited) {
2056     orc_once_mutex_lock ();
2057     if (!p_inited) {
2058       OrcProgram *p;
2059
2060 #if 1
2061       static const orc_uint8 bc[] = {
2062         1, 7, 9, 39, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
2063         116, 95, 111, 114, 99, 95, 112, 108, 97, 110, 97, 114, 95, 99, 104, 114,
2064         111, 109, 97, 95, 52, 52, 52, 95, 52, 50, 50, 11, 1, 1, 12, 2,
2065         2, 20, 1, 20, 1, 199, 32, 33, 4, 39, 0, 32, 33, 2, 0,
2066       };
2067       p = orc_program_new_from_static_bytecode (bc);
2068       orc_program_set_backup_function (p,
2069           _backup_video_convert_orc_planar_chroma_444_422);
2070 #else
2071       p = orc_program_new ();
2072       orc_program_set_2d (p);
2073       orc_program_set_name (p, "video_convert_orc_planar_chroma_444_422");
2074       orc_program_set_backup_function (p,
2075           _backup_video_convert_orc_planar_chroma_444_422);
2076       orc_program_add_destination (p, 1, "d1");
2077       orc_program_add_source (p, 2, "s1");
2078       orc_program_add_temporary (p, 1, "t1");
2079       orc_program_add_temporary (p, 1, "t2");
2080
2081       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1,
2082           ORC_VAR_D1);
2083       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
2084           ORC_VAR_D1);
2085 #endif
2086
2087       orc_program_compile (p);
2088       c = orc_program_take_code (p);
2089       orc_program_free (p);
2090     }
2091     p_inited = TRUE;
2092     orc_once_mutex_unlock ();
2093   }
2094   ex->arrays[ORC_VAR_A2] = c;
2095   ex->program = 0;
2096
2097   ex->n = n;
2098   ORC_EXECUTOR_M (ex) = m;
2099   ex->arrays[ORC_VAR_D1] = d1;
2100   ex->params[ORC_VAR_D1] = d1_stride;
2101   ex->arrays[ORC_VAR_S1] = (void *) s1;
2102   ex->params[ORC_VAR_S1] = s1_stride;
2103
2104   func = c->exec;
2105   func (ex);
2106 }
2107 #endif
2108
2109
2110 /* video_convert_orc_planar_chroma_444_420 */
2111 #ifdef DISABLE_ORC
2112 void
2113 video_convert_orc_planar_chroma_444_420 (guint8 * ORC_RESTRICT d1,
2114     int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride,
2115     const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m)
2116 {
2117   int i;
2118   int j;
2119   orc_int8 *ORC_RESTRICT ptr0;
2120   const orc_union16 *ORC_RESTRICT ptr4;
2121   const orc_union16 *ORC_RESTRICT ptr5;
2122   orc_union16 var35;
2123   orc_union16 var36;
2124   orc_int8 var37;
2125   orc_union16 var38;
2126   orc_int8 var39;
2127   orc_int8 var40;
2128
2129   for (j = 0; j < m; j++) {
2130     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
2131     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
2132     ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
2133
2134
2135     for (i = 0; i < n; i++) {
2136       /* 0: loadw */
2137       var35 = ptr4[i];
2138       /* 1: loadw */
2139       var36 = ptr5[i];
2140       /* 2: avgub */
2141       var38.x2[0] =
2142           ((orc_uint8) var35.x2[0] + (orc_uint8) var36.x2[0] + 1) >> 1;
2143       var38.x2[1] =
2144           ((orc_uint8) var35.x2[1] + (orc_uint8) var36.x2[1] + 1) >> 1;
2145       /* 3: splitwb */
2146       {
2147         orc_union16 _src;
2148         _src.i = var38.i;
2149         var39 = _src.x2[1];
2150         var40 = _src.x2[0];
2151       }
2152       /* 4: avgub */
2153       var37 = ((orc_uint8) var39 + (orc_uint8) var40 + 1) >> 1;
2154       /* 5: storeb */
2155       ptr0[i] = var37;
2156     }
2157   }
2158
2159 }
2160
2161 #else
2162 static void
2163 _backup_video_convert_orc_planar_chroma_444_420 (OrcExecutor * ORC_RESTRICT ex)
2164 {
2165   int i;
2166   int j;
2167   int n = ex->n;
2168   int m = ex->params[ORC_VAR_A1];
2169   orc_int8 *ORC_RESTRICT ptr0;
2170   const orc_union16 *ORC_RESTRICT ptr4;
2171   const orc_union16 *ORC_RESTRICT ptr5;
2172   orc_union16 var35;
2173   orc_union16 var36;
2174   orc_int8 var37;
2175   orc_union16 var38;
2176   orc_int8 var39;
2177   orc_int8 var40;
2178
2179   for (j = 0; j < m; j++) {
2180     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
2181     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
2182     ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
2183
2184
2185     for (i = 0; i < n; i++) {
2186       /* 0: loadw */
2187       var35 = ptr4[i];
2188       /* 1: loadw */
2189       var36 = ptr5[i];
2190       /* 2: avgub */
2191       var38.x2[0] =
2192           ((orc_uint8) var35.x2[0] + (orc_uint8) var36.x2[0] + 1) >> 1;
2193       var38.x2[1] =
2194           ((orc_uint8) var35.x2[1] + (orc_uint8) var36.x2[1] + 1) >> 1;
2195       /* 3: splitwb */
2196       {
2197         orc_union16 _src;
2198         _src.i = var38.i;
2199         var39 = _src.x2[1];
2200         var40 = _src.x2[0];
2201       }
2202       /* 4: avgub */
2203       var37 = ((orc_uint8) var39 + (orc_uint8) var40 + 1) >> 1;
2204       /* 5: storeb */
2205       ptr0[i] = var37;
2206     }
2207   }
2208
2209 }
2210
2211 void
2212 video_convert_orc_planar_chroma_444_420 (guint8 * ORC_RESTRICT d1,
2213     int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride,
2214     const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m)
2215 {
2216   OrcExecutor _ex, *ex = &_ex;
2217   static volatile int p_inited = 0;
2218   static OrcCode *c = 0;
2219   void (*func) (OrcExecutor *);
2220
2221   if (!p_inited) {
2222     orc_once_mutex_lock ();
2223     if (!p_inited) {
2224       OrcProgram *p;
2225
2226 #if 1
2227       static const orc_uint8 bc[] = {
2228         1, 7, 9, 39, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
2229         116, 95, 111, 114, 99, 95, 112, 108, 97, 110, 97, 114, 95, 99, 104, 114,
2230         111, 109, 97, 95, 52, 52, 52, 95, 52, 50, 48, 11, 1, 1, 12, 2,
2231         2, 12, 2, 2, 20, 2, 20, 1, 20, 1, 21, 1, 39, 32, 4, 5,
2232         199, 33, 34, 32, 39, 0, 33, 34, 2, 0,
2233       };
2234       p = orc_program_new_from_static_bytecode (bc);
2235       orc_program_set_backup_function (p,
2236           _backup_video_convert_orc_planar_chroma_444_420);
2237 #else
2238       p = orc_program_new ();
2239       orc_program_set_2d (p);
2240       orc_program_set_name (p, "video_convert_orc_planar_chroma_444_420");
2241       orc_program_set_backup_function (p,
2242           _backup_video_convert_orc_planar_chroma_444_420);
2243       orc_program_add_destination (p, 1, "d1");
2244       orc_program_add_source (p, 2, "s1");
2245       orc_program_add_source (p, 2, "s2");
2246       orc_program_add_temporary (p, 2, "t1");
2247       orc_program_add_temporary (p, 1, "t2");
2248       orc_program_add_temporary (p, 1, "t3");
2249
2250       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S2,
2251           ORC_VAR_D1);
2252       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T1,
2253           ORC_VAR_D1);
2254       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T3,
2255           ORC_VAR_D1);
2256 #endif
2257
2258       orc_program_compile (p);
2259       c = orc_program_take_code (p);
2260       orc_program_free (p);
2261     }
2262     p_inited = TRUE;
2263     orc_once_mutex_unlock ();
2264   }
2265   ex->arrays[ORC_VAR_A2] = c;
2266   ex->program = 0;
2267
2268   ex->n = n;
2269   ORC_EXECUTOR_M (ex) = m;
2270   ex->arrays[ORC_VAR_D1] = d1;
2271   ex->params[ORC_VAR_D1] = d1_stride;
2272   ex->arrays[ORC_VAR_S1] = (void *) s1;
2273   ex->params[ORC_VAR_S1] = s1_stride;
2274   ex->arrays[ORC_VAR_S2] = (void *) s2;
2275   ex->params[ORC_VAR_S2] = s2_stride;
2276
2277   func = c->exec;
2278   func (ex);
2279 }
2280 #endif
2281
2282
2283 /* video_convert_orc_planar_chroma_422_420 */
2284 #ifdef DISABLE_ORC
2285 void
2286 video_convert_orc_planar_chroma_422_420 (guint8 * ORC_RESTRICT d1,
2287     int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride,
2288     const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m)
2289 {
2290   int i;
2291   int j;
2292   orc_int8 *ORC_RESTRICT ptr0;
2293   const orc_int8 *ORC_RESTRICT ptr4;
2294   const orc_int8 *ORC_RESTRICT ptr5;
2295   orc_int8 var32;
2296   orc_int8 var33;
2297   orc_int8 var34;
2298
2299   for (j = 0; j < m; j++) {
2300     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
2301     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
2302     ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
2303
2304
2305     for (i = 0; i < n; i++) {
2306       /* 0: loadb */
2307       var32 = ptr4[i];
2308       /* 1: loadb */
2309       var33 = ptr5[i];
2310       /* 2: avgub */
2311       var34 = ((orc_uint8) var32 + (orc_uint8) var33 + 1) >> 1;
2312       /* 3: storeb */
2313       ptr0[i] = var34;
2314     }
2315   }
2316
2317 }
2318
2319 #else
2320 static void
2321 _backup_video_convert_orc_planar_chroma_422_420 (OrcExecutor * ORC_RESTRICT ex)
2322 {
2323   int i;
2324   int j;
2325   int n = ex->n;
2326   int m = ex->params[ORC_VAR_A1];
2327   orc_int8 *ORC_RESTRICT ptr0;
2328   const orc_int8 *ORC_RESTRICT ptr4;
2329   const orc_int8 *ORC_RESTRICT ptr5;
2330   orc_int8 var32;
2331   orc_int8 var33;
2332   orc_int8 var34;
2333
2334   for (j = 0; j < m; j++) {
2335     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
2336     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
2337     ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
2338
2339
2340     for (i = 0; i < n; i++) {
2341       /* 0: loadb */
2342       var32 = ptr4[i];
2343       /* 1: loadb */
2344       var33 = ptr5[i];
2345       /* 2: avgub */
2346       var34 = ((orc_uint8) var32 + (orc_uint8) var33 + 1) >> 1;
2347       /* 3: storeb */
2348       ptr0[i] = var34;
2349     }
2350   }
2351
2352 }
2353
2354 void
2355 video_convert_orc_planar_chroma_422_420 (guint8 * ORC_RESTRICT d1,
2356     int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride,
2357     const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m)
2358 {
2359   OrcExecutor _ex, *ex = &_ex;
2360   static volatile int p_inited = 0;
2361   static OrcCode *c = 0;
2362   void (*func) (OrcExecutor *);
2363
2364   if (!p_inited) {
2365     orc_once_mutex_lock ();
2366     if (!p_inited) {
2367       OrcProgram *p;
2368
2369 #if 1
2370       static const orc_uint8 bc[] = {
2371         1, 7, 9, 39, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
2372         116, 95, 111, 114, 99, 95, 112, 108, 97, 110, 97, 114, 95, 99, 104, 114,
2373         111, 109, 97, 95, 52, 50, 50, 95, 52, 50, 48, 11, 1, 1, 12, 1,
2374         1, 12, 1, 1, 39, 0, 4, 5, 2, 0,
2375       };
2376       p = orc_program_new_from_static_bytecode (bc);
2377       orc_program_set_backup_function (p,
2378           _backup_video_convert_orc_planar_chroma_422_420);
2379 #else
2380       p = orc_program_new ();
2381       orc_program_set_2d (p);
2382       orc_program_set_name (p, "video_convert_orc_planar_chroma_422_420");
2383       orc_program_set_backup_function (p,
2384           _backup_video_convert_orc_planar_chroma_422_420);
2385       orc_program_add_destination (p, 1, "d1");
2386       orc_program_add_source (p, 1, "s1");
2387       orc_program_add_source (p, 1, "s2");
2388
2389       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S2,
2390           ORC_VAR_D1);
2391 #endif
2392
2393       orc_program_compile (p);
2394       c = orc_program_take_code (p);
2395       orc_program_free (p);
2396     }
2397     p_inited = TRUE;
2398     orc_once_mutex_unlock ();
2399   }
2400   ex->arrays[ORC_VAR_A2] = c;
2401   ex->program = 0;
2402
2403   ex->n = n;
2404   ORC_EXECUTOR_M (ex) = m;
2405   ex->arrays[ORC_VAR_D1] = d1;
2406   ex->params[ORC_VAR_D1] = d1_stride;
2407   ex->arrays[ORC_VAR_S1] = (void *) s1;
2408   ex->params[ORC_VAR_S1] = s1_stride;
2409   ex->arrays[ORC_VAR_S2] = (void *) s2;
2410   ex->params[ORC_VAR_S2] = s2_stride;
2411
2412   func = c->exec;
2413   func (ex);
2414 }
2415 #endif
2416
2417
2418 /* video_convert_orc_convert_YUY2_AYUV */
2419 #ifdef DISABLE_ORC
2420 void
2421 video_convert_orc_convert_YUY2_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
2422     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
2423 {
2424   int i;
2425   int j;
2426   orc_union64 *ORC_RESTRICT ptr0;
2427   const orc_union32 *ORC_RESTRICT ptr4;
2428   orc_union32 var36;
2429 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
2430   volatile orc_union16 var37;
2431 #else
2432   orc_union16 var37;
2433 #endif
2434   orc_union64 var38;
2435   orc_union16 var39;
2436   orc_union16 var40;
2437   orc_union32 var41;
2438   orc_union32 var42;
2439
2440   for (j = 0; j < m; j++) {
2441     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
2442     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
2443
2444     /* 2: loadpb */
2445     var37.x2[0] = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
2446     var37.x2[1] = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
2447
2448     for (i = 0; i < n; i++) {
2449       /* 0: loadl */
2450       var36 = ptr4[i];
2451       /* 1: splitwb */
2452       {
2453         orc_union16 _src;
2454         _src.i = var36.x2[0];
2455         var39.x2[0] = _src.x2[1];
2456         var40.x2[0] = _src.x2[0];
2457       }
2458       {
2459         orc_union16 _src;
2460         _src.i = var36.x2[1];
2461         var39.x2[1] = _src.x2[1];
2462         var40.x2[1] = _src.x2[0];
2463       }
2464       /* 3: mergebw */
2465       {
2466         orc_union16 _dest;
2467         _dest.x2[0] = var37.x2[0];
2468         _dest.x2[1] = var40.x2[0];
2469         var41.x2[0] = _dest.i;
2470       }
2471       {
2472         orc_union16 _dest;
2473         _dest.x2[0] = var37.x2[1];
2474         _dest.x2[1] = var40.x2[1];
2475         var41.x2[1] = _dest.i;
2476       }
2477       /* 4: mergewl */
2478       {
2479         orc_union32 _dest;
2480         _dest.x2[0] = var39.i;
2481         _dest.x2[1] = var39.i;
2482         var42.i = _dest.i;
2483       }
2484       /* 5: mergewl */
2485       {
2486         orc_union32 _dest;
2487         _dest.x2[0] = var41.x2[0];
2488         _dest.x2[1] = var42.x2[0];
2489         var38.x2[0] = _dest.i;
2490       }
2491       {
2492         orc_union32 _dest;
2493         _dest.x2[0] = var41.x2[1];
2494         _dest.x2[1] = var42.x2[1];
2495         var38.x2[1] = _dest.i;
2496       }
2497       /* 6: storeq */
2498       ptr0[i] = var38;
2499     }
2500   }
2501
2502 }
2503
2504 #else
2505 static void
2506 _backup_video_convert_orc_convert_YUY2_AYUV (OrcExecutor * ORC_RESTRICT ex)
2507 {
2508   int i;
2509   int j;
2510   int n = ex->n;
2511   int m = ex->params[ORC_VAR_A1];
2512   orc_union64 *ORC_RESTRICT ptr0;
2513   const orc_union32 *ORC_RESTRICT ptr4;
2514   orc_union32 var36;
2515 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
2516   volatile orc_union16 var37;
2517 #else
2518   orc_union16 var37;
2519 #endif
2520   orc_union64 var38;
2521   orc_union16 var39;
2522   orc_union16 var40;
2523   orc_union32 var41;
2524   orc_union32 var42;
2525
2526   for (j = 0; j < m; j++) {
2527     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
2528     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
2529
2530     /* 2: loadpb */
2531     var37.x2[0] = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
2532     var37.x2[1] = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
2533
2534     for (i = 0; i < n; i++) {
2535       /* 0: loadl */
2536       var36 = ptr4[i];
2537       /* 1: splitwb */
2538       {
2539         orc_union16 _src;
2540         _src.i = var36.x2[0];
2541         var39.x2[0] = _src.x2[1];
2542         var40.x2[0] = _src.x2[0];
2543       }
2544       {
2545         orc_union16 _src;
2546         _src.i = var36.x2[1];
2547         var39.x2[1] = _src.x2[1];
2548         var40.x2[1] = _src.x2[0];
2549       }
2550       /* 3: mergebw */
2551       {
2552         orc_union16 _dest;
2553         _dest.x2[0] = var37.x2[0];
2554         _dest.x2[1] = var40.x2[0];
2555         var41.x2[0] = _dest.i;
2556       }
2557       {
2558         orc_union16 _dest;
2559         _dest.x2[0] = var37.x2[1];
2560         _dest.x2[1] = var40.x2[1];
2561         var41.x2[1] = _dest.i;
2562       }
2563       /* 4: mergewl */
2564       {
2565         orc_union32 _dest;
2566         _dest.x2[0] = var39.i;
2567         _dest.x2[1] = var39.i;
2568         var42.i = _dest.i;
2569       }
2570       /* 5: mergewl */
2571       {
2572         orc_union32 _dest;
2573         _dest.x2[0] = var41.x2[0];
2574         _dest.x2[1] = var42.x2[0];
2575         var38.x2[0] = _dest.i;
2576       }
2577       {
2578         orc_union32 _dest;
2579         _dest.x2[0] = var41.x2[1];
2580         _dest.x2[1] = var42.x2[1];
2581         var38.x2[1] = _dest.i;
2582       }
2583       /* 6: storeq */
2584       ptr0[i] = var38;
2585     }
2586   }
2587
2588 }
2589
2590 void
2591 video_convert_orc_convert_YUY2_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
2592     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
2593 {
2594   OrcExecutor _ex, *ex = &_ex;
2595   static volatile int p_inited = 0;
2596   static OrcCode *c = 0;
2597   void (*func) (OrcExecutor *);
2598
2599   if (!p_inited) {
2600     orc_once_mutex_lock ();
2601     if (!p_inited) {
2602       OrcProgram *p;
2603
2604 #if 1
2605       static const orc_uint8 bc[] = {
2606         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
2607         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 89, 85,
2608         89, 50, 95, 65, 89, 85, 86, 11, 8, 8, 12, 4, 4, 14, 2, 255,
2609         0, 0, 0, 20, 2, 20, 2, 20, 4, 20, 4, 21, 1, 199, 33, 32,
2610         4, 21, 1, 196, 34, 16, 32, 195, 35, 33, 33, 21, 1, 195, 0, 34,
2611         35, 2, 0,
2612       };
2613       p = orc_program_new_from_static_bytecode (bc);
2614       orc_program_set_backup_function (p,
2615           _backup_video_convert_orc_convert_YUY2_AYUV);
2616 #else
2617       p = orc_program_new ();
2618       orc_program_set_2d (p);
2619       orc_program_set_name (p, "video_convert_orc_convert_YUY2_AYUV");
2620       orc_program_set_backup_function (p,
2621           _backup_video_convert_orc_convert_YUY2_AYUV);
2622       orc_program_add_destination (p, 8, "d1");
2623       orc_program_add_source (p, 4, "s1");
2624       orc_program_add_constant (p, 2, 0x000000ff, "c1");
2625       orc_program_add_temporary (p, 2, "t1");
2626       orc_program_add_temporary (p, 2, "t2");
2627       orc_program_add_temporary (p, 4, "t3");
2628       orc_program_add_temporary (p, 4, "t4");
2629
2630       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
2631           ORC_VAR_D1);
2632       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1,
2633           ORC_VAR_D1);
2634       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2,
2635           ORC_VAR_D1);
2636       orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4,
2637           ORC_VAR_D1);
2638 #endif
2639
2640       orc_program_compile (p);
2641       c = orc_program_take_code (p);
2642       orc_program_free (p);
2643     }
2644     p_inited = TRUE;
2645     orc_once_mutex_unlock ();
2646   }
2647   ex->arrays[ORC_VAR_A2] = c;
2648   ex->program = 0;
2649
2650   ex->n = n;
2651   ORC_EXECUTOR_M (ex) = m;
2652   ex->arrays[ORC_VAR_D1] = d1;
2653   ex->params[ORC_VAR_D1] = d1_stride;
2654   ex->arrays[ORC_VAR_S1] = (void *) s1;
2655   ex->params[ORC_VAR_S1] = s1_stride;
2656
2657   func = c->exec;
2658   func (ex);
2659 }
2660 #endif
2661
2662
2663 /* video_convert_orc_convert_UYVY_AYUV */
2664 #ifdef DISABLE_ORC
2665 void
2666 video_convert_orc_convert_UYVY_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
2667     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
2668 {
2669   int i;
2670   int j;
2671   orc_union64 *ORC_RESTRICT ptr0;
2672   const orc_union32 *ORC_RESTRICT ptr4;
2673   orc_union32 var36;
2674 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
2675   volatile orc_union16 var37;
2676 #else
2677   orc_union16 var37;
2678 #endif
2679   orc_union64 var38;
2680   orc_union16 var39;
2681   orc_union16 var40;
2682   orc_union32 var41;
2683   orc_union32 var42;
2684
2685   for (j = 0; j < m; j++) {
2686     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
2687     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
2688
2689     /* 2: loadpb */
2690     var37.x2[0] = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
2691     var37.x2[1] = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
2692
2693     for (i = 0; i < n; i++) {
2694       /* 0: loadl */
2695       var36 = ptr4[i];
2696       /* 1: splitwb */
2697       {
2698         orc_union16 _src;
2699         _src.i = var36.x2[0];
2700         var39.x2[0] = _src.x2[1];
2701         var40.x2[0] = _src.x2[0];
2702       }
2703       {
2704         orc_union16 _src;
2705         _src.i = var36.x2[1];
2706         var39.x2[1] = _src.x2[1];
2707         var40.x2[1] = _src.x2[0];
2708       }
2709       /* 3: mergebw */
2710       {
2711         orc_union16 _dest;
2712         _dest.x2[0] = var37.x2[0];
2713         _dest.x2[1] = var39.x2[0];
2714         var41.x2[0] = _dest.i;
2715       }
2716       {
2717         orc_union16 _dest;
2718         _dest.x2[0] = var37.x2[1];
2719         _dest.x2[1] = var39.x2[1];
2720         var41.x2[1] = _dest.i;
2721       }
2722       /* 4: mergewl */
2723       {
2724         orc_union32 _dest;
2725         _dest.x2[0] = var40.i;
2726         _dest.x2[1] = var40.i;
2727         var42.i = _dest.i;
2728       }
2729       /* 5: mergewl */
2730       {
2731         orc_union32 _dest;
2732         _dest.x2[0] = var41.x2[0];
2733         _dest.x2[1] = var42.x2[0];
2734         var38.x2[0] = _dest.i;
2735       }
2736       {
2737         orc_union32 _dest;
2738         _dest.x2[0] = var41.x2[1];
2739         _dest.x2[1] = var42.x2[1];
2740         var38.x2[1] = _dest.i;
2741       }
2742       /* 6: storeq */
2743       ptr0[i] = var38;
2744     }
2745   }
2746
2747 }
2748
2749 #else
2750 static void
2751 _backup_video_convert_orc_convert_UYVY_AYUV (OrcExecutor * ORC_RESTRICT ex)
2752 {
2753   int i;
2754   int j;
2755   int n = ex->n;
2756   int m = ex->params[ORC_VAR_A1];
2757   orc_union64 *ORC_RESTRICT ptr0;
2758   const orc_union32 *ORC_RESTRICT ptr4;
2759   orc_union32 var36;
2760 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
2761   volatile orc_union16 var37;
2762 #else
2763   orc_union16 var37;
2764 #endif
2765   orc_union64 var38;
2766   orc_union16 var39;
2767   orc_union16 var40;
2768   orc_union32 var41;
2769   orc_union32 var42;
2770
2771   for (j = 0; j < m; j++) {
2772     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
2773     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
2774
2775     /* 2: loadpb */
2776     var37.x2[0] = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
2777     var37.x2[1] = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
2778
2779     for (i = 0; i < n; i++) {
2780       /* 0: loadl */
2781       var36 = ptr4[i];
2782       /* 1: splitwb */
2783       {
2784         orc_union16 _src;
2785         _src.i = var36.x2[0];
2786         var39.x2[0] = _src.x2[1];
2787         var40.x2[0] = _src.x2[0];
2788       }
2789       {
2790         orc_union16 _src;
2791         _src.i = var36.x2[1];
2792         var39.x2[1] = _src.x2[1];
2793         var40.x2[1] = _src.x2[0];
2794       }
2795       /* 3: mergebw */
2796       {
2797         orc_union16 _dest;
2798         _dest.x2[0] = var37.x2[0];
2799         _dest.x2[1] = var39.x2[0];
2800         var41.x2[0] = _dest.i;
2801       }
2802       {
2803         orc_union16 _dest;
2804         _dest.x2[0] = var37.x2[1];
2805         _dest.x2[1] = var39.x2[1];
2806         var41.x2[1] = _dest.i;
2807       }
2808       /* 4: mergewl */
2809       {
2810         orc_union32 _dest;
2811         _dest.x2[0] = var40.i;
2812         _dest.x2[1] = var40.i;
2813         var42.i = _dest.i;
2814       }
2815       /* 5: mergewl */
2816       {
2817         orc_union32 _dest;
2818         _dest.x2[0] = var41.x2[0];
2819         _dest.x2[1] = var42.x2[0];
2820         var38.x2[0] = _dest.i;
2821       }
2822       {
2823         orc_union32 _dest;
2824         _dest.x2[0] = var41.x2[1];
2825         _dest.x2[1] = var42.x2[1];
2826         var38.x2[1] = _dest.i;
2827       }
2828       /* 6: storeq */
2829       ptr0[i] = var38;
2830     }
2831   }
2832
2833 }
2834
2835 void
2836 video_convert_orc_convert_UYVY_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
2837     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
2838 {
2839   OrcExecutor _ex, *ex = &_ex;
2840   static volatile int p_inited = 0;
2841   static OrcCode *c = 0;
2842   void (*func) (OrcExecutor *);
2843
2844   if (!p_inited) {
2845     orc_once_mutex_lock ();
2846     if (!p_inited) {
2847       OrcProgram *p;
2848
2849 #if 1
2850       static const orc_uint8 bc[] = {
2851         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
2852         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 85, 89,
2853         86, 89, 95, 65, 89, 85, 86, 11, 8, 8, 12, 4, 4, 14, 2, 255,
2854         0, 0, 0, 20, 2, 20, 2, 20, 4, 20, 4, 21, 1, 199, 32, 33,
2855         4, 21, 1, 196, 34, 16, 32, 195, 35, 33, 33, 21, 1, 195, 0, 34,
2856         35, 2, 0,
2857       };
2858       p = orc_program_new_from_static_bytecode (bc);
2859       orc_program_set_backup_function (p,
2860           _backup_video_convert_orc_convert_UYVY_AYUV);
2861 #else
2862       p = orc_program_new ();
2863       orc_program_set_2d (p);
2864       orc_program_set_name (p, "video_convert_orc_convert_UYVY_AYUV");
2865       orc_program_set_backup_function (p,
2866           _backup_video_convert_orc_convert_UYVY_AYUV);
2867       orc_program_add_destination (p, 8, "d1");
2868       orc_program_add_source (p, 4, "s1");
2869       orc_program_add_constant (p, 2, 0x000000ff, "c1");
2870       orc_program_add_temporary (p, 2, "t1");
2871       orc_program_add_temporary (p, 2, "t2");
2872       orc_program_add_temporary (p, 4, "t3");
2873       orc_program_add_temporary (p, 4, "t4");
2874
2875       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1,
2876           ORC_VAR_D1);
2877       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1,
2878           ORC_VAR_D1);
2879       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2,
2880           ORC_VAR_D1);
2881       orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4,
2882           ORC_VAR_D1);
2883 #endif
2884
2885       orc_program_compile (p);
2886       c = orc_program_take_code (p);
2887       orc_program_free (p);
2888     }
2889     p_inited = TRUE;
2890     orc_once_mutex_unlock ();
2891   }
2892   ex->arrays[ORC_VAR_A2] = c;
2893   ex->program = 0;
2894
2895   ex->n = n;
2896   ORC_EXECUTOR_M (ex) = m;
2897   ex->arrays[ORC_VAR_D1] = d1;
2898   ex->params[ORC_VAR_D1] = d1_stride;
2899   ex->arrays[ORC_VAR_S1] = (void *) s1;
2900   ex->params[ORC_VAR_S1] = s1_stride;
2901
2902   func = c->exec;
2903   func (ex);
2904 }
2905 #endif
2906
2907
2908 /* video_convert_orc_convert_YUY2_Y42B */
2909 #ifdef DISABLE_ORC
2910 void
2911 video_convert_orc_convert_YUY2_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride,
2912     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
2913     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
2914 {
2915   int i;
2916   int j;
2917   orc_union16 *ORC_RESTRICT ptr0;
2918   orc_int8 *ORC_RESTRICT ptr1;
2919   orc_int8 *ORC_RESTRICT ptr2;
2920   const orc_union32 *ORC_RESTRICT ptr4;
2921   orc_union32 var33;
2922   orc_union16 var34;
2923   orc_int8 var35;
2924   orc_int8 var36;
2925   orc_union16 var37;
2926
2927   for (j = 0; j < m; j++) {
2928     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
2929     ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
2930     ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j);
2931     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
2932
2933
2934     for (i = 0; i < n; i++) {
2935       /* 0: loadl */
2936       var33 = ptr4[i];
2937       /* 1: splitwb */
2938       {
2939         orc_union16 _src;
2940         _src.i = var33.x2[0];
2941         var37.x2[0] = _src.x2[1];
2942         var34.x2[0] = _src.x2[0];
2943       }
2944       {
2945         orc_union16 _src;
2946         _src.i = var33.x2[1];
2947         var37.x2[1] = _src.x2[1];
2948         var34.x2[1] = _src.x2[0];
2949       }
2950       /* 2: storew */
2951       ptr0[i] = var34;
2952       /* 3: splitwb */
2953       {
2954         orc_union16 _src;
2955         _src.i = var37.i;
2956         var35 = _src.x2[1];
2957         var36 = _src.x2[0];
2958       }
2959       /* 4: storeb */
2960       ptr2[i] = var35;
2961       /* 5: storeb */
2962       ptr1[i] = var36;
2963     }
2964   }
2965
2966 }
2967
2968 #else
2969 static void
2970 _backup_video_convert_orc_convert_YUY2_Y42B (OrcExecutor * ORC_RESTRICT ex)
2971 {
2972   int i;
2973   int j;
2974   int n = ex->n;
2975   int m = ex->params[ORC_VAR_A1];
2976   orc_union16 *ORC_RESTRICT ptr0;
2977   orc_int8 *ORC_RESTRICT ptr1;
2978   orc_int8 *ORC_RESTRICT ptr2;
2979   const orc_union32 *ORC_RESTRICT ptr4;
2980   orc_union32 var33;
2981   orc_union16 var34;
2982   orc_int8 var35;
2983   orc_int8 var36;
2984   orc_union16 var37;
2985
2986   for (j = 0; j < m; j++) {
2987     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
2988     ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
2989     ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j);
2990     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
2991
2992
2993     for (i = 0; i < n; i++) {
2994       /* 0: loadl */
2995       var33 = ptr4[i];
2996       /* 1: splitwb */
2997       {
2998         orc_union16 _src;
2999         _src.i = var33.x2[0];
3000         var37.x2[0] = _src.x2[1];
3001         var34.x2[0] = _src.x2[0];
3002       }
3003       {
3004         orc_union16 _src;
3005         _src.i = var33.x2[1];
3006         var37.x2[1] = _src.x2[1];
3007         var34.x2[1] = _src.x2[0];
3008       }
3009       /* 2: storew */
3010       ptr0[i] = var34;
3011       /* 3: splitwb */
3012       {
3013         orc_union16 _src;
3014         _src.i = var37.i;
3015         var35 = _src.x2[1];
3016         var36 = _src.x2[0];
3017       }
3018       /* 4: storeb */
3019       ptr2[i] = var35;
3020       /* 5: storeb */
3021       ptr1[i] = var36;
3022     }
3023   }
3024
3025 }
3026
3027 void
3028 video_convert_orc_convert_YUY2_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride,
3029     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
3030     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
3031 {
3032   OrcExecutor _ex, *ex = &_ex;
3033   static volatile int p_inited = 0;
3034   static OrcCode *c = 0;
3035   void (*func) (OrcExecutor *);
3036
3037   if (!p_inited) {
3038     orc_once_mutex_lock ();
3039     if (!p_inited) {
3040       OrcProgram *p;
3041
3042 #if 1
3043       static const orc_uint8 bc[] = {
3044         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
3045         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 89, 85,
3046         89, 50, 95, 89, 52, 50, 66, 11, 2, 2, 11, 1, 1, 11, 1, 1,
3047         12, 4, 4, 20, 2, 21, 1, 199, 32, 0, 4, 199, 2, 1, 32, 2,
3048         0,
3049       };
3050       p = orc_program_new_from_static_bytecode (bc);
3051       orc_program_set_backup_function (p,
3052           _backup_video_convert_orc_convert_YUY2_Y42B);
3053 #else
3054       p = orc_program_new ();
3055       orc_program_set_2d (p);
3056       orc_program_set_name (p, "video_convert_orc_convert_YUY2_Y42B");
3057       orc_program_set_backup_function (p,
3058           _backup_video_convert_orc_convert_YUY2_Y42B);
3059       orc_program_add_destination (p, 2, "d1");
3060       orc_program_add_destination (p, 1, "d2");
3061       orc_program_add_destination (p, 1, "d3");
3062       orc_program_add_source (p, 4, "s1");
3063       orc_program_add_temporary (p, 2, "t1");
3064
3065       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_S1,
3066           ORC_VAR_D1);
3067       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T1,
3068           ORC_VAR_D1);
3069 #endif
3070
3071       orc_program_compile (p);
3072       c = orc_program_take_code (p);
3073       orc_program_free (p);
3074     }
3075     p_inited = TRUE;
3076     orc_once_mutex_unlock ();
3077   }
3078   ex->arrays[ORC_VAR_A2] = c;
3079   ex->program = 0;
3080
3081   ex->n = n;
3082   ORC_EXECUTOR_M (ex) = m;
3083   ex->arrays[ORC_VAR_D1] = d1;
3084   ex->params[ORC_VAR_D1] = d1_stride;
3085   ex->arrays[ORC_VAR_D2] = d2;
3086   ex->params[ORC_VAR_D2] = d2_stride;
3087   ex->arrays[ORC_VAR_D3] = d3;
3088   ex->params[ORC_VAR_D3] = d3_stride;
3089   ex->arrays[ORC_VAR_S1] = (void *) s1;
3090   ex->params[ORC_VAR_S1] = s1_stride;
3091
3092   func = c->exec;
3093   func (ex);
3094 }
3095 #endif
3096
3097
3098 /* video_convert_orc_convert_UYVY_Y42B */
3099 #ifdef DISABLE_ORC
3100 void
3101 video_convert_orc_convert_UYVY_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride,
3102     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
3103     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
3104 {
3105   int i;
3106   int j;
3107   orc_union16 *ORC_RESTRICT ptr0;
3108   orc_int8 *ORC_RESTRICT ptr1;
3109   orc_int8 *ORC_RESTRICT ptr2;
3110   const orc_union32 *ORC_RESTRICT ptr4;
3111   orc_union32 var33;
3112   orc_union16 var34;
3113   orc_int8 var35;
3114   orc_int8 var36;
3115   orc_union16 var37;
3116
3117   for (j = 0; j < m; j++) {
3118     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
3119     ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
3120     ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j);
3121     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
3122
3123
3124     for (i = 0; i < n; i++) {
3125       /* 0: loadl */
3126       var33 = ptr4[i];
3127       /* 1: splitwb */
3128       {
3129         orc_union16 _src;
3130         _src.i = var33.x2[0];
3131         var34.x2[0] = _src.x2[1];
3132         var37.x2[0] = _src.x2[0];
3133       }
3134       {
3135         orc_union16 _src;
3136         _src.i = var33.x2[1];
3137         var34.x2[1] = _src.x2[1];
3138         var37.x2[1] = _src.x2[0];
3139       }
3140       /* 2: storew */
3141       ptr0[i] = var34;
3142       /* 3: splitwb */
3143       {
3144         orc_union16 _src;
3145         _src.i = var37.i;
3146         var35 = _src.x2[1];
3147         var36 = _src.x2[0];
3148       }
3149       /* 4: storeb */
3150       ptr2[i] = var35;
3151       /* 5: storeb */
3152       ptr1[i] = var36;
3153     }
3154   }
3155
3156 }
3157
3158 #else
3159 static void
3160 _backup_video_convert_orc_convert_UYVY_Y42B (OrcExecutor * ORC_RESTRICT ex)
3161 {
3162   int i;
3163   int j;
3164   int n = ex->n;
3165   int m = ex->params[ORC_VAR_A1];
3166   orc_union16 *ORC_RESTRICT ptr0;
3167   orc_int8 *ORC_RESTRICT ptr1;
3168   orc_int8 *ORC_RESTRICT ptr2;
3169   const orc_union32 *ORC_RESTRICT ptr4;
3170   orc_union32 var33;
3171   orc_union16 var34;
3172   orc_int8 var35;
3173   orc_int8 var36;
3174   orc_union16 var37;
3175
3176   for (j = 0; j < m; j++) {
3177     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
3178     ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
3179     ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j);
3180     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
3181
3182
3183     for (i = 0; i < n; i++) {
3184       /* 0: loadl */
3185       var33 = ptr4[i];
3186       /* 1: splitwb */
3187       {
3188         orc_union16 _src;
3189         _src.i = var33.x2[0];
3190         var34.x2[0] = _src.x2[1];
3191         var37.x2[0] = _src.x2[0];
3192       }
3193       {
3194         orc_union16 _src;
3195         _src.i = var33.x2[1];
3196         var34.x2[1] = _src.x2[1];
3197         var37.x2[1] = _src.x2[0];
3198       }
3199       /* 2: storew */
3200       ptr0[i] = var34;
3201       /* 3: splitwb */
3202       {
3203         orc_union16 _src;
3204         _src.i = var37.i;
3205         var35 = _src.x2[1];
3206         var36 = _src.x2[0];
3207       }
3208       /* 4: storeb */
3209       ptr2[i] = var35;
3210       /* 5: storeb */
3211       ptr1[i] = var36;
3212     }
3213   }
3214
3215 }
3216
3217 void
3218 video_convert_orc_convert_UYVY_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride,
3219     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
3220     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
3221 {
3222   OrcExecutor _ex, *ex = &_ex;
3223   static volatile int p_inited = 0;
3224   static OrcCode *c = 0;
3225   void (*func) (OrcExecutor *);
3226
3227   if (!p_inited) {
3228     orc_once_mutex_lock ();
3229     if (!p_inited) {
3230       OrcProgram *p;
3231
3232 #if 1
3233       static const orc_uint8 bc[] = {
3234         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
3235         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 85, 89,
3236         86, 89, 95, 89, 52, 50, 66, 11, 2, 2, 11, 1, 1, 11, 1, 1,
3237         12, 4, 4, 20, 2, 21, 1, 199, 0, 32, 4, 199, 2, 1, 32, 2,
3238         0,
3239       };
3240       p = orc_program_new_from_static_bytecode (bc);
3241       orc_program_set_backup_function (p,
3242           _backup_video_convert_orc_convert_UYVY_Y42B);
3243 #else
3244       p = orc_program_new ();
3245       orc_program_set_2d (p);
3246       orc_program_set_name (p, "video_convert_orc_convert_UYVY_Y42B");
3247       orc_program_set_backup_function (p,
3248           _backup_video_convert_orc_convert_UYVY_Y42B);
3249       orc_program_add_destination (p, 2, "d1");
3250       orc_program_add_destination (p, 1, "d2");
3251       orc_program_add_destination (p, 1, "d3");
3252       orc_program_add_source (p, 4, "s1");
3253       orc_program_add_temporary (p, 2, "t1");
3254
3255       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1,
3256           ORC_VAR_D1);
3257       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T1,
3258           ORC_VAR_D1);
3259 #endif
3260
3261       orc_program_compile (p);
3262       c = orc_program_take_code (p);
3263       orc_program_free (p);
3264     }
3265     p_inited = TRUE;
3266     orc_once_mutex_unlock ();
3267   }
3268   ex->arrays[ORC_VAR_A2] = c;
3269   ex->program = 0;
3270
3271   ex->n = n;
3272   ORC_EXECUTOR_M (ex) = m;
3273   ex->arrays[ORC_VAR_D1] = d1;
3274   ex->params[ORC_VAR_D1] = d1_stride;
3275   ex->arrays[ORC_VAR_D2] = d2;
3276   ex->params[ORC_VAR_D2] = d2_stride;
3277   ex->arrays[ORC_VAR_D3] = d3;
3278   ex->params[ORC_VAR_D3] = d3_stride;
3279   ex->arrays[ORC_VAR_S1] = (void *) s1;
3280   ex->params[ORC_VAR_S1] = s1_stride;
3281
3282   func = c->exec;
3283   func (ex);
3284 }
3285 #endif
3286
3287
3288 /* video_convert_orc_convert_YUY2_Y444 */
3289 #ifdef DISABLE_ORC
3290 void
3291 video_convert_orc_convert_YUY2_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride,
3292     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
3293     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
3294 {
3295   int i;
3296   int j;
3297   orc_union16 *ORC_RESTRICT ptr0;
3298   orc_union16 *ORC_RESTRICT ptr1;
3299   orc_union16 *ORC_RESTRICT ptr2;
3300   const orc_union32 *ORC_RESTRICT ptr4;
3301   orc_union32 var35;
3302   orc_union16 var36;
3303   orc_union16 var37;
3304   orc_union16 var38;
3305   orc_union16 var39;
3306   orc_int8 var40;
3307   orc_int8 var41;
3308
3309   for (j = 0; j < m; j++) {
3310     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
3311     ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
3312     ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j);
3313     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
3314
3315
3316     for (i = 0; i < n; i++) {
3317       /* 0: loadl */
3318       var35 = ptr4[i];
3319       /* 1: splitwb */
3320       {
3321         orc_union16 _src;
3322         _src.i = var35.x2[0];
3323         var39.x2[0] = _src.x2[1];
3324         var36.x2[0] = _src.x2[0];
3325       }
3326       {
3327         orc_union16 _src;
3328         _src.i = var35.x2[1];
3329         var39.x2[1] = _src.x2[1];
3330         var36.x2[1] = _src.x2[0];
3331       }
3332       /* 2: storew */
3333       ptr0[i] = var36;
3334       /* 3: splitwb */
3335       {
3336         orc_union16 _src;
3337         _src.i = var39.i;
3338         var40 = _src.x2[1];
3339         var41 = _src.x2[0];
3340       }
3341       /* 4: splatbw */
3342       var37.i = ((var41 & 0xff) << 8) | (var41 & 0xff);
3343       /* 5: storew */
3344       ptr1[i] = var37;
3345       /* 6: splatbw */
3346       var38.i = ((var40 & 0xff) << 8) | (var40 & 0xff);
3347       /* 7: storew */
3348       ptr2[i] = var38;
3349     }
3350   }
3351
3352 }
3353
3354 #else
3355 static void
3356 _backup_video_convert_orc_convert_YUY2_Y444 (OrcExecutor * ORC_RESTRICT ex)
3357 {
3358   int i;
3359   int j;
3360   int n = ex->n;
3361   int m = ex->params[ORC_VAR_A1];
3362   orc_union16 *ORC_RESTRICT ptr0;
3363   orc_union16 *ORC_RESTRICT ptr1;
3364   orc_union16 *ORC_RESTRICT ptr2;
3365   const orc_union32 *ORC_RESTRICT ptr4;
3366   orc_union32 var35;
3367   orc_union16 var36;
3368   orc_union16 var37;
3369   orc_union16 var38;
3370   orc_union16 var39;
3371   orc_int8 var40;
3372   orc_int8 var41;
3373
3374   for (j = 0; j < m; j++) {
3375     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
3376     ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
3377     ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j);
3378     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
3379
3380
3381     for (i = 0; i < n; i++) {
3382       /* 0: loadl */
3383       var35 = ptr4[i];
3384       /* 1: splitwb */
3385       {
3386         orc_union16 _src;
3387         _src.i = var35.x2[0];
3388         var39.x2[0] = _src.x2[1];
3389         var36.x2[0] = _src.x2[0];
3390       }
3391       {
3392         orc_union16 _src;
3393         _src.i = var35.x2[1];
3394         var39.x2[1] = _src.x2[1];
3395         var36.x2[1] = _src.x2[0];
3396       }
3397       /* 2: storew */
3398       ptr0[i] = var36;
3399       /* 3: splitwb */
3400       {
3401         orc_union16 _src;
3402         _src.i = var39.i;
3403         var40 = _src.x2[1];
3404         var41 = _src.x2[0];
3405       }
3406       /* 4: splatbw */
3407       var37.i = ((var41 & 0xff) << 8) | (var41 & 0xff);
3408       /* 5: storew */
3409       ptr1[i] = var37;
3410       /* 6: splatbw */
3411       var38.i = ((var40 & 0xff) << 8) | (var40 & 0xff);
3412       /* 7: storew */
3413       ptr2[i] = var38;
3414     }
3415   }
3416
3417 }
3418
3419 void
3420 video_convert_orc_convert_YUY2_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride,
3421     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
3422     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
3423 {
3424   OrcExecutor _ex, *ex = &_ex;
3425   static volatile int p_inited = 0;
3426   static OrcCode *c = 0;
3427   void (*func) (OrcExecutor *);
3428
3429   if (!p_inited) {
3430     orc_once_mutex_lock ();
3431     if (!p_inited) {
3432       OrcProgram *p;
3433
3434 #if 1
3435       static const orc_uint8 bc[] = {
3436         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
3437         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 89, 85,
3438         89, 50, 95, 89, 52, 52, 52, 11, 2, 2, 11, 2, 2, 11, 2, 2,
3439         12, 4, 4, 20, 2, 20, 1, 20, 1, 21, 1, 199, 32, 0, 4, 199,
3440         34, 33, 32, 151, 1, 33, 151, 2, 34, 2, 0,
3441       };
3442       p = orc_program_new_from_static_bytecode (bc);
3443       orc_program_set_backup_function (p,
3444           _backup_video_convert_orc_convert_YUY2_Y444);
3445 #else
3446       p = orc_program_new ();
3447       orc_program_set_2d (p);
3448       orc_program_set_name (p, "video_convert_orc_convert_YUY2_Y444");
3449       orc_program_set_backup_function (p,
3450           _backup_video_convert_orc_convert_YUY2_Y444);
3451       orc_program_add_destination (p, 2, "d1");
3452       orc_program_add_destination (p, 2, "d2");
3453       orc_program_add_destination (p, 2, "d3");
3454       orc_program_add_source (p, 4, "s1");
3455       orc_program_add_temporary (p, 2, "t1");
3456       orc_program_add_temporary (p, 1, "t2");
3457       orc_program_add_temporary (p, 1, "t3");
3458
3459       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_S1,
3460           ORC_VAR_D1);
3461       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_T1,
3462           ORC_VAR_D1);
3463       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_D1,
3464           ORC_VAR_D1);
3465       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_D3, ORC_VAR_T3, ORC_VAR_D1,
3466           ORC_VAR_D1);
3467 #endif
3468
3469       orc_program_compile (p);
3470       c = orc_program_take_code (p);
3471       orc_program_free (p);
3472     }
3473     p_inited = TRUE;
3474     orc_once_mutex_unlock ();
3475   }
3476   ex->arrays[ORC_VAR_A2] = c;
3477   ex->program = 0;
3478
3479   ex->n = n;
3480   ORC_EXECUTOR_M (ex) = m;
3481   ex->arrays[ORC_VAR_D1] = d1;
3482   ex->params[ORC_VAR_D1] = d1_stride;
3483   ex->arrays[ORC_VAR_D2] = d2;
3484   ex->params[ORC_VAR_D2] = d2_stride;
3485   ex->arrays[ORC_VAR_D3] = d3;
3486   ex->params[ORC_VAR_D3] = d3_stride;
3487   ex->arrays[ORC_VAR_S1] = (void *) s1;
3488   ex->params[ORC_VAR_S1] = s1_stride;
3489
3490   func = c->exec;
3491   func (ex);
3492 }
3493 #endif
3494
3495
3496 /* video_convert_orc_convert_UYVY_Y444 */
3497 #ifdef DISABLE_ORC
3498 void
3499 video_convert_orc_convert_UYVY_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride,
3500     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
3501     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
3502 {
3503   int i;
3504   int j;
3505   orc_union16 *ORC_RESTRICT ptr0;
3506   orc_union16 *ORC_RESTRICT ptr1;
3507   orc_union16 *ORC_RESTRICT ptr2;
3508   const orc_union32 *ORC_RESTRICT ptr4;
3509   orc_union32 var35;
3510   orc_union16 var36;
3511   orc_union16 var37;
3512   orc_union16 var38;
3513   orc_union16 var39;
3514   orc_int8 var40;
3515   orc_int8 var41;
3516
3517   for (j = 0; j < m; j++) {
3518     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
3519     ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
3520     ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j);
3521     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
3522
3523
3524     for (i = 0; i < n; i++) {
3525       /* 0: loadl */
3526       var35 = ptr4[i];
3527       /* 1: splitwb */
3528       {
3529         orc_union16 _src;
3530         _src.i = var35.x2[0];
3531         var36.x2[0] = _src.x2[1];
3532         var39.x2[0] = _src.x2[0];
3533       }
3534       {
3535         orc_union16 _src;
3536         _src.i = var35.x2[1];
3537         var36.x2[1] = _src.x2[1];
3538         var39.x2[1] = _src.x2[0];
3539       }
3540       /* 2: storew */
3541       ptr0[i] = var36;
3542       /* 3: splitwb */
3543       {
3544         orc_union16 _src;
3545         _src.i = var39.i;
3546         var40 = _src.x2[1];
3547         var41 = _src.x2[0];
3548       }
3549       /* 4: splatbw */
3550       var37.i = ((var41 & 0xff) << 8) | (var41 & 0xff);
3551       /* 5: storew */
3552       ptr1[i] = var37;
3553       /* 6: splatbw */
3554       var38.i = ((var40 & 0xff) << 8) | (var40 & 0xff);
3555       /* 7: storew */
3556       ptr2[i] = var38;
3557     }
3558   }
3559
3560 }
3561
3562 #else
3563 static void
3564 _backup_video_convert_orc_convert_UYVY_Y444 (OrcExecutor * ORC_RESTRICT ex)
3565 {
3566   int i;
3567   int j;
3568   int n = ex->n;
3569   int m = ex->params[ORC_VAR_A1];
3570   orc_union16 *ORC_RESTRICT ptr0;
3571   orc_union16 *ORC_RESTRICT ptr1;
3572   orc_union16 *ORC_RESTRICT ptr2;
3573   const orc_union32 *ORC_RESTRICT ptr4;
3574   orc_union32 var35;
3575   orc_union16 var36;
3576   orc_union16 var37;
3577   orc_union16 var38;
3578   orc_union16 var39;
3579   orc_int8 var40;
3580   orc_int8 var41;
3581
3582   for (j = 0; j < m; j++) {
3583     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
3584     ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
3585     ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j);
3586     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
3587
3588
3589     for (i = 0; i < n; i++) {
3590       /* 0: loadl */
3591       var35 = ptr4[i];
3592       /* 1: splitwb */
3593       {
3594         orc_union16 _src;
3595         _src.i = var35.x2[0];
3596         var36.x2[0] = _src.x2[1];
3597         var39.x2[0] = _src.x2[0];
3598       }
3599       {
3600         orc_union16 _src;
3601         _src.i = var35.x2[1];
3602         var36.x2[1] = _src.x2[1];
3603         var39.x2[1] = _src.x2[0];
3604       }
3605       /* 2: storew */
3606       ptr0[i] = var36;
3607       /* 3: splitwb */
3608       {
3609         orc_union16 _src;
3610         _src.i = var39.i;
3611         var40 = _src.x2[1];
3612         var41 = _src.x2[0];
3613       }
3614       /* 4: splatbw */
3615       var37.i = ((var41 & 0xff) << 8) | (var41 & 0xff);
3616       /* 5: storew */
3617       ptr1[i] = var37;
3618       /* 6: splatbw */
3619       var38.i = ((var40 & 0xff) << 8) | (var40 & 0xff);
3620       /* 7: storew */
3621       ptr2[i] = var38;
3622     }
3623   }
3624
3625 }
3626
3627 void
3628 video_convert_orc_convert_UYVY_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride,
3629     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
3630     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
3631 {
3632   OrcExecutor _ex, *ex = &_ex;
3633   static volatile int p_inited = 0;
3634   static OrcCode *c = 0;
3635   void (*func) (OrcExecutor *);
3636
3637   if (!p_inited) {
3638     orc_once_mutex_lock ();
3639     if (!p_inited) {
3640       OrcProgram *p;
3641
3642 #if 1
3643       static const orc_uint8 bc[] = {
3644         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
3645         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 85, 89,
3646         86, 89, 95, 89, 52, 52, 52, 11, 2, 2, 11, 2, 2, 11, 2, 2,
3647         12, 4, 4, 20, 2, 20, 1, 20, 1, 21, 1, 199, 0, 32, 4, 199,
3648         34, 33, 32, 151, 1, 33, 151, 2, 34, 2, 0,
3649       };
3650       p = orc_program_new_from_static_bytecode (bc);
3651       orc_program_set_backup_function (p,
3652           _backup_video_convert_orc_convert_UYVY_Y444);
3653 #else
3654       p = orc_program_new ();
3655       orc_program_set_2d (p);
3656       orc_program_set_name (p, "video_convert_orc_convert_UYVY_Y444");
3657       orc_program_set_backup_function (p,
3658           _backup_video_convert_orc_convert_UYVY_Y444);
3659       orc_program_add_destination (p, 2, "d1");
3660       orc_program_add_destination (p, 2, "d2");
3661       orc_program_add_destination (p, 2, "d3");
3662       orc_program_add_source (p, 4, "s1");
3663       orc_program_add_temporary (p, 2, "t1");
3664       orc_program_add_temporary (p, 1, "t2");
3665       orc_program_add_temporary (p, 1, "t3");
3666
3667       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1,
3668           ORC_VAR_D1);
3669       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_T1,
3670           ORC_VAR_D1);
3671       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_D1,
3672           ORC_VAR_D1);
3673       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_D3, ORC_VAR_T3, ORC_VAR_D1,
3674           ORC_VAR_D1);
3675 #endif
3676
3677       orc_program_compile (p);
3678       c = orc_program_take_code (p);
3679       orc_program_free (p);
3680     }
3681     p_inited = TRUE;
3682     orc_once_mutex_unlock ();
3683   }
3684   ex->arrays[ORC_VAR_A2] = c;
3685   ex->program = 0;
3686
3687   ex->n = n;
3688   ORC_EXECUTOR_M (ex) = m;
3689   ex->arrays[ORC_VAR_D1] = d1;
3690   ex->params[ORC_VAR_D1] = d1_stride;
3691   ex->arrays[ORC_VAR_D2] = d2;
3692   ex->params[ORC_VAR_D2] = d2_stride;
3693   ex->arrays[ORC_VAR_D3] = d3;
3694   ex->params[ORC_VAR_D3] = d3_stride;
3695   ex->arrays[ORC_VAR_S1] = (void *) s1;
3696   ex->params[ORC_VAR_S1] = s1_stride;
3697
3698   func = c->exec;
3699   func (ex);
3700 }
3701 #endif
3702
3703
3704 /* video_convert_orc_convert_UYVY_I420 */
3705 #ifdef DISABLE_ORC
3706 void
3707 video_convert_orc_convert_UYVY_I420 (guint8 * ORC_RESTRICT d1,
3708     guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
3709     guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1,
3710     const guint8 * ORC_RESTRICT s2, int n)
3711 {
3712   int i;
3713   orc_union16 *ORC_RESTRICT ptr0;
3714   orc_union16 *ORC_RESTRICT ptr1;
3715   orc_int8 *ORC_RESTRICT ptr2;
3716   orc_int8 *ORC_RESTRICT ptr3;
3717   const orc_union32 *ORC_RESTRICT ptr4;
3718   const orc_union32 *ORC_RESTRICT ptr5;
3719   orc_union32 var35;
3720   orc_union32 var36;
3721   orc_int8 var37;
3722   orc_int8 var38;
3723   orc_union16 var39;
3724   orc_union16 var40;
3725   orc_union16 var41;
3726   orc_union16 var42;
3727   orc_union16 var43;
3728
3729   ptr0 = (orc_union16 *) d1;
3730   ptr1 = (orc_union16 *) d2;
3731   ptr2 = (orc_int8 *) d3;
3732   ptr3 = (orc_int8 *) d4;
3733   ptr4 = (orc_union32 *) s1;
3734   ptr5 = (orc_union32 *) s2;
3735
3736
3737   for (i = 0; i < n; i++) {
3738     /* 0: loadl */
3739     var35 = ptr4[i];
3740     /* 1: splitwb */
3741     {
3742       orc_union16 _src;
3743       _src.i = var35.x2[0];
3744       var39.x2[0] = _src.x2[1];
3745       var40.x2[0] = _src.x2[0];
3746     }
3747     {
3748       orc_union16 _src;
3749       _src.i = var35.x2[1];
3750       var39.x2[1] = _src.x2[1];
3751       var40.x2[1] = _src.x2[0];
3752     }
3753     /* 2: storew */
3754     ptr0[i] = var39;
3755     /* 3: loadl */
3756     var36 = ptr5[i];
3757     /* 4: splitwb */
3758     {
3759       orc_union16 _src;
3760       _src.i = var36.x2[0];
3761       var41.x2[0] = _src.x2[1];
3762       var42.x2[0] = _src.x2[0];
3763     }
3764     {
3765       orc_union16 _src;
3766       _src.i = var36.x2[1];
3767       var41.x2[1] = _src.x2[1];
3768       var42.x2[1] = _src.x2[0];
3769     }
3770     /* 5: storew */
3771     ptr1[i] = var41;
3772     /* 6: avgub */
3773     var43.x2[0] = ((orc_uint8) var40.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
3774     var43.x2[1] = ((orc_uint8) var40.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
3775     /* 7: splitwb */
3776     {
3777       orc_union16 _src;
3778       _src.i = var43.i;
3779       var37 = _src.x2[1];
3780       var38 = _src.x2[0];
3781     }
3782     /* 8: storeb */
3783     ptr3[i] = var37;
3784     /* 9: storeb */
3785     ptr2[i] = var38;
3786   }
3787
3788 }
3789
3790 #else
3791 static void
3792 _backup_video_convert_orc_convert_UYVY_I420 (OrcExecutor * ORC_RESTRICT ex)
3793 {
3794   int i;
3795   int n = ex->n;
3796   orc_union16 *ORC_RESTRICT ptr0;
3797   orc_union16 *ORC_RESTRICT ptr1;
3798   orc_int8 *ORC_RESTRICT ptr2;
3799   orc_int8 *ORC_RESTRICT ptr3;
3800   const orc_union32 *ORC_RESTRICT ptr4;
3801   const orc_union32 *ORC_RESTRICT ptr5;
3802   orc_union32 var35;
3803   orc_union32 var36;
3804   orc_int8 var37;
3805   orc_int8 var38;
3806   orc_union16 var39;
3807   orc_union16 var40;
3808   orc_union16 var41;
3809   orc_union16 var42;
3810   orc_union16 var43;
3811
3812   ptr0 = (orc_union16 *) ex->arrays[0];
3813   ptr1 = (orc_union16 *) ex->arrays[1];
3814   ptr2 = (orc_int8 *) ex->arrays[2];
3815   ptr3 = (orc_int8 *) ex->arrays[3];
3816   ptr4 = (orc_union32 *) ex->arrays[4];
3817   ptr5 = (orc_union32 *) ex->arrays[5];
3818
3819
3820   for (i = 0; i < n; i++) {
3821     /* 0: loadl */
3822     var35 = ptr4[i];
3823     /* 1: splitwb */
3824     {
3825       orc_union16 _src;
3826       _src.i = var35.x2[0];
3827       var39.x2[0] = _src.x2[1];
3828       var40.x2[0] = _src.x2[0];
3829     }
3830     {
3831       orc_union16 _src;
3832       _src.i = var35.x2[1];
3833       var39.x2[1] = _src.x2[1];
3834       var40.x2[1] = _src.x2[0];
3835     }
3836     /* 2: storew */
3837     ptr0[i] = var39;
3838     /* 3: loadl */
3839     var36 = ptr5[i];
3840     /* 4: splitwb */
3841     {
3842       orc_union16 _src;
3843       _src.i = var36.x2[0];
3844       var41.x2[0] = _src.x2[1];
3845       var42.x2[0] = _src.x2[0];
3846     }
3847     {
3848       orc_union16 _src;
3849       _src.i = var36.x2[1];
3850       var41.x2[1] = _src.x2[1];
3851       var42.x2[1] = _src.x2[0];
3852     }
3853     /* 5: storew */
3854     ptr1[i] = var41;
3855     /* 6: avgub */
3856     var43.x2[0] = ((orc_uint8) var40.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
3857     var43.x2[1] = ((orc_uint8) var40.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
3858     /* 7: splitwb */
3859     {
3860       orc_union16 _src;
3861       _src.i = var43.i;
3862       var37 = _src.x2[1];
3863       var38 = _src.x2[0];
3864     }
3865     /* 8: storeb */
3866     ptr3[i] = var37;
3867     /* 9: storeb */
3868     ptr2[i] = var38;
3869   }
3870
3871 }
3872
3873 void
3874 video_convert_orc_convert_UYVY_I420 (guint8 * ORC_RESTRICT d1,
3875     guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
3876     guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1,
3877     const guint8 * ORC_RESTRICT s2, int n)
3878 {
3879   OrcExecutor _ex, *ex = &_ex;
3880   static volatile int p_inited = 0;
3881   static OrcCode *c = 0;
3882   void (*func) (OrcExecutor *);
3883
3884   if (!p_inited) {
3885     orc_once_mutex_lock ();
3886     if (!p_inited) {
3887       OrcProgram *p;
3888
3889 #if 1
3890       static const orc_uint8 bc[] = {
3891         1, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
3892         95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 85, 89, 86,
3893         89, 95, 73, 52, 50, 48, 11, 2, 2, 11, 2, 2, 11, 1, 1, 11,
3894         1, 1, 12, 4, 4, 12, 4, 4, 20, 2, 20, 2, 20, 2, 21, 1,
3895         199, 34, 32, 4, 97, 0, 34, 21, 1, 199, 34, 33, 5, 97, 1, 34,
3896         21, 1, 39, 32, 32, 33, 199, 3, 2, 32, 2, 0,
3897       };
3898       p = orc_program_new_from_static_bytecode (bc);
3899       orc_program_set_backup_function (p,
3900           _backup_video_convert_orc_convert_UYVY_I420);
3901 #else
3902       p = orc_program_new ();
3903       orc_program_set_name (p, "video_convert_orc_convert_UYVY_I420");
3904       orc_program_set_backup_function (p,
3905           _backup_video_convert_orc_convert_UYVY_I420);
3906       orc_program_add_destination (p, 2, "d1");
3907       orc_program_add_destination (p, 2, "d2");
3908       orc_program_add_destination (p, 1, "d3");
3909       orc_program_add_destination (p, 1, "d4");
3910       orc_program_add_source (p, 4, "s1");
3911       orc_program_add_source (p, 4, "s2");
3912       orc_program_add_temporary (p, 2, "t1");
3913       orc_program_add_temporary (p, 2, "t2");
3914       orc_program_add_temporary (p, 2, "t3");
3915
3916       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_S1,
3917           ORC_VAR_D1);
3918       orc_program_append_2 (p, "storew", 0, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_D1,
3919           ORC_VAR_D1);
3920       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_S2,
3921           ORC_VAR_D1);
3922       orc_program_append_2 (p, "storew", 0, ORC_VAR_D2, ORC_VAR_T3, ORC_VAR_D1,
3923           ORC_VAR_D1);
3924       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
3925           ORC_VAR_D1);
3926       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D4, ORC_VAR_D3, ORC_VAR_T1,
3927           ORC_VAR_D1);
3928 #endif
3929
3930       orc_program_compile (p);
3931       c = orc_program_take_code (p);
3932       orc_program_free (p);
3933     }
3934     p_inited = TRUE;
3935     orc_once_mutex_unlock ();
3936   }
3937   ex->arrays[ORC_VAR_A2] = c;
3938   ex->program = 0;
3939
3940   ex->n = n;
3941   ex->arrays[ORC_VAR_D1] = d1;
3942   ex->arrays[ORC_VAR_D2] = d2;
3943   ex->arrays[ORC_VAR_D3] = d3;
3944   ex->arrays[ORC_VAR_D4] = d4;
3945   ex->arrays[ORC_VAR_S1] = (void *) s1;
3946   ex->arrays[ORC_VAR_S2] = (void *) s2;
3947
3948   func = c->exec;
3949   func (ex);
3950 }
3951 #endif
3952
3953
3954 /* video_convert_orc_convert_AYUV_I420 */
3955 #ifdef DISABLE_ORC
3956 void
3957 video_convert_orc_convert_AYUV_I420 (guint8 * ORC_RESTRICT d1, int d1_stride,
3958     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
3959     int d3_stride, guint8 * ORC_RESTRICT d4, int d4_stride,
3960     const guint8 * ORC_RESTRICT s1, int s1_stride,
3961     const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m)
3962 {
3963   int i;
3964   int j;
3965   orc_union16 *ORC_RESTRICT ptr0;
3966   orc_union16 *ORC_RESTRICT ptr1;
3967   orc_int8 *ORC_RESTRICT ptr2;
3968   orc_int8 *ORC_RESTRICT ptr3;
3969   const orc_union64 *ORC_RESTRICT ptr4;
3970   const orc_union64 *ORC_RESTRICT ptr5;
3971   orc_union64 var40;
3972   orc_union16 var41;
3973   orc_union64 var42;
3974   orc_union16 var43;
3975   orc_int8 var44;
3976   orc_int8 var45;
3977   orc_union32 var46;
3978   orc_union32 var47;
3979   orc_union32 var48;
3980   orc_union32 var49;
3981   orc_union32 var50;
3982   orc_union16 var51;
3983   orc_union16 var52;
3984   orc_int8 var53;
3985   orc_int8 var54;
3986   orc_int8 var55;
3987   orc_int8 var56;
3988
3989   for (j = 0; j < m; j++) {
3990     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
3991     ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
3992     ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j);
3993     ptr3 = ORC_PTR_OFFSET (d4, d4_stride * j);
3994     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
3995     ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
3996
3997
3998     for (i = 0; i < n; i++) {
3999       /* 0: loadq */
4000       var40 = ptr4[i];
4001       /* 1: splitlw */
4002       {
4003         orc_union32 _src;
4004         _src.i = var40.x2[0];
4005         var46.x2[0] = _src.x2[1];
4006         var47.x2[0] = _src.x2[0];
4007       }
4008       {
4009         orc_union32 _src;
4010         _src.i = var40.x2[1];
4011         var46.x2[1] = _src.x2[1];
4012         var47.x2[1] = _src.x2[0];
4013       }
4014       /* 2: select1wb */
4015       {
4016         orc_union16 _src;
4017         _src.i = var47.x2[0];
4018         var41.x2[0] = _src.x2[1];
4019       }
4020       {
4021         orc_union16 _src;
4022         _src.i = var47.x2[1];
4023         var41.x2[1] = _src.x2[1];
4024       }
4025       /* 3: storew */
4026       ptr0[i] = var41;
4027       /* 4: loadq */
4028       var42 = ptr5[i];
4029       /* 5: splitlw */
4030       {
4031         orc_union32 _src;
4032         _src.i = var42.x2[0];
4033         var48.x2[0] = _src.x2[1];
4034         var49.x2[0] = _src.x2[0];
4035       }
4036       {
4037         orc_union32 _src;
4038         _src.i = var42.x2[1];
4039         var48.x2[1] = _src.x2[1];
4040         var49.x2[1] = _src.x2[0];
4041       }
4042       /* 6: select1wb */
4043       {
4044         orc_union16 _src;
4045         _src.i = var49.x2[0];
4046         var43.x2[0] = _src.x2[1];
4047       }
4048       {
4049         orc_union16 _src;
4050         _src.i = var49.x2[1];
4051         var43.x2[1] = _src.x2[1];
4052       }
4053       /* 7: storew */
4054       ptr1[i] = var43;
4055       /* 8: avgub */
4056       var50.x4[0] =
4057           ((orc_uint8) var46.x4[0] + (orc_uint8) var48.x4[0] + 1) >> 1;
4058       var50.x4[1] =
4059           ((orc_uint8) var46.x4[1] + (orc_uint8) var48.x4[1] + 1) >> 1;
4060       var50.x4[2] =
4061           ((orc_uint8) var46.x4[2] + (orc_uint8) var48.x4[2] + 1) >> 1;
4062       var50.x4[3] =
4063           ((orc_uint8) var46.x4[3] + (orc_uint8) var48.x4[3] + 1) >> 1;
4064       /* 9: splitwb */
4065       {
4066         orc_union16 _src;
4067         _src.i = var50.x2[0];
4068         var51.x2[0] = _src.x2[1];
4069         var52.x2[0] = _src.x2[0];
4070       }
4071       {
4072         orc_union16 _src;
4073         _src.i = var50.x2[1];
4074         var51.x2[1] = _src.x2[1];
4075         var52.x2[1] = _src.x2[0];
4076       }
4077       /* 10: splitwb */
4078       {
4079         orc_union16 _src;
4080         _src.i = var52.i;
4081         var53 = _src.x2[1];
4082         var54 = _src.x2[0];
4083       }
4084       /* 11: avgub */
4085       var44 = ((orc_uint8) var53 + (orc_uint8) var54 + 1) >> 1;
4086       /* 12: storeb */
4087       ptr2[i] = var44;
4088       /* 13: splitwb */
4089       {
4090         orc_union16 _src;
4091         _src.i = var51.i;
4092         var55 = _src.x2[1];
4093         var56 = _src.x2[0];
4094       }
4095       /* 14: avgub */
4096       var45 = ((orc_uint8) var55 + (orc_uint8) var56 + 1) >> 1;
4097       /* 15: storeb */
4098       ptr3[i] = var45;
4099     }
4100   }
4101
4102 }
4103
4104 #else
4105 static void
4106 _backup_video_convert_orc_convert_AYUV_I420 (OrcExecutor * ORC_RESTRICT ex)
4107 {
4108   int i;
4109   int j;
4110   int n = ex->n;
4111   int m = ex->params[ORC_VAR_A1];
4112   orc_union16 *ORC_RESTRICT ptr0;
4113   orc_union16 *ORC_RESTRICT ptr1;
4114   orc_int8 *ORC_RESTRICT ptr2;
4115   orc_int8 *ORC_RESTRICT ptr3;
4116   const orc_union64 *ORC_RESTRICT ptr4;
4117   const orc_union64 *ORC_RESTRICT ptr5;
4118   orc_union64 var40;
4119   orc_union16 var41;
4120   orc_union64 var42;
4121   orc_union16 var43;
4122   orc_int8 var44;
4123   orc_int8 var45;
4124   orc_union32 var46;
4125   orc_union32 var47;
4126   orc_union32 var48;
4127   orc_union32 var49;
4128   orc_union32 var50;
4129   orc_union16 var51;
4130   orc_union16 var52;
4131   orc_int8 var53;
4132   orc_int8 var54;
4133   orc_int8 var55;
4134   orc_int8 var56;
4135
4136   for (j = 0; j < m; j++) {
4137     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
4138     ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
4139     ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j);
4140     ptr3 = ORC_PTR_OFFSET (ex->arrays[3], ex->params[3] * j);
4141     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
4142     ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
4143
4144
4145     for (i = 0; i < n; i++) {
4146       /* 0: loadq */
4147       var40 = ptr4[i];
4148       /* 1: splitlw */
4149       {
4150         orc_union32 _src;
4151         _src.i = var40.x2[0];
4152         var46.x2[0] = _src.x2[1];
4153         var47.x2[0] = _src.x2[0];
4154       }
4155       {
4156         orc_union32 _src;
4157         _src.i = var40.x2[1];
4158         var46.x2[1] = _src.x2[1];
4159         var47.x2[1] = _src.x2[0];
4160       }
4161       /* 2: select1wb */
4162       {
4163         orc_union16 _src;
4164         _src.i = var47.x2[0];
4165         var41.x2[0] = _src.x2[1];
4166       }
4167       {
4168         orc_union16 _src;
4169         _src.i = var47.x2[1];
4170         var41.x2[1] = _src.x2[1];
4171       }
4172       /* 3: storew */
4173       ptr0[i] = var41;
4174       /* 4: loadq */
4175       var42 = ptr5[i];
4176       /* 5: splitlw */
4177       {
4178         orc_union32 _src;
4179         _src.i = var42.x2[0];
4180         var48.x2[0] = _src.x2[1];
4181         var49.x2[0] = _src.x2[0];
4182       }
4183       {
4184         orc_union32 _src;
4185         _src.i = var42.x2[1];
4186         var48.x2[1] = _src.x2[1];
4187         var49.x2[1] = _src.x2[0];
4188       }
4189       /* 6: select1wb */
4190       {
4191         orc_union16 _src;
4192         _src.i = var49.x2[0];
4193         var43.x2[0] = _src.x2[1];
4194       }
4195       {
4196         orc_union16 _src;
4197         _src.i = var49.x2[1];
4198         var43.x2[1] = _src.x2[1];
4199       }
4200       /* 7: storew */
4201       ptr1[i] = var43;
4202       /* 8: avgub */
4203       var50.x4[0] =
4204           ((orc_uint8) var46.x4[0] + (orc_uint8) var48.x4[0] + 1) >> 1;
4205       var50.x4[1] =
4206           ((orc_uint8) var46.x4[1] + (orc_uint8) var48.x4[1] + 1) >> 1;
4207       var50.x4[2] =
4208           ((orc_uint8) var46.x4[2] + (orc_uint8) var48.x4[2] + 1) >> 1;
4209       var50.x4[3] =
4210           ((orc_uint8) var46.x4[3] + (orc_uint8) var48.x4[3] + 1) >> 1;
4211       /* 9: splitwb */
4212       {
4213         orc_union16 _src;
4214         _src.i = var50.x2[0];
4215         var51.x2[0] = _src.x2[1];
4216         var52.x2[0] = _src.x2[0];
4217       }
4218       {
4219         orc_union16 _src;
4220         _src.i = var50.x2[1];
4221         var51.x2[1] = _src.x2[1];
4222         var52.x2[1] = _src.x2[0];
4223       }
4224       /* 10: splitwb */
4225       {
4226         orc_union16 _src;
4227         _src.i = var52.i;
4228         var53 = _src.x2[1];
4229         var54 = _src.x2[0];
4230       }
4231       /* 11: avgub */
4232       var44 = ((orc_uint8) var53 + (orc_uint8) var54 + 1) >> 1;
4233       /* 12: storeb */
4234       ptr2[i] = var44;
4235       /* 13: splitwb */
4236       {
4237         orc_union16 _src;
4238         _src.i = var51.i;
4239         var55 = _src.x2[1];
4240         var56 = _src.x2[0];
4241       }
4242       /* 14: avgub */
4243       var45 = ((orc_uint8) var55 + (orc_uint8) var56 + 1) >> 1;
4244       /* 15: storeb */
4245       ptr3[i] = var45;
4246     }
4247   }
4248
4249 }
4250
4251 void
4252 video_convert_orc_convert_AYUV_I420 (guint8 * ORC_RESTRICT d1, int d1_stride,
4253     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
4254     int d3_stride, guint8 * ORC_RESTRICT d4, int d4_stride,
4255     const guint8 * ORC_RESTRICT s1, int s1_stride,
4256     const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m)
4257 {
4258   OrcExecutor _ex, *ex = &_ex;
4259   static volatile int p_inited = 0;
4260   static OrcCode *c = 0;
4261   void (*func) (OrcExecutor *);
4262
4263   if (!p_inited) {
4264     orc_once_mutex_lock ();
4265     if (!p_inited) {
4266       OrcProgram *p;
4267
4268 #if 1
4269       static const orc_uint8 bc[] = {
4270         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
4271         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 65, 89,
4272         85, 86, 95, 73, 52, 50, 48, 11, 2, 2, 11, 2, 2, 11, 1, 1,
4273         11, 1, 1, 12, 8, 8, 12, 8, 8, 20, 4, 20, 4, 20, 4, 20,
4274         4, 20, 2, 20, 2, 20, 1, 20, 1, 21, 1, 198, 33, 32, 4, 21,
4275         1, 189, 0, 32, 21, 1, 198, 34, 32, 5, 21, 1, 189, 1, 32, 21,
4276         2, 39, 35, 33, 34, 21, 1, 199, 37, 36, 35, 199, 38, 39, 36, 39,
4277         2, 38, 39, 199, 38, 39, 37, 39, 3, 38, 39, 2, 0,
4278       };
4279       p = orc_program_new_from_static_bytecode (bc);
4280       orc_program_set_backup_function (p,
4281           _backup_video_convert_orc_convert_AYUV_I420);
4282 #else
4283       p = orc_program_new ();
4284       orc_program_set_2d (p);
4285       orc_program_set_name (p, "video_convert_orc_convert_AYUV_I420");
4286       orc_program_set_backup_function (p,
4287           _backup_video_convert_orc_convert_AYUV_I420);
4288       orc_program_add_destination (p, 2, "d1");
4289       orc_program_add_destination (p, 2, "d2");
4290       orc_program_add_destination (p, 1, "d3");
4291       orc_program_add_destination (p, 1, "d4");
4292       orc_program_add_source (p, 8, "s1");
4293       orc_program_add_source (p, 8, "s2");
4294       orc_program_add_temporary (p, 4, "t1");
4295       orc_program_add_temporary (p, 4, "t2");
4296       orc_program_add_temporary (p, 4, "t3");
4297       orc_program_add_temporary (p, 4, "t4");
4298       orc_program_add_temporary (p, 2, "t5");
4299       orc_program_add_temporary (p, 2, "t6");
4300       orc_program_add_temporary (p, 1, "t7");
4301       orc_program_add_temporary (p, 1, "t8");
4302
4303       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
4304           ORC_VAR_D1);
4305       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
4306           ORC_VAR_D1, ORC_VAR_D1);
4307       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_S2,
4308           ORC_VAR_D1);
4309       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D2, ORC_VAR_T1,
4310           ORC_VAR_D1, ORC_VAR_D1);
4311       orc_program_append_2 (p, "avgub", 2, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T3,
4312           ORC_VAR_D1);
4313       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_T4,
4314           ORC_VAR_D1);
4315       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T7, ORC_VAR_T8, ORC_VAR_T5,
4316           ORC_VAR_D1);
4317       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D3, ORC_VAR_T7, ORC_VAR_T8,
4318           ORC_VAR_D1);
4319       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T7, ORC_VAR_T8, ORC_VAR_T6,
4320           ORC_VAR_D1);
4321       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D4, ORC_VAR_T7, ORC_VAR_T8,
4322           ORC_VAR_D1);
4323 #endif
4324
4325       orc_program_compile (p);
4326       c = orc_program_take_code (p);
4327       orc_program_free (p);
4328     }
4329     p_inited = TRUE;
4330     orc_once_mutex_unlock ();
4331   }
4332   ex->arrays[ORC_VAR_A2] = c;
4333   ex->program = 0;
4334
4335   ex->n = n;
4336   ORC_EXECUTOR_M (ex) = m;
4337   ex->arrays[ORC_VAR_D1] = d1;
4338   ex->params[ORC_VAR_D1] = d1_stride;
4339   ex->arrays[ORC_VAR_D2] = d2;
4340   ex->params[ORC_VAR_D2] = d2_stride;
4341   ex->arrays[ORC_VAR_D3] = d3;
4342   ex->params[ORC_VAR_D3] = d3_stride;
4343   ex->arrays[ORC_VAR_D4] = d4;
4344   ex->params[ORC_VAR_D4] = d4_stride;
4345   ex->arrays[ORC_VAR_S1] = (void *) s1;
4346   ex->params[ORC_VAR_S1] = s1_stride;
4347   ex->arrays[ORC_VAR_S2] = (void *) s2;
4348   ex->params[ORC_VAR_S2] = s2_stride;
4349
4350   func = c->exec;
4351   func (ex);
4352 }
4353 #endif
4354
4355
4356 /* video_convert_orc_convert_AYUV_YUY2 */
4357 #ifdef DISABLE_ORC
4358 void
4359 video_convert_orc_convert_AYUV_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
4360     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
4361 {
4362   int i;
4363   int j;
4364   orc_union32 *ORC_RESTRICT ptr0;
4365   const orc_union64 *ORC_RESTRICT ptr4;
4366   orc_union64 var37;
4367   orc_union32 var38;
4368   orc_union32 var39;
4369   orc_union32 var40;
4370   orc_union16 var41;
4371   orc_union16 var42;
4372   orc_union16 var43;
4373   orc_union16 var44;
4374
4375   for (j = 0; j < m; j++) {
4376     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
4377     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
4378
4379
4380     for (i = 0; i < n; i++) {
4381       /* 0: loadq */
4382       var37 = ptr4[i];
4383       /* 1: splitlw */
4384       {
4385         orc_union32 _src;
4386         _src.i = var37.x2[0];
4387         var39.x2[0] = _src.x2[1];
4388         var40.x2[0] = _src.x2[0];
4389       }
4390       {
4391         orc_union32 _src;
4392         _src.i = var37.x2[1];
4393         var39.x2[1] = _src.x2[1];
4394         var40.x2[1] = _src.x2[0];
4395       }
4396       /* 2: splitlw */
4397       {
4398         orc_union32 _src;
4399         _src.i = var39.i;
4400         var41.i = _src.x2[1];
4401         var42.i = _src.x2[0];
4402       }
4403       /* 3: avgub */
4404       var43.x2[0] =
4405           ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
4406       var43.x2[1] =
4407           ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
4408       /* 4: select1wb */
4409       {
4410         orc_union16 _src;
4411         _src.i = var40.x2[0];
4412         var44.x2[0] = _src.x2[1];
4413       }
4414       {
4415         orc_union16 _src;
4416         _src.i = var40.x2[1];
4417         var44.x2[1] = _src.x2[1];
4418       }
4419       /* 5: mergebw */
4420       {
4421         orc_union16 _dest;
4422         _dest.x2[0] = var44.x2[0];
4423         _dest.x2[1] = var43.x2[0];
4424         var38.x2[0] = _dest.i;
4425       }
4426       {
4427         orc_union16 _dest;
4428         _dest.x2[0] = var44.x2[1];
4429         _dest.x2[1] = var43.x2[1];
4430         var38.x2[1] = _dest.i;
4431       }
4432       /* 6: storel */
4433       ptr0[i] = var38;
4434     }
4435   }
4436
4437 }
4438
4439 #else
4440 static void
4441 _backup_video_convert_orc_convert_AYUV_YUY2 (OrcExecutor * ORC_RESTRICT ex)
4442 {
4443   int i;
4444   int j;
4445   int n = ex->n;
4446   int m = ex->params[ORC_VAR_A1];
4447   orc_union32 *ORC_RESTRICT ptr0;
4448   const orc_union64 *ORC_RESTRICT ptr4;
4449   orc_union64 var37;
4450   orc_union32 var38;
4451   orc_union32 var39;
4452   orc_union32 var40;
4453   orc_union16 var41;
4454   orc_union16 var42;
4455   orc_union16 var43;
4456   orc_union16 var44;
4457
4458   for (j = 0; j < m; j++) {
4459     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
4460     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
4461
4462
4463     for (i = 0; i < n; i++) {
4464       /* 0: loadq */
4465       var37 = ptr4[i];
4466       /* 1: splitlw */
4467       {
4468         orc_union32 _src;
4469         _src.i = var37.x2[0];
4470         var39.x2[0] = _src.x2[1];
4471         var40.x2[0] = _src.x2[0];
4472       }
4473       {
4474         orc_union32 _src;
4475         _src.i = var37.x2[1];
4476         var39.x2[1] = _src.x2[1];
4477         var40.x2[1] = _src.x2[0];
4478       }
4479       /* 2: splitlw */
4480       {
4481         orc_union32 _src;
4482         _src.i = var39.i;
4483         var41.i = _src.x2[1];
4484         var42.i = _src.x2[0];
4485       }
4486       /* 3: avgub */
4487       var43.x2[0] =
4488           ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
4489       var43.x2[1] =
4490           ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
4491       /* 4: select1wb */
4492       {
4493         orc_union16 _src;
4494         _src.i = var40.x2[0];
4495         var44.x2[0] = _src.x2[1];
4496       }
4497       {
4498         orc_union16 _src;
4499         _src.i = var40.x2[1];
4500         var44.x2[1] = _src.x2[1];
4501       }
4502       /* 5: mergebw */
4503       {
4504         orc_union16 _dest;
4505         _dest.x2[0] = var44.x2[0];
4506         _dest.x2[1] = var43.x2[0];
4507         var38.x2[0] = _dest.i;
4508       }
4509       {
4510         orc_union16 _dest;
4511         _dest.x2[0] = var44.x2[1];
4512         _dest.x2[1] = var43.x2[1];
4513         var38.x2[1] = _dest.i;
4514       }
4515       /* 6: storel */
4516       ptr0[i] = var38;
4517     }
4518   }
4519
4520 }
4521
4522 void
4523 video_convert_orc_convert_AYUV_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
4524     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
4525 {
4526   OrcExecutor _ex, *ex = &_ex;
4527   static volatile int p_inited = 0;
4528   static OrcCode *c = 0;
4529   void (*func) (OrcExecutor *);
4530
4531   if (!p_inited) {
4532     orc_once_mutex_lock ();
4533     if (!p_inited) {
4534       OrcProgram *p;
4535
4536 #if 1
4537       static const orc_uint8 bc[] = {
4538         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
4539         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 65, 89,
4540         85, 86, 95, 89, 85, 89, 50, 11, 4, 4, 12, 8, 8, 20, 2, 20,
4541         2, 20, 2, 20, 4, 20, 4, 21, 1, 198, 36, 35, 4, 198, 33, 34,
4542         36, 21, 1, 39, 33, 33, 34, 21, 1, 189, 32, 35, 21, 1, 196, 0,
4543         32, 33, 2, 0,
4544       };
4545       p = orc_program_new_from_static_bytecode (bc);
4546       orc_program_set_backup_function (p,
4547           _backup_video_convert_orc_convert_AYUV_YUY2);
4548 #else
4549       p = orc_program_new ();
4550       orc_program_set_2d (p);
4551       orc_program_set_name (p, "video_convert_orc_convert_AYUV_YUY2");
4552       orc_program_set_backup_function (p,
4553           _backup_video_convert_orc_convert_AYUV_YUY2);
4554       orc_program_add_destination (p, 4, "d1");
4555       orc_program_add_source (p, 8, "s1");
4556       orc_program_add_temporary (p, 2, "t1");
4557       orc_program_add_temporary (p, 2, "t2");
4558       orc_program_add_temporary (p, 2, "t3");
4559       orc_program_add_temporary (p, 4, "t4");
4560       orc_program_add_temporary (p, 4, "t5");
4561
4562       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_S1,
4563           ORC_VAR_D1);
4564       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T5,
4565           ORC_VAR_D1);
4566       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3,
4567           ORC_VAR_D1);
4568       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T4,
4569           ORC_VAR_D1, ORC_VAR_D1);
4570       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
4571           ORC_VAR_D1);
4572 #endif
4573
4574       orc_program_compile (p);
4575       c = orc_program_take_code (p);
4576       orc_program_free (p);
4577     }
4578     p_inited = TRUE;
4579     orc_once_mutex_unlock ();
4580   }
4581   ex->arrays[ORC_VAR_A2] = c;
4582   ex->program = 0;
4583
4584   ex->n = n;
4585   ORC_EXECUTOR_M (ex) = m;
4586   ex->arrays[ORC_VAR_D1] = d1;
4587   ex->params[ORC_VAR_D1] = d1_stride;
4588   ex->arrays[ORC_VAR_S1] = (void *) s1;
4589   ex->params[ORC_VAR_S1] = s1_stride;
4590
4591   func = c->exec;
4592   func (ex);
4593 }
4594 #endif
4595
4596
4597 /* video_convert_orc_convert_AYUV_UYVY */
4598 #ifdef DISABLE_ORC
4599 void
4600 video_convert_orc_convert_AYUV_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
4601     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
4602 {
4603   int i;
4604   int j;
4605   orc_union32 *ORC_RESTRICT ptr0;
4606   const orc_union64 *ORC_RESTRICT ptr4;
4607   orc_union64 var37;
4608   orc_union32 var38;
4609   orc_union32 var39;
4610   orc_union32 var40;
4611   orc_union16 var41;
4612   orc_union16 var42;
4613   orc_union16 var43;
4614   orc_union16 var44;
4615
4616   for (j = 0; j < m; j++) {
4617     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
4618     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
4619
4620
4621     for (i = 0; i < n; i++) {
4622       /* 0: loadq */
4623       var37 = ptr4[i];
4624       /* 1: splitlw */
4625       {
4626         orc_union32 _src;
4627         _src.i = var37.x2[0];
4628         var39.x2[0] = _src.x2[1];
4629         var40.x2[0] = _src.x2[0];
4630       }
4631       {
4632         orc_union32 _src;
4633         _src.i = var37.x2[1];
4634         var39.x2[1] = _src.x2[1];
4635         var40.x2[1] = _src.x2[0];
4636       }
4637       /* 2: splitlw */
4638       {
4639         orc_union32 _src;
4640         _src.i = var39.i;
4641         var41.i = _src.x2[1];
4642         var42.i = _src.x2[0];
4643       }
4644       /* 3: avgub */
4645       var43.x2[0] =
4646           ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
4647       var43.x2[1] =
4648           ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
4649       /* 4: select1wb */
4650       {
4651         orc_union16 _src;
4652         _src.i = var40.x2[0];
4653         var44.x2[0] = _src.x2[1];
4654       }
4655       {
4656         orc_union16 _src;
4657         _src.i = var40.x2[1];
4658         var44.x2[1] = _src.x2[1];
4659       }
4660       /* 5: mergebw */
4661       {
4662         orc_union16 _dest;
4663         _dest.x2[0] = var43.x2[0];
4664         _dest.x2[1] = var44.x2[0];
4665         var38.x2[0] = _dest.i;
4666       }
4667       {
4668         orc_union16 _dest;
4669         _dest.x2[0] = var43.x2[1];
4670         _dest.x2[1] = var44.x2[1];
4671         var38.x2[1] = _dest.i;
4672       }
4673       /* 6: storel */
4674       ptr0[i] = var38;
4675     }
4676   }
4677
4678 }
4679
4680 #else
4681 static void
4682 _backup_video_convert_orc_convert_AYUV_UYVY (OrcExecutor * ORC_RESTRICT ex)
4683 {
4684   int i;
4685   int j;
4686   int n = ex->n;
4687   int m = ex->params[ORC_VAR_A1];
4688   orc_union32 *ORC_RESTRICT ptr0;
4689   const orc_union64 *ORC_RESTRICT ptr4;
4690   orc_union64 var37;
4691   orc_union32 var38;
4692   orc_union32 var39;
4693   orc_union32 var40;
4694   orc_union16 var41;
4695   orc_union16 var42;
4696   orc_union16 var43;
4697   orc_union16 var44;
4698
4699   for (j = 0; j < m; j++) {
4700     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
4701     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
4702
4703
4704     for (i = 0; i < n; i++) {
4705       /* 0: loadq */
4706       var37 = ptr4[i];
4707       /* 1: splitlw */
4708       {
4709         orc_union32 _src;
4710         _src.i = var37.x2[0];
4711         var39.x2[0] = _src.x2[1];
4712         var40.x2[0] = _src.x2[0];
4713       }
4714       {
4715         orc_union32 _src;
4716         _src.i = var37.x2[1];
4717         var39.x2[1] = _src.x2[1];
4718         var40.x2[1] = _src.x2[0];
4719       }
4720       /* 2: splitlw */
4721       {
4722         orc_union32 _src;
4723         _src.i = var39.i;
4724         var41.i = _src.x2[1];
4725         var42.i = _src.x2[0];
4726       }
4727       /* 3: avgub */
4728       var43.x2[0] =
4729           ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
4730       var43.x2[1] =
4731           ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
4732       /* 4: select1wb */
4733       {
4734         orc_union16 _src;
4735         _src.i = var40.x2[0];
4736         var44.x2[0] = _src.x2[1];
4737       }
4738       {
4739         orc_union16 _src;
4740         _src.i = var40.x2[1];
4741         var44.x2[1] = _src.x2[1];
4742       }
4743       /* 5: mergebw */
4744       {
4745         orc_union16 _dest;
4746         _dest.x2[0] = var43.x2[0];
4747         _dest.x2[1] = var44.x2[0];
4748         var38.x2[0] = _dest.i;
4749       }
4750       {
4751         orc_union16 _dest;
4752         _dest.x2[0] = var43.x2[1];
4753         _dest.x2[1] = var44.x2[1];
4754         var38.x2[1] = _dest.i;
4755       }
4756       /* 6: storel */
4757       ptr0[i] = var38;
4758     }
4759   }
4760
4761 }
4762
4763 void
4764 video_convert_orc_convert_AYUV_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
4765     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
4766 {
4767   OrcExecutor _ex, *ex = &_ex;
4768   static volatile int p_inited = 0;
4769   static OrcCode *c = 0;
4770   void (*func) (OrcExecutor *);
4771
4772   if (!p_inited) {
4773     orc_once_mutex_lock ();
4774     if (!p_inited) {
4775       OrcProgram *p;
4776
4777 #if 1
4778       static const orc_uint8 bc[] = {
4779         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
4780         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 65, 89,
4781         85, 86, 95, 85, 89, 86, 89, 11, 4, 4, 12, 8, 8, 20, 2, 20,
4782         2, 20, 2, 20, 4, 20, 4, 21, 1, 198, 36, 35, 4, 198, 33, 34,
4783         36, 21, 1, 39, 33, 33, 34, 21, 1, 189, 32, 35, 21, 1, 196, 0,
4784         33, 32, 2, 0,
4785       };
4786       p = orc_program_new_from_static_bytecode (bc);
4787       orc_program_set_backup_function (p,
4788           _backup_video_convert_orc_convert_AYUV_UYVY);
4789 #else
4790       p = orc_program_new ();
4791       orc_program_set_2d (p);
4792       orc_program_set_name (p, "video_convert_orc_convert_AYUV_UYVY");
4793       orc_program_set_backup_function (p,
4794           _backup_video_convert_orc_convert_AYUV_UYVY);
4795       orc_program_add_destination (p, 4, "d1");
4796       orc_program_add_source (p, 8, "s1");
4797       orc_program_add_temporary (p, 2, "t1");
4798       orc_program_add_temporary (p, 2, "t2");
4799       orc_program_add_temporary (p, 2, "t3");
4800       orc_program_add_temporary (p, 4, "t4");
4801       orc_program_add_temporary (p, 4, "t5");
4802
4803       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_S1,
4804           ORC_VAR_D1);
4805       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T5,
4806           ORC_VAR_D1);
4807       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3,
4808           ORC_VAR_D1);
4809       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T4,
4810           ORC_VAR_D1, ORC_VAR_D1);
4811       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
4812           ORC_VAR_D1);
4813 #endif
4814
4815       orc_program_compile (p);
4816       c = orc_program_take_code (p);
4817       orc_program_free (p);
4818     }
4819     p_inited = TRUE;
4820     orc_once_mutex_unlock ();
4821   }
4822   ex->arrays[ORC_VAR_A2] = c;
4823   ex->program = 0;
4824
4825   ex->n = n;
4826   ORC_EXECUTOR_M (ex) = m;
4827   ex->arrays[ORC_VAR_D1] = d1;
4828   ex->params[ORC_VAR_D1] = d1_stride;
4829   ex->arrays[ORC_VAR_S1] = (void *) s1;
4830   ex->params[ORC_VAR_S1] = s1_stride;
4831
4832   func = c->exec;
4833   func (ex);
4834 }
4835 #endif
4836
4837
4838 /* video_convert_orc_convert_AYUV_Y42B */
4839 #ifdef DISABLE_ORC
4840 void
4841 video_convert_orc_convert_AYUV_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride,
4842     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
4843     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
4844 {
4845   int i;
4846   int j;
4847   orc_union16 *ORC_RESTRICT ptr0;
4848   orc_int8 *ORC_RESTRICT ptr1;
4849   orc_int8 *ORC_RESTRICT ptr2;
4850   const orc_union64 *ORC_RESTRICT ptr4;
4851   orc_union64 var36;
4852   orc_int8 var37;
4853   orc_int8 var38;
4854   orc_union16 var39;
4855   orc_union32 var40;
4856   orc_union32 var41;
4857   orc_union16 var42;
4858   orc_union16 var43;
4859   orc_union16 var44;
4860
4861   for (j = 0; j < m; j++) {
4862     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
4863     ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
4864     ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j);
4865     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
4866
4867
4868     for (i = 0; i < n; i++) {
4869       /* 0: loadq */
4870       var36 = ptr4[i];
4871       /* 1: splitlw */
4872       {
4873         orc_union32 _src;
4874         _src.i = var36.x2[0];
4875         var40.x2[0] = _src.x2[1];
4876         var41.x2[0] = _src.x2[0];
4877       }
4878       {
4879         orc_union32 _src;
4880         _src.i = var36.x2[1];
4881         var40.x2[1] = _src.x2[1];
4882         var41.x2[1] = _src.x2[0];
4883       }
4884       /* 2: splitlw */
4885       {
4886         orc_union32 _src;
4887         _src.i = var40.i;
4888         var42.i = _src.x2[1];
4889         var43.i = _src.x2[0];
4890       }
4891       /* 3: avgub */
4892       var44.x2[0] =
4893           ((orc_uint8) var42.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1;
4894       var44.x2[1] =
4895           ((orc_uint8) var42.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1;
4896       /* 4: splitwb */
4897       {
4898         orc_union16 _src;
4899         _src.i = var44.i;
4900         var37 = _src.x2[1];
4901         var38 = _src.x2[0];
4902       }
4903       /* 5: storeb */
4904       ptr2[i] = var37;
4905       /* 6: storeb */
4906       ptr1[i] = var38;
4907       /* 7: select1wb */
4908       {
4909         orc_union16 _src;
4910         _src.i = var41.x2[0];
4911         var39.x2[0] = _src.x2[1];
4912       }
4913       {
4914         orc_union16 _src;
4915         _src.i = var41.x2[1];
4916         var39.x2[1] = _src.x2[1];
4917       }
4918       /* 8: storew */
4919       ptr0[i] = var39;
4920     }
4921   }
4922
4923 }
4924
4925 #else
4926 static void
4927 _backup_video_convert_orc_convert_AYUV_Y42B (OrcExecutor * ORC_RESTRICT ex)
4928 {
4929   int i;
4930   int j;
4931   int n = ex->n;
4932   int m = ex->params[ORC_VAR_A1];
4933   orc_union16 *ORC_RESTRICT ptr0;
4934   orc_int8 *ORC_RESTRICT ptr1;
4935   orc_int8 *ORC_RESTRICT ptr2;
4936   const orc_union64 *ORC_RESTRICT ptr4;
4937   orc_union64 var36;
4938   orc_int8 var37;
4939   orc_int8 var38;
4940   orc_union16 var39;
4941   orc_union32 var40;
4942   orc_union32 var41;
4943   orc_union16 var42;
4944   orc_union16 var43;
4945   orc_union16 var44;
4946
4947   for (j = 0; j < m; j++) {
4948     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
4949     ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
4950     ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j);
4951     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
4952
4953
4954     for (i = 0; i < n; i++) {
4955       /* 0: loadq */
4956       var36 = ptr4[i];
4957       /* 1: splitlw */
4958       {
4959         orc_union32 _src;
4960         _src.i = var36.x2[0];
4961         var40.x2[0] = _src.x2[1];
4962         var41.x2[0] = _src.x2[0];
4963       }
4964       {
4965         orc_union32 _src;
4966         _src.i = var36.x2[1];
4967         var40.x2[1] = _src.x2[1];
4968         var41.x2[1] = _src.x2[0];
4969       }
4970       /* 2: splitlw */
4971       {
4972         orc_union32 _src;
4973         _src.i = var40.i;
4974         var42.i = _src.x2[1];
4975         var43.i = _src.x2[0];
4976       }
4977       /* 3: avgub */
4978       var44.x2[0] =
4979           ((orc_uint8) var42.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1;
4980       var44.x2[1] =
4981           ((orc_uint8) var42.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1;
4982       /* 4: splitwb */
4983       {
4984         orc_union16 _src;
4985         _src.i = var44.i;
4986         var37 = _src.x2[1];
4987         var38 = _src.x2[0];
4988       }
4989       /* 5: storeb */
4990       ptr2[i] = var37;
4991       /* 6: storeb */
4992       ptr1[i] = var38;
4993       /* 7: select1wb */
4994       {
4995         orc_union16 _src;
4996         _src.i = var41.x2[0];
4997         var39.x2[0] = _src.x2[1];
4998       }
4999       {
5000         orc_union16 _src;
5001         _src.i = var41.x2[1];
5002         var39.x2[1] = _src.x2[1];
5003       }
5004       /* 8: storew */
5005       ptr0[i] = var39;
5006     }
5007   }
5008
5009 }
5010
5011 void
5012 video_convert_orc_convert_AYUV_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride,
5013     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
5014     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
5015 {
5016   OrcExecutor _ex, *ex = &_ex;
5017   static volatile int p_inited = 0;
5018   static OrcCode *c = 0;
5019   void (*func) (OrcExecutor *);
5020
5021   if (!p_inited) {
5022     orc_once_mutex_lock ();
5023     if (!p_inited) {
5024       OrcProgram *p;
5025
5026 #if 1
5027       static const orc_uint8 bc[] = {
5028         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
5029         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 65, 89,
5030         85, 86, 95, 89, 52, 50, 66, 11, 2, 2, 11, 1, 1, 11, 1, 1,
5031         12, 8, 8, 20, 4, 20, 4, 20, 2, 20, 2, 21, 1, 198, 33, 32,
5032         4, 198, 34, 35, 33, 21, 1, 39, 34, 34, 35, 199, 2, 1, 34, 21,
5033         1, 189, 0, 32, 2, 0,
5034       };
5035       p = orc_program_new_from_static_bytecode (bc);
5036       orc_program_set_backup_function (p,
5037           _backup_video_convert_orc_convert_AYUV_Y42B);
5038 #else
5039       p = orc_program_new ();
5040       orc_program_set_2d (p);
5041       orc_program_set_name (p, "video_convert_orc_convert_AYUV_Y42B");
5042       orc_program_set_backup_function (p,
5043           _backup_video_convert_orc_convert_AYUV_Y42B);
5044       orc_program_add_destination (p, 2, "d1");
5045       orc_program_add_destination (p, 1, "d2");
5046       orc_program_add_destination (p, 1, "d3");
5047       orc_program_add_source (p, 8, "s1");
5048       orc_program_add_temporary (p, 4, "t1");
5049       orc_program_add_temporary (p, 4, "t2");
5050       orc_program_add_temporary (p, 2, "t3");
5051       orc_program_add_temporary (p, 2, "t4");
5052
5053       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
5054           ORC_VAR_D1);
5055       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2,
5056           ORC_VAR_D1);
5057       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4,
5058           ORC_VAR_D1);
5059       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T3,
5060           ORC_VAR_D1);
5061       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
5062           ORC_VAR_D1, ORC_VAR_D1);
5063 #endif
5064
5065       orc_program_compile (p);
5066       c = orc_program_take_code (p);
5067       orc_program_free (p);
5068     }
5069     p_inited = TRUE;
5070     orc_once_mutex_unlock ();
5071   }
5072   ex->arrays[ORC_VAR_A2] = c;
5073   ex->program = 0;
5074
5075   ex->n = n;
5076   ORC_EXECUTOR_M (ex) = m;
5077   ex->arrays[ORC_VAR_D1] = d1;
5078   ex->params[ORC_VAR_D1] = d1_stride;
5079   ex->arrays[ORC_VAR_D2] = d2;
5080   ex->params[ORC_VAR_D2] = d2_stride;
5081   ex->arrays[ORC_VAR_D3] = d3;
5082   ex->params[ORC_VAR_D3] = d3_stride;
5083   ex->arrays[ORC_VAR_S1] = (void *) s1;
5084   ex->params[ORC_VAR_S1] = s1_stride;
5085
5086   func = c->exec;
5087   func (ex);
5088 }
5089 #endif
5090
5091
5092 /* video_convert_orc_convert_AYUV_Y444 */
5093 #ifdef DISABLE_ORC
5094 void
5095 video_convert_orc_convert_AYUV_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride,
5096     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
5097     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
5098 {
5099   int i;
5100   int j;
5101   orc_int8 *ORC_RESTRICT ptr0;
5102   orc_int8 *ORC_RESTRICT ptr1;
5103   orc_int8 *ORC_RESTRICT ptr2;
5104   const orc_union32 *ORC_RESTRICT ptr4;
5105   orc_union32 var34;
5106   orc_int8 var35;
5107   orc_int8 var36;
5108   orc_int8 var37;
5109   orc_union16 var38;
5110   orc_union16 var39;
5111
5112   for (j = 0; j < m; j++) {
5113     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
5114     ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
5115     ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j);
5116     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
5117
5118
5119     for (i = 0; i < n; i++) {
5120       /* 0: loadl */
5121       var34 = ptr4[i];
5122       /* 1: splitlw */
5123       {
5124         orc_union32 _src;
5125         _src.i = var34.i;
5126         var38.i = _src.x2[1];
5127         var39.i = _src.x2[0];
5128       }
5129       /* 2: splitwb */
5130       {
5131         orc_union16 _src;
5132         _src.i = var38.i;
5133         var35 = _src.x2[1];
5134         var36 = _src.x2[0];
5135       }
5136       /* 3: storeb */
5137       ptr2[i] = var35;
5138       /* 4: storeb */
5139       ptr1[i] = var36;
5140       /* 5: select1wb */
5141       {
5142         orc_union16 _src;
5143         _src.i = var39.i;
5144         var37 = _src.x2[1];
5145       }
5146       /* 6: storeb */
5147       ptr0[i] = var37;
5148     }
5149   }
5150
5151 }
5152
5153 #else
5154 static void
5155 _backup_video_convert_orc_convert_AYUV_Y444 (OrcExecutor * ORC_RESTRICT ex)
5156 {
5157   int i;
5158   int j;
5159   int n = ex->n;
5160   int m = ex->params[ORC_VAR_A1];
5161   orc_int8 *ORC_RESTRICT ptr0;
5162   orc_int8 *ORC_RESTRICT ptr1;
5163   orc_int8 *ORC_RESTRICT ptr2;
5164   const orc_union32 *ORC_RESTRICT ptr4;
5165   orc_union32 var34;
5166   orc_int8 var35;
5167   orc_int8 var36;
5168   orc_int8 var37;
5169   orc_union16 var38;
5170   orc_union16 var39;
5171
5172   for (j = 0; j < m; j++) {
5173     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
5174     ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
5175     ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j);
5176     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
5177
5178
5179     for (i = 0; i < n; i++) {
5180       /* 0: loadl */
5181       var34 = ptr4[i];
5182       /* 1: splitlw */
5183       {
5184         orc_union32 _src;
5185         _src.i = var34.i;
5186         var38.i = _src.x2[1];
5187         var39.i = _src.x2[0];
5188       }
5189       /* 2: splitwb */
5190       {
5191         orc_union16 _src;
5192         _src.i = var38.i;
5193         var35 = _src.x2[1];
5194         var36 = _src.x2[0];
5195       }
5196       /* 3: storeb */
5197       ptr2[i] = var35;
5198       /* 4: storeb */
5199       ptr1[i] = var36;
5200       /* 5: select1wb */
5201       {
5202         orc_union16 _src;
5203         _src.i = var39.i;
5204         var37 = _src.x2[1];
5205       }
5206       /* 6: storeb */
5207       ptr0[i] = var37;
5208     }
5209   }
5210
5211 }
5212
5213 void
5214 video_convert_orc_convert_AYUV_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride,
5215     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
5216     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
5217 {
5218   OrcExecutor _ex, *ex = &_ex;
5219   static volatile int p_inited = 0;
5220   static OrcCode *c = 0;
5221   void (*func) (OrcExecutor *);
5222
5223   if (!p_inited) {
5224     orc_once_mutex_lock ();
5225     if (!p_inited) {
5226       OrcProgram *p;
5227
5228 #if 1
5229       static const orc_uint8 bc[] = {
5230         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
5231         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 65, 89,
5232         85, 86, 95, 89, 52, 52, 52, 11, 1, 1, 11, 1, 1, 11, 1, 1,
5233         12, 4, 4, 20, 2, 20, 2, 198, 33, 32, 4, 199, 2, 1, 33, 189,
5234         0, 32, 2, 0,
5235       };
5236       p = orc_program_new_from_static_bytecode (bc);
5237       orc_program_set_backup_function (p,
5238           _backup_video_convert_orc_convert_AYUV_Y444);
5239 #else
5240       p = orc_program_new ();
5241       orc_program_set_2d (p);
5242       orc_program_set_name (p, "video_convert_orc_convert_AYUV_Y444");
5243       orc_program_set_backup_function (p,
5244           _backup_video_convert_orc_convert_AYUV_Y444);
5245       orc_program_add_destination (p, 1, "d1");
5246       orc_program_add_destination (p, 1, "d2");
5247       orc_program_add_destination (p, 1, "d3");
5248       orc_program_add_source (p, 4, "s1");
5249       orc_program_add_temporary (p, 2, "t1");
5250       orc_program_add_temporary (p, 2, "t2");
5251
5252       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
5253           ORC_VAR_D1);
5254       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T2,
5255           ORC_VAR_D1);
5256       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1,
5257           ORC_VAR_D1, ORC_VAR_D1);
5258 #endif
5259
5260       orc_program_compile (p);
5261       c = orc_program_take_code (p);
5262       orc_program_free (p);
5263     }
5264     p_inited = TRUE;
5265     orc_once_mutex_unlock ();
5266   }
5267   ex->arrays[ORC_VAR_A2] = c;
5268   ex->program = 0;
5269
5270   ex->n = n;
5271   ORC_EXECUTOR_M (ex) = m;
5272   ex->arrays[ORC_VAR_D1] = d1;
5273   ex->params[ORC_VAR_D1] = d1_stride;
5274   ex->arrays[ORC_VAR_D2] = d2;
5275   ex->params[ORC_VAR_D2] = d2_stride;
5276   ex->arrays[ORC_VAR_D3] = d3;
5277   ex->params[ORC_VAR_D3] = d3_stride;
5278   ex->arrays[ORC_VAR_S1] = (void *) s1;
5279   ex->params[ORC_VAR_S1] = s1_stride;
5280
5281   func = c->exec;
5282   func (ex);
5283 }
5284 #endif
5285
5286
5287 /* video_convert_orc_convert_Y42B_YUY2 */
5288 #ifdef DISABLE_ORC
5289 void
5290 video_convert_orc_convert_Y42B_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
5291     const guint8 * ORC_RESTRICT s1, int s1_stride,
5292     const guint8 * ORC_RESTRICT s2, int s2_stride,
5293     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
5294 {
5295   int i;
5296   int j;
5297   orc_union32 *ORC_RESTRICT ptr0;
5298   const orc_union16 *ORC_RESTRICT ptr4;
5299   const orc_int8 *ORC_RESTRICT ptr5;
5300   const orc_int8 *ORC_RESTRICT ptr6;
5301   orc_int8 var33;
5302   orc_int8 var34;
5303   orc_union16 var35;
5304   orc_union32 var36;
5305   orc_union16 var37;
5306
5307   for (j = 0; j < m; j++) {
5308     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
5309     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
5310     ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
5311     ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j);
5312
5313
5314     for (i = 0; i < n; i++) {
5315       /* 0: loadb */
5316       var33 = ptr5[i];
5317       /* 1: loadb */
5318       var34 = ptr6[i];
5319       /* 2: mergebw */
5320       {
5321         orc_union16 _dest;
5322         _dest.x2[0] = var33;
5323         _dest.x2[1] = var34;
5324         var37.i = _dest.i;
5325       }
5326       /* 3: loadw */
5327       var35 = ptr4[i];
5328       /* 4: mergebw */
5329       {
5330         orc_union16 _dest;
5331         _dest.x2[0] = var35.x2[0];
5332         _dest.x2[1] = var37.x2[0];
5333         var36.x2[0] = _dest.i;
5334       }
5335       {
5336         orc_union16 _dest;
5337         _dest.x2[0] = var35.x2[1];
5338         _dest.x2[1] = var37.x2[1];
5339         var36.x2[1] = _dest.i;
5340       }
5341       /* 5: storel */
5342       ptr0[i] = var36;
5343     }
5344   }
5345
5346 }
5347
5348 #else
5349 static void
5350 _backup_video_convert_orc_convert_Y42B_YUY2 (OrcExecutor * ORC_RESTRICT ex)
5351 {
5352   int i;
5353   int j;
5354   int n = ex->n;
5355   int m = ex->params[ORC_VAR_A1];
5356   orc_union32 *ORC_RESTRICT ptr0;
5357   const orc_union16 *ORC_RESTRICT ptr4;
5358   const orc_int8 *ORC_RESTRICT ptr5;
5359   const orc_int8 *ORC_RESTRICT ptr6;
5360   orc_int8 var33;
5361   orc_int8 var34;
5362   orc_union16 var35;
5363   orc_union32 var36;
5364   orc_union16 var37;
5365
5366   for (j = 0; j < m; j++) {
5367     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
5368     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
5369     ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
5370     ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j);
5371
5372
5373     for (i = 0; i < n; i++) {
5374       /* 0: loadb */
5375       var33 = ptr5[i];
5376       /* 1: loadb */
5377       var34 = ptr6[i];
5378       /* 2: mergebw */
5379       {
5380         orc_union16 _dest;
5381         _dest.x2[0] = var33;
5382         _dest.x2[1] = var34;
5383         var37.i = _dest.i;
5384       }
5385       /* 3: loadw */
5386       var35 = ptr4[i];
5387       /* 4: mergebw */
5388       {
5389         orc_union16 _dest;
5390         _dest.x2[0] = var35.x2[0];
5391         _dest.x2[1] = var37.x2[0];
5392         var36.x2[0] = _dest.i;
5393       }
5394       {
5395         orc_union16 _dest;
5396         _dest.x2[0] = var35.x2[1];
5397         _dest.x2[1] = var37.x2[1];
5398         var36.x2[1] = _dest.i;
5399       }
5400       /* 5: storel */
5401       ptr0[i] = var36;
5402     }
5403   }
5404
5405 }
5406
5407 void
5408 video_convert_orc_convert_Y42B_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
5409     const guint8 * ORC_RESTRICT s1, int s1_stride,
5410     const guint8 * ORC_RESTRICT s2, int s2_stride,
5411     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
5412 {
5413   OrcExecutor _ex, *ex = &_ex;
5414   static volatile int p_inited = 0;
5415   static OrcCode *c = 0;
5416   void (*func) (OrcExecutor *);
5417
5418   if (!p_inited) {
5419     orc_once_mutex_lock ();
5420     if (!p_inited) {
5421       OrcProgram *p;
5422
5423 #if 1
5424       static const orc_uint8 bc[] = {
5425         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
5426         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 89, 52,
5427         50, 66, 95, 89, 85, 89, 50, 11, 4, 4, 12, 2, 2, 12, 1, 1,
5428         12, 1, 1, 20, 2, 196, 32, 5, 6, 21, 1, 196, 0, 4, 32, 2,
5429         0,
5430       };
5431       p = orc_program_new_from_static_bytecode (bc);
5432       orc_program_set_backup_function (p,
5433           _backup_video_convert_orc_convert_Y42B_YUY2);
5434 #else
5435       p = orc_program_new ();
5436       orc_program_set_2d (p);
5437       orc_program_set_name (p, "video_convert_orc_convert_Y42B_YUY2");
5438       orc_program_set_backup_function (p,
5439           _backup_video_convert_orc_convert_Y42B_YUY2);
5440       orc_program_add_destination (p, 4, "d1");
5441       orc_program_add_source (p, 2, "s1");
5442       orc_program_add_source (p, 1, "s2");
5443       orc_program_add_source (p, 1, "s3");
5444       orc_program_add_temporary (p, 2, "t1");
5445
5446       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3,
5447           ORC_VAR_D1);
5448       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1,
5449           ORC_VAR_D1);
5450 #endif
5451
5452       orc_program_compile (p);
5453       c = orc_program_take_code (p);
5454       orc_program_free (p);
5455     }
5456     p_inited = TRUE;
5457     orc_once_mutex_unlock ();
5458   }
5459   ex->arrays[ORC_VAR_A2] = c;
5460   ex->program = 0;
5461
5462   ex->n = n;
5463   ORC_EXECUTOR_M (ex) = m;
5464   ex->arrays[ORC_VAR_D1] = d1;
5465   ex->params[ORC_VAR_D1] = d1_stride;
5466   ex->arrays[ORC_VAR_S1] = (void *) s1;
5467   ex->params[ORC_VAR_S1] = s1_stride;
5468   ex->arrays[ORC_VAR_S2] = (void *) s2;
5469   ex->params[ORC_VAR_S2] = s2_stride;
5470   ex->arrays[ORC_VAR_S3] = (void *) s3;
5471   ex->params[ORC_VAR_S3] = s3_stride;
5472
5473   func = c->exec;
5474   func (ex);
5475 }
5476 #endif
5477
5478
5479 /* video_convert_orc_convert_Y42B_UYVY */
5480 #ifdef DISABLE_ORC
5481 void
5482 video_convert_orc_convert_Y42B_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
5483     const guint8 * ORC_RESTRICT s1, int s1_stride,
5484     const guint8 * ORC_RESTRICT s2, int s2_stride,
5485     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
5486 {
5487   int i;
5488   int j;
5489   orc_union32 *ORC_RESTRICT ptr0;
5490   const orc_union16 *ORC_RESTRICT ptr4;
5491   const orc_int8 *ORC_RESTRICT ptr5;
5492   const orc_int8 *ORC_RESTRICT ptr6;
5493   orc_int8 var33;
5494   orc_int8 var34;
5495   orc_union16 var35;
5496   orc_union32 var36;
5497   orc_union16 var37;
5498
5499   for (j = 0; j < m; j++) {
5500     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
5501     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
5502     ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
5503     ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j);
5504
5505
5506     for (i = 0; i < n; i++) {
5507       /* 0: loadb */
5508       var33 = ptr5[i];
5509       /* 1: loadb */
5510       var34 = ptr6[i];
5511       /* 2: mergebw */
5512       {
5513         orc_union16 _dest;
5514         _dest.x2[0] = var33;
5515         _dest.x2[1] = var34;
5516         var37.i = _dest.i;
5517       }
5518       /* 3: loadw */
5519       var35 = ptr4[i];
5520       /* 4: mergebw */
5521       {
5522         orc_union16 _dest;
5523         _dest.x2[0] = var37.x2[0];
5524         _dest.x2[1] = var35.x2[0];
5525         var36.x2[0] = _dest.i;
5526       }
5527       {
5528         orc_union16 _dest;
5529         _dest.x2[0] = var37.x2[1];
5530         _dest.x2[1] = var35.x2[1];
5531         var36.x2[1] = _dest.i;
5532       }
5533       /* 5: storel */
5534       ptr0[i] = var36;
5535     }
5536   }
5537
5538 }
5539
5540 #else
5541 static void
5542 _backup_video_convert_orc_convert_Y42B_UYVY (OrcExecutor * ORC_RESTRICT ex)
5543 {
5544   int i;
5545   int j;
5546   int n = ex->n;
5547   int m = ex->params[ORC_VAR_A1];
5548   orc_union32 *ORC_RESTRICT ptr0;
5549   const orc_union16 *ORC_RESTRICT ptr4;
5550   const orc_int8 *ORC_RESTRICT ptr5;
5551   const orc_int8 *ORC_RESTRICT ptr6;
5552   orc_int8 var33;
5553   orc_int8 var34;
5554   orc_union16 var35;
5555   orc_union32 var36;
5556   orc_union16 var37;
5557
5558   for (j = 0; j < m; j++) {
5559     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
5560     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
5561     ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
5562     ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j);
5563
5564
5565     for (i = 0; i < n; i++) {
5566       /* 0: loadb */
5567       var33 = ptr5[i];
5568       /* 1: loadb */
5569       var34 = ptr6[i];
5570       /* 2: mergebw */
5571       {
5572         orc_union16 _dest;
5573         _dest.x2[0] = var33;
5574         _dest.x2[1] = var34;
5575         var37.i = _dest.i;
5576       }
5577       /* 3: loadw */
5578       var35 = ptr4[i];
5579       /* 4: mergebw */
5580       {
5581         orc_union16 _dest;
5582         _dest.x2[0] = var37.x2[0];
5583         _dest.x2[1] = var35.x2[0];
5584         var36.x2[0] = _dest.i;
5585       }
5586       {
5587         orc_union16 _dest;
5588         _dest.x2[0] = var37.x2[1];
5589         _dest.x2[1] = var35.x2[1];
5590         var36.x2[1] = _dest.i;
5591       }
5592       /* 5: storel */
5593       ptr0[i] = var36;
5594     }
5595   }
5596
5597 }
5598
5599 void
5600 video_convert_orc_convert_Y42B_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
5601     const guint8 * ORC_RESTRICT s1, int s1_stride,
5602     const guint8 * ORC_RESTRICT s2, int s2_stride,
5603     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
5604 {
5605   OrcExecutor _ex, *ex = &_ex;
5606   static volatile int p_inited = 0;
5607   static OrcCode *c = 0;
5608   void (*func) (OrcExecutor *);
5609
5610   if (!p_inited) {
5611     orc_once_mutex_lock ();
5612     if (!p_inited) {
5613       OrcProgram *p;
5614
5615 #if 1
5616       static const orc_uint8 bc[] = {
5617         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
5618         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 89, 52,
5619         50, 66, 95, 85, 89, 86, 89, 11, 4, 4, 12, 2, 2, 12, 1, 1,
5620         12, 1, 1, 20, 2, 196, 32, 5, 6, 21, 1, 196, 0, 32, 4, 2,
5621         0,
5622       };
5623       p = orc_program_new_from_static_bytecode (bc);
5624       orc_program_set_backup_function (p,
5625           _backup_video_convert_orc_convert_Y42B_UYVY);
5626 #else
5627       p = orc_program_new ();
5628       orc_program_set_2d (p);
5629       orc_program_set_name (p, "video_convert_orc_convert_Y42B_UYVY");
5630       orc_program_set_backup_function (p,
5631           _backup_video_convert_orc_convert_Y42B_UYVY);
5632       orc_program_add_destination (p, 4, "d1");
5633       orc_program_add_source (p, 2, "s1");
5634       orc_program_add_source (p, 1, "s2");
5635       orc_program_add_source (p, 1, "s3");
5636       orc_program_add_temporary (p, 2, "t1");
5637
5638       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3,
5639           ORC_VAR_D1);
5640       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1,
5641           ORC_VAR_D1);
5642 #endif
5643
5644       orc_program_compile (p);
5645       c = orc_program_take_code (p);
5646       orc_program_free (p);
5647     }
5648     p_inited = TRUE;
5649     orc_once_mutex_unlock ();
5650   }
5651   ex->arrays[ORC_VAR_A2] = c;
5652   ex->program = 0;
5653
5654   ex->n = n;
5655   ORC_EXECUTOR_M (ex) = m;
5656   ex->arrays[ORC_VAR_D1] = d1;
5657   ex->params[ORC_VAR_D1] = d1_stride;
5658   ex->arrays[ORC_VAR_S1] = (void *) s1;
5659   ex->params[ORC_VAR_S1] = s1_stride;
5660   ex->arrays[ORC_VAR_S2] = (void *) s2;
5661   ex->params[ORC_VAR_S2] = s2_stride;
5662   ex->arrays[ORC_VAR_S3] = (void *) s3;
5663   ex->params[ORC_VAR_S3] = s3_stride;
5664
5665   func = c->exec;
5666   func (ex);
5667 }
5668 #endif
5669
5670
5671 /* video_convert_orc_convert_Y42B_AYUV */
5672 #ifdef DISABLE_ORC
5673 void
5674 video_convert_orc_convert_Y42B_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
5675     const guint8 * ORC_RESTRICT s1, int s1_stride,
5676     const guint8 * ORC_RESTRICT s2, int s2_stride,
5677     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
5678 {
5679   int i;
5680   int j;
5681   orc_union64 *ORC_RESTRICT ptr0;
5682   const orc_union16 *ORC_RESTRICT ptr4;
5683   const orc_int8 *ORC_RESTRICT ptr5;
5684   const orc_int8 *ORC_RESTRICT ptr6;
5685   orc_int8 var36;
5686   orc_int8 var37;
5687 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
5688   volatile orc_union16 var38;
5689 #else
5690   orc_union16 var38;
5691 #endif
5692   orc_union16 var39;
5693   orc_union64 var40;
5694   orc_union16 var41;
5695   orc_union32 var42;
5696   orc_union32 var43;
5697
5698   for (j = 0; j < m; j++) {
5699     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
5700     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
5701     ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
5702     ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j);
5703
5704     /* 3: loadpb */
5705     var38.x2[0] = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
5706     var38.x2[1] = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
5707
5708     for (i = 0; i < n; i++) {
5709       /* 0: loadb */
5710       var36 = ptr5[i];
5711       /* 1: loadb */
5712       var37 = ptr6[i];
5713       /* 2: mergebw */
5714       {
5715         orc_union16 _dest;
5716         _dest.x2[0] = var36;
5717         _dest.x2[1] = var37;
5718         var41.i = _dest.i;
5719       }
5720       /* 4: loadw */
5721       var39 = ptr4[i];
5722       /* 5: mergebw */
5723       {
5724         orc_union16 _dest;
5725         _dest.x2[0] = var38.x2[0];
5726         _dest.x2[1] = var39.x2[0];
5727         var42.x2[0] = _dest.i;
5728       }
5729       {
5730         orc_union16 _dest;
5731         _dest.x2[0] = var38.x2[1];
5732         _dest.x2[1] = var39.x2[1];
5733         var42.x2[1] = _dest.i;
5734       }
5735       /* 6: mergewl */
5736       {
5737         orc_union32 _dest;
5738         _dest.x2[0] = var41.i;
5739         _dest.x2[1] = var41.i;
5740         var43.i = _dest.i;
5741       }
5742       /* 7: mergewl */
5743       {
5744         orc_union32 _dest;
5745         _dest.x2[0] = var42.x2[0];
5746         _dest.x2[1] = var43.x2[0];
5747         var40.x2[0] = _dest.i;
5748       }
5749       {
5750         orc_union32 _dest;
5751         _dest.x2[0] = var42.x2[1];
5752         _dest.x2[1] = var43.x2[1];
5753         var40.x2[1] = _dest.i;
5754       }
5755       /* 8: storeq */
5756       ptr0[i] = var40;
5757     }
5758   }
5759
5760 }
5761
5762 #else
5763 static void
5764 _backup_video_convert_orc_convert_Y42B_AYUV (OrcExecutor * ORC_RESTRICT ex)
5765 {
5766   int i;
5767   int j;
5768   int n = ex->n;
5769   int m = ex->params[ORC_VAR_A1];
5770   orc_union64 *ORC_RESTRICT ptr0;
5771   const orc_union16 *ORC_RESTRICT ptr4;
5772   const orc_int8 *ORC_RESTRICT ptr5;
5773   const orc_int8 *ORC_RESTRICT ptr6;
5774   orc_int8 var36;
5775   orc_int8 var37;
5776 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
5777   volatile orc_union16 var38;
5778 #else
5779   orc_union16 var38;
5780 #endif
5781   orc_union16 var39;
5782   orc_union64 var40;
5783   orc_union16 var41;
5784   orc_union32 var42;
5785   orc_union32 var43;
5786
5787   for (j = 0; j < m; j++) {
5788     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
5789     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
5790     ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
5791     ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j);
5792
5793     /* 3: loadpb */
5794     var38.x2[0] = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
5795     var38.x2[1] = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
5796
5797     for (i = 0; i < n; i++) {
5798       /* 0: loadb */
5799       var36 = ptr5[i];
5800       /* 1: loadb */
5801       var37 = ptr6[i];
5802       /* 2: mergebw */
5803       {
5804         orc_union16 _dest;
5805         _dest.x2[0] = var36;
5806         _dest.x2[1] = var37;
5807         var41.i = _dest.i;
5808       }
5809       /* 4: loadw */
5810       var39 = ptr4[i];
5811       /* 5: mergebw */
5812       {
5813         orc_union16 _dest;
5814         _dest.x2[0] = var38.x2[0];
5815         _dest.x2[1] = var39.x2[0];
5816         var42.x2[0] = _dest.i;
5817       }
5818       {
5819         orc_union16 _dest;
5820         _dest.x2[0] = var38.x2[1];
5821         _dest.x2[1] = var39.x2[1];
5822         var42.x2[1] = _dest.i;
5823       }
5824       /* 6: mergewl */
5825       {
5826         orc_union32 _dest;
5827         _dest.x2[0] = var41.i;
5828         _dest.x2[1] = var41.i;
5829         var43.i = _dest.i;
5830       }
5831       /* 7: mergewl */
5832       {
5833         orc_union32 _dest;
5834         _dest.x2[0] = var42.x2[0];
5835         _dest.x2[1] = var43.x2[0];
5836         var40.x2[0] = _dest.i;
5837       }
5838       {
5839         orc_union32 _dest;
5840         _dest.x2[0] = var42.x2[1];
5841         _dest.x2[1] = var43.x2[1];
5842         var40.x2[1] = _dest.i;
5843       }
5844       /* 8: storeq */
5845       ptr0[i] = var40;
5846     }
5847   }
5848
5849 }
5850
5851 void
5852 video_convert_orc_convert_Y42B_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
5853     const guint8 * ORC_RESTRICT s1, int s1_stride,
5854     const guint8 * ORC_RESTRICT s2, int s2_stride,
5855     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
5856 {
5857   OrcExecutor _ex, *ex = &_ex;
5858   static volatile int p_inited = 0;
5859   static OrcCode *c = 0;
5860   void (*func) (OrcExecutor *);
5861
5862   if (!p_inited) {
5863     orc_once_mutex_lock ();
5864     if (!p_inited) {
5865       OrcProgram *p;
5866
5867 #if 1
5868       static const orc_uint8 bc[] = {
5869         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
5870         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 89, 52,
5871         50, 66, 95, 65, 89, 85, 86, 11, 8, 8, 12, 2, 2, 12, 1, 1,
5872         12, 1, 1, 14, 1, 255, 0, 0, 0, 20, 2, 20, 2, 20, 4, 20,
5873         4, 196, 32, 5, 6, 21, 1, 196, 35, 16, 4, 195, 34, 32, 32, 21,
5874         1, 195, 0, 35, 34, 2, 0,
5875       };
5876       p = orc_program_new_from_static_bytecode (bc);
5877       orc_program_set_backup_function (p,
5878           _backup_video_convert_orc_convert_Y42B_AYUV);
5879 #else
5880       p = orc_program_new ();
5881       orc_program_set_2d (p);
5882       orc_program_set_name (p, "video_convert_orc_convert_Y42B_AYUV");
5883       orc_program_set_backup_function (p,
5884           _backup_video_convert_orc_convert_Y42B_AYUV);
5885       orc_program_add_destination (p, 8, "d1");
5886       orc_program_add_source (p, 2, "s1");
5887       orc_program_add_source (p, 1, "s2");
5888       orc_program_add_source (p, 1, "s3");
5889       orc_program_add_constant (p, 1, 0x000000ff, "c1");
5890       orc_program_add_temporary (p, 2, "t1");
5891       orc_program_add_temporary (p, 2, "t2");
5892       orc_program_add_temporary (p, 4, "t3");
5893       orc_program_add_temporary (p, 4, "t4");
5894
5895       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3,
5896           ORC_VAR_D1);
5897       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T4, ORC_VAR_C1, ORC_VAR_S1,
5898           ORC_VAR_D1);
5899       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1,
5900           ORC_VAR_D1);
5901       orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_T3,
5902           ORC_VAR_D1);
5903 #endif
5904
5905       orc_program_compile (p);
5906       c = orc_program_take_code (p);
5907       orc_program_free (p);
5908     }
5909     p_inited = TRUE;
5910     orc_once_mutex_unlock ();
5911   }
5912   ex->arrays[ORC_VAR_A2] = c;
5913   ex->program = 0;
5914
5915   ex->n = n;
5916   ORC_EXECUTOR_M (ex) = m;
5917   ex->arrays[ORC_VAR_D1] = d1;
5918   ex->params[ORC_VAR_D1] = d1_stride;
5919   ex->arrays[ORC_VAR_S1] = (void *) s1;
5920   ex->params[ORC_VAR_S1] = s1_stride;
5921   ex->arrays[ORC_VAR_S2] = (void *) s2;
5922   ex->params[ORC_VAR_S2] = s2_stride;
5923   ex->arrays[ORC_VAR_S3] = (void *) s3;
5924   ex->params[ORC_VAR_S3] = s3_stride;
5925
5926   func = c->exec;
5927   func (ex);
5928 }
5929 #endif
5930
5931
5932 /* video_convert_orc_convert_Y444_YUY2 */
5933 #ifdef DISABLE_ORC
5934 void
5935 video_convert_orc_convert_Y444_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
5936     const guint8 * ORC_RESTRICT s1, int s1_stride,
5937     const guint8 * ORC_RESTRICT s2, int s2_stride,
5938     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
5939 {
5940   int i;
5941   int j;
5942   orc_union32 *ORC_RESTRICT ptr0;
5943   const orc_union16 *ORC_RESTRICT ptr4;
5944   const orc_union16 *ORC_RESTRICT ptr5;
5945   const orc_union16 *ORC_RESTRICT ptr6;
5946   orc_union16 var36;
5947   orc_union16 var37;
5948   orc_union16 var38;
5949   orc_union32 var39;
5950   orc_union32 var40;
5951   orc_union16 var41;
5952   orc_union16 var42;
5953   orc_union16 var43;
5954
5955   for (j = 0; j < m; j++) {
5956     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
5957     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
5958     ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
5959     ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j);
5960
5961
5962     for (i = 0; i < n; i++) {
5963       /* 0: loadw */
5964       var36 = ptr5[i];
5965       /* 1: loadw */
5966       var37 = ptr6[i];
5967       /* 2: mergebw */
5968       {
5969         orc_union16 _dest;
5970         _dest.x2[0] = var36.x2[0];
5971         _dest.x2[1] = var37.x2[0];
5972         var40.x2[0] = _dest.i;
5973       }
5974       {
5975         orc_union16 _dest;
5976         _dest.x2[0] = var36.x2[1];
5977         _dest.x2[1] = var37.x2[1];
5978         var40.x2[1] = _dest.i;
5979       }
5980       /* 3: splitlw */
5981       {
5982         orc_union32 _src;
5983         _src.i = var40.i;
5984         var41.i = _src.x2[1];
5985         var42.i = _src.x2[0];
5986       }
5987       /* 4: avgub */
5988       var43.x2[0] =
5989           ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
5990       var43.x2[1] =
5991           ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
5992       /* 5: loadw */
5993       var38 = ptr4[i];
5994       /* 6: mergebw */
5995       {
5996         orc_union16 _dest;
5997         _dest.x2[0] = var38.x2[0];
5998         _dest.x2[1] = var43.x2[0];
5999         var39.x2[0] = _dest.i;
6000       }
6001       {
6002         orc_union16 _dest;
6003         _dest.x2[0] = var38.x2[1];
6004         _dest.x2[1] = var43.x2[1];
6005         var39.x2[1] = _dest.i;
6006       }
6007       /* 7: storel */
6008       ptr0[i] = var39;
6009     }
6010   }
6011
6012 }
6013
6014 #else
6015 static void
6016 _backup_video_convert_orc_convert_Y444_YUY2 (OrcExecutor * ORC_RESTRICT ex)
6017 {
6018   int i;
6019   int j;
6020   int n = ex->n;
6021   int m = ex->params[ORC_VAR_A1];
6022   orc_union32 *ORC_RESTRICT ptr0;
6023   const orc_union16 *ORC_RESTRICT ptr4;
6024   const orc_union16 *ORC_RESTRICT ptr5;
6025   const orc_union16 *ORC_RESTRICT ptr6;
6026   orc_union16 var36;
6027   orc_union16 var37;
6028   orc_union16 var38;
6029   orc_union32 var39;
6030   orc_union32 var40;
6031   orc_union16 var41;
6032   orc_union16 var42;
6033   orc_union16 var43;
6034
6035   for (j = 0; j < m; j++) {
6036     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
6037     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
6038     ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
6039     ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j);
6040
6041
6042     for (i = 0; i < n; i++) {
6043       /* 0: loadw */
6044       var36 = ptr5[i];
6045       /* 1: loadw */
6046       var37 = ptr6[i];
6047       /* 2: mergebw */
6048       {
6049         orc_union16 _dest;
6050         _dest.x2[0] = var36.x2[0];
6051         _dest.x2[1] = var37.x2[0];
6052         var40.x2[0] = _dest.i;
6053       }
6054       {
6055         orc_union16 _dest;
6056         _dest.x2[0] = var36.x2[1];
6057         _dest.x2[1] = var37.x2[1];
6058         var40.x2[1] = _dest.i;
6059       }
6060       /* 3: splitlw */
6061       {
6062         orc_union32 _src;
6063         _src.i = var40.i;
6064         var41.i = _src.x2[1];
6065         var42.i = _src.x2[0];
6066       }
6067       /* 4: avgub */
6068       var43.x2[0] =
6069           ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
6070       var43.x2[1] =
6071           ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
6072       /* 5: loadw */
6073       var38 = ptr4[i];
6074       /* 6: mergebw */
6075       {
6076         orc_union16 _dest;
6077         _dest.x2[0] = var38.x2[0];
6078         _dest.x2[1] = var43.x2[0];
6079         var39.x2[0] = _dest.i;
6080       }
6081       {
6082         orc_union16 _dest;
6083         _dest.x2[0] = var38.x2[1];
6084         _dest.x2[1] = var43.x2[1];
6085         var39.x2[1] = _dest.i;
6086       }
6087       /* 7: storel */
6088       ptr0[i] = var39;
6089     }
6090   }
6091
6092 }
6093
6094 void
6095 video_convert_orc_convert_Y444_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
6096     const guint8 * ORC_RESTRICT s1, int s1_stride,
6097     const guint8 * ORC_RESTRICT s2, int s2_stride,
6098     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
6099 {
6100   OrcExecutor _ex, *ex = &_ex;
6101   static volatile int p_inited = 0;
6102   static OrcCode *c = 0;
6103   void (*func) (OrcExecutor *);
6104
6105   if (!p_inited) {
6106     orc_once_mutex_lock ();
6107     if (!p_inited) {
6108       OrcProgram *p;
6109
6110 #if 1
6111       static const orc_uint8 bc[] = {
6112         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
6113         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 89, 52,
6114         52, 52, 95, 89, 85, 89, 50, 11, 4, 4, 12, 2, 2, 12, 2, 2,
6115         12, 2, 2, 20, 2, 20, 4, 20, 2, 20, 2, 21, 1, 196, 33, 5,
6116         6, 198, 34, 35, 33, 21, 1, 39, 32, 34, 35, 21, 1, 196, 0, 4,
6117         32, 2, 0,
6118       };
6119       p = orc_program_new_from_static_bytecode (bc);
6120       orc_program_set_backup_function (p,
6121           _backup_video_convert_orc_convert_Y444_YUY2);
6122 #else
6123       p = orc_program_new ();
6124       orc_program_set_2d (p);
6125       orc_program_set_name (p, "video_convert_orc_convert_Y444_YUY2");
6126       orc_program_set_backup_function (p,
6127           _backup_video_convert_orc_convert_Y444_YUY2);
6128       orc_program_add_destination (p, 4, "d1");
6129       orc_program_add_source (p, 2, "s1");
6130       orc_program_add_source (p, 2, "s2");
6131       orc_program_add_source (p, 2, "s3");
6132       orc_program_add_temporary (p, 2, "t1");
6133       orc_program_add_temporary (p, 4, "t2");
6134       orc_program_add_temporary (p, 2, "t3");
6135       orc_program_add_temporary (p, 2, "t4");
6136
6137       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S3,
6138           ORC_VAR_D1);
6139       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2,
6140           ORC_VAR_D1);
6141       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4,
6142           ORC_VAR_D1);
6143       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1,
6144           ORC_VAR_D1);
6145 #endif
6146
6147       orc_program_compile (p);
6148       c = orc_program_take_code (p);
6149       orc_program_free (p);
6150     }
6151     p_inited = TRUE;
6152     orc_once_mutex_unlock ();
6153   }
6154   ex->arrays[ORC_VAR_A2] = c;
6155   ex->program = 0;
6156
6157   ex->n = n;
6158   ORC_EXECUTOR_M (ex) = m;
6159   ex->arrays[ORC_VAR_D1] = d1;
6160   ex->params[ORC_VAR_D1] = d1_stride;
6161   ex->arrays[ORC_VAR_S1] = (void *) s1;
6162   ex->params[ORC_VAR_S1] = s1_stride;
6163   ex->arrays[ORC_VAR_S2] = (void *) s2;
6164   ex->params[ORC_VAR_S2] = s2_stride;
6165   ex->arrays[ORC_VAR_S3] = (void *) s3;
6166   ex->params[ORC_VAR_S3] = s3_stride;
6167
6168   func = c->exec;
6169   func (ex);
6170 }
6171 #endif
6172
6173
6174 /* video_convert_orc_convert_Y444_UYVY */
6175 #ifdef DISABLE_ORC
6176 void
6177 video_convert_orc_convert_Y444_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
6178     const guint8 * ORC_RESTRICT s1, int s1_stride,
6179     const guint8 * ORC_RESTRICT s2, int s2_stride,
6180     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
6181 {
6182   int i;
6183   int j;
6184   orc_union32 *ORC_RESTRICT ptr0;
6185   const orc_union16 *ORC_RESTRICT ptr4;
6186   const orc_union16 *ORC_RESTRICT ptr5;
6187   const orc_union16 *ORC_RESTRICT ptr6;
6188   orc_union16 var36;
6189   orc_union16 var37;
6190   orc_union16 var38;
6191   orc_union32 var39;
6192   orc_union32 var40;
6193   orc_union16 var41;
6194   orc_union16 var42;
6195   orc_union16 var43;
6196
6197   for (j = 0; j < m; j++) {
6198     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
6199     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
6200     ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
6201     ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j);
6202
6203
6204     for (i = 0; i < n; i++) {
6205       /* 0: loadw */
6206       var36 = ptr5[i];
6207       /* 1: loadw */
6208       var37 = ptr6[i];
6209       /* 2: mergebw */
6210       {
6211         orc_union16 _dest;
6212         _dest.x2[0] = var36.x2[0];
6213         _dest.x2[1] = var37.x2[0];
6214         var40.x2[0] = _dest.i;
6215       }
6216       {
6217         orc_union16 _dest;
6218         _dest.x2[0] = var36.x2[1];
6219         _dest.x2[1] = var37.x2[1];
6220         var40.x2[1] = _dest.i;
6221       }
6222       /* 3: splitlw */
6223       {
6224         orc_union32 _src;
6225         _src.i = var40.i;
6226         var41.i = _src.x2[1];
6227         var42.i = _src.x2[0];
6228       }
6229       /* 4: avgub */
6230       var43.x2[0] =
6231           ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
6232       var43.x2[1] =
6233           ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
6234       /* 5: loadw */
6235       var38 = ptr4[i];
6236       /* 6: mergebw */
6237       {
6238         orc_union16 _dest;
6239         _dest.x2[0] = var43.x2[0];
6240         _dest.x2[1] = var38.x2[0];
6241         var39.x2[0] = _dest.i;
6242       }
6243       {
6244         orc_union16 _dest;
6245         _dest.x2[0] = var43.x2[1];
6246         _dest.x2[1] = var38.x2[1];
6247         var39.x2[1] = _dest.i;
6248       }
6249       /* 7: storel */
6250       ptr0[i] = var39;
6251     }
6252   }
6253
6254 }
6255
6256 #else
6257 static void
6258 _backup_video_convert_orc_convert_Y444_UYVY (OrcExecutor * ORC_RESTRICT ex)
6259 {
6260   int i;
6261   int j;
6262   int n = ex->n;
6263   int m = ex->params[ORC_VAR_A1];
6264   orc_union32 *ORC_RESTRICT ptr0;
6265   const orc_union16 *ORC_RESTRICT ptr4;
6266   const orc_union16 *ORC_RESTRICT ptr5;
6267   const orc_union16 *ORC_RESTRICT ptr6;
6268   orc_union16 var36;
6269   orc_union16 var37;
6270   orc_union16 var38;
6271   orc_union32 var39;
6272   orc_union32 var40;
6273   orc_union16 var41;
6274   orc_union16 var42;
6275   orc_union16 var43;
6276
6277   for (j = 0; j < m; j++) {
6278     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
6279     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
6280     ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
6281     ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j);
6282
6283
6284     for (i = 0; i < n; i++) {
6285       /* 0: loadw */
6286       var36 = ptr5[i];
6287       /* 1: loadw */
6288       var37 = ptr6[i];
6289       /* 2: mergebw */
6290       {
6291         orc_union16 _dest;
6292         _dest.x2[0] = var36.x2[0];
6293         _dest.x2[1] = var37.x2[0];
6294         var40.x2[0] = _dest.i;
6295       }
6296       {
6297         orc_union16 _dest;
6298         _dest.x2[0] = var36.x2[1];
6299         _dest.x2[1] = var37.x2[1];
6300         var40.x2[1] = _dest.i;
6301       }
6302       /* 3: splitlw */
6303       {
6304         orc_union32 _src;
6305         _src.i = var40.i;
6306         var41.i = _src.x2[1];
6307         var42.i = _src.x2[0];
6308       }
6309       /* 4: avgub */
6310       var43.x2[0] =
6311           ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
6312       var43.x2[1] =
6313           ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
6314       /* 5: loadw */
6315       var38 = ptr4[i];
6316       /* 6: mergebw */
6317       {
6318         orc_union16 _dest;
6319         _dest.x2[0] = var43.x2[0];
6320         _dest.x2[1] = var38.x2[0];
6321         var39.x2[0] = _dest.i;
6322       }
6323       {
6324         orc_union16 _dest;
6325         _dest.x2[0] = var43.x2[1];
6326         _dest.x2[1] = var38.x2[1];
6327         var39.x2[1] = _dest.i;
6328       }
6329       /* 7: storel */
6330       ptr0[i] = var39;
6331     }
6332   }
6333
6334 }
6335
6336 void
6337 video_convert_orc_convert_Y444_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
6338     const guint8 * ORC_RESTRICT s1, int s1_stride,
6339     const guint8 * ORC_RESTRICT s2, int s2_stride,
6340     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
6341 {
6342   OrcExecutor _ex, *ex = &_ex;
6343   static volatile int p_inited = 0;
6344   static OrcCode *c = 0;
6345   void (*func) (OrcExecutor *);
6346
6347   if (!p_inited) {
6348     orc_once_mutex_lock ();
6349     if (!p_inited) {
6350       OrcProgram *p;
6351
6352 #if 1
6353       static const orc_uint8 bc[] = {
6354         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
6355         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 89, 52,
6356         52, 52, 95, 85, 89, 86, 89, 11, 4, 4, 12, 2, 2, 12, 2, 2,
6357         12, 2, 2, 20, 2, 20, 4, 20, 2, 20, 2, 21, 1, 196, 33, 5,
6358         6, 198, 34, 35, 33, 21, 1, 39, 32, 34, 35, 21, 1, 196, 0, 32,
6359         4, 2, 0,
6360       };
6361       p = orc_program_new_from_static_bytecode (bc);
6362       orc_program_set_backup_function (p,
6363           _backup_video_convert_orc_convert_Y444_UYVY);
6364 #else
6365       p = orc_program_new ();
6366       orc_program_set_2d (p);
6367       orc_program_set_name (p, "video_convert_orc_convert_Y444_UYVY");
6368       orc_program_set_backup_function (p,
6369           _backup_video_convert_orc_convert_Y444_UYVY);
6370       orc_program_add_destination (p, 4, "d1");
6371       orc_program_add_source (p, 2, "s1");
6372       orc_program_add_source (p, 2, "s2");
6373       orc_program_add_source (p, 2, "s3");
6374       orc_program_add_temporary (p, 2, "t1");
6375       orc_program_add_temporary (p, 4, "t2");
6376       orc_program_add_temporary (p, 2, "t3");
6377       orc_program_add_temporary (p, 2, "t4");
6378
6379       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S3,
6380           ORC_VAR_D1);
6381       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2,
6382           ORC_VAR_D1);
6383       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4,
6384           ORC_VAR_D1);
6385       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1,
6386           ORC_VAR_D1);
6387 #endif
6388
6389       orc_program_compile (p);
6390       c = orc_program_take_code (p);
6391       orc_program_free (p);
6392     }
6393     p_inited = TRUE;
6394     orc_once_mutex_unlock ();
6395   }
6396   ex->arrays[ORC_VAR_A2] = c;
6397   ex->program = 0;
6398
6399   ex->n = n;
6400   ORC_EXECUTOR_M (ex) = m;
6401   ex->arrays[ORC_VAR_D1] = d1;
6402   ex->params[ORC_VAR_D1] = d1_stride;
6403   ex->arrays[ORC_VAR_S1] = (void *) s1;
6404   ex->params[ORC_VAR_S1] = s1_stride;
6405   ex->arrays[ORC_VAR_S2] = (void *) s2;
6406   ex->params[ORC_VAR_S2] = s2_stride;
6407   ex->arrays[ORC_VAR_S3] = (void *) s3;
6408   ex->params[ORC_VAR_S3] = s3_stride;
6409
6410   func = c->exec;
6411   func (ex);
6412 }
6413 #endif
6414
6415
6416 /* video_convert_orc_convert_Y444_AYUV */
6417 #ifdef DISABLE_ORC
6418 void
6419 video_convert_orc_convert_Y444_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
6420     const guint8 * ORC_RESTRICT s1, int s1_stride,
6421     const guint8 * ORC_RESTRICT s2, int s2_stride,
6422     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
6423 {
6424   int i;
6425   int j;
6426   orc_union32 *ORC_RESTRICT ptr0;
6427   const orc_int8 *ORC_RESTRICT ptr4;
6428   const orc_int8 *ORC_RESTRICT ptr5;
6429   const orc_int8 *ORC_RESTRICT ptr6;
6430   orc_int8 var34;
6431   orc_int8 var35;
6432 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
6433   volatile orc_int8 var36;
6434 #else
6435   orc_int8 var36;
6436 #endif
6437   orc_int8 var37;
6438   orc_union32 var38;
6439   orc_union16 var39;
6440   orc_union16 var40;
6441
6442   for (j = 0; j < m; j++) {
6443     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
6444     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
6445     ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
6446     ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j);
6447
6448     /* 3: loadpb */
6449     var36 = (int) 0x000000ff;   /* 255 or 1.25987e-321f */
6450
6451     for (i = 0; i < n; i++) {
6452       /* 0: loadb */
6453       var34 = ptr5[i];
6454       /* 1: loadb */
6455       var35 = ptr6[i];
6456       /* 2: mergebw */
6457       {
6458         orc_union16 _dest;
6459         _dest.x2[0] = var34;
6460         _dest.x2[1] = var35;
6461         var39.i = _dest.i;
6462       }
6463       /* 4: loadb */
6464       var37 = ptr4[i];
6465       /* 5: mergebw */
6466       {
6467         orc_union16 _dest;
6468         _dest.x2[0] = var36;
6469         _dest.x2[1] = var37;
6470         var40.i = _dest.i;
6471       }
6472       /* 6: mergewl */
6473       {
6474         orc_union32 _dest;
6475         _dest.x2[0] = var40.i;
6476         _dest.x2[1] = var39.i;
6477         var38.i = _dest.i;
6478       }
6479       /* 7: storel */
6480       ptr0[i] = var38;
6481     }
6482   }
6483
6484 }
6485
6486 #else
6487 static void
6488 _backup_video_convert_orc_convert_Y444_AYUV (OrcExecutor * ORC_RESTRICT ex)
6489 {
6490   int i;
6491   int j;
6492   int n = ex->n;
6493   int m = ex->params[ORC_VAR_A1];
6494   orc_union32 *ORC_RESTRICT ptr0;
6495   const orc_int8 *ORC_RESTRICT ptr4;
6496   const orc_int8 *ORC_RESTRICT ptr5;
6497   const orc_int8 *ORC_RESTRICT ptr6;
6498   orc_int8 var34;
6499   orc_int8 var35;
6500 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
6501   volatile orc_int8 var36;
6502 #else
6503   orc_int8 var36;
6504 #endif
6505   orc_int8 var37;
6506   orc_union32 var38;
6507   orc_union16 var39;
6508   orc_union16 var40;
6509
6510   for (j = 0; j < m; j++) {
6511     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
6512     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
6513     ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
6514     ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j);
6515
6516     /* 3: loadpb */
6517     var36 = (int) 0x000000ff;   /* 255 or 1.25987e-321f */
6518
6519     for (i = 0; i < n; i++) {
6520       /* 0: loadb */
6521       var34 = ptr5[i];
6522       /* 1: loadb */
6523       var35 = ptr6[i];
6524       /* 2: mergebw */
6525       {
6526         orc_union16 _dest;
6527         _dest.x2[0] = var34;
6528         _dest.x2[1] = var35;
6529         var39.i = _dest.i;
6530       }
6531       /* 4: loadb */
6532       var37 = ptr4[i];
6533       /* 5: mergebw */
6534       {
6535         orc_union16 _dest;
6536         _dest.x2[0] = var36;
6537         _dest.x2[1] = var37;
6538         var40.i = _dest.i;
6539       }
6540       /* 6: mergewl */
6541       {
6542         orc_union32 _dest;
6543         _dest.x2[0] = var40.i;
6544         _dest.x2[1] = var39.i;
6545         var38.i = _dest.i;
6546       }
6547       /* 7: storel */
6548       ptr0[i] = var38;
6549     }
6550   }
6551
6552 }
6553
6554 void
6555 video_convert_orc_convert_Y444_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
6556     const guint8 * ORC_RESTRICT s1, int s1_stride,
6557     const guint8 * ORC_RESTRICT s2, int s2_stride,
6558     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
6559 {
6560   OrcExecutor _ex, *ex = &_ex;
6561   static volatile int p_inited = 0;
6562   static OrcCode *c = 0;
6563   void (*func) (OrcExecutor *);
6564
6565   if (!p_inited) {
6566     orc_once_mutex_lock ();
6567     if (!p_inited) {
6568       OrcProgram *p;
6569
6570 #if 1
6571       static const orc_uint8 bc[] = {
6572         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
6573         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 89, 52,
6574         52, 52, 95, 65, 89, 85, 86, 11, 4, 4, 12, 1, 1, 12, 1, 1,
6575         12, 1, 1, 14, 1, 255, 0, 0, 0, 20, 2, 20, 2, 196, 32, 5,
6576         6, 196, 33, 16, 4, 195, 0, 33, 32, 2, 0,
6577       };
6578       p = orc_program_new_from_static_bytecode (bc);
6579       orc_program_set_backup_function (p,
6580           _backup_video_convert_orc_convert_Y444_AYUV);
6581 #else
6582       p = orc_program_new ();
6583       orc_program_set_2d (p);
6584       orc_program_set_name (p, "video_convert_orc_convert_Y444_AYUV");
6585       orc_program_set_backup_function (p,
6586           _backup_video_convert_orc_convert_Y444_AYUV);
6587       orc_program_add_destination (p, 4, "d1");
6588       orc_program_add_source (p, 1, "s1");
6589       orc_program_add_source (p, 1, "s2");
6590       orc_program_add_source (p, 1, "s3");
6591       orc_program_add_constant (p, 1, 0x000000ff, "c1");
6592       orc_program_add_temporary (p, 2, "t1");
6593       orc_program_add_temporary (p, 2, "t2");
6594
6595       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3,
6596           ORC_VAR_D1);
6597       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1,
6598           ORC_VAR_D1);
6599       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
6600           ORC_VAR_D1);
6601 #endif
6602
6603       orc_program_compile (p);
6604       c = orc_program_take_code (p);
6605       orc_program_free (p);
6606     }
6607     p_inited = TRUE;
6608     orc_once_mutex_unlock ();
6609   }
6610   ex->arrays[ORC_VAR_A2] = c;
6611   ex->program = 0;
6612
6613   ex->n = n;
6614   ORC_EXECUTOR_M (ex) = m;
6615   ex->arrays[ORC_VAR_D1] = d1;
6616   ex->params[ORC_VAR_D1] = d1_stride;
6617   ex->arrays[ORC_VAR_S1] = (void *) s1;
6618   ex->params[ORC_VAR_S1] = s1_stride;
6619   ex->arrays[ORC_VAR_S2] = (void *) s2;
6620   ex->params[ORC_VAR_S2] = s2_stride;
6621   ex->arrays[ORC_VAR_S3] = (void *) s3;
6622   ex->params[ORC_VAR_S3] = s3_stride;
6623
6624   func = c->exec;
6625   func (ex);
6626 }
6627 #endif
6628
6629
6630 /* video_convert_orc_convert_AYUV_ARGB */
6631 #ifdef DISABLE_ORC
6632 void
6633 video_convert_orc_convert_AYUV_ARGB (guint8 * ORC_RESTRICT d1, int d1_stride,
6634     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
6635 {
6636   int i;
6637   int j;
6638   orc_union32 *ORC_RESTRICT ptr0;
6639   const orc_union32 *ORC_RESTRICT ptr4;
6640   orc_union32 var48;
6641 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
6642   volatile orc_union32 var49;
6643 #else
6644   orc_union32 var49;
6645 #endif
6646 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
6647   volatile orc_union16 var50;
6648 #else
6649   orc_union16 var50;
6650 #endif
6651 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
6652   volatile orc_union16 var51;
6653 #else
6654   orc_union16 var51;
6655 #endif
6656 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
6657   volatile orc_union16 var52;
6658 #else
6659   orc_union16 var52;
6660 #endif
6661 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
6662   volatile orc_union16 var53;
6663 #else
6664   orc_union16 var53;
6665 #endif
6666 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
6667   volatile orc_union16 var54;
6668 #else
6669   orc_union16 var54;
6670 #endif
6671 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
6672   volatile orc_union32 var55;
6673 #else
6674   orc_union32 var55;
6675 #endif
6676   orc_union32 var56;
6677   orc_union32 var57;
6678   orc_union16 var58;
6679   orc_union16 var59;
6680   orc_int8 var60;
6681   orc_int8 var61;
6682   orc_int8 var62;
6683   orc_int8 var63;
6684   orc_union16 var64;
6685   orc_union16 var65;
6686   orc_union16 var66;
6687   orc_union16 var67;
6688   orc_union16 var68;
6689   orc_union16 var69;
6690   orc_union16 var70;
6691   orc_union16 var71;
6692   orc_union16 var72;
6693   orc_union16 var73;
6694   orc_union16 var74;
6695   orc_union16 var75;
6696   orc_union16 var76;
6697   orc_union16 var77;
6698   orc_union16 var78;
6699   orc_union16 var79;
6700   orc_union16 var80;
6701   orc_union16 var81;
6702   orc_union16 var82;
6703   orc_union16 var83;
6704   orc_union16 var84;
6705   orc_union16 var85;
6706   orc_union16 var86;
6707   orc_int8 var87;
6708   orc_int8 var88;
6709   orc_int8 var89;
6710   orc_union16 var90;
6711   orc_union16 var91;
6712   orc_union32 var92;
6713
6714   for (j = 0; j < m; j++) {
6715     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
6716     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
6717
6718     /* 1: loadpb */
6719     var49.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
6720     var49.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
6721     var49.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
6722     var49.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
6723     /* 9: loadpw */
6724     var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */
6725     /* 14: loadpw */
6726     var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */
6727     /* 21: loadpw */
6728     var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */
6729     /* 25: loadpw */
6730     var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */
6731     /* 29: loadpw */
6732     var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */
6733     /* 40: loadpb */
6734     var55.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
6735     var55.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
6736     var55.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
6737     var55.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
6738
6739     for (i = 0; i < n; i++) {
6740       /* 0: loadl */
6741       var48 = ptr4[i];
6742       /* 2: subb */
6743       var57.x4[0] = var48.x4[0] - var49.x4[0];
6744       var57.x4[1] = var48.x4[1] - var49.x4[1];
6745       var57.x4[2] = var48.x4[2] - var49.x4[2];
6746       var57.x4[3] = var48.x4[3] - var49.x4[3];
6747       /* 3: splitlw */
6748       {
6749         orc_union32 _src;
6750         _src.i = var57.i;
6751         var58.i = _src.x2[1];
6752         var59.i = _src.x2[0];
6753       }
6754       /* 4: splitwb */
6755       {
6756         orc_union16 _src;
6757         _src.i = var59.i;
6758         var60 = _src.x2[1];
6759         var61 = _src.x2[0];
6760       }
6761       /* 5: splitwb */
6762       {
6763         orc_union16 _src;
6764         _src.i = var58.i;
6765         var62 = _src.x2[1];
6766         var63 = _src.x2[0];
6767       }
6768       /* 6: convsbw */
6769       var64.i = var60;
6770       /* 7: convsbw */
6771       var65.i = var63;
6772       /* 8: convsbw */
6773       var66.i = var62;
6774       /* 10: mullw */
6775       var67.i = (var64.i * var50.i) & 0xffff;
6776       /* 11: shrsw */
6777       var68.i = var67.i >> 8;
6778       /* 12: addssw */
6779       var69.i = ORC_CLAMP_SW (var64.i + var68.i);
6780       /* 13: addssw */
6781       var70.i = ORC_CLAMP_SW (var69.i + var66.i);
6782       /* 15: mullw */
6783       var71.i = (var66.i * var51.i) & 0xffff;
6784       /* 16: shrsw */
6785       var72.i = var71.i >> 8;
6786       /* 17: subssw */
6787       var73.i = ORC_CLAMP_SW (var70.i - var72.i);
6788       /* 18: addssw */
6789       var74.i = ORC_CLAMP_SW (var73.i + var66.i);
6790       /* 19: addssw */
6791       var75.i = ORC_CLAMP_SW (var69.i + var65.i);
6792       /* 20: addssw */
6793       var76.i = ORC_CLAMP_SW (var75.i + var65.i);
6794       /* 22: mullw */
6795       var77.i = (var65.i * var52.i) & 0xffff;
6796       /* 23: shrsw */
6797       var78.i = var77.i >> 8;
6798       /* 24: addssw */
6799       var79.i = ORC_CLAMP_SW (var76.i + var78.i);
6800       /* 26: mullw */
6801       var80.i = (var65.i * var53.i) & 0xffff;
6802       /* 27: shrsw */
6803       var81.i = var80.i >> 8;
6804       /* 28: subssw */
6805       var82.i = ORC_CLAMP_SW (var69.i - var81.i);
6806       /* 30: mullw */
6807       var83.i = (var66.i * var54.i) & 0xffff;
6808       /* 31: shrsw */
6809       var84.i = var83.i >> 8;
6810       /* 32: subssw */
6811       var85.i = ORC_CLAMP_SW (var82.i - var84.i);
6812       /* 33: subssw */
6813       var86.i = ORC_CLAMP_SW (var85.i - var84.i);
6814       /* 34: convssswb */
6815       var87 = ORC_CLAMP_SB (var74.i);
6816       /* 35: convssswb */
6817       var88 = ORC_CLAMP_SB (var86.i);
6818       /* 36: convssswb */
6819       var89 = ORC_CLAMP_SB (var79.i);
6820       /* 37: mergebw */
6821       {
6822         orc_union16 _dest;
6823         _dest.x2[0] = var61;
6824         _dest.x2[1] = var87;
6825         var90.i = _dest.i;
6826       }
6827       /* 38: mergebw */
6828       {
6829         orc_union16 _dest;
6830         _dest.x2[0] = var88;
6831         _dest.x2[1] = var89;
6832         var91.i = _dest.i;
6833       }
6834       /* 39: mergewl */
6835       {
6836         orc_union32 _dest;
6837         _dest.x2[0] = var90.i;
6838         _dest.x2[1] = var91.i;
6839         var92.i = _dest.i;
6840       }
6841       /* 41: addb */
6842       var56.x4[0] = var92.x4[0] + var55.x4[0];
6843       var56.x4[1] = var92.x4[1] + var55.x4[1];
6844       var56.x4[2] = var92.x4[2] + var55.x4[2];
6845       var56.x4[3] = var92.x4[3] + var55.x4[3];
6846       /* 42: storel */
6847       ptr0[i] = var56;
6848     }
6849   }
6850
6851 }
6852
6853 #else
6854 static void
6855 _backup_video_convert_orc_convert_AYUV_ARGB (OrcExecutor * ORC_RESTRICT ex)
6856 {
6857   int i;
6858   int j;
6859   int n = ex->n;
6860   int m = ex->params[ORC_VAR_A1];
6861   orc_union32 *ORC_RESTRICT ptr0;
6862   const orc_union32 *ORC_RESTRICT ptr4;
6863   orc_union32 var48;
6864 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
6865   volatile orc_union32 var49;
6866 #else
6867   orc_union32 var49;
6868 #endif
6869 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
6870   volatile orc_union16 var50;
6871 #else
6872   orc_union16 var50;
6873 #endif
6874 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
6875   volatile orc_union16 var51;
6876 #else
6877   orc_union16 var51;
6878 #endif
6879 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
6880   volatile orc_union16 var52;
6881 #else
6882   orc_union16 var52;
6883 #endif
6884 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
6885   volatile orc_union16 var53;
6886 #else
6887   orc_union16 var53;
6888 #endif
6889 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
6890   volatile orc_union16 var54;
6891 #else
6892   orc_union16 var54;
6893 #endif
6894 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
6895   volatile orc_union32 var55;
6896 #else
6897   orc_union32 var55;
6898 #endif
6899   orc_union32 var56;
6900   orc_union32 var57;
6901   orc_union16 var58;
6902   orc_union16 var59;
6903   orc_int8 var60;
6904   orc_int8 var61;
6905   orc_int8 var62;
6906   orc_int8 var63;
6907   orc_union16 var64;
6908   orc_union16 var65;
6909   orc_union16 var66;
6910   orc_union16 var67;
6911   orc_union16 var68;
6912   orc_union16 var69;
6913   orc_union16 var70;
6914   orc_union16 var71;
6915   orc_union16 var72;
6916   orc_union16 var73;
6917   orc_union16 var74;
6918   orc_union16 var75;
6919   orc_union16 var76;
6920   orc_union16 var77;
6921   orc_union16 var78;
6922   orc_union16 var79;
6923   orc_union16 var80;
6924   orc_union16 var81;
6925   orc_union16 var82;
6926   orc_union16 var83;
6927   orc_union16 var84;
6928   orc_union16 var85;
6929   orc_union16 var86;
6930   orc_int8 var87;
6931   orc_int8 var88;
6932   orc_int8 var89;
6933   orc_union16 var90;
6934   orc_union16 var91;
6935   orc_union32 var92;
6936
6937   for (j = 0; j < m; j++) {
6938     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
6939     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
6940
6941     /* 1: loadpb */
6942     var49.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
6943     var49.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
6944     var49.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
6945     var49.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
6946     /* 9: loadpw */
6947     var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */
6948     /* 14: loadpw */
6949     var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */
6950     /* 21: loadpw */
6951     var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */
6952     /* 25: loadpw */
6953     var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */
6954     /* 29: loadpw */
6955     var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */
6956     /* 40: loadpb */
6957     var55.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
6958     var55.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
6959     var55.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
6960     var55.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
6961
6962     for (i = 0; i < n; i++) {
6963       /* 0: loadl */
6964       var48 = ptr4[i];
6965       /* 2: subb */
6966       var57.x4[0] = var48.x4[0] - var49.x4[0];
6967       var57.x4[1] = var48.x4[1] - var49.x4[1];
6968       var57.x4[2] = var48.x4[2] - var49.x4[2];
6969       var57.x4[3] = var48.x4[3] - var49.x4[3];
6970       /* 3: splitlw */
6971       {
6972         orc_union32 _src;
6973         _src.i = var57.i;
6974         var58.i = _src.x2[1];
6975         var59.i = _src.x2[0];
6976       }
6977       /* 4: splitwb */
6978       {
6979         orc_union16 _src;
6980         _src.i = var59.i;
6981         var60 = _src.x2[1];
6982         var61 = _src.x2[0];
6983       }
6984       /* 5: splitwb */
6985       {
6986         orc_union16 _src;
6987         _src.i = var58.i;
6988         var62 = _src.x2[1];
6989         var63 = _src.x2[0];
6990       }
6991       /* 6: convsbw */
6992       var64.i = var60;
6993       /* 7: convsbw */
6994       var65.i = var63;
6995       /* 8: convsbw */
6996       var66.i = var62;
6997       /* 10: mullw */
6998       var67.i = (var64.i * var50.i) & 0xffff;
6999       /* 11: shrsw */
7000       var68.i = var67.i >> 8;
7001       /* 12: addssw */
7002       var69.i = ORC_CLAMP_SW (var64.i + var68.i);
7003       /* 13: addssw */
7004       var70.i = ORC_CLAMP_SW (var69.i + var66.i);
7005       /* 15: mullw */
7006       var71.i = (var66.i * var51.i) & 0xffff;
7007       /* 16: shrsw */
7008       var72.i = var71.i >> 8;
7009       /* 17: subssw */
7010       var73.i = ORC_CLAMP_SW (var70.i - var72.i);
7011       /* 18: addssw */
7012       var74.i = ORC_CLAMP_SW (var73.i + var66.i);
7013       /* 19: addssw */
7014       var75.i = ORC_CLAMP_SW (var69.i + var65.i);
7015       /* 20: addssw */
7016       var76.i = ORC_CLAMP_SW (var75.i + var65.i);
7017       /* 22: mullw */
7018       var77.i = (var65.i * var52.i) & 0xffff;
7019       /* 23: shrsw */
7020       var78.i = var77.i >> 8;
7021       /* 24: addssw */
7022       var79.i = ORC_CLAMP_SW (var76.i + var78.i);
7023       /* 26: mullw */
7024       var80.i = (var65.i * var53.i) & 0xffff;
7025       /* 27: shrsw */
7026       var81.i = var80.i >> 8;
7027       /* 28: subssw */
7028       var82.i = ORC_CLAMP_SW (var69.i - var81.i);
7029       /* 30: mullw */
7030       var83.i = (var66.i * var54.i) & 0xffff;
7031       /* 31: shrsw */
7032       var84.i = var83.i >> 8;
7033       /* 32: subssw */
7034       var85.i = ORC_CLAMP_SW (var82.i - var84.i);
7035       /* 33: subssw */
7036       var86.i = ORC_CLAMP_SW (var85.i - var84.i);
7037       /* 34: convssswb */
7038       var87 = ORC_CLAMP_SB (var74.i);
7039       /* 35: convssswb */
7040       var88 = ORC_CLAMP_SB (var86.i);
7041       /* 36: convssswb */
7042       var89 = ORC_CLAMP_SB (var79.i);
7043       /* 37: mergebw */
7044       {
7045         orc_union16 _dest;
7046         _dest.x2[0] = var61;
7047         _dest.x2[1] = var87;
7048         var90.i = _dest.i;
7049       }
7050       /* 38: mergebw */
7051       {
7052         orc_union16 _dest;
7053         _dest.x2[0] = var88;
7054         _dest.x2[1] = var89;
7055         var91.i = _dest.i;
7056       }
7057       /* 39: mergewl */
7058       {
7059         orc_union32 _dest;
7060         _dest.x2[0] = var90.i;
7061         _dest.x2[1] = var91.i;
7062         var92.i = _dest.i;
7063       }
7064       /* 41: addb */
7065       var56.x4[0] = var92.x4[0] + var55.x4[0];
7066       var56.x4[1] = var92.x4[1] + var55.x4[1];
7067       var56.x4[2] = var92.x4[2] + var55.x4[2];
7068       var56.x4[3] = var92.x4[3] + var55.x4[3];
7069       /* 42: storel */
7070       ptr0[i] = var56;
7071     }
7072   }
7073
7074 }
7075
7076 void
7077 video_convert_orc_convert_AYUV_ARGB (guint8 * ORC_RESTRICT d1, int d1_stride,
7078     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
7079 {
7080   OrcExecutor _ex, *ex = &_ex;
7081   static volatile int p_inited = 0;
7082   static OrcCode *c = 0;
7083   void (*func) (OrcExecutor *);
7084
7085   if (!p_inited) {
7086     orc_once_mutex_lock ();
7087     if (!p_inited) {
7088       OrcProgram *p;
7089
7090 #if 1
7091       static const orc_uint8 bc[] = {
7092         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
7093         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 65, 89,
7094         85, 86, 95, 65, 82, 71, 66, 11, 4, 4, 12, 4, 4, 14, 1, 8,
7095         0, 0, 0, 14, 4, 128, 0, 0, 0, 14, 4, 42, 0, 0, 0, 14,
7096         4, 103, 0, 0, 0, 14, 4, 4, 0, 0, 0, 14, 4, 100, 0, 0,
7097         0, 14, 4, 104, 0, 0, 0, 20, 2, 20, 2, 20, 1, 20, 1, 20,
7098         1, 20, 1, 20, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20,
7099         1, 20, 1, 20, 1, 20, 4, 21, 2, 65, 47, 4, 17, 198, 32, 33,
7100         47, 199, 35, 34, 33, 199, 37, 36, 32, 149, 38, 35, 149, 39, 36, 149,
7101         40, 37, 89, 32, 38, 18, 94, 32, 32, 16, 71, 38, 38, 32, 71, 41,
7102         38, 40, 89, 32, 40, 19, 94, 32, 32, 16, 99, 41, 41, 32, 71, 41,
7103         41, 40, 71, 43, 38, 39, 71, 43, 43, 39, 89, 32, 39, 20, 94, 32,
7104         32, 16, 71, 43, 43, 32, 89, 32, 39, 21, 94, 32, 32, 16, 99, 42,
7105         38, 32, 89, 32, 40, 22, 94, 32, 32, 16, 99, 42, 42, 32, 99, 42,
7106         42, 32, 159, 44, 41, 159, 45, 42, 159, 46, 43, 196, 32, 34, 44, 196,
7107         33, 45, 46, 195, 47, 32, 33, 21, 2, 33, 0, 47, 17, 2, 0,
7108       };
7109       p = orc_program_new_from_static_bytecode (bc);
7110       orc_program_set_backup_function (p,
7111           _backup_video_convert_orc_convert_AYUV_ARGB);
7112 #else
7113       p = orc_program_new ();
7114       orc_program_set_2d (p);
7115       orc_program_set_name (p, "video_convert_orc_convert_AYUV_ARGB");
7116       orc_program_set_backup_function (p,
7117           _backup_video_convert_orc_convert_AYUV_ARGB);
7118       orc_program_add_destination (p, 4, "d1");
7119       orc_program_add_source (p, 4, "s1");
7120       orc_program_add_constant (p, 1, 0x00000008, "c1");
7121       orc_program_add_constant (p, 4, 0x00000080, "c2");
7122       orc_program_add_constant (p, 4, 0x0000002a, "c3");
7123       orc_program_add_constant (p, 4, 0x00000067, "c4");
7124       orc_program_add_constant (p, 4, 0x00000004, "c5");
7125       orc_program_add_constant (p, 4, 0x00000064, "c6");
7126       orc_program_add_constant (p, 4, 0x00000068, "c7");
7127       orc_program_add_temporary (p, 2, "t1");
7128       orc_program_add_temporary (p, 2, "t2");
7129       orc_program_add_temporary (p, 1, "t3");
7130       orc_program_add_temporary (p, 1, "t4");
7131       orc_program_add_temporary (p, 1, "t5");
7132       orc_program_add_temporary (p, 1, "t6");
7133       orc_program_add_temporary (p, 2, "t7");
7134       orc_program_add_temporary (p, 2, "t8");
7135       orc_program_add_temporary (p, 2, "t9");
7136       orc_program_add_temporary (p, 2, "t10");
7137       orc_program_add_temporary (p, 2, "t11");
7138       orc_program_add_temporary (p, 2, "t12");
7139       orc_program_add_temporary (p, 1, "t13");
7140       orc_program_add_temporary (p, 1, "t14");
7141       orc_program_add_temporary (p, 1, "t15");
7142       orc_program_add_temporary (p, 4, "t16");
7143
7144       orc_program_append_2 (p, "subb", 2, 47, ORC_VAR_S1, ORC_VAR_C2,
7145           ORC_VAR_D1);
7146       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T1, ORC_VAR_T2, 47,
7147           ORC_VAR_D1);
7148       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T2,
7149           ORC_VAR_D1);
7150       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_T1,
7151           ORC_VAR_D1);
7152       orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1,
7153           ORC_VAR_D1);
7154       orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_D1,
7155           ORC_VAR_D1);
7156       orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_D1,
7157           ORC_VAR_D1);
7158       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_C3,
7159           ORC_VAR_D1);
7160       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
7161           ORC_VAR_D1);
7162       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T1,
7163           ORC_VAR_D1);
7164       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T7, ORC_VAR_T9,
7165           ORC_VAR_D1);
7166       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_C4,
7167           ORC_VAR_D1);
7168       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
7169           ORC_VAR_D1);
7170       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T10, ORC_VAR_T10,
7171           ORC_VAR_T1, ORC_VAR_D1);
7172       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T10,
7173           ORC_VAR_T9, ORC_VAR_D1);
7174       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T7, ORC_VAR_T8,
7175           ORC_VAR_D1);
7176       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T12,
7177           ORC_VAR_T8, ORC_VAR_D1);
7178       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_C5,
7179           ORC_VAR_D1);
7180       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
7181           ORC_VAR_D1);
7182       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T12,
7183           ORC_VAR_T1, ORC_VAR_D1);
7184       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_C6,
7185           ORC_VAR_D1);
7186       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
7187           ORC_VAR_D1);
7188       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T7, ORC_VAR_T1,
7189           ORC_VAR_D1);
7190       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_C7,
7191           ORC_VAR_D1);
7192       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
7193           ORC_VAR_D1);
7194       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T11,
7195           ORC_VAR_T1, ORC_VAR_D1);
7196       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T11,
7197           ORC_VAR_T1, ORC_VAR_D1);
7198       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T13, ORC_VAR_T10,
7199           ORC_VAR_D1, ORC_VAR_D1);
7200       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T14, ORC_VAR_T11,
7201           ORC_VAR_D1, ORC_VAR_D1);
7202       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T15, ORC_VAR_T12,
7203           ORC_VAR_D1, ORC_VAR_D1);
7204       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T3,
7205           ORC_VAR_T13, ORC_VAR_D1);
7206       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_T14,
7207           ORC_VAR_T15, ORC_VAR_D1);
7208       orc_program_append_2 (p, "mergewl", 0, 47, ORC_VAR_T1, ORC_VAR_T2,
7209           ORC_VAR_D1);
7210       orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, 47, ORC_VAR_C2,
7211           ORC_VAR_D1);
7212 #endif
7213
7214       orc_program_compile (p);
7215       c = orc_program_take_code (p);
7216       orc_program_free (p);
7217     }
7218     p_inited = TRUE;
7219     orc_once_mutex_unlock ();
7220   }
7221   ex->arrays[ORC_VAR_A2] = c;
7222   ex->program = 0;
7223
7224   ex->n = n;
7225   ORC_EXECUTOR_M (ex) = m;
7226   ex->arrays[ORC_VAR_D1] = d1;
7227   ex->params[ORC_VAR_D1] = d1_stride;
7228   ex->arrays[ORC_VAR_S1] = (void *) s1;
7229   ex->params[ORC_VAR_S1] = s1_stride;
7230
7231   func = c->exec;
7232   func (ex);
7233 }
7234 #endif
7235
7236
7237 /* video_convert_orc_convert_AYUV_BGRA */
7238 #ifdef DISABLE_ORC
7239 void
7240 video_convert_orc_convert_AYUV_BGRA (guint8 * ORC_RESTRICT d1, int d1_stride,
7241     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
7242 {
7243   int i;
7244   int j;
7245   orc_union32 *ORC_RESTRICT ptr0;
7246   const orc_union32 *ORC_RESTRICT ptr4;
7247   orc_union32 var48;
7248 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
7249   volatile orc_union32 var49;
7250 #else
7251   orc_union32 var49;
7252 #endif
7253 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
7254   volatile orc_union16 var50;
7255 #else
7256   orc_union16 var50;
7257 #endif
7258 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
7259   volatile orc_union16 var51;
7260 #else
7261   orc_union16 var51;
7262 #endif
7263 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
7264   volatile orc_union16 var52;
7265 #else
7266   orc_union16 var52;
7267 #endif
7268 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
7269   volatile orc_union16 var53;
7270 #else
7271   orc_union16 var53;
7272 #endif
7273 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
7274   volatile orc_union16 var54;
7275 #else
7276   orc_union16 var54;
7277 #endif
7278 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
7279   volatile orc_union32 var55;
7280 #else
7281   orc_union32 var55;
7282 #endif
7283   orc_union32 var56;
7284   orc_union32 var57;
7285   orc_union16 var58;
7286   orc_union16 var59;
7287   orc_int8 var60;
7288   orc_int8 var61;
7289   orc_int8 var62;
7290   orc_int8 var63;
7291   orc_union16 var64;
7292   orc_union16 var65;
7293   orc_union16 var66;
7294   orc_union16 var67;
7295   orc_union16 var68;
7296   orc_union16 var69;
7297   orc_union16 var70;
7298   orc_union16 var71;
7299   orc_union16 var72;
7300   orc_union16 var73;
7301   orc_union16 var74;
7302   orc_union16 var75;
7303   orc_union16 var76;
7304   orc_union16 var77;
7305   orc_union16 var78;
7306   orc_union16 var79;
7307   orc_union16 var80;
7308   orc_union16 var81;
7309   orc_union16 var82;
7310   orc_union16 var83;
7311   orc_union16 var84;
7312   orc_union16 var85;
7313   orc_union16 var86;
7314   orc_int8 var87;
7315   orc_int8 var88;
7316   orc_int8 var89;
7317   orc_union16 var90;
7318   orc_union16 var91;
7319   orc_union32 var92;
7320
7321   for (j = 0; j < m; j++) {
7322     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
7323     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
7324
7325     /* 1: loadpb */
7326     var49.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7327     var49.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7328     var49.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7329     var49.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7330     /* 9: loadpw */
7331     var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */
7332     /* 14: loadpw */
7333     var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */
7334     /* 21: loadpw */
7335     var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */
7336     /* 25: loadpw */
7337     var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */
7338     /* 29: loadpw */
7339     var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */
7340     /* 40: loadpb */
7341     var55.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7342     var55.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7343     var55.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7344     var55.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7345
7346     for (i = 0; i < n; i++) {
7347       /* 0: loadl */
7348       var48 = ptr4[i];
7349       /* 2: subb */
7350       var57.x4[0] = var48.x4[0] - var49.x4[0];
7351       var57.x4[1] = var48.x4[1] - var49.x4[1];
7352       var57.x4[2] = var48.x4[2] - var49.x4[2];
7353       var57.x4[3] = var48.x4[3] - var49.x4[3];
7354       /* 3: splitlw */
7355       {
7356         orc_union32 _src;
7357         _src.i = var57.i;
7358         var58.i = _src.x2[1];
7359         var59.i = _src.x2[0];
7360       }
7361       /* 4: splitwb */
7362       {
7363         orc_union16 _src;
7364         _src.i = var59.i;
7365         var60 = _src.x2[1];
7366         var61 = _src.x2[0];
7367       }
7368       /* 5: splitwb */
7369       {
7370         orc_union16 _src;
7371         _src.i = var58.i;
7372         var62 = _src.x2[1];
7373         var63 = _src.x2[0];
7374       }
7375       /* 6: convsbw */
7376       var64.i = var60;
7377       /* 7: convsbw */
7378       var65.i = var63;
7379       /* 8: convsbw */
7380       var66.i = var62;
7381       /* 10: mullw */
7382       var67.i = (var64.i * var50.i) & 0xffff;
7383       /* 11: shrsw */
7384       var68.i = var67.i >> 8;
7385       /* 12: addssw */
7386       var69.i = ORC_CLAMP_SW (var64.i + var68.i);
7387       /* 13: addssw */
7388       var70.i = ORC_CLAMP_SW (var69.i + var66.i);
7389       /* 15: mullw */
7390       var71.i = (var66.i * var51.i) & 0xffff;
7391       /* 16: shrsw */
7392       var72.i = var71.i >> 8;
7393       /* 17: subssw */
7394       var73.i = ORC_CLAMP_SW (var70.i - var72.i);
7395       /* 18: addssw */
7396       var74.i = ORC_CLAMP_SW (var73.i + var66.i);
7397       /* 19: addssw */
7398       var75.i = ORC_CLAMP_SW (var69.i + var65.i);
7399       /* 20: addssw */
7400       var76.i = ORC_CLAMP_SW (var75.i + var65.i);
7401       /* 22: mullw */
7402       var77.i = (var65.i * var52.i) & 0xffff;
7403       /* 23: shrsw */
7404       var78.i = var77.i >> 8;
7405       /* 24: addssw */
7406       var79.i = ORC_CLAMP_SW (var76.i + var78.i);
7407       /* 26: mullw */
7408       var80.i = (var65.i * var53.i) & 0xffff;
7409       /* 27: shrsw */
7410       var81.i = var80.i >> 8;
7411       /* 28: subssw */
7412       var82.i = ORC_CLAMP_SW (var69.i - var81.i);
7413       /* 30: mullw */
7414       var83.i = (var66.i * var54.i) & 0xffff;
7415       /* 31: shrsw */
7416       var84.i = var83.i >> 8;
7417       /* 32: subssw */
7418       var85.i = ORC_CLAMP_SW (var82.i - var84.i);
7419       /* 33: subssw */
7420       var86.i = ORC_CLAMP_SW (var85.i - var84.i);
7421       /* 34: convssswb */
7422       var87 = ORC_CLAMP_SB (var74.i);
7423       /* 35: convssswb */
7424       var88 = ORC_CLAMP_SB (var86.i);
7425       /* 36: convssswb */
7426       var89 = ORC_CLAMP_SB (var79.i);
7427       /* 37: mergebw */
7428       {
7429         orc_union16 _dest;
7430         _dest.x2[0] = var89;
7431         _dest.x2[1] = var88;
7432         var90.i = _dest.i;
7433       }
7434       /* 38: mergebw */
7435       {
7436         orc_union16 _dest;
7437         _dest.x2[0] = var87;
7438         _dest.x2[1] = var61;
7439         var91.i = _dest.i;
7440       }
7441       /* 39: mergewl */
7442       {
7443         orc_union32 _dest;
7444         _dest.x2[0] = var90.i;
7445         _dest.x2[1] = var91.i;
7446         var92.i = _dest.i;
7447       }
7448       /* 41: addb */
7449       var56.x4[0] = var92.x4[0] + var55.x4[0];
7450       var56.x4[1] = var92.x4[1] + var55.x4[1];
7451       var56.x4[2] = var92.x4[2] + var55.x4[2];
7452       var56.x4[3] = var92.x4[3] + var55.x4[3];
7453       /* 42: storel */
7454       ptr0[i] = var56;
7455     }
7456   }
7457
7458 }
7459
7460 #else
7461 static void
7462 _backup_video_convert_orc_convert_AYUV_BGRA (OrcExecutor * ORC_RESTRICT ex)
7463 {
7464   int i;
7465   int j;
7466   int n = ex->n;
7467   int m = ex->params[ORC_VAR_A1];
7468   orc_union32 *ORC_RESTRICT ptr0;
7469   const orc_union32 *ORC_RESTRICT ptr4;
7470   orc_union32 var48;
7471 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
7472   volatile orc_union32 var49;
7473 #else
7474   orc_union32 var49;
7475 #endif
7476 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
7477   volatile orc_union16 var50;
7478 #else
7479   orc_union16 var50;
7480 #endif
7481 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
7482   volatile orc_union16 var51;
7483 #else
7484   orc_union16 var51;
7485 #endif
7486 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
7487   volatile orc_union16 var52;
7488 #else
7489   orc_union16 var52;
7490 #endif
7491 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
7492   volatile orc_union16 var53;
7493 #else
7494   orc_union16 var53;
7495 #endif
7496 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
7497   volatile orc_union16 var54;
7498 #else
7499   orc_union16 var54;
7500 #endif
7501 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
7502   volatile orc_union32 var55;
7503 #else
7504   orc_union32 var55;
7505 #endif
7506   orc_union32 var56;
7507   orc_union32 var57;
7508   orc_union16 var58;
7509   orc_union16 var59;
7510   orc_int8 var60;
7511   orc_int8 var61;
7512   orc_int8 var62;
7513   orc_int8 var63;
7514   orc_union16 var64;
7515   orc_union16 var65;
7516   orc_union16 var66;
7517   orc_union16 var67;
7518   orc_union16 var68;
7519   orc_union16 var69;
7520   orc_union16 var70;
7521   orc_union16 var71;
7522   orc_union16 var72;
7523   orc_union16 var73;
7524   orc_union16 var74;
7525   orc_union16 var75;
7526   orc_union16 var76;
7527   orc_union16 var77;
7528   orc_union16 var78;
7529   orc_union16 var79;
7530   orc_union16 var80;
7531   orc_union16 var81;
7532   orc_union16 var82;
7533   orc_union16 var83;
7534   orc_union16 var84;
7535   orc_union16 var85;
7536   orc_union16 var86;
7537   orc_int8 var87;
7538   orc_int8 var88;
7539   orc_int8 var89;
7540   orc_union16 var90;
7541   orc_union16 var91;
7542   orc_union32 var92;
7543
7544   for (j = 0; j < m; j++) {
7545     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
7546     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
7547
7548     /* 1: loadpb */
7549     var49.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7550     var49.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7551     var49.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7552     var49.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7553     /* 9: loadpw */
7554     var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */
7555     /* 14: loadpw */
7556     var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */
7557     /* 21: loadpw */
7558     var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */
7559     /* 25: loadpw */
7560     var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */
7561     /* 29: loadpw */
7562     var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */
7563     /* 40: loadpb */
7564     var55.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7565     var55.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7566     var55.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7567     var55.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7568
7569     for (i = 0; i < n; i++) {
7570       /* 0: loadl */
7571       var48 = ptr4[i];
7572       /* 2: subb */
7573       var57.x4[0] = var48.x4[0] - var49.x4[0];
7574       var57.x4[1] = var48.x4[1] - var49.x4[1];
7575       var57.x4[2] = var48.x4[2] - var49.x4[2];
7576       var57.x4[3] = var48.x4[3] - var49.x4[3];
7577       /* 3: splitlw */
7578       {
7579         orc_union32 _src;
7580         _src.i = var57.i;
7581         var58.i = _src.x2[1];
7582         var59.i = _src.x2[0];
7583       }
7584       /* 4: splitwb */
7585       {
7586         orc_union16 _src;
7587         _src.i = var59.i;
7588         var60 = _src.x2[1];
7589         var61 = _src.x2[0];
7590       }
7591       /* 5: splitwb */
7592       {
7593         orc_union16 _src;
7594         _src.i = var58.i;
7595         var62 = _src.x2[1];
7596         var63 = _src.x2[0];
7597       }
7598       /* 6: convsbw */
7599       var64.i = var60;
7600       /* 7: convsbw */
7601       var65.i = var63;
7602       /* 8: convsbw */
7603       var66.i = var62;
7604       /* 10: mullw */
7605       var67.i = (var64.i * var50.i) & 0xffff;
7606       /* 11: shrsw */
7607       var68.i = var67.i >> 8;
7608       /* 12: addssw */
7609       var69.i = ORC_CLAMP_SW (var64.i + var68.i);
7610       /* 13: addssw */
7611       var70.i = ORC_CLAMP_SW (var69.i + var66.i);
7612       /* 15: mullw */
7613       var71.i = (var66.i * var51.i) & 0xffff;
7614       /* 16: shrsw */
7615       var72.i = var71.i >> 8;
7616       /* 17: subssw */
7617       var73.i = ORC_CLAMP_SW (var70.i - var72.i);
7618       /* 18: addssw */
7619       var74.i = ORC_CLAMP_SW (var73.i + var66.i);
7620       /* 19: addssw */
7621       var75.i = ORC_CLAMP_SW (var69.i + var65.i);
7622       /* 20: addssw */
7623       var76.i = ORC_CLAMP_SW (var75.i + var65.i);
7624       /* 22: mullw */
7625       var77.i = (var65.i * var52.i) & 0xffff;
7626       /* 23: shrsw */
7627       var78.i = var77.i >> 8;
7628       /* 24: addssw */
7629       var79.i = ORC_CLAMP_SW (var76.i + var78.i);
7630       /* 26: mullw */
7631       var80.i = (var65.i * var53.i) & 0xffff;
7632       /* 27: shrsw */
7633       var81.i = var80.i >> 8;
7634       /* 28: subssw */
7635       var82.i = ORC_CLAMP_SW (var69.i - var81.i);
7636       /* 30: mullw */
7637       var83.i = (var66.i * var54.i) & 0xffff;
7638       /* 31: shrsw */
7639       var84.i = var83.i >> 8;
7640       /* 32: subssw */
7641       var85.i = ORC_CLAMP_SW (var82.i - var84.i);
7642       /* 33: subssw */
7643       var86.i = ORC_CLAMP_SW (var85.i - var84.i);
7644       /* 34: convssswb */
7645       var87 = ORC_CLAMP_SB (var74.i);
7646       /* 35: convssswb */
7647       var88 = ORC_CLAMP_SB (var86.i);
7648       /* 36: convssswb */
7649       var89 = ORC_CLAMP_SB (var79.i);
7650       /* 37: mergebw */
7651       {
7652         orc_union16 _dest;
7653         _dest.x2[0] = var89;
7654         _dest.x2[1] = var88;
7655         var90.i = _dest.i;
7656       }
7657       /* 38: mergebw */
7658       {
7659         orc_union16 _dest;
7660         _dest.x2[0] = var87;
7661         _dest.x2[1] = var61;
7662         var91.i = _dest.i;
7663       }
7664       /* 39: mergewl */
7665       {
7666         orc_union32 _dest;
7667         _dest.x2[0] = var90.i;
7668         _dest.x2[1] = var91.i;
7669         var92.i = _dest.i;
7670       }
7671       /* 41: addb */
7672       var56.x4[0] = var92.x4[0] + var55.x4[0];
7673       var56.x4[1] = var92.x4[1] + var55.x4[1];
7674       var56.x4[2] = var92.x4[2] + var55.x4[2];
7675       var56.x4[3] = var92.x4[3] + var55.x4[3];
7676       /* 42: storel */
7677       ptr0[i] = var56;
7678     }
7679   }
7680
7681 }
7682
7683 void
7684 video_convert_orc_convert_AYUV_BGRA (guint8 * ORC_RESTRICT d1, int d1_stride,
7685     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
7686 {
7687   OrcExecutor _ex, *ex = &_ex;
7688   static volatile int p_inited = 0;
7689   static OrcCode *c = 0;
7690   void (*func) (OrcExecutor *);
7691
7692   if (!p_inited) {
7693     orc_once_mutex_lock ();
7694     if (!p_inited) {
7695       OrcProgram *p;
7696
7697 #if 1
7698       static const orc_uint8 bc[] = {
7699         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
7700         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 65, 89,
7701         85, 86, 95, 66, 71, 82, 65, 11, 4, 4, 12, 4, 4, 14, 1, 8,
7702         0, 0, 0, 14, 4, 128, 0, 0, 0, 14, 4, 42, 0, 0, 0, 14,
7703         4, 103, 0, 0, 0, 14, 4, 4, 0, 0, 0, 14, 4, 100, 0, 0,
7704         0, 14, 4, 104, 0, 0, 0, 20, 2, 20, 2, 20, 1, 20, 1, 20,
7705         1, 20, 1, 20, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20,
7706         1, 20, 1, 20, 1, 20, 4, 21, 2, 65, 47, 4, 17, 198, 32, 33,
7707         47, 199, 35, 34, 33, 199, 37, 36, 32, 149, 38, 35, 149, 39, 36, 149,
7708         40, 37, 89, 32, 38, 18, 94, 32, 32, 16, 71, 38, 38, 32, 71, 41,
7709         38, 40, 89, 32, 40, 19, 94, 32, 32, 16, 99, 41, 41, 32, 71, 41,
7710         41, 40, 71, 43, 38, 39, 71, 43, 43, 39, 89, 32, 39, 20, 94, 32,
7711         32, 16, 71, 43, 43, 32, 89, 32, 39, 21, 94, 32, 32, 16, 99, 42,
7712         38, 32, 89, 32, 40, 22, 94, 32, 32, 16, 99, 42, 42, 32, 99, 42,
7713         42, 32, 159, 44, 41, 159, 45, 42, 159, 46, 43, 196, 32, 46, 45, 196,
7714         33, 44, 34, 195, 47, 32, 33, 21, 2, 33, 0, 47, 17, 2, 0,
7715       };
7716       p = orc_program_new_from_static_bytecode (bc);
7717       orc_program_set_backup_function (p,
7718           _backup_video_convert_orc_convert_AYUV_BGRA);
7719 #else
7720       p = orc_program_new ();
7721       orc_program_set_2d (p);
7722       orc_program_set_name (p, "video_convert_orc_convert_AYUV_BGRA");
7723       orc_program_set_backup_function (p,
7724           _backup_video_convert_orc_convert_AYUV_BGRA);
7725       orc_program_add_destination (p, 4, "d1");
7726       orc_program_add_source (p, 4, "s1");
7727       orc_program_add_constant (p, 1, 0x00000008, "c1");
7728       orc_program_add_constant (p, 4, 0x00000080, "c2");
7729       orc_program_add_constant (p, 4, 0x0000002a, "c3");
7730       orc_program_add_constant (p, 4, 0x00000067, "c4");
7731       orc_program_add_constant (p, 4, 0x00000004, "c5");
7732       orc_program_add_constant (p, 4, 0x00000064, "c6");
7733       orc_program_add_constant (p, 4, 0x00000068, "c7");
7734       orc_program_add_temporary (p, 2, "t1");
7735       orc_program_add_temporary (p, 2, "t2");
7736       orc_program_add_temporary (p, 1, "t3");
7737       orc_program_add_temporary (p, 1, "t4");
7738       orc_program_add_temporary (p, 1, "t5");
7739       orc_program_add_temporary (p, 1, "t6");
7740       orc_program_add_temporary (p, 2, "t7");
7741       orc_program_add_temporary (p, 2, "t8");
7742       orc_program_add_temporary (p, 2, "t9");
7743       orc_program_add_temporary (p, 2, "t10");
7744       orc_program_add_temporary (p, 2, "t11");
7745       orc_program_add_temporary (p, 2, "t12");
7746       orc_program_add_temporary (p, 1, "t13");
7747       orc_program_add_temporary (p, 1, "t14");
7748       orc_program_add_temporary (p, 1, "t15");
7749       orc_program_add_temporary (p, 4, "t16");
7750
7751       orc_program_append_2 (p, "subb", 2, 47, ORC_VAR_S1, ORC_VAR_C2,
7752           ORC_VAR_D1);
7753       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T1, ORC_VAR_T2, 47,
7754           ORC_VAR_D1);
7755       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T2,
7756           ORC_VAR_D1);
7757       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_T1,
7758           ORC_VAR_D1);
7759       orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1,
7760           ORC_VAR_D1);
7761       orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_D1,
7762           ORC_VAR_D1);
7763       orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_D1,
7764           ORC_VAR_D1);
7765       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_C3,
7766           ORC_VAR_D1);
7767       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
7768           ORC_VAR_D1);
7769       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T1,
7770           ORC_VAR_D1);
7771       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T7, ORC_VAR_T9,
7772           ORC_VAR_D1);
7773       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_C4,
7774           ORC_VAR_D1);
7775       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
7776           ORC_VAR_D1);
7777       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T10, ORC_VAR_T10,
7778           ORC_VAR_T1, ORC_VAR_D1);
7779       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T10,
7780           ORC_VAR_T9, ORC_VAR_D1);
7781       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T7, ORC_VAR_T8,
7782           ORC_VAR_D1);
7783       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T12,
7784           ORC_VAR_T8, ORC_VAR_D1);
7785       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_C5,
7786           ORC_VAR_D1);
7787       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
7788           ORC_VAR_D1);
7789       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T12,
7790           ORC_VAR_T1, ORC_VAR_D1);
7791       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_C6,
7792           ORC_VAR_D1);
7793       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
7794           ORC_VAR_D1);
7795       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T7, ORC_VAR_T1,
7796           ORC_VAR_D1);
7797       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_C7,
7798           ORC_VAR_D1);
7799       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
7800           ORC_VAR_D1);
7801       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T11,
7802           ORC_VAR_T1, ORC_VAR_D1);
7803       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T11,
7804           ORC_VAR_T1, ORC_VAR_D1);
7805       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T13, ORC_VAR_T10,
7806           ORC_VAR_D1, ORC_VAR_D1);
7807       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T14, ORC_VAR_T11,
7808           ORC_VAR_D1, ORC_VAR_D1);
7809       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T15, ORC_VAR_T12,
7810           ORC_VAR_D1, ORC_VAR_D1);
7811       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T15,
7812           ORC_VAR_T14, ORC_VAR_D1);
7813       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_T13,
7814           ORC_VAR_T3, ORC_VAR_D1);
7815       orc_program_append_2 (p, "mergewl", 0, 47, ORC_VAR_T1, ORC_VAR_T2,
7816           ORC_VAR_D1);
7817       orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, 47, ORC_VAR_C2,
7818           ORC_VAR_D1);
7819 #endif
7820
7821       orc_program_compile (p);
7822       c = orc_program_take_code (p);
7823       orc_program_free (p);
7824     }
7825     p_inited = TRUE;
7826     orc_once_mutex_unlock ();
7827   }
7828   ex->arrays[ORC_VAR_A2] = c;
7829   ex->program = 0;
7830
7831   ex->n = n;
7832   ORC_EXECUTOR_M (ex) = m;
7833   ex->arrays[ORC_VAR_D1] = d1;
7834   ex->params[ORC_VAR_D1] = d1_stride;
7835   ex->arrays[ORC_VAR_S1] = (void *) s1;
7836   ex->params[ORC_VAR_S1] = s1_stride;
7837
7838   func = c->exec;
7839   func (ex);
7840 }
7841 #endif
7842
7843
7844 /* video_convert_orc_convert_AYUV_ABGR */
7845 #ifdef DISABLE_ORC
7846 void
7847 video_convert_orc_convert_AYUV_ABGR (guint8 * ORC_RESTRICT d1, int d1_stride,
7848     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
7849 {
7850   int i;
7851   int j;
7852   orc_union32 *ORC_RESTRICT ptr0;
7853   const orc_union32 *ORC_RESTRICT ptr4;
7854   orc_union32 var48;
7855 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
7856   volatile orc_union32 var49;
7857 #else
7858   orc_union32 var49;
7859 #endif
7860 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
7861   volatile orc_union16 var50;
7862 #else
7863   orc_union16 var50;
7864 #endif
7865 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
7866   volatile orc_union16 var51;
7867 #else
7868   orc_union16 var51;
7869 #endif
7870 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
7871   volatile orc_union16 var52;
7872 #else
7873   orc_union16 var52;
7874 #endif
7875 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
7876   volatile orc_union16 var53;
7877 #else
7878   orc_union16 var53;
7879 #endif
7880 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
7881   volatile orc_union16 var54;
7882 #else
7883   orc_union16 var54;
7884 #endif
7885 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
7886   volatile orc_union32 var55;
7887 #else
7888   orc_union32 var55;
7889 #endif
7890   orc_union32 var56;
7891   orc_union32 var57;
7892   orc_union16 var58;
7893   orc_union16 var59;
7894   orc_int8 var60;
7895   orc_int8 var61;
7896   orc_int8 var62;
7897   orc_int8 var63;
7898   orc_union16 var64;
7899   orc_union16 var65;
7900   orc_union16 var66;
7901   orc_union16 var67;
7902   orc_union16 var68;
7903   orc_union16 var69;
7904   orc_union16 var70;
7905   orc_union16 var71;
7906   orc_union16 var72;
7907   orc_union16 var73;
7908   orc_union16 var74;
7909   orc_union16 var75;
7910   orc_union16 var76;
7911   orc_union16 var77;
7912   orc_union16 var78;
7913   orc_union16 var79;
7914   orc_union16 var80;
7915   orc_union16 var81;
7916   orc_union16 var82;
7917   orc_union16 var83;
7918   orc_union16 var84;
7919   orc_union16 var85;
7920   orc_union16 var86;
7921   orc_int8 var87;
7922   orc_int8 var88;
7923   orc_int8 var89;
7924   orc_union16 var90;
7925   orc_union16 var91;
7926   orc_union32 var92;
7927
7928   for (j = 0; j < m; j++) {
7929     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
7930     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
7931
7932     /* 1: loadpb */
7933     var49.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7934     var49.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7935     var49.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7936     var49.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7937     /* 9: loadpw */
7938     var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */
7939     /* 14: loadpw */
7940     var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */
7941     /* 21: loadpw */
7942     var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */
7943     /* 25: loadpw */
7944     var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */
7945     /* 29: loadpw */
7946     var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */
7947     /* 40: loadpb */
7948     var55.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7949     var55.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7950     var55.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7951     var55.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
7952
7953     for (i = 0; i < n; i++) {
7954       /* 0: loadl */
7955       var48 = ptr4[i];
7956       /* 2: subb */
7957       var57.x4[0] = var48.x4[0] - var49.x4[0];
7958       var57.x4[1] = var48.x4[1] - var49.x4[1];
7959       var57.x4[2] = var48.x4[2] - var49.x4[2];
7960       var57.x4[3] = var48.x4[3] - var49.x4[3];
7961       /* 3: splitlw */
7962       {
7963         orc_union32 _src;
7964         _src.i = var57.i;
7965         var58.i = _src.x2[1];
7966         var59.i = _src.x2[0];
7967       }
7968       /* 4: splitwb */
7969       {
7970         orc_union16 _src;
7971         _src.i = var59.i;
7972         var60 = _src.x2[1];
7973         var61 = _src.x2[0];
7974       }
7975       /* 5: splitwb */
7976       {
7977         orc_union16 _src;
7978         _src.i = var58.i;
7979         var62 = _src.x2[1];
7980         var63 = _src.x2[0];
7981       }
7982       /* 6: convsbw */
7983       var64.i = var60;
7984       /* 7: convsbw */
7985       var65.i = var63;
7986       /* 8: convsbw */
7987       var66.i = var62;
7988       /* 10: mullw */
7989       var67.i = (var64.i * var50.i) & 0xffff;
7990       /* 11: shrsw */
7991       var68.i = var67.i >> 8;
7992       /* 12: addssw */
7993       var69.i = ORC_CLAMP_SW (var64.i + var68.i);
7994       /* 13: addssw */
7995       var70.i = ORC_CLAMP_SW (var69.i + var66.i);
7996       /* 15: mullw */
7997       var71.i = (var66.i * var51.i) & 0xffff;
7998       /* 16: shrsw */
7999       var72.i = var71.i >> 8;
8000       /* 17: subssw */
8001       var73.i = ORC_CLAMP_SW (var70.i - var72.i);
8002       /* 18: addssw */
8003       var74.i = ORC_CLAMP_SW (var73.i + var66.i);
8004       /* 19: addssw */
8005       var75.i = ORC_CLAMP_SW (var69.i + var65.i);
8006       /* 20: addssw */
8007       var76.i = ORC_CLAMP_SW (var75.i + var65.i);
8008       /* 22: mullw */
8009       var77.i = (var65.i * var52.i) & 0xffff;
8010       /* 23: shrsw */
8011       var78.i = var77.i >> 8;
8012       /* 24: addssw */
8013       var79.i = ORC_CLAMP_SW (var76.i + var78.i);
8014       /* 26: mullw */
8015       var80.i = (var65.i * var53.i) & 0xffff;
8016       /* 27: shrsw */
8017       var81.i = var80.i >> 8;
8018       /* 28: subssw */
8019       var82.i = ORC_CLAMP_SW (var69.i - var81.i);
8020       /* 30: mullw */
8021       var83.i = (var66.i * var54.i) & 0xffff;
8022       /* 31: shrsw */
8023       var84.i = var83.i >> 8;
8024       /* 32: subssw */
8025       var85.i = ORC_CLAMP_SW (var82.i - var84.i);
8026       /* 33: subssw */
8027       var86.i = ORC_CLAMP_SW (var85.i - var84.i);
8028       /* 34: convssswb */
8029       var87 = ORC_CLAMP_SB (var74.i);
8030       /* 35: convssswb */
8031       var88 = ORC_CLAMP_SB (var86.i);
8032       /* 36: convssswb */
8033       var89 = ORC_CLAMP_SB (var79.i);
8034       /* 37: mergebw */
8035       {
8036         orc_union16 _dest;
8037         _dest.x2[0] = var61;
8038         _dest.x2[1] = var89;
8039         var90.i = _dest.i;
8040       }
8041       /* 38: mergebw */
8042       {
8043         orc_union16 _dest;
8044         _dest.x2[0] = var88;
8045         _dest.x2[1] = var87;
8046         var91.i = _dest.i;
8047       }
8048       /* 39: mergewl */
8049       {
8050         orc_union32 _dest;
8051         _dest.x2[0] = var90.i;
8052         _dest.x2[1] = var91.i;
8053         var92.i = _dest.i;
8054       }
8055       /* 41: addb */
8056       var56.x4[0] = var92.x4[0] + var55.x4[0];
8057       var56.x4[1] = var92.x4[1] + var55.x4[1];
8058       var56.x4[2] = var92.x4[2] + var55.x4[2];
8059       var56.x4[3] = var92.x4[3] + var55.x4[3];
8060       /* 42: storel */
8061       ptr0[i] = var56;
8062     }
8063   }
8064
8065 }
8066
8067 #else
8068 static void
8069 _backup_video_convert_orc_convert_AYUV_ABGR (OrcExecutor * ORC_RESTRICT ex)
8070 {
8071   int i;
8072   int j;
8073   int n = ex->n;
8074   int m = ex->params[ORC_VAR_A1];
8075   orc_union32 *ORC_RESTRICT ptr0;
8076   const orc_union32 *ORC_RESTRICT ptr4;
8077   orc_union32 var48;
8078 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8079   volatile orc_union32 var49;
8080 #else
8081   orc_union32 var49;
8082 #endif
8083 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8084   volatile orc_union16 var50;
8085 #else
8086   orc_union16 var50;
8087 #endif
8088 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8089   volatile orc_union16 var51;
8090 #else
8091   orc_union16 var51;
8092 #endif
8093 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8094   volatile orc_union16 var52;
8095 #else
8096   orc_union16 var52;
8097 #endif
8098 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8099   volatile orc_union16 var53;
8100 #else
8101   orc_union16 var53;
8102 #endif
8103 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8104   volatile orc_union16 var54;
8105 #else
8106   orc_union16 var54;
8107 #endif
8108 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8109   volatile orc_union32 var55;
8110 #else
8111   orc_union32 var55;
8112 #endif
8113   orc_union32 var56;
8114   orc_union32 var57;
8115   orc_union16 var58;
8116   orc_union16 var59;
8117   orc_int8 var60;
8118   orc_int8 var61;
8119   orc_int8 var62;
8120   orc_int8 var63;
8121   orc_union16 var64;
8122   orc_union16 var65;
8123   orc_union16 var66;
8124   orc_union16 var67;
8125   orc_union16 var68;
8126   orc_union16 var69;
8127   orc_union16 var70;
8128   orc_union16 var71;
8129   orc_union16 var72;
8130   orc_union16 var73;
8131   orc_union16 var74;
8132   orc_union16 var75;
8133   orc_union16 var76;
8134   orc_union16 var77;
8135   orc_union16 var78;
8136   orc_union16 var79;
8137   orc_union16 var80;
8138   orc_union16 var81;
8139   orc_union16 var82;
8140   orc_union16 var83;
8141   orc_union16 var84;
8142   orc_union16 var85;
8143   orc_union16 var86;
8144   orc_int8 var87;
8145   orc_int8 var88;
8146   orc_int8 var89;
8147   orc_union16 var90;
8148   orc_union16 var91;
8149   orc_union32 var92;
8150
8151   for (j = 0; j < m; j++) {
8152     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
8153     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
8154
8155     /* 1: loadpb */
8156     var49.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8157     var49.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8158     var49.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8159     var49.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8160     /* 9: loadpw */
8161     var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */
8162     /* 14: loadpw */
8163     var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */
8164     /* 21: loadpw */
8165     var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */
8166     /* 25: loadpw */
8167     var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */
8168     /* 29: loadpw */
8169     var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */
8170     /* 40: loadpb */
8171     var55.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8172     var55.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8173     var55.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8174     var55.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8175
8176     for (i = 0; i < n; i++) {
8177       /* 0: loadl */
8178       var48 = ptr4[i];
8179       /* 2: subb */
8180       var57.x4[0] = var48.x4[0] - var49.x4[0];
8181       var57.x4[1] = var48.x4[1] - var49.x4[1];
8182       var57.x4[2] = var48.x4[2] - var49.x4[2];
8183       var57.x4[3] = var48.x4[3] - var49.x4[3];
8184       /* 3: splitlw */
8185       {
8186         orc_union32 _src;
8187         _src.i = var57.i;
8188         var58.i = _src.x2[1];
8189         var59.i = _src.x2[0];
8190       }
8191       /* 4: splitwb */
8192       {
8193         orc_union16 _src;
8194         _src.i = var59.i;
8195         var60 = _src.x2[1];
8196         var61 = _src.x2[0];
8197       }
8198       /* 5: splitwb */
8199       {
8200         orc_union16 _src;
8201         _src.i = var58.i;
8202         var62 = _src.x2[1];
8203         var63 = _src.x2[0];
8204       }
8205       /* 6: convsbw */
8206       var64.i = var60;
8207       /* 7: convsbw */
8208       var65.i = var63;
8209       /* 8: convsbw */
8210       var66.i = var62;
8211       /* 10: mullw */
8212       var67.i = (var64.i * var50.i) & 0xffff;
8213       /* 11: shrsw */
8214       var68.i = var67.i >> 8;
8215       /* 12: addssw */
8216       var69.i = ORC_CLAMP_SW (var64.i + var68.i);
8217       /* 13: addssw */
8218       var70.i = ORC_CLAMP_SW (var69.i + var66.i);
8219       /* 15: mullw */
8220       var71.i = (var66.i * var51.i) & 0xffff;
8221       /* 16: shrsw */
8222       var72.i = var71.i >> 8;
8223       /* 17: subssw */
8224       var73.i = ORC_CLAMP_SW (var70.i - var72.i);
8225       /* 18: addssw */
8226       var74.i = ORC_CLAMP_SW (var73.i + var66.i);
8227       /* 19: addssw */
8228       var75.i = ORC_CLAMP_SW (var69.i + var65.i);
8229       /* 20: addssw */
8230       var76.i = ORC_CLAMP_SW (var75.i + var65.i);
8231       /* 22: mullw */
8232       var77.i = (var65.i * var52.i) & 0xffff;
8233       /* 23: shrsw */
8234       var78.i = var77.i >> 8;
8235       /* 24: addssw */
8236       var79.i = ORC_CLAMP_SW (var76.i + var78.i);
8237       /* 26: mullw */
8238       var80.i = (var65.i * var53.i) & 0xffff;
8239       /* 27: shrsw */
8240       var81.i = var80.i >> 8;
8241       /* 28: subssw */
8242       var82.i = ORC_CLAMP_SW (var69.i - var81.i);
8243       /* 30: mullw */
8244       var83.i = (var66.i * var54.i) & 0xffff;
8245       /* 31: shrsw */
8246       var84.i = var83.i >> 8;
8247       /* 32: subssw */
8248       var85.i = ORC_CLAMP_SW (var82.i - var84.i);
8249       /* 33: subssw */
8250       var86.i = ORC_CLAMP_SW (var85.i - var84.i);
8251       /* 34: convssswb */
8252       var87 = ORC_CLAMP_SB (var74.i);
8253       /* 35: convssswb */
8254       var88 = ORC_CLAMP_SB (var86.i);
8255       /* 36: convssswb */
8256       var89 = ORC_CLAMP_SB (var79.i);
8257       /* 37: mergebw */
8258       {
8259         orc_union16 _dest;
8260         _dest.x2[0] = var61;
8261         _dest.x2[1] = var89;
8262         var90.i = _dest.i;
8263       }
8264       /* 38: mergebw */
8265       {
8266         orc_union16 _dest;
8267         _dest.x2[0] = var88;
8268         _dest.x2[1] = var87;
8269         var91.i = _dest.i;
8270       }
8271       /* 39: mergewl */
8272       {
8273         orc_union32 _dest;
8274         _dest.x2[0] = var90.i;
8275         _dest.x2[1] = var91.i;
8276         var92.i = _dest.i;
8277       }
8278       /* 41: addb */
8279       var56.x4[0] = var92.x4[0] + var55.x4[0];
8280       var56.x4[1] = var92.x4[1] + var55.x4[1];
8281       var56.x4[2] = var92.x4[2] + var55.x4[2];
8282       var56.x4[3] = var92.x4[3] + var55.x4[3];
8283       /* 42: storel */
8284       ptr0[i] = var56;
8285     }
8286   }
8287
8288 }
8289
8290 void
8291 video_convert_orc_convert_AYUV_ABGR (guint8 * ORC_RESTRICT d1, int d1_stride,
8292     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
8293 {
8294   OrcExecutor _ex, *ex = &_ex;
8295   static volatile int p_inited = 0;
8296   static OrcCode *c = 0;
8297   void (*func) (OrcExecutor *);
8298
8299   if (!p_inited) {
8300     orc_once_mutex_lock ();
8301     if (!p_inited) {
8302       OrcProgram *p;
8303
8304 #if 1
8305       static const orc_uint8 bc[] = {
8306         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
8307         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 65, 89,
8308         85, 86, 95, 65, 66, 71, 82, 11, 4, 4, 12, 4, 4, 14, 1, 8,
8309         0, 0, 0, 14, 4, 128, 0, 0, 0, 14, 4, 42, 0, 0, 0, 14,
8310         4, 103, 0, 0, 0, 14, 4, 4, 0, 0, 0, 14, 4, 100, 0, 0,
8311         0, 14, 4, 104, 0, 0, 0, 20, 2, 20, 2, 20, 1, 20, 1, 20,
8312         1, 20, 1, 20, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20,
8313         1, 20, 1, 20, 1, 20, 4, 21, 2, 65, 47, 4, 17, 198, 32, 33,
8314         47, 199, 35, 34, 33, 199, 37, 36, 32, 149, 38, 35, 149, 39, 36, 149,
8315         40, 37, 89, 32, 38, 18, 94, 32, 32, 16, 71, 38, 38, 32, 71, 41,
8316         38, 40, 89, 32, 40, 19, 94, 32, 32, 16, 99, 41, 41, 32, 71, 41,
8317         41, 40, 71, 43, 38, 39, 71, 43, 43, 39, 89, 32, 39, 20, 94, 32,
8318         32, 16, 71, 43, 43, 32, 89, 32, 39, 21, 94, 32, 32, 16, 99, 42,
8319         38, 32, 89, 32, 40, 22, 94, 32, 32, 16, 99, 42, 42, 32, 99, 42,
8320         42, 32, 159, 44, 41, 159, 45, 42, 159, 46, 43, 196, 32, 34, 46, 196,
8321         33, 45, 44, 195, 47, 32, 33, 21, 2, 33, 0, 47, 17, 2, 0,
8322       };
8323       p = orc_program_new_from_static_bytecode (bc);
8324       orc_program_set_backup_function (p,
8325           _backup_video_convert_orc_convert_AYUV_ABGR);
8326 #else
8327       p = orc_program_new ();
8328       orc_program_set_2d (p);
8329       orc_program_set_name (p, "video_convert_orc_convert_AYUV_ABGR");
8330       orc_program_set_backup_function (p,
8331           _backup_video_convert_orc_convert_AYUV_ABGR);
8332       orc_program_add_destination (p, 4, "d1");
8333       orc_program_add_source (p, 4, "s1");
8334       orc_program_add_constant (p, 1, 0x00000008, "c1");
8335       orc_program_add_constant (p, 4, 0x00000080, "c2");
8336       orc_program_add_constant (p, 4, 0x0000002a, "c3");
8337       orc_program_add_constant (p, 4, 0x00000067, "c4");
8338       orc_program_add_constant (p, 4, 0x00000004, "c5");
8339       orc_program_add_constant (p, 4, 0x00000064, "c6");
8340       orc_program_add_constant (p, 4, 0x00000068, "c7");
8341       orc_program_add_temporary (p, 2, "t1");
8342       orc_program_add_temporary (p, 2, "t2");
8343       orc_program_add_temporary (p, 1, "t3");
8344       orc_program_add_temporary (p, 1, "t4");
8345       orc_program_add_temporary (p, 1, "t5");
8346       orc_program_add_temporary (p, 1, "t6");
8347       orc_program_add_temporary (p, 2, "t7");
8348       orc_program_add_temporary (p, 2, "t8");
8349       orc_program_add_temporary (p, 2, "t9");
8350       orc_program_add_temporary (p, 2, "t10");
8351       orc_program_add_temporary (p, 2, "t11");
8352       orc_program_add_temporary (p, 2, "t12");
8353       orc_program_add_temporary (p, 1, "t13");
8354       orc_program_add_temporary (p, 1, "t14");
8355       orc_program_add_temporary (p, 1, "t15");
8356       orc_program_add_temporary (p, 4, "t16");
8357
8358       orc_program_append_2 (p, "subb", 2, 47, ORC_VAR_S1, ORC_VAR_C2,
8359           ORC_VAR_D1);
8360       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T1, ORC_VAR_T2, 47,
8361           ORC_VAR_D1);
8362       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T2,
8363           ORC_VAR_D1);
8364       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_T1,
8365           ORC_VAR_D1);
8366       orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1,
8367           ORC_VAR_D1);
8368       orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_D1,
8369           ORC_VAR_D1);
8370       orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_D1,
8371           ORC_VAR_D1);
8372       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_C3,
8373           ORC_VAR_D1);
8374       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
8375           ORC_VAR_D1);
8376       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T1,
8377           ORC_VAR_D1);
8378       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T7, ORC_VAR_T9,
8379           ORC_VAR_D1);
8380       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_C4,
8381           ORC_VAR_D1);
8382       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
8383           ORC_VAR_D1);
8384       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T10, ORC_VAR_T10,
8385           ORC_VAR_T1, ORC_VAR_D1);
8386       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T10,
8387           ORC_VAR_T9, ORC_VAR_D1);
8388       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T7, ORC_VAR_T8,
8389           ORC_VAR_D1);
8390       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T12,
8391           ORC_VAR_T8, ORC_VAR_D1);
8392       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_C5,
8393           ORC_VAR_D1);
8394       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
8395           ORC_VAR_D1);
8396       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T12,
8397           ORC_VAR_T1, ORC_VAR_D1);
8398       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_C6,
8399           ORC_VAR_D1);
8400       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
8401           ORC_VAR_D1);
8402       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T7, ORC_VAR_T1,
8403           ORC_VAR_D1);
8404       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_C7,
8405           ORC_VAR_D1);
8406       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
8407           ORC_VAR_D1);
8408       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T11,
8409           ORC_VAR_T1, ORC_VAR_D1);
8410       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T11,
8411           ORC_VAR_T1, ORC_VAR_D1);
8412       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T13, ORC_VAR_T10,
8413           ORC_VAR_D1, ORC_VAR_D1);
8414       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T14, ORC_VAR_T11,
8415           ORC_VAR_D1, ORC_VAR_D1);
8416       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T15, ORC_VAR_T12,
8417           ORC_VAR_D1, ORC_VAR_D1);
8418       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T3,
8419           ORC_VAR_T15, ORC_VAR_D1);
8420       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_T14,
8421           ORC_VAR_T13, ORC_VAR_D1);
8422       orc_program_append_2 (p, "mergewl", 0, 47, ORC_VAR_T1, ORC_VAR_T2,
8423           ORC_VAR_D1);
8424       orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, 47, ORC_VAR_C2,
8425           ORC_VAR_D1);
8426 #endif
8427
8428       orc_program_compile (p);
8429       c = orc_program_take_code (p);
8430       orc_program_free (p);
8431     }
8432     p_inited = TRUE;
8433     orc_once_mutex_unlock ();
8434   }
8435   ex->arrays[ORC_VAR_A2] = c;
8436   ex->program = 0;
8437
8438   ex->n = n;
8439   ORC_EXECUTOR_M (ex) = m;
8440   ex->arrays[ORC_VAR_D1] = d1;
8441   ex->params[ORC_VAR_D1] = d1_stride;
8442   ex->arrays[ORC_VAR_S1] = (void *) s1;
8443   ex->params[ORC_VAR_S1] = s1_stride;
8444
8445   func = c->exec;
8446   func (ex);
8447 }
8448 #endif
8449
8450
8451 /* video_convert_orc_convert_AYUV_RGBA */
8452 #ifdef DISABLE_ORC
8453 void
8454 video_convert_orc_convert_AYUV_RGBA (guint8 * ORC_RESTRICT d1, int d1_stride,
8455     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
8456 {
8457   int i;
8458   int j;
8459   orc_union32 *ORC_RESTRICT ptr0;
8460   const orc_union32 *ORC_RESTRICT ptr4;
8461   orc_union32 var48;
8462 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8463   volatile orc_union32 var49;
8464 #else
8465   orc_union32 var49;
8466 #endif
8467 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8468   volatile orc_union16 var50;
8469 #else
8470   orc_union16 var50;
8471 #endif
8472 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8473   volatile orc_union16 var51;
8474 #else
8475   orc_union16 var51;
8476 #endif
8477 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8478   volatile orc_union16 var52;
8479 #else
8480   orc_union16 var52;
8481 #endif
8482 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8483   volatile orc_union16 var53;
8484 #else
8485   orc_union16 var53;
8486 #endif
8487 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8488   volatile orc_union16 var54;
8489 #else
8490   orc_union16 var54;
8491 #endif
8492 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8493   volatile orc_union32 var55;
8494 #else
8495   orc_union32 var55;
8496 #endif
8497   orc_union32 var56;
8498   orc_union32 var57;
8499   orc_union16 var58;
8500   orc_union16 var59;
8501   orc_int8 var60;
8502   orc_int8 var61;
8503   orc_int8 var62;
8504   orc_int8 var63;
8505   orc_union16 var64;
8506   orc_union16 var65;
8507   orc_union16 var66;
8508   orc_union16 var67;
8509   orc_union16 var68;
8510   orc_union16 var69;
8511   orc_union16 var70;
8512   orc_union16 var71;
8513   orc_union16 var72;
8514   orc_union16 var73;
8515   orc_union16 var74;
8516   orc_union16 var75;
8517   orc_union16 var76;
8518   orc_union16 var77;
8519   orc_union16 var78;
8520   orc_union16 var79;
8521   orc_union16 var80;
8522   orc_union16 var81;
8523   orc_union16 var82;
8524   orc_union16 var83;
8525   orc_union16 var84;
8526   orc_union16 var85;
8527   orc_union16 var86;
8528   orc_int8 var87;
8529   orc_int8 var88;
8530   orc_int8 var89;
8531   orc_union16 var90;
8532   orc_union16 var91;
8533   orc_union32 var92;
8534
8535   for (j = 0; j < m; j++) {
8536     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
8537     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
8538
8539     /* 1: loadpb */
8540     var49.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8541     var49.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8542     var49.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8543     var49.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8544     /* 9: loadpw */
8545     var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */
8546     /* 14: loadpw */
8547     var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */
8548     /* 21: loadpw */
8549     var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */
8550     /* 25: loadpw */
8551     var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */
8552     /* 29: loadpw */
8553     var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */
8554     /* 40: loadpb */
8555     var55.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8556     var55.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8557     var55.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8558     var55.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8559
8560     for (i = 0; i < n; i++) {
8561       /* 0: loadl */
8562       var48 = ptr4[i];
8563       /* 2: subb */
8564       var57.x4[0] = var48.x4[0] - var49.x4[0];
8565       var57.x4[1] = var48.x4[1] - var49.x4[1];
8566       var57.x4[2] = var48.x4[2] - var49.x4[2];
8567       var57.x4[3] = var48.x4[3] - var49.x4[3];
8568       /* 3: splitlw */
8569       {
8570         orc_union32 _src;
8571         _src.i = var57.i;
8572         var58.i = _src.x2[1];
8573         var59.i = _src.x2[0];
8574       }
8575       /* 4: splitwb */
8576       {
8577         orc_union16 _src;
8578         _src.i = var59.i;
8579         var60 = _src.x2[1];
8580         var61 = _src.x2[0];
8581       }
8582       /* 5: splitwb */
8583       {
8584         orc_union16 _src;
8585         _src.i = var58.i;
8586         var62 = _src.x2[1];
8587         var63 = _src.x2[0];
8588       }
8589       /* 6: convsbw */
8590       var64.i = var60;
8591       /* 7: convsbw */
8592       var65.i = var63;
8593       /* 8: convsbw */
8594       var66.i = var62;
8595       /* 10: mullw */
8596       var67.i = (var64.i * var50.i) & 0xffff;
8597       /* 11: shrsw */
8598       var68.i = var67.i >> 8;
8599       /* 12: addssw */
8600       var69.i = ORC_CLAMP_SW (var64.i + var68.i);
8601       /* 13: addssw */
8602       var70.i = ORC_CLAMP_SW (var69.i + var66.i);
8603       /* 15: mullw */
8604       var71.i = (var66.i * var51.i) & 0xffff;
8605       /* 16: shrsw */
8606       var72.i = var71.i >> 8;
8607       /* 17: subssw */
8608       var73.i = ORC_CLAMP_SW (var70.i - var72.i);
8609       /* 18: addssw */
8610       var74.i = ORC_CLAMP_SW (var73.i + var66.i);
8611       /* 19: addssw */
8612       var75.i = ORC_CLAMP_SW (var69.i + var65.i);
8613       /* 20: addssw */
8614       var76.i = ORC_CLAMP_SW (var75.i + var65.i);
8615       /* 22: mullw */
8616       var77.i = (var65.i * var52.i) & 0xffff;
8617       /* 23: shrsw */
8618       var78.i = var77.i >> 8;
8619       /* 24: addssw */
8620       var79.i = ORC_CLAMP_SW (var76.i + var78.i);
8621       /* 26: mullw */
8622       var80.i = (var65.i * var53.i) & 0xffff;
8623       /* 27: shrsw */
8624       var81.i = var80.i >> 8;
8625       /* 28: subssw */
8626       var82.i = ORC_CLAMP_SW (var69.i - var81.i);
8627       /* 30: mullw */
8628       var83.i = (var66.i * var54.i) & 0xffff;
8629       /* 31: shrsw */
8630       var84.i = var83.i >> 8;
8631       /* 32: subssw */
8632       var85.i = ORC_CLAMP_SW (var82.i - var84.i);
8633       /* 33: subssw */
8634       var86.i = ORC_CLAMP_SW (var85.i - var84.i);
8635       /* 34: convssswb */
8636       var87 = ORC_CLAMP_SB (var74.i);
8637       /* 35: convssswb */
8638       var88 = ORC_CLAMP_SB (var86.i);
8639       /* 36: convssswb */
8640       var89 = ORC_CLAMP_SB (var79.i);
8641       /* 37: mergebw */
8642       {
8643         orc_union16 _dest;
8644         _dest.x2[0] = var87;
8645         _dest.x2[1] = var88;
8646         var90.i = _dest.i;
8647       }
8648       /* 38: mergebw */
8649       {
8650         orc_union16 _dest;
8651         _dest.x2[0] = var89;
8652         _dest.x2[1] = var61;
8653         var91.i = _dest.i;
8654       }
8655       /* 39: mergewl */
8656       {
8657         orc_union32 _dest;
8658         _dest.x2[0] = var90.i;
8659         _dest.x2[1] = var91.i;
8660         var92.i = _dest.i;
8661       }
8662       /* 41: addb */
8663       var56.x4[0] = var92.x4[0] + var55.x4[0];
8664       var56.x4[1] = var92.x4[1] + var55.x4[1];
8665       var56.x4[2] = var92.x4[2] + var55.x4[2];
8666       var56.x4[3] = var92.x4[3] + var55.x4[3];
8667       /* 42: storel */
8668       ptr0[i] = var56;
8669     }
8670   }
8671
8672 }
8673
8674 #else
8675 static void
8676 _backup_video_convert_orc_convert_AYUV_RGBA (OrcExecutor * ORC_RESTRICT ex)
8677 {
8678   int i;
8679   int j;
8680   int n = ex->n;
8681   int m = ex->params[ORC_VAR_A1];
8682   orc_union32 *ORC_RESTRICT ptr0;
8683   const orc_union32 *ORC_RESTRICT ptr4;
8684   orc_union32 var48;
8685 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8686   volatile orc_union32 var49;
8687 #else
8688   orc_union32 var49;
8689 #endif
8690 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8691   volatile orc_union16 var50;
8692 #else
8693   orc_union16 var50;
8694 #endif
8695 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8696   volatile orc_union16 var51;
8697 #else
8698   orc_union16 var51;
8699 #endif
8700 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8701   volatile orc_union16 var52;
8702 #else
8703   orc_union16 var52;
8704 #endif
8705 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8706   volatile orc_union16 var53;
8707 #else
8708   orc_union16 var53;
8709 #endif
8710 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8711   volatile orc_union16 var54;
8712 #else
8713   orc_union16 var54;
8714 #endif
8715 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8716   volatile orc_union32 var55;
8717 #else
8718   orc_union32 var55;
8719 #endif
8720   orc_union32 var56;
8721   orc_union32 var57;
8722   orc_union16 var58;
8723   orc_union16 var59;
8724   orc_int8 var60;
8725   orc_int8 var61;
8726   orc_int8 var62;
8727   orc_int8 var63;
8728   orc_union16 var64;
8729   orc_union16 var65;
8730   orc_union16 var66;
8731   orc_union16 var67;
8732   orc_union16 var68;
8733   orc_union16 var69;
8734   orc_union16 var70;
8735   orc_union16 var71;
8736   orc_union16 var72;
8737   orc_union16 var73;
8738   orc_union16 var74;
8739   orc_union16 var75;
8740   orc_union16 var76;
8741   orc_union16 var77;
8742   orc_union16 var78;
8743   orc_union16 var79;
8744   orc_union16 var80;
8745   orc_union16 var81;
8746   orc_union16 var82;
8747   orc_union16 var83;
8748   orc_union16 var84;
8749   orc_union16 var85;
8750   orc_union16 var86;
8751   orc_int8 var87;
8752   orc_int8 var88;
8753   orc_int8 var89;
8754   orc_union16 var90;
8755   orc_union16 var91;
8756   orc_union32 var92;
8757
8758   for (j = 0; j < m; j++) {
8759     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
8760     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
8761
8762     /* 1: loadpb */
8763     var49.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8764     var49.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8765     var49.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8766     var49.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8767     /* 9: loadpw */
8768     var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */
8769     /* 14: loadpw */
8770     var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */
8771     /* 21: loadpw */
8772     var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */
8773     /* 25: loadpw */
8774     var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */
8775     /* 29: loadpw */
8776     var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */
8777     /* 40: loadpb */
8778     var55.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8779     var55.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8780     var55.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8781     var55.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
8782
8783     for (i = 0; i < n; i++) {
8784       /* 0: loadl */
8785       var48 = ptr4[i];
8786       /* 2: subb */
8787       var57.x4[0] = var48.x4[0] - var49.x4[0];
8788       var57.x4[1] = var48.x4[1] - var49.x4[1];
8789       var57.x4[2] = var48.x4[2] - var49.x4[2];
8790       var57.x4[3] = var48.x4[3] - var49.x4[3];
8791       /* 3: splitlw */
8792       {
8793         orc_union32 _src;
8794         _src.i = var57.i;
8795         var58.i = _src.x2[1];
8796         var59.i = _src.x2[0];
8797       }
8798       /* 4: splitwb */
8799       {
8800         orc_union16 _src;
8801         _src.i = var59.i;
8802         var60 = _src.x2[1];
8803         var61 = _src.x2[0];
8804       }
8805       /* 5: splitwb */
8806       {
8807         orc_union16 _src;
8808         _src.i = var58.i;
8809         var62 = _src.x2[1];
8810         var63 = _src.x2[0];
8811       }
8812       /* 6: convsbw */
8813       var64.i = var60;
8814       /* 7: convsbw */
8815       var65.i = var63;
8816       /* 8: convsbw */
8817       var66.i = var62;
8818       /* 10: mullw */
8819       var67.i = (var64.i * var50.i) & 0xffff;
8820       /* 11: shrsw */
8821       var68.i = var67.i >> 8;
8822       /* 12: addssw */
8823       var69.i = ORC_CLAMP_SW (var64.i + var68.i);
8824       /* 13: addssw */
8825       var70.i = ORC_CLAMP_SW (var69.i + var66.i);
8826       /* 15: mullw */
8827       var71.i = (var66.i * var51.i) & 0xffff;
8828       /* 16: shrsw */
8829       var72.i = var71.i >> 8;
8830       /* 17: subssw */
8831       var73.i = ORC_CLAMP_SW (var70.i - var72.i);
8832       /* 18: addssw */
8833       var74.i = ORC_CLAMP_SW (var73.i + var66.i);
8834       /* 19: addssw */
8835       var75.i = ORC_CLAMP_SW (var69.i + var65.i);
8836       /* 20: addssw */
8837       var76.i = ORC_CLAMP_SW (var75.i + var65.i);
8838       /* 22: mullw */
8839       var77.i = (var65.i * var52.i) & 0xffff;
8840       /* 23: shrsw */
8841       var78.i = var77.i >> 8;
8842       /* 24: addssw */
8843       var79.i = ORC_CLAMP_SW (var76.i + var78.i);
8844       /* 26: mullw */
8845       var80.i = (var65.i * var53.i) & 0xffff;
8846       /* 27: shrsw */
8847       var81.i = var80.i >> 8;
8848       /* 28: subssw */
8849       var82.i = ORC_CLAMP_SW (var69.i - var81.i);
8850       /* 30: mullw */
8851       var83.i = (var66.i * var54.i) & 0xffff;
8852       /* 31: shrsw */
8853       var84.i = var83.i >> 8;
8854       /* 32: subssw */
8855       var85.i = ORC_CLAMP_SW (var82.i - var84.i);
8856       /* 33: subssw */
8857       var86.i = ORC_CLAMP_SW (var85.i - var84.i);
8858       /* 34: convssswb */
8859       var87 = ORC_CLAMP_SB (var74.i);
8860       /* 35: convssswb */
8861       var88 = ORC_CLAMP_SB (var86.i);
8862       /* 36: convssswb */
8863       var89 = ORC_CLAMP_SB (var79.i);
8864       /* 37: mergebw */
8865       {
8866         orc_union16 _dest;
8867         _dest.x2[0] = var87;
8868         _dest.x2[1] = var88;
8869         var90.i = _dest.i;
8870       }
8871       /* 38: mergebw */
8872       {
8873         orc_union16 _dest;
8874         _dest.x2[0] = var89;
8875         _dest.x2[1] = var61;
8876         var91.i = _dest.i;
8877       }
8878       /* 39: mergewl */
8879       {
8880         orc_union32 _dest;
8881         _dest.x2[0] = var90.i;
8882         _dest.x2[1] = var91.i;
8883         var92.i = _dest.i;
8884       }
8885       /* 41: addb */
8886       var56.x4[0] = var92.x4[0] + var55.x4[0];
8887       var56.x4[1] = var92.x4[1] + var55.x4[1];
8888       var56.x4[2] = var92.x4[2] + var55.x4[2];
8889       var56.x4[3] = var92.x4[3] + var55.x4[3];
8890       /* 42: storel */
8891       ptr0[i] = var56;
8892     }
8893   }
8894
8895 }
8896
8897 void
8898 video_convert_orc_convert_AYUV_RGBA (guint8 * ORC_RESTRICT d1, int d1_stride,
8899     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
8900 {
8901   OrcExecutor _ex, *ex = &_ex;
8902   static volatile int p_inited = 0;
8903   static OrcCode *c = 0;
8904   void (*func) (OrcExecutor *);
8905
8906   if (!p_inited) {
8907     orc_once_mutex_lock ();
8908     if (!p_inited) {
8909       OrcProgram *p;
8910
8911 #if 1
8912       static const orc_uint8 bc[] = {
8913         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114,
8914         116, 95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 65, 89,
8915         85, 86, 95, 82, 71, 66, 65, 11, 4, 4, 12, 4, 4, 14, 1, 8,
8916         0, 0, 0, 14, 4, 128, 0, 0, 0, 14, 4, 42, 0, 0, 0, 14,
8917         4, 103, 0, 0, 0, 14, 4, 4, 0, 0, 0, 14, 4, 100, 0, 0,
8918         0, 14, 4, 104, 0, 0, 0, 20, 2, 20, 2, 20, 1, 20, 1, 20,
8919         1, 20, 1, 20, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20,
8920         1, 20, 1, 20, 1, 20, 4, 21, 2, 65, 47, 4, 17, 198, 32, 33,
8921         47, 199, 35, 34, 33, 199, 37, 36, 32, 149, 38, 35, 149, 39, 36, 149,
8922         40, 37, 89, 32, 38, 18, 94, 32, 32, 16, 71, 38, 38, 32, 71, 41,
8923         38, 40, 89, 32, 40, 19, 94, 32, 32, 16, 99, 41, 41, 32, 71, 41,
8924         41, 40, 71, 43, 38, 39, 71, 43, 43, 39, 89, 32, 39, 20, 94, 32,
8925         32, 16, 71, 43, 43, 32, 89, 32, 39, 21, 94, 32, 32, 16, 99, 42,
8926         38, 32, 89, 32, 40, 22, 94, 32, 32, 16, 99, 42, 42, 32, 99, 42,
8927         42, 32, 159, 44, 41, 159, 45, 42, 159, 46, 43, 196, 32, 44, 45, 196,
8928         33, 46, 34, 195, 47, 32, 33, 21, 2, 33, 0, 47, 17, 2, 0,
8929       };
8930       p = orc_program_new_from_static_bytecode (bc);
8931       orc_program_set_backup_function (p,
8932           _backup_video_convert_orc_convert_AYUV_RGBA);
8933 #else
8934       p = orc_program_new ();
8935       orc_program_set_2d (p);
8936       orc_program_set_name (p, "video_convert_orc_convert_AYUV_RGBA");
8937       orc_program_set_backup_function (p,
8938           _backup_video_convert_orc_convert_AYUV_RGBA);
8939       orc_program_add_destination (p, 4, "d1");
8940       orc_program_add_source (p, 4, "s1");
8941       orc_program_add_constant (p, 1, 0x00000008, "c1");
8942       orc_program_add_constant (p, 4, 0x00000080, "c2");
8943       orc_program_add_constant (p, 4, 0x0000002a, "c3");
8944       orc_program_add_constant (p, 4, 0x00000067, "c4");
8945       orc_program_add_constant (p, 4, 0x00000004, "c5");
8946       orc_program_add_constant (p, 4, 0x00000064, "c6");
8947       orc_program_add_constant (p, 4, 0x00000068, "c7");
8948       orc_program_add_temporary (p, 2, "t1");
8949       orc_program_add_temporary (p, 2, "t2");
8950       orc_program_add_temporary (p, 1, "t3");
8951       orc_program_add_temporary (p, 1, "t4");
8952       orc_program_add_temporary (p, 1, "t5");
8953       orc_program_add_temporary (p, 1, "t6");
8954       orc_program_add_temporary (p, 2, "t7");
8955       orc_program_add_temporary (p, 2, "t8");
8956       orc_program_add_temporary (p, 2, "t9");
8957       orc_program_add_temporary (p, 2, "t10");
8958       orc_program_add_temporary (p, 2, "t11");
8959       orc_program_add_temporary (p, 2, "t12");
8960       orc_program_add_temporary (p, 1, "t13");
8961       orc_program_add_temporary (p, 1, "t14");
8962       orc_program_add_temporary (p, 1, "t15");
8963       orc_program_add_temporary (p, 4, "t16");
8964
8965       orc_program_append_2 (p, "subb", 2, 47, ORC_VAR_S1, ORC_VAR_C2,
8966           ORC_VAR_D1);
8967       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T1, ORC_VAR_T2, 47,
8968           ORC_VAR_D1);
8969       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T2,
8970           ORC_VAR_D1);
8971       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_T1,
8972           ORC_VAR_D1);
8973       orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1,
8974           ORC_VAR_D1);
8975       orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_D1,
8976           ORC_VAR_D1);
8977       orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_D1,
8978           ORC_VAR_D1);
8979       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_C3,
8980           ORC_VAR_D1);
8981       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
8982           ORC_VAR_D1);
8983       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T1,
8984           ORC_VAR_D1);
8985       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T7, ORC_VAR_T9,
8986           ORC_VAR_D1);
8987       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_C4,
8988           ORC_VAR_D1);
8989       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
8990           ORC_VAR_D1);
8991       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T10, ORC_VAR_T10,
8992           ORC_VAR_T1, ORC_VAR_D1);
8993       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T10,
8994           ORC_VAR_T9, ORC_VAR_D1);
8995       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T7, ORC_VAR_T8,
8996           ORC_VAR_D1);
8997       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T12,
8998           ORC_VAR_T8, ORC_VAR_D1);
8999       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_C5,
9000           ORC_VAR_D1);
9001       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
9002           ORC_VAR_D1);
9003       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T12,
9004           ORC_VAR_T1, ORC_VAR_D1);
9005       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_C6,
9006           ORC_VAR_D1);
9007       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
9008           ORC_VAR_D1);
9009       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T7, ORC_VAR_T1,
9010           ORC_VAR_D1);
9011       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_C7,
9012           ORC_VAR_D1);
9013       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
9014           ORC_VAR_D1);
9015       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T11,
9016           ORC_VAR_T1, ORC_VAR_D1);
9017       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T11,
9018           ORC_VAR_T1, ORC_VAR_D1);
9019       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T13, ORC_VAR_T10,
9020           ORC_VAR_D1, ORC_VAR_D1);
9021       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T14, ORC_VAR_T11,
9022           ORC_VAR_D1, ORC_VAR_D1);
9023       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T15, ORC_VAR_T12,
9024           ORC_VAR_D1, ORC_VAR_D1);
9025       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T13,
9026           ORC_VAR_T14, ORC_VAR_D1);
9027       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_T15,
9028           ORC_VAR_T3, ORC_VAR_D1);
9029       orc_program_append_2 (p, "mergewl", 0, 47, ORC_VAR_T1, ORC_VAR_T2,
9030           ORC_VAR_D1);
9031       orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, 47, ORC_VAR_C2,
9032           ORC_VAR_D1);
9033 #endif
9034
9035       orc_program_compile (p);
9036       c = orc_program_take_code (p);
9037       orc_program_free (p);
9038     }
9039     p_inited = TRUE;
9040     orc_once_mutex_unlock ();
9041   }
9042   ex->arrays[ORC_VAR_A2] = c;
9043   ex->program = 0;
9044
9045   ex->n = n;
9046   ORC_EXECUTOR_M (ex) = m;
9047   ex->arrays[ORC_VAR_D1] = d1;
9048   ex->params[ORC_VAR_D1] = d1_stride;
9049   ex->arrays[ORC_VAR_S1] = (void *) s1;
9050   ex->params[ORC_VAR_S1] = s1_stride;
9051
9052   func = c->exec;
9053   func (ex);
9054 }
9055 #endif
9056
9057
9058 /* video_convert_orc_convert_I420_BGRA */
9059 #ifdef DISABLE_ORC
9060 void
9061 video_convert_orc_convert_I420_BGRA (guint8 * ORC_RESTRICT d1,
9062     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
9063     const guint8 * ORC_RESTRICT s3, int n)
9064 {
9065   int i;
9066   orc_union32 *ORC_RESTRICT ptr0;
9067   const orc_int8 *ORC_RESTRICT ptr4;
9068   const orc_int8 *ORC_RESTRICT ptr5;
9069   const orc_int8 *ORC_RESTRICT ptr6;
9070   orc_int8 var45;
9071 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9072   volatile orc_int8 var46;
9073 #else
9074   orc_int8 var46;
9075 #endif
9076 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9077   volatile orc_int8 var47;
9078 #else
9079   orc_int8 var47;
9080 #endif
9081 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9082   volatile orc_int8 var48;
9083 #else
9084   orc_int8 var48;
9085 #endif
9086 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9087   volatile orc_union16 var49;
9088 #else
9089   orc_union16 var49;
9090 #endif
9091 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9092   volatile orc_union16 var50;
9093 #else
9094   orc_union16 var50;
9095 #endif
9096 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9097   volatile orc_union16 var51;
9098 #else
9099   orc_union16 var51;
9100 #endif
9101 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9102   volatile orc_union16 var52;
9103 #else
9104   orc_union16 var52;
9105 #endif
9106 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9107   volatile orc_union16 var53;
9108 #else
9109   orc_union16 var53;
9110 #endif
9111 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9112   volatile orc_int8 var54;
9113 #else
9114   orc_int8 var54;
9115 #endif
9116 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9117   volatile orc_union32 var55;
9118 #else
9119   orc_union32 var55;
9120 #endif
9121   orc_union32 var56;
9122   orc_int8 var57;
9123   orc_union16 var58;
9124   orc_int8 var59;
9125   orc_int8 var60;
9126   orc_union16 var61;
9127   orc_int8 var62;
9128   orc_int8 var63;
9129   orc_union16 var64;
9130   orc_union16 var65;
9131   orc_union16 var66;
9132   orc_union16 var67;
9133   orc_union16 var68;
9134   orc_union16 var69;
9135   orc_union16 var70;
9136   orc_union16 var71;
9137   orc_union16 var72;
9138   orc_union16 var73;
9139   orc_union16 var74;
9140   orc_union16 var75;
9141   orc_union16 var76;
9142   orc_union16 var77;
9143   orc_union16 var78;
9144   orc_union16 var79;
9145   orc_union16 var80;
9146   orc_union16 var81;
9147   orc_union16 var82;
9148   orc_union16 var83;
9149   orc_union16 var84;
9150   orc_int8 var85;
9151   orc_int8 var86;
9152   orc_int8 var87;
9153   orc_union16 var88;
9154   orc_union16 var89;
9155   orc_union32 var90;
9156
9157   ptr0 = (orc_union32 *) d1;
9158   ptr4 = (orc_int8 *) s1;
9159   ptr5 = (orc_int8 *) s2;
9160   ptr6 = (orc_int8 *) s3;
9161
9162   /* 1: loadpb */
9163   var46 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
9164   /* 5: loadpb */
9165   var47 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
9166   /* 9: loadpb */
9167   var48 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
9168   /* 12: loadpw */
9169   var49.i = (int) 0x0000002a;   /* 42 or 2.07508e-322f */
9170   /* 17: loadpw */
9171   var50.i = (int) 0x00000067;   /* 103 or 5.08888e-322f */
9172   /* 24: loadpw */
9173   var51.i = (int) 0x00000004;   /* 4 or 1.97626e-323f */
9174   /* 28: loadpw */
9175   var52.i = (int) 0x00000064;   /* 100 or 4.94066e-322f */
9176   /* 32: loadpw */
9177   var53.i = (int) 0x00000068;   /* 104 or 5.13828e-322f */
9178   /* 41: loadpb */
9179   var54 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
9180   /* 44: loadpb */
9181   var55.x4[0] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
9182   var55.x4[1] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
9183   var55.x4[2] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
9184   var55.x4[3] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
9185
9186   for (i = 0; i < n; i++) {
9187     /* 0: loadb */
9188     var45 = ptr4[i];
9189     /* 2: subb */
9190     var57 = var45 - var46;
9191     /* 3: convsbw */
9192     var58.i = var57;
9193     /* 4: loadupib */
9194     var59 =
9195         (i & 1) ? ((orc_uint8) ptr5[i >> 1] + (orc_uint8) ptr5[(i >> 1) + 1] +
9196         1) >> 1 : ptr5[i >> 1];
9197     /* 6: subb */
9198     var60 = var59 - var47;
9199     /* 7: convsbw */
9200     var61.i = var60;
9201     /* 8: loadupib */
9202     var62 =
9203         (i & 1) ? ((orc_uint8) ptr6[i >> 1] + (orc_uint8) ptr6[(i >> 1) + 1] +
9204         1) >> 1 : ptr6[i >> 1];
9205     /* 10: subb */
9206     var63 = var62 - var48;
9207     /* 11: convsbw */
9208     var64.i = var63;
9209     /* 13: mullw */
9210     var65.i = (var58.i * var49.i) & 0xffff;
9211     /* 14: shrsw */
9212     var66.i = var65.i >> 8;
9213     /* 15: addssw */
9214     var67.i = ORC_CLAMP_SW (var58.i + var66.i);
9215     /* 16: addssw */
9216     var68.i = ORC_CLAMP_SW (var67.i + var64.i);
9217     /* 18: mullw */
9218     var69.i = (var64.i * var50.i) & 0xffff;
9219     /* 19: shrsw */
9220     var70.i = var69.i >> 8;
9221     /* 20: subssw */
9222     var71.i = ORC_CLAMP_SW (var68.i - var70.i);
9223     /* 21: addssw */
9224     var72.i = ORC_CLAMP_SW (var71.i + var64.i);
9225     /* 22: addssw */
9226     var73.i = ORC_CLAMP_SW (var67.i + var61.i);
9227     /* 23: addssw */
9228     var74.i = ORC_CLAMP_SW (var73.i + var61.i);
9229     /* 25: mullw */
9230     var75.i = (var61.i * var51.i) & 0xffff;
9231     /* 26: shrsw */
9232     var76.i = var75.i >> 8;
9233     /* 27: addssw */
9234     var77.i = ORC_CLAMP_SW (var74.i + var76.i);
9235     /* 29: mullw */
9236     var78.i = (var61.i * var52.i) & 0xffff;
9237     /* 30: shrsw */
9238     var79.i = var78.i >> 8;
9239     /* 31: subssw */
9240     var80.i = ORC_CLAMP_SW (var67.i - var79.i);
9241     /* 33: mullw */
9242     var81.i = (var64.i * var53.i) & 0xffff;
9243     /* 34: shrsw */
9244     var82.i = var81.i >> 8;
9245     /* 35: subssw */
9246     var83.i = ORC_CLAMP_SW (var80.i - var82.i);
9247     /* 36: subssw */
9248     var84.i = ORC_CLAMP_SW (var83.i - var82.i);
9249     /* 37: convssswb */
9250     var85 = ORC_CLAMP_SB (var72.i);
9251     /* 38: convssswb */
9252     var86 = ORC_CLAMP_SB (var84.i);
9253     /* 39: convssswb */
9254     var87 = ORC_CLAMP_SB (var77.i);
9255     /* 40: mergebw */
9256     {
9257       orc_union16 _dest;
9258       _dest.x2[0] = var87;
9259       _dest.x2[1] = var86;
9260       var88.i = _dest.i;
9261     }
9262     /* 42: mergebw */
9263     {
9264       orc_union16 _dest;
9265       _dest.x2[0] = var85;
9266       _dest.x2[1] = var54;
9267       var89.i = _dest.i;
9268     }
9269     /* 43: mergewl */
9270     {
9271       orc_union32 _dest;
9272       _dest.x2[0] = var88.i;
9273       _dest.x2[1] = var89.i;
9274       var90.i = _dest.i;
9275     }
9276     /* 45: addb */
9277     var56.x4[0] = var90.x4[0] + var55.x4[0];
9278     var56.x4[1] = var90.x4[1] + var55.x4[1];
9279     var56.x4[2] = var90.x4[2] + var55.x4[2];
9280     var56.x4[3] = var90.x4[3] + var55.x4[3];
9281     /* 46: storel */
9282     ptr0[i] = var56;
9283   }
9284
9285 }
9286
9287 #else
9288 static void
9289 _backup_video_convert_orc_convert_I420_BGRA (OrcExecutor * ORC_RESTRICT ex)
9290 {
9291   int i;
9292   int n = ex->n;
9293   orc_union32 *ORC_RESTRICT ptr0;
9294   const orc_int8 *ORC_RESTRICT ptr4;
9295   const orc_int8 *ORC_RESTRICT ptr5;
9296   const orc_int8 *ORC_RESTRICT ptr6;
9297   orc_int8 var45;
9298 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9299   volatile orc_int8 var46;
9300 #else
9301   orc_int8 var46;
9302 #endif
9303 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9304   volatile orc_int8 var47;
9305 #else
9306   orc_int8 var47;
9307 #endif
9308 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9309   volatile orc_int8 var48;
9310 #else
9311   orc_int8 var48;
9312 #endif
9313 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9314   volatile orc_union16 var49;
9315 #else
9316   orc_union16 var49;
9317 #endif
9318 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9319   volatile orc_union16 var50;
9320 #else
9321   orc_union16 var50;
9322 #endif
9323 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9324   volatile orc_union16 var51;
9325 #else
9326   orc_union16 var51;
9327 #endif
9328 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9329   volatile orc_union16 var52;
9330 #else
9331   orc_union16 var52;
9332 #endif
9333 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9334   volatile orc_union16 var53;
9335 #else
9336   orc_union16 var53;
9337 #endif
9338 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9339   volatile orc_int8 var54;
9340 #else
9341   orc_int8 var54;
9342 #endif
9343 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9344   volatile orc_union32 var55;
9345 #else
9346   orc_union32 var55;
9347 #endif
9348   orc_union32 var56;
9349   orc_int8 var57;
9350   orc_union16 var58;
9351   orc_int8 var59;
9352   orc_int8 var60;
9353   orc_union16 var61;
9354   orc_int8 var62;
9355   orc_int8 var63;
9356   orc_union16 var64;
9357   orc_union16 var65;
9358   orc_union16 var66;
9359   orc_union16 var67;
9360   orc_union16 var68;
9361   orc_union16 var69;
9362   orc_union16 var70;
9363   orc_union16 var71;
9364   orc_union16 var72;
9365   orc_union16 var73;
9366   orc_union16 var74;
9367   orc_union16 var75;
9368   orc_union16 var76;
9369   orc_union16 var77;
9370   orc_union16 var78;
9371   orc_union16 var79;
9372   orc_union16 var80;
9373   orc_union16 var81;
9374   orc_union16 var82;
9375   orc_union16 var83;
9376   orc_union16 var84;
9377   orc_int8 var85;
9378   orc_int8 var86;
9379   orc_int8 var87;
9380   orc_union16 var88;
9381   orc_union16 var89;
9382   orc_union32 var90;
9383
9384   ptr0 = (orc_union32 *) ex->arrays[0];
9385   ptr4 = (orc_int8 *) ex->arrays[4];
9386   ptr5 = (orc_int8 *) ex->arrays[5];
9387   ptr6 = (orc_int8 *) ex->arrays[6];
9388
9389   /* 1: loadpb */
9390   var46 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
9391   /* 5: loadpb */
9392   var47 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
9393   /* 9: loadpb */
9394   var48 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
9395   /* 12: loadpw */
9396   var49.i = (int) 0x0000002a;   /* 42 or 2.07508e-322f */
9397   /* 17: loadpw */
9398   var50.i = (int) 0x00000067;   /* 103 or 5.08888e-322f */
9399   /* 24: loadpw */
9400   var51.i = (int) 0x00000004;   /* 4 or 1.97626e-323f */
9401   /* 28: loadpw */
9402   var52.i = (int) 0x00000064;   /* 100 or 4.94066e-322f */
9403   /* 32: loadpw */
9404   var53.i = (int) 0x00000068;   /* 104 or 5.13828e-322f */
9405   /* 41: loadpb */
9406   var54 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
9407   /* 44: loadpb */
9408   var55.x4[0] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
9409   var55.x4[1] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
9410   var55.x4[2] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
9411   var55.x4[3] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
9412
9413   for (i = 0; i < n; i++) {
9414     /* 0: loadb */
9415     var45 = ptr4[i];
9416     /* 2: subb */
9417     var57 = var45 - var46;
9418     /* 3: convsbw */
9419     var58.i = var57;
9420     /* 4: loadupib */
9421     var59 =
9422         (i & 1) ? ((orc_uint8) ptr5[i >> 1] + (orc_uint8) ptr5[(i >> 1) + 1] +
9423         1) >> 1 : ptr5[i >> 1];
9424     /* 6: subb */
9425     var60 = var59 - var47;
9426     /* 7: convsbw */
9427     var61.i = var60;
9428     /* 8: loadupib */
9429     var62 =
9430         (i & 1) ? ((orc_uint8) ptr6[i >> 1] + (orc_uint8) ptr6[(i >> 1) + 1] +
9431         1) >> 1 : ptr6[i >> 1];
9432     /* 10: subb */
9433     var63 = var62 - var48;
9434     /* 11: convsbw */
9435     var64.i = var63;
9436     /* 13: mullw */
9437     var65.i = (var58.i * var49.i) & 0xffff;
9438     /* 14: shrsw */
9439     var66.i = var65.i >> 8;
9440     /* 15: addssw */
9441     var67.i = ORC_CLAMP_SW (var58.i + var66.i);
9442     /* 16: addssw */
9443     var68.i = ORC_CLAMP_SW (var67.i + var64.i);
9444     /* 18: mullw */
9445     var69.i = (var64.i * var50.i) & 0xffff;
9446     /* 19: shrsw */
9447     var70.i = var69.i >> 8;
9448     /* 20: subssw */
9449     var71.i = ORC_CLAMP_SW (var68.i - var70.i);
9450     /* 21: addssw */
9451     var72.i = ORC_CLAMP_SW (var71.i + var64.i);
9452     /* 22: addssw */
9453     var73.i = ORC_CLAMP_SW (var67.i + var61.i);
9454     /* 23: addssw */
9455     var74.i = ORC_CLAMP_SW (var73.i + var61.i);
9456     /* 25: mullw */
9457     var75.i = (var61.i * var51.i) & 0xffff;
9458     /* 26: shrsw */
9459     var76.i = var75.i >> 8;
9460     /* 27: addssw */
9461     var77.i = ORC_CLAMP_SW (var74.i + var76.i);
9462     /* 29: mullw */
9463     var78.i = (var61.i * var52.i) & 0xffff;
9464     /* 30: shrsw */
9465     var79.i = var78.i >> 8;
9466     /* 31: subssw */
9467     var80.i = ORC_CLAMP_SW (var67.i - var79.i);
9468     /* 33: mullw */
9469     var81.i = (var64.i * var53.i) & 0xffff;
9470     /* 34: shrsw */
9471     var82.i = var81.i >> 8;
9472     /* 35: subssw */
9473     var83.i = ORC_CLAMP_SW (var80.i - var82.i);
9474     /* 36: subssw */
9475     var84.i = ORC_CLAMP_SW (var83.i - var82.i);
9476     /* 37: convssswb */
9477     var85 = ORC_CLAMP_SB (var72.i);
9478     /* 38: convssswb */
9479     var86 = ORC_CLAMP_SB (var84.i);
9480     /* 39: convssswb */
9481     var87 = ORC_CLAMP_SB (var77.i);
9482     /* 40: mergebw */
9483     {
9484       orc_union16 _dest;
9485       _dest.x2[0] = var87;
9486       _dest.x2[1] = var86;
9487       var88.i = _dest.i;
9488     }
9489     /* 42: mergebw */
9490     {
9491       orc_union16 _dest;
9492       _dest.x2[0] = var85;
9493       _dest.x2[1] = var54;
9494       var89.i = _dest.i;
9495     }
9496     /* 43: mergewl */
9497     {
9498       orc_union32 _dest;
9499       _dest.x2[0] = var88.i;
9500       _dest.x2[1] = var89.i;
9501       var90.i = _dest.i;
9502     }
9503     /* 45: addb */
9504     var56.x4[0] = var90.x4[0] + var55.x4[0];
9505     var56.x4[1] = var90.x4[1] + var55.x4[1];
9506     var56.x4[2] = var90.x4[2] + var55.x4[2];
9507     var56.x4[3] = var90.x4[3] + var55.x4[3];
9508     /* 46: storel */
9509     ptr0[i] = var56;
9510   }
9511
9512 }
9513
9514 void
9515 video_convert_orc_convert_I420_BGRA (guint8 * ORC_RESTRICT d1,
9516     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
9517     const guint8 * ORC_RESTRICT s3, int n)
9518 {
9519   OrcExecutor _ex, *ex = &_ex;
9520   static volatile int p_inited = 0;
9521   static OrcCode *c = 0;
9522   void (*func) (OrcExecutor *);
9523
9524   if (!p_inited) {
9525     orc_once_mutex_lock ();
9526     if (!p_inited) {
9527       OrcProgram *p;
9528
9529 #if 1
9530       static const orc_uint8 bc[] = {
9531         1, 9, 35, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
9532         95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 73, 52, 50,
9533         48, 95, 66, 71, 82, 65, 11, 4, 4, 12, 1, 1, 12, 1, 1, 12,
9534         1, 1, 14, 1, 8, 0, 0, 0, 14, 1, 128, 0, 0, 0, 14, 4,
9535         42, 0, 0, 0, 14, 4, 103, 0, 0, 0, 14, 4, 4, 0, 0, 0,
9536         14, 4, 100, 0, 0, 0, 14, 4, 104, 0, 0, 0, 14, 4, 255, 0,
9537         0, 0, 20, 2, 20, 2, 20, 1, 20, 2, 20, 2, 20, 2, 20, 2,
9538         20, 2, 20, 2, 20, 1, 20, 1, 20, 1, 20, 4, 65, 34, 4, 17,
9539         149, 35, 34, 46, 34, 5, 65, 34, 34, 17, 149, 36, 34, 46, 34, 6,
9540         65, 34, 34, 17, 149, 37, 34, 89, 32, 35, 18, 94, 32, 32, 16, 71,
9541         35, 35, 32, 71, 38, 35, 37, 89, 32, 37, 19, 94, 32, 32, 16, 99,
9542         38, 38, 32, 71, 38, 38, 37, 71, 40, 35, 36, 71, 40, 40, 36, 89,
9543         32, 36, 20, 94, 32, 32, 16, 71, 40, 40, 32, 89, 32, 36, 21, 94,
9544         32, 32, 16, 99, 39, 35, 32, 89, 32, 37, 22, 94, 32, 32, 16, 99,
9545         39, 39, 32, 99, 39, 39, 32, 159, 41, 38, 159, 42, 39, 159, 43, 40,
9546         196, 32, 43, 42, 196, 33, 41, 23, 195, 44, 32, 33, 21, 2, 33, 0,
9547         44, 17, 2, 0,
9548       };
9549       p = orc_program_new_from_static_bytecode (bc);
9550       orc_program_set_backup_function (p,
9551           _backup_video_convert_orc_convert_I420_BGRA);
9552 #else
9553       p = orc_program_new ();
9554       orc_program_set_name (p, "video_convert_orc_convert_I420_BGRA");
9555       orc_program_set_backup_function (p,
9556           _backup_video_convert_orc_convert_I420_BGRA);
9557       orc_program_add_destination (p, 4, "d1");
9558       orc_program_add_source (p, 1, "s1");
9559       orc_program_add_source (p, 1, "s2");
9560       orc_program_add_source (p, 1, "s3");
9561       orc_program_add_constant (p, 1, 0x00000008, "c1");
9562       orc_program_add_constant (p, 1, 0x00000080, "c2");
9563       orc_program_add_constant (p, 4, 0x0000002a, "c3");
9564       orc_program_add_constant (p, 4, 0x00000067, "c4");
9565       orc_program_add_constant (p, 4, 0x00000004, "c5");
9566       orc_program_add_constant (p, 4, 0x00000064, "c6");
9567       orc_program_add_constant (p, 4, 0x00000068, "c7");
9568       orc_program_add_constant (p, 4, 0x000000ff, "c8");
9569       orc_program_add_temporary (p, 2, "t1");
9570       orc_program_add_temporary (p, 2, "t2");
9571       orc_program_add_temporary (p, 1, "t3");
9572       orc_program_add_temporary (p, 2, "t4");
9573       orc_program_add_temporary (p, 2, "t5");
9574       orc_program_add_temporary (p, 2, "t6");
9575       orc_program_add_temporary (p, 2, "t7");
9576       orc_program_add_temporary (p, 2, "t8");
9577       orc_program_add_temporary (p, 2, "t9");
9578       orc_program_add_temporary (p, 1, "t10");
9579       orc_program_add_temporary (p, 1, "t11");
9580       orc_program_add_temporary (p, 1, "t12");
9581       orc_program_add_temporary (p, 4, "t13");
9582
9583       orc_program_append_2 (p, "subb", 0, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_C2,
9584           ORC_VAR_D1);
9585       orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1,
9586           ORC_VAR_D1);
9587       orc_program_append_2 (p, "loadupib", 0, ORC_VAR_T3, ORC_VAR_S2,
9588           ORC_VAR_D1, ORC_VAR_D1);
9589       orc_program_append_2 (p, "subb", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2,
9590           ORC_VAR_D1);
9591       orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_D1,
9592           ORC_VAR_D1);
9593       orc_program_append_2 (p, "loadupib", 0, ORC_VAR_T3, ORC_VAR_S3,
9594           ORC_VAR_D1, ORC_VAR_D1);
9595       orc_program_append_2 (p, "subb", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2,
9596           ORC_VAR_D1);
9597       orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_D1,
9598           ORC_VAR_D1);
9599       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T4, ORC_VAR_C3,
9600           ORC_VAR_D1);
9601       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
9602           ORC_VAR_D1);
9603       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T1,
9604           ORC_VAR_D1);
9605       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_T6,
9606           ORC_VAR_D1);
9607       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T6, ORC_VAR_C4,
9608           ORC_VAR_D1);
9609       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
9610           ORC_VAR_D1);
9611       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T1,
9612           ORC_VAR_D1);
9613       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T6,
9614           ORC_VAR_D1);
9615       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T9, ORC_VAR_T4, ORC_VAR_T5,
9616           ORC_VAR_D1);
9617       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T5,
9618           ORC_VAR_D1);
9619       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_C5,
9620           ORC_VAR_D1);
9621       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
9622           ORC_VAR_D1);
9623       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T1,
9624           ORC_VAR_D1);
9625       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_C6,
9626           ORC_VAR_D1);
9627       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
9628           ORC_VAR_D1);
9629       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T8, ORC_VAR_T4, ORC_VAR_T1,
9630           ORC_VAR_D1);
9631       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T6, ORC_VAR_C7,
9632           ORC_VAR_D1);
9633       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
9634           ORC_VAR_D1);
9635       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T1,
9636           ORC_VAR_D1);
9637       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T1,
9638           ORC_VAR_D1);
9639       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T10, ORC_VAR_T7,
9640           ORC_VAR_D1, ORC_VAR_D1);
9641       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T11, ORC_VAR_T8,
9642           ORC_VAR_D1, ORC_VAR_D1);
9643       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T12, ORC_VAR_T9,
9644           ORC_VAR_D1, ORC_VAR_D1);
9645       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T12,
9646           ORC_VAR_T11, ORC_VAR_D1);
9647       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_T10,
9648           ORC_VAR_C8, ORC_VAR_D1);
9649       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T13, ORC_VAR_T1,
9650           ORC_VAR_T2, ORC_VAR_D1);
9651       orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T13, ORC_VAR_C2,
9652           ORC_VAR_D1);
9653 #endif
9654
9655       orc_program_compile (p);
9656       c = orc_program_take_code (p);
9657       orc_program_free (p);
9658     }
9659     p_inited = TRUE;
9660     orc_once_mutex_unlock ();
9661   }
9662   ex->arrays[ORC_VAR_A2] = c;
9663   ex->program = 0;
9664
9665   ex->n = n;
9666   ex->arrays[ORC_VAR_D1] = d1;
9667   ex->arrays[ORC_VAR_S1] = (void *) s1;
9668   ex->arrays[ORC_VAR_S2] = (void *) s2;
9669   ex->arrays[ORC_VAR_S3] = (void *) s3;
9670
9671   func = c->exec;
9672   func (ex);
9673 }
9674 #endif
9675
9676
9677 /* video_convert_orc_convert_I420_BGRA_avg */
9678 #ifdef DISABLE_ORC
9679 void
9680 video_convert_orc_convert_I420_BGRA_avg (guint8 * ORC_RESTRICT d1,
9681     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
9682     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4,
9683     const guint8 * ORC_RESTRICT s5, int n)
9684 {
9685   int i;
9686   orc_union32 *ORC_RESTRICT ptr0;
9687   const orc_int8 *ORC_RESTRICT ptr4;
9688   const orc_int8 *ORC_RESTRICT ptr5;
9689   const orc_int8 *ORC_RESTRICT ptr6;
9690   const orc_int8 *ORC_RESTRICT ptr7;
9691   const orc_int8 *ORC_RESTRICT ptr8;
9692   orc_int8 var46;
9693 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9694   volatile orc_int8 var47;
9695 #else
9696   orc_int8 var47;
9697 #endif
9698 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9699   volatile orc_int8 var48;
9700 #else
9701   orc_int8 var48;
9702 #endif
9703 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9704   volatile orc_int8 var49;
9705 #else
9706   orc_int8 var49;
9707 #endif
9708 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9709   volatile orc_union16 var50;
9710 #else
9711   orc_union16 var50;
9712 #endif
9713 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9714   volatile orc_union16 var51;
9715 #else
9716   orc_union16 var51;
9717 #endif
9718 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9719   volatile orc_union16 var52;
9720 #else
9721   orc_union16 var52;
9722 #endif
9723 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9724   volatile orc_union16 var53;
9725 #else
9726   orc_union16 var53;
9727 #endif
9728 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9729   volatile orc_union16 var54;
9730 #else
9731   orc_union16 var54;
9732 #endif
9733 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9734   volatile orc_int8 var55;
9735 #else
9736   orc_int8 var55;
9737 #endif
9738 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9739   volatile orc_union32 var56;
9740 #else
9741   orc_union32 var56;
9742 #endif
9743   orc_union32 var57;
9744   orc_int8 var58;
9745   orc_union16 var59;
9746   orc_int8 var60;
9747   orc_int8 var61;
9748   orc_int8 var62;
9749   orc_int8 var63;
9750   orc_union16 var64;
9751   orc_int8 var65;
9752   orc_int8 var66;
9753   orc_int8 var67;
9754   orc_int8 var68;
9755   orc_union16 var69;
9756   orc_union16 var70;
9757   orc_union16 var71;
9758   orc_union16 var72;
9759   orc_union16 var73;
9760   orc_union16 var74;
9761   orc_union16 var75;
9762   orc_union16 var76;
9763   orc_union16 var77;
9764   orc_union16 var78;
9765   orc_union16 var79;
9766   orc_union16 var80;
9767   orc_union16 var81;
9768   orc_union16 var82;
9769   orc_union16 var83;
9770   orc_union16 var84;
9771   orc_union16 var85;
9772   orc_union16 var86;
9773   orc_union16 var87;
9774   orc_union16 var88;
9775   orc_union16 var89;
9776   orc_int8 var90;
9777   orc_int8 var91;
9778   orc_int8 var92;
9779   orc_union16 var93;
9780   orc_union16 var94;
9781   orc_union32 var95;
9782
9783   ptr0 = (orc_union32 *) d1;
9784   ptr4 = (orc_int8 *) s1;
9785   ptr5 = (orc_int8 *) s2;
9786   ptr6 = (orc_int8 *) s3;
9787   ptr7 = (orc_int8 *) s4;
9788   ptr8 = (orc_int8 *) s5;
9789
9790   /* 1: loadpb */
9791   var47 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
9792   /* 7: loadpb */
9793   var48 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
9794   /* 13: loadpb */
9795   var49 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
9796   /* 16: loadpw */
9797   var50.i = (int) 0x0000002a;   /* 42 or 2.07508e-322f */
9798   /* 21: loadpw */
9799   var51.i = (int) 0x00000067;   /* 103 or 5.08888e-322f */
9800   /* 28: loadpw */
9801   var52.i = (int) 0x00000004;   /* 4 or 1.97626e-323f */
9802   /* 32: loadpw */
9803   var53.i = (int) 0x00000064;   /* 100 or 4.94066e-322f */
9804   /* 36: loadpw */
9805   var54.i = (int) 0x00000068;   /* 104 or 5.13828e-322f */
9806   /* 45: loadpb */
9807   var55 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
9808   /* 48: loadpb */
9809   var56.x4[0] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
9810   var56.x4[1] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
9811   var56.x4[2] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
9812   var56.x4[3] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
9813
9814   for (i = 0; i < n; i++) {
9815     /* 0: loadb */
9816     var46 = ptr4[i];
9817     /* 2: subb */
9818     var58 = var46 - var47;
9819     /* 3: convsbw */
9820     var59.i = var58;
9821     /* 4: loadupib */
9822     var60 =
9823         (i & 1) ? ((orc_uint8) ptr5[i >> 1] + (orc_uint8) ptr5[(i >> 1) + 1] +
9824         1) >> 1 : ptr5[i >> 1];
9825     /* 5: loadupib */
9826     var61 =
9827         (i & 1) ? ((orc_uint8) ptr6[i >> 1] + (orc_uint8) ptr6[(i >> 1) + 1] +
9828         1) >> 1 : ptr6[i >> 1];
9829     /* 6: avgub */
9830     var62 = ((orc_uint8) var60 + (orc_uint8) var61 + 1) >> 1;
9831     /* 8: subb */
9832     var63 = var62 - var48;
9833     /* 9: convsbw */
9834     var64.i = var63;
9835     /* 10: loadupib */
9836     var65 =
9837         (i & 1) ? ((orc_uint8) ptr7[i >> 1] + (orc_uint8) ptr7[(i >> 1) + 1] +
9838         1) >> 1 : ptr7[i >> 1];
9839     /* 11: loadupib */
9840     var66 =
9841         (i & 1) ? ((orc_uint8) ptr8[i >> 1] + (orc_uint8) ptr8[(i >> 1) + 1] +
9842         1) >> 1 : ptr8[i >> 1];
9843     /* 12: avgub */
9844     var67 = ((orc_uint8) var65 + (orc_uint8) var66 + 1) >> 1;
9845     /* 14: subb */
9846     var68 = var67 - var49;
9847     /* 15: convsbw */
9848     var69.i = var68;
9849     /* 17: mullw */
9850     var70.i = (var59.i * var50.i) & 0xffff;
9851     /* 18: shrsw */
9852     var71.i = var70.i >> 8;
9853     /* 19: addssw */
9854     var72.i = ORC_CLAMP_SW (var59.i + var71.i);
9855     /* 20: addssw */
9856     var73.i = ORC_CLAMP_SW (var72.i + var69.i);
9857     /* 22: mullw */
9858     var74.i = (var69.i * var51.i) & 0xffff;
9859     /* 23: shrsw */
9860     var75.i = var74.i >> 8;
9861     /* 24: subssw */
9862     var76.i = ORC_CLAMP_SW (var73.i - var75.i);
9863     /* 25: addssw */
9864     var77.i = ORC_CLAMP_SW (var76.i + var69.i);
9865     /* 26: addssw */
9866     var78.i = ORC_CLAMP_SW (var72.i + var64.i);
9867     /* 27: addssw */
9868     var79.i = ORC_CLAMP_SW (var78.i + var64.i);
9869     /* 29: mullw */
9870     var80.i = (var64.i * var52.i) & 0xffff;
9871     /* 30: shrsw */
9872     var81.i = var80.i >> 8;
9873     /* 31: addssw */
9874     var82.i = ORC_CLAMP_SW (var79.i + var81.i);
9875     /* 33: mullw */
9876     var83.i = (var64.i * var53.i) & 0xffff;
9877     /* 34: shrsw */
9878     var84.i = var83.i >> 8;
9879     /* 35: subssw */
9880     var85.i = ORC_CLAMP_SW (var72.i - var84.i);
9881     /* 37: mullw */
9882     var86.i = (var69.i * var54.i) & 0xffff;
9883     /* 38: shrsw */
9884     var87.i = var86.i >> 8;
9885     /* 39: subssw */
9886     var88.i = ORC_CLAMP_SW (var85.i - var87.i);
9887     /* 40: subssw */
9888     var89.i = ORC_CLAMP_SW (var88.i - var87.i);
9889     /* 41: convssswb */
9890     var90 = ORC_CLAMP_SB (var77.i);
9891     /* 42: convssswb */
9892     var91 = ORC_CLAMP_SB (var89.i);
9893     /* 43: convssswb */
9894     var92 = ORC_CLAMP_SB (var82.i);
9895     /* 44: mergebw */
9896     {
9897       orc_union16 _dest;
9898       _dest.x2[0] = var92;
9899       _dest.x2[1] = var91;
9900       var93.i = _dest.i;
9901     }
9902     /* 46: mergebw */
9903     {
9904       orc_union16 _dest;
9905       _dest.x2[0] = var90;
9906       _dest.x2[1] = var55;
9907       var94.i = _dest.i;
9908     }
9909     /* 47: mergewl */
9910     {
9911       orc_union32 _dest;
9912       _dest.x2[0] = var93.i;
9913       _dest.x2[1] = var94.i;
9914       var95.i = _dest.i;
9915     }
9916     /* 49: addb */
9917     var57.x4[0] = var95.x4[0] + var56.x4[0];
9918     var57.x4[1] = var95.x4[1] + var56.x4[1];
9919     var57.x4[2] = var95.x4[2] + var56.x4[2];
9920     var57.x4[3] = var95.x4[3] + var56.x4[3];
9921     /* 50: storel */
9922     ptr0[i] = var57;
9923   }
9924
9925 }
9926
9927 #else
9928 static void
9929 _backup_video_convert_orc_convert_I420_BGRA_avg (OrcExecutor * ORC_RESTRICT ex)
9930 {
9931   int i;
9932   int n = ex->n;
9933   orc_union32 *ORC_RESTRICT ptr0;
9934   const orc_int8 *ORC_RESTRICT ptr4;
9935   const orc_int8 *ORC_RESTRICT ptr5;
9936   const orc_int8 *ORC_RESTRICT ptr6;
9937   const orc_int8 *ORC_RESTRICT ptr7;
9938   const orc_int8 *ORC_RESTRICT ptr8;
9939   orc_int8 var46;
9940 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9941   volatile orc_int8 var47;
9942 #else
9943   orc_int8 var47;
9944 #endif
9945 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9946   volatile orc_int8 var48;
9947 #else
9948   orc_int8 var48;
9949 #endif
9950 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9951   volatile orc_int8 var49;
9952 #else
9953   orc_int8 var49;
9954 #endif
9955 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9956   volatile orc_union16 var50;
9957 #else
9958   orc_union16 var50;
9959 #endif
9960 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9961   volatile orc_union16 var51;
9962 #else
9963   orc_union16 var51;
9964 #endif
9965 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9966   volatile orc_union16 var52;
9967 #else
9968   orc_union16 var52;
9969 #endif
9970 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9971   volatile orc_union16 var53;
9972 #else
9973   orc_union16 var53;
9974 #endif
9975 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9976   volatile orc_union16 var54;
9977 #else
9978   orc_union16 var54;
9979 #endif
9980 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9981   volatile orc_int8 var55;
9982 #else
9983   orc_int8 var55;
9984 #endif
9985 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9986   volatile orc_union32 var56;
9987 #else
9988   orc_union32 var56;
9989 #endif
9990   orc_union32 var57;
9991   orc_int8 var58;
9992   orc_union16 var59;
9993   orc_int8 var60;
9994   orc_int8 var61;
9995   orc_int8 var62;
9996   orc_int8 var63;
9997   orc_union16 var64;
9998   orc_int8 var65;
9999   orc_int8 var66;
10000   orc_int8 var67;
10001   orc_int8 var68;
10002   orc_union16 var69;
10003   orc_union16 var70;
10004   orc_union16 var71;
10005   orc_union16 var72;
10006   orc_union16 var73;
10007   orc_union16 var74;
10008   orc_union16 var75;
10009   orc_union16 var76;
10010   orc_union16 var77;
10011   orc_union16 var78;
10012   orc_union16 var79;
10013   orc_union16 var80;
10014   orc_union16 var81;
10015   orc_union16 var82;
10016   orc_union16 var83;
10017   orc_union16 var84;
10018   orc_union16 var85;
10019   orc_union16 var86;
10020   orc_union16 var87;
10021   orc_union16 var88;
10022   orc_union16 var89;
10023   orc_int8 var90;
10024   orc_int8 var91;
10025   orc_int8 var92;
10026   orc_union16 var93;
10027   orc_union16 var94;
10028   orc_union32 var95;
10029
10030   ptr0 = (orc_union32 *) ex->arrays[0];
10031   ptr4 = (orc_int8 *) ex->arrays[4];
10032   ptr5 = (orc_int8 *) ex->arrays[5];
10033   ptr6 = (orc_int8 *) ex->arrays[6];
10034   ptr7 = (orc_int8 *) ex->arrays[7];
10035   ptr8 = (orc_int8 *) ex->arrays[8];
10036
10037   /* 1: loadpb */
10038   var47 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
10039   /* 7: loadpb */
10040   var48 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
10041   /* 13: loadpb */
10042   var49 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
10043   /* 16: loadpw */
10044   var50.i = (int) 0x0000002a;   /* 42 or 2.07508e-322f */
10045   /* 21: loadpw */
10046   var51.i = (int) 0x00000067;   /* 103 or 5.08888e-322f */
10047   /* 28: loadpw */
10048   var52.i = (int) 0x00000004;   /* 4 or 1.97626e-323f */
10049   /* 32: loadpw */
10050   var53.i = (int) 0x00000064;   /* 100 or 4.94066e-322f */
10051   /* 36: loadpw */
10052   var54.i = (int) 0x00000068;   /* 104 or 5.13828e-322f */
10053   /* 45: loadpb */
10054   var55 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
10055   /* 48: loadpb */
10056   var56.x4[0] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
10057   var56.x4[1] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
10058   var56.x4[2] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
10059   var56.x4[3] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
10060
10061   for (i = 0; i < n; i++) {
10062     /* 0: loadb */
10063     var46 = ptr4[i];
10064     /* 2: subb */
10065     var58 = var46 - var47;
10066     /* 3: convsbw */
10067     var59.i = var58;
10068     /* 4: loadupib */
10069     var60 =
10070         (i & 1) ? ((orc_uint8) ptr5[i >> 1] + (orc_uint8) ptr5[(i >> 1) + 1] +
10071         1) >> 1 : ptr5[i >> 1];
10072     /* 5: loadupib */
10073     var61 =
10074         (i & 1) ? ((orc_uint8) ptr6[i >> 1] + (orc_uint8) ptr6[(i >> 1) + 1] +
10075         1) >> 1 : ptr6[i >> 1];
10076     /* 6: avgub */
10077     var62 = ((orc_uint8) var60 + (orc_uint8) var61 + 1) >> 1;
10078     /* 8: subb */
10079     var63 = var62 - var48;
10080     /* 9: convsbw */
10081     var64.i = var63;
10082     /* 10: loadupib */
10083     var65 =
10084         (i & 1) ? ((orc_uint8) ptr7[i >> 1] + (orc_uint8) ptr7[(i >> 1) + 1] +
10085         1) >> 1 : ptr7[i >> 1];
10086     /* 11: loadupib */
10087     var66 =
10088         (i & 1) ? ((orc_uint8) ptr8[i >> 1] + (orc_uint8) ptr8[(i >> 1) + 1] +
10089         1) >> 1 : ptr8[i >> 1];
10090     /* 12: avgub */
10091     var67 = ((orc_uint8) var65 + (orc_uint8) var66 + 1) >> 1;
10092     /* 14: subb */
10093     var68 = var67 - var49;
10094     /* 15: convsbw */
10095     var69.i = var68;
10096     /* 17: mullw */
10097     var70.i = (var59.i * var50.i) & 0xffff;
10098     /* 18: shrsw */
10099     var71.i = var70.i >> 8;
10100     /* 19: addssw */
10101     var72.i = ORC_CLAMP_SW (var59.i + var71.i);
10102     /* 20: addssw */
10103     var73.i = ORC_CLAMP_SW (var72.i + var69.i);
10104     /* 22: mullw */
10105     var74.i = (var69.i * var51.i) & 0xffff;
10106     /* 23: shrsw */
10107     var75.i = var74.i >> 8;
10108     /* 24: subssw */
10109     var76.i = ORC_CLAMP_SW (var73.i - var75.i);
10110     /* 25: addssw */
10111     var77.i = ORC_CLAMP_SW (var76.i + var69.i);
10112     /* 26: addssw */
10113     var78.i = ORC_CLAMP_SW (var72.i + var64.i);
10114     /* 27: addssw */
10115     var79.i = ORC_CLAMP_SW (var78.i + var64.i);
10116     /* 29: mullw */
10117     var80.i = (var64.i * var52.i) & 0xffff;
10118     /* 30: shrsw */
10119     var81.i = var80.i >> 8;
10120     /* 31: addssw */
10121     var82.i = ORC_CLAMP_SW (var79.i + var81.i);
10122     /* 33: mullw */
10123     var83.i = (var64.i * var53.i) & 0xffff;
10124     /* 34: shrsw */
10125     var84.i = var83.i >> 8;
10126     /* 35: subssw */
10127     var85.i = ORC_CLAMP_SW (var72.i - var84.i);
10128     /* 37: mullw */
10129     var86.i = (var69.i * var54.i) & 0xffff;
10130     /* 38: shrsw */
10131     var87.i = var86.i >> 8;
10132     /* 39: subssw */
10133     var88.i = ORC_CLAMP_SW (var85.i - var87.i);
10134     /* 40: subssw */
10135     var89.i = ORC_CLAMP_SW (var88.i - var87.i);
10136     /* 41: convssswb */
10137     var90 = ORC_CLAMP_SB (var77.i);
10138     /* 42: convssswb */
10139     var91 = ORC_CLAMP_SB (var89.i);
10140     /* 43: convssswb */
10141     var92 = ORC_CLAMP_SB (var82.i);
10142     /* 44: mergebw */
10143     {
10144       orc_union16 _dest;
10145       _dest.x2[0] = var92;
10146       _dest.x2[1] = var91;
10147       var93.i = _dest.i;
10148     }
10149     /* 46: mergebw */
10150     {
10151       orc_union16 _dest;
10152       _dest.x2[0] = var90;
10153       _dest.x2[1] = var55;
10154       var94.i = _dest.i;
10155     }
10156     /* 47: mergewl */
10157     {
10158       orc_union32 _dest;
10159       _dest.x2[0] = var93.i;
10160       _dest.x2[1] = var94.i;
10161       var95.i = _dest.i;
10162     }
10163     /* 49: addb */
10164     var57.x4[0] = var95.x4[0] + var56.x4[0];
10165     var57.x4[1] = var95.x4[1] + var56.x4[1];
10166     var57.x4[2] = var95.x4[2] + var56.x4[2];
10167     var57.x4[3] = var95.x4[3] + var56.x4[3];
10168     /* 50: storel */
10169     ptr0[i] = var57;
10170   }
10171
10172 }
10173
10174 void
10175 video_convert_orc_convert_I420_BGRA_avg (guint8 * ORC_RESTRICT d1,
10176     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
10177     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4,
10178     const guint8 * ORC_RESTRICT s5, int n)
10179 {
10180   OrcExecutor _ex, *ex = &_ex;
10181   static volatile int p_inited = 0;
10182   static OrcCode *c = 0;
10183   void (*func) (OrcExecutor *);
10184
10185   if (!p_inited) {
10186     orc_once_mutex_lock ();
10187     if (!p_inited) {
10188       OrcProgram *p;
10189
10190 #if 1
10191       static const orc_uint8 bc[] = {
10192         1, 9, 39, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
10193         95, 111, 114, 99, 95, 99, 111, 110, 118, 101, 114, 116, 95, 73, 52, 50,
10194         48, 95, 66, 71, 82, 65, 95, 97, 118, 103, 11, 4, 4, 12, 1, 1,
10195         12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 14, 1, 8, 0,
10196         0, 0, 14, 1, 128, 0, 0, 0, 14, 4, 42, 0, 0, 0, 14, 4,
10197         103, 0, 0, 0, 14, 4, 4, 0, 0, 0, 14, 4, 100, 0, 0, 0,
10198         14, 4, 104, 0, 0, 0, 14, 4, 255, 0, 0, 0, 20, 2, 20, 2,
10199         20, 1, 20, 1, 20, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 2,
10200         20, 1, 20, 1, 20, 1, 20, 4, 65, 34, 4, 17, 149, 36, 34, 46,
10201         34, 5, 46, 35, 6, 39, 34, 34, 35, 65, 34, 34, 17, 149, 37, 34,
10202         46, 34, 7, 46, 35, 8, 39, 34, 34, 35, 65, 34, 34, 17, 149, 38,
10203         34, 89, 32, 36, 18, 94, 32, 32, 16, 71, 36, 36, 32, 71, 39, 36,
10204         38, 89, 32, 38, 19, 94, 32, 32, 16, 99, 39, 39, 32, 71, 39, 39,
10205         38, 71, 41, 36, 37, 71, 41, 41, 37, 89, 32, 37, 20, 94, 32, 32,
10206         16, 71, 41, 41, 32, 89, 32, 37, 21, 94, 32, 32, 16, 99, 40, 36,
10207         32, 89, 32, 38, 22, 94, 32, 32, 16, 99, 40, 40, 32, 99, 40, 40,
10208         32, 159, 42, 39, 159, 43, 40, 159, 44, 41, 196, 32, 44, 43, 196, 33,
10209         42, 23, 195, 45, 32, 33, 21, 2, 33, 0, 45, 17, 2, 0,
10210       };
10211       p = orc_program_new_from_static_bytecode (bc);
10212       orc_program_set_backup_function (p,
10213           _backup_video_convert_orc_convert_I420_BGRA_avg);
10214 #else
10215       p = orc_program_new ();
10216       orc_program_set_name (p, "video_convert_orc_convert_I420_BGRA_avg");
10217       orc_program_set_backup_function (p,
10218           _backup_video_convert_orc_convert_I420_BGRA_avg);
10219       orc_program_add_destination (p, 4, "d1");
10220       orc_program_add_source (p, 1, "s1");
10221       orc_program_add_source (p, 1, "s2");
10222       orc_program_add_source (p, 1, "s3");
10223       orc_program_add_source (p, 1, "s4");
10224       orc_program_add_source (p, 1, "s5");
10225       orc_program_add_constant (p, 1, 0x00000008, "c1");
10226       orc_program_add_constant (p, 1, 0x00000080, "c2");
10227       orc_program_add_constant (p, 4, 0x0000002a, "c3");
10228       orc_program_add_constant (p, 4, 0x00000067, "c4");
10229       orc_program_add_constant (p, 4, 0x00000004, "c5");
10230       orc_program_add_constant (p, 4, 0x00000064, "c6");
10231       orc_program_add_constant (p, 4, 0x00000068, "c7");
10232       orc_program_add_constant (p, 4, 0x000000ff, "c8");
10233       orc_program_add_temporary (p, 2, "t1");
10234       orc_program_add_temporary (p, 2, "t2");
10235       orc_program_add_temporary (p, 1, "t3");
10236       orc_program_add_temporary (p, 1, "t4");
10237       orc_program_add_temporary (p, 2, "t5");
10238       orc_program_add_temporary (p, 2, "t6");
10239       orc_program_add_temporary (p, 2, "t7");
10240       orc_program_add_temporary (p, 2, "t8");
10241       orc_program_add_temporary (p, 2, "t9");
10242       orc_program_add_temporary (p, 2, "t10");
10243       orc_program_add_temporary (p, 1, "t11");
10244       orc_program_add_temporary (p, 1, "t12");
10245       orc_program_add_temporary (p, 1, "t13");
10246       orc_program_add_temporary (p, 4, "t14");
10247
10248       orc_program_append_2 (p, "subb", 0, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_C2,
10249           ORC_VAR_D1);
10250       orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_D1,
10251           ORC_VAR_D1);
10252       orc_program_append_2 (p, "loadupib", 0, ORC_VAR_T3, ORC_VAR_S2,
10253           ORC_VAR_D1, ORC_VAR_D1);
10254       orc_program_append_2 (p, "loadupib", 0, ORC_VAR_T4, ORC_VAR_S3,
10255           ORC_VAR_D1, ORC_VAR_D1);
10256       orc_program_append_2 (p, "avgub", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4,
10257           ORC_VAR_D1);
10258       orc_program_append_2 (p, "subb", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2,
10259           ORC_VAR_D1);
10260       orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_D1,
10261           ORC_VAR_D1);
10262       orc_program_append_2 (p, "loadupib", 0, ORC_VAR_T3, ORC_VAR_S4,
10263           ORC_VAR_D1, ORC_VAR_D1);
10264       orc_program_append_2 (p, "loadupib", 0, ORC_VAR_T4, ORC_VAR_S5,
10265           ORC_VAR_D1, ORC_VAR_D1);
10266       orc_program_append_2 (p, "avgub", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4,
10267           ORC_VAR_D1);
10268       orc_program_append_2 (p, "subb", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2,
10269           ORC_VAR_D1);
10270       orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T7, ORC_VAR_T3, ORC_VAR_D1,
10271           ORC_VAR_D1);
10272       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_C3,
10273           ORC_VAR_D1);
10274       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
10275           ORC_VAR_D1);
10276       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T1,
10277           ORC_VAR_D1);
10278       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T7,
10279           ORC_VAR_D1);
10280       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_C4,
10281           ORC_VAR_D1);
10282       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
10283           ORC_VAR_D1);
10284       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T1,
10285           ORC_VAR_D1);
10286       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T7,
10287           ORC_VAR_D1);
10288       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T5, ORC_VAR_T6,
10289           ORC_VAR_D1);
10290       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T10,
10291           ORC_VAR_T6, ORC_VAR_D1);
10292       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T6, ORC_VAR_C5,
10293           ORC_VAR_D1);
10294       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
10295           ORC_VAR_D1);
10296       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T10,
10297           ORC_VAR_T1, ORC_VAR_D1);
10298       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T6, ORC_VAR_C6,
10299           ORC_VAR_D1);
10300       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
10301           ORC_VAR_D1);
10302       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T9, ORC_VAR_T5, ORC_VAR_T1,
10303           ORC_VAR_D1);
10304       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_C7,
10305           ORC_VAR_D1);
10306       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
10307           ORC_VAR_D1);
10308       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T1,
10309           ORC_VAR_D1);
10310       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T1,
10311           ORC_VAR_D1);
10312       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T11, ORC_VAR_T8,
10313           ORC_VAR_D1, ORC_VAR_D1);
10314       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T12, ORC_VAR_T9,
10315           ORC_VAR_D1, ORC_VAR_D1);
10316       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T13, ORC_VAR_T10,
10317           ORC_VAR_D1, ORC_VAR_D1);
10318       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T13,
10319           ORC_VAR_T12, ORC_VAR_D1);
10320       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_T11,
10321           ORC_VAR_C8, ORC_VAR_D1);
10322       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T14, ORC_VAR_T1,
10323           ORC_VAR_T2, ORC_VAR_D1);
10324       orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T14, ORC_VAR_C2,
10325           ORC_VAR_D1);
10326 #endif
10327
10328       orc_program_compile (p);
10329       c = orc_program_take_code (p);
10330       orc_program_free (p);
10331     }
10332     p_inited = TRUE;
10333     orc_once_mutex_unlock ();
10334   }
10335   ex->arrays[ORC_VAR_A2] = c;
10336   ex->program = 0;
10337
10338   ex->n = n;
10339   ex->arrays[ORC_VAR_D1] = d1;
10340   ex->arrays[ORC_VAR_S1] = (void *) s1;
10341   ex->arrays[ORC_VAR_S2] = (void *) s2;
10342   ex->arrays[ORC_VAR_S3] = (void *) s3;
10343   ex->arrays[ORC_VAR_S4] = (void *) s4;
10344   ex->arrays[ORC_VAR_S5] = (void *) s5;
10345
10346   func = c->exec;
10347   func (ex);
10348 }
10349 #endif
10350
10351
10352 /* video_convert_orc_getline_I420 */
10353 #ifdef DISABLE_ORC
10354 void
10355 video_convert_orc_getline_I420 (guint8 * ORC_RESTRICT d1,
10356     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
10357     const guint8 * ORC_RESTRICT s3, int n)
10358 {
10359   int i;
10360   orc_union32 *ORC_RESTRICT ptr0;
10361   const orc_int8 *ORC_RESTRICT ptr4;
10362   const orc_int8 *ORC_RESTRICT ptr5;
10363   const orc_int8 *ORC_RESTRICT ptr6;
10364 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
10365   volatile orc_int8 var36;
10366 #else
10367   orc_int8 var36;
10368 #endif
10369   orc_int8 var37;
10370   orc_union32 var38;
10371   orc_int8 var39;
10372   orc_int8 var40;
10373   orc_union16 var41;
10374   orc_union16 var42;
10375
10376   ptr0 = (orc_union32 *) d1;
10377   ptr4 = (orc_int8 *) s1;
10378   ptr5 = (orc_int8 *) s2;
10379   ptr6 = (orc_int8 *) s3;
10380
10381   /* 3: loadpb */
10382   var36 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
10383
10384   for (i = 0; i < n; i++) {
10385     /* 0: loadupdb */
10386     var39 = ptr5[i >> 1];
10387     /* 1: loadupdb */
10388     var40 = ptr6[i >> 1];
10389     /* 2: mergebw */
10390     {
10391       orc_union16 _dest;
10392       _dest.x2[0] = var39;
10393       _dest.x2[1] = var40;
10394       var41.i = _dest.i;
10395     }
10396     /* 4: loadb */
10397     var37 = ptr4[i];
10398     /* 5: mergebw */
10399     {
10400       orc_union16 _dest;
10401       _dest.x2[0] = var36;
10402       _dest.x2[1] = var37;
10403       var42.i = _dest.i;
10404     }
10405     /* 6: mergewl */
10406     {
10407       orc_union32 _dest;
10408       _dest.x2[0] = var42.i;
10409       _dest.x2[1] = var41.i;
10410       var38.i = _dest.i;
10411     }
10412     /* 7: storel */
10413     ptr0[i] = var38;
10414   }
10415
10416 }
10417
10418 #else
10419 static void
10420 _backup_video_convert_orc_getline_I420 (OrcExecutor * ORC_RESTRICT ex)
10421 {
10422   int i;
10423   int n = ex->n;
10424   orc_union32 *ORC_RESTRICT ptr0;
10425   const orc_int8 *ORC_RESTRICT ptr4;
10426   const orc_int8 *ORC_RESTRICT ptr5;
10427   const orc_int8 *ORC_RESTRICT ptr6;
10428 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
10429   volatile orc_int8 var36;
10430 #else
10431   orc_int8 var36;
10432 #endif
10433   orc_int8 var37;
10434   orc_union32 var38;
10435   orc_int8 var39;
10436   orc_int8 var40;
10437   orc_union16 var41;
10438   orc_union16 var42;
10439
10440   ptr0 = (orc_union32 *) ex->arrays[0];
10441   ptr4 = (orc_int8 *) ex->arrays[4];
10442   ptr5 = (orc_int8 *) ex->arrays[5];
10443   ptr6 = (orc_int8 *) ex->arrays[6];
10444
10445   /* 3: loadpb */
10446   var36 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
10447
10448   for (i = 0; i < n; i++) {
10449     /* 0: loadupdb */
10450     var39 = ptr5[i >> 1];
10451     /* 1: loadupdb */
10452     var40 = ptr6[i >> 1];
10453     /* 2: mergebw */
10454     {
10455       orc_union16 _dest;
10456       _dest.x2[0] = var39;
10457       _dest.x2[1] = var40;
10458       var41.i = _dest.i;
10459     }
10460     /* 4: loadb */
10461     var37 = ptr4[i];
10462     /* 5: mergebw */
10463     {
10464       orc_union16 _dest;
10465       _dest.x2[0] = var36;
10466       _dest.x2[1] = var37;
10467       var42.i = _dest.i;
10468     }
10469     /* 6: mergewl */
10470     {
10471       orc_union32 _dest;
10472       _dest.x2[0] = var42.i;
10473       _dest.x2[1] = var41.i;
10474       var38.i = _dest.i;
10475     }
10476     /* 7: storel */
10477     ptr0[i] = var38;
10478   }
10479
10480 }
10481
10482 void
10483 video_convert_orc_getline_I420 (guint8 * ORC_RESTRICT d1,
10484     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
10485     const guint8 * ORC_RESTRICT s3, int n)
10486 {
10487   OrcExecutor _ex, *ex = &_ex;
10488   static volatile int p_inited = 0;
10489   static OrcCode *c = 0;
10490   void (*func) (OrcExecutor *);
10491
10492   if (!p_inited) {
10493     orc_once_mutex_lock ();
10494     if (!p_inited) {
10495       OrcProgram *p;
10496
10497 #if 1
10498       static const orc_uint8 bc[] = {
10499         1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
10500         95, 111, 114, 99, 95, 103, 101, 116, 108, 105, 110, 101, 95, 73, 52, 50,
10501         48, 11, 4, 4, 12, 1, 1, 12, 1, 1, 12, 1, 1, 14, 1, 255,
10502         0, 0, 0, 20, 2, 20, 2, 20, 1, 20, 1, 45, 34, 5, 45, 35,
10503         6, 196, 32, 34, 35, 196, 33, 16, 4, 195, 0, 33, 32, 2, 0,
10504       };
10505       p = orc_program_new_from_static_bytecode (bc);
10506       orc_program_set_backup_function (p,
10507           _backup_video_convert_orc_getline_I420);
10508 #else
10509       p = orc_program_new ();
10510       orc_program_set_name (p, "video_convert_orc_getline_I420");
10511       orc_program_set_backup_function (p,
10512           _backup_video_convert_orc_getline_I420);
10513       orc_program_add_destination (p, 4, "d1");
10514       orc_program_add_source (p, 1, "s1");
10515       orc_program_add_source (p, 1, "s2");
10516       orc_program_add_source (p, 1, "s3");
10517       orc_program_add_constant (p, 1, 0x000000ff, "c1");
10518       orc_program_add_temporary (p, 2, "t1");
10519       orc_program_add_temporary (p, 2, "t2");
10520       orc_program_add_temporary (p, 1, "t3");
10521       orc_program_add_temporary (p, 1, "t4");
10522
10523       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T3, ORC_VAR_S2,
10524           ORC_VAR_D1, ORC_VAR_D1);
10525       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T4, ORC_VAR_S3,
10526           ORC_VAR_D1, ORC_VAR_D1);
10527       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4,
10528           ORC_VAR_D1);
10529       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1,
10530           ORC_VAR_D1);
10531       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
10532           ORC_VAR_D1);
10533 #endif
10534
10535       orc_program_compile (p);
10536       c = orc_program_take_code (p);
10537       orc_program_free (p);
10538     }
10539     p_inited = TRUE;
10540     orc_once_mutex_unlock ();
10541   }
10542   ex->arrays[ORC_VAR_A2] = c;
10543   ex->program = 0;
10544
10545   ex->n = n;
10546   ex->arrays[ORC_VAR_D1] = d1;
10547   ex->arrays[ORC_VAR_S1] = (void *) s1;
10548   ex->arrays[ORC_VAR_S2] = (void *) s2;
10549   ex->arrays[ORC_VAR_S3] = (void *) s3;
10550
10551   func = c->exec;
10552   func (ex);
10553 }
10554 #endif
10555
10556
10557 /* video_convert_orc_getline_YUV9 */
10558 #ifdef DISABLE_ORC
10559 void
10560 video_convert_orc_getline_YUV9 (guint8 * ORC_RESTRICT d1,
10561     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
10562     const guint8 * ORC_RESTRICT s3, int n)
10563 {
10564   int i;
10565   orc_union64 *ORC_RESTRICT ptr0;
10566   const orc_union16 *ORC_RESTRICT ptr4;
10567   const orc_int8 *ORC_RESTRICT ptr5;
10568   const orc_int8 *ORC_RESTRICT ptr6;
10569 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
10570   volatile orc_union16 var37;
10571 #else
10572   orc_union16 var37;
10573 #endif
10574   orc_union16 var38;
10575   orc_union64 var39;
10576   orc_int8 var40;
10577   orc_int8 var41;
10578   orc_union16 var42;
10579   orc_union32 var43;
10580   orc_union32 var44;
10581
10582   ptr0 = (orc_union64 *) d1;
10583   ptr4 = (orc_union16 *) s1;
10584   ptr5 = (orc_int8 *) s2;
10585   ptr6 = (orc_int8 *) s3;
10586
10587   /* 4: loadpb */
10588   var37.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
10589   var37.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
10590
10591   for (i = 0; i < n; i++) {
10592     /* 0: loadupdb */
10593     var40 = ptr5[i >> 1];
10594     /* 1: loadupdb */
10595     var41 = ptr6[i >> 1];
10596     /* 2: mergebw */
10597     {
10598       orc_union16 _dest;
10599       _dest.x2[0] = var40;
10600       _dest.x2[1] = var41;
10601       var42.i = _dest.i;
10602     }
10603     /* 3: mergewl */
10604     {
10605       orc_union32 _dest;
10606       _dest.x2[0] = var42.i;
10607       _dest.x2[1] = var42.i;
10608       var43.i = _dest.i;
10609     }
10610     /* 5: loadw */
10611     var38 = ptr4[i];
10612     /* 6: mergebw */
10613     {
10614       orc_union16 _dest;
10615       _dest.x2[0] = var37.x2[0];
10616       _dest.x2[1] = var38.x2[0];
10617       var44.x2[0] = _dest.i;
10618     }
10619     {
10620       orc_union16 _dest;
10621       _dest.x2[0] = var37.x2[1];
10622       _dest.x2[1] = var38.x2[1];
10623       var44.x2[1] = _dest.i;
10624     }
10625     /* 7: mergewl */
10626     {
10627       orc_union32 _dest;
10628       _dest.x2[0] = var44.x2[0];
10629       _dest.x2[1] = var43.x2[0];
10630       var39.x2[0] = _dest.i;
10631     }
10632     {
10633       orc_union32 _dest;
10634       _dest.x2[0] = var44.x2[1];
10635       _dest.x2[1] = var43.x2[1];
10636       var39.x2[1] = _dest.i;
10637     }
10638     /* 8: storeq */
10639     ptr0[i] = var39;
10640   }
10641
10642 }
10643
10644 #else
10645 static void
10646 _backup_video_convert_orc_getline_YUV9 (OrcExecutor * ORC_RESTRICT ex)
10647 {
10648   int i;
10649   int n = ex->n;
10650   orc_union64 *ORC_RESTRICT ptr0;
10651   const orc_union16 *ORC_RESTRICT ptr4;
10652   const orc_int8 *ORC_RESTRICT ptr5;
10653   const orc_int8 *ORC_RESTRICT ptr6;
10654 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
10655   volatile orc_union16 var37;
10656 #else
10657   orc_union16 var37;
10658 #endif
10659   orc_union16 var38;
10660   orc_union64 var39;
10661   orc_int8 var40;
10662   orc_int8 var41;
10663   orc_union16 var42;
10664   orc_union32 var43;
10665   orc_union32 var44;
10666
10667   ptr0 = (orc_union64 *) ex->arrays[0];
10668   ptr4 = (orc_union16 *) ex->arrays[4];
10669   ptr5 = (orc_int8 *) ex->arrays[5];
10670   ptr6 = (orc_int8 *) ex->arrays[6];
10671
10672   /* 4: loadpb */
10673   var37.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
10674   var37.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
10675
10676   for (i = 0; i < n; i++) {
10677     /* 0: loadupdb */
10678     var40 = ptr5[i >> 1];
10679     /* 1: loadupdb */
10680     var41 = ptr6[i >> 1];
10681     /* 2: mergebw */
10682     {
10683       orc_union16 _dest;
10684       _dest.x2[0] = var40;
10685       _dest.x2[1] = var41;
10686       var42.i = _dest.i;
10687     }
10688     /* 3: mergewl */
10689     {
10690       orc_union32 _dest;
10691       _dest.x2[0] = var42.i;
10692       _dest.x2[1] = var42.i;
10693       var43.i = _dest.i;
10694     }
10695     /* 5: loadw */
10696     var38 = ptr4[i];
10697     /* 6: mergebw */
10698     {
10699       orc_union16 _dest;
10700       _dest.x2[0] = var37.x2[0];
10701       _dest.x2[1] = var38.x2[0];
10702       var44.x2[0] = _dest.i;
10703     }
10704     {
10705       orc_union16 _dest;
10706       _dest.x2[0] = var37.x2[1];
10707       _dest.x2[1] = var38.x2[1];
10708       var44.x2[1] = _dest.i;
10709     }
10710     /* 7: mergewl */
10711     {
10712       orc_union32 _dest;
10713       _dest.x2[0] = var44.x2[0];
10714       _dest.x2[1] = var43.x2[0];
10715       var39.x2[0] = _dest.i;
10716     }
10717     {
10718       orc_union32 _dest;
10719       _dest.x2[0] = var44.x2[1];
10720       _dest.x2[1] = var43.x2[1];
10721       var39.x2[1] = _dest.i;
10722     }
10723     /* 8: storeq */
10724     ptr0[i] = var39;
10725   }
10726
10727 }
10728
10729 void
10730 video_convert_orc_getline_YUV9 (guint8 * ORC_RESTRICT d1,
10731     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
10732     const guint8 * ORC_RESTRICT s3, int n)
10733 {
10734   OrcExecutor _ex, *ex = &_ex;
10735   static volatile int p_inited = 0;
10736   static OrcCode *c = 0;
10737   void (*func) (OrcExecutor *);
10738
10739   if (!p_inited) {
10740     orc_once_mutex_lock ();
10741     if (!p_inited) {
10742       OrcProgram *p;
10743
10744 #if 1
10745       static const orc_uint8 bc[] = {
10746         1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
10747         95, 111, 114, 99, 95, 103, 101, 116, 108, 105, 110, 101, 95, 89, 85, 86,
10748         57, 11, 8, 8, 12, 2, 2, 12, 1, 1, 12, 1, 1, 14, 1, 255,
10749         0, 0, 0, 20, 2, 20, 4, 20, 4, 20, 1, 20, 1, 45, 35, 5,
10750         45, 36, 6, 196, 32, 35, 36, 195, 34, 32, 32, 21, 1, 196, 33, 16,
10751         4, 21, 1, 195, 0, 33, 34, 2, 0,
10752       };
10753       p = orc_program_new_from_static_bytecode (bc);
10754       orc_program_set_backup_function (p,
10755           _backup_video_convert_orc_getline_YUV9);
10756 #else
10757       p = orc_program_new ();
10758       orc_program_set_name (p, "video_convert_orc_getline_YUV9");
10759       orc_program_set_backup_function (p,
10760           _backup_video_convert_orc_getline_YUV9);
10761       orc_program_add_destination (p, 8, "d1");
10762       orc_program_add_source (p, 2, "s1");
10763       orc_program_add_source (p, 1, "s2");
10764       orc_program_add_source (p, 1, "s3");
10765       orc_program_add_constant (p, 1, 0x000000ff, "c1");
10766       orc_program_add_temporary (p, 2, "t1");
10767       orc_program_add_temporary (p, 4, "t2");
10768       orc_program_add_temporary (p, 4, "t3");
10769       orc_program_add_temporary (p, 1, "t4");
10770       orc_program_add_temporary (p, 1, "t5");
10771
10772       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T4, ORC_VAR_S2,
10773           ORC_VAR_D1, ORC_VAR_D1);
10774       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T5, ORC_VAR_S3,
10775           ORC_VAR_D1, ORC_VAR_D1);
10776       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T4, ORC_VAR_T5,
10777           ORC_VAR_D1);
10778       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1,
10779           ORC_VAR_D1);
10780       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1,
10781           ORC_VAR_D1);
10782       orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T3,
10783           ORC_VAR_D1);
10784 #endif
10785
10786       orc_program_compile (p);
10787       c = orc_program_take_code (p);
10788       orc_program_free (p);
10789     }
10790     p_inited = TRUE;
10791     orc_once_mutex_unlock ();
10792   }
10793   ex->arrays[ORC_VAR_A2] = c;
10794   ex->program = 0;
10795
10796   ex->n = n;
10797   ex->arrays[ORC_VAR_D1] = d1;
10798   ex->arrays[ORC_VAR_S1] = (void *) s1;
10799   ex->arrays[ORC_VAR_S2] = (void *) s2;
10800   ex->arrays[ORC_VAR_S3] = (void *) s3;
10801
10802   func = c->exec;
10803   func (ex);
10804 }
10805 #endif
10806
10807
10808 /* video_convert_orc_getline_YUY2 */
10809 #ifdef DISABLE_ORC
10810 void
10811 video_convert_orc_getline_YUY2 (guint8 * ORC_RESTRICT d1,
10812     const guint8 * ORC_RESTRICT s1, int n)
10813 {
10814   int i;
10815   orc_union64 *ORC_RESTRICT ptr0;
10816   const orc_union32 *ORC_RESTRICT ptr4;
10817   orc_union32 var36;
10818 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
10819   volatile orc_union16 var37;
10820 #else
10821   orc_union16 var37;
10822 #endif
10823   orc_union64 var38;
10824   orc_union16 var39;
10825   orc_union16 var40;
10826   orc_union32 var41;
10827   orc_union32 var42;
10828
10829   ptr0 = (orc_union64 *) d1;
10830   ptr4 = (orc_union32 *) s1;
10831
10832   /* 2: loadpb */
10833   var37.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
10834   var37.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
10835
10836   for (i = 0; i < n; i++) {
10837     /* 0: loadl */
10838     var36 = ptr4[i];
10839     /* 1: splitwb */
10840     {
10841       orc_union16 _src;
10842       _src.i = var36.x2[0];
10843       var39.x2[0] = _src.x2[1];
10844       var40.x2[0] = _src.x2[0];
10845     }
10846     {
10847       orc_union16 _src;
10848       _src.i = var36.x2[1];
10849       var39.x2[1] = _src.x2[1];
10850       var40.x2[1] = _src.x2[0];
10851     }
10852     /* 3: mergebw */
10853     {
10854       orc_union16 _dest;
10855       _dest.x2[0] = var37.x2[0];
10856       _dest.x2[1] = var40.x2[0];
10857       var41.x2[0] = _dest.i;
10858     }
10859     {
10860       orc_union16 _dest;
10861       _dest.x2[0] = var37.x2[1];
10862       _dest.x2[1] = var40.x2[1];
10863       var41.x2[1] = _dest.i;
10864     }
10865     /* 4: mergewl */
10866     {
10867       orc_union32 _dest;
10868       _dest.x2[0] = var39.i;
10869       _dest.x2[1] = var39.i;
10870       var42.i = _dest.i;
10871     }
10872     /* 5: mergewl */
10873     {
10874       orc_union32 _dest;
10875       _dest.x2[0] = var41.x2[0];
10876       _dest.x2[1] = var42.x2[0];
10877       var38.x2[0] = _dest.i;
10878     }
10879     {
10880       orc_union32 _dest;
10881       _dest.x2[0] = var41.x2[1];
10882       _dest.x2[1] = var42.x2[1];
10883       var38.x2[1] = _dest.i;
10884     }
10885     /* 6: storeq */
10886     ptr0[i] = var38;
10887   }
10888
10889 }
10890
10891 #else
10892 static void
10893 _backup_video_convert_orc_getline_YUY2 (OrcExecutor * ORC_RESTRICT ex)
10894 {
10895   int i;
10896   int n = ex->n;
10897   orc_union64 *ORC_RESTRICT ptr0;
10898   const orc_union32 *ORC_RESTRICT ptr4;
10899   orc_union32 var36;
10900 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
10901   volatile orc_union16 var37;
10902 #else
10903   orc_union16 var37;
10904 #endif
10905   orc_union64 var38;
10906   orc_union16 var39;
10907   orc_union16 var40;
10908   orc_union32 var41;
10909   orc_union32 var42;
10910
10911   ptr0 = (orc_union64 *) ex->arrays[0];
10912   ptr4 = (orc_union32 *) ex->arrays[4];
10913
10914   /* 2: loadpb */
10915   var37.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
10916   var37.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
10917
10918   for (i = 0; i < n; i++) {
10919     /* 0: loadl */
10920     var36 = ptr4[i];
10921     /* 1: splitwb */
10922     {
10923       orc_union16 _src;
10924       _src.i = var36.x2[0];
10925       var39.x2[0] = _src.x2[1];
10926       var40.x2[0] = _src.x2[0];
10927     }
10928     {
10929       orc_union16 _src;
10930       _src.i = var36.x2[1];
10931       var39.x2[1] = _src.x2[1];
10932       var40.x2[1] = _src.x2[0];
10933     }
10934     /* 3: mergebw */
10935     {
10936       orc_union16 _dest;
10937       _dest.x2[0] = var37.x2[0];
10938       _dest.x2[1] = var40.x2[0];
10939       var41.x2[0] = _dest.i;
10940     }
10941     {
10942       orc_union16 _dest;
10943       _dest.x2[0] = var37.x2[1];
10944       _dest.x2[1] = var40.x2[1];
10945       var41.x2[1] = _dest.i;
10946     }
10947     /* 4: mergewl */
10948     {
10949       orc_union32 _dest;
10950       _dest.x2[0] = var39.i;
10951       _dest.x2[1] = var39.i;
10952       var42.i = _dest.i;
10953     }
10954     /* 5: mergewl */
10955     {
10956       orc_union32 _dest;
10957       _dest.x2[0] = var41.x2[0];
10958       _dest.x2[1] = var42.x2[0];
10959       var38.x2[0] = _dest.i;
10960     }
10961     {
10962       orc_union32 _dest;
10963       _dest.x2[0] = var41.x2[1];
10964       _dest.x2[1] = var42.x2[1];
10965       var38.x2[1] = _dest.i;
10966     }
10967     /* 6: storeq */
10968     ptr0[i] = var38;
10969   }
10970
10971 }
10972
10973 void
10974 video_convert_orc_getline_YUY2 (guint8 * ORC_RESTRICT d1,
10975     const guint8 * ORC_RESTRICT s1, int n)
10976 {
10977   OrcExecutor _ex, *ex = &_ex;
10978   static volatile int p_inited = 0;
10979   static OrcCode *c = 0;
10980   void (*func) (OrcExecutor *);
10981
10982   if (!p_inited) {
10983     orc_once_mutex_lock ();
10984     if (!p_inited) {
10985       OrcProgram *p;
10986
10987 #if 1
10988       static const orc_uint8 bc[] = {
10989         1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
10990         95, 111, 114, 99, 95, 103, 101, 116, 108, 105, 110, 101, 95, 89, 85, 89,
10991         50, 11, 8, 8, 12, 4, 4, 14, 2, 255, 0, 0, 0, 20, 2, 20,
10992         2, 20, 4, 20, 4, 21, 1, 199, 33, 32, 4, 21, 1, 196, 34, 16,
10993         32, 195, 35, 33, 33, 21, 1, 195, 0, 34, 35, 2, 0,
10994       };
10995       p = orc_program_new_from_static_bytecode (bc);
10996       orc_program_set_backup_function (p,
10997           _backup_video_convert_orc_getline_YUY2);
10998 #else
10999       p = orc_program_new ();
11000       orc_program_set_name (p, "video_convert_orc_getline_YUY2");
11001       orc_program_set_backup_function (p,
11002           _backup_video_convert_orc_getline_YUY2);
11003       orc_program_add_destination (p, 8, "d1");
11004       orc_program_add_source (p, 4, "s1");
11005       orc_program_add_constant (p, 2, 0x000000ff, "c1");
11006       orc_program_add_temporary (p, 2, "t1");
11007       orc_program_add_temporary (p, 2, "t2");
11008       orc_program_add_temporary (p, 4, "t3");
11009       orc_program_add_temporary (p, 4, "t4");
11010
11011       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
11012           ORC_VAR_D1);
11013       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1,
11014           ORC_VAR_D1);
11015       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2,
11016           ORC_VAR_D1);
11017       orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4,
11018           ORC_VAR_D1);
11019 #endif
11020
11021       orc_program_compile (p);
11022       c = orc_program_take_code (p);
11023       orc_program_free (p);
11024     }
11025     p_inited = TRUE;
11026     orc_once_mutex_unlock ();
11027   }
11028   ex->arrays[ORC_VAR_A2] = c;
11029   ex->program = 0;
11030
11031   ex->n = n;
11032   ex->arrays[ORC_VAR_D1] = d1;
11033   ex->arrays[ORC_VAR_S1] = (void *) s1;
11034
11035   func = c->exec;
11036   func (ex);
11037 }
11038 #endif
11039
11040
11041 /* video_convert_orc_getline_UYVY */
11042 #ifdef DISABLE_ORC
11043 void
11044 video_convert_orc_getline_UYVY (guint8 * ORC_RESTRICT d1,
11045     const guint8 * ORC_RESTRICT s1, int n)
11046 {
11047   int i;
11048   orc_union64 *ORC_RESTRICT ptr0;
11049   const orc_union32 *ORC_RESTRICT ptr4;
11050   orc_union32 var36;
11051 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11052   volatile orc_union16 var37;
11053 #else
11054   orc_union16 var37;
11055 #endif
11056   orc_union64 var38;
11057   orc_union16 var39;
11058   orc_union16 var40;
11059   orc_union32 var41;
11060   orc_union32 var42;
11061
11062   ptr0 = (orc_union64 *) d1;
11063   ptr4 = (orc_union32 *) s1;
11064
11065   /* 2: loadpb */
11066   var37.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
11067   var37.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
11068
11069   for (i = 0; i < n; i++) {
11070     /* 0: loadl */
11071     var36 = ptr4[i];
11072     /* 1: splitwb */
11073     {
11074       orc_union16 _src;
11075       _src.i = var36.x2[0];
11076       var39.x2[0] = _src.x2[1];
11077       var40.x2[0] = _src.x2[0];
11078     }
11079     {
11080       orc_union16 _src;
11081       _src.i = var36.x2[1];
11082       var39.x2[1] = _src.x2[1];
11083       var40.x2[1] = _src.x2[0];
11084     }
11085     /* 3: mergebw */
11086     {
11087       orc_union16 _dest;
11088       _dest.x2[0] = var37.x2[0];
11089       _dest.x2[1] = var39.x2[0];
11090       var41.x2[0] = _dest.i;
11091     }
11092     {
11093       orc_union16 _dest;
11094       _dest.x2[0] = var37.x2[1];
11095       _dest.x2[1] = var39.x2[1];
11096       var41.x2[1] = _dest.i;
11097     }
11098     /* 4: mergewl */
11099     {
11100       orc_union32 _dest;
11101       _dest.x2[0] = var40.i;
11102       _dest.x2[1] = var40.i;
11103       var42.i = _dest.i;
11104     }
11105     /* 5: mergewl */
11106     {
11107       orc_union32 _dest;
11108       _dest.x2[0] = var41.x2[0];
11109       _dest.x2[1] = var42.x2[0];
11110       var38.x2[0] = _dest.i;
11111     }
11112     {
11113       orc_union32 _dest;
11114       _dest.x2[0] = var41.x2[1];
11115       _dest.x2[1] = var42.x2[1];
11116       var38.x2[1] = _dest.i;
11117     }
11118     /* 6: storeq */
11119     ptr0[i] = var38;
11120   }
11121
11122 }
11123
11124 #else
11125 static void
11126 _backup_video_convert_orc_getline_UYVY (OrcExecutor * ORC_RESTRICT ex)
11127 {
11128   int i;
11129   int n = ex->n;
11130   orc_union64 *ORC_RESTRICT ptr0;
11131   const orc_union32 *ORC_RESTRICT ptr4;
11132   orc_union32 var36;
11133 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11134   volatile orc_union16 var37;
11135 #else
11136   orc_union16 var37;
11137 #endif
11138   orc_union64 var38;
11139   orc_union16 var39;
11140   orc_union16 var40;
11141   orc_union32 var41;
11142   orc_union32 var42;
11143
11144   ptr0 = (orc_union64 *) ex->arrays[0];
11145   ptr4 = (orc_union32 *) ex->arrays[4];
11146
11147   /* 2: loadpb */
11148   var37.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
11149   var37.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
11150
11151   for (i = 0; i < n; i++) {
11152     /* 0: loadl */
11153     var36 = ptr4[i];
11154     /* 1: splitwb */
11155     {
11156       orc_union16 _src;
11157       _src.i = var36.x2[0];
11158       var39.x2[0] = _src.x2[1];
11159       var40.x2[0] = _src.x2[0];
11160     }
11161     {
11162       orc_union16 _src;
11163       _src.i = var36.x2[1];
11164       var39.x2[1] = _src.x2[1];
11165       var40.x2[1] = _src.x2[0];
11166     }
11167     /* 3: mergebw */
11168     {
11169       orc_union16 _dest;
11170       _dest.x2[0] = var37.x2[0];
11171       _dest.x2[1] = var39.x2[0];
11172       var41.x2[0] = _dest.i;
11173     }
11174     {
11175       orc_union16 _dest;
11176       _dest.x2[0] = var37.x2[1];
11177       _dest.x2[1] = var39.x2[1];
11178       var41.x2[1] = _dest.i;
11179     }
11180     /* 4: mergewl */
11181     {
11182       orc_union32 _dest;
11183       _dest.x2[0] = var40.i;
11184       _dest.x2[1] = var40.i;
11185       var42.i = _dest.i;
11186     }
11187     /* 5: mergewl */
11188     {
11189       orc_union32 _dest;
11190       _dest.x2[0] = var41.x2[0];
11191       _dest.x2[1] = var42.x2[0];
11192       var38.x2[0] = _dest.i;
11193     }
11194     {
11195       orc_union32 _dest;
11196       _dest.x2[0] = var41.x2[1];
11197       _dest.x2[1] = var42.x2[1];
11198       var38.x2[1] = _dest.i;
11199     }
11200     /* 6: storeq */
11201     ptr0[i] = var38;
11202   }
11203
11204 }
11205
11206 void
11207 video_convert_orc_getline_UYVY (guint8 * ORC_RESTRICT d1,
11208     const guint8 * ORC_RESTRICT s1, int n)
11209 {
11210   OrcExecutor _ex, *ex = &_ex;
11211   static volatile int p_inited = 0;
11212   static OrcCode *c = 0;
11213   void (*func) (OrcExecutor *);
11214
11215   if (!p_inited) {
11216     orc_once_mutex_lock ();
11217     if (!p_inited) {
11218       OrcProgram *p;
11219
11220 #if 1
11221       static const orc_uint8 bc[] = {
11222         1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
11223         95, 111, 114, 99, 95, 103, 101, 116, 108, 105, 110, 101, 95, 85, 89, 86,
11224         89, 11, 8, 8, 12, 4, 4, 14, 2, 255, 0, 0, 0, 20, 2, 20,
11225         2, 20, 4, 20, 4, 21, 1, 199, 32, 33, 4, 21, 1, 196, 34, 16,
11226         32, 195, 35, 33, 33, 21, 1, 195, 0, 34, 35, 2, 0,
11227       };
11228       p = orc_program_new_from_static_bytecode (bc);
11229       orc_program_set_backup_function (p,
11230           _backup_video_convert_orc_getline_UYVY);
11231 #else
11232       p = orc_program_new ();
11233       orc_program_set_name (p, "video_convert_orc_getline_UYVY");
11234       orc_program_set_backup_function (p,
11235           _backup_video_convert_orc_getline_UYVY);
11236       orc_program_add_destination (p, 8, "d1");
11237       orc_program_add_source (p, 4, "s1");
11238       orc_program_add_constant (p, 2, 0x000000ff, "c1");
11239       orc_program_add_temporary (p, 2, "t1");
11240       orc_program_add_temporary (p, 2, "t2");
11241       orc_program_add_temporary (p, 4, "t3");
11242       orc_program_add_temporary (p, 4, "t4");
11243
11244       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1,
11245           ORC_VAR_D1);
11246       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1,
11247           ORC_VAR_D1);
11248       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2,
11249           ORC_VAR_D1);
11250       orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4,
11251           ORC_VAR_D1);
11252 #endif
11253
11254       orc_program_compile (p);
11255       c = orc_program_take_code (p);
11256       orc_program_free (p);
11257     }
11258     p_inited = TRUE;
11259     orc_once_mutex_unlock ();
11260   }
11261   ex->arrays[ORC_VAR_A2] = c;
11262   ex->program = 0;
11263
11264   ex->n = n;
11265   ex->arrays[ORC_VAR_D1] = d1;
11266   ex->arrays[ORC_VAR_S1] = (void *) s1;
11267
11268   func = c->exec;
11269   func (ex);
11270 }
11271 #endif
11272
11273
11274 /* video_convert_orc_getline_YVYU */
11275 #ifdef DISABLE_ORC
11276 void
11277 video_convert_orc_getline_YVYU (guint8 * ORC_RESTRICT d1,
11278     const guint8 * ORC_RESTRICT s1, int n)
11279 {
11280   int i;
11281   orc_union64 *ORC_RESTRICT ptr0;
11282   const orc_union32 *ORC_RESTRICT ptr4;
11283   orc_union32 var36;
11284 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11285   volatile orc_union16 var37;
11286 #else
11287   orc_union16 var37;
11288 #endif
11289   orc_union64 var38;
11290   orc_union16 var39;
11291   orc_union16 var40;
11292   orc_union16 var41;
11293   orc_union32 var42;
11294   orc_union32 var43;
11295
11296   ptr0 = (orc_union64 *) d1;
11297   ptr4 = (orc_union32 *) s1;
11298
11299   /* 3: loadpb */
11300   var37.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
11301   var37.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
11302
11303   for (i = 0; i < n; i++) {
11304     /* 0: loadl */
11305     var36 = ptr4[i];
11306     /* 1: splitwb */
11307     {
11308       orc_union16 _src;
11309       _src.i = var36.x2[0];
11310       var39.x2[0] = _src.x2[1];
11311       var40.x2[0] = _src.x2[0];
11312     }
11313     {
11314       orc_union16 _src;
11315       _src.i = var36.x2[1];
11316       var39.x2[1] = _src.x2[1];
11317       var40.x2[1] = _src.x2[0];
11318     }
11319     /* 2: swapw */
11320     var41.i = ORC_SWAP_W (var39.i);
11321     /* 4: mergebw */
11322     {
11323       orc_union16 _dest;
11324       _dest.x2[0] = var37.x2[0];
11325       _dest.x2[1] = var40.x2[0];
11326       var42.x2[0] = _dest.i;
11327     }
11328     {
11329       orc_union16 _dest;
11330       _dest.x2[0] = var37.x2[1];
11331       _dest.x2[1] = var40.x2[1];
11332       var42.x2[1] = _dest.i;
11333     }
11334     /* 5: mergewl */
11335     {
11336       orc_union32 _dest;
11337       _dest.x2[0] = var41.i;
11338       _dest.x2[1] = var41.i;
11339       var43.i = _dest.i;
11340     }
11341     /* 6: mergewl */
11342     {
11343       orc_union32 _dest;
11344       _dest.x2[0] = var42.x2[0];
11345       _dest.x2[1] = var43.x2[0];
11346       var38.x2[0] = _dest.i;
11347     }
11348     {
11349       orc_union32 _dest;
11350       _dest.x2[0] = var42.x2[1];
11351       _dest.x2[1] = var43.x2[1];
11352       var38.x2[1] = _dest.i;
11353     }
11354     /* 7: storeq */
11355     ptr0[i] = var38;
11356   }
11357
11358 }
11359
11360 #else
11361 static void
11362 _backup_video_convert_orc_getline_YVYU (OrcExecutor * ORC_RESTRICT ex)
11363 {
11364   int i;
11365   int n = ex->n;
11366   orc_union64 *ORC_RESTRICT ptr0;
11367   const orc_union32 *ORC_RESTRICT ptr4;
11368   orc_union32 var36;
11369 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11370   volatile orc_union16 var37;
11371 #else
11372   orc_union16 var37;
11373 #endif
11374   orc_union64 var38;
11375   orc_union16 var39;
11376   orc_union16 var40;
11377   orc_union16 var41;
11378   orc_union32 var42;
11379   orc_union32 var43;
11380
11381   ptr0 = (orc_union64 *) ex->arrays[0];
11382   ptr4 = (orc_union32 *) ex->arrays[4];
11383
11384   /* 3: loadpb */
11385   var37.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
11386   var37.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
11387
11388   for (i = 0; i < n; i++) {
11389     /* 0: loadl */
11390     var36 = ptr4[i];
11391     /* 1: splitwb */
11392     {
11393       orc_union16 _src;
11394       _src.i = var36.x2[0];
11395       var39.x2[0] = _src.x2[1];
11396       var40.x2[0] = _src.x2[0];
11397     }
11398     {
11399       orc_union16 _src;
11400       _src.i = var36.x2[1];
11401       var39.x2[1] = _src.x2[1];
11402       var40.x2[1] = _src.x2[0];
11403     }
11404     /* 2: swapw */
11405     var41.i = ORC_SWAP_W (var39.i);
11406     /* 4: mergebw */
11407     {
11408       orc_union16 _dest;
11409       _dest.x2[0] = var37.x2[0];
11410       _dest.x2[1] = var40.x2[0];
11411       var42.x2[0] = _dest.i;
11412     }
11413     {
11414       orc_union16 _dest;
11415       _dest.x2[0] = var37.x2[1];
11416       _dest.x2[1] = var40.x2[1];
11417       var42.x2[1] = _dest.i;
11418     }
11419     /* 5: mergewl */
11420     {
11421       orc_union32 _dest;
11422       _dest.x2[0] = var41.i;
11423       _dest.x2[1] = var41.i;
11424       var43.i = _dest.i;
11425     }
11426     /* 6: mergewl */
11427     {
11428       orc_union32 _dest;
11429       _dest.x2[0] = var42.x2[0];
11430       _dest.x2[1] = var43.x2[0];
11431       var38.x2[0] = _dest.i;
11432     }
11433     {
11434       orc_union32 _dest;
11435       _dest.x2[0] = var42.x2[1];
11436       _dest.x2[1] = var43.x2[1];
11437       var38.x2[1] = _dest.i;
11438     }
11439     /* 7: storeq */
11440     ptr0[i] = var38;
11441   }
11442
11443 }
11444
11445 void
11446 video_convert_orc_getline_YVYU (guint8 * ORC_RESTRICT d1,
11447     const guint8 * ORC_RESTRICT s1, int n)
11448 {
11449   OrcExecutor _ex, *ex = &_ex;
11450   static volatile int p_inited = 0;
11451   static OrcCode *c = 0;
11452   void (*func) (OrcExecutor *);
11453
11454   if (!p_inited) {
11455     orc_once_mutex_lock ();
11456     if (!p_inited) {
11457       OrcProgram *p;
11458
11459 #if 1
11460       static const orc_uint8 bc[] = {
11461         1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
11462         95, 111, 114, 99, 95, 103, 101, 116, 108, 105, 110, 101, 95, 89, 86, 89,
11463         85, 11, 8, 8, 12, 4, 4, 14, 2, 255, 0, 0, 0, 20, 2, 20,
11464         2, 20, 4, 20, 4, 21, 1, 199, 33, 32, 4, 183, 33, 33, 21, 1,
11465         196, 34, 16, 32, 195, 35, 33, 33, 21, 1, 195, 0, 34, 35, 2, 0,
11466
11467       };
11468       p = orc_program_new_from_static_bytecode (bc);
11469       orc_program_set_backup_function (p,
11470           _backup_video_convert_orc_getline_YVYU);
11471 #else
11472       p = orc_program_new ();
11473       orc_program_set_name (p, "video_convert_orc_getline_YVYU");
11474       orc_program_set_backup_function (p,
11475           _backup_video_convert_orc_getline_YVYU);
11476       orc_program_add_destination (p, 8, "d1");
11477       orc_program_add_source (p, 4, "s1");
11478       orc_program_add_constant (p, 2, 0x000000ff, "c1");
11479       orc_program_add_temporary (p, 2, "t1");
11480       orc_program_add_temporary (p, 2, "t2");
11481       orc_program_add_temporary (p, 4, "t3");
11482       orc_program_add_temporary (p, 4, "t4");
11483
11484       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
11485           ORC_VAR_D1);
11486       orc_program_append_2 (p, "swapw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1,
11487           ORC_VAR_D1);
11488       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1,
11489           ORC_VAR_D1);
11490       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2,
11491           ORC_VAR_D1);
11492       orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4,
11493           ORC_VAR_D1);
11494 #endif
11495
11496       orc_program_compile (p);
11497       c = orc_program_take_code (p);
11498       orc_program_free (p);
11499     }
11500     p_inited = TRUE;
11501     orc_once_mutex_unlock ();
11502   }
11503   ex->arrays[ORC_VAR_A2] = c;
11504   ex->program = 0;
11505
11506   ex->n = n;
11507   ex->arrays[ORC_VAR_D1] = d1;
11508   ex->arrays[ORC_VAR_S1] = (void *) s1;
11509
11510   func = c->exec;
11511   func (ex);
11512 }
11513 #endif
11514
11515
11516 /* video_convert_orc_getline_Y42B */
11517 #ifdef DISABLE_ORC
11518 void
11519 video_convert_orc_getline_Y42B (guint8 * ORC_RESTRICT d1,
11520     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
11521     const guint8 * ORC_RESTRICT s3, int n)
11522 {
11523   int i;
11524   orc_union64 *ORC_RESTRICT ptr0;
11525   const orc_union16 *ORC_RESTRICT ptr4;
11526   const orc_int8 *ORC_RESTRICT ptr5;
11527   const orc_int8 *ORC_RESTRICT ptr6;
11528   orc_int8 var36;
11529   orc_int8 var37;
11530 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11531   volatile orc_union16 var38;
11532 #else
11533   orc_union16 var38;
11534 #endif
11535   orc_union16 var39;
11536   orc_union64 var40;
11537   orc_union16 var41;
11538   orc_union32 var42;
11539   orc_union32 var43;
11540
11541   ptr0 = (orc_union64 *) d1;
11542   ptr4 = (orc_union16 *) s1;
11543   ptr5 = (orc_int8 *) s2;
11544   ptr6 = (orc_int8 *) s3;
11545
11546   /* 3: loadpb */
11547   var38.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
11548   var38.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
11549
11550   for (i = 0; i < n; i++) {
11551     /* 0: loadb */
11552     var36 = ptr5[i];
11553     /* 1: loadb */
11554     var37 = ptr6[i];
11555     /* 2: mergebw */
11556     {
11557       orc_union16 _dest;
11558       _dest.x2[0] = var36;
11559       _dest.x2[1] = var37;
11560       var41.i = _dest.i;
11561     }
11562     /* 4: loadw */
11563     var39 = ptr4[i];
11564     /* 5: mergebw */
11565     {
11566       orc_union16 _dest;
11567       _dest.x2[0] = var38.x2[0];
11568       _dest.x2[1] = var39.x2[0];
11569       var42.x2[0] = _dest.i;
11570     }
11571     {
11572       orc_union16 _dest;
11573       _dest.x2[0] = var38.x2[1];
11574       _dest.x2[1] = var39.x2[1];
11575       var42.x2[1] = _dest.i;
11576     }
11577     /* 6: mergewl */
11578     {
11579       orc_union32 _dest;
11580       _dest.x2[0] = var41.i;
11581       _dest.x2[1] = var41.i;
11582       var43.i = _dest.i;
11583     }
11584     /* 7: mergewl */
11585     {
11586       orc_union32 _dest;
11587       _dest.x2[0] = var42.x2[0];
11588       _dest.x2[1] = var43.x2[0];
11589       var40.x2[0] = _dest.i;
11590     }
11591     {
11592       orc_union32 _dest;
11593       _dest.x2[0] = var42.x2[1];
11594       _dest.x2[1] = var43.x2[1];
11595       var40.x2[1] = _dest.i;
11596     }
11597     /* 8: storeq */
11598     ptr0[i] = var40;
11599   }
11600
11601 }
11602
11603 #else
11604 static void
11605 _backup_video_convert_orc_getline_Y42B (OrcExecutor * ORC_RESTRICT ex)
11606 {
11607   int i;
11608   int n = ex->n;
11609   orc_union64 *ORC_RESTRICT ptr0;
11610   const orc_union16 *ORC_RESTRICT ptr4;
11611   const orc_int8 *ORC_RESTRICT ptr5;
11612   const orc_int8 *ORC_RESTRICT ptr6;
11613   orc_int8 var36;
11614   orc_int8 var37;
11615 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11616   volatile orc_union16 var38;
11617 #else
11618   orc_union16 var38;
11619 #endif
11620   orc_union16 var39;
11621   orc_union64 var40;
11622   orc_union16 var41;
11623   orc_union32 var42;
11624   orc_union32 var43;
11625
11626   ptr0 = (orc_union64 *) ex->arrays[0];
11627   ptr4 = (orc_union16 *) ex->arrays[4];
11628   ptr5 = (orc_int8 *) ex->arrays[5];
11629   ptr6 = (orc_int8 *) ex->arrays[6];
11630
11631   /* 3: loadpb */
11632   var38.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
11633   var38.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
11634
11635   for (i = 0; i < n; i++) {
11636     /* 0: loadb */
11637     var36 = ptr5[i];
11638     /* 1: loadb */
11639     var37 = ptr6[i];
11640     /* 2: mergebw */
11641     {
11642       orc_union16 _dest;
11643       _dest.x2[0] = var36;
11644       _dest.x2[1] = var37;
11645       var41.i = _dest.i;
11646     }
11647     /* 4: loadw */
11648     var39 = ptr4[i];
11649     /* 5: mergebw */
11650     {
11651       orc_union16 _dest;
11652       _dest.x2[0] = var38.x2[0];
11653       _dest.x2[1] = var39.x2[0];
11654       var42.x2[0] = _dest.i;
11655     }
11656     {
11657       orc_union16 _dest;
11658       _dest.x2[0] = var38.x2[1];
11659       _dest.x2[1] = var39.x2[1];
11660       var42.x2[1] = _dest.i;
11661     }
11662     /* 6: mergewl */
11663     {
11664       orc_union32 _dest;
11665       _dest.x2[0] = var41.i;
11666       _dest.x2[1] = var41.i;
11667       var43.i = _dest.i;
11668     }
11669     /* 7: mergewl */
11670     {
11671       orc_union32 _dest;
11672       _dest.x2[0] = var42.x2[0];
11673       _dest.x2[1] = var43.x2[0];
11674       var40.x2[0] = _dest.i;
11675     }
11676     {
11677       orc_union32 _dest;
11678       _dest.x2[0] = var42.x2[1];
11679       _dest.x2[1] = var43.x2[1];
11680       var40.x2[1] = _dest.i;
11681     }
11682     /* 8: storeq */
11683     ptr0[i] = var40;
11684   }
11685
11686 }
11687
11688 void
11689 video_convert_orc_getline_Y42B (guint8 * ORC_RESTRICT d1,
11690     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
11691     const guint8 * ORC_RESTRICT s3, int n)
11692 {
11693   OrcExecutor _ex, *ex = &_ex;
11694   static volatile int p_inited = 0;
11695   static OrcCode *c = 0;
11696   void (*func) (OrcExecutor *);
11697
11698   if (!p_inited) {
11699     orc_once_mutex_lock ();
11700     if (!p_inited) {
11701       OrcProgram *p;
11702
11703 #if 1
11704       static const orc_uint8 bc[] = {
11705         1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
11706         95, 111, 114, 99, 95, 103, 101, 116, 108, 105, 110, 101, 95, 89, 52, 50,
11707         66, 11, 8, 8, 12, 2, 2, 12, 1, 1, 12, 1, 1, 14, 1, 255,
11708         0, 0, 0, 20, 2, 20, 2, 20, 4, 20, 4, 196, 32, 5, 6, 21,
11709         1, 196, 35, 16, 4, 195, 34, 32, 32, 21, 1, 195, 0, 35, 34, 2,
11710         0,
11711       };
11712       p = orc_program_new_from_static_bytecode (bc);
11713       orc_program_set_backup_function (p,
11714           _backup_video_convert_orc_getline_Y42B);
11715 #else
11716       p = orc_program_new ();
11717       orc_program_set_name (p, "video_convert_orc_getline_Y42B");
11718       orc_program_set_backup_function (p,
11719           _backup_video_convert_orc_getline_Y42B);
11720       orc_program_add_destination (p, 8, "d1");
11721       orc_program_add_source (p, 2, "s1");
11722       orc_program_add_source (p, 1, "s2");
11723       orc_program_add_source (p, 1, "s3");
11724       orc_program_add_constant (p, 1, 0x000000ff, "c1");
11725       orc_program_add_temporary (p, 2, "t1");
11726       orc_program_add_temporary (p, 2, "t2");
11727       orc_program_add_temporary (p, 4, "t3");
11728       orc_program_add_temporary (p, 4, "t4");
11729
11730       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3,
11731           ORC_VAR_D1);
11732       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T4, ORC_VAR_C1, ORC_VAR_S1,
11733           ORC_VAR_D1);
11734       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1,
11735           ORC_VAR_D1);
11736       orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_T3,
11737           ORC_VAR_D1);
11738 #endif
11739
11740       orc_program_compile (p);
11741       c = orc_program_take_code (p);
11742       orc_program_free (p);
11743     }
11744     p_inited = TRUE;
11745     orc_once_mutex_unlock ();
11746   }
11747   ex->arrays[ORC_VAR_A2] = c;
11748   ex->program = 0;
11749
11750   ex->n = n;
11751   ex->arrays[ORC_VAR_D1] = d1;
11752   ex->arrays[ORC_VAR_S1] = (void *) s1;
11753   ex->arrays[ORC_VAR_S2] = (void *) s2;
11754   ex->arrays[ORC_VAR_S3] = (void *) s3;
11755
11756   func = c->exec;
11757   func (ex);
11758 }
11759 #endif
11760
11761
11762 /* video_convert_orc_getline_Y444 */
11763 #ifdef DISABLE_ORC
11764 void
11765 video_convert_orc_getline_Y444 (guint8 * ORC_RESTRICT d1,
11766     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
11767     const guint8 * ORC_RESTRICT s3, int n)
11768 {
11769   int i;
11770   orc_union32 *ORC_RESTRICT ptr0;
11771   const orc_int8 *ORC_RESTRICT ptr4;
11772   const orc_int8 *ORC_RESTRICT ptr5;
11773   const orc_int8 *ORC_RESTRICT ptr6;
11774   orc_int8 var34;
11775   orc_int8 var35;
11776 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11777   volatile orc_int8 var36;
11778 #else
11779   orc_int8 var36;
11780 #endif
11781   orc_int8 var37;
11782   orc_union32 var38;
11783   orc_union16 var39;
11784   orc_union16 var40;
11785
11786   ptr0 = (orc_union32 *) d1;
11787   ptr4 = (orc_int8 *) s1;
11788   ptr5 = (orc_int8 *) s2;
11789   ptr6 = (orc_int8 *) s3;
11790
11791   /* 3: loadpb */
11792   var36 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
11793
11794   for (i = 0; i < n; i++) {
11795     /* 0: loadb */
11796     var34 = ptr5[i];
11797     /* 1: loadb */
11798     var35 = ptr6[i];
11799     /* 2: mergebw */
11800     {
11801       orc_union16 _dest;
11802       _dest.x2[0] = var34;
11803       _dest.x2[1] = var35;
11804       var39.i = _dest.i;
11805     }
11806     /* 4: loadb */
11807     var37 = ptr4[i];
11808     /* 5: mergebw */
11809     {
11810       orc_union16 _dest;
11811       _dest.x2[0] = var36;
11812       _dest.x2[1] = var37;
11813       var40.i = _dest.i;
11814     }
11815     /* 6: mergewl */
11816     {
11817       orc_union32 _dest;
11818       _dest.x2[0] = var40.i;
11819       _dest.x2[1] = var39.i;
11820       var38.i = _dest.i;
11821     }
11822     /* 7: storel */
11823     ptr0[i] = var38;
11824   }
11825
11826 }
11827
11828 #else
11829 static void
11830 _backup_video_convert_orc_getline_Y444 (OrcExecutor * ORC_RESTRICT ex)
11831 {
11832   int i;
11833   int n = ex->n;
11834   orc_union32 *ORC_RESTRICT ptr0;
11835   const orc_int8 *ORC_RESTRICT ptr4;
11836   const orc_int8 *ORC_RESTRICT ptr5;
11837   const orc_int8 *ORC_RESTRICT ptr6;
11838   orc_int8 var34;
11839   orc_int8 var35;
11840 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11841   volatile orc_int8 var36;
11842 #else
11843   orc_int8 var36;
11844 #endif
11845   orc_int8 var37;
11846   orc_union32 var38;
11847   orc_union16 var39;
11848   orc_union16 var40;
11849
11850   ptr0 = (orc_union32 *) ex->arrays[0];
11851   ptr4 = (orc_int8 *) ex->arrays[4];
11852   ptr5 = (orc_int8 *) ex->arrays[5];
11853   ptr6 = (orc_int8 *) ex->arrays[6];
11854
11855   /* 3: loadpb */
11856   var36 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
11857
11858   for (i = 0; i < n; i++) {
11859     /* 0: loadb */
11860     var34 = ptr5[i];
11861     /* 1: loadb */
11862     var35 = ptr6[i];
11863     /* 2: mergebw */
11864     {
11865       orc_union16 _dest;
11866       _dest.x2[0] = var34;
11867       _dest.x2[1] = var35;
11868       var39.i = _dest.i;
11869     }
11870     /* 4: loadb */
11871     var37 = ptr4[i];
11872     /* 5: mergebw */
11873     {
11874       orc_union16 _dest;
11875       _dest.x2[0] = var36;
11876       _dest.x2[1] = var37;
11877       var40.i = _dest.i;
11878     }
11879     /* 6: mergewl */
11880     {
11881       orc_union32 _dest;
11882       _dest.x2[0] = var40.i;
11883       _dest.x2[1] = var39.i;
11884       var38.i = _dest.i;
11885     }
11886     /* 7: storel */
11887     ptr0[i] = var38;
11888   }
11889
11890 }
11891
11892 void
11893 video_convert_orc_getline_Y444 (guint8 * ORC_RESTRICT d1,
11894     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
11895     const guint8 * ORC_RESTRICT s3, int n)
11896 {
11897   OrcExecutor _ex, *ex = &_ex;
11898   static volatile int p_inited = 0;
11899   static OrcCode *c = 0;
11900   void (*func) (OrcExecutor *);
11901
11902   if (!p_inited) {
11903     orc_once_mutex_lock ();
11904     if (!p_inited) {
11905       OrcProgram *p;
11906
11907 #if 1
11908       static const orc_uint8 bc[] = {
11909         1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
11910         95, 111, 114, 99, 95, 103, 101, 116, 108, 105, 110, 101, 95, 89, 52, 52,
11911         52, 11, 4, 4, 12, 1, 1, 12, 1, 1, 12, 1, 1, 14, 1, 255,
11912         0, 0, 0, 20, 2, 20, 2, 196, 32, 5, 6, 196, 33, 16, 4, 195,
11913         0, 33, 32, 2, 0,
11914       };
11915       p = orc_program_new_from_static_bytecode (bc);
11916       orc_program_set_backup_function (p,
11917           _backup_video_convert_orc_getline_Y444);
11918 #else
11919       p = orc_program_new ();
11920       orc_program_set_name (p, "video_convert_orc_getline_Y444");
11921       orc_program_set_backup_function (p,
11922           _backup_video_convert_orc_getline_Y444);
11923       orc_program_add_destination (p, 4, "d1");
11924       orc_program_add_source (p, 1, "s1");
11925       orc_program_add_source (p, 1, "s2");
11926       orc_program_add_source (p, 1, "s3");
11927       orc_program_add_constant (p, 1, 0x000000ff, "c1");
11928       orc_program_add_temporary (p, 2, "t1");
11929       orc_program_add_temporary (p, 2, "t2");
11930
11931       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3,
11932           ORC_VAR_D1);
11933       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1,
11934           ORC_VAR_D1);
11935       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
11936           ORC_VAR_D1);
11937 #endif
11938
11939       orc_program_compile (p);
11940       c = orc_program_take_code (p);
11941       orc_program_free (p);
11942     }
11943     p_inited = TRUE;
11944     orc_once_mutex_unlock ();
11945   }
11946   ex->arrays[ORC_VAR_A2] = c;
11947   ex->program = 0;
11948
11949   ex->n = n;
11950   ex->arrays[ORC_VAR_D1] = d1;
11951   ex->arrays[ORC_VAR_S1] = (void *) s1;
11952   ex->arrays[ORC_VAR_S2] = (void *) s2;
11953   ex->arrays[ORC_VAR_S3] = (void *) s3;
11954
11955   func = c->exec;
11956   func (ex);
11957 }
11958 #endif
11959
11960
11961 /* video_convert_orc_getline_Y800 */
11962 #ifdef DISABLE_ORC
11963 void
11964 video_convert_orc_getline_Y800 (guint8 * ORC_RESTRICT d1,
11965     const guint8 * ORC_RESTRICT s1, int n)
11966 {
11967   int i;
11968   orc_union32 *ORC_RESTRICT ptr0;
11969   const orc_int8 *ORC_RESTRICT ptr4;
11970 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11971   volatile orc_int8 var33;
11972 #else
11973   orc_int8 var33;
11974 #endif
11975   orc_int8 var34;
11976 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11977   volatile orc_union16 var35;
11978 #else
11979   orc_union16 var35;
11980 #endif
11981   orc_union32 var36;
11982   orc_union16 var37;
11983
11984   ptr0 = (orc_union32 *) d1;
11985   ptr4 = (orc_int8 *) s1;
11986
11987   /* 0: loadpb */
11988   var33 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
11989   /* 3: loadpw */
11990   var35.i = (int) 0x00008080;   /* 32896 or 1.62528e-319f */
11991
11992   for (i = 0; i < n; i++) {
11993     /* 1: loadb */
11994     var34 = ptr4[i];
11995     /* 2: mergebw */
11996     {
11997       orc_union16 _dest;
11998       _dest.x2[0] = var33;
11999       _dest.x2[1] = var34;
12000       var37.i = _dest.i;
12001     }
12002     /* 4: mergewl */
12003     {
12004       orc_union32 _dest;
12005       _dest.x2[0] = var37.i;
12006       _dest.x2[1] = var35.i;
12007       var36.i = _dest.i;
12008     }
12009     /* 5: storel */
12010     ptr0[i] = var36;
12011   }
12012
12013 }
12014
12015 #else
12016 static void
12017 _backup_video_convert_orc_getline_Y800 (OrcExecutor * ORC_RESTRICT ex)
12018 {
12019   int i;
12020   int n = ex->n;
12021   orc_union32 *ORC_RESTRICT ptr0;
12022   const orc_int8 *ORC_RESTRICT ptr4;
12023 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
12024   volatile orc_int8 var33;
12025 #else
12026   orc_int8 var33;
12027 #endif
12028   orc_int8 var34;
12029 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
12030   volatile orc_union16 var35;
12031 #else
12032   orc_union16 var35;
12033 #endif
12034   orc_union32 var36;
12035   orc_union16 var37;
12036
12037   ptr0 = (orc_union32 *) ex->arrays[0];
12038   ptr4 = (orc_int8 *) ex->arrays[4];
12039
12040   /* 0: loadpb */
12041   var33 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
12042   /* 3: loadpw */
12043   var35.i = (int) 0x00008080;   /* 32896 or 1.62528e-319f */
12044
12045   for (i = 0; i < n; i++) {
12046     /* 1: loadb */
12047     var34 = ptr4[i];
12048     /* 2: mergebw */
12049     {
12050       orc_union16 _dest;
12051       _dest.x2[0] = var33;
12052       _dest.x2[1] = var34;
12053       var37.i = _dest.i;
12054     }
12055     /* 4: mergewl */
12056     {
12057       orc_union32 _dest;
12058       _dest.x2[0] = var37.i;
12059       _dest.x2[1] = var35.i;
12060       var36.i = _dest.i;
12061     }
12062     /* 5: storel */
12063     ptr0[i] = var36;
12064   }
12065
12066 }
12067
12068 void
12069 video_convert_orc_getline_Y800 (guint8 * ORC_RESTRICT d1,
12070     const guint8 * ORC_RESTRICT s1, int n)
12071 {
12072   OrcExecutor _ex, *ex = &_ex;
12073   static volatile int p_inited = 0;
12074   static OrcCode *c = 0;
12075   void (*func) (OrcExecutor *);
12076
12077   if (!p_inited) {
12078     orc_once_mutex_lock ();
12079     if (!p_inited) {
12080       OrcProgram *p;
12081
12082 #if 1
12083       static const orc_uint8 bc[] = {
12084         1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
12085         95, 111, 114, 99, 95, 103, 101, 116, 108, 105, 110, 101, 95, 89, 56, 48,
12086         48, 11, 4, 4, 12, 1, 1, 14, 1, 255, 0, 0, 0, 14, 2, 128,
12087         128, 0, 0, 20, 2, 196, 32, 16, 4, 195, 0, 32, 17, 2, 0,
12088       };
12089       p = orc_program_new_from_static_bytecode (bc);
12090       orc_program_set_backup_function (p,
12091           _backup_video_convert_orc_getline_Y800);
12092 #else
12093       p = orc_program_new ();
12094       orc_program_set_name (p, "video_convert_orc_getline_Y800");
12095       orc_program_set_backup_function (p,
12096           _backup_video_convert_orc_getline_Y800);
12097       orc_program_add_destination (p, 4, "d1");
12098       orc_program_add_source (p, 1, "s1");
12099       orc_program_add_constant (p, 1, 0x000000ff, "c1");
12100       orc_program_add_constant (p, 2, 0x00008080, "c2");
12101       orc_program_add_temporary (p, 2, "t1");
12102
12103       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_S1,
12104           ORC_VAR_D1);
12105       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C2,
12106           ORC_VAR_D1);
12107 #endif
12108
12109       orc_program_compile (p);
12110       c = orc_program_take_code (p);
12111       orc_program_free (p);
12112     }
12113     p_inited = TRUE;
12114     orc_once_mutex_unlock ();
12115   }
12116   ex->arrays[ORC_VAR_A2] = c;
12117   ex->program = 0;
12118
12119   ex->n = n;
12120   ex->arrays[ORC_VAR_D1] = d1;
12121   ex->arrays[ORC_VAR_S1] = (void *) s1;
12122
12123   func = c->exec;
12124   func (ex);
12125 }
12126 #endif
12127
12128
12129 /* video_convert_orc_getline_Y16 */
12130 #ifdef DISABLE_ORC
12131 void
12132 video_convert_orc_getline_Y16 (guint8 * ORC_RESTRICT d1,
12133     const guint8 * ORC_RESTRICT s1, int n)
12134 {
12135   int i;
12136   orc_union32 *ORC_RESTRICT ptr0;
12137   const orc_union16 *ORC_RESTRICT ptr4;
12138   orc_union16 var34;
12139 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
12140   volatile orc_int8 var35;
12141 #else
12142   orc_int8 var35;
12143 #endif
12144 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
12145   volatile orc_union16 var36;
12146 #else
12147   orc_union16 var36;
12148 #endif
12149   orc_union32 var37;
12150   orc_int8 var38;
12151   orc_union16 var39;
12152
12153   ptr0 = (orc_union32 *) d1;
12154   ptr4 = (orc_union16 *) s1;
12155
12156   /* 2: loadpb */
12157   var35 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
12158   /* 4: loadpw */
12159   var36.i = (int) 0x00008080;   /* 32896 or 1.62528e-319f */
12160
12161   for (i = 0; i < n; i++) {
12162     /* 0: loadw */
12163     var34 = ptr4[i];
12164     /* 1: convhwb */
12165     var38 = ((orc_uint16) var34.i) >> 8;
12166     /* 3: mergebw */
12167     {
12168       orc_union16 _dest;
12169       _dest.x2[0] = var35;
12170       _dest.x2[1] = var38;
12171       var39.i = _dest.i;
12172     }
12173     /* 5: mergewl */
12174     {
12175       orc_union32 _dest;
12176       _dest.x2[0] = var39.i;
12177       _dest.x2[1] = var36.i;
12178       var37.i = _dest.i;
12179     }
12180     /* 6: storel */
12181     ptr0[i] = var37;
12182   }
12183
12184 }
12185
12186 #else
12187 static void
12188 _backup_video_convert_orc_getline_Y16 (OrcExecutor * ORC_RESTRICT ex)
12189 {
12190   int i;
12191   int n = ex->n;
12192   orc_union32 *ORC_RESTRICT ptr0;
12193   const orc_union16 *ORC_RESTRICT ptr4;
12194   orc_union16 var34;
12195 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
12196   volatile orc_int8 var35;
12197 #else
12198   orc_int8 var35;
12199 #endif
12200 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
12201   volatile orc_union16 var36;
12202 #else
12203   orc_union16 var36;
12204 #endif
12205   orc_union32 var37;
12206   orc_int8 var38;
12207   orc_union16 var39;
12208
12209   ptr0 = (orc_union32 *) ex->arrays[0];
12210   ptr4 = (orc_union16 *) ex->arrays[4];
12211
12212   /* 2: loadpb */
12213   var35 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
12214   /* 4: loadpw */
12215   var36.i = (int) 0x00008080;   /* 32896 or 1.62528e-319f */
12216
12217   for (i = 0; i < n; i++) {
12218     /* 0: loadw */
12219     var34 = ptr4[i];
12220     /* 1: convhwb */
12221     var38 = ((orc_uint16) var34.i) >> 8;
12222     /* 3: mergebw */
12223     {
12224       orc_union16 _dest;
12225       _dest.x2[0] = var35;
12226       _dest.x2[1] = var38;
12227       var39.i = _dest.i;
12228     }
12229     /* 5: mergewl */
12230     {
12231       orc_union32 _dest;
12232       _dest.x2[0] = var39.i;
12233       _dest.x2[1] = var36.i;
12234       var37.i = _dest.i;
12235     }
12236     /* 6: storel */
12237     ptr0[i] = var37;
12238   }
12239
12240 }
12241
12242 void
12243 video_convert_orc_getline_Y16 (guint8 * ORC_RESTRICT d1,
12244     const guint8 * ORC_RESTRICT s1, int n)
12245 {
12246   OrcExecutor _ex, *ex = &_ex;
12247   static volatile int p_inited = 0;
12248   static OrcCode *c = 0;
12249   void (*func) (OrcExecutor *);
12250
12251   if (!p_inited) {
12252     orc_once_mutex_lock ();
12253     if (!p_inited) {
12254       OrcProgram *p;
12255
12256 #if 1
12257       static const orc_uint8 bc[] = {
12258         1, 9, 29, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
12259         95, 111, 114, 99, 95, 103, 101, 116, 108, 105, 110, 101, 95, 89, 49, 54,
12260         11, 4, 4, 12, 2, 2, 14, 1, 255, 0, 0, 0, 14, 2, 128, 128,
12261         0, 0, 20, 2, 20, 1, 158, 33, 4, 196, 32, 16, 33, 195, 0, 32,
12262         17, 2, 0,
12263       };
12264       p = orc_program_new_from_static_bytecode (bc);
12265       orc_program_set_backup_function (p,
12266           _backup_video_convert_orc_getline_Y16);
12267 #else
12268       p = orc_program_new ();
12269       orc_program_set_name (p, "video_convert_orc_getline_Y16");
12270       orc_program_set_backup_function (p,
12271           _backup_video_convert_orc_getline_Y16);
12272       orc_program_add_destination (p, 4, "d1");
12273       orc_program_add_source (p, 2, "s1");
12274       orc_program_add_constant (p, 1, 0x000000ff, "c1");
12275       orc_program_add_constant (p, 2, 0x00008080, "c2");
12276       orc_program_add_temporary (p, 2, "t1");
12277       orc_program_add_temporary (p, 1, "t2");
12278
12279       orc_program_append_2 (p, "convhwb", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1,
12280           ORC_VAR_D1);
12281       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_T2,
12282           ORC_VAR_D1);
12283       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C2,
12284           ORC_VAR_D1);
12285 #endif
12286
12287       orc_program_compile (p);
12288       c = orc_program_take_code (p);
12289       orc_program_free (p);
12290     }
12291     p_inited = TRUE;
12292     orc_once_mutex_unlock ();
12293   }
12294   ex->arrays[ORC_VAR_A2] = c;
12295   ex->program = 0;
12296
12297   ex->n = n;
12298   ex->arrays[ORC_VAR_D1] = d1;
12299   ex->arrays[ORC_VAR_S1] = (void *) s1;
12300
12301   func = c->exec;
12302   func (ex);
12303 }
12304 #endif
12305
12306
12307 /* video_convert_orc_getline_BGRA */
12308 #ifdef DISABLE_ORC
12309 void
12310 video_convert_orc_getline_BGRA (guint8 * ORC_RESTRICT d1,
12311     const guint8 * ORC_RESTRICT s1, int n)
12312 {
12313   int i;
12314   orc_union32 *ORC_RESTRICT ptr0;
12315   const orc_union32 *ORC_RESTRICT ptr4;
12316   orc_union32 var32;
12317   orc_union32 var33;
12318
12319   ptr0 = (orc_union32 *) d1;
12320   ptr4 = (orc_union32 *) s1;
12321
12322
12323   for (i = 0; i < n; i++) {
12324     /* 0: loadl */
12325     var32 = ptr4[i];
12326     /* 1: swapl */
12327     var33.i = ORC_SWAP_L (var32.i);
12328     /* 2: storel */
12329     ptr0[i] = var33;
12330   }
12331
12332 }
12333
12334 #else
12335 static void
12336 _backup_video_convert_orc_getline_BGRA (OrcExecutor * ORC_RESTRICT ex)
12337 {
12338   int i;
12339   int n = ex->n;
12340   orc_union32 *ORC_RESTRICT ptr0;
12341   const orc_union32 *ORC_RESTRICT ptr4;
12342   orc_union32 var32;
12343   orc_union32 var33;
12344
12345   ptr0 = (orc_union32 *) ex->arrays[0];
12346   ptr4 = (orc_union32 *) ex->arrays[4];
12347
12348
12349   for (i = 0; i < n; i++) {
12350     /* 0: loadl */
12351     var32 = ptr4[i];
12352     /* 1: swapl */
12353     var33.i = ORC_SWAP_L (var32.i);
12354     /* 2: storel */
12355     ptr0[i] = var33;
12356   }
12357
12358 }
12359
12360 void
12361 video_convert_orc_getline_BGRA (guint8 * ORC_RESTRICT d1,
12362     const guint8 * ORC_RESTRICT s1, int n)
12363 {
12364   OrcExecutor _ex, *ex = &_ex;
12365   static volatile int p_inited = 0;
12366   static OrcCode *c = 0;
12367   void (*func) (OrcExecutor *);
12368
12369   if (!p_inited) {
12370     orc_once_mutex_lock ();
12371     if (!p_inited) {
12372       OrcProgram *p;
12373
12374 #if 1
12375       static const orc_uint8 bc[] = {
12376         1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
12377         95, 111, 114, 99, 95, 103, 101, 116, 108, 105, 110, 101, 95, 66, 71, 82,
12378         65, 11, 4, 4, 12, 4, 4, 184, 0, 4, 2, 0,
12379       };
12380       p = orc_program_new_from_static_bytecode (bc);
12381       orc_program_set_backup_function (p,
12382           _backup_video_convert_orc_getline_BGRA);
12383 #else
12384       p = orc_program_new ();
12385       orc_program_set_name (p, "video_convert_orc_getline_BGRA");
12386       orc_program_set_backup_function (p,
12387           _backup_video_convert_orc_getline_BGRA);
12388       orc_program_add_destination (p, 4, "d1");
12389       orc_program_add_source (p, 4, "s1");
12390
12391       orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1,
12392           ORC_VAR_D1);
12393 #endif
12394
12395       orc_program_compile (p);
12396       c = orc_program_take_code (p);
12397       orc_program_free (p);
12398     }
12399     p_inited = TRUE;
12400     orc_once_mutex_unlock ();
12401   }
12402   ex->arrays[ORC_VAR_A2] = c;
12403   ex->program = 0;
12404
12405   ex->n = n;
12406   ex->arrays[ORC_VAR_D1] = d1;
12407   ex->arrays[ORC_VAR_S1] = (void *) s1;
12408
12409   func = c->exec;
12410   func (ex);
12411 }
12412 #endif
12413
12414
12415 /* video_convert_orc_getline_ABGR */
12416 #ifdef DISABLE_ORC
12417 void
12418 video_convert_orc_getline_ABGR (guint8 * ORC_RESTRICT d1,
12419     const guint8 * ORC_RESTRICT s1, int n)
12420 {
12421   int i;
12422   orc_union32 *ORC_RESTRICT ptr0;
12423   const orc_union32 *ORC_RESTRICT ptr4;
12424   orc_union32 var40;
12425   orc_union32 var41;
12426   orc_union16 var42;
12427   orc_union16 var43;
12428   orc_int8 var44;
12429   orc_int8 var45;
12430   orc_int8 var46;
12431   orc_int8 var47;
12432   orc_union16 var48;
12433   orc_union16 var49;
12434
12435   ptr0 = (orc_union32 *) d1;
12436   ptr4 = (orc_union32 *) s1;
12437
12438
12439   for (i = 0; i < n; i++) {
12440     /* 0: loadl */
12441     var40 = ptr4[i];
12442     /* 1: splitlw */
12443     {
12444       orc_union32 _src;
12445       _src.i = var40.i;
12446       var42.i = _src.x2[1];
12447       var43.i = _src.x2[0];
12448     }
12449     /* 2: splitwb */
12450     {
12451       orc_union16 _src;
12452       _src.i = var42.i;
12453       var44 = _src.x2[1];
12454       var45 = _src.x2[0];
12455     }
12456     /* 3: splitwb */
12457     {
12458       orc_union16 _src;
12459       _src.i = var43.i;
12460       var46 = _src.x2[1];
12461       var47 = _src.x2[0];
12462     }
12463     /* 4: mergebw */
12464     {
12465       orc_union16 _dest;
12466       _dest.x2[0] = var47;
12467       _dest.x2[1] = var44;
12468       var48.i = _dest.i;
12469     }
12470     /* 5: mergebw */
12471     {
12472       orc_union16 _dest;
12473       _dest.x2[0] = var45;
12474       _dest.x2[1] = var46;
12475       var49.i = _dest.i;
12476     }
12477     /* 6: mergewl */
12478     {
12479       orc_union32 _dest;
12480       _dest.x2[0] = var48.i;
12481       _dest.x2[1] = var49.i;
12482       var41.i = _dest.i;
12483     }
12484     /* 7: storel */
12485     ptr0[i] = var41;
12486   }
12487
12488 }
12489
12490 #else
12491 static void
12492 _backup_video_convert_orc_getline_ABGR (OrcExecutor * ORC_RESTRICT ex)
12493 {
12494   int i;
12495   int n = ex->n;
12496   orc_union32 *ORC_RESTRICT ptr0;
12497   const orc_union32 *ORC_RESTRICT ptr4;
12498   orc_union32 var40;
12499   orc_union32 var41;
12500   orc_union16 var42;
12501   orc_union16 var43;
12502   orc_int8 var44;
12503   orc_int8 var45;
12504   orc_int8 var46;
12505   orc_int8 var47;
12506   orc_union16 var48;
12507   orc_union16 var49;
12508
12509   ptr0 = (orc_union32 *) ex->arrays[0];
12510   ptr4 = (orc_union32 *) ex->arrays[4];
12511
12512
12513   for (i = 0; i < n; i++) {
12514     /* 0: loadl */
12515     var40 = ptr4[i];
12516     /* 1: splitlw */
12517     {
12518       orc_union32 _src;
12519       _src.i = var40.i;
12520       var42.i = _src.x2[1];
12521       var43.i = _src.x2[0];
12522     }
12523     /* 2: splitwb */
12524     {
12525       orc_union16 _src;
12526       _src.i = var42.i;
12527       var44 = _src.x2[1];
12528       var45 = _src.x2[0];
12529     }
12530     /* 3: splitwb */
12531     {
12532       orc_union16 _src;
12533       _src.i = var43.i;
12534       var46 = _src.x2[1];
12535       var47 = _src.x2[0];
12536     }
12537     /* 4: mergebw */
12538     {
12539       orc_union16 _dest;
12540       _dest.x2[0] = var47;
12541       _dest.x2[1] = var44;
12542       var48.i = _dest.i;
12543     }
12544     /* 5: mergebw */
12545     {
12546       orc_union16 _dest;
12547       _dest.x2[0] = var45;
12548       _dest.x2[1] = var46;
12549       var49.i = _dest.i;
12550     }
12551     /* 6: mergewl */
12552     {
12553       orc_union32 _dest;
12554       _dest.x2[0] = var48.i;
12555       _dest.x2[1] = var49.i;
12556       var41.i = _dest.i;
12557     }
12558     /* 7: storel */
12559     ptr0[i] = var41;
12560   }
12561
12562 }
12563
12564 void
12565 video_convert_orc_getline_ABGR (guint8 * ORC_RESTRICT d1,
12566     const guint8 * ORC_RESTRICT s1, int n)
12567 {
12568   OrcExecutor _ex, *ex = &_ex;
12569   static volatile int p_inited = 0;
12570   static OrcCode *c = 0;
12571   void (*func) (OrcExecutor *);
12572
12573   if (!p_inited) {
12574     orc_once_mutex_lock ();
12575     if (!p_inited) {
12576       OrcProgram *p;
12577
12578 #if 1
12579       static const orc_uint8 bc[] = {
12580         1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
12581         95, 111, 114, 99, 95, 103, 101, 116, 108, 105, 110, 101, 95, 65, 66, 71,
12582         82, 11, 4, 4, 12, 4, 4, 20, 1, 20, 1, 20, 1, 20, 1, 20,
12583         2, 20, 2, 20, 2, 20, 2, 198, 36, 37, 4, 199, 33, 34, 36, 199,
12584         35, 32, 37, 196, 38, 32, 33, 196, 39, 34, 35, 195, 0, 38, 39, 2,
12585         0,
12586       };
12587       p = orc_program_new_from_static_bytecode (bc);
12588       orc_program_set_backup_function (p,
12589           _backup_video_convert_orc_getline_ABGR);
12590 #else
12591       p = orc_program_new ();
12592       orc_program_set_name (p, "video_convert_orc_getline_ABGR");
12593       orc_program_set_backup_function (p,
12594           _backup_video_convert_orc_getline_ABGR);
12595       orc_program_add_destination (p, 4, "d1");
12596       orc_program_add_source (p, 4, "s1");
12597       orc_program_add_temporary (p, 1, "t1");
12598       orc_program_add_temporary (p, 1, "t2");
12599       orc_program_add_temporary (p, 1, "t3");
12600       orc_program_add_temporary (p, 1, "t4");
12601       orc_program_add_temporary (p, 2, "t5");
12602       orc_program_add_temporary (p, 2, "t6");
12603       orc_program_add_temporary (p, 2, "t7");
12604       orc_program_add_temporary (p, 2, "t8");
12605
12606       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T5, ORC_VAR_T6, ORC_VAR_S1,
12607           ORC_VAR_D1);
12608       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T5,
12609           ORC_VAR_D1);
12610       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_T6,
12611           ORC_VAR_D1);
12612       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T7, ORC_VAR_T1, ORC_VAR_T2,
12613           ORC_VAR_D1);
12614       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T8, ORC_VAR_T3, ORC_VAR_T4,
12615           ORC_VAR_D1);
12616       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T7, ORC_VAR_T8,
12617           ORC_VAR_D1);
12618 #endif
12619
12620       orc_program_compile (p);
12621       c = orc_program_take_code (p);
12622       orc_program_free (p);
12623     }
12624     p_inited = TRUE;
12625     orc_once_mutex_unlock ();
12626   }
12627   ex->arrays[ORC_VAR_A2] = c;
12628   ex->program = 0;
12629
12630   ex->n = n;
12631   ex->arrays[ORC_VAR_D1] = d1;
12632   ex->arrays[ORC_VAR_S1] = (void *) s1;
12633
12634   func = c->exec;
12635   func (ex);
12636 }
12637 #endif
12638
12639
12640 /* video_convert_orc_getline_RGBA */
12641 #ifdef DISABLE_ORC
12642 void
12643 video_convert_orc_getline_RGBA (guint8 * ORC_RESTRICT d1,
12644     const guint8 * ORC_RESTRICT s1, int n)
12645 {
12646   int i;
12647   orc_union32 *ORC_RESTRICT ptr0;
12648   const orc_union32 *ORC_RESTRICT ptr4;
12649   orc_union32 var40;
12650   orc_union32 var41;
12651   orc_union16 var42;
12652   orc_union16 var43;
12653   orc_int8 var44;
12654   orc_int8 var45;
12655   orc_int8 var46;
12656   orc_int8 var47;
12657   orc_union16 var48;
12658   orc_union16 var49;
12659
12660   ptr0 = (orc_union32 *) d1;
12661   ptr4 = (orc_union32 *) s1;
12662
12663
12664   for (i = 0; i < n; i++) {
12665     /* 0: loadl */
12666     var40 = ptr4[i];
12667     /* 1: splitlw */
12668     {
12669       orc_union32 _src;
12670       _src.i = var40.i;
12671       var42.i = _src.x2[1];
12672       var43.i = _src.x2[0];
12673     }
12674     /* 2: splitwb */
12675     {
12676       orc_union16 _src;
12677       _src.i = var43.i;
12678       var44 = _src.x2[1];
12679       var45 = _src.x2[0];
12680     }
12681     /* 3: splitwb */
12682     {
12683       orc_union16 _src;
12684       _src.i = var42.i;
12685       var46 = _src.x2[1];
12686       var47 = _src.x2[0];
12687     }
12688     /* 4: mergebw */
12689     {
12690       orc_union16 _dest;
12691       _dest.x2[0] = var46;
12692       _dest.x2[1] = var45;
12693       var48.i = _dest.i;
12694     }
12695     /* 5: mergebw */
12696     {
12697       orc_union16 _dest;
12698       _dest.x2[0] = var44;
12699       _dest.x2[1] = var47;
12700       var49.i = _dest.i;
12701     }
12702     /* 6: mergewl */
12703     {
12704       orc_union32 _dest;
12705       _dest.x2[0] = var48.i;
12706       _dest.x2[1] = var49.i;
12707       var41.i = _dest.i;
12708     }
12709     /* 7: storel */
12710     ptr0[i] = var41;
12711   }
12712
12713 }
12714
12715 #else
12716 static void
12717 _backup_video_convert_orc_getline_RGBA (OrcExecutor * ORC_RESTRICT ex)
12718 {
12719   int i;
12720   int n = ex->n;
12721   orc_union32 *ORC_RESTRICT ptr0;
12722   const orc_union32 *ORC_RESTRICT ptr4;
12723   orc_union32 var40;
12724   orc_union32 var41;
12725   orc_union16 var42;
12726   orc_union16 var43;
12727   orc_int8 var44;
12728   orc_int8 var45;
12729   orc_int8 var46;
12730   orc_int8 var47;
12731   orc_union16 var48;
12732   orc_union16 var49;
12733
12734   ptr0 = (orc_union32 *) ex->arrays[0];
12735   ptr4 = (orc_union32 *) ex->arrays[4];
12736
12737
12738   for (i = 0; i < n; i++) {
12739     /* 0: loadl */
12740     var40 = ptr4[i];
12741     /* 1: splitlw */
12742     {
12743       orc_union32 _src;
12744       _src.i = var40.i;
12745       var42.i = _src.x2[1];
12746       var43.i = _src.x2[0];
12747     }
12748     /* 2: splitwb */
12749     {
12750       orc_union16 _src;
12751       _src.i = var43.i;
12752       var44 = _src.x2[1];
12753       var45 = _src.x2[0];
12754     }
12755     /* 3: splitwb */
12756     {
12757       orc_union16 _src;
12758       _src.i = var42.i;
12759       var46 = _src.x2[1];
12760       var47 = _src.x2[0];
12761     }
12762     /* 4: mergebw */
12763     {
12764       orc_union16 _dest;
12765       _dest.x2[0] = var46;
12766       _dest.x2[1] = var45;
12767       var48.i = _dest.i;
12768     }
12769     /* 5: mergebw */
12770     {
12771       orc_union16 _dest;
12772       _dest.x2[0] = var44;
12773       _dest.x2[1] = var47;
12774       var49.i = _dest.i;
12775     }
12776     /* 6: mergewl */
12777     {
12778       orc_union32 _dest;
12779       _dest.x2[0] = var48.i;
12780       _dest.x2[1] = var49.i;
12781       var41.i = _dest.i;
12782     }
12783     /* 7: storel */
12784     ptr0[i] = var41;
12785   }
12786
12787 }
12788
12789 void
12790 video_convert_orc_getline_RGBA (guint8 * ORC_RESTRICT d1,
12791     const guint8 * ORC_RESTRICT s1, int n)
12792 {
12793   OrcExecutor _ex, *ex = &_ex;
12794   static volatile int p_inited = 0;
12795   static OrcCode *c = 0;
12796   void (*func) (OrcExecutor *);
12797
12798   if (!p_inited) {
12799     orc_once_mutex_lock ();
12800     if (!p_inited) {
12801       OrcProgram *p;
12802
12803 #if 1
12804       static const orc_uint8 bc[] = {
12805         1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
12806         95, 111, 114, 99, 95, 103, 101, 116, 108, 105, 110, 101, 95, 82, 71, 66,
12807         65, 11, 4, 4, 12, 4, 4, 20, 1, 20, 1, 20, 1, 20, 1, 20,
12808         2, 20, 2, 20, 2, 20, 2, 198, 37, 36, 4, 199, 34, 33, 36, 199,
12809         32, 35, 37, 196, 38, 32, 33, 196, 39, 34, 35, 195, 0, 38, 39, 2,
12810         0,
12811       };
12812       p = orc_program_new_from_static_bytecode (bc);
12813       orc_program_set_backup_function (p,
12814           _backup_video_convert_orc_getline_RGBA);
12815 #else
12816       p = orc_program_new ();
12817       orc_program_set_name (p, "video_convert_orc_getline_RGBA");
12818       orc_program_set_backup_function (p,
12819           _backup_video_convert_orc_getline_RGBA);
12820       orc_program_add_destination (p, 4, "d1");
12821       orc_program_add_source (p, 4, "s1");
12822       orc_program_add_temporary (p, 1, "t1");
12823       orc_program_add_temporary (p, 1, "t2");
12824       orc_program_add_temporary (p, 1, "t3");
12825       orc_program_add_temporary (p, 1, "t4");
12826       orc_program_add_temporary (p, 2, "t5");
12827       orc_program_add_temporary (p, 2, "t6");
12828       orc_program_add_temporary (p, 2, "t7");
12829       orc_program_add_temporary (p, 2, "t8");
12830
12831       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_S1,
12832           ORC_VAR_D1);
12833       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_T5,
12834           ORC_VAR_D1);
12835       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T1, ORC_VAR_T4, ORC_VAR_T6,
12836           ORC_VAR_D1);
12837       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T7, ORC_VAR_T1, ORC_VAR_T2,
12838           ORC_VAR_D1);
12839       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T8, ORC_VAR_T3, ORC_VAR_T4,
12840           ORC_VAR_D1);
12841       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T7, ORC_VAR_T8,
12842           ORC_VAR_D1);
12843 #endif
12844
12845       orc_program_compile (p);
12846       c = orc_program_take_code (p);
12847       orc_program_free (p);
12848     }
12849     p_inited = TRUE;
12850     orc_once_mutex_unlock ();
12851   }
12852   ex->arrays[ORC_VAR_A2] = c;
12853   ex->program = 0;
12854
12855   ex->n = n;
12856   ex->arrays[ORC_VAR_D1] = d1;
12857   ex->arrays[ORC_VAR_S1] = (void *) s1;
12858
12859   func = c->exec;
12860   func (ex);
12861 }
12862 #endif
12863
12864
12865 /* video_convert_orc_getline_NV12 */
12866 #ifdef DISABLE_ORC
12867 void
12868 video_convert_orc_getline_NV12 (guint8 * ORC_RESTRICT d1,
12869     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
12870 {
12871   int i;
12872   orc_union64 *ORC_RESTRICT ptr0;
12873   const orc_union16 *ORC_RESTRICT ptr4;
12874   const orc_union16 *ORC_RESTRICT ptr5;
12875   orc_union16 var34;
12876   orc_union16 var35;
12877 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
12878   volatile orc_union16 var36;
12879 #else
12880   orc_union16 var36;
12881 #endif
12882   orc_union16 var37;
12883   orc_union64 var38;
12884   orc_union32 var39;
12885   orc_union32 var40;
12886
12887   ptr0 = (orc_union64 *) d1;
12888   ptr4 = (orc_union16 *) s1;
12889   ptr5 = (orc_union16 *) s2;
12890
12891   /* 3: loadpb */
12892   var36.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
12893   var36.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
12894
12895   for (i = 0; i < n; i++) {
12896     /* 0: loadw */
12897     var34 = ptr5[i];
12898     /* 1: loadw */
12899     var35 = ptr5[i];
12900     /* 2: mergewl */
12901     {
12902       orc_union32 _dest;
12903       _dest.x2[0] = var34.i;
12904       _dest.x2[1] = var35.i;
12905       var39.i = _dest.i;
12906     }
12907     /* 4: loadw */
12908     var37 = ptr4[i];
12909     /* 5: mergebw */
12910     {
12911       orc_union16 _dest;
12912       _dest.x2[0] = var36.x2[0];
12913       _dest.x2[1] = var37.x2[0];
12914       var40.x2[0] = _dest.i;
12915     }
12916     {
12917       orc_union16 _dest;
12918       _dest.x2[0] = var36.x2[1];
12919       _dest.x2[1] = var37.x2[1];
12920       var40.x2[1] = _dest.i;
12921     }
12922     /* 6: mergewl */
12923     {
12924       orc_union32 _dest;
12925       _dest.x2[0] = var40.x2[0];
12926       _dest.x2[1] = var39.x2[0];
12927       var38.x2[0] = _dest.i;
12928     }
12929     {
12930       orc_union32 _dest;
12931       _dest.x2[0] = var40.x2[1];
12932       _dest.x2[1] = var39.x2[1];
12933       var38.x2[1] = _dest.i;
12934     }
12935     /* 7: storeq */
12936     ptr0[i] = var38;
12937   }
12938
12939 }
12940
12941 #else
12942 static void
12943 _backup_video_convert_orc_getline_NV12 (OrcExecutor * ORC_RESTRICT ex)
12944 {
12945   int i;
12946   int n = ex->n;
12947   orc_union64 *ORC_RESTRICT ptr0;
12948   const orc_union16 *ORC_RESTRICT ptr4;
12949   const orc_union16 *ORC_RESTRICT ptr5;
12950   orc_union16 var34;
12951   orc_union16 var35;
12952 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
12953   volatile orc_union16 var36;
12954 #else
12955   orc_union16 var36;
12956 #endif
12957   orc_union16 var37;
12958   orc_union64 var38;
12959   orc_union32 var39;
12960   orc_union32 var40;
12961
12962   ptr0 = (orc_union64 *) ex->arrays[0];
12963   ptr4 = (orc_union16 *) ex->arrays[4];
12964   ptr5 = (orc_union16 *) ex->arrays[5];
12965
12966   /* 3: loadpb */
12967   var36.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
12968   var36.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
12969
12970   for (i = 0; i < n; i++) {
12971     /* 0: loadw */
12972     var34 = ptr5[i];
12973     /* 1: loadw */
12974     var35 = ptr5[i];
12975     /* 2: mergewl */
12976     {
12977       orc_union32 _dest;
12978       _dest.x2[0] = var34.i;
12979       _dest.x2[1] = var35.i;
12980       var39.i = _dest.i;
12981     }
12982     /* 4: loadw */
12983     var37 = ptr4[i];
12984     /* 5: mergebw */
12985     {
12986       orc_union16 _dest;
12987       _dest.x2[0] = var36.x2[0];
12988       _dest.x2[1] = var37.x2[0];
12989       var40.x2[0] = _dest.i;
12990     }
12991     {
12992       orc_union16 _dest;
12993       _dest.x2[0] = var36.x2[1];
12994       _dest.x2[1] = var37.x2[1];
12995       var40.x2[1] = _dest.i;
12996     }
12997     /* 6: mergewl */
12998     {
12999       orc_union32 _dest;
13000       _dest.x2[0] = var40.x2[0];
13001       _dest.x2[1] = var39.x2[0];
13002       var38.x2[0] = _dest.i;
13003     }
13004     {
13005       orc_union32 _dest;
13006       _dest.x2[0] = var40.x2[1];
13007       _dest.x2[1] = var39.x2[1];
13008       var38.x2[1] = _dest.i;
13009     }
13010     /* 7: storeq */
13011     ptr0[i] = var38;
13012   }
13013
13014 }
13015
13016 void
13017 video_convert_orc_getline_NV12 (guint8 * ORC_RESTRICT d1,
13018     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
13019 {
13020   OrcExecutor _ex, *ex = &_ex;
13021   static volatile int p_inited = 0;
13022   static OrcCode *c = 0;
13023   void (*func) (OrcExecutor *);
13024
13025   if (!p_inited) {
13026     orc_once_mutex_lock ();
13027     if (!p_inited) {
13028       OrcProgram *p;
13029
13030 #if 1
13031       static const orc_uint8 bc[] = {
13032         1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
13033         95, 111, 114, 99, 95, 103, 101, 116, 108, 105, 110, 101, 95, 78, 86, 49,
13034         50, 11, 8, 8, 12, 2, 2, 12, 2, 2, 14, 1, 255, 0, 0, 0,
13035         20, 4, 20, 4, 195, 33, 5, 5, 21, 1, 196, 32, 16, 4, 21, 1,
13036         195, 0, 32, 33, 2, 0,
13037       };
13038       p = orc_program_new_from_static_bytecode (bc);
13039       orc_program_set_backup_function (p,
13040           _backup_video_convert_orc_getline_NV12);
13041 #else
13042       p = orc_program_new ();
13043       orc_program_set_name (p, "video_convert_orc_getline_NV12");
13044       orc_program_set_backup_function (p,
13045           _backup_video_convert_orc_getline_NV12);
13046       orc_program_add_destination (p, 8, "d1");
13047       orc_program_add_source (p, 2, "s1");
13048       orc_program_add_source (p, 2, "s2");
13049       orc_program_add_constant (p, 1, 0x000000ff, "c1");
13050       orc_program_add_temporary (p, 4, "t1");
13051       orc_program_add_temporary (p, 4, "t2");
13052
13053       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S2,
13054           ORC_VAR_D1);
13055       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_S1,
13056           ORC_VAR_D1);
13057       orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
13058           ORC_VAR_D1);
13059 #endif
13060
13061       orc_program_compile (p);
13062       c = orc_program_take_code (p);
13063       orc_program_free (p);
13064     }
13065     p_inited = TRUE;
13066     orc_once_mutex_unlock ();
13067   }
13068   ex->arrays[ORC_VAR_A2] = c;
13069   ex->program = 0;
13070
13071   ex->n = n;
13072   ex->arrays[ORC_VAR_D1] = d1;
13073   ex->arrays[ORC_VAR_S1] = (void *) s1;
13074   ex->arrays[ORC_VAR_S2] = (void *) s2;
13075
13076   func = c->exec;
13077   func (ex);
13078 }
13079 #endif
13080
13081
13082 /* video_convert_orc_getline_NV21 */
13083 #ifdef DISABLE_ORC
13084 void
13085 video_convert_orc_getline_NV21 (guint8 * ORC_RESTRICT d1,
13086     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
13087 {
13088   int i;
13089   orc_union64 *ORC_RESTRICT ptr0;
13090   const orc_union16 *ORC_RESTRICT ptr4;
13091   const orc_union16 *ORC_RESTRICT ptr5;
13092   orc_union16 var35;
13093 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
13094   volatile orc_union16 var36;
13095 #else
13096   orc_union16 var36;
13097 #endif
13098   orc_union16 var37;
13099   orc_union64 var38;
13100   orc_union16 var39;
13101   orc_union32 var40;
13102   orc_union32 var41;
13103
13104   ptr0 = (orc_union64 *) d1;
13105   ptr4 = (orc_union16 *) s1;
13106   ptr5 = (orc_union16 *) s2;
13107
13108   /* 3: loadpb */
13109   var36.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
13110   var36.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
13111
13112   for (i = 0; i < n; i++) {
13113     /* 0: loadw */
13114     var35 = ptr5[i];
13115     /* 1: swapw */
13116     var39.i = ORC_SWAP_W (var35.i);
13117     /* 2: mergewl */
13118     {
13119       orc_union32 _dest;
13120       _dest.x2[0] = var39.i;
13121       _dest.x2[1] = var39.i;
13122       var40.i = _dest.i;
13123     }
13124     /* 4: loadw */
13125     var37 = ptr4[i];
13126     /* 5: mergebw */
13127     {
13128       orc_union16 _dest;
13129       _dest.x2[0] = var36.x2[0];
13130       _dest.x2[1] = var37.x2[0];
13131       var41.x2[0] = _dest.i;
13132     }
13133     {
13134       orc_union16 _dest;
13135       _dest.x2[0] = var36.x2[1];
13136       _dest.x2[1] = var37.x2[1];
13137       var41.x2[1] = _dest.i;
13138     }
13139     /* 6: mergewl */
13140     {
13141       orc_union32 _dest;
13142       _dest.x2[0] = var41.x2[0];
13143       _dest.x2[1] = var40.x2[0];
13144       var38.x2[0] = _dest.i;
13145     }
13146     {
13147       orc_union32 _dest;
13148       _dest.x2[0] = var41.x2[1];
13149       _dest.x2[1] = var40.x2[1];
13150       var38.x2[1] = _dest.i;
13151     }
13152     /* 7: storeq */
13153     ptr0[i] = var38;
13154   }
13155
13156 }
13157
13158 #else
13159 static void
13160 _backup_video_convert_orc_getline_NV21 (OrcExecutor * ORC_RESTRICT ex)
13161 {
13162   int i;
13163   int n = ex->n;
13164   orc_union64 *ORC_RESTRICT ptr0;
13165   const orc_union16 *ORC_RESTRICT ptr4;
13166   const orc_union16 *ORC_RESTRICT ptr5;
13167   orc_union16 var35;
13168 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
13169   volatile orc_union16 var36;
13170 #else
13171   orc_union16 var36;
13172 #endif
13173   orc_union16 var37;
13174   orc_union64 var38;
13175   orc_union16 var39;
13176   orc_union32 var40;
13177   orc_union32 var41;
13178
13179   ptr0 = (orc_union64 *) ex->arrays[0];
13180   ptr4 = (orc_union16 *) ex->arrays[4];
13181   ptr5 = (orc_union16 *) ex->arrays[5];
13182
13183   /* 3: loadpb */
13184   var36.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
13185   var36.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
13186
13187   for (i = 0; i < n; i++) {
13188     /* 0: loadw */
13189     var35 = ptr5[i];
13190     /* 1: swapw */
13191     var39.i = ORC_SWAP_W (var35.i);
13192     /* 2: mergewl */
13193     {
13194       orc_union32 _dest;
13195       _dest.x2[0] = var39.i;
13196       _dest.x2[1] = var39.i;
13197       var40.i = _dest.i;
13198     }
13199     /* 4: loadw */
13200     var37 = ptr4[i];
13201     /* 5: mergebw */
13202     {
13203       orc_union16 _dest;
13204       _dest.x2[0] = var36.x2[0];
13205       _dest.x2[1] = var37.x2[0];
13206       var41.x2[0] = _dest.i;
13207     }
13208     {
13209       orc_union16 _dest;
13210       _dest.x2[0] = var36.x2[1];
13211       _dest.x2[1] = var37.x2[1];
13212       var41.x2[1] = _dest.i;
13213     }
13214     /* 6: mergewl */
13215     {
13216       orc_union32 _dest;
13217       _dest.x2[0] = var41.x2[0];
13218       _dest.x2[1] = var40.x2[0];
13219       var38.x2[0] = _dest.i;
13220     }
13221     {
13222       orc_union32 _dest;
13223       _dest.x2[0] = var41.x2[1];
13224       _dest.x2[1] = var40.x2[1];
13225       var38.x2[1] = _dest.i;
13226     }
13227     /* 7: storeq */
13228     ptr0[i] = var38;
13229   }
13230
13231 }
13232
13233 void
13234 video_convert_orc_getline_NV21 (guint8 * ORC_RESTRICT d1,
13235     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
13236 {
13237   OrcExecutor _ex, *ex = &_ex;
13238   static volatile int p_inited = 0;
13239   static OrcCode *c = 0;
13240   void (*func) (OrcExecutor *);
13241
13242   if (!p_inited) {
13243     orc_once_mutex_lock ();
13244     if (!p_inited) {
13245       OrcProgram *p;
13246
13247 #if 1
13248       static const orc_uint8 bc[] = {
13249         1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
13250         95, 111, 114, 99, 95, 103, 101, 116, 108, 105, 110, 101, 95, 78, 86, 50,
13251         49, 11, 8, 8, 12, 2, 2, 12, 2, 2, 14, 1, 255, 0, 0, 0,
13252         20, 2, 20, 4, 20, 4, 183, 32, 5, 195, 34, 32, 32, 21, 1, 196,
13253         33, 16, 4, 21, 1, 195, 0, 33, 34, 2, 0,
13254       };
13255       p = orc_program_new_from_static_bytecode (bc);
13256       orc_program_set_backup_function (p,
13257           _backup_video_convert_orc_getline_NV21);
13258 #else
13259       p = orc_program_new ();
13260       orc_program_set_name (p, "video_convert_orc_getline_NV21");
13261       orc_program_set_backup_function (p,
13262           _backup_video_convert_orc_getline_NV21);
13263       orc_program_add_destination (p, 8, "d1");
13264       orc_program_add_source (p, 2, "s1");
13265       orc_program_add_source (p, 2, "s2");
13266       orc_program_add_constant (p, 1, 0x000000ff, "c1");
13267       orc_program_add_temporary (p, 2, "t1");
13268       orc_program_add_temporary (p, 4, "t2");
13269       orc_program_add_temporary (p, 4, "t3");
13270
13271       orc_program_append_2 (p, "swapw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_D1,
13272           ORC_VAR_D1);
13273       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1,
13274           ORC_VAR_D1);
13275       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1,
13276           ORC_VAR_D1);
13277       orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T3,
13278           ORC_VAR_D1);
13279 #endif
13280
13281       orc_program_compile (p);
13282       c = orc_program_take_code (p);
13283       orc_program_free (p);
13284     }
13285     p_inited = TRUE;
13286     orc_once_mutex_unlock ();
13287   }
13288   ex->arrays[ORC_VAR_A2] = c;
13289   ex->program = 0;
13290
13291   ex->n = n;
13292   ex->arrays[ORC_VAR_D1] = d1;
13293   ex->arrays[ORC_VAR_S1] = (void *) s1;
13294   ex->arrays[ORC_VAR_S2] = (void *) s2;
13295
13296   func = c->exec;
13297   func (ex);
13298 }
13299 #endif
13300
13301
13302 /* video_convert_orc_getline_A420 */
13303 #ifdef DISABLE_ORC
13304 void
13305 video_convert_orc_getline_A420 (guint8 * ORC_RESTRICT d1,
13306     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
13307     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n)
13308 {
13309   int i;
13310   orc_union32 *ORC_RESTRICT ptr0;
13311   const orc_int8 *ORC_RESTRICT ptr4;
13312   const orc_int8 *ORC_RESTRICT ptr5;
13313   const orc_int8 *ORC_RESTRICT ptr6;
13314   const orc_int8 *ORC_RESTRICT ptr7;
13315   orc_int8 var36;
13316   orc_int8 var37;
13317   orc_union32 var38;
13318   orc_int8 var39;
13319   orc_int8 var40;
13320   orc_union16 var41;
13321   orc_union16 var42;
13322
13323   ptr0 = (orc_union32 *) d1;
13324   ptr4 = (orc_int8 *) s1;
13325   ptr5 = (orc_int8 *) s2;
13326   ptr6 = (orc_int8 *) s3;
13327   ptr7 = (orc_int8 *) s4;
13328
13329
13330   for (i = 0; i < n; i++) {
13331     /* 0: loadupdb */
13332     var39 = ptr5[i >> 1];
13333     /* 1: loadupdb */
13334     var40 = ptr6[i >> 1];
13335     /* 2: mergebw */
13336     {
13337       orc_union16 _dest;
13338       _dest.x2[0] = var39;
13339       _dest.x2[1] = var40;
13340       var41.i = _dest.i;
13341     }
13342     /* 3: loadb */
13343     var36 = ptr7[i];
13344     /* 4: loadb */
13345     var37 = ptr4[i];
13346     /* 5: mergebw */
13347     {
13348       orc_union16 _dest;
13349       _dest.x2[0] = var36;
13350       _dest.x2[1] = var37;
13351       var42.i = _dest.i;
13352     }
13353     /* 6: mergewl */
13354     {
13355       orc_union32 _dest;
13356       _dest.x2[0] = var42.i;
13357       _dest.x2[1] = var41.i;
13358       var38.i = _dest.i;
13359     }
13360     /* 7: storel */
13361     ptr0[i] = var38;
13362   }
13363
13364 }
13365
13366 #else
13367 static void
13368 _backup_video_convert_orc_getline_A420 (OrcExecutor * ORC_RESTRICT ex)
13369 {
13370   int i;
13371   int n = ex->n;
13372   orc_union32 *ORC_RESTRICT ptr0;
13373   const orc_int8 *ORC_RESTRICT ptr4;
13374   const orc_int8 *ORC_RESTRICT ptr5;
13375   const orc_int8 *ORC_RESTRICT ptr6;
13376   const orc_int8 *ORC_RESTRICT ptr7;
13377   orc_int8 var36;
13378   orc_int8 var37;
13379   orc_union32 var38;
13380   orc_int8 var39;
13381   orc_int8 var40;
13382   orc_union16 var41;
13383   orc_union16 var42;
13384
13385   ptr0 = (orc_union32 *) ex->arrays[0];
13386   ptr4 = (orc_int8 *) ex->arrays[4];
13387   ptr5 = (orc_int8 *) ex->arrays[5];
13388   ptr6 = (orc_int8 *) ex->arrays[6];
13389   ptr7 = (orc_int8 *) ex->arrays[7];
13390
13391
13392   for (i = 0; i < n; i++) {
13393     /* 0: loadupdb */
13394     var39 = ptr5[i >> 1];
13395     /* 1: loadupdb */
13396     var40 = ptr6[i >> 1];
13397     /* 2: mergebw */
13398     {
13399       orc_union16 _dest;
13400       _dest.x2[0] = var39;
13401       _dest.x2[1] = var40;
13402       var41.i = _dest.i;
13403     }
13404     /* 3: loadb */
13405     var36 = ptr7[i];
13406     /* 4: loadb */
13407     var37 = ptr4[i];
13408     /* 5: mergebw */
13409     {
13410       orc_union16 _dest;
13411       _dest.x2[0] = var36;
13412       _dest.x2[1] = var37;
13413       var42.i = _dest.i;
13414     }
13415     /* 6: mergewl */
13416     {
13417       orc_union32 _dest;
13418       _dest.x2[0] = var42.i;
13419       _dest.x2[1] = var41.i;
13420       var38.i = _dest.i;
13421     }
13422     /* 7: storel */
13423     ptr0[i] = var38;
13424   }
13425
13426 }
13427
13428 void
13429 video_convert_orc_getline_A420 (guint8 * ORC_RESTRICT d1,
13430     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
13431     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n)
13432 {
13433   OrcExecutor _ex, *ex = &_ex;
13434   static volatile int p_inited = 0;
13435   static OrcCode *c = 0;
13436   void (*func) (OrcExecutor *);
13437
13438   if (!p_inited) {
13439     orc_once_mutex_lock ();
13440     if (!p_inited) {
13441       OrcProgram *p;
13442
13443 #if 1
13444       static const orc_uint8 bc[] = {
13445         1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
13446         95, 111, 114, 99, 95, 103, 101, 116, 108, 105, 110, 101, 95, 65, 52, 50,
13447         48, 11, 4, 4, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1,
13448         20, 2, 20, 2, 20, 1, 20, 1, 45, 34, 5, 45, 35, 6, 196, 32,
13449         34, 35, 196, 33, 7, 4, 195, 0, 33, 32, 2, 0,
13450       };
13451       p = orc_program_new_from_static_bytecode (bc);
13452       orc_program_set_backup_function (p,
13453           _backup_video_convert_orc_getline_A420);
13454 #else
13455       p = orc_program_new ();
13456       orc_program_set_name (p, "video_convert_orc_getline_A420");
13457       orc_program_set_backup_function (p,
13458           _backup_video_convert_orc_getline_A420);
13459       orc_program_add_destination (p, 4, "d1");
13460       orc_program_add_source (p, 1, "s1");
13461       orc_program_add_source (p, 1, "s2");
13462       orc_program_add_source (p, 1, "s3");
13463       orc_program_add_source (p, 1, "s4");
13464       orc_program_add_temporary (p, 2, "t1");
13465       orc_program_add_temporary (p, 2, "t2");
13466       orc_program_add_temporary (p, 1, "t3");
13467       orc_program_add_temporary (p, 1, "t4");
13468
13469       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T3, ORC_VAR_S2,
13470           ORC_VAR_D1, ORC_VAR_D1);
13471       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T4, ORC_VAR_S3,
13472           ORC_VAR_D1, ORC_VAR_D1);
13473       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4,
13474           ORC_VAR_D1);
13475       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_S4, ORC_VAR_S1,
13476           ORC_VAR_D1);
13477       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
13478           ORC_VAR_D1);
13479 #endif
13480
13481       orc_program_compile (p);
13482       c = orc_program_take_code (p);
13483       orc_program_free (p);
13484     }
13485     p_inited = TRUE;
13486     orc_once_mutex_unlock ();
13487   }
13488   ex->arrays[ORC_VAR_A2] = c;
13489   ex->program = 0;
13490
13491   ex->n = n;
13492   ex->arrays[ORC_VAR_D1] = d1;
13493   ex->arrays[ORC_VAR_S1] = (void *) s1;
13494   ex->arrays[ORC_VAR_S2] = (void *) s2;
13495   ex->arrays[ORC_VAR_S3] = (void *) s3;
13496   ex->arrays[ORC_VAR_S4] = (void *) s4;
13497
13498   func = c->exec;
13499   func (ex);
13500 }
13501 #endif
13502
13503
13504 /* video_convert_orc_putline_I420 */
13505 #ifdef DISABLE_ORC
13506 void
13507 video_convert_orc_putline_I420 (guint8 * ORC_RESTRICT d1,
13508     guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
13509     const guint8 * ORC_RESTRICT s1, int n)
13510 {
13511   int i;
13512   orc_union16 *ORC_RESTRICT ptr0;
13513   orc_int8 *ORC_RESTRICT ptr1;
13514   orc_int8 *ORC_RESTRICT ptr2;
13515   const orc_union64 *ORC_RESTRICT ptr4;
13516   orc_union64 var38;
13517   orc_union16 var39;
13518   orc_int8 var40;
13519   orc_int8 var41;
13520   orc_union32 var42;
13521   orc_union32 var43;
13522   orc_union16 var44;
13523   orc_union16 var45;
13524   orc_int8 var46;
13525   orc_int8 var47;
13526   orc_int8 var48;
13527   orc_int8 var49;
13528
13529   ptr0 = (orc_union16 *) d1;
13530   ptr1 = (orc_int8 *) d2;
13531   ptr2 = (orc_int8 *) d3;
13532   ptr4 = (orc_union64 *) s1;
13533
13534
13535   for (i = 0; i < n; i++) {
13536     /* 0: loadq */
13537     var38 = ptr4[i];
13538     /* 1: splitlw */
13539     {
13540       orc_union32 _src;
13541       _src.i = var38.x2[0];
13542       var42.x2[0] = _src.x2[1];
13543       var43.x2[0] = _src.x2[0];
13544     }
13545     {
13546       orc_union32 _src;
13547       _src.i = var38.x2[1];
13548       var42.x2[1] = _src.x2[1];
13549       var43.x2[1] = _src.x2[0];
13550     }
13551     /* 2: select1wb */
13552     {
13553       orc_union16 _src;
13554       _src.i = var43.x2[0];
13555       var39.x2[0] = _src.x2[1];
13556     }
13557     {
13558       orc_union16 _src;
13559       _src.i = var43.x2[1];
13560       var39.x2[1] = _src.x2[1];
13561     }
13562     /* 3: storew */
13563     ptr0[i] = var39;
13564     /* 4: splitwb */
13565     {
13566       orc_union16 _src;
13567       _src.i = var42.x2[0];
13568       var44.x2[0] = _src.x2[1];
13569       var45.x2[0] = _src.x2[0];
13570     }
13571     {
13572       orc_union16 _src;
13573       _src.i = var42.x2[1];
13574       var44.x2[1] = _src.x2[1];
13575       var45.x2[1] = _src.x2[0];
13576     }
13577     /* 5: splitwb */
13578     {
13579       orc_union16 _src;
13580       _src.i = var45.i;
13581       var46 = _src.x2[1];
13582       var47 = _src.x2[0];
13583     }
13584     /* 6: avgub */
13585     var40 = ((orc_uint8) var46 + (orc_uint8) var47 + 1) >> 1;
13586     /* 7: storeb */
13587     ptr1[i] = var40;
13588     /* 8: splitwb */
13589     {
13590       orc_union16 _src;
13591       _src.i = var44.i;
13592       var48 = _src.x2[1];
13593       var49 = _src.x2[0];
13594     }
13595     /* 9: avgub */
13596     var41 = ((orc_uint8) var48 + (orc_uint8) var49 + 1) >> 1;
13597     /* 10: storeb */
13598     ptr2[i] = var41;
13599   }
13600
13601 }
13602
13603 #else
13604 static void
13605 _backup_video_convert_orc_putline_I420 (OrcExecutor * ORC_RESTRICT ex)
13606 {
13607   int i;
13608   int n = ex->n;
13609   orc_union16 *ORC_RESTRICT ptr0;
13610   orc_int8 *ORC_RESTRICT ptr1;
13611   orc_int8 *ORC_RESTRICT ptr2;
13612   const orc_union64 *ORC_RESTRICT ptr4;
13613   orc_union64 var38;
13614   orc_union16 var39;
13615   orc_int8 var40;
13616   orc_int8 var41;
13617   orc_union32 var42;
13618   orc_union32 var43;
13619   orc_union16 var44;
13620   orc_union16 var45;
13621   orc_int8 var46;
13622   orc_int8 var47;
13623   orc_int8 var48;
13624   orc_int8 var49;
13625
13626   ptr0 = (orc_union16 *) ex->arrays[0];
13627   ptr1 = (orc_int8 *) ex->arrays[1];
13628   ptr2 = (orc_int8 *) ex->arrays[2];
13629   ptr4 = (orc_union64 *) ex->arrays[4];
13630
13631
13632   for (i = 0; i < n; i++) {
13633     /* 0: loadq */
13634     var38 = ptr4[i];
13635     /* 1: splitlw */
13636     {
13637       orc_union32 _src;
13638       _src.i = var38.x2[0];
13639       var42.x2[0] = _src.x2[1];
13640       var43.x2[0] = _src.x2[0];
13641     }
13642     {
13643       orc_union32 _src;
13644       _src.i = var38.x2[1];
13645       var42.x2[1] = _src.x2[1];
13646       var43.x2[1] = _src.x2[0];
13647     }
13648     /* 2: select1wb */
13649     {
13650       orc_union16 _src;
13651       _src.i = var43.x2[0];
13652       var39.x2[0] = _src.x2[1];
13653     }
13654     {
13655       orc_union16 _src;
13656       _src.i = var43.x2[1];
13657       var39.x2[1] = _src.x2[1];
13658     }
13659     /* 3: storew */
13660     ptr0[i] = var39;
13661     /* 4: splitwb */
13662     {
13663       orc_union16 _src;
13664       _src.i = var42.x2[0];
13665       var44.x2[0] = _src.x2[1];
13666       var45.x2[0] = _src.x2[0];
13667     }
13668     {
13669       orc_union16 _src;
13670       _src.i = var42.x2[1];
13671       var44.x2[1] = _src.x2[1];
13672       var45.x2[1] = _src.x2[0];
13673     }
13674     /* 5: splitwb */
13675     {
13676       orc_union16 _src;
13677       _src.i = var45.i;
13678       var46 = _src.x2[1];
13679       var47 = _src.x2[0];
13680     }
13681     /* 6: avgub */
13682     var40 = ((orc_uint8) var46 + (orc_uint8) var47 + 1) >> 1;
13683     /* 7: storeb */
13684     ptr1[i] = var40;
13685     /* 8: splitwb */
13686     {
13687       orc_union16 _src;
13688       _src.i = var44.i;
13689       var48 = _src.x2[1];
13690       var49 = _src.x2[0];
13691     }
13692     /* 9: avgub */
13693     var41 = ((orc_uint8) var48 + (orc_uint8) var49 + 1) >> 1;
13694     /* 10: storeb */
13695     ptr2[i] = var41;
13696   }
13697
13698 }
13699
13700 void
13701 video_convert_orc_putline_I420 (guint8 * ORC_RESTRICT d1,
13702     guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
13703     const guint8 * ORC_RESTRICT s1, int n)
13704 {
13705   OrcExecutor _ex, *ex = &_ex;
13706   static volatile int p_inited = 0;
13707   static OrcCode *c = 0;
13708   void (*func) (OrcExecutor *);
13709
13710   if (!p_inited) {
13711     orc_once_mutex_lock ();
13712     if (!p_inited) {
13713       OrcProgram *p;
13714
13715 #if 1
13716       static const orc_uint8 bc[] = {
13717         1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
13718         95, 111, 114, 99, 95, 112, 117, 116, 108, 105, 110, 101, 95, 73, 52, 50,
13719         48, 11, 2, 2, 11, 1, 1, 11, 1, 1, 12, 8, 8, 20, 4, 20,
13720         4, 20, 2, 20, 2, 20, 1, 20, 1, 21, 1, 198, 33, 32, 4, 21,
13721         1, 189, 0, 32, 21, 1, 199, 35, 34, 33, 199, 36, 37, 34, 39, 1,
13722         36, 37, 199, 36, 37, 35, 39, 2, 36, 37, 2, 0,
13723       };
13724       p = orc_program_new_from_static_bytecode (bc);
13725       orc_program_set_backup_function (p,
13726           _backup_video_convert_orc_putline_I420);
13727 #else
13728       p = orc_program_new ();
13729       orc_program_set_name (p, "video_convert_orc_putline_I420");
13730       orc_program_set_backup_function (p,
13731           _backup_video_convert_orc_putline_I420);
13732       orc_program_add_destination (p, 2, "d1");
13733       orc_program_add_destination (p, 1, "d2");
13734       orc_program_add_destination (p, 1, "d3");
13735       orc_program_add_source (p, 8, "s1");
13736       orc_program_add_temporary (p, 4, "t1");
13737       orc_program_add_temporary (p, 4, "t2");
13738       orc_program_add_temporary (p, 2, "t3");
13739       orc_program_add_temporary (p, 2, "t4");
13740       orc_program_add_temporary (p, 1, "t5");
13741       orc_program_add_temporary (p, 1, "t6");
13742
13743       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
13744           ORC_VAR_D1);
13745       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
13746           ORC_VAR_D1, ORC_VAR_D1);
13747       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T2,
13748           ORC_VAR_D1);
13749       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T5, ORC_VAR_T6, ORC_VAR_T3,
13750           ORC_VAR_D1);
13751       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D2, ORC_VAR_T5, ORC_VAR_T6,
13752           ORC_VAR_D1);
13753       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T5, ORC_VAR_T6, ORC_VAR_T4,
13754           ORC_VAR_D1);
13755       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D3, ORC_VAR_T5, ORC_VAR_T6,
13756           ORC_VAR_D1);
13757 #endif
13758
13759       orc_program_compile (p);
13760       c = orc_program_take_code (p);
13761       orc_program_free (p);
13762     }
13763     p_inited = TRUE;
13764     orc_once_mutex_unlock ();
13765   }
13766   ex->arrays[ORC_VAR_A2] = c;
13767   ex->program = 0;
13768
13769   ex->n = n;
13770   ex->arrays[ORC_VAR_D1] = d1;
13771   ex->arrays[ORC_VAR_D2] = d2;
13772   ex->arrays[ORC_VAR_D3] = d3;
13773   ex->arrays[ORC_VAR_S1] = (void *) s1;
13774
13775   func = c->exec;
13776   func (ex);
13777 }
13778 #endif
13779
13780
13781 /* video_convert_orc_putline_YUY2 */
13782 #ifdef DISABLE_ORC
13783 void
13784 video_convert_orc_putline_YUY2 (guint8 * ORC_RESTRICT d1,
13785     const guint8 * ORC_RESTRICT s1, int n)
13786 {
13787   int i;
13788   orc_union32 *ORC_RESTRICT ptr0;
13789   const orc_union64 *ORC_RESTRICT ptr4;
13790   orc_union64 var37;
13791   orc_union32 var38;
13792   orc_union32 var39;
13793   orc_union32 var40;
13794   orc_union16 var41;
13795   orc_union16 var42;
13796   orc_union16 var43;
13797   orc_union16 var44;
13798
13799   ptr0 = (orc_union32 *) d1;
13800   ptr4 = (orc_union64 *) s1;
13801
13802
13803   for (i = 0; i < n; i++) {
13804     /* 0: loadq */
13805     var37 = ptr4[i];
13806     /* 1: splitlw */
13807     {
13808       orc_union32 _src;
13809       _src.i = var37.x2[0];
13810       var39.x2[0] = _src.x2[1];
13811       var40.x2[0] = _src.x2[0];
13812     }
13813     {
13814       orc_union32 _src;
13815       _src.i = var37.x2[1];
13816       var39.x2[1] = _src.x2[1];
13817       var40.x2[1] = _src.x2[0];
13818     }
13819     /* 2: splitlw */
13820     {
13821       orc_union32 _src;
13822       _src.i = var39.i;
13823       var41.i = _src.x2[1];
13824       var42.i = _src.x2[0];
13825     }
13826     /* 3: avgub */
13827     var43.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
13828     var43.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
13829     /* 4: select1wb */
13830     {
13831       orc_union16 _src;
13832       _src.i = var40.x2[0];
13833       var44.x2[0] = _src.x2[1];
13834     }
13835     {
13836       orc_union16 _src;
13837       _src.i = var40.x2[1];
13838       var44.x2[1] = _src.x2[1];
13839     }
13840     /* 5: mergebw */
13841     {
13842       orc_union16 _dest;
13843       _dest.x2[0] = var44.x2[0];
13844       _dest.x2[1] = var43.x2[0];
13845       var38.x2[0] = _dest.i;
13846     }
13847     {
13848       orc_union16 _dest;
13849       _dest.x2[0] = var44.x2[1];
13850       _dest.x2[1] = var43.x2[1];
13851       var38.x2[1] = _dest.i;
13852     }
13853     /* 6: storel */
13854     ptr0[i] = var38;
13855   }
13856
13857 }
13858
13859 #else
13860 static void
13861 _backup_video_convert_orc_putline_YUY2 (OrcExecutor * ORC_RESTRICT ex)
13862 {
13863   int i;
13864   int n = ex->n;
13865   orc_union32 *ORC_RESTRICT ptr0;
13866   const orc_union64 *ORC_RESTRICT ptr4;
13867   orc_union64 var37;
13868   orc_union32 var38;
13869   orc_union32 var39;
13870   orc_union32 var40;
13871   orc_union16 var41;
13872   orc_union16 var42;
13873   orc_union16 var43;
13874   orc_union16 var44;
13875
13876   ptr0 = (orc_union32 *) ex->arrays[0];
13877   ptr4 = (orc_union64 *) ex->arrays[4];
13878
13879
13880   for (i = 0; i < n; i++) {
13881     /* 0: loadq */
13882     var37 = ptr4[i];
13883     /* 1: splitlw */
13884     {
13885       orc_union32 _src;
13886       _src.i = var37.x2[0];
13887       var39.x2[0] = _src.x2[1];
13888       var40.x2[0] = _src.x2[0];
13889     }
13890     {
13891       orc_union32 _src;
13892       _src.i = var37.x2[1];
13893       var39.x2[1] = _src.x2[1];
13894       var40.x2[1] = _src.x2[0];
13895     }
13896     /* 2: splitlw */
13897     {
13898       orc_union32 _src;
13899       _src.i = var39.i;
13900       var41.i = _src.x2[1];
13901       var42.i = _src.x2[0];
13902     }
13903     /* 3: avgub */
13904     var43.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
13905     var43.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
13906     /* 4: select1wb */
13907     {
13908       orc_union16 _src;
13909       _src.i = var40.x2[0];
13910       var44.x2[0] = _src.x2[1];
13911     }
13912     {
13913       orc_union16 _src;
13914       _src.i = var40.x2[1];
13915       var44.x2[1] = _src.x2[1];
13916     }
13917     /* 5: mergebw */
13918     {
13919       orc_union16 _dest;
13920       _dest.x2[0] = var44.x2[0];
13921       _dest.x2[1] = var43.x2[0];
13922       var38.x2[0] = _dest.i;
13923     }
13924     {
13925       orc_union16 _dest;
13926       _dest.x2[0] = var44.x2[1];
13927       _dest.x2[1] = var43.x2[1];
13928       var38.x2[1] = _dest.i;
13929     }
13930     /* 6: storel */
13931     ptr0[i] = var38;
13932   }
13933
13934 }
13935
13936 void
13937 video_convert_orc_putline_YUY2 (guint8 * ORC_RESTRICT d1,
13938     const guint8 * ORC_RESTRICT s1, int n)
13939 {
13940   OrcExecutor _ex, *ex = &_ex;
13941   static volatile int p_inited = 0;
13942   static OrcCode *c = 0;
13943   void (*func) (OrcExecutor *);
13944
13945   if (!p_inited) {
13946     orc_once_mutex_lock ();
13947     if (!p_inited) {
13948       OrcProgram *p;
13949
13950 #if 1
13951       static const orc_uint8 bc[] = {
13952         1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
13953         95, 111, 114, 99, 95, 112, 117, 116, 108, 105, 110, 101, 95, 89, 85, 89,
13954         50, 11, 4, 4, 12, 8, 8, 20, 2, 20, 2, 20, 2, 20, 4, 20,
13955         4, 21, 1, 198, 36, 35, 4, 198, 33, 34, 36, 21, 1, 39, 33, 33,
13956         34, 21, 1, 189, 32, 35, 21, 1, 196, 0, 32, 33, 2, 0,
13957       };
13958       p = orc_program_new_from_static_bytecode (bc);
13959       orc_program_set_backup_function (p,
13960           _backup_video_convert_orc_putline_YUY2);
13961 #else
13962       p = orc_program_new ();
13963       orc_program_set_name (p, "video_convert_orc_putline_YUY2");
13964       orc_program_set_backup_function (p,
13965           _backup_video_convert_orc_putline_YUY2);
13966       orc_program_add_destination (p, 4, "d1");
13967       orc_program_add_source (p, 8, "s1");
13968       orc_program_add_temporary (p, 2, "t1");
13969       orc_program_add_temporary (p, 2, "t2");
13970       orc_program_add_temporary (p, 2, "t3");
13971       orc_program_add_temporary (p, 4, "t4");
13972       orc_program_add_temporary (p, 4, "t5");
13973
13974       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_S1,
13975           ORC_VAR_D1);
13976       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T5,
13977           ORC_VAR_D1);
13978       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3,
13979           ORC_VAR_D1);
13980       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T4,
13981           ORC_VAR_D1, ORC_VAR_D1);
13982       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
13983           ORC_VAR_D1);
13984 #endif
13985
13986       orc_program_compile (p);
13987       c = orc_program_take_code (p);
13988       orc_program_free (p);
13989     }
13990     p_inited = TRUE;
13991     orc_once_mutex_unlock ();
13992   }
13993   ex->arrays[ORC_VAR_A2] = c;
13994   ex->program = 0;
13995
13996   ex->n = n;
13997   ex->arrays[ORC_VAR_D1] = d1;
13998   ex->arrays[ORC_VAR_S1] = (void *) s1;
13999
14000   func = c->exec;
14001   func (ex);
14002 }
14003 #endif
14004
14005
14006 /* video_convert_orc_putline_YVYU */
14007 #ifdef DISABLE_ORC
14008 void
14009 video_convert_orc_putline_YVYU (guint8 * ORC_RESTRICT d1,
14010     const guint8 * ORC_RESTRICT s1, int n)
14011 {
14012   int i;
14013   orc_union32 *ORC_RESTRICT ptr0;
14014   const orc_union64 *ORC_RESTRICT ptr4;
14015   orc_union64 var37;
14016   orc_union32 var38;
14017   orc_union32 var39;
14018   orc_union32 var40;
14019   orc_union16 var41;
14020   orc_union16 var42;
14021   orc_union16 var43;
14022   orc_union16 var44;
14023   orc_union16 var45;
14024
14025   ptr0 = (orc_union32 *) d1;
14026   ptr4 = (orc_union64 *) s1;
14027
14028
14029   for (i = 0; i < n; i++) {
14030     /* 0: loadq */
14031     var37 = ptr4[i];
14032     /* 1: splitlw */
14033     {
14034       orc_union32 _src;
14035       _src.i = var37.x2[0];
14036       var39.x2[0] = _src.x2[1];
14037       var40.x2[0] = _src.x2[0];
14038     }
14039     {
14040       orc_union32 _src;
14041       _src.i = var37.x2[1];
14042       var39.x2[1] = _src.x2[1];
14043       var40.x2[1] = _src.x2[0];
14044     }
14045     /* 2: splitlw */
14046     {
14047       orc_union32 _src;
14048       _src.i = var39.i;
14049       var41.i = _src.x2[1];
14050       var42.i = _src.x2[0];
14051     }
14052     /* 3: avgub */
14053     var43.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
14054     var43.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
14055     /* 4: select1wb */
14056     {
14057       orc_union16 _src;
14058       _src.i = var40.x2[0];
14059       var44.x2[0] = _src.x2[1];
14060     }
14061     {
14062       orc_union16 _src;
14063       _src.i = var40.x2[1];
14064       var44.x2[1] = _src.x2[1];
14065     }
14066     /* 5: swapw */
14067     var45.i = ORC_SWAP_W (var43.i);
14068     /* 6: mergebw */
14069     {
14070       orc_union16 _dest;
14071       _dest.x2[0] = var44.x2[0];
14072       _dest.x2[1] = var45.x2[0];
14073       var38.x2[0] = _dest.i;
14074     }
14075     {
14076       orc_union16 _dest;
14077       _dest.x2[0] = var44.x2[1];
14078       _dest.x2[1] = var45.x2[1];
14079       var38.x2[1] = _dest.i;
14080     }
14081     /* 7: storel */
14082     ptr0[i] = var38;
14083   }
14084
14085 }
14086
14087 #else
14088 static void
14089 _backup_video_convert_orc_putline_YVYU (OrcExecutor * ORC_RESTRICT ex)
14090 {
14091   int i;
14092   int n = ex->n;
14093   orc_union32 *ORC_RESTRICT ptr0;
14094   const orc_union64 *ORC_RESTRICT ptr4;
14095   orc_union64 var37;
14096   orc_union32 var38;
14097   orc_union32 var39;
14098   orc_union32 var40;
14099   orc_union16 var41;
14100   orc_union16 var42;
14101   orc_union16 var43;
14102   orc_union16 var44;
14103   orc_union16 var45;
14104
14105   ptr0 = (orc_union32 *) ex->arrays[0];
14106   ptr4 = (orc_union64 *) ex->arrays[4];
14107
14108
14109   for (i = 0; i < n; i++) {
14110     /* 0: loadq */
14111     var37 = ptr4[i];
14112     /* 1: splitlw */
14113     {
14114       orc_union32 _src;
14115       _src.i = var37.x2[0];
14116       var39.x2[0] = _src.x2[1];
14117       var40.x2[0] = _src.x2[0];
14118     }
14119     {
14120       orc_union32 _src;
14121       _src.i = var37.x2[1];
14122       var39.x2[1] = _src.x2[1];
14123       var40.x2[1] = _src.x2[0];
14124     }
14125     /* 2: splitlw */
14126     {
14127       orc_union32 _src;
14128       _src.i = var39.i;
14129       var41.i = _src.x2[1];
14130       var42.i = _src.x2[0];
14131     }
14132     /* 3: avgub */
14133     var43.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
14134     var43.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
14135     /* 4: select1wb */
14136     {
14137       orc_union16 _src;
14138       _src.i = var40.x2[0];
14139       var44.x2[0] = _src.x2[1];
14140     }
14141     {
14142       orc_union16 _src;
14143       _src.i = var40.x2[1];
14144       var44.x2[1] = _src.x2[1];
14145     }
14146     /* 5: swapw */
14147     var45.i = ORC_SWAP_W (var43.i);
14148     /* 6: mergebw */
14149     {
14150       orc_union16 _dest;
14151       _dest.x2[0] = var44.x2[0];
14152       _dest.x2[1] = var45.x2[0];
14153       var38.x2[0] = _dest.i;
14154     }
14155     {
14156       orc_union16 _dest;
14157       _dest.x2[0] = var44.x2[1];
14158       _dest.x2[1] = var45.x2[1];
14159       var38.x2[1] = _dest.i;
14160     }
14161     /* 7: storel */
14162     ptr0[i] = var38;
14163   }
14164
14165 }
14166
14167 void
14168 video_convert_orc_putline_YVYU (guint8 * ORC_RESTRICT d1,
14169     const guint8 * ORC_RESTRICT s1, int n)
14170 {
14171   OrcExecutor _ex, *ex = &_ex;
14172   static volatile int p_inited = 0;
14173   static OrcCode *c = 0;
14174   void (*func) (OrcExecutor *);
14175
14176   if (!p_inited) {
14177     orc_once_mutex_lock ();
14178     if (!p_inited) {
14179       OrcProgram *p;
14180
14181 #if 1
14182       static const orc_uint8 bc[] = {
14183         1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
14184         95, 111, 114, 99, 95, 112, 117, 116, 108, 105, 110, 101, 95, 89, 86, 89,
14185         85, 11, 4, 4, 12, 8, 8, 20, 2, 20, 2, 20, 2, 20, 4, 20,
14186         4, 21, 1, 198, 36, 35, 4, 198, 33, 34, 36, 21, 1, 39, 33, 33,
14187         34, 21, 1, 189, 32, 35, 183, 33, 33, 21, 1, 196, 0, 32, 33, 2,
14188         0,
14189       };
14190       p = orc_program_new_from_static_bytecode (bc);
14191       orc_program_set_backup_function (p,
14192           _backup_video_convert_orc_putline_YVYU);
14193 #else
14194       p = orc_program_new ();
14195       orc_program_set_name (p, "video_convert_orc_putline_YVYU");
14196       orc_program_set_backup_function (p,
14197           _backup_video_convert_orc_putline_YVYU);
14198       orc_program_add_destination (p, 4, "d1");
14199       orc_program_add_source (p, 8, "s1");
14200       orc_program_add_temporary (p, 2, "t1");
14201       orc_program_add_temporary (p, 2, "t2");
14202       orc_program_add_temporary (p, 2, "t3");
14203       orc_program_add_temporary (p, 4, "t4");
14204       orc_program_add_temporary (p, 4, "t5");
14205
14206       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_S1,
14207           ORC_VAR_D1);
14208       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T5,
14209           ORC_VAR_D1);
14210       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3,
14211           ORC_VAR_D1);
14212       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T4,
14213           ORC_VAR_D1, ORC_VAR_D1);
14214       orc_program_append_2 (p, "swapw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1,
14215           ORC_VAR_D1);
14216       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
14217           ORC_VAR_D1);
14218 #endif
14219
14220       orc_program_compile (p);
14221       c = orc_program_take_code (p);
14222       orc_program_free (p);
14223     }
14224     p_inited = TRUE;
14225     orc_once_mutex_unlock ();
14226   }
14227   ex->arrays[ORC_VAR_A2] = c;
14228   ex->program = 0;
14229
14230   ex->n = n;
14231   ex->arrays[ORC_VAR_D1] = d1;
14232   ex->arrays[ORC_VAR_S1] = (void *) s1;
14233
14234   func = c->exec;
14235   func (ex);
14236 }
14237 #endif
14238
14239
14240 /* video_convert_orc_putline_UYVY */
14241 #ifdef DISABLE_ORC
14242 void
14243 video_convert_orc_putline_UYVY (guint8 * ORC_RESTRICT d1,
14244     const guint8 * ORC_RESTRICT s1, int n)
14245 {
14246   int i;
14247   orc_union32 *ORC_RESTRICT ptr0;
14248   const orc_union64 *ORC_RESTRICT ptr4;
14249   orc_union64 var37;
14250   orc_union32 var38;
14251   orc_union32 var39;
14252   orc_union32 var40;
14253   orc_union16 var41;
14254   orc_union16 var42;
14255   orc_union16 var43;
14256   orc_union16 var44;
14257
14258   ptr0 = (orc_union32 *) d1;
14259   ptr4 = (orc_union64 *) s1;
14260
14261
14262   for (i = 0; i < n; i++) {
14263     /* 0: loadq */
14264     var37 = ptr4[i];
14265     /* 1: splitlw */
14266     {
14267       orc_union32 _src;
14268       _src.i = var37.x2[0];
14269       var39.x2[0] = _src.x2[1];
14270       var40.x2[0] = _src.x2[0];
14271     }
14272     {
14273       orc_union32 _src;
14274       _src.i = var37.x2[1];
14275       var39.x2[1] = _src.x2[1];
14276       var40.x2[1] = _src.x2[0];
14277     }
14278     /* 2: splitlw */
14279     {
14280       orc_union32 _src;
14281       _src.i = var39.i;
14282       var41.i = _src.x2[1];
14283       var42.i = _src.x2[0];
14284     }
14285     /* 3: avgub */
14286     var43.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
14287     var43.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
14288     /* 4: select1wb */
14289     {
14290       orc_union16 _src;
14291       _src.i = var40.x2[0];
14292       var44.x2[0] = _src.x2[1];
14293     }
14294     {
14295       orc_union16 _src;
14296       _src.i = var40.x2[1];
14297       var44.x2[1] = _src.x2[1];
14298     }
14299     /* 5: mergebw */
14300     {
14301       orc_union16 _dest;
14302       _dest.x2[0] = var43.x2[0];
14303       _dest.x2[1] = var44.x2[0];
14304       var38.x2[0] = _dest.i;
14305     }
14306     {
14307       orc_union16 _dest;
14308       _dest.x2[0] = var43.x2[1];
14309       _dest.x2[1] = var44.x2[1];
14310       var38.x2[1] = _dest.i;
14311     }
14312     /* 6: storel */
14313     ptr0[i] = var38;
14314   }
14315
14316 }
14317
14318 #else
14319 static void
14320 _backup_video_convert_orc_putline_UYVY (OrcExecutor * ORC_RESTRICT ex)
14321 {
14322   int i;
14323   int n = ex->n;
14324   orc_union32 *ORC_RESTRICT ptr0;
14325   const orc_union64 *ORC_RESTRICT ptr4;
14326   orc_union64 var37;
14327   orc_union32 var38;
14328   orc_union32 var39;
14329   orc_union32 var40;
14330   orc_union16 var41;
14331   orc_union16 var42;
14332   orc_union16 var43;
14333   orc_union16 var44;
14334
14335   ptr0 = (orc_union32 *) ex->arrays[0];
14336   ptr4 = (orc_union64 *) ex->arrays[4];
14337
14338
14339   for (i = 0; i < n; i++) {
14340     /* 0: loadq */
14341     var37 = ptr4[i];
14342     /* 1: splitlw */
14343     {
14344       orc_union32 _src;
14345       _src.i = var37.x2[0];
14346       var39.x2[0] = _src.x2[1];
14347       var40.x2[0] = _src.x2[0];
14348     }
14349     {
14350       orc_union32 _src;
14351       _src.i = var37.x2[1];
14352       var39.x2[1] = _src.x2[1];
14353       var40.x2[1] = _src.x2[0];
14354     }
14355     /* 2: splitlw */
14356     {
14357       orc_union32 _src;
14358       _src.i = var39.i;
14359       var41.i = _src.x2[1];
14360       var42.i = _src.x2[0];
14361     }
14362     /* 3: avgub */
14363     var43.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
14364     var43.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
14365     /* 4: select1wb */
14366     {
14367       orc_union16 _src;
14368       _src.i = var40.x2[0];
14369       var44.x2[0] = _src.x2[1];
14370     }
14371     {
14372       orc_union16 _src;
14373       _src.i = var40.x2[1];
14374       var44.x2[1] = _src.x2[1];
14375     }
14376     /* 5: mergebw */
14377     {
14378       orc_union16 _dest;
14379       _dest.x2[0] = var43.x2[0];
14380       _dest.x2[1] = var44.x2[0];
14381       var38.x2[0] = _dest.i;
14382     }
14383     {
14384       orc_union16 _dest;
14385       _dest.x2[0] = var43.x2[1];
14386       _dest.x2[1] = var44.x2[1];
14387       var38.x2[1] = _dest.i;
14388     }
14389     /* 6: storel */
14390     ptr0[i] = var38;
14391   }
14392
14393 }
14394
14395 void
14396 video_convert_orc_putline_UYVY (guint8 * ORC_RESTRICT d1,
14397     const guint8 * ORC_RESTRICT s1, int n)
14398 {
14399   OrcExecutor _ex, *ex = &_ex;
14400   static volatile int p_inited = 0;
14401   static OrcCode *c = 0;
14402   void (*func) (OrcExecutor *);
14403
14404   if (!p_inited) {
14405     orc_once_mutex_lock ();
14406     if (!p_inited) {
14407       OrcProgram *p;
14408
14409 #if 1
14410       static const orc_uint8 bc[] = {
14411         1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
14412         95, 111, 114, 99, 95, 112, 117, 116, 108, 105, 110, 101, 95, 85, 89, 86,
14413         89, 11, 4, 4, 12, 8, 8, 20, 2, 20, 2, 20, 2, 20, 4, 20,
14414         4, 21, 1, 198, 36, 35, 4, 198, 33, 34, 36, 21, 1, 39, 33, 33,
14415         34, 21, 1, 189, 32, 35, 21, 1, 196, 0, 33, 32, 2, 0,
14416       };
14417       p = orc_program_new_from_static_bytecode (bc);
14418       orc_program_set_backup_function (p,
14419           _backup_video_convert_orc_putline_UYVY);
14420 #else
14421       p = orc_program_new ();
14422       orc_program_set_name (p, "video_convert_orc_putline_UYVY");
14423       orc_program_set_backup_function (p,
14424           _backup_video_convert_orc_putline_UYVY);
14425       orc_program_add_destination (p, 4, "d1");
14426       orc_program_add_source (p, 8, "s1");
14427       orc_program_add_temporary (p, 2, "t1");
14428       orc_program_add_temporary (p, 2, "t2");
14429       orc_program_add_temporary (p, 2, "t3");
14430       orc_program_add_temporary (p, 4, "t4");
14431       orc_program_add_temporary (p, 4, "t5");
14432
14433       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_S1,
14434           ORC_VAR_D1);
14435       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T5,
14436           ORC_VAR_D1);
14437       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3,
14438           ORC_VAR_D1);
14439       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T4,
14440           ORC_VAR_D1, ORC_VAR_D1);
14441       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
14442           ORC_VAR_D1);
14443 #endif
14444
14445       orc_program_compile (p);
14446       c = orc_program_take_code (p);
14447       orc_program_free (p);
14448     }
14449     p_inited = TRUE;
14450     orc_once_mutex_unlock ();
14451   }
14452   ex->arrays[ORC_VAR_A2] = c;
14453   ex->program = 0;
14454
14455   ex->n = n;
14456   ex->arrays[ORC_VAR_D1] = d1;
14457   ex->arrays[ORC_VAR_S1] = (void *) s1;
14458
14459   func = c->exec;
14460   func (ex);
14461 }
14462 #endif
14463
14464
14465 /* video_convert_orc_putline_Y42B */
14466 #ifdef DISABLE_ORC
14467 void
14468 video_convert_orc_putline_Y42B (guint8 * ORC_RESTRICT d1,
14469     guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
14470     const guint8 * ORC_RESTRICT s1, int n)
14471 {
14472   int i;
14473   orc_union16 *ORC_RESTRICT ptr0;
14474   orc_int8 *ORC_RESTRICT ptr1;
14475   orc_int8 *ORC_RESTRICT ptr2;
14476   const orc_union64 *ORC_RESTRICT ptr4;
14477   orc_union64 var36;
14478   orc_int8 var37;
14479   orc_int8 var38;
14480   orc_union16 var39;
14481   orc_union32 var40;
14482   orc_union32 var41;
14483   orc_union16 var42;
14484   orc_union16 var43;
14485   orc_union16 var44;
14486
14487   ptr0 = (orc_union16 *) d1;
14488   ptr1 = (orc_int8 *) d2;
14489   ptr2 = (orc_int8 *) d3;
14490   ptr4 = (orc_union64 *) s1;
14491
14492
14493   for (i = 0; i < n; i++) {
14494     /* 0: loadq */
14495     var36 = ptr4[i];
14496     /* 1: splitlw */
14497     {
14498       orc_union32 _src;
14499       _src.i = var36.x2[0];
14500       var40.x2[0] = _src.x2[1];
14501       var41.x2[0] = _src.x2[0];
14502     }
14503     {
14504       orc_union32 _src;
14505       _src.i = var36.x2[1];
14506       var40.x2[1] = _src.x2[1];
14507       var41.x2[1] = _src.x2[0];
14508     }
14509     /* 2: splitlw */
14510     {
14511       orc_union32 _src;
14512       _src.i = var40.i;
14513       var42.i = _src.x2[1];
14514       var43.i = _src.x2[0];
14515     }
14516     /* 3: avgub */
14517     var44.x2[0] = ((orc_uint8) var42.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1;
14518     var44.x2[1] = ((orc_uint8) var42.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1;
14519     /* 4: splitwb */
14520     {
14521       orc_union16 _src;
14522       _src.i = var44.i;
14523       var37 = _src.x2[1];
14524       var38 = _src.x2[0];
14525     }
14526     /* 5: storeb */
14527     ptr2[i] = var37;
14528     /* 6: storeb */
14529     ptr1[i] = var38;
14530     /* 7: select1wb */
14531     {
14532       orc_union16 _src;
14533       _src.i = var41.x2[0];
14534       var39.x2[0] = _src.x2[1];
14535     }
14536     {
14537       orc_union16 _src;
14538       _src.i = var41.x2[1];
14539       var39.x2[1] = _src.x2[1];
14540     }
14541     /* 8: storew */
14542     ptr0[i] = var39;
14543   }
14544
14545 }
14546
14547 #else
14548 static void
14549 _backup_video_convert_orc_putline_Y42B (OrcExecutor * ORC_RESTRICT ex)
14550 {
14551   int i;
14552   int n = ex->n;
14553   orc_union16 *ORC_RESTRICT ptr0;
14554   orc_int8 *ORC_RESTRICT ptr1;
14555   orc_int8 *ORC_RESTRICT ptr2;
14556   const orc_union64 *ORC_RESTRICT ptr4;
14557   orc_union64 var36;
14558   orc_int8 var37;
14559   orc_int8 var38;
14560   orc_union16 var39;
14561   orc_union32 var40;
14562   orc_union32 var41;
14563   orc_union16 var42;
14564   orc_union16 var43;
14565   orc_union16 var44;
14566
14567   ptr0 = (orc_union16 *) ex->arrays[0];
14568   ptr1 = (orc_int8 *) ex->arrays[1];
14569   ptr2 = (orc_int8 *) ex->arrays[2];
14570   ptr4 = (orc_union64 *) ex->arrays[4];
14571
14572
14573   for (i = 0; i < n; i++) {
14574     /* 0: loadq */
14575     var36 = ptr4[i];
14576     /* 1: splitlw */
14577     {
14578       orc_union32 _src;
14579       _src.i = var36.x2[0];
14580       var40.x2[0] = _src.x2[1];
14581       var41.x2[0] = _src.x2[0];
14582     }
14583     {
14584       orc_union32 _src;
14585       _src.i = var36.x2[1];
14586       var40.x2[1] = _src.x2[1];
14587       var41.x2[1] = _src.x2[0];
14588     }
14589     /* 2: splitlw */
14590     {
14591       orc_union32 _src;
14592       _src.i = var40.i;
14593       var42.i = _src.x2[1];
14594       var43.i = _src.x2[0];
14595     }
14596     /* 3: avgub */
14597     var44.x2[0] = ((orc_uint8) var42.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1;
14598     var44.x2[1] = ((orc_uint8) var42.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1;
14599     /* 4: splitwb */
14600     {
14601       orc_union16 _src;
14602       _src.i = var44.i;
14603       var37 = _src.x2[1];
14604       var38 = _src.x2[0];
14605     }
14606     /* 5: storeb */
14607     ptr2[i] = var37;
14608     /* 6: storeb */
14609     ptr1[i] = var38;
14610     /* 7: select1wb */
14611     {
14612       orc_union16 _src;
14613       _src.i = var41.x2[0];
14614       var39.x2[0] = _src.x2[1];
14615     }
14616     {
14617       orc_union16 _src;
14618       _src.i = var41.x2[1];
14619       var39.x2[1] = _src.x2[1];
14620     }
14621     /* 8: storew */
14622     ptr0[i] = var39;
14623   }
14624
14625 }
14626
14627 void
14628 video_convert_orc_putline_Y42B (guint8 * ORC_RESTRICT d1,
14629     guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
14630     const guint8 * ORC_RESTRICT s1, int n)
14631 {
14632   OrcExecutor _ex, *ex = &_ex;
14633   static volatile int p_inited = 0;
14634   static OrcCode *c = 0;
14635   void (*func) (OrcExecutor *);
14636
14637   if (!p_inited) {
14638     orc_once_mutex_lock ();
14639     if (!p_inited) {
14640       OrcProgram *p;
14641
14642 #if 1
14643       static const orc_uint8 bc[] = {
14644         1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
14645         95, 111, 114, 99, 95, 112, 117, 116, 108, 105, 110, 101, 95, 89, 52, 50,
14646         66, 11, 2, 2, 11, 1, 1, 11, 1, 1, 12, 8, 8, 20, 4, 20,
14647         4, 20, 2, 20, 2, 21, 1, 198, 33, 32, 4, 198, 34, 35, 33, 21,
14648         1, 39, 34, 34, 35, 199, 2, 1, 34, 21, 1, 189, 0, 32, 2, 0,
14649
14650       };
14651       p = orc_program_new_from_static_bytecode (bc);
14652       orc_program_set_backup_function (p,
14653           _backup_video_convert_orc_putline_Y42B);
14654 #else
14655       p = orc_program_new ();
14656       orc_program_set_name (p, "video_convert_orc_putline_Y42B");
14657       orc_program_set_backup_function (p,
14658           _backup_video_convert_orc_putline_Y42B);
14659       orc_program_add_destination (p, 2, "d1");
14660       orc_program_add_destination (p, 1, "d2");
14661       orc_program_add_destination (p, 1, "d3");
14662       orc_program_add_source (p, 8, "s1");
14663       orc_program_add_temporary (p, 4, "t1");
14664       orc_program_add_temporary (p, 4, "t2");
14665       orc_program_add_temporary (p, 2, "t3");
14666       orc_program_add_temporary (p, 2, "t4");
14667
14668       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
14669           ORC_VAR_D1);
14670       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2,
14671           ORC_VAR_D1);
14672       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4,
14673           ORC_VAR_D1);
14674       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T3,
14675           ORC_VAR_D1);
14676       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
14677           ORC_VAR_D1, ORC_VAR_D1);
14678 #endif
14679
14680       orc_program_compile (p);
14681       c = orc_program_take_code (p);
14682       orc_program_free (p);
14683     }
14684     p_inited = TRUE;
14685     orc_once_mutex_unlock ();
14686   }
14687   ex->arrays[ORC_VAR_A2] = c;
14688   ex->program = 0;
14689
14690   ex->n = n;
14691   ex->arrays[ORC_VAR_D1] = d1;
14692   ex->arrays[ORC_VAR_D2] = d2;
14693   ex->arrays[ORC_VAR_D3] = d3;
14694   ex->arrays[ORC_VAR_S1] = (void *) s1;
14695
14696   func = c->exec;
14697   func (ex);
14698 }
14699 #endif
14700
14701
14702 /* video_convert_orc_putline_Y444 */
14703 #ifdef DISABLE_ORC
14704 void
14705 video_convert_orc_putline_Y444 (guint8 * ORC_RESTRICT d1,
14706     guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
14707     const guint8 * ORC_RESTRICT s1, int n)
14708 {
14709   int i;
14710   orc_int8 *ORC_RESTRICT ptr0;
14711   orc_int8 *ORC_RESTRICT ptr1;
14712   orc_int8 *ORC_RESTRICT ptr2;
14713   const orc_union32 *ORC_RESTRICT ptr4;
14714   orc_union32 var34;
14715   orc_int8 var35;
14716   orc_int8 var36;
14717   orc_int8 var37;
14718   orc_union16 var38;
14719   orc_union16 var39;
14720
14721   ptr0 = (orc_int8 *) d1;
14722   ptr1 = (orc_int8 *) d2;
14723   ptr2 = (orc_int8 *) d3;
14724   ptr4 = (orc_union32 *) s1;
14725
14726
14727   for (i = 0; i < n; i++) {
14728     /* 0: loadl */
14729     var34 = ptr4[i];
14730     /* 1: splitlw */
14731     {
14732       orc_union32 _src;
14733       _src.i = var34.i;
14734       var38.i = _src.x2[1];
14735       var39.i = _src.x2[0];
14736     }
14737     /* 2: splitwb */
14738     {
14739       orc_union16 _src;
14740       _src.i = var38.i;
14741       var35 = _src.x2[1];
14742       var36 = _src.x2[0];
14743     }
14744     /* 3: storeb */
14745     ptr2[i] = var35;
14746     /* 4: storeb */
14747     ptr1[i] = var36;
14748     /* 5: select1wb */
14749     {
14750       orc_union16 _src;
14751       _src.i = var39.i;
14752       var37 = _src.x2[1];
14753     }
14754     /* 6: storeb */
14755     ptr0[i] = var37;
14756   }
14757
14758 }
14759
14760 #else
14761 static void
14762 _backup_video_convert_orc_putline_Y444 (OrcExecutor * ORC_RESTRICT ex)
14763 {
14764   int i;
14765   int n = ex->n;
14766   orc_int8 *ORC_RESTRICT ptr0;
14767   orc_int8 *ORC_RESTRICT ptr1;
14768   orc_int8 *ORC_RESTRICT ptr2;
14769   const orc_union32 *ORC_RESTRICT ptr4;
14770   orc_union32 var34;
14771   orc_int8 var35;
14772   orc_int8 var36;
14773   orc_int8 var37;
14774   orc_union16 var38;
14775   orc_union16 var39;
14776
14777   ptr0 = (orc_int8 *) ex->arrays[0];
14778   ptr1 = (orc_int8 *) ex->arrays[1];
14779   ptr2 = (orc_int8 *) ex->arrays[2];
14780   ptr4 = (orc_union32 *) ex->arrays[4];
14781
14782
14783   for (i = 0; i < n; i++) {
14784     /* 0: loadl */
14785     var34 = ptr4[i];
14786     /* 1: splitlw */
14787     {
14788       orc_union32 _src;
14789       _src.i = var34.i;
14790       var38.i = _src.x2[1];
14791       var39.i = _src.x2[0];
14792     }
14793     /* 2: splitwb */
14794     {
14795       orc_union16 _src;
14796       _src.i = var38.i;
14797       var35 = _src.x2[1];
14798       var36 = _src.x2[0];
14799     }
14800     /* 3: storeb */
14801     ptr2[i] = var35;
14802     /* 4: storeb */
14803     ptr1[i] = var36;
14804     /* 5: select1wb */
14805     {
14806       orc_union16 _src;
14807       _src.i = var39.i;
14808       var37 = _src.x2[1];
14809     }
14810     /* 6: storeb */
14811     ptr0[i] = var37;
14812   }
14813
14814 }
14815
14816 void
14817 video_convert_orc_putline_Y444 (guint8 * ORC_RESTRICT d1,
14818     guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
14819     const guint8 * ORC_RESTRICT s1, int n)
14820 {
14821   OrcExecutor _ex, *ex = &_ex;
14822   static volatile int p_inited = 0;
14823   static OrcCode *c = 0;
14824   void (*func) (OrcExecutor *);
14825
14826   if (!p_inited) {
14827     orc_once_mutex_lock ();
14828     if (!p_inited) {
14829       OrcProgram *p;
14830
14831 #if 1
14832       static const orc_uint8 bc[] = {
14833         1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
14834         95, 111, 114, 99, 95, 112, 117, 116, 108, 105, 110, 101, 95, 89, 52, 52,
14835         52, 11, 1, 1, 11, 1, 1, 11, 1, 1, 12, 4, 4, 20, 2, 20,
14836         2, 198, 33, 32, 4, 199, 2, 1, 33, 189, 0, 32, 2, 0,
14837       };
14838       p = orc_program_new_from_static_bytecode (bc);
14839       orc_program_set_backup_function (p,
14840           _backup_video_convert_orc_putline_Y444);
14841 #else
14842       p = orc_program_new ();
14843       orc_program_set_name (p, "video_convert_orc_putline_Y444");
14844       orc_program_set_backup_function (p,
14845           _backup_video_convert_orc_putline_Y444);
14846       orc_program_add_destination (p, 1, "d1");
14847       orc_program_add_destination (p, 1, "d2");
14848       orc_program_add_destination (p, 1, "d3");
14849       orc_program_add_source (p, 4, "s1");
14850       orc_program_add_temporary (p, 2, "t1");
14851       orc_program_add_temporary (p, 2, "t2");
14852
14853       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
14854           ORC_VAR_D1);
14855       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T2,
14856           ORC_VAR_D1);
14857       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1,
14858           ORC_VAR_D1, ORC_VAR_D1);
14859 #endif
14860
14861       orc_program_compile (p);
14862       c = orc_program_take_code (p);
14863       orc_program_free (p);
14864     }
14865     p_inited = TRUE;
14866     orc_once_mutex_unlock ();
14867   }
14868   ex->arrays[ORC_VAR_A2] = c;
14869   ex->program = 0;
14870
14871   ex->n = n;
14872   ex->arrays[ORC_VAR_D1] = d1;
14873   ex->arrays[ORC_VAR_D2] = d2;
14874   ex->arrays[ORC_VAR_D3] = d3;
14875   ex->arrays[ORC_VAR_S1] = (void *) s1;
14876
14877   func = c->exec;
14878   func (ex);
14879 }
14880 #endif
14881
14882
14883 /* video_convert_orc_putline_Y800 */
14884 #ifdef DISABLE_ORC
14885 void
14886 video_convert_orc_putline_Y800 (guint8 * ORC_RESTRICT d1,
14887     const guint8 * ORC_RESTRICT s1, int n)
14888 {
14889   int i;
14890   orc_int8 *ORC_RESTRICT ptr0;
14891   const orc_union32 *ORC_RESTRICT ptr4;
14892   orc_union32 var33;
14893   orc_int8 var34;
14894   orc_union16 var35;
14895
14896   ptr0 = (orc_int8 *) d1;
14897   ptr4 = (orc_union32 *) s1;
14898
14899
14900   for (i = 0; i < n; i++) {
14901     /* 0: loadl */
14902     var33 = ptr4[i];
14903     /* 1: select0lw */
14904     {
14905       orc_union32 _src;
14906       _src.i = var33.i;
14907       var35.i = _src.x2[0];
14908     }
14909     /* 2: select1wb */
14910     {
14911       orc_union16 _src;
14912       _src.i = var35.i;
14913       var34 = _src.x2[1];
14914     }
14915     /* 3: storeb */
14916     ptr0[i] = var34;
14917   }
14918
14919 }
14920
14921 #else
14922 static void
14923 _backup_video_convert_orc_putline_Y800 (OrcExecutor * ORC_RESTRICT ex)
14924 {
14925   int i;
14926   int n = ex->n;
14927   orc_int8 *ORC_RESTRICT ptr0;
14928   const orc_union32 *ORC_RESTRICT ptr4;
14929   orc_union32 var33;
14930   orc_int8 var34;
14931   orc_union16 var35;
14932
14933   ptr0 = (orc_int8 *) ex->arrays[0];
14934   ptr4 = (orc_union32 *) ex->arrays[4];
14935
14936
14937   for (i = 0; i < n; i++) {
14938     /* 0: loadl */
14939     var33 = ptr4[i];
14940     /* 1: select0lw */
14941     {
14942       orc_union32 _src;
14943       _src.i = var33.i;
14944       var35.i = _src.x2[0];
14945     }
14946     /* 2: select1wb */
14947     {
14948       orc_union16 _src;
14949       _src.i = var35.i;
14950       var34 = _src.x2[1];
14951     }
14952     /* 3: storeb */
14953     ptr0[i] = var34;
14954   }
14955
14956 }
14957
14958 void
14959 video_convert_orc_putline_Y800 (guint8 * ORC_RESTRICT d1,
14960     const guint8 * ORC_RESTRICT s1, int n)
14961 {
14962   OrcExecutor _ex, *ex = &_ex;
14963   static volatile int p_inited = 0;
14964   static OrcCode *c = 0;
14965   void (*func) (OrcExecutor *);
14966
14967   if (!p_inited) {
14968     orc_once_mutex_lock ();
14969     if (!p_inited) {
14970       OrcProgram *p;
14971
14972 #if 1
14973       static const orc_uint8 bc[] = {
14974         1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
14975         95, 111, 114, 99, 95, 112, 117, 116, 108, 105, 110, 101, 95, 89, 56, 48,
14976         48, 11, 1, 1, 12, 4, 4, 20, 2, 190, 32, 4, 189, 0, 32, 2,
14977         0,
14978       };
14979       p = orc_program_new_from_static_bytecode (bc);
14980       orc_program_set_backup_function (p,
14981           _backup_video_convert_orc_putline_Y800);
14982 #else
14983       p = orc_program_new ();
14984       orc_program_set_name (p, "video_convert_orc_putline_Y800");
14985       orc_program_set_backup_function (p,
14986           _backup_video_convert_orc_putline_Y800);
14987       orc_program_add_destination (p, 1, "d1");
14988       orc_program_add_source (p, 4, "s1");
14989       orc_program_add_temporary (p, 2, "t1");
14990
14991       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_S1,
14992           ORC_VAR_D1, ORC_VAR_D1);
14993       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1,
14994           ORC_VAR_D1, ORC_VAR_D1);
14995 #endif
14996
14997       orc_program_compile (p);
14998       c = orc_program_take_code (p);
14999       orc_program_free (p);
15000     }
15001     p_inited = TRUE;
15002     orc_once_mutex_unlock ();
15003   }
15004   ex->arrays[ORC_VAR_A2] = c;
15005   ex->program = 0;
15006
15007   ex->n = n;
15008   ex->arrays[ORC_VAR_D1] = d1;
15009   ex->arrays[ORC_VAR_S1] = (void *) s1;
15010
15011   func = c->exec;
15012   func (ex);
15013 }
15014 #endif
15015
15016
15017 /* video_convert_orc_putline_Y16 */
15018 #ifdef DISABLE_ORC
15019 void
15020 video_convert_orc_putline_Y16 (guint8 * ORC_RESTRICT d1,
15021     const guint8 * ORC_RESTRICT s1, int n)
15022 {
15023   int i;
15024   orc_union16 *ORC_RESTRICT ptr0;
15025   const orc_union32 *ORC_RESTRICT ptr4;
15026   orc_union32 var34;
15027   orc_union16 var35;
15028   orc_union16 var36;
15029   orc_int8 var37;
15030   orc_union16 var38;
15031
15032   ptr0 = (orc_union16 *) d1;
15033   ptr4 = (orc_union32 *) s1;
15034
15035
15036   for (i = 0; i < n; i++) {
15037     /* 0: loadl */
15038     var34 = ptr4[i];
15039     /* 1: select0lw */
15040     {
15041       orc_union32 _src;
15042       _src.i = var34.i;
15043       var36.i = _src.x2[0];
15044     }
15045     /* 2: select1wb */
15046     {
15047       orc_union16 _src;
15048       _src.i = var36.i;
15049       var37 = _src.x2[1];
15050     }
15051     /* 3: convubw */
15052     var38.i = (orc_uint8) var37;
15053     /* 4: shlw */
15054     var35.i = var38.i << 8;
15055     /* 5: storew */
15056     ptr0[i] = var35;
15057   }
15058
15059 }
15060
15061 #else
15062 static void
15063 _backup_video_convert_orc_putline_Y16 (OrcExecutor * ORC_RESTRICT ex)
15064 {
15065   int i;
15066   int n = ex->n;
15067   orc_union16 *ORC_RESTRICT ptr0;
15068   const orc_union32 *ORC_RESTRICT ptr4;
15069   orc_union32 var34;
15070   orc_union16 var35;
15071   orc_union16 var36;
15072   orc_int8 var37;
15073   orc_union16 var38;
15074
15075   ptr0 = (orc_union16 *) ex->arrays[0];
15076   ptr4 = (orc_union32 *) ex->arrays[4];
15077
15078
15079   for (i = 0; i < n; i++) {
15080     /* 0: loadl */
15081     var34 = ptr4[i];
15082     /* 1: select0lw */
15083     {
15084       orc_union32 _src;
15085       _src.i = var34.i;
15086       var36.i = _src.x2[0];
15087     }
15088     /* 2: select1wb */
15089     {
15090       orc_union16 _src;
15091       _src.i = var36.i;
15092       var37 = _src.x2[1];
15093     }
15094     /* 3: convubw */
15095     var38.i = (orc_uint8) var37;
15096     /* 4: shlw */
15097     var35.i = var38.i << 8;
15098     /* 5: storew */
15099     ptr0[i] = var35;
15100   }
15101
15102 }
15103
15104 void
15105 video_convert_orc_putline_Y16 (guint8 * ORC_RESTRICT d1,
15106     const guint8 * ORC_RESTRICT s1, int n)
15107 {
15108   OrcExecutor _ex, *ex = &_ex;
15109   static volatile int p_inited = 0;
15110   static OrcCode *c = 0;
15111   void (*func) (OrcExecutor *);
15112
15113   if (!p_inited) {
15114     orc_once_mutex_lock ();
15115     if (!p_inited) {
15116       OrcProgram *p;
15117
15118 #if 1
15119       static const orc_uint8 bc[] = {
15120         1, 9, 29, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
15121         95, 111, 114, 99, 95, 112, 117, 116, 108, 105, 110, 101, 95, 89, 49, 54,
15122         11, 2, 2, 12, 4, 4, 14, 4, 8, 0, 0, 0, 20, 2, 20, 1,
15123         190, 32, 4, 189, 33, 32, 150, 32, 33, 93, 0, 32, 16, 2, 0,
15124       };
15125       p = orc_program_new_from_static_bytecode (bc);
15126       orc_program_set_backup_function (p,
15127           _backup_video_convert_orc_putline_Y16);
15128 #else
15129       p = orc_program_new ();
15130       orc_program_set_name (p, "video_convert_orc_putline_Y16");
15131       orc_program_set_backup_function (p,
15132           _backup_video_convert_orc_putline_Y16);
15133       orc_program_add_destination (p, 2, "d1");
15134       orc_program_add_source (p, 4, "s1");
15135       orc_program_add_constant (p, 4, 0x00000008, "c1");
15136       orc_program_add_temporary (p, 2, "t1");
15137       orc_program_add_temporary (p, 1, "t2");
15138
15139       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_S1,
15140           ORC_VAR_D1, ORC_VAR_D1);
15141       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T2, ORC_VAR_T1,
15142           ORC_VAR_D1, ORC_VAR_D1);
15143       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1,
15144           ORC_VAR_D1);
15145       orc_program_append_2 (p, "shlw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1,
15146           ORC_VAR_D1);
15147 #endif
15148
15149       orc_program_compile (p);
15150       c = orc_program_take_code (p);
15151       orc_program_free (p);
15152     }
15153     p_inited = TRUE;
15154     orc_once_mutex_unlock ();
15155   }
15156   ex->arrays[ORC_VAR_A2] = c;
15157   ex->program = 0;
15158
15159   ex->n = n;
15160   ex->arrays[ORC_VAR_D1] = d1;
15161   ex->arrays[ORC_VAR_S1] = (void *) s1;
15162
15163   func = c->exec;
15164   func (ex);
15165 }
15166 #endif
15167
15168
15169 /* video_convert_orc_putline_BGRA */
15170 #ifdef DISABLE_ORC
15171 void
15172 video_convert_orc_putline_BGRA (guint8 * ORC_RESTRICT d1,
15173     const guint8 * ORC_RESTRICT s1, int n)
15174 {
15175   int i;
15176   orc_union32 *ORC_RESTRICT ptr0;
15177   const orc_union32 *ORC_RESTRICT ptr4;
15178   orc_union32 var32;
15179   orc_union32 var33;
15180
15181   ptr0 = (orc_union32 *) d1;
15182   ptr4 = (orc_union32 *) s1;
15183
15184
15185   for (i = 0; i < n; i++) {
15186     /* 0: loadl */
15187     var32 = ptr4[i];
15188     /* 1: swapl */
15189     var33.i = ORC_SWAP_L (var32.i);
15190     /* 2: storel */
15191     ptr0[i] = var33;
15192   }
15193
15194 }
15195
15196 #else
15197 static void
15198 _backup_video_convert_orc_putline_BGRA (OrcExecutor * ORC_RESTRICT ex)
15199 {
15200   int i;
15201   int n = ex->n;
15202   orc_union32 *ORC_RESTRICT ptr0;
15203   const orc_union32 *ORC_RESTRICT ptr4;
15204   orc_union32 var32;
15205   orc_union32 var33;
15206
15207   ptr0 = (orc_union32 *) ex->arrays[0];
15208   ptr4 = (orc_union32 *) ex->arrays[4];
15209
15210
15211   for (i = 0; i < n; i++) {
15212     /* 0: loadl */
15213     var32 = ptr4[i];
15214     /* 1: swapl */
15215     var33.i = ORC_SWAP_L (var32.i);
15216     /* 2: storel */
15217     ptr0[i] = var33;
15218   }
15219
15220 }
15221
15222 void
15223 video_convert_orc_putline_BGRA (guint8 * ORC_RESTRICT d1,
15224     const guint8 * ORC_RESTRICT s1, int n)
15225 {
15226   OrcExecutor _ex, *ex = &_ex;
15227   static volatile int p_inited = 0;
15228   static OrcCode *c = 0;
15229   void (*func) (OrcExecutor *);
15230
15231   if (!p_inited) {
15232     orc_once_mutex_lock ();
15233     if (!p_inited) {
15234       OrcProgram *p;
15235
15236 #if 1
15237       static const orc_uint8 bc[] = {
15238         1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
15239         95, 111, 114, 99, 95, 112, 117, 116, 108, 105, 110, 101, 95, 66, 71, 82,
15240         65, 11, 4, 4, 12, 4, 4, 184, 0, 4, 2, 0,
15241       };
15242       p = orc_program_new_from_static_bytecode (bc);
15243       orc_program_set_backup_function (p,
15244           _backup_video_convert_orc_putline_BGRA);
15245 #else
15246       p = orc_program_new ();
15247       orc_program_set_name (p, "video_convert_orc_putline_BGRA");
15248       orc_program_set_backup_function (p,
15249           _backup_video_convert_orc_putline_BGRA);
15250       orc_program_add_destination (p, 4, "d1");
15251       orc_program_add_source (p, 4, "s1");
15252
15253       orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1,
15254           ORC_VAR_D1);
15255 #endif
15256
15257       orc_program_compile (p);
15258       c = orc_program_take_code (p);
15259       orc_program_free (p);
15260     }
15261     p_inited = TRUE;
15262     orc_once_mutex_unlock ();
15263   }
15264   ex->arrays[ORC_VAR_A2] = c;
15265   ex->program = 0;
15266
15267   ex->n = n;
15268   ex->arrays[ORC_VAR_D1] = d1;
15269   ex->arrays[ORC_VAR_S1] = (void *) s1;
15270
15271   func = c->exec;
15272   func (ex);
15273 }
15274 #endif
15275
15276
15277 /* video_convert_orc_putline_ABGR */
15278 #ifdef DISABLE_ORC
15279 void
15280 video_convert_orc_putline_ABGR (guint8 * ORC_RESTRICT d1,
15281     const guint8 * ORC_RESTRICT s1, int n)
15282 {
15283   int i;
15284   orc_union32 *ORC_RESTRICT ptr0;
15285   const orc_union32 *ORC_RESTRICT ptr4;
15286   orc_union32 var40;
15287   orc_union32 var41;
15288   orc_union16 var42;
15289   orc_union16 var43;
15290   orc_int8 var44;
15291   orc_int8 var45;
15292   orc_int8 var46;
15293   orc_int8 var47;
15294   orc_union16 var48;
15295   orc_union16 var49;
15296
15297   ptr0 = (orc_union32 *) d1;
15298   ptr4 = (orc_union32 *) s1;
15299
15300
15301   for (i = 0; i < n; i++) {
15302     /* 0: loadl */
15303     var40 = ptr4[i];
15304     /* 1: splitlw */
15305     {
15306       orc_union32 _src;
15307       _src.i = var40.i;
15308       var42.i = _src.x2[1];
15309       var43.i = _src.x2[0];
15310     }
15311     /* 2: splitwb */
15312     {
15313       orc_union16 _src;
15314       _src.i = var42.i;
15315       var44 = _src.x2[1];
15316       var45 = _src.x2[0];
15317     }
15318     /* 3: splitwb */
15319     {
15320       orc_union16 _src;
15321       _src.i = var43.i;
15322       var46 = _src.x2[1];
15323       var47 = _src.x2[0];
15324     }
15325     /* 4: mergebw */
15326     {
15327       orc_union16 _dest;
15328       _dest.x2[0] = var47;
15329       _dest.x2[1] = var44;
15330       var48.i = _dest.i;
15331     }
15332     /* 5: mergebw */
15333     {
15334       orc_union16 _dest;
15335       _dest.x2[0] = var45;
15336       _dest.x2[1] = var46;
15337       var49.i = _dest.i;
15338     }
15339     /* 6: mergewl */
15340     {
15341       orc_union32 _dest;
15342       _dest.x2[0] = var48.i;
15343       _dest.x2[1] = var49.i;
15344       var41.i = _dest.i;
15345     }
15346     /* 7: storel */
15347     ptr0[i] = var41;
15348   }
15349
15350 }
15351
15352 #else
15353 static void
15354 _backup_video_convert_orc_putline_ABGR (OrcExecutor * ORC_RESTRICT ex)
15355 {
15356   int i;
15357   int n = ex->n;
15358   orc_union32 *ORC_RESTRICT ptr0;
15359   const orc_union32 *ORC_RESTRICT ptr4;
15360   orc_union32 var40;
15361   orc_union32 var41;
15362   orc_union16 var42;
15363   orc_union16 var43;
15364   orc_int8 var44;
15365   orc_int8 var45;
15366   orc_int8 var46;
15367   orc_int8 var47;
15368   orc_union16 var48;
15369   orc_union16 var49;
15370
15371   ptr0 = (orc_union32 *) ex->arrays[0];
15372   ptr4 = (orc_union32 *) ex->arrays[4];
15373
15374
15375   for (i = 0; i < n; i++) {
15376     /* 0: loadl */
15377     var40 = ptr4[i];
15378     /* 1: splitlw */
15379     {
15380       orc_union32 _src;
15381       _src.i = var40.i;
15382       var42.i = _src.x2[1];
15383       var43.i = _src.x2[0];
15384     }
15385     /* 2: splitwb */
15386     {
15387       orc_union16 _src;
15388       _src.i = var42.i;
15389       var44 = _src.x2[1];
15390       var45 = _src.x2[0];
15391     }
15392     /* 3: splitwb */
15393     {
15394       orc_union16 _src;
15395       _src.i = var43.i;
15396       var46 = _src.x2[1];
15397       var47 = _src.x2[0];
15398     }
15399     /* 4: mergebw */
15400     {
15401       orc_union16 _dest;
15402       _dest.x2[0] = var47;
15403       _dest.x2[1] = var44;
15404       var48.i = _dest.i;
15405     }
15406     /* 5: mergebw */
15407     {
15408       orc_union16 _dest;
15409       _dest.x2[0] = var45;
15410       _dest.x2[1] = var46;
15411       var49.i = _dest.i;
15412     }
15413     /* 6: mergewl */
15414     {
15415       orc_union32 _dest;
15416       _dest.x2[0] = var48.i;
15417       _dest.x2[1] = var49.i;
15418       var41.i = _dest.i;
15419     }
15420     /* 7: storel */
15421     ptr0[i] = var41;
15422   }
15423
15424 }
15425
15426 void
15427 video_convert_orc_putline_ABGR (guint8 * ORC_RESTRICT d1,
15428     const guint8 * ORC_RESTRICT s1, int n)
15429 {
15430   OrcExecutor _ex, *ex = &_ex;
15431   static volatile int p_inited = 0;
15432   static OrcCode *c = 0;
15433   void (*func) (OrcExecutor *);
15434
15435   if (!p_inited) {
15436     orc_once_mutex_lock ();
15437     if (!p_inited) {
15438       OrcProgram *p;
15439
15440 #if 1
15441       static const orc_uint8 bc[] = {
15442         1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
15443         95, 111, 114, 99, 95, 112, 117, 116, 108, 105, 110, 101, 95, 65, 66, 71,
15444         82, 11, 4, 4, 12, 4, 4, 20, 1, 20, 1, 20, 1, 20, 1, 20,
15445         2, 20, 2, 20, 2, 20, 2, 198, 39, 38, 4, 199, 35, 34, 39, 199,
15446         33, 32, 38, 196, 37, 32, 35, 196, 36, 34, 33, 195, 0, 37, 36, 2,
15447         0,
15448       };
15449       p = orc_program_new_from_static_bytecode (bc);
15450       orc_program_set_backup_function (p,
15451           _backup_video_convert_orc_putline_ABGR);
15452 #else
15453       p = orc_program_new ();
15454       orc_program_set_name (p, "video_convert_orc_putline_ABGR");
15455       orc_program_set_backup_function (p,
15456           _backup_video_convert_orc_putline_ABGR);
15457       orc_program_add_destination (p, 4, "d1");
15458       orc_program_add_source (p, 4, "s1");
15459       orc_program_add_temporary (p, 1, "t1");
15460       orc_program_add_temporary (p, 1, "t2");
15461       orc_program_add_temporary (p, 1, "t3");
15462       orc_program_add_temporary (p, 1, "t4");
15463       orc_program_add_temporary (p, 2, "t5");
15464       orc_program_add_temporary (p, 2, "t6");
15465       orc_program_add_temporary (p, 2, "t7");
15466       orc_program_add_temporary (p, 2, "t8");
15467
15468       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_S1,
15469           ORC_VAR_D1);
15470       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T8,
15471           ORC_VAR_D1);
15472       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T7,
15473           ORC_VAR_D1);
15474       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_T4,
15475           ORC_VAR_D1);
15476       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_T2,
15477           ORC_VAR_D1);
15478       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T6, ORC_VAR_T5,
15479           ORC_VAR_D1);
15480 #endif
15481
15482       orc_program_compile (p);
15483       c = orc_program_take_code (p);
15484       orc_program_free (p);
15485     }
15486     p_inited = TRUE;
15487     orc_once_mutex_unlock ();
15488   }
15489   ex->arrays[ORC_VAR_A2] = c;
15490   ex->program = 0;
15491
15492   ex->n = n;
15493   ex->arrays[ORC_VAR_D1] = d1;
15494   ex->arrays[ORC_VAR_S1] = (void *) s1;
15495
15496   func = c->exec;
15497   func (ex);
15498 }
15499 #endif
15500
15501
15502 /* video_convert_orc_putline_RGBA */
15503 #ifdef DISABLE_ORC
15504 void
15505 video_convert_orc_putline_RGBA (guint8 * ORC_RESTRICT d1,
15506     const guint8 * ORC_RESTRICT s1, int n)
15507 {
15508   int i;
15509   orc_union32 *ORC_RESTRICT ptr0;
15510   const orc_union32 *ORC_RESTRICT ptr4;
15511   orc_union32 var40;
15512   orc_union32 var41;
15513   orc_union16 var42;
15514   orc_union16 var43;
15515   orc_int8 var44;
15516   orc_int8 var45;
15517   orc_int8 var46;
15518   orc_int8 var47;
15519   orc_union16 var48;
15520   orc_union16 var49;
15521
15522   ptr0 = (orc_union32 *) d1;
15523   ptr4 = (orc_union32 *) s1;
15524
15525
15526   for (i = 0; i < n; i++) {
15527     /* 0: loadl */
15528     var40 = ptr4[i];
15529     /* 1: splitlw */
15530     {
15531       orc_union32 _src;
15532       _src.i = var40.i;
15533       var42.i = _src.x2[1];
15534       var43.i = _src.x2[0];
15535     }
15536     /* 2: splitwb */
15537     {
15538       orc_union16 _src;
15539       _src.i = var42.i;
15540       var44 = _src.x2[1];
15541       var45 = _src.x2[0];
15542     }
15543     /* 3: splitwb */
15544     {
15545       orc_union16 _src;
15546       _src.i = var43.i;
15547       var46 = _src.x2[1];
15548       var47 = _src.x2[0];
15549     }
15550     /* 4: mergebw */
15551     {
15552       orc_union16 _dest;
15553       _dest.x2[0] = var44;
15554       _dest.x2[1] = var47;
15555       var48.i = _dest.i;
15556     }
15557     /* 5: mergebw */
15558     {
15559       orc_union16 _dest;
15560       _dest.x2[0] = var46;
15561       _dest.x2[1] = var45;
15562       var49.i = _dest.i;
15563     }
15564     /* 6: mergewl */
15565     {
15566       orc_union32 _dest;
15567       _dest.x2[0] = var49.i;
15568       _dest.x2[1] = var48.i;
15569       var41.i = _dest.i;
15570     }
15571     /* 7: storel */
15572     ptr0[i] = var41;
15573   }
15574
15575 }
15576
15577 #else
15578 static void
15579 _backup_video_convert_orc_putline_RGBA (OrcExecutor * ORC_RESTRICT ex)
15580 {
15581   int i;
15582   int n = ex->n;
15583   orc_union32 *ORC_RESTRICT ptr0;
15584   const orc_union32 *ORC_RESTRICT ptr4;
15585   orc_union32 var40;
15586   orc_union32 var41;
15587   orc_union16 var42;
15588   orc_union16 var43;
15589   orc_int8 var44;
15590   orc_int8 var45;
15591   orc_int8 var46;
15592   orc_int8 var47;
15593   orc_union16 var48;
15594   orc_union16 var49;
15595
15596   ptr0 = (orc_union32 *) ex->arrays[0];
15597   ptr4 = (orc_union32 *) ex->arrays[4];
15598
15599
15600   for (i = 0; i < n; i++) {
15601     /* 0: loadl */
15602     var40 = ptr4[i];
15603     /* 1: splitlw */
15604     {
15605       orc_union32 _src;
15606       _src.i = var40.i;
15607       var42.i = _src.x2[1];
15608       var43.i = _src.x2[0];
15609     }
15610     /* 2: splitwb */
15611     {
15612       orc_union16 _src;
15613       _src.i = var42.i;
15614       var44 = _src.x2[1];
15615       var45 = _src.x2[0];
15616     }
15617     /* 3: splitwb */
15618     {
15619       orc_union16 _src;
15620       _src.i = var43.i;
15621       var46 = _src.x2[1];
15622       var47 = _src.x2[0];
15623     }
15624     /* 4: mergebw */
15625     {
15626       orc_union16 _dest;
15627       _dest.x2[0] = var44;
15628       _dest.x2[1] = var47;
15629       var48.i = _dest.i;
15630     }
15631     /* 5: mergebw */
15632     {
15633       orc_union16 _dest;
15634       _dest.x2[0] = var46;
15635       _dest.x2[1] = var45;
15636       var49.i = _dest.i;
15637     }
15638     /* 6: mergewl */
15639     {
15640       orc_union32 _dest;
15641       _dest.x2[0] = var49.i;
15642       _dest.x2[1] = var48.i;
15643       var41.i = _dest.i;
15644     }
15645     /* 7: storel */
15646     ptr0[i] = var41;
15647   }
15648
15649 }
15650
15651 void
15652 video_convert_orc_putline_RGBA (guint8 * ORC_RESTRICT d1,
15653     const guint8 * ORC_RESTRICT s1, int n)
15654 {
15655   OrcExecutor _ex, *ex = &_ex;
15656   static volatile int p_inited = 0;
15657   static OrcCode *c = 0;
15658   void (*func) (OrcExecutor *);
15659
15660   if (!p_inited) {
15661     orc_once_mutex_lock ();
15662     if (!p_inited) {
15663       OrcProgram *p;
15664
15665 #if 1
15666       static const orc_uint8 bc[] = {
15667         1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
15668         95, 111, 114, 99, 95, 112, 117, 116, 108, 105, 110, 101, 95, 82, 71, 66,
15669         65, 11, 4, 4, 12, 4, 4, 20, 1, 20, 1, 20, 1, 20, 1, 20,
15670         2, 20, 2, 20, 2, 20, 2, 198, 39, 38, 4, 199, 35, 34, 39, 199,
15671         33, 32, 38, 196, 37, 35, 32, 196, 36, 33, 34, 195, 0, 36, 37, 2,
15672         0,
15673       };
15674       p = orc_program_new_from_static_bytecode (bc);
15675       orc_program_set_backup_function (p,
15676           _backup_video_convert_orc_putline_RGBA);
15677 #else
15678       p = orc_program_new ();
15679       orc_program_set_name (p, "video_convert_orc_putline_RGBA");
15680       orc_program_set_backup_function (p,
15681           _backup_video_convert_orc_putline_RGBA);
15682       orc_program_add_destination (p, 4, "d1");
15683       orc_program_add_source (p, 4, "s1");
15684       orc_program_add_temporary (p, 1, "t1");
15685       orc_program_add_temporary (p, 1, "t2");
15686       orc_program_add_temporary (p, 1, "t3");
15687       orc_program_add_temporary (p, 1, "t4");
15688       orc_program_add_temporary (p, 2, "t5");
15689       orc_program_add_temporary (p, 2, "t6");
15690       orc_program_add_temporary (p, 2, "t7");
15691       orc_program_add_temporary (p, 2, "t8");
15692
15693       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_S1,
15694           ORC_VAR_D1);
15695       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T8,
15696           ORC_VAR_D1);
15697       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T7,
15698           ORC_VAR_D1);
15699       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T6, ORC_VAR_T4, ORC_VAR_T1,
15700           ORC_VAR_D1);
15701       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_T3,
15702           ORC_VAR_D1);
15703       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_T6,
15704           ORC_VAR_D1);
15705 #endif
15706
15707       orc_program_compile (p);
15708       c = orc_program_take_code (p);
15709       orc_program_free (p);
15710     }
15711     p_inited = TRUE;
15712     orc_once_mutex_unlock ();
15713   }
15714   ex->arrays[ORC_VAR_A2] = c;
15715   ex->program = 0;
15716
15717   ex->n = n;
15718   ex->arrays[ORC_VAR_D1] = d1;
15719   ex->arrays[ORC_VAR_S1] = (void *) s1;
15720
15721   func = c->exec;
15722   func (ex);
15723 }
15724 #endif
15725
15726
15727 /* video_convert_orc_putline_NV12 */
15728 #ifdef DISABLE_ORC
15729 void
15730 video_convert_orc_putline_NV12 (guint8 * ORC_RESTRICT d1,
15731     guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, int n)
15732 {
15733   int i;
15734   orc_union16 *ORC_RESTRICT ptr0;
15735   orc_union16 *ORC_RESTRICT ptr1;
15736   const orc_union64 *ORC_RESTRICT ptr4;
15737   orc_union64 var36;
15738   orc_union16 var37;
15739   orc_union16 var38;
15740   orc_union32 var39;
15741   orc_union32 var40;
15742   orc_union16 var41;
15743   orc_union16 var42;
15744
15745   ptr0 = (orc_union16 *) d1;
15746   ptr1 = (orc_union16 *) d2;
15747   ptr4 = (orc_union64 *) s1;
15748
15749
15750   for (i = 0; i < n; i++) {
15751     /* 0: loadq */
15752     var36 = ptr4[i];
15753     /* 1: splitlw */
15754     {
15755       orc_union32 _src;
15756       _src.i = var36.x2[0];
15757       var39.x2[0] = _src.x2[1];
15758       var40.x2[0] = _src.x2[0];
15759     }
15760     {
15761       orc_union32 _src;
15762       _src.i = var36.x2[1];
15763       var39.x2[1] = _src.x2[1];
15764       var40.x2[1] = _src.x2[0];
15765     }
15766     /* 2: select1wb */
15767     {
15768       orc_union16 _src;
15769       _src.i = var40.x2[0];
15770       var37.x2[0] = _src.x2[1];
15771     }
15772     {
15773       orc_union16 _src;
15774       _src.i = var40.x2[1];
15775       var37.x2[1] = _src.x2[1];
15776     }
15777     /* 3: storew */
15778     ptr0[i] = var37;
15779     /* 4: splitlw */
15780     {
15781       orc_union32 _src;
15782       _src.i = var39.i;
15783       var41.i = _src.x2[1];
15784       var42.i = _src.x2[0];
15785     }
15786     /* 5: avgub */
15787     var38.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
15788     var38.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
15789     /* 6: storew */
15790     ptr1[i] = var38;
15791   }
15792
15793 }
15794
15795 #else
15796 static void
15797 _backup_video_convert_orc_putline_NV12 (OrcExecutor * ORC_RESTRICT ex)
15798 {
15799   int i;
15800   int n = ex->n;
15801   orc_union16 *ORC_RESTRICT ptr0;
15802   orc_union16 *ORC_RESTRICT ptr1;
15803   const orc_union64 *ORC_RESTRICT ptr4;
15804   orc_union64 var36;
15805   orc_union16 var37;
15806   orc_union16 var38;
15807   orc_union32 var39;
15808   orc_union32 var40;
15809   orc_union16 var41;
15810   orc_union16 var42;
15811
15812   ptr0 = (orc_union16 *) ex->arrays[0];
15813   ptr1 = (orc_union16 *) ex->arrays[1];
15814   ptr4 = (orc_union64 *) ex->arrays[4];
15815
15816
15817   for (i = 0; i < n; i++) {
15818     /* 0: loadq */
15819     var36 = ptr4[i];
15820     /* 1: splitlw */
15821     {
15822       orc_union32 _src;
15823       _src.i = var36.x2[0];
15824       var39.x2[0] = _src.x2[1];
15825       var40.x2[0] = _src.x2[0];
15826     }
15827     {
15828       orc_union32 _src;
15829       _src.i = var36.x2[1];
15830       var39.x2[1] = _src.x2[1];
15831       var40.x2[1] = _src.x2[0];
15832     }
15833     /* 2: select1wb */
15834     {
15835       orc_union16 _src;
15836       _src.i = var40.x2[0];
15837       var37.x2[0] = _src.x2[1];
15838     }
15839     {
15840       orc_union16 _src;
15841       _src.i = var40.x2[1];
15842       var37.x2[1] = _src.x2[1];
15843     }
15844     /* 3: storew */
15845     ptr0[i] = var37;
15846     /* 4: splitlw */
15847     {
15848       orc_union32 _src;
15849       _src.i = var39.i;
15850       var41.i = _src.x2[1];
15851       var42.i = _src.x2[0];
15852     }
15853     /* 5: avgub */
15854     var38.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
15855     var38.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
15856     /* 6: storew */
15857     ptr1[i] = var38;
15858   }
15859
15860 }
15861
15862 void
15863 video_convert_orc_putline_NV12 (guint8 * ORC_RESTRICT d1,
15864     guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, int n)
15865 {
15866   OrcExecutor _ex, *ex = &_ex;
15867   static volatile int p_inited = 0;
15868   static OrcCode *c = 0;
15869   void (*func) (OrcExecutor *);
15870
15871   if (!p_inited) {
15872     orc_once_mutex_lock ();
15873     if (!p_inited) {
15874       OrcProgram *p;
15875
15876 #if 1
15877       static const orc_uint8 bc[] = {
15878         1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
15879         95, 111, 114, 99, 95, 112, 117, 116, 108, 105, 110, 101, 95, 78, 86, 49,
15880         50, 11, 2, 2, 11, 2, 2, 12, 8, 8, 20, 4, 20, 4, 20, 2,
15881         20, 2, 21, 1, 198, 33, 32, 4, 21, 1, 189, 0, 32, 198, 34, 35,
15882         33, 21, 1, 39, 1, 34, 35, 2, 0,
15883       };
15884       p = orc_program_new_from_static_bytecode (bc);
15885       orc_program_set_backup_function (p,
15886           _backup_video_convert_orc_putline_NV12);
15887 #else
15888       p = orc_program_new ();
15889       orc_program_set_name (p, "video_convert_orc_putline_NV12");
15890       orc_program_set_backup_function (p,
15891           _backup_video_convert_orc_putline_NV12);
15892       orc_program_add_destination (p, 2, "d1");
15893       orc_program_add_destination (p, 2, "d2");
15894       orc_program_add_source (p, 8, "s1");
15895       orc_program_add_temporary (p, 4, "t1");
15896       orc_program_add_temporary (p, 4, "t2");
15897       orc_program_add_temporary (p, 2, "t3");
15898       orc_program_add_temporary (p, 2, "t4");
15899
15900       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
15901           ORC_VAR_D1);
15902       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
15903           ORC_VAR_D1, ORC_VAR_D1);
15904       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2,
15905           ORC_VAR_D1);
15906       orc_program_append_2 (p, "avgub", 1, ORC_VAR_D2, ORC_VAR_T3, ORC_VAR_T4,
15907           ORC_VAR_D1);
15908 #endif
15909
15910       orc_program_compile (p);
15911       c = orc_program_take_code (p);
15912       orc_program_free (p);
15913     }
15914     p_inited = TRUE;
15915     orc_once_mutex_unlock ();
15916   }
15917   ex->arrays[ORC_VAR_A2] = c;
15918   ex->program = 0;
15919
15920   ex->n = n;
15921   ex->arrays[ORC_VAR_D1] = d1;
15922   ex->arrays[ORC_VAR_D2] = d2;
15923   ex->arrays[ORC_VAR_S1] = (void *) s1;
15924
15925   func = c->exec;
15926   func (ex);
15927 }
15928 #endif
15929
15930
15931 /* video_convert_orc_putline_NV21 */
15932 #ifdef DISABLE_ORC
15933 void
15934 video_convert_orc_putline_NV21 (guint8 * ORC_RESTRICT d1,
15935     guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, int n)
15936 {
15937   int i;
15938   orc_union16 *ORC_RESTRICT ptr0;
15939   orc_union16 *ORC_RESTRICT ptr1;
15940   const orc_union64 *ORC_RESTRICT ptr4;
15941   orc_union64 var37;
15942   orc_union16 var38;
15943   orc_union16 var39;
15944   orc_union32 var40;
15945   orc_union32 var41;
15946   orc_union16 var42;
15947   orc_union16 var43;
15948   orc_union16 var44;
15949
15950   ptr0 = (orc_union16 *) d1;
15951   ptr1 = (orc_union16 *) d2;
15952   ptr4 = (orc_union64 *) s1;
15953
15954
15955   for (i = 0; i < n; i++) {
15956     /* 0: loadq */
15957     var37 = ptr4[i];
15958     /* 1: splitlw */
15959     {
15960       orc_union32 _src;
15961       _src.i = var37.x2[0];
15962       var40.x2[0] = _src.x2[1];
15963       var41.x2[0] = _src.x2[0];
15964     }
15965     {
15966       orc_union32 _src;
15967       _src.i = var37.x2[1];
15968       var40.x2[1] = _src.x2[1];
15969       var41.x2[1] = _src.x2[0];
15970     }
15971     /* 2: select1wb */
15972     {
15973       orc_union16 _src;
15974       _src.i = var41.x2[0];
15975       var38.x2[0] = _src.x2[1];
15976     }
15977     {
15978       orc_union16 _src;
15979       _src.i = var41.x2[1];
15980       var38.x2[1] = _src.x2[1];
15981     }
15982     /* 3: storew */
15983     ptr0[i] = var38;
15984     /* 4: splitlw */
15985     {
15986       orc_union32 _src;
15987       _src.i = var40.i;
15988       var42.i = _src.x2[1];
15989       var43.i = _src.x2[0];
15990     }
15991     /* 5: avgub */
15992     var44.x2[0] = ((orc_uint8) var42.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1;
15993     var44.x2[1] = ((orc_uint8) var42.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1;
15994     /* 6: swapw */
15995     var39.i = ORC_SWAP_W (var44.i);
15996     /* 7: storew */
15997     ptr1[i] = var39;
15998   }
15999
16000 }
16001
16002 #else
16003 static void
16004 _backup_video_convert_orc_putline_NV21 (OrcExecutor * ORC_RESTRICT ex)
16005 {
16006   int i;
16007   int n = ex->n;
16008   orc_union16 *ORC_RESTRICT ptr0;
16009   orc_union16 *ORC_RESTRICT ptr1;
16010   const orc_union64 *ORC_RESTRICT ptr4;
16011   orc_union64 var37;
16012   orc_union16 var38;
16013   orc_union16 var39;
16014   orc_union32 var40;
16015   orc_union32 var41;
16016   orc_union16 var42;
16017   orc_union16 var43;
16018   orc_union16 var44;
16019
16020   ptr0 = (orc_union16 *) ex->arrays[0];
16021   ptr1 = (orc_union16 *) ex->arrays[1];
16022   ptr4 = (orc_union64 *) ex->arrays[4];
16023
16024
16025   for (i = 0; i < n; i++) {
16026     /* 0: loadq */
16027     var37 = ptr4[i];
16028     /* 1: splitlw */
16029     {
16030       orc_union32 _src;
16031       _src.i = var37.x2[0];
16032       var40.x2[0] = _src.x2[1];
16033       var41.x2[0] = _src.x2[0];
16034     }
16035     {
16036       orc_union32 _src;
16037       _src.i = var37.x2[1];
16038       var40.x2[1] = _src.x2[1];
16039       var41.x2[1] = _src.x2[0];
16040     }
16041     /* 2: select1wb */
16042     {
16043       orc_union16 _src;
16044       _src.i = var41.x2[0];
16045       var38.x2[0] = _src.x2[1];
16046     }
16047     {
16048       orc_union16 _src;
16049       _src.i = var41.x2[1];
16050       var38.x2[1] = _src.x2[1];
16051     }
16052     /* 3: storew */
16053     ptr0[i] = var38;
16054     /* 4: splitlw */
16055     {
16056       orc_union32 _src;
16057       _src.i = var40.i;
16058       var42.i = _src.x2[1];
16059       var43.i = _src.x2[0];
16060     }
16061     /* 5: avgub */
16062     var44.x2[0] = ((orc_uint8) var42.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1;
16063     var44.x2[1] = ((orc_uint8) var42.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1;
16064     /* 6: swapw */
16065     var39.i = ORC_SWAP_W (var44.i);
16066     /* 7: storew */
16067     ptr1[i] = var39;
16068   }
16069
16070 }
16071
16072 void
16073 video_convert_orc_putline_NV21 (guint8 * ORC_RESTRICT d1,
16074     guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, int n)
16075 {
16076   OrcExecutor _ex, *ex = &_ex;
16077   static volatile int p_inited = 0;
16078   static OrcCode *c = 0;
16079   void (*func) (OrcExecutor *);
16080
16081   if (!p_inited) {
16082     orc_once_mutex_lock ();
16083     if (!p_inited) {
16084       OrcProgram *p;
16085
16086 #if 1
16087       static const orc_uint8 bc[] = {
16088         1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
16089         95, 111, 114, 99, 95, 112, 117, 116, 108, 105, 110, 101, 95, 78, 86, 50,
16090         49, 11, 2, 2, 11, 2, 2, 12, 8, 8, 20, 4, 20, 4, 20, 2,
16091         20, 2, 20, 2, 21, 1, 198, 33, 32, 4, 21, 1, 189, 0, 32, 198,
16092         34, 35, 33, 21, 1, 39, 36, 34, 35, 183, 1, 36, 2, 0,
16093       };
16094       p = orc_program_new_from_static_bytecode (bc);
16095       orc_program_set_backup_function (p,
16096           _backup_video_convert_orc_putline_NV21);
16097 #else
16098       p = orc_program_new ();
16099       orc_program_set_name (p, "video_convert_orc_putline_NV21");
16100       orc_program_set_backup_function (p,
16101           _backup_video_convert_orc_putline_NV21);
16102       orc_program_add_destination (p, 2, "d1");
16103       orc_program_add_destination (p, 2, "d2");
16104       orc_program_add_source (p, 8, "s1");
16105       orc_program_add_temporary (p, 4, "t1");
16106       orc_program_add_temporary (p, 4, "t2");
16107       orc_program_add_temporary (p, 2, "t3");
16108       orc_program_add_temporary (p, 2, "t4");
16109       orc_program_add_temporary (p, 2, "t5");
16110
16111       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
16112           ORC_VAR_D1);
16113       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
16114           ORC_VAR_D1, ORC_VAR_D1);
16115       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2,
16116           ORC_VAR_D1);
16117       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_T4,
16118           ORC_VAR_D1);
16119       orc_program_append_2 (p, "swapw", 0, ORC_VAR_D2, ORC_VAR_T5, ORC_VAR_D1,
16120           ORC_VAR_D1);
16121 #endif
16122
16123       orc_program_compile (p);
16124       c = orc_program_take_code (p);
16125       orc_program_free (p);
16126     }
16127     p_inited = TRUE;
16128     orc_once_mutex_unlock ();
16129   }
16130   ex->arrays[ORC_VAR_A2] = c;
16131   ex->program = 0;
16132
16133   ex->n = n;
16134   ex->arrays[ORC_VAR_D1] = d1;
16135   ex->arrays[ORC_VAR_D2] = d2;
16136   ex->arrays[ORC_VAR_S1] = (void *) s1;
16137
16138   func = c->exec;
16139   func (ex);
16140 }
16141 #endif
16142
16143
16144 /* video_convert_orc_putline_A420 */
16145 #ifdef DISABLE_ORC
16146 void
16147 video_convert_orc_putline_A420 (guint8 * ORC_RESTRICT d1,
16148     guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
16149     guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1, int n)
16150 {
16151   int i;
16152   orc_union16 *ORC_RESTRICT ptr0;
16153   orc_int8 *ORC_RESTRICT ptr1;
16154   orc_int8 *ORC_RESTRICT ptr2;
16155   orc_union16 *ORC_RESTRICT ptr3;
16156   const orc_union64 *ORC_RESTRICT ptr4;
16157   orc_union64 var38;
16158   orc_union16 var39;
16159   orc_union16 var40;
16160   orc_int8 var41;
16161   orc_int8 var42;
16162   orc_union32 var43;
16163   orc_union32 var44;
16164   orc_union16 var45;
16165   orc_union16 var46;
16166   orc_int8 var47;
16167   orc_int8 var48;
16168   orc_int8 var49;
16169   orc_int8 var50;
16170
16171   ptr0 = (orc_union16 *) d1;
16172   ptr1 = (orc_int8 *) d2;
16173   ptr2 = (orc_int8 *) d3;
16174   ptr3 = (orc_union16 *) d4;
16175   ptr4 = (orc_union64 *) s1;
16176
16177
16178   for (i = 0; i < n; i++) {
16179     /* 0: loadq */
16180     var38 = ptr4[i];
16181     /* 1: splitlw */
16182     {
16183       orc_union32 _src;
16184       _src.i = var38.x2[0];
16185       var43.x2[0] = _src.x2[1];
16186       var44.x2[0] = _src.x2[0];
16187     }
16188     {
16189       orc_union32 _src;
16190       _src.i = var38.x2[1];
16191       var43.x2[1] = _src.x2[1];
16192       var44.x2[1] = _src.x2[0];
16193     }
16194     /* 2: select1wb */
16195     {
16196       orc_union16 _src;
16197       _src.i = var44.x2[0];
16198       var39.x2[0] = _src.x2[1];
16199     }
16200     {
16201       orc_union16 _src;
16202       _src.i = var44.x2[1];
16203       var39.x2[1] = _src.x2[1];
16204     }
16205     /* 3: storew */
16206     ptr0[i] = var39;
16207     /* 4: select0wb */
16208     {
16209       orc_union16 _src;
16210       _src.i = var44.x2[0];
16211       var40.x2[0] = _src.x2[0];
16212     }
16213     {
16214       orc_union16 _src;
16215       _src.i = var44.x2[1];
16216       var40.x2[1] = _src.x2[0];
16217     }
16218     /* 5: storew */
16219     ptr3[i] = var40;
16220     /* 6: splitwb */
16221     {
16222       orc_union16 _src;
16223       _src.i = var43.x2[0];
16224       var45.x2[0] = _src.x2[1];
16225       var46.x2[0] = _src.x2[0];
16226     }
16227     {
16228       orc_union16 _src;
16229       _src.i = var43.x2[1];
16230       var45.x2[1] = _src.x2[1];
16231       var46.x2[1] = _src.x2[0];
16232     }
16233     /* 7: splitwb */
16234     {
16235       orc_union16 _src;
16236       _src.i = var46.i;
16237       var47 = _src.x2[1];
16238       var48 = _src.x2[0];
16239     }
16240     /* 8: avgub */
16241     var41 = ((orc_uint8) var47 + (orc_uint8) var48 + 1) >> 1;
16242     /* 9: storeb */
16243     ptr1[i] = var41;
16244     /* 10: splitwb */
16245     {
16246       orc_union16 _src;
16247       _src.i = var45.i;
16248       var49 = _src.x2[1];
16249       var50 = _src.x2[0];
16250     }
16251     /* 11: avgub */
16252     var42 = ((orc_uint8) var49 + (orc_uint8) var50 + 1) >> 1;
16253     /* 12: storeb */
16254     ptr2[i] = var42;
16255   }
16256
16257 }
16258
16259 #else
16260 static void
16261 _backup_video_convert_orc_putline_A420 (OrcExecutor * ORC_RESTRICT ex)
16262 {
16263   int i;
16264   int n = ex->n;
16265   orc_union16 *ORC_RESTRICT ptr0;
16266   orc_int8 *ORC_RESTRICT ptr1;
16267   orc_int8 *ORC_RESTRICT ptr2;
16268   orc_union16 *ORC_RESTRICT ptr3;
16269   const orc_union64 *ORC_RESTRICT ptr4;
16270   orc_union64 var38;
16271   orc_union16 var39;
16272   orc_union16 var40;
16273   orc_int8 var41;
16274   orc_int8 var42;
16275   orc_union32 var43;
16276   orc_union32 var44;
16277   orc_union16 var45;
16278   orc_union16 var46;
16279   orc_int8 var47;
16280   orc_int8 var48;
16281   orc_int8 var49;
16282   orc_int8 var50;
16283
16284   ptr0 = (orc_union16 *) ex->arrays[0];
16285   ptr1 = (orc_int8 *) ex->arrays[1];
16286   ptr2 = (orc_int8 *) ex->arrays[2];
16287   ptr3 = (orc_union16 *) ex->arrays[3];
16288   ptr4 = (orc_union64 *) ex->arrays[4];
16289
16290
16291   for (i = 0; i < n; i++) {
16292     /* 0: loadq */
16293     var38 = ptr4[i];
16294     /* 1: splitlw */
16295     {
16296       orc_union32 _src;
16297       _src.i = var38.x2[0];
16298       var43.x2[0] = _src.x2[1];
16299       var44.x2[0] = _src.x2[0];
16300     }
16301     {
16302       orc_union32 _src;
16303       _src.i = var38.x2[1];
16304       var43.x2[1] = _src.x2[1];
16305       var44.x2[1] = _src.x2[0];
16306     }
16307     /* 2: select1wb */
16308     {
16309       orc_union16 _src;
16310       _src.i = var44.x2[0];
16311       var39.x2[0] = _src.x2[1];
16312     }
16313     {
16314       orc_union16 _src;
16315       _src.i = var44.x2[1];
16316       var39.x2[1] = _src.x2[1];
16317     }
16318     /* 3: storew */
16319     ptr0[i] = var39;
16320     /* 4: select0wb */
16321     {
16322       orc_union16 _src;
16323       _src.i = var44.x2[0];
16324       var40.x2[0] = _src.x2[0];
16325     }
16326     {
16327       orc_union16 _src;
16328       _src.i = var44.x2[1];
16329       var40.x2[1] = _src.x2[0];
16330     }
16331     /* 5: storew */
16332     ptr3[i] = var40;
16333     /* 6: splitwb */
16334     {
16335       orc_union16 _src;
16336       _src.i = var43.x2[0];
16337       var45.x2[0] = _src.x2[1];
16338       var46.x2[0] = _src.x2[0];
16339     }
16340     {
16341       orc_union16 _src;
16342       _src.i = var43.x2[1];
16343       var45.x2[1] = _src.x2[1];
16344       var46.x2[1] = _src.x2[0];
16345     }
16346     /* 7: splitwb */
16347     {
16348       orc_union16 _src;
16349       _src.i = var46.i;
16350       var47 = _src.x2[1];
16351       var48 = _src.x2[0];
16352     }
16353     /* 8: avgub */
16354     var41 = ((orc_uint8) var47 + (orc_uint8) var48 + 1) >> 1;
16355     /* 9: storeb */
16356     ptr1[i] = var41;
16357     /* 10: splitwb */
16358     {
16359       orc_union16 _src;
16360       _src.i = var45.i;
16361       var49 = _src.x2[1];
16362       var50 = _src.x2[0];
16363     }
16364     /* 11: avgub */
16365     var42 = ((orc_uint8) var49 + (orc_uint8) var50 + 1) >> 1;
16366     /* 12: storeb */
16367     ptr2[i] = var42;
16368   }
16369
16370 }
16371
16372 void
16373 video_convert_orc_putline_A420 (guint8 * ORC_RESTRICT d1,
16374     guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
16375     guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1, int n)
16376 {
16377   OrcExecutor _ex, *ex = &_ex;
16378   static volatile int p_inited = 0;
16379   static OrcCode *c = 0;
16380   void (*func) (OrcExecutor *);
16381
16382   if (!p_inited) {
16383     orc_once_mutex_lock ();
16384     if (!p_inited) {
16385       OrcProgram *p;
16386
16387 #if 1
16388       static const orc_uint8 bc[] = {
16389         1, 9, 30, 118, 105, 100, 101, 111, 95, 99, 111, 110, 118, 101, 114, 116,
16390         95, 111, 114, 99, 95, 112, 117, 116, 108, 105, 110, 101, 95, 65, 52, 50,
16391         48, 11, 2, 2, 11, 1, 1, 11, 1, 1, 11, 2, 2, 12, 8, 8,
16392         20, 4, 20, 4, 20, 2, 20, 2, 20, 1, 20, 1, 21, 1, 198, 33,
16393         32, 4, 21, 1, 189, 0, 32, 21, 1, 188, 3, 32, 21, 1, 199, 35,
16394         34, 33, 199, 36, 37, 34, 39, 1, 36, 37, 199, 36, 37, 35, 39, 2,
16395         36, 37, 2, 0,
16396       };
16397       p = orc_program_new_from_static_bytecode (bc);
16398       orc_program_set_backup_function (p,
16399           _backup_video_convert_orc_putline_A420);
16400 #else
16401       p = orc_program_new ();
16402       orc_program_set_name (p, "video_convert_orc_putline_A420");
16403       orc_program_set_backup_function (p,
16404           _backup_video_convert_orc_putline_A420);
16405       orc_program_add_destination (p, 2, "d1");
16406       orc_program_add_destination (p, 1, "d2");
16407       orc_program_add_destination (p, 1, "d3");
16408       orc_program_add_destination (p, 2, "d4");
16409       orc_program_add_source (p, 8, "s1");
16410       orc_program_add_temporary (p, 4, "t1");
16411       orc_program_add_temporary (p, 4, "t2");
16412       orc_program_add_temporary (p, 2, "t3");
16413       orc_program_add_temporary (p, 2, "t4");
16414       orc_program_add_temporary (p, 1, "t5");
16415       orc_program_add_temporary (p, 1, "t6");
16416
16417       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
16418           ORC_VAR_D1);
16419       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
16420           ORC_VAR_D1, ORC_VAR_D1);
16421       orc_program_append_2 (p, "select0wb", 1, ORC_VAR_D4, ORC_VAR_T1,
16422           ORC_VAR_D1, ORC_VAR_D1);
16423       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T2,
16424           ORC_VAR_D1);
16425       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T5, ORC_VAR_T6, ORC_VAR_T3,
16426           ORC_VAR_D1);
16427       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D2, ORC_VAR_T5, ORC_VAR_T6,
16428           ORC_VAR_D1);
16429       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T5, ORC_VAR_T6, ORC_VAR_T4,
16430           ORC_VAR_D1);
16431       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D3, ORC_VAR_T5, ORC_VAR_T6,
16432           ORC_VAR_D1);
16433 #endif
16434
16435       orc_program_compile (p);
16436       c = orc_program_take_code (p);
16437       orc_program_free (p);
16438     }
16439     p_inited = TRUE;
16440     orc_once_mutex_unlock ();
16441   }
16442   ex->arrays[ORC_VAR_A2] = c;
16443   ex->program = 0;
16444
16445   ex->n = n;
16446   ex->arrays[ORC_VAR_D1] = d1;
16447   ex->arrays[ORC_VAR_D2] = d2;
16448   ex->arrays[ORC_VAR_D3] = d3;
16449   ex->arrays[ORC_VAR_D4] = d4;
16450   ex->arrays[ORC_VAR_S1] = (void *) s1;
16451
16452   func = c->exec;
16453   func (ex);
16454 }
16455 #endif