9a9836fc75d37be2c7f325d235f0966fc81fe2f0
[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 DISABLE_ORC
83 #include <orc/orc.h>
84 #endif
85 void cogorc_memcpy_2d (guint8 * ORC_RESTRICT d1, int d1_stride,
86     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
87 void cogorc_downsample_horiz_cosite_1tap (guint8 * ORC_RESTRICT d1,
88     const guint8 * ORC_RESTRICT s1, int n);
89 void cogorc_downsample_horiz_cosite_3tap (guint8 * ORC_RESTRICT d1,
90     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n);
91 void cogorc_downsample_420_jpeg (guint8 * ORC_RESTRICT d1,
92     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n);
93 void cogorc_downsample_vert_halfsite_2tap (guint8 * ORC_RESTRICT d1,
94     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n);
95 void cogorc_downsample_vert_cosite_3tap (guint8 * ORC_RESTRICT d1,
96     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
97     const guint8 * ORC_RESTRICT s3, int n);
98 void cogorc_downsample_vert_halfsite_4tap (guint8 * ORC_RESTRICT d1,
99     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
100     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n);
101 void cogorc_upsample_horiz_cosite_1tap (guint8 * ORC_RESTRICT d1,
102     const guint8 * ORC_RESTRICT s1, int n);
103 void cogorc_upsample_horiz_cosite (guint8 * ORC_RESTRICT d1,
104     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n);
105 void cogorc_upsample_vert_avgub (guint8 * ORC_RESTRICT d1,
106     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n);
107 void orc_unpack_yuyv_y (guint8 * ORC_RESTRICT d1,
108     const guint8 * ORC_RESTRICT s1, int n);
109 void orc_unpack_yuyv_u (guint8 * ORC_RESTRICT d1,
110     const guint8 * ORC_RESTRICT s1, int n);
111 void orc_unpack_yuyv_v (guint8 * ORC_RESTRICT d1,
112     const guint8 * ORC_RESTRICT s1, int n);
113 void orc_pack_yuyv (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
114     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n);
115 void orc_unpack_uyvy_y (guint8 * ORC_RESTRICT d1,
116     const guint8 * ORC_RESTRICT s1, int n);
117 void orc_unpack_uyvy_u (guint8 * ORC_RESTRICT d1,
118     const guint8 * ORC_RESTRICT s1, int n);
119 void orc_unpack_uyvy_v (guint8 * ORC_RESTRICT d1,
120     const guint8 * ORC_RESTRICT s1, int n);
121 void orc_pack_uyvy (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
122     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n);
123 void orc_matrix2_u8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
124     const guint8 * ORC_RESTRICT s2, int p1, int p2, int p3, int n);
125 void orc_matrix2_11_u8 (guint8 * ORC_RESTRICT d1,
126     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int p1,
127     int p2, int n);
128 void orc_matrix2_12_u8 (guint8 * ORC_RESTRICT d1,
129     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int p1,
130     int p2, int n);
131 void orc_matrix3_u8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
132     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int p1,
133     int p2, int p3, int p4, int n);
134 void orc_matrix3_100_u8 (guint8 * ORC_RESTRICT d1,
135     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
136     const guint8 * ORC_RESTRICT s3, int p1, int p2, int p3, int n);
137 void orc_matrix3_100_offset_u8 (guint8 * ORC_RESTRICT d1,
138     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
139     const guint8 * ORC_RESTRICT s3, int p1, int p2, int p3, int p4, int p5,
140     int n);
141 void orc_matrix3_000_u8 (guint8 * ORC_RESTRICT d1,
142     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
143     const guint8 * ORC_RESTRICT s3, int p1, int p2, int p3, int p4, int p5,
144     int n);
145 void orc_pack_123x (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
146     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int p1,
147     int n);
148 void orc_pack_x123 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
149     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int p1,
150     int n);
151 void cogorc_combine2_u8 (guint8 * ORC_RESTRICT d1,
152     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int p1,
153     int p2, int n);
154 void cogorc_convert_I420_UYVY (guint8 * ORC_RESTRICT d1,
155     guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1,
156     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3,
157     const guint8 * ORC_RESTRICT s4, int n);
158 void cogorc_convert_I420_YUY2 (guint8 * ORC_RESTRICT d1,
159     guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1,
160     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3,
161     const guint8 * ORC_RESTRICT s4, int n);
162 void cogorc_convert_I420_AYUV (guint8 * ORC_RESTRICT d1,
163     guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1,
164     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3,
165     const guint8 * ORC_RESTRICT s4, int n);
166 void cogorc_convert_YUY2_I420 (guint8 * ORC_RESTRICT d1,
167     guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
168     guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1,
169     const guint8 * ORC_RESTRICT s2, int n);
170 void cogorc_convert_UYVY_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
171     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
172 void cogorc_planar_chroma_420_422 (guint8 * ORC_RESTRICT d1, int d1_stride,
173     guint8 * ORC_RESTRICT d2, int d2_stride, const guint8 * ORC_RESTRICT s1,
174     int s1_stride, int n, int m);
175 void cogorc_planar_chroma_420_444 (guint8 * ORC_RESTRICT d1, int d1_stride,
176     guint8 * ORC_RESTRICT d2, int d2_stride, const guint8 * ORC_RESTRICT s1,
177     int s1_stride, int n, int m);
178 void cogorc_planar_chroma_422_444 (guint8 * ORC_RESTRICT d1, int d1_stride,
179     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
180 void cogorc_planar_chroma_444_422 (guint8 * ORC_RESTRICT d1, int d1_stride,
181     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
182 void cogorc_planar_chroma_444_420 (guint8 * ORC_RESTRICT d1, int d1_stride,
183     const guint8 * ORC_RESTRICT s1, int s1_stride,
184     const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m);
185 void cogorc_planar_chroma_422_420 (guint8 * ORC_RESTRICT d1, int d1_stride,
186     const guint8 * ORC_RESTRICT s1, int s1_stride,
187     const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m);
188 void cogorc_convert_YUY2_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
189     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
190 void cogorc_convert_UYVY_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
191     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
192 void cogorc_convert_YUY2_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride,
193     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
194     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
195 void cogorc_convert_UYVY_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride,
196     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
197     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
198 void cogorc_convert_YUY2_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride,
199     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
200     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
201 void cogorc_convert_UYVY_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride,
202     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
203     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
204 void cogorc_convert_UYVY_I420 (guint8 * ORC_RESTRICT d1,
205     guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
206     guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1,
207     const guint8 * ORC_RESTRICT s2, int n);
208 void cogorc_convert_AYUV_I420 (guint8 * ORC_RESTRICT d1, int d1_stride,
209     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
210     int d3_stride, guint8 * ORC_RESTRICT d4, int d4_stride,
211     const guint8 * ORC_RESTRICT s1, int s1_stride,
212     const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m);
213 void cogorc_convert_AYUV_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
214     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
215 void cogorc_convert_AYUV_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
216     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
217 void cogorc_convert_AYUV_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride,
218     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
219     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
220 void cogorc_convert_AYUV_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride,
221     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
222     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
223 void cogorc_convert_Y42B_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
224     const guint8 * ORC_RESTRICT s1, int s1_stride,
225     const guint8 * ORC_RESTRICT s2, int s2_stride,
226     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m);
227 void cogorc_convert_Y42B_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
228     const guint8 * ORC_RESTRICT s1, int s1_stride,
229     const guint8 * ORC_RESTRICT s2, int s2_stride,
230     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m);
231 void cogorc_convert_Y42B_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
232     const guint8 * ORC_RESTRICT s1, int s1_stride,
233     const guint8 * ORC_RESTRICT s2, int s2_stride,
234     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m);
235 void cogorc_convert_Y444_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
236     const guint8 * ORC_RESTRICT s1, int s1_stride,
237     const guint8 * ORC_RESTRICT s2, int s2_stride,
238     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m);
239 void cogorc_convert_Y444_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
240     const guint8 * ORC_RESTRICT s1, int s1_stride,
241     const guint8 * ORC_RESTRICT s2, int s2_stride,
242     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m);
243 void cogorc_convert_Y444_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
244     const guint8 * ORC_RESTRICT s1, int s1_stride,
245     const guint8 * ORC_RESTRICT s2, int s2_stride,
246     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m);
247 void cogorc_convert_AYUV_ARGB (guint8 * ORC_RESTRICT d1, int d1_stride,
248     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
249 void cogorc_convert_AYUV_BGRA (guint8 * ORC_RESTRICT d1, int d1_stride,
250     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
251 void cogorc_convert_AYUV_ABGR (guint8 * ORC_RESTRICT d1, int d1_stride,
252     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
253 void cogorc_convert_AYUV_RGBA (guint8 * ORC_RESTRICT d1, int d1_stride,
254     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
255 void cogorc_convert_I420_BGRA (guint8 * ORC_RESTRICT d1,
256     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
257     const guint8 * ORC_RESTRICT s3, int n);
258 void cogorc_convert_I420_BGRA_avg (guint8 * ORC_RESTRICT d1,
259     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
260     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4,
261     const guint8 * ORC_RESTRICT s5, int n);
262 void cogorc_getline_I420 (guint8 * ORC_RESTRICT d1,
263     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
264     const guint8 * ORC_RESTRICT s3, int n);
265 void cogorc_getline_YUV9 (guint8 * ORC_RESTRICT d1,
266     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
267     const guint8 * ORC_RESTRICT s3, int n);
268 void cogorc_getline_YUY2 (guint8 * ORC_RESTRICT d1,
269     const guint8 * ORC_RESTRICT s1, int n);
270 void cogorc_getline_UYVY (guint8 * ORC_RESTRICT d1,
271     const guint8 * ORC_RESTRICT s1, int n);
272 void cogorc_getline_YVYU (guint8 * ORC_RESTRICT d1,
273     const guint8 * ORC_RESTRICT s1, int n);
274 void cogorc_getline_Y42B (guint8 * ORC_RESTRICT d1,
275     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
276     const guint8 * ORC_RESTRICT s3, int n);
277 void cogorc_getline_Y444 (guint8 * ORC_RESTRICT d1,
278     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
279     const guint8 * ORC_RESTRICT s3, int n);
280 void cogorc_getline_Y800 (guint8 * ORC_RESTRICT d1,
281     const guint8 * ORC_RESTRICT s1, int n);
282 void cogorc_getline_Y16 (guint8 * ORC_RESTRICT d1,
283     const guint8 * ORC_RESTRICT s1, int n);
284 void cogorc_getline_BGRA (guint8 * ORC_RESTRICT d1,
285     const guint8 * ORC_RESTRICT s1, int n);
286 void cogorc_getline_ABGR (guint8 * ORC_RESTRICT d1,
287     const guint8 * ORC_RESTRICT s1, int n);
288 void cogorc_getline_RGBA (guint8 * ORC_RESTRICT d1,
289     const guint8 * ORC_RESTRICT s1, int n);
290 void cogorc_getline_NV12 (guint8 * ORC_RESTRICT d1,
291     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n);
292 void cogorc_getline_NV21 (guint8 * ORC_RESTRICT d1,
293     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n);
294 void cogorc_getline_A420 (guint8 * ORC_RESTRICT d1,
295     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
296     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n);
297 void cogorc_putline_I420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
298     guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n);
299 void cogorc_putline_YUY2 (guint8 * ORC_RESTRICT d1,
300     const guint8 * ORC_RESTRICT s1, int n);
301 void cogorc_putline_YVYU (guint8 * ORC_RESTRICT d1,
302     const guint8 * ORC_RESTRICT s1, int n);
303 void cogorc_putline_UYVY (guint8 * ORC_RESTRICT d1,
304     const guint8 * ORC_RESTRICT s1, int n);
305 void cogorc_putline_Y42B (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
306     guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n);
307 void cogorc_putline_Y444 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
308     guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n);
309 void cogorc_putline_Y800 (guint8 * ORC_RESTRICT d1,
310     const guint8 * ORC_RESTRICT s1, int n);
311 void cogorc_putline_Y16 (guint8 * ORC_RESTRICT d1,
312     const guint8 * ORC_RESTRICT s1, int n);
313 void cogorc_putline_BGRA (guint8 * ORC_RESTRICT d1,
314     const guint8 * ORC_RESTRICT s1, int n);
315 void cogorc_putline_ABGR (guint8 * ORC_RESTRICT d1,
316     const guint8 * ORC_RESTRICT s1, int n);
317 void cogorc_putline_RGBA (guint8 * ORC_RESTRICT d1,
318     const guint8 * ORC_RESTRICT s1, int n);
319 void cogorc_putline_NV12 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
320     const guint8 * ORC_RESTRICT s1, int n);
321 void cogorc_putline_NV21 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
322     const guint8 * ORC_RESTRICT s1, int n);
323 void cogorc_putline_A420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
324     guint8 * ORC_RESTRICT d3, guint8 * ORC_RESTRICT d4,
325     const guint8 * ORC_RESTRICT s1, int n);
326
327
328 /* begin Orc C target preamble */
329 #define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x)))
330 #define ORC_ABS(a) ((a)<0 ? -(a) : (a))
331 #define ORC_MIN(a,b) ((a)<(b) ? (a) : (b))
332 #define ORC_MAX(a,b) ((a)>(b) ? (a) : (b))
333 #define ORC_SB_MAX 127
334 #define ORC_SB_MIN (-1-ORC_SB_MAX)
335 #define ORC_UB_MAX 255
336 #define ORC_UB_MIN 0
337 #define ORC_SW_MAX 32767
338 #define ORC_SW_MIN (-1-ORC_SW_MAX)
339 #define ORC_UW_MAX 65535
340 #define ORC_UW_MIN 0
341 #define ORC_SL_MAX 2147483647
342 #define ORC_SL_MIN (-1-ORC_SL_MAX)
343 #define ORC_UL_MAX 4294967295U
344 #define ORC_UL_MIN 0
345 #define ORC_CLAMP_SB(x) ORC_CLAMP(x,ORC_SB_MIN,ORC_SB_MAX)
346 #define ORC_CLAMP_UB(x) ORC_CLAMP(x,ORC_UB_MIN,ORC_UB_MAX)
347 #define ORC_CLAMP_SW(x) ORC_CLAMP(x,ORC_SW_MIN,ORC_SW_MAX)
348 #define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX)
349 #define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX)
350 #define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX)
351 #define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8))
352 #define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24))
353 #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))
354 #define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset)))
355 #define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff))
356 #define ORC_ISNAN(x) ((((x)&0x7f800000) == 0x7f800000) && (((x)&0x007fffff) != 0))
357 #define ORC_DENORMAL_DOUBLE(x) ((x) & ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == 0) ? ORC_UINT64_C(0xfff0000000000000) : ORC_UINT64_C(0xffffffffffffffff)))
358 #define ORC_ISNAN_DOUBLE(x) ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == ORC_UINT64_C(0x7ff0000000000000)) && (((x)&ORC_UINT64_C(0x000fffffffffffff)) != 0))
359 #ifndef ORC_RESTRICT
360 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
361 #define ORC_RESTRICT restrict
362 #elif defined(__GNUC__) && __GNUC__ >= 4
363 #define ORC_RESTRICT __restrict__
364 #else
365 #define ORC_RESTRICT
366 #endif
367 #endif
368 /* end Orc C target preamble */
369
370
371
372 /* cogorc_memcpy_2d */
373 #ifdef DISABLE_ORC
374 void
375 cogorc_memcpy_2d (guint8 * ORC_RESTRICT d1, int d1_stride,
376     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
377 {
378   int i;
379   int j;
380   orc_int8 *ORC_RESTRICT ptr0;
381   const orc_int8 *ORC_RESTRICT ptr4;
382   orc_int8 var32;
383   orc_int8 var33;
384
385   for (j = 0; j < m; j++) {
386     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
387     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
388
389
390     for (i = 0; i < n; i++) {
391       /* 0: loadb */
392       var32 = ptr4[i];
393       /* 1: copyb */
394       var33 = var32;
395       /* 2: storeb */
396       ptr0[i] = var33;
397     }
398   }
399
400 }
401
402 #else
403 static void
404 _backup_cogorc_memcpy_2d (OrcExecutor * ORC_RESTRICT ex)
405 {
406   int i;
407   int j;
408   int n = ex->n;
409   int m = ex->params[ORC_VAR_A1];
410   orc_int8 *ORC_RESTRICT ptr0;
411   const orc_int8 *ORC_RESTRICT ptr4;
412   orc_int8 var32;
413   orc_int8 var33;
414
415   for (j = 0; j < m; j++) {
416     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
417     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
418
419
420     for (i = 0; i < n; i++) {
421       /* 0: loadb */
422       var32 = ptr4[i];
423       /* 1: copyb */
424       var33 = var32;
425       /* 2: storeb */
426       ptr0[i] = var33;
427     }
428   }
429
430 }
431
432 void
433 cogorc_memcpy_2d (guint8 * ORC_RESTRICT d1, int d1_stride,
434     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
435 {
436   OrcExecutor _ex, *ex = &_ex;
437   static volatile int p_inited = 0;
438   static OrcProgram *p = 0;
439   void (*func) (OrcExecutor *);
440
441   if (!p_inited) {
442     orc_once_mutex_lock ();
443     if (!p_inited) {
444
445       p = orc_program_new ();
446       orc_program_set_2d (p);
447       orc_program_set_name (p, "cogorc_memcpy_2d");
448       orc_program_set_backup_function (p, _backup_cogorc_memcpy_2d);
449       orc_program_add_destination (p, 1, "d1");
450       orc_program_add_source (p, 1, "s1");
451
452       orc_program_append_2 (p, "copyb", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1,
453           ORC_VAR_D1);
454
455       orc_program_compile (p);
456     }
457     p_inited = TRUE;
458     orc_once_mutex_unlock ();
459   }
460   ex->program = p;
461
462   ex->n = n;
463   ORC_EXECUTOR_M (ex) = m;
464   ex->arrays[ORC_VAR_D1] = d1;
465   ex->params[ORC_VAR_D1] = d1_stride;
466   ex->arrays[ORC_VAR_S1] = (void *) s1;
467   ex->params[ORC_VAR_S1] = s1_stride;
468
469   func = p->code_exec;
470   func (ex);
471 }
472 #endif
473
474
475 /* cogorc_downsample_horiz_cosite_1tap */
476 #ifdef DISABLE_ORC
477 void
478 cogorc_downsample_horiz_cosite_1tap (guint8 * ORC_RESTRICT d1,
479     const guint8 * ORC_RESTRICT s1, int n)
480 {
481   int i;
482   orc_int8 *ORC_RESTRICT ptr0;
483   const orc_union16 *ORC_RESTRICT ptr4;
484   orc_union16 var32;
485   orc_int8 var33;
486
487   ptr0 = (orc_int8 *) d1;
488   ptr4 = (orc_union16 *) s1;
489
490
491   for (i = 0; i < n; i++) {
492     /* 0: loadw */
493     var32 = ptr4[i];
494     /* 1: select0wb */
495     {
496       orc_union16 _src;
497       _src.i = var32.i;
498       var33 = _src.x2[0];
499     }
500     /* 2: storeb */
501     ptr0[i] = var33;
502   }
503
504 }
505
506 #else
507 static void
508 _backup_cogorc_downsample_horiz_cosite_1tap (OrcExecutor * ORC_RESTRICT ex)
509 {
510   int i;
511   int n = ex->n;
512   orc_int8 *ORC_RESTRICT ptr0;
513   const orc_union16 *ORC_RESTRICT ptr4;
514   orc_union16 var32;
515   orc_int8 var33;
516
517   ptr0 = (orc_int8 *) ex->arrays[0];
518   ptr4 = (orc_union16 *) ex->arrays[4];
519
520
521   for (i = 0; i < n; i++) {
522     /* 0: loadw */
523     var32 = ptr4[i];
524     /* 1: select0wb */
525     {
526       orc_union16 _src;
527       _src.i = var32.i;
528       var33 = _src.x2[0];
529     }
530     /* 2: storeb */
531     ptr0[i] = var33;
532   }
533
534 }
535
536 void
537 cogorc_downsample_horiz_cosite_1tap (guint8 * ORC_RESTRICT d1,
538     const guint8 * ORC_RESTRICT s1, int n)
539 {
540   OrcExecutor _ex, *ex = &_ex;
541   static volatile int p_inited = 0;
542   static OrcProgram *p = 0;
543   void (*func) (OrcExecutor *);
544
545   if (!p_inited) {
546     orc_once_mutex_lock ();
547     if (!p_inited) {
548
549       p = orc_program_new ();
550       orc_program_set_name (p, "cogorc_downsample_horiz_cosite_1tap");
551       orc_program_set_backup_function (p,
552           _backup_cogorc_downsample_horiz_cosite_1tap);
553       orc_program_add_destination (p, 1, "d1");
554       orc_program_add_source (p, 2, "s1");
555
556       orc_program_append_2 (p, "select0wb", 0, ORC_VAR_D1, ORC_VAR_S1,
557           ORC_VAR_D1, ORC_VAR_D1);
558
559       orc_program_compile (p);
560     }
561     p_inited = TRUE;
562     orc_once_mutex_unlock ();
563   }
564   ex->program = p;
565
566   ex->n = n;
567   ex->arrays[ORC_VAR_D1] = d1;
568   ex->arrays[ORC_VAR_S1] = (void *) s1;
569
570   func = p->code_exec;
571   func (ex);
572 }
573 #endif
574
575
576 /* cogorc_downsample_horiz_cosite_3tap */
577 #ifdef DISABLE_ORC
578 void
579 cogorc_downsample_horiz_cosite_3tap (guint8 * ORC_RESTRICT d1,
580     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
581 {
582   int i;
583   orc_int8 *ORC_RESTRICT ptr0;
584   const orc_union16 *ORC_RESTRICT ptr4;
585   const orc_union16 *ORC_RESTRICT ptr5;
586   orc_union16 var38;
587   orc_union16 var39;
588   orc_union16 var40;
589   orc_union16 var41;
590   orc_int8 var42;
591   orc_union16 var43;
592   orc_int8 var44;
593   orc_int8 var45;
594   orc_int8 var46;
595   orc_union16 var47;
596   orc_union16 var48;
597   orc_union16 var49;
598   orc_union16 var50;
599   orc_union16 var51;
600   orc_union16 var52;
601   orc_union16 var53;
602   orc_union16 var54;
603
604   ptr0 = (orc_int8 *) d1;
605   ptr4 = (orc_union16 *) s1;
606   ptr5 = (orc_union16 *) s2;
607
608   /* 9: loadpw */
609   var40.i = (int) 0x00000002;   /* 2 or 9.88131e-324f */
610   /* 13: loadpw */
611   var41.i = (int) 0x00000002;   /* 2 or 9.88131e-324f */
612
613   for (i = 0; i < n; i++) {
614     /* 0: loadw */
615     var38 = ptr4[i];
616     /* 1: copyw */
617     var43.i = var38.i;
618     /* 2: select0wb */
619     {
620       orc_union16 _src;
621       _src.i = var43.i;
622       var44 = _src.x2[0];
623     }
624     /* 3: select1wb */
625     {
626       orc_union16 _src;
627       _src.i = var43.i;
628       var45 = _src.x2[1];
629     }
630     /* 4: loadw */
631     var39 = ptr5[i];
632     /* 5: select0wb */
633     {
634       orc_union16 _src;
635       _src.i = var39.i;
636       var46 = _src.x2[0];
637     }
638     /* 6: convubw */
639     var47.i = (orc_uint8) var44;
640     /* 7: convubw */
641     var48.i = (orc_uint8) var45;
642     /* 8: convubw */
643     var49.i = (orc_uint8) var46;
644     /* 10: mullw */
645     var50.i = (var48.i * var40.i) & 0xffff;
646     /* 11: addw */
647     var51.i = var47.i + var49.i;
648     /* 12: addw */
649     var52.i = var51.i + var50.i;
650     /* 14: addw */
651     var53.i = var52.i + var41.i;
652     /* 15: shrsw */
653     var54.i = var53.i >> 2;
654     /* 16: convsuswb */
655     var42 = ORC_CLAMP_UB (var54.i);
656     /* 17: storeb */
657     ptr0[i] = var42;
658   }
659
660 }
661
662 #else
663 static void
664 _backup_cogorc_downsample_horiz_cosite_3tap (OrcExecutor * ORC_RESTRICT ex)
665 {
666   int i;
667   int n = ex->n;
668   orc_int8 *ORC_RESTRICT ptr0;
669   const orc_union16 *ORC_RESTRICT ptr4;
670   const orc_union16 *ORC_RESTRICT ptr5;
671   orc_union16 var38;
672   orc_union16 var39;
673   orc_union16 var40;
674   orc_union16 var41;
675   orc_int8 var42;
676   orc_union16 var43;
677   orc_int8 var44;
678   orc_int8 var45;
679   orc_int8 var46;
680   orc_union16 var47;
681   orc_union16 var48;
682   orc_union16 var49;
683   orc_union16 var50;
684   orc_union16 var51;
685   orc_union16 var52;
686   orc_union16 var53;
687   orc_union16 var54;
688
689   ptr0 = (orc_int8 *) ex->arrays[0];
690   ptr4 = (orc_union16 *) ex->arrays[4];
691   ptr5 = (orc_union16 *) ex->arrays[5];
692
693   /* 9: loadpw */
694   var40.i = (int) 0x00000002;   /* 2 or 9.88131e-324f */
695   /* 13: loadpw */
696   var41.i = (int) 0x00000002;   /* 2 or 9.88131e-324f */
697
698   for (i = 0; i < n; i++) {
699     /* 0: loadw */
700     var38 = ptr4[i];
701     /* 1: copyw */
702     var43.i = var38.i;
703     /* 2: select0wb */
704     {
705       orc_union16 _src;
706       _src.i = var43.i;
707       var44 = _src.x2[0];
708     }
709     /* 3: select1wb */
710     {
711       orc_union16 _src;
712       _src.i = var43.i;
713       var45 = _src.x2[1];
714     }
715     /* 4: loadw */
716     var39 = ptr5[i];
717     /* 5: select0wb */
718     {
719       orc_union16 _src;
720       _src.i = var39.i;
721       var46 = _src.x2[0];
722     }
723     /* 6: convubw */
724     var47.i = (orc_uint8) var44;
725     /* 7: convubw */
726     var48.i = (orc_uint8) var45;
727     /* 8: convubw */
728     var49.i = (orc_uint8) var46;
729     /* 10: mullw */
730     var50.i = (var48.i * var40.i) & 0xffff;
731     /* 11: addw */
732     var51.i = var47.i + var49.i;
733     /* 12: addw */
734     var52.i = var51.i + var50.i;
735     /* 14: addw */
736     var53.i = var52.i + var41.i;
737     /* 15: shrsw */
738     var54.i = var53.i >> 2;
739     /* 16: convsuswb */
740     var42 = ORC_CLAMP_UB (var54.i);
741     /* 17: storeb */
742     ptr0[i] = var42;
743   }
744
745 }
746
747 void
748 cogorc_downsample_horiz_cosite_3tap (guint8 * ORC_RESTRICT d1,
749     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
750 {
751   OrcExecutor _ex, *ex = &_ex;
752   static volatile int p_inited = 0;
753   static OrcProgram *p = 0;
754   void (*func) (OrcExecutor *);
755
756   if (!p_inited) {
757     orc_once_mutex_lock ();
758     if (!p_inited) {
759
760       p = orc_program_new ();
761       orc_program_set_name (p, "cogorc_downsample_horiz_cosite_3tap");
762       orc_program_set_backup_function (p,
763           _backup_cogorc_downsample_horiz_cosite_3tap);
764       orc_program_add_destination (p, 1, "d1");
765       orc_program_add_source (p, 2, "s1");
766       orc_program_add_source (p, 2, "s2");
767       orc_program_add_constant (p, 4, 0x00000002, "c1");
768       orc_program_add_temporary (p, 1, "t1");
769       orc_program_add_temporary (p, 1, "t2");
770       orc_program_add_temporary (p, 1, "t3");
771       orc_program_add_temporary (p, 2, "t4");
772       orc_program_add_temporary (p, 2, "t5");
773       orc_program_add_temporary (p, 2, "t6");
774
775       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T4, ORC_VAR_S1, ORC_VAR_D1,
776           ORC_VAR_D1);
777       orc_program_append_2 (p, "select0wb", 0, ORC_VAR_T1, ORC_VAR_T4,
778           ORC_VAR_D1, ORC_VAR_D1);
779       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T2, ORC_VAR_T4,
780           ORC_VAR_D1, ORC_VAR_D1);
781       orc_program_append_2 (p, "select0wb", 0, ORC_VAR_T3, ORC_VAR_S2,
782           ORC_VAR_D1, ORC_VAR_D1);
783       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_D1,
784           ORC_VAR_D1);
785       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_D1,
786           ORC_VAR_D1);
787       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_D1,
788           ORC_VAR_D1);
789       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C1,
790           ORC_VAR_D1);
791       orc_program_append_2 (p, "addw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T6,
792           ORC_VAR_D1);
793       orc_program_append_2 (p, "addw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5,
794           ORC_VAR_D1);
795       orc_program_append_2 (p, "addw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C1,
796           ORC_VAR_D1);
797       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C1,
798           ORC_VAR_D1);
799       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T4,
800           ORC_VAR_D1, ORC_VAR_D1);
801
802       orc_program_compile (p);
803     }
804     p_inited = TRUE;
805     orc_once_mutex_unlock ();
806   }
807   ex->program = p;
808
809   ex->n = n;
810   ex->arrays[ORC_VAR_D1] = d1;
811   ex->arrays[ORC_VAR_S1] = (void *) s1;
812   ex->arrays[ORC_VAR_S2] = (void *) s2;
813
814   func = p->code_exec;
815   func (ex);
816 }
817 #endif
818
819
820 /* cogorc_downsample_420_jpeg */
821 #ifdef DISABLE_ORC
822 void
823 cogorc_downsample_420_jpeg (guint8 * ORC_RESTRICT d1,
824     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
825 {
826   int i;
827   orc_int8 *ORC_RESTRICT ptr0;
828   const orc_union16 *ORC_RESTRICT ptr4;
829   const orc_union16 *ORC_RESTRICT ptr5;
830   orc_union16 var37;
831   orc_union16 var38;
832   orc_int8 var39;
833   orc_union16 var40;
834   orc_int8 var41;
835   orc_int8 var42;
836   orc_int8 var43;
837   orc_union16 var44;
838   orc_int8 var45;
839   orc_int8 var46;
840   orc_int8 var47;
841
842   ptr0 = (orc_int8 *) d1;
843   ptr4 = (orc_union16 *) s1;
844   ptr5 = (orc_union16 *) s2;
845
846
847   for (i = 0; i < n; i++) {
848     /* 0: loadw */
849     var37 = ptr4[i];
850     /* 1: copyw */
851     var40.i = var37.i;
852     /* 2: select0wb */
853     {
854       orc_union16 _src;
855       _src.i = var40.i;
856       var41 = _src.x2[0];
857     }
858     /* 3: select1wb */
859     {
860       orc_union16 _src;
861       _src.i = var40.i;
862       var42 = _src.x2[1];
863     }
864     /* 4: avgub */
865     var43 = ((orc_uint8) var41 + (orc_uint8) var42 + 1) >> 1;
866     /* 5: loadw */
867     var38 = ptr5[i];
868     /* 6: copyw */
869     var44.i = var38.i;
870     /* 7: select0wb */
871     {
872       orc_union16 _src;
873       _src.i = var44.i;
874       var45 = _src.x2[0];
875     }
876     /* 8: select1wb */
877     {
878       orc_union16 _src;
879       _src.i = var44.i;
880       var46 = _src.x2[1];
881     }
882     /* 9: avgub */
883     var47 = ((orc_uint8) var45 + (orc_uint8) var46 + 1) >> 1;
884     /* 10: avgub */
885     var39 = ((orc_uint8) var43 + (orc_uint8) var47 + 1) >> 1;
886     /* 11: storeb */
887     ptr0[i] = var39;
888   }
889
890 }
891
892 #else
893 static void
894 _backup_cogorc_downsample_420_jpeg (OrcExecutor * ORC_RESTRICT ex)
895 {
896   int i;
897   int n = ex->n;
898   orc_int8 *ORC_RESTRICT ptr0;
899   const orc_union16 *ORC_RESTRICT ptr4;
900   const orc_union16 *ORC_RESTRICT ptr5;
901   orc_union16 var37;
902   orc_union16 var38;
903   orc_int8 var39;
904   orc_union16 var40;
905   orc_int8 var41;
906   orc_int8 var42;
907   orc_int8 var43;
908   orc_union16 var44;
909   orc_int8 var45;
910   orc_int8 var46;
911   orc_int8 var47;
912
913   ptr0 = (orc_int8 *) ex->arrays[0];
914   ptr4 = (orc_union16 *) ex->arrays[4];
915   ptr5 = (orc_union16 *) ex->arrays[5];
916
917
918   for (i = 0; i < n; i++) {
919     /* 0: loadw */
920     var37 = ptr4[i];
921     /* 1: copyw */
922     var40.i = var37.i;
923     /* 2: select0wb */
924     {
925       orc_union16 _src;
926       _src.i = var40.i;
927       var41 = _src.x2[0];
928     }
929     /* 3: select1wb */
930     {
931       orc_union16 _src;
932       _src.i = var40.i;
933       var42 = _src.x2[1];
934     }
935     /* 4: avgub */
936     var43 = ((orc_uint8) var41 + (orc_uint8) var42 + 1) >> 1;
937     /* 5: loadw */
938     var38 = ptr5[i];
939     /* 6: copyw */
940     var44.i = var38.i;
941     /* 7: select0wb */
942     {
943       orc_union16 _src;
944       _src.i = var44.i;
945       var45 = _src.x2[0];
946     }
947     /* 8: select1wb */
948     {
949       orc_union16 _src;
950       _src.i = var44.i;
951       var46 = _src.x2[1];
952     }
953     /* 9: avgub */
954     var47 = ((orc_uint8) var45 + (orc_uint8) var46 + 1) >> 1;
955     /* 10: avgub */
956     var39 = ((orc_uint8) var43 + (orc_uint8) var47 + 1) >> 1;
957     /* 11: storeb */
958     ptr0[i] = var39;
959   }
960
961 }
962
963 void
964 cogorc_downsample_420_jpeg (guint8 * ORC_RESTRICT d1,
965     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
966 {
967   OrcExecutor _ex, *ex = &_ex;
968   static volatile int p_inited = 0;
969   static OrcProgram *p = 0;
970   void (*func) (OrcExecutor *);
971
972   if (!p_inited) {
973     orc_once_mutex_lock ();
974     if (!p_inited) {
975
976       p = orc_program_new ();
977       orc_program_set_name (p, "cogorc_downsample_420_jpeg");
978       orc_program_set_backup_function (p, _backup_cogorc_downsample_420_jpeg);
979       orc_program_add_destination (p, 1, "d1");
980       orc_program_add_source (p, 2, "s1");
981       orc_program_add_source (p, 2, "s2");
982       orc_program_add_temporary (p, 2, "t1");
983       orc_program_add_temporary (p, 1, "t2");
984       orc_program_add_temporary (p, 1, "t3");
985       orc_program_add_temporary (p, 1, "t4");
986       orc_program_add_temporary (p, 1, "t5");
987
988       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
989           ORC_VAR_D1);
990       orc_program_append_2 (p, "select0wb", 0, ORC_VAR_T2, ORC_VAR_T1,
991           ORC_VAR_D1, ORC_VAR_D1);
992       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T3, ORC_VAR_T1,
993           ORC_VAR_D1, ORC_VAR_D1);
994       orc_program_append_2 (p, "avgub", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3,
995           ORC_VAR_D1);
996       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_D1,
997           ORC_VAR_D1);
998       orc_program_append_2 (p, "select0wb", 0, ORC_VAR_T4, ORC_VAR_T1,
999           ORC_VAR_D1, ORC_VAR_D1);
1000       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T5, ORC_VAR_T1,
1001           ORC_VAR_D1, ORC_VAR_D1);
1002       orc_program_append_2 (p, "avgub", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5,
1003           ORC_VAR_D1);
1004       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T4,
1005           ORC_VAR_D1);
1006
1007       orc_program_compile (p);
1008     }
1009     p_inited = TRUE;
1010     orc_once_mutex_unlock ();
1011   }
1012   ex->program = p;
1013
1014   ex->n = n;
1015   ex->arrays[ORC_VAR_D1] = d1;
1016   ex->arrays[ORC_VAR_S1] = (void *) s1;
1017   ex->arrays[ORC_VAR_S2] = (void *) s2;
1018
1019   func = p->code_exec;
1020   func (ex);
1021 }
1022 #endif
1023
1024
1025 /* cogorc_downsample_vert_halfsite_2tap */
1026 #ifdef DISABLE_ORC
1027 void
1028 cogorc_downsample_vert_halfsite_2tap (guint8 * ORC_RESTRICT d1,
1029     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
1030 {
1031   int i;
1032   orc_int8 *ORC_RESTRICT ptr0;
1033   const orc_int8 *ORC_RESTRICT ptr4;
1034   const orc_int8 *ORC_RESTRICT ptr5;
1035   orc_int8 var32;
1036   orc_int8 var33;
1037   orc_int8 var34;
1038
1039   ptr0 = (orc_int8 *) d1;
1040   ptr4 = (orc_int8 *) s1;
1041   ptr5 = (orc_int8 *) s2;
1042
1043
1044   for (i = 0; i < n; i++) {
1045     /* 0: loadb */
1046     var32 = ptr4[i];
1047     /* 1: loadb */
1048     var33 = ptr5[i];
1049     /* 2: avgub */
1050     var34 = ((orc_uint8) var32 + (orc_uint8) var33 + 1) >> 1;
1051     /* 3: storeb */
1052     ptr0[i] = var34;
1053   }
1054
1055 }
1056
1057 #else
1058 static void
1059 _backup_cogorc_downsample_vert_halfsite_2tap (OrcExecutor * ORC_RESTRICT ex)
1060 {
1061   int i;
1062   int n = ex->n;
1063   orc_int8 *ORC_RESTRICT ptr0;
1064   const orc_int8 *ORC_RESTRICT ptr4;
1065   const orc_int8 *ORC_RESTRICT ptr5;
1066   orc_int8 var32;
1067   orc_int8 var33;
1068   orc_int8 var34;
1069
1070   ptr0 = (orc_int8 *) ex->arrays[0];
1071   ptr4 = (orc_int8 *) ex->arrays[4];
1072   ptr5 = (orc_int8 *) ex->arrays[5];
1073
1074
1075   for (i = 0; i < n; i++) {
1076     /* 0: loadb */
1077     var32 = ptr4[i];
1078     /* 1: loadb */
1079     var33 = ptr5[i];
1080     /* 2: avgub */
1081     var34 = ((orc_uint8) var32 + (orc_uint8) var33 + 1) >> 1;
1082     /* 3: storeb */
1083     ptr0[i] = var34;
1084   }
1085
1086 }
1087
1088 void
1089 cogorc_downsample_vert_halfsite_2tap (guint8 * ORC_RESTRICT d1,
1090     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
1091 {
1092   OrcExecutor _ex, *ex = &_ex;
1093   static volatile int p_inited = 0;
1094   static OrcProgram *p = 0;
1095   void (*func) (OrcExecutor *);
1096
1097   if (!p_inited) {
1098     orc_once_mutex_lock ();
1099     if (!p_inited) {
1100
1101       p = orc_program_new ();
1102       orc_program_set_name (p, "cogorc_downsample_vert_halfsite_2tap");
1103       orc_program_set_backup_function (p,
1104           _backup_cogorc_downsample_vert_halfsite_2tap);
1105       orc_program_add_destination (p, 1, "d1");
1106       orc_program_add_source (p, 1, "s1");
1107       orc_program_add_source (p, 1, "s2");
1108
1109       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S2,
1110           ORC_VAR_D1);
1111
1112       orc_program_compile (p);
1113     }
1114     p_inited = TRUE;
1115     orc_once_mutex_unlock ();
1116   }
1117   ex->program = p;
1118
1119   ex->n = n;
1120   ex->arrays[ORC_VAR_D1] = d1;
1121   ex->arrays[ORC_VAR_S1] = (void *) s1;
1122   ex->arrays[ORC_VAR_S2] = (void *) s2;
1123
1124   func = p->code_exec;
1125   func (ex);
1126 }
1127 #endif
1128
1129
1130 /* cogorc_downsample_vert_cosite_3tap */
1131 #ifdef DISABLE_ORC
1132 void
1133 cogorc_downsample_vert_cosite_3tap (guint8 * ORC_RESTRICT d1,
1134     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
1135     const guint8 * ORC_RESTRICT s3, int n)
1136 {
1137   int i;
1138   orc_int8 *ORC_RESTRICT ptr0;
1139   const orc_int8 *ORC_RESTRICT ptr4;
1140   const orc_int8 *ORC_RESTRICT ptr5;
1141   const orc_int8 *ORC_RESTRICT ptr6;
1142   orc_int8 var35;
1143   orc_int8 var36;
1144   orc_int8 var37;
1145   orc_union16 var38;
1146   orc_union16 var39;
1147   orc_int8 var40;
1148   orc_union16 var41;
1149   orc_union16 var42;
1150   orc_union16 var43;
1151   orc_union16 var44;
1152   orc_union16 var45;
1153   orc_union16 var46;
1154   orc_union16 var47;
1155   orc_union16 var48;
1156
1157   ptr0 = (orc_int8 *) d1;
1158   ptr4 = (orc_int8 *) s1;
1159   ptr5 = (orc_int8 *) s2;
1160   ptr6 = (orc_int8 *) s3;
1161
1162   /* 6: loadpw */
1163   var38.i = (int) 0x00000002;   /* 2 or 9.88131e-324f */
1164   /* 10: loadpw */
1165   var39.i = (int) 0x00000002;   /* 2 or 9.88131e-324f */
1166
1167   for (i = 0; i < n; i++) {
1168     /* 0: loadb */
1169     var35 = ptr4[i];
1170     /* 1: convubw */
1171     var41.i = (orc_uint8) var35;
1172     /* 2: loadb */
1173     var36 = ptr5[i];
1174     /* 3: convubw */
1175     var42.i = (orc_uint8) var36;
1176     /* 4: loadb */
1177     var37 = ptr6[i];
1178     /* 5: convubw */
1179     var43.i = (orc_uint8) var37;
1180     /* 7: mullw */
1181     var44.i = (var42.i * var38.i) & 0xffff;
1182     /* 8: addw */
1183     var45.i = var41.i + var43.i;
1184     /* 9: addw */
1185     var46.i = var45.i + var44.i;
1186     /* 11: addw */
1187     var47.i = var46.i + var39.i;
1188     /* 12: shrsw */
1189     var48.i = var47.i >> 2;
1190     /* 13: convsuswb */
1191     var40 = ORC_CLAMP_UB (var48.i);
1192     /* 14: storeb */
1193     ptr0[i] = var40;
1194   }
1195
1196 }
1197
1198 #else
1199 static void
1200 _backup_cogorc_downsample_vert_cosite_3tap (OrcExecutor * ORC_RESTRICT ex)
1201 {
1202   int i;
1203   int n = ex->n;
1204   orc_int8 *ORC_RESTRICT ptr0;
1205   const orc_int8 *ORC_RESTRICT ptr4;
1206   const orc_int8 *ORC_RESTRICT ptr5;
1207   const orc_int8 *ORC_RESTRICT ptr6;
1208   orc_int8 var35;
1209   orc_int8 var36;
1210   orc_int8 var37;
1211   orc_union16 var38;
1212   orc_union16 var39;
1213   orc_int8 var40;
1214   orc_union16 var41;
1215   orc_union16 var42;
1216   orc_union16 var43;
1217   orc_union16 var44;
1218   orc_union16 var45;
1219   orc_union16 var46;
1220   orc_union16 var47;
1221   orc_union16 var48;
1222
1223   ptr0 = (orc_int8 *) ex->arrays[0];
1224   ptr4 = (orc_int8 *) ex->arrays[4];
1225   ptr5 = (orc_int8 *) ex->arrays[5];
1226   ptr6 = (orc_int8 *) ex->arrays[6];
1227
1228   /* 6: loadpw */
1229   var38.i = (int) 0x00000002;   /* 2 or 9.88131e-324f */
1230   /* 10: loadpw */
1231   var39.i = (int) 0x00000002;   /* 2 or 9.88131e-324f */
1232
1233   for (i = 0; i < n; i++) {
1234     /* 0: loadb */
1235     var35 = ptr4[i];
1236     /* 1: convubw */
1237     var41.i = (orc_uint8) var35;
1238     /* 2: loadb */
1239     var36 = ptr5[i];
1240     /* 3: convubw */
1241     var42.i = (orc_uint8) var36;
1242     /* 4: loadb */
1243     var37 = ptr6[i];
1244     /* 5: convubw */
1245     var43.i = (orc_uint8) var37;
1246     /* 7: mullw */
1247     var44.i = (var42.i * var38.i) & 0xffff;
1248     /* 8: addw */
1249     var45.i = var41.i + var43.i;
1250     /* 9: addw */
1251     var46.i = var45.i + var44.i;
1252     /* 11: addw */
1253     var47.i = var46.i + var39.i;
1254     /* 12: shrsw */
1255     var48.i = var47.i >> 2;
1256     /* 13: convsuswb */
1257     var40 = ORC_CLAMP_UB (var48.i);
1258     /* 14: storeb */
1259     ptr0[i] = var40;
1260   }
1261
1262 }
1263
1264 void
1265 cogorc_downsample_vert_cosite_3tap (guint8 * ORC_RESTRICT d1,
1266     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
1267     const guint8 * ORC_RESTRICT s3, int n)
1268 {
1269   OrcExecutor _ex, *ex = &_ex;
1270   static volatile int p_inited = 0;
1271   static OrcProgram *p = 0;
1272   void (*func) (OrcExecutor *);
1273
1274   if (!p_inited) {
1275     orc_once_mutex_lock ();
1276     if (!p_inited) {
1277
1278       p = orc_program_new ();
1279       orc_program_set_name (p, "cogorc_downsample_vert_cosite_3tap");
1280       orc_program_set_backup_function (p,
1281           _backup_cogorc_downsample_vert_cosite_3tap);
1282       orc_program_add_destination (p, 1, "d1");
1283       orc_program_add_source (p, 1, "s1");
1284       orc_program_add_source (p, 1, "s2");
1285       orc_program_add_source (p, 1, "s3");
1286       orc_program_add_constant (p, 4, 0x00000002, "c1");
1287       orc_program_add_temporary (p, 2, "t1");
1288       orc_program_add_temporary (p, 2, "t2");
1289       orc_program_add_temporary (p, 2, "t3");
1290
1291       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
1292           ORC_VAR_D1);
1293       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
1294           ORC_VAR_D1);
1295       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1,
1296           ORC_VAR_D1);
1297       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1,
1298           ORC_VAR_D1);
1299       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T3,
1300           ORC_VAR_D1);
1301       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
1302           ORC_VAR_D1);
1303       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
1304           ORC_VAR_D1);
1305       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
1306           ORC_VAR_D1);
1307       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1,
1308           ORC_VAR_D1, ORC_VAR_D1);
1309
1310       orc_program_compile (p);
1311     }
1312     p_inited = TRUE;
1313     orc_once_mutex_unlock ();
1314   }
1315   ex->program = p;
1316
1317   ex->n = n;
1318   ex->arrays[ORC_VAR_D1] = d1;
1319   ex->arrays[ORC_VAR_S1] = (void *) s1;
1320   ex->arrays[ORC_VAR_S2] = (void *) s2;
1321   ex->arrays[ORC_VAR_S3] = (void *) s3;
1322
1323   func = p->code_exec;
1324   func (ex);
1325 }
1326 #endif
1327
1328
1329 /* cogorc_downsample_vert_halfsite_4tap */
1330 #ifdef DISABLE_ORC
1331 void
1332 cogorc_downsample_vert_halfsite_4tap (guint8 * ORC_RESTRICT d1,
1333     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
1334     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n)
1335 {
1336   int i;
1337   orc_int8 *ORC_RESTRICT ptr0;
1338   const orc_int8 *ORC_RESTRICT ptr4;
1339   const orc_int8 *ORC_RESTRICT ptr5;
1340   const orc_int8 *ORC_RESTRICT ptr6;
1341   const orc_int8 *ORC_RESTRICT ptr7;
1342   orc_int8 var36;
1343   orc_int8 var37;
1344   orc_int8 var38;
1345   orc_int8 var39;
1346   orc_union16 var40;
1347   orc_union16 var41;
1348   orc_union16 var42;
1349   orc_int8 var43;
1350   orc_union16 var44;
1351   orc_union16 var45;
1352   orc_union16 var46;
1353   orc_union16 var47;
1354   orc_union16 var48;
1355   orc_union16 var49;
1356   orc_union16 var50;
1357   orc_union16 var51;
1358   orc_union16 var52;
1359   orc_union16 var53;
1360   orc_union16 var54;
1361
1362   ptr0 = (orc_int8 *) d1;
1363   ptr4 = (orc_int8 *) s1;
1364   ptr5 = (orc_int8 *) s2;
1365   ptr6 = (orc_int8 *) s3;
1366   ptr7 = (orc_int8 *) s4;
1367
1368   /* 9: loadpw */
1369   var40.i = (int) 0x0000001a;   /* 26 or 1.28457e-322f */
1370   /* 12: loadpw */
1371   var41.i = (int) 0x00000006;   /* 6 or 2.96439e-323f */
1372   /* 15: loadpw */
1373   var42.i = (int) 0x00000020;   /* 32 or 1.58101e-322f */
1374
1375   for (i = 0; i < n; i++) {
1376     /* 0: loadb */
1377     var36 = ptr4[i];
1378     /* 1: convubw */
1379     var44.i = (orc_uint8) var36;
1380     /* 2: loadb */
1381     var37 = ptr5[i];
1382     /* 3: convubw */
1383     var45.i = (orc_uint8) var37;
1384     /* 4: loadb */
1385     var38 = ptr6[i];
1386     /* 5: convubw */
1387     var46.i = (orc_uint8) var38;
1388     /* 6: loadb */
1389     var39 = ptr7[i];
1390     /* 7: convubw */
1391     var47.i = (orc_uint8) var39;
1392     /* 8: addw */
1393     var48.i = var45.i + var46.i;
1394     /* 10: mullw */
1395     var49.i = (var48.i * var40.i) & 0xffff;
1396     /* 11: addw */
1397     var50.i = var44.i + var47.i;
1398     /* 13: mullw */
1399     var51.i = (var50.i * var41.i) & 0xffff;
1400     /* 14: addw */
1401     var52.i = var49.i + var51.i;
1402     /* 16: addw */
1403     var53.i = var52.i + var42.i;
1404     /* 17: shrsw */
1405     var54.i = var53.i >> 6;
1406     /* 18: convsuswb */
1407     var43 = ORC_CLAMP_UB (var54.i);
1408     /* 19: storeb */
1409     ptr0[i] = var43;
1410   }
1411
1412 }
1413
1414 #else
1415 static void
1416 _backup_cogorc_downsample_vert_halfsite_4tap (OrcExecutor * ORC_RESTRICT ex)
1417 {
1418   int i;
1419   int n = ex->n;
1420   orc_int8 *ORC_RESTRICT ptr0;
1421   const orc_int8 *ORC_RESTRICT ptr4;
1422   const orc_int8 *ORC_RESTRICT ptr5;
1423   const orc_int8 *ORC_RESTRICT ptr6;
1424   const orc_int8 *ORC_RESTRICT ptr7;
1425   orc_int8 var36;
1426   orc_int8 var37;
1427   orc_int8 var38;
1428   orc_int8 var39;
1429   orc_union16 var40;
1430   orc_union16 var41;
1431   orc_union16 var42;
1432   orc_int8 var43;
1433   orc_union16 var44;
1434   orc_union16 var45;
1435   orc_union16 var46;
1436   orc_union16 var47;
1437   orc_union16 var48;
1438   orc_union16 var49;
1439   orc_union16 var50;
1440   orc_union16 var51;
1441   orc_union16 var52;
1442   orc_union16 var53;
1443   orc_union16 var54;
1444
1445   ptr0 = (orc_int8 *) ex->arrays[0];
1446   ptr4 = (orc_int8 *) ex->arrays[4];
1447   ptr5 = (orc_int8 *) ex->arrays[5];
1448   ptr6 = (orc_int8 *) ex->arrays[6];
1449   ptr7 = (orc_int8 *) ex->arrays[7];
1450
1451   /* 9: loadpw */
1452   var40.i = (int) 0x0000001a;   /* 26 or 1.28457e-322f */
1453   /* 12: loadpw */
1454   var41.i = (int) 0x00000006;   /* 6 or 2.96439e-323f */
1455   /* 15: loadpw */
1456   var42.i = (int) 0x00000020;   /* 32 or 1.58101e-322f */
1457
1458   for (i = 0; i < n; i++) {
1459     /* 0: loadb */
1460     var36 = ptr4[i];
1461     /* 1: convubw */
1462     var44.i = (orc_uint8) var36;
1463     /* 2: loadb */
1464     var37 = ptr5[i];
1465     /* 3: convubw */
1466     var45.i = (orc_uint8) var37;
1467     /* 4: loadb */
1468     var38 = ptr6[i];
1469     /* 5: convubw */
1470     var46.i = (orc_uint8) var38;
1471     /* 6: loadb */
1472     var39 = ptr7[i];
1473     /* 7: convubw */
1474     var47.i = (orc_uint8) var39;
1475     /* 8: addw */
1476     var48.i = var45.i + var46.i;
1477     /* 10: mullw */
1478     var49.i = (var48.i * var40.i) & 0xffff;
1479     /* 11: addw */
1480     var50.i = var44.i + var47.i;
1481     /* 13: mullw */
1482     var51.i = (var50.i * var41.i) & 0xffff;
1483     /* 14: addw */
1484     var52.i = var49.i + var51.i;
1485     /* 16: addw */
1486     var53.i = var52.i + var42.i;
1487     /* 17: shrsw */
1488     var54.i = var53.i >> 6;
1489     /* 18: convsuswb */
1490     var43 = ORC_CLAMP_UB (var54.i);
1491     /* 19: storeb */
1492     ptr0[i] = var43;
1493   }
1494
1495 }
1496
1497 void
1498 cogorc_downsample_vert_halfsite_4tap (guint8 * ORC_RESTRICT d1,
1499     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
1500     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n)
1501 {
1502   OrcExecutor _ex, *ex = &_ex;
1503   static volatile int p_inited = 0;
1504   static OrcProgram *p = 0;
1505   void (*func) (OrcExecutor *);
1506
1507   if (!p_inited) {
1508     orc_once_mutex_lock ();
1509     if (!p_inited) {
1510
1511       p = orc_program_new ();
1512       orc_program_set_name (p, "cogorc_downsample_vert_halfsite_4tap");
1513       orc_program_set_backup_function (p,
1514           _backup_cogorc_downsample_vert_halfsite_4tap);
1515       orc_program_add_destination (p, 1, "d1");
1516       orc_program_add_source (p, 1, "s1");
1517       orc_program_add_source (p, 1, "s2");
1518       orc_program_add_source (p, 1, "s3");
1519       orc_program_add_source (p, 1, "s4");
1520       orc_program_add_constant (p, 4, 0x0000001a, "c1");
1521       orc_program_add_constant (p, 4, 0x00000006, "c2");
1522       orc_program_add_constant (p, 4, 0x00000020, "c3");
1523       orc_program_add_temporary (p, 2, "t1");
1524       orc_program_add_temporary (p, 2, "t2");
1525       orc_program_add_temporary (p, 2, "t3");
1526       orc_program_add_temporary (p, 2, "t4");
1527
1528       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
1529           ORC_VAR_D1);
1530       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
1531           ORC_VAR_D1);
1532       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1,
1533           ORC_VAR_D1);
1534       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T4, ORC_VAR_S4, ORC_VAR_D1,
1535           ORC_VAR_D1);
1536       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3,
1537           ORC_VAR_D1);
1538       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1,
1539           ORC_VAR_D1);
1540       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T4,
1541           ORC_VAR_D1);
1542       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2,
1543           ORC_VAR_D1);
1544       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1,
1545           ORC_VAR_D1);
1546       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C3,
1547           ORC_VAR_D1);
1548       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2,
1549           ORC_VAR_D1);
1550       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T2,
1551           ORC_VAR_D1, ORC_VAR_D1);
1552
1553       orc_program_compile (p);
1554     }
1555     p_inited = TRUE;
1556     orc_once_mutex_unlock ();
1557   }
1558   ex->program = p;
1559
1560   ex->n = n;
1561   ex->arrays[ORC_VAR_D1] = d1;
1562   ex->arrays[ORC_VAR_S1] = (void *) s1;
1563   ex->arrays[ORC_VAR_S2] = (void *) s2;
1564   ex->arrays[ORC_VAR_S3] = (void *) s3;
1565   ex->arrays[ORC_VAR_S4] = (void *) s4;
1566
1567   func = p->code_exec;
1568   func (ex);
1569 }
1570 #endif
1571
1572
1573 /* cogorc_upsample_horiz_cosite_1tap */
1574 #ifdef DISABLE_ORC
1575 void
1576 cogorc_upsample_horiz_cosite_1tap (guint8 * ORC_RESTRICT d1,
1577     const guint8 * ORC_RESTRICT s1, int n)
1578 {
1579   int i;
1580   orc_union16 *ORC_RESTRICT ptr0;
1581   const orc_int8 *ORC_RESTRICT ptr4;
1582   orc_int8 var33;
1583   orc_union16 var34;
1584   orc_int8 var35;
1585
1586   ptr0 = (orc_union16 *) d1;
1587   ptr4 = (orc_int8 *) s1;
1588
1589
1590   for (i = 0; i < n; i++) {
1591     /* 0: loadb */
1592     var33 = ptr4[i];
1593     /* 1: copyb */
1594     var35 = var33;
1595     /* 2: mergebw */
1596     {
1597       orc_union16 _dest;
1598       _dest.x2[0] = var35;
1599       _dest.x2[1] = var35;
1600       var34.i = _dest.i;
1601     }
1602     /* 3: storew */
1603     ptr0[i] = var34;
1604   }
1605
1606 }
1607
1608 #else
1609 static void
1610 _backup_cogorc_upsample_horiz_cosite_1tap (OrcExecutor * ORC_RESTRICT ex)
1611 {
1612   int i;
1613   int n = ex->n;
1614   orc_union16 *ORC_RESTRICT ptr0;
1615   const orc_int8 *ORC_RESTRICT ptr4;
1616   orc_int8 var33;
1617   orc_union16 var34;
1618   orc_int8 var35;
1619
1620   ptr0 = (orc_union16 *) ex->arrays[0];
1621   ptr4 = (orc_int8 *) ex->arrays[4];
1622
1623
1624   for (i = 0; i < n; i++) {
1625     /* 0: loadb */
1626     var33 = ptr4[i];
1627     /* 1: copyb */
1628     var35 = var33;
1629     /* 2: mergebw */
1630     {
1631       orc_union16 _dest;
1632       _dest.x2[0] = var35;
1633       _dest.x2[1] = var35;
1634       var34.i = _dest.i;
1635     }
1636     /* 3: storew */
1637     ptr0[i] = var34;
1638   }
1639
1640 }
1641
1642 void
1643 cogorc_upsample_horiz_cosite_1tap (guint8 * ORC_RESTRICT d1,
1644     const guint8 * ORC_RESTRICT s1, int n)
1645 {
1646   OrcExecutor _ex, *ex = &_ex;
1647   static volatile int p_inited = 0;
1648   static OrcProgram *p = 0;
1649   void (*func) (OrcExecutor *);
1650
1651   if (!p_inited) {
1652     orc_once_mutex_lock ();
1653     if (!p_inited) {
1654
1655       p = orc_program_new ();
1656       orc_program_set_name (p, "cogorc_upsample_horiz_cosite_1tap");
1657       orc_program_set_backup_function (p,
1658           _backup_cogorc_upsample_horiz_cosite_1tap);
1659       orc_program_add_destination (p, 2, "d1");
1660       orc_program_add_source (p, 1, "s1");
1661       orc_program_add_temporary (p, 1, "t1");
1662
1663       orc_program_append_2 (p, "copyb", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
1664           ORC_VAR_D1);
1665       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T1,
1666           ORC_VAR_D1);
1667
1668       orc_program_compile (p);
1669     }
1670     p_inited = TRUE;
1671     orc_once_mutex_unlock ();
1672   }
1673   ex->program = p;
1674
1675   ex->n = n;
1676   ex->arrays[ORC_VAR_D1] = d1;
1677   ex->arrays[ORC_VAR_S1] = (void *) s1;
1678
1679   func = p->code_exec;
1680   func (ex);
1681 }
1682 #endif
1683
1684
1685 /* cogorc_upsample_horiz_cosite */
1686 #ifdef DISABLE_ORC
1687 void
1688 cogorc_upsample_horiz_cosite (guint8 * ORC_RESTRICT d1,
1689     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
1690 {
1691   int i;
1692   orc_union16 *ORC_RESTRICT ptr0;
1693   const orc_int8 *ORC_RESTRICT ptr4;
1694   const orc_int8 *ORC_RESTRICT ptr5;
1695   orc_int8 var34;
1696   orc_int8 var35;
1697   orc_union16 var36;
1698   orc_int8 var37;
1699   orc_int8 var38;
1700
1701   ptr0 = (orc_union16 *) d1;
1702   ptr4 = (orc_int8 *) s1;
1703   ptr5 = (orc_int8 *) s2;
1704
1705
1706   for (i = 0; i < n; i++) {
1707     /* 0: loadb */
1708     var34 = ptr4[i];
1709     /* 1: copyb */
1710     var37 = var34;
1711     /* 2: loadb */
1712     var35 = ptr5[i];
1713     /* 3: avgub */
1714     var38 = ((orc_uint8) var37 + (orc_uint8) var35 + 1) >> 1;
1715     /* 4: mergebw */
1716     {
1717       orc_union16 _dest;
1718       _dest.x2[0] = var37;
1719       _dest.x2[1] = var38;
1720       var36.i = _dest.i;
1721     }
1722     /* 5: storew */
1723     ptr0[i] = var36;
1724   }
1725
1726 }
1727
1728 #else
1729 static void
1730 _backup_cogorc_upsample_horiz_cosite (OrcExecutor * ORC_RESTRICT ex)
1731 {
1732   int i;
1733   int n = ex->n;
1734   orc_union16 *ORC_RESTRICT ptr0;
1735   const orc_int8 *ORC_RESTRICT ptr4;
1736   const orc_int8 *ORC_RESTRICT ptr5;
1737   orc_int8 var34;
1738   orc_int8 var35;
1739   orc_union16 var36;
1740   orc_int8 var37;
1741   orc_int8 var38;
1742
1743   ptr0 = (orc_union16 *) ex->arrays[0];
1744   ptr4 = (orc_int8 *) ex->arrays[4];
1745   ptr5 = (orc_int8 *) ex->arrays[5];
1746
1747
1748   for (i = 0; i < n; i++) {
1749     /* 0: loadb */
1750     var34 = ptr4[i];
1751     /* 1: copyb */
1752     var37 = var34;
1753     /* 2: loadb */
1754     var35 = ptr5[i];
1755     /* 3: avgub */
1756     var38 = ((orc_uint8) var37 + (orc_uint8) var35 + 1) >> 1;
1757     /* 4: mergebw */
1758     {
1759       orc_union16 _dest;
1760       _dest.x2[0] = var37;
1761       _dest.x2[1] = var38;
1762       var36.i = _dest.i;
1763     }
1764     /* 5: storew */
1765     ptr0[i] = var36;
1766   }
1767
1768 }
1769
1770 void
1771 cogorc_upsample_horiz_cosite (guint8 * ORC_RESTRICT d1,
1772     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
1773 {
1774   OrcExecutor _ex, *ex = &_ex;
1775   static volatile int p_inited = 0;
1776   static OrcProgram *p = 0;
1777   void (*func) (OrcExecutor *);
1778
1779   if (!p_inited) {
1780     orc_once_mutex_lock ();
1781     if (!p_inited) {
1782
1783       p = orc_program_new ();
1784       orc_program_set_name (p, "cogorc_upsample_horiz_cosite");
1785       orc_program_set_backup_function (p, _backup_cogorc_upsample_horiz_cosite);
1786       orc_program_add_destination (p, 2, "d1");
1787       orc_program_add_source (p, 1, "s1");
1788       orc_program_add_source (p, 1, "s2");
1789       orc_program_add_temporary (p, 1, "t1");
1790       orc_program_add_temporary (p, 1, "t2");
1791
1792       orc_program_append_2 (p, "copyb", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
1793           ORC_VAR_D1);
1794       orc_program_append_2 (p, "avgub", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S2,
1795           ORC_VAR_D1);
1796       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
1797           ORC_VAR_D1);
1798
1799       orc_program_compile (p);
1800     }
1801     p_inited = TRUE;
1802     orc_once_mutex_unlock ();
1803   }
1804   ex->program = p;
1805
1806   ex->n = n;
1807   ex->arrays[ORC_VAR_D1] = d1;
1808   ex->arrays[ORC_VAR_S1] = (void *) s1;
1809   ex->arrays[ORC_VAR_S2] = (void *) s2;
1810
1811   func = p->code_exec;
1812   func (ex);
1813 }
1814 #endif
1815
1816
1817 /* cogorc_upsample_vert_avgub */
1818 #ifdef DISABLE_ORC
1819 void
1820 cogorc_upsample_vert_avgub (guint8 * ORC_RESTRICT d1,
1821     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
1822 {
1823   int i;
1824   orc_int8 *ORC_RESTRICT ptr0;
1825   const orc_int8 *ORC_RESTRICT ptr4;
1826   const orc_int8 *ORC_RESTRICT ptr5;
1827   orc_int8 var32;
1828   orc_int8 var33;
1829   orc_int8 var34;
1830
1831   ptr0 = (orc_int8 *) d1;
1832   ptr4 = (orc_int8 *) s1;
1833   ptr5 = (orc_int8 *) s2;
1834
1835
1836   for (i = 0; i < n; i++) {
1837     /* 0: loadb */
1838     var32 = ptr4[i];
1839     /* 1: loadb */
1840     var33 = ptr5[i];
1841     /* 2: avgub */
1842     var34 = ((orc_uint8) var32 + (orc_uint8) var33 + 1) >> 1;
1843     /* 3: storeb */
1844     ptr0[i] = var34;
1845   }
1846
1847 }
1848
1849 #else
1850 static void
1851 _backup_cogorc_upsample_vert_avgub (OrcExecutor * ORC_RESTRICT ex)
1852 {
1853   int i;
1854   int n = ex->n;
1855   orc_int8 *ORC_RESTRICT ptr0;
1856   const orc_int8 *ORC_RESTRICT ptr4;
1857   const orc_int8 *ORC_RESTRICT ptr5;
1858   orc_int8 var32;
1859   orc_int8 var33;
1860   orc_int8 var34;
1861
1862   ptr0 = (orc_int8 *) ex->arrays[0];
1863   ptr4 = (orc_int8 *) ex->arrays[4];
1864   ptr5 = (orc_int8 *) ex->arrays[5];
1865
1866
1867   for (i = 0; i < n; i++) {
1868     /* 0: loadb */
1869     var32 = ptr4[i];
1870     /* 1: loadb */
1871     var33 = ptr5[i];
1872     /* 2: avgub */
1873     var34 = ((orc_uint8) var32 + (orc_uint8) var33 + 1) >> 1;
1874     /* 3: storeb */
1875     ptr0[i] = var34;
1876   }
1877
1878 }
1879
1880 void
1881 cogorc_upsample_vert_avgub (guint8 * ORC_RESTRICT d1,
1882     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
1883 {
1884   OrcExecutor _ex, *ex = &_ex;
1885   static volatile int p_inited = 0;
1886   static OrcProgram *p = 0;
1887   void (*func) (OrcExecutor *);
1888
1889   if (!p_inited) {
1890     orc_once_mutex_lock ();
1891     if (!p_inited) {
1892
1893       p = orc_program_new ();
1894       orc_program_set_name (p, "cogorc_upsample_vert_avgub");
1895       orc_program_set_backup_function (p, _backup_cogorc_upsample_vert_avgub);
1896       orc_program_add_destination (p, 1, "d1");
1897       orc_program_add_source (p, 1, "s1");
1898       orc_program_add_source (p, 1, "s2");
1899
1900       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S2,
1901           ORC_VAR_D1);
1902
1903       orc_program_compile (p);
1904     }
1905     p_inited = TRUE;
1906     orc_once_mutex_unlock ();
1907   }
1908   ex->program = p;
1909
1910   ex->n = n;
1911   ex->arrays[ORC_VAR_D1] = d1;
1912   ex->arrays[ORC_VAR_S1] = (void *) s1;
1913   ex->arrays[ORC_VAR_S2] = (void *) s2;
1914
1915   func = p->code_exec;
1916   func (ex);
1917 }
1918 #endif
1919
1920
1921 /* orc_unpack_yuyv_y */
1922 #ifdef DISABLE_ORC
1923 void
1924 orc_unpack_yuyv_y (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
1925     int n)
1926 {
1927   int i;
1928   orc_int8 *ORC_RESTRICT ptr0;
1929   const orc_union16 *ORC_RESTRICT ptr4;
1930   orc_union16 var32;
1931   orc_int8 var33;
1932
1933   ptr0 = (orc_int8 *) d1;
1934   ptr4 = (orc_union16 *) s1;
1935
1936
1937   for (i = 0; i < n; i++) {
1938     /* 0: loadw */
1939     var32 = ptr4[i];
1940     /* 1: select0wb */
1941     {
1942       orc_union16 _src;
1943       _src.i = var32.i;
1944       var33 = _src.x2[0];
1945     }
1946     /* 2: storeb */
1947     ptr0[i] = var33;
1948   }
1949
1950 }
1951
1952 #else
1953 static void
1954 _backup_orc_unpack_yuyv_y (OrcExecutor * ORC_RESTRICT ex)
1955 {
1956   int i;
1957   int n = ex->n;
1958   orc_int8 *ORC_RESTRICT ptr0;
1959   const orc_union16 *ORC_RESTRICT ptr4;
1960   orc_union16 var32;
1961   orc_int8 var33;
1962
1963   ptr0 = (orc_int8 *) ex->arrays[0];
1964   ptr4 = (orc_union16 *) ex->arrays[4];
1965
1966
1967   for (i = 0; i < n; i++) {
1968     /* 0: loadw */
1969     var32 = ptr4[i];
1970     /* 1: select0wb */
1971     {
1972       orc_union16 _src;
1973       _src.i = var32.i;
1974       var33 = _src.x2[0];
1975     }
1976     /* 2: storeb */
1977     ptr0[i] = var33;
1978   }
1979
1980 }
1981
1982 void
1983 orc_unpack_yuyv_y (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
1984     int n)
1985 {
1986   OrcExecutor _ex, *ex = &_ex;
1987   static volatile int p_inited = 0;
1988   static OrcProgram *p = 0;
1989   void (*func) (OrcExecutor *);
1990
1991   if (!p_inited) {
1992     orc_once_mutex_lock ();
1993     if (!p_inited) {
1994
1995       p = orc_program_new ();
1996       orc_program_set_name (p, "orc_unpack_yuyv_y");
1997       orc_program_set_backup_function (p, _backup_orc_unpack_yuyv_y);
1998       orc_program_add_destination (p, 1, "d1");
1999       orc_program_add_source (p, 2, "s1");
2000
2001       orc_program_append_2 (p, "select0wb", 0, ORC_VAR_D1, ORC_VAR_S1,
2002           ORC_VAR_D1, ORC_VAR_D1);
2003
2004       orc_program_compile (p);
2005     }
2006     p_inited = TRUE;
2007     orc_once_mutex_unlock ();
2008   }
2009   ex->program = p;
2010
2011   ex->n = n;
2012   ex->arrays[ORC_VAR_D1] = d1;
2013   ex->arrays[ORC_VAR_S1] = (void *) s1;
2014
2015   func = p->code_exec;
2016   func (ex);
2017 }
2018 #endif
2019
2020
2021 /* orc_unpack_yuyv_u */
2022 #ifdef DISABLE_ORC
2023 void
2024 orc_unpack_yuyv_u (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
2025     int n)
2026 {
2027   int i;
2028   orc_int8 *ORC_RESTRICT ptr0;
2029   const orc_union32 *ORC_RESTRICT ptr4;
2030   orc_union32 var33;
2031   orc_int8 var34;
2032   orc_union16 var35;
2033
2034   ptr0 = (orc_int8 *) d1;
2035   ptr4 = (orc_union32 *) s1;
2036
2037
2038   for (i = 0; i < n; i++) {
2039     /* 0: loadl */
2040     var33 = ptr4[i];
2041     /* 1: select0lw */
2042     {
2043       orc_union32 _src;
2044       _src.i = var33.i;
2045       var35.i = _src.x2[0];
2046     }
2047     /* 2: select1wb */
2048     {
2049       orc_union16 _src;
2050       _src.i = var35.i;
2051       var34 = _src.x2[1];
2052     }
2053     /* 3: storeb */
2054     ptr0[i] = var34;
2055   }
2056
2057 }
2058
2059 #else
2060 static void
2061 _backup_orc_unpack_yuyv_u (OrcExecutor * ORC_RESTRICT ex)
2062 {
2063   int i;
2064   int n = ex->n;
2065   orc_int8 *ORC_RESTRICT ptr0;
2066   const orc_union32 *ORC_RESTRICT ptr4;
2067   orc_union32 var33;
2068   orc_int8 var34;
2069   orc_union16 var35;
2070
2071   ptr0 = (orc_int8 *) ex->arrays[0];
2072   ptr4 = (orc_union32 *) ex->arrays[4];
2073
2074
2075   for (i = 0; i < n; i++) {
2076     /* 0: loadl */
2077     var33 = ptr4[i];
2078     /* 1: select0lw */
2079     {
2080       orc_union32 _src;
2081       _src.i = var33.i;
2082       var35.i = _src.x2[0];
2083     }
2084     /* 2: select1wb */
2085     {
2086       orc_union16 _src;
2087       _src.i = var35.i;
2088       var34 = _src.x2[1];
2089     }
2090     /* 3: storeb */
2091     ptr0[i] = var34;
2092   }
2093
2094 }
2095
2096 void
2097 orc_unpack_yuyv_u (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
2098     int n)
2099 {
2100   OrcExecutor _ex, *ex = &_ex;
2101   static volatile int p_inited = 0;
2102   static OrcProgram *p = 0;
2103   void (*func) (OrcExecutor *);
2104
2105   if (!p_inited) {
2106     orc_once_mutex_lock ();
2107     if (!p_inited) {
2108
2109       p = orc_program_new ();
2110       orc_program_set_name (p, "orc_unpack_yuyv_u");
2111       orc_program_set_backup_function (p, _backup_orc_unpack_yuyv_u);
2112       orc_program_add_destination (p, 1, "d1");
2113       orc_program_add_source (p, 4, "s1");
2114       orc_program_add_temporary (p, 2, "t1");
2115
2116       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_S1,
2117           ORC_VAR_D1, ORC_VAR_D1);
2118       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1,
2119           ORC_VAR_D1, ORC_VAR_D1);
2120
2121       orc_program_compile (p);
2122     }
2123     p_inited = TRUE;
2124     orc_once_mutex_unlock ();
2125   }
2126   ex->program = p;
2127
2128   ex->n = n;
2129   ex->arrays[ORC_VAR_D1] = d1;
2130   ex->arrays[ORC_VAR_S1] = (void *) s1;
2131
2132   func = p->code_exec;
2133   func (ex);
2134 }
2135 #endif
2136
2137
2138 /* orc_unpack_yuyv_v */
2139 #ifdef DISABLE_ORC
2140 void
2141 orc_unpack_yuyv_v (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
2142     int n)
2143 {
2144   int i;
2145   orc_int8 *ORC_RESTRICT ptr0;
2146   const orc_union32 *ORC_RESTRICT ptr4;
2147   orc_union32 var33;
2148   orc_int8 var34;
2149   orc_union16 var35;
2150
2151   ptr0 = (orc_int8 *) d1;
2152   ptr4 = (orc_union32 *) s1;
2153
2154
2155   for (i = 0; i < n; i++) {
2156     /* 0: loadl */
2157     var33 = ptr4[i];
2158     /* 1: select1lw */
2159     {
2160       orc_union32 _src;
2161       _src.i = var33.i;
2162       var35.i = _src.x2[1];
2163     }
2164     /* 2: select1wb */
2165     {
2166       orc_union16 _src;
2167       _src.i = var35.i;
2168       var34 = _src.x2[1];
2169     }
2170     /* 3: storeb */
2171     ptr0[i] = var34;
2172   }
2173
2174 }
2175
2176 #else
2177 static void
2178 _backup_orc_unpack_yuyv_v (OrcExecutor * ORC_RESTRICT ex)
2179 {
2180   int i;
2181   int n = ex->n;
2182   orc_int8 *ORC_RESTRICT ptr0;
2183   const orc_union32 *ORC_RESTRICT ptr4;
2184   orc_union32 var33;
2185   orc_int8 var34;
2186   orc_union16 var35;
2187
2188   ptr0 = (orc_int8 *) ex->arrays[0];
2189   ptr4 = (orc_union32 *) ex->arrays[4];
2190
2191
2192   for (i = 0; i < n; i++) {
2193     /* 0: loadl */
2194     var33 = ptr4[i];
2195     /* 1: select1lw */
2196     {
2197       orc_union32 _src;
2198       _src.i = var33.i;
2199       var35.i = _src.x2[1];
2200     }
2201     /* 2: select1wb */
2202     {
2203       orc_union16 _src;
2204       _src.i = var35.i;
2205       var34 = _src.x2[1];
2206     }
2207     /* 3: storeb */
2208     ptr0[i] = var34;
2209   }
2210
2211 }
2212
2213 void
2214 orc_unpack_yuyv_v (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
2215     int n)
2216 {
2217   OrcExecutor _ex, *ex = &_ex;
2218   static volatile int p_inited = 0;
2219   static OrcProgram *p = 0;
2220   void (*func) (OrcExecutor *);
2221
2222   if (!p_inited) {
2223     orc_once_mutex_lock ();
2224     if (!p_inited) {
2225
2226       p = orc_program_new ();
2227       orc_program_set_name (p, "orc_unpack_yuyv_v");
2228       orc_program_set_backup_function (p, _backup_orc_unpack_yuyv_v);
2229       orc_program_add_destination (p, 1, "d1");
2230       orc_program_add_source (p, 4, "s1");
2231       orc_program_add_temporary (p, 2, "t1");
2232
2233       orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T1, ORC_VAR_S1,
2234           ORC_VAR_D1, ORC_VAR_D1);
2235       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1,
2236           ORC_VAR_D1, ORC_VAR_D1);
2237
2238       orc_program_compile (p);
2239     }
2240     p_inited = TRUE;
2241     orc_once_mutex_unlock ();
2242   }
2243   ex->program = p;
2244
2245   ex->n = n;
2246   ex->arrays[ORC_VAR_D1] = d1;
2247   ex->arrays[ORC_VAR_S1] = (void *) s1;
2248
2249   func = p->code_exec;
2250   func (ex);
2251 }
2252 #endif
2253
2254
2255 /* orc_pack_yuyv */
2256 #ifdef DISABLE_ORC
2257 void
2258 orc_pack_yuyv (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
2259     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n)
2260 {
2261   int i;
2262   orc_union32 *ORC_RESTRICT ptr0;
2263   const orc_union16 *ORC_RESTRICT ptr4;
2264   const orc_int8 *ORC_RESTRICT ptr5;
2265   const orc_int8 *ORC_RESTRICT ptr6;
2266   orc_union16 var37;
2267   orc_int8 var38;
2268   orc_int8 var39;
2269   orc_union32 var40;
2270   orc_union16 var41;
2271   orc_int8 var42;
2272   orc_int8 var43;
2273   orc_union16 var44;
2274   orc_union16 var45;
2275
2276   ptr0 = (orc_union32 *) d1;
2277   ptr4 = (orc_union16 *) s1;
2278   ptr5 = (orc_int8 *) s2;
2279   ptr6 = (orc_int8 *) s3;
2280
2281
2282   for (i = 0; i < n; i++) {
2283     /* 0: loadw */
2284     var37 = ptr4[i];
2285     /* 1: copyw */
2286     var41.i = var37.i;
2287     /* 2: select0wb */
2288     {
2289       orc_union16 _src;
2290       _src.i = var41.i;
2291       var42 = _src.x2[0];
2292     }
2293     /* 3: select1wb */
2294     {
2295       orc_union16 _src;
2296       _src.i = var41.i;
2297       var43 = _src.x2[1];
2298     }
2299     /* 4: loadb */
2300     var38 = ptr5[i];
2301     /* 5: mergebw */
2302     {
2303       orc_union16 _dest;
2304       _dest.x2[0] = var42;
2305       _dest.x2[1] = var38;
2306       var44.i = _dest.i;
2307     }
2308     /* 6: loadb */
2309     var39 = ptr6[i];
2310     /* 7: mergebw */
2311     {
2312       orc_union16 _dest;
2313       _dest.x2[0] = var43;
2314       _dest.x2[1] = var39;
2315       var45.i = _dest.i;
2316     }
2317     /* 8: mergewl */
2318     {
2319       orc_union32 _dest;
2320       _dest.x2[0] = var44.i;
2321       _dest.x2[1] = var45.i;
2322       var40.i = _dest.i;
2323     }
2324     /* 9: storel */
2325     ptr0[i] = var40;
2326   }
2327
2328 }
2329
2330 #else
2331 static void
2332 _backup_orc_pack_yuyv (OrcExecutor * ORC_RESTRICT ex)
2333 {
2334   int i;
2335   int n = ex->n;
2336   orc_union32 *ORC_RESTRICT ptr0;
2337   const orc_union16 *ORC_RESTRICT ptr4;
2338   const orc_int8 *ORC_RESTRICT ptr5;
2339   const orc_int8 *ORC_RESTRICT ptr6;
2340   orc_union16 var37;
2341   orc_int8 var38;
2342   orc_int8 var39;
2343   orc_union32 var40;
2344   orc_union16 var41;
2345   orc_int8 var42;
2346   orc_int8 var43;
2347   orc_union16 var44;
2348   orc_union16 var45;
2349
2350   ptr0 = (orc_union32 *) ex->arrays[0];
2351   ptr4 = (orc_union16 *) ex->arrays[4];
2352   ptr5 = (orc_int8 *) ex->arrays[5];
2353   ptr6 = (orc_int8 *) ex->arrays[6];
2354
2355
2356   for (i = 0; i < n; i++) {
2357     /* 0: loadw */
2358     var37 = ptr4[i];
2359     /* 1: copyw */
2360     var41.i = var37.i;
2361     /* 2: select0wb */
2362     {
2363       orc_union16 _src;
2364       _src.i = var41.i;
2365       var42 = _src.x2[0];
2366     }
2367     /* 3: select1wb */
2368     {
2369       orc_union16 _src;
2370       _src.i = var41.i;
2371       var43 = _src.x2[1];
2372     }
2373     /* 4: loadb */
2374     var38 = ptr5[i];
2375     /* 5: mergebw */
2376     {
2377       orc_union16 _dest;
2378       _dest.x2[0] = var42;
2379       _dest.x2[1] = var38;
2380       var44.i = _dest.i;
2381     }
2382     /* 6: loadb */
2383     var39 = ptr6[i];
2384     /* 7: mergebw */
2385     {
2386       orc_union16 _dest;
2387       _dest.x2[0] = var43;
2388       _dest.x2[1] = var39;
2389       var45.i = _dest.i;
2390     }
2391     /* 8: mergewl */
2392     {
2393       orc_union32 _dest;
2394       _dest.x2[0] = var44.i;
2395       _dest.x2[1] = var45.i;
2396       var40.i = _dest.i;
2397     }
2398     /* 9: storel */
2399     ptr0[i] = var40;
2400   }
2401
2402 }
2403
2404 void
2405 orc_pack_yuyv (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
2406     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n)
2407 {
2408   OrcExecutor _ex, *ex = &_ex;
2409   static volatile int p_inited = 0;
2410   static OrcProgram *p = 0;
2411   void (*func) (OrcExecutor *);
2412
2413   if (!p_inited) {
2414     orc_once_mutex_lock ();
2415     if (!p_inited) {
2416
2417       p = orc_program_new ();
2418       orc_program_set_name (p, "orc_pack_yuyv");
2419       orc_program_set_backup_function (p, _backup_orc_pack_yuyv);
2420       orc_program_add_destination (p, 4, "d1");
2421       orc_program_add_source (p, 2, "s1");
2422       orc_program_add_source (p, 1, "s2");
2423       orc_program_add_source (p, 1, "s3");
2424       orc_program_add_temporary (p, 1, "t1");
2425       orc_program_add_temporary (p, 1, "t2");
2426       orc_program_add_temporary (p, 2, "t3");
2427       orc_program_add_temporary (p, 2, "t4");
2428       orc_program_add_temporary (p, 2, "t5");
2429
2430       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T5, ORC_VAR_S1, ORC_VAR_D1,
2431           ORC_VAR_D1);
2432       orc_program_append_2 (p, "select0wb", 0, ORC_VAR_T1, ORC_VAR_T5,
2433           ORC_VAR_D1, ORC_VAR_D1);
2434       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T2, ORC_VAR_T5,
2435           ORC_VAR_D1, ORC_VAR_D1);
2436       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_S2,
2437           ORC_VAR_D1);
2438       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_S3,
2439           ORC_VAR_D1);
2440       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4,
2441           ORC_VAR_D1);
2442
2443       orc_program_compile (p);
2444     }
2445     p_inited = TRUE;
2446     orc_once_mutex_unlock ();
2447   }
2448   ex->program = p;
2449
2450   ex->n = n;
2451   ex->arrays[ORC_VAR_D1] = d1;
2452   ex->arrays[ORC_VAR_S1] = (void *) s1;
2453   ex->arrays[ORC_VAR_S2] = (void *) s2;
2454   ex->arrays[ORC_VAR_S3] = (void *) s3;
2455
2456   func = p->code_exec;
2457   func (ex);
2458 }
2459 #endif
2460
2461
2462 /* orc_unpack_uyvy_y */
2463 #ifdef DISABLE_ORC
2464 void
2465 orc_unpack_uyvy_y (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
2466     int n)
2467 {
2468   int i;
2469   orc_int8 *ORC_RESTRICT ptr0;
2470   const orc_union16 *ORC_RESTRICT ptr4;
2471   orc_union16 var32;
2472   orc_int8 var33;
2473
2474   ptr0 = (orc_int8 *) d1;
2475   ptr4 = (orc_union16 *) s1;
2476
2477
2478   for (i = 0; i < n; i++) {
2479     /* 0: loadw */
2480     var32 = ptr4[i];
2481     /* 1: select1wb */
2482     {
2483       orc_union16 _src;
2484       _src.i = var32.i;
2485       var33 = _src.x2[1];
2486     }
2487     /* 2: storeb */
2488     ptr0[i] = var33;
2489   }
2490
2491 }
2492
2493 #else
2494 static void
2495 _backup_orc_unpack_uyvy_y (OrcExecutor * ORC_RESTRICT ex)
2496 {
2497   int i;
2498   int n = ex->n;
2499   orc_int8 *ORC_RESTRICT ptr0;
2500   const orc_union16 *ORC_RESTRICT ptr4;
2501   orc_union16 var32;
2502   orc_int8 var33;
2503
2504   ptr0 = (orc_int8 *) ex->arrays[0];
2505   ptr4 = (orc_union16 *) ex->arrays[4];
2506
2507
2508   for (i = 0; i < n; i++) {
2509     /* 0: loadw */
2510     var32 = ptr4[i];
2511     /* 1: select1wb */
2512     {
2513       orc_union16 _src;
2514       _src.i = var32.i;
2515       var33 = _src.x2[1];
2516     }
2517     /* 2: storeb */
2518     ptr0[i] = var33;
2519   }
2520
2521 }
2522
2523 void
2524 orc_unpack_uyvy_y (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
2525     int n)
2526 {
2527   OrcExecutor _ex, *ex = &_ex;
2528   static volatile int p_inited = 0;
2529   static OrcProgram *p = 0;
2530   void (*func) (OrcExecutor *);
2531
2532   if (!p_inited) {
2533     orc_once_mutex_lock ();
2534     if (!p_inited) {
2535
2536       p = orc_program_new ();
2537       orc_program_set_name (p, "orc_unpack_uyvy_y");
2538       orc_program_set_backup_function (p, _backup_orc_unpack_uyvy_y);
2539       orc_program_add_destination (p, 1, "d1");
2540       orc_program_add_source (p, 2, "s1");
2541
2542       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_S1,
2543           ORC_VAR_D1, ORC_VAR_D1);
2544
2545       orc_program_compile (p);
2546     }
2547     p_inited = TRUE;
2548     orc_once_mutex_unlock ();
2549   }
2550   ex->program = p;
2551
2552   ex->n = n;
2553   ex->arrays[ORC_VAR_D1] = d1;
2554   ex->arrays[ORC_VAR_S1] = (void *) s1;
2555
2556   func = p->code_exec;
2557   func (ex);
2558 }
2559 #endif
2560
2561
2562 /* orc_unpack_uyvy_u */
2563 #ifdef DISABLE_ORC
2564 void
2565 orc_unpack_uyvy_u (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
2566     int n)
2567 {
2568   int i;
2569   orc_int8 *ORC_RESTRICT ptr0;
2570   const orc_union32 *ORC_RESTRICT ptr4;
2571   orc_union32 var33;
2572   orc_int8 var34;
2573   orc_union16 var35;
2574
2575   ptr0 = (orc_int8 *) d1;
2576   ptr4 = (orc_union32 *) s1;
2577
2578
2579   for (i = 0; i < n; i++) {
2580     /* 0: loadl */
2581     var33 = ptr4[i];
2582     /* 1: select0lw */
2583     {
2584       orc_union32 _src;
2585       _src.i = var33.i;
2586       var35.i = _src.x2[0];
2587     }
2588     /* 2: select0wb */
2589     {
2590       orc_union16 _src;
2591       _src.i = var35.i;
2592       var34 = _src.x2[0];
2593     }
2594     /* 3: storeb */
2595     ptr0[i] = var34;
2596   }
2597
2598 }
2599
2600 #else
2601 static void
2602 _backup_orc_unpack_uyvy_u (OrcExecutor * ORC_RESTRICT ex)
2603 {
2604   int i;
2605   int n = ex->n;
2606   orc_int8 *ORC_RESTRICT ptr0;
2607   const orc_union32 *ORC_RESTRICT ptr4;
2608   orc_union32 var33;
2609   orc_int8 var34;
2610   orc_union16 var35;
2611
2612   ptr0 = (orc_int8 *) ex->arrays[0];
2613   ptr4 = (orc_union32 *) ex->arrays[4];
2614
2615
2616   for (i = 0; i < n; i++) {
2617     /* 0: loadl */
2618     var33 = ptr4[i];
2619     /* 1: select0lw */
2620     {
2621       orc_union32 _src;
2622       _src.i = var33.i;
2623       var35.i = _src.x2[0];
2624     }
2625     /* 2: select0wb */
2626     {
2627       orc_union16 _src;
2628       _src.i = var35.i;
2629       var34 = _src.x2[0];
2630     }
2631     /* 3: storeb */
2632     ptr0[i] = var34;
2633   }
2634
2635 }
2636
2637 void
2638 orc_unpack_uyvy_u (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
2639     int n)
2640 {
2641   OrcExecutor _ex, *ex = &_ex;
2642   static volatile int p_inited = 0;
2643   static OrcProgram *p = 0;
2644   void (*func) (OrcExecutor *);
2645
2646   if (!p_inited) {
2647     orc_once_mutex_lock ();
2648     if (!p_inited) {
2649
2650       p = orc_program_new ();
2651       orc_program_set_name (p, "orc_unpack_uyvy_u");
2652       orc_program_set_backup_function (p, _backup_orc_unpack_uyvy_u);
2653       orc_program_add_destination (p, 1, "d1");
2654       orc_program_add_source (p, 4, "s1");
2655       orc_program_add_temporary (p, 2, "t1");
2656
2657       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_S1,
2658           ORC_VAR_D1, ORC_VAR_D1);
2659       orc_program_append_2 (p, "select0wb", 0, ORC_VAR_D1, ORC_VAR_T1,
2660           ORC_VAR_D1, ORC_VAR_D1);
2661
2662       orc_program_compile (p);
2663     }
2664     p_inited = TRUE;
2665     orc_once_mutex_unlock ();
2666   }
2667   ex->program = p;
2668
2669   ex->n = n;
2670   ex->arrays[ORC_VAR_D1] = d1;
2671   ex->arrays[ORC_VAR_S1] = (void *) s1;
2672
2673   func = p->code_exec;
2674   func (ex);
2675 }
2676 #endif
2677
2678
2679 /* orc_unpack_uyvy_v */
2680 #ifdef DISABLE_ORC
2681 void
2682 orc_unpack_uyvy_v (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
2683     int n)
2684 {
2685   int i;
2686   orc_int8 *ORC_RESTRICT ptr0;
2687   const orc_union32 *ORC_RESTRICT ptr4;
2688   orc_union32 var33;
2689   orc_int8 var34;
2690   orc_union16 var35;
2691
2692   ptr0 = (orc_int8 *) d1;
2693   ptr4 = (orc_union32 *) s1;
2694
2695
2696   for (i = 0; i < n; i++) {
2697     /* 0: loadl */
2698     var33 = ptr4[i];
2699     /* 1: select1lw */
2700     {
2701       orc_union32 _src;
2702       _src.i = var33.i;
2703       var35.i = _src.x2[1];
2704     }
2705     /* 2: select0wb */
2706     {
2707       orc_union16 _src;
2708       _src.i = var35.i;
2709       var34 = _src.x2[0];
2710     }
2711     /* 3: storeb */
2712     ptr0[i] = var34;
2713   }
2714
2715 }
2716
2717 #else
2718 static void
2719 _backup_orc_unpack_uyvy_v (OrcExecutor * ORC_RESTRICT ex)
2720 {
2721   int i;
2722   int n = ex->n;
2723   orc_int8 *ORC_RESTRICT ptr0;
2724   const orc_union32 *ORC_RESTRICT ptr4;
2725   orc_union32 var33;
2726   orc_int8 var34;
2727   orc_union16 var35;
2728
2729   ptr0 = (orc_int8 *) ex->arrays[0];
2730   ptr4 = (orc_union32 *) ex->arrays[4];
2731
2732
2733   for (i = 0; i < n; i++) {
2734     /* 0: loadl */
2735     var33 = ptr4[i];
2736     /* 1: select1lw */
2737     {
2738       orc_union32 _src;
2739       _src.i = var33.i;
2740       var35.i = _src.x2[1];
2741     }
2742     /* 2: select0wb */
2743     {
2744       orc_union16 _src;
2745       _src.i = var35.i;
2746       var34 = _src.x2[0];
2747     }
2748     /* 3: storeb */
2749     ptr0[i] = var34;
2750   }
2751
2752 }
2753
2754 void
2755 orc_unpack_uyvy_v (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
2756     int n)
2757 {
2758   OrcExecutor _ex, *ex = &_ex;
2759   static volatile int p_inited = 0;
2760   static OrcProgram *p = 0;
2761   void (*func) (OrcExecutor *);
2762
2763   if (!p_inited) {
2764     orc_once_mutex_lock ();
2765     if (!p_inited) {
2766
2767       p = orc_program_new ();
2768       orc_program_set_name (p, "orc_unpack_uyvy_v");
2769       orc_program_set_backup_function (p, _backup_orc_unpack_uyvy_v);
2770       orc_program_add_destination (p, 1, "d1");
2771       orc_program_add_source (p, 4, "s1");
2772       orc_program_add_temporary (p, 2, "t1");
2773
2774       orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T1, ORC_VAR_S1,
2775           ORC_VAR_D1, ORC_VAR_D1);
2776       orc_program_append_2 (p, "select0wb", 0, ORC_VAR_D1, ORC_VAR_T1,
2777           ORC_VAR_D1, ORC_VAR_D1);
2778
2779       orc_program_compile (p);
2780     }
2781     p_inited = TRUE;
2782     orc_once_mutex_unlock ();
2783   }
2784   ex->program = p;
2785
2786   ex->n = n;
2787   ex->arrays[ORC_VAR_D1] = d1;
2788   ex->arrays[ORC_VAR_S1] = (void *) s1;
2789
2790   func = p->code_exec;
2791   func (ex);
2792 }
2793 #endif
2794
2795
2796 /* orc_pack_uyvy */
2797 #ifdef DISABLE_ORC
2798 void
2799 orc_pack_uyvy (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
2800     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n)
2801 {
2802   int i;
2803   orc_union32 *ORC_RESTRICT ptr0;
2804   const orc_union16 *ORC_RESTRICT ptr4;
2805   const orc_int8 *ORC_RESTRICT ptr5;
2806   const orc_int8 *ORC_RESTRICT ptr6;
2807   orc_union16 var37;
2808   orc_int8 var38;
2809   orc_int8 var39;
2810   orc_union32 var40;
2811   orc_union16 var41;
2812   orc_int8 var42;
2813   orc_int8 var43;
2814   orc_union16 var44;
2815   orc_union16 var45;
2816
2817   ptr0 = (orc_union32 *) d1;
2818   ptr4 = (orc_union16 *) s1;
2819   ptr5 = (orc_int8 *) s2;
2820   ptr6 = (orc_int8 *) s3;
2821
2822
2823   for (i = 0; i < n; i++) {
2824     /* 0: loadw */
2825     var37 = ptr4[i];
2826     /* 1: copyw */
2827     var41.i = var37.i;
2828     /* 2: select0wb */
2829     {
2830       orc_union16 _src;
2831       _src.i = var41.i;
2832       var42 = _src.x2[0];
2833     }
2834     /* 3: select1wb */
2835     {
2836       orc_union16 _src;
2837       _src.i = var41.i;
2838       var43 = _src.x2[1];
2839     }
2840     /* 4: loadb */
2841     var38 = ptr5[i];
2842     /* 5: mergebw */
2843     {
2844       orc_union16 _dest;
2845       _dest.x2[0] = var38;
2846       _dest.x2[1] = var42;
2847       var44.i = _dest.i;
2848     }
2849     /* 6: loadb */
2850     var39 = ptr6[i];
2851     /* 7: mergebw */
2852     {
2853       orc_union16 _dest;
2854       _dest.x2[0] = var39;
2855       _dest.x2[1] = var43;
2856       var45.i = _dest.i;
2857     }
2858     /* 8: mergewl */
2859     {
2860       orc_union32 _dest;
2861       _dest.x2[0] = var44.i;
2862       _dest.x2[1] = var45.i;
2863       var40.i = _dest.i;
2864     }
2865     /* 9: storel */
2866     ptr0[i] = var40;
2867   }
2868
2869 }
2870
2871 #else
2872 static void
2873 _backup_orc_pack_uyvy (OrcExecutor * ORC_RESTRICT ex)
2874 {
2875   int i;
2876   int n = ex->n;
2877   orc_union32 *ORC_RESTRICT ptr0;
2878   const orc_union16 *ORC_RESTRICT ptr4;
2879   const orc_int8 *ORC_RESTRICT ptr5;
2880   const orc_int8 *ORC_RESTRICT ptr6;
2881   orc_union16 var37;
2882   orc_int8 var38;
2883   orc_int8 var39;
2884   orc_union32 var40;
2885   orc_union16 var41;
2886   orc_int8 var42;
2887   orc_int8 var43;
2888   orc_union16 var44;
2889   orc_union16 var45;
2890
2891   ptr0 = (orc_union32 *) ex->arrays[0];
2892   ptr4 = (orc_union16 *) ex->arrays[4];
2893   ptr5 = (orc_int8 *) ex->arrays[5];
2894   ptr6 = (orc_int8 *) ex->arrays[6];
2895
2896
2897   for (i = 0; i < n; i++) {
2898     /* 0: loadw */
2899     var37 = ptr4[i];
2900     /* 1: copyw */
2901     var41.i = var37.i;
2902     /* 2: select0wb */
2903     {
2904       orc_union16 _src;
2905       _src.i = var41.i;
2906       var42 = _src.x2[0];
2907     }
2908     /* 3: select1wb */
2909     {
2910       orc_union16 _src;
2911       _src.i = var41.i;
2912       var43 = _src.x2[1];
2913     }
2914     /* 4: loadb */
2915     var38 = ptr5[i];
2916     /* 5: mergebw */
2917     {
2918       orc_union16 _dest;
2919       _dest.x2[0] = var38;
2920       _dest.x2[1] = var42;
2921       var44.i = _dest.i;
2922     }
2923     /* 6: loadb */
2924     var39 = ptr6[i];
2925     /* 7: mergebw */
2926     {
2927       orc_union16 _dest;
2928       _dest.x2[0] = var39;
2929       _dest.x2[1] = var43;
2930       var45.i = _dest.i;
2931     }
2932     /* 8: mergewl */
2933     {
2934       orc_union32 _dest;
2935       _dest.x2[0] = var44.i;
2936       _dest.x2[1] = var45.i;
2937       var40.i = _dest.i;
2938     }
2939     /* 9: storel */
2940     ptr0[i] = var40;
2941   }
2942
2943 }
2944
2945 void
2946 orc_pack_uyvy (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
2947     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n)
2948 {
2949   OrcExecutor _ex, *ex = &_ex;
2950   static volatile int p_inited = 0;
2951   static OrcProgram *p = 0;
2952   void (*func) (OrcExecutor *);
2953
2954   if (!p_inited) {
2955     orc_once_mutex_lock ();
2956     if (!p_inited) {
2957
2958       p = orc_program_new ();
2959       orc_program_set_name (p, "orc_pack_uyvy");
2960       orc_program_set_backup_function (p, _backup_orc_pack_uyvy);
2961       orc_program_add_destination (p, 4, "d1");
2962       orc_program_add_source (p, 2, "s1");
2963       orc_program_add_source (p, 1, "s2");
2964       orc_program_add_source (p, 1, "s3");
2965       orc_program_add_temporary (p, 1, "t1");
2966       orc_program_add_temporary (p, 1, "t2");
2967       orc_program_add_temporary (p, 2, "t3");
2968       orc_program_add_temporary (p, 2, "t4");
2969       orc_program_add_temporary (p, 2, "t5");
2970
2971       orc_program_append_2 (p, "copyw", 0, ORC_VAR_T5, ORC_VAR_S1, ORC_VAR_D1,
2972           ORC_VAR_D1);
2973       orc_program_append_2 (p, "select0wb", 0, ORC_VAR_T1, ORC_VAR_T5,
2974           ORC_VAR_D1, ORC_VAR_D1);
2975       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T2, ORC_VAR_T5,
2976           ORC_VAR_D1, ORC_VAR_D1);
2977       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T3, ORC_VAR_S2, ORC_VAR_T1,
2978           ORC_VAR_D1);
2979       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T4, ORC_VAR_S3, ORC_VAR_T2,
2980           ORC_VAR_D1);
2981       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4,
2982           ORC_VAR_D1);
2983
2984       orc_program_compile (p);
2985     }
2986     p_inited = TRUE;
2987     orc_once_mutex_unlock ();
2988   }
2989   ex->program = p;
2990
2991   ex->n = n;
2992   ex->arrays[ORC_VAR_D1] = d1;
2993   ex->arrays[ORC_VAR_S1] = (void *) s1;
2994   ex->arrays[ORC_VAR_S2] = (void *) s2;
2995   ex->arrays[ORC_VAR_S3] = (void *) s3;
2996
2997   func = p->code_exec;
2998   func (ex);
2999 }
3000 #endif
3001
3002
3003 /* orc_matrix2_u8 */
3004 #ifdef DISABLE_ORC
3005 void
3006 orc_matrix2_u8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
3007     const guint8 * ORC_RESTRICT s2, int p1, int p2, int p3, int n)
3008 {
3009   int i;
3010   orc_int8 *ORC_RESTRICT ptr0;
3011   const orc_int8 *ORC_RESTRICT ptr4;
3012   const orc_int8 *ORC_RESTRICT ptr5;
3013   orc_int8 var34;
3014   orc_union16 var35;
3015   orc_int8 var36;
3016   orc_union16 var37;
3017   orc_union16 var38;
3018   orc_int8 var39;
3019   orc_union16 var40;
3020   orc_union16 var41;
3021   orc_union16 var42;
3022   orc_union16 var43;
3023   orc_union16 var44;
3024   orc_union16 var45;
3025   orc_union16 var46;
3026
3027   ptr0 = (orc_int8 *) d1;
3028   ptr4 = (orc_int8 *) s1;
3029   ptr5 = (orc_int8 *) s2;
3030
3031   /* 2: loadpw */
3032   var35.i = p1;
3033   /* 6: loadpw */
3034   var37.i = p2;
3035   /* 9: loadpw */
3036   var38.i = p3;
3037
3038   for (i = 0; i < n; i++) {
3039     /* 0: loadb */
3040     var34 = ptr4[i];
3041     /* 1: convubw */
3042     var40.i = (orc_uint8) var34;
3043     /* 3: mullw */
3044     var41.i = (var40.i * var35.i) & 0xffff;
3045     /* 4: loadb */
3046     var36 = ptr5[i];
3047     /* 5: convubw */
3048     var42.i = (orc_uint8) var36;
3049     /* 7: mullw */
3050     var43.i = (var42.i * var37.i) & 0xffff;
3051     /* 8: addw */
3052     var44.i = var41.i + var43.i;
3053     /* 10: addw */
3054     var45.i = var44.i + var38.i;
3055     /* 11: shrsw */
3056     var46.i = var45.i >> 6;
3057     /* 12: convsuswb */
3058     var39 = ORC_CLAMP_UB (var46.i);
3059     /* 13: storeb */
3060     ptr0[i] = var39;
3061   }
3062
3063 }
3064
3065 #else
3066 static void
3067 _backup_orc_matrix2_u8 (OrcExecutor * ORC_RESTRICT ex)
3068 {
3069   int i;
3070   int n = ex->n;
3071   orc_int8 *ORC_RESTRICT ptr0;
3072   const orc_int8 *ORC_RESTRICT ptr4;
3073   const orc_int8 *ORC_RESTRICT ptr5;
3074   orc_int8 var34;
3075   orc_union16 var35;
3076   orc_int8 var36;
3077   orc_union16 var37;
3078   orc_union16 var38;
3079   orc_int8 var39;
3080   orc_union16 var40;
3081   orc_union16 var41;
3082   orc_union16 var42;
3083   orc_union16 var43;
3084   orc_union16 var44;
3085   orc_union16 var45;
3086   orc_union16 var46;
3087
3088   ptr0 = (orc_int8 *) ex->arrays[0];
3089   ptr4 = (orc_int8 *) ex->arrays[4];
3090   ptr5 = (orc_int8 *) ex->arrays[5];
3091
3092   /* 2: loadpw */
3093   var35.i = ex->params[24];
3094   /* 6: loadpw */
3095   var37.i = ex->params[25];
3096   /* 9: loadpw */
3097   var38.i = ex->params[26];
3098
3099   for (i = 0; i < n; i++) {
3100     /* 0: loadb */
3101     var34 = ptr4[i];
3102     /* 1: convubw */
3103     var40.i = (orc_uint8) var34;
3104     /* 3: mullw */
3105     var41.i = (var40.i * var35.i) & 0xffff;
3106     /* 4: loadb */
3107     var36 = ptr5[i];
3108     /* 5: convubw */
3109     var42.i = (orc_uint8) var36;
3110     /* 7: mullw */
3111     var43.i = (var42.i * var37.i) & 0xffff;
3112     /* 8: addw */
3113     var44.i = var41.i + var43.i;
3114     /* 10: addw */
3115     var45.i = var44.i + var38.i;
3116     /* 11: shrsw */
3117     var46.i = var45.i >> 6;
3118     /* 12: convsuswb */
3119     var39 = ORC_CLAMP_UB (var46.i);
3120     /* 13: storeb */
3121     ptr0[i] = var39;
3122   }
3123
3124 }
3125
3126 void
3127 orc_matrix2_u8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
3128     const guint8 * ORC_RESTRICT s2, int p1, int p2, int p3, int n)
3129 {
3130   OrcExecutor _ex, *ex = &_ex;
3131   static volatile int p_inited = 0;
3132   static OrcProgram *p = 0;
3133   void (*func) (OrcExecutor *);
3134
3135   if (!p_inited) {
3136     orc_once_mutex_lock ();
3137     if (!p_inited) {
3138
3139       p = orc_program_new ();
3140       orc_program_set_name (p, "orc_matrix2_u8");
3141       orc_program_set_backup_function (p, _backup_orc_matrix2_u8);
3142       orc_program_add_destination (p, 1, "d1");
3143       orc_program_add_source (p, 1, "s1");
3144       orc_program_add_source (p, 1, "s2");
3145       orc_program_add_constant (p, 4, 0x00000006, "c1");
3146       orc_program_add_parameter (p, 2, "p1");
3147       orc_program_add_parameter (p, 2, "p2");
3148       orc_program_add_parameter (p, 2, "p3");
3149       orc_program_add_temporary (p, 2, "t1");
3150       orc_program_add_temporary (p, 2, "t2");
3151
3152       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
3153           ORC_VAR_D1);
3154       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1,
3155           ORC_VAR_D1);
3156       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
3157           ORC_VAR_D1);
3158       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2,
3159           ORC_VAR_D1);
3160       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
3161           ORC_VAR_D1);
3162       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P3,
3163           ORC_VAR_D1);
3164       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
3165           ORC_VAR_D1);
3166       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1,
3167           ORC_VAR_D1, ORC_VAR_D1);
3168
3169       orc_program_compile (p);
3170     }
3171     p_inited = TRUE;
3172     orc_once_mutex_unlock ();
3173   }
3174   ex->program = p;
3175
3176   ex->n = n;
3177   ex->arrays[ORC_VAR_D1] = d1;
3178   ex->arrays[ORC_VAR_S1] = (void *) s1;
3179   ex->arrays[ORC_VAR_S2] = (void *) s2;
3180   ex->params[ORC_VAR_P1] = p1;
3181   ex->params[ORC_VAR_P2] = p2;
3182   ex->params[ORC_VAR_P3] = p3;
3183
3184   func = p->code_exec;
3185   func (ex);
3186 }
3187 #endif
3188
3189
3190 /* orc_matrix2_11_u8 */
3191 #ifdef DISABLE_ORC
3192 void
3193 orc_matrix2_11_u8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
3194     const guint8 * ORC_RESTRICT s2, int p1, int p2, int n)
3195 {
3196   int i;
3197   orc_int8 *ORC_RESTRICT ptr0;
3198   const orc_int8 *ORC_RESTRICT ptr4;
3199   const orc_int8 *ORC_RESTRICT ptr5;
3200   orc_int8 var36;
3201   orc_union16 var37;
3202   orc_union16 var38;
3203   orc_int8 var39;
3204   orc_union16 var40;
3205   orc_union16 var41;
3206   orc_union16 var42;
3207   orc_int8 var43;
3208   orc_union16 var44;
3209   orc_union16 var45;
3210   orc_union16 var46;
3211   orc_union16 var47;
3212   orc_union16 var48;
3213   orc_union16 var49;
3214   orc_union16 var50;
3215   orc_union16 var51;
3216   orc_union16 var52;
3217   orc_union16 var53;
3218   orc_union16 var54;
3219
3220   ptr0 = (orc_int8 *) d1;
3221   ptr4 = (orc_int8 *) s1;
3222   ptr5 = (orc_int8 *) s2;
3223
3224   /* 2: loadpw */
3225   var37.i = (int) 0x00000010;   /* 16 or 7.90505e-323f */
3226   /* 4: loadpw */
3227   var38.i = p1;
3228   /* 8: loadpw */
3229   var40.i = (int) 0x00000080;   /* 128 or 6.32404e-322f */
3230   /* 10: loadpw */
3231   var41.i = p2;
3232   /* 13: loadpw */
3233   var42.i = (int) 0x00000080;   /* 128 or 6.32404e-322f */
3234
3235   for (i = 0; i < n; i++) {
3236     /* 0: loadb */
3237     var36 = ptr4[i];
3238     /* 1: convubw */
3239     var44.i = (orc_uint8) var36;
3240     /* 3: subw */
3241     var45.i = var44.i - var37.i;
3242     /* 5: mullw */
3243     var46.i = (var45.i * var38.i) & 0xffff;
3244     /* 6: loadb */
3245     var39 = ptr5[i];
3246     /* 7: convubw */
3247     var47.i = (orc_uint8) var39;
3248     /* 9: subw */
3249     var48.i = var47.i - var40.i;
3250     /* 11: mullw */
3251     var49.i = (var48.i * var41.i) & 0xffff;
3252     /* 12: addw */
3253     var50.i = var46.i + var49.i;
3254     /* 14: addw */
3255     var51.i = var50.i + var42.i;
3256     /* 15: shrsw */
3257     var52.i = var51.i >> 8;
3258     /* 16: addw */
3259     var53.i = var52.i + var45.i;
3260     /* 17: addw */
3261     var54.i = var53.i + var48.i;
3262     /* 18: convsuswb */
3263     var43 = ORC_CLAMP_UB (var54.i);
3264     /* 19: storeb */
3265     ptr0[i] = var43;
3266   }
3267
3268 }
3269
3270 #else
3271 static void
3272 _backup_orc_matrix2_11_u8 (OrcExecutor * ORC_RESTRICT ex)
3273 {
3274   int i;
3275   int n = ex->n;
3276   orc_int8 *ORC_RESTRICT ptr0;
3277   const orc_int8 *ORC_RESTRICT ptr4;
3278   const orc_int8 *ORC_RESTRICT ptr5;
3279   orc_int8 var36;
3280   orc_union16 var37;
3281   orc_union16 var38;
3282   orc_int8 var39;
3283   orc_union16 var40;
3284   orc_union16 var41;
3285   orc_union16 var42;
3286   orc_int8 var43;
3287   orc_union16 var44;
3288   orc_union16 var45;
3289   orc_union16 var46;
3290   orc_union16 var47;
3291   orc_union16 var48;
3292   orc_union16 var49;
3293   orc_union16 var50;
3294   orc_union16 var51;
3295   orc_union16 var52;
3296   orc_union16 var53;
3297   orc_union16 var54;
3298
3299   ptr0 = (orc_int8 *) ex->arrays[0];
3300   ptr4 = (orc_int8 *) ex->arrays[4];
3301   ptr5 = (orc_int8 *) ex->arrays[5];
3302
3303   /* 2: loadpw */
3304   var37.i = (int) 0x00000010;   /* 16 or 7.90505e-323f */
3305   /* 4: loadpw */
3306   var38.i = ex->params[24];
3307   /* 8: loadpw */
3308   var40.i = (int) 0x00000080;   /* 128 or 6.32404e-322f */
3309   /* 10: loadpw */
3310   var41.i = ex->params[25];
3311   /* 13: loadpw */
3312   var42.i = (int) 0x00000080;   /* 128 or 6.32404e-322f */
3313
3314   for (i = 0; i < n; i++) {
3315     /* 0: loadb */
3316     var36 = ptr4[i];
3317     /* 1: convubw */
3318     var44.i = (orc_uint8) var36;
3319     /* 3: subw */
3320     var45.i = var44.i - var37.i;
3321     /* 5: mullw */
3322     var46.i = (var45.i * var38.i) & 0xffff;
3323     /* 6: loadb */
3324     var39 = ptr5[i];
3325     /* 7: convubw */
3326     var47.i = (orc_uint8) var39;
3327     /* 9: subw */
3328     var48.i = var47.i - var40.i;
3329     /* 11: mullw */
3330     var49.i = (var48.i * var41.i) & 0xffff;
3331     /* 12: addw */
3332     var50.i = var46.i + var49.i;
3333     /* 14: addw */
3334     var51.i = var50.i + var42.i;
3335     /* 15: shrsw */
3336     var52.i = var51.i >> 8;
3337     /* 16: addw */
3338     var53.i = var52.i + var45.i;
3339     /* 17: addw */
3340     var54.i = var53.i + var48.i;
3341     /* 18: convsuswb */
3342     var43 = ORC_CLAMP_UB (var54.i);
3343     /* 19: storeb */
3344     ptr0[i] = var43;
3345   }
3346
3347 }
3348
3349 void
3350 orc_matrix2_11_u8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
3351     const guint8 * ORC_RESTRICT s2, int p1, int p2, int n)
3352 {
3353   OrcExecutor _ex, *ex = &_ex;
3354   static volatile int p_inited = 0;
3355   static OrcProgram *p = 0;
3356   void (*func) (OrcExecutor *);
3357
3358   if (!p_inited) {
3359     orc_once_mutex_lock ();
3360     if (!p_inited) {
3361
3362       p = orc_program_new ();
3363       orc_program_set_name (p, "orc_matrix2_11_u8");
3364       orc_program_set_backup_function (p, _backup_orc_matrix2_11_u8);
3365       orc_program_add_destination (p, 1, "d1");
3366       orc_program_add_source (p, 1, "s1");
3367       orc_program_add_source (p, 1, "s2");
3368       orc_program_add_constant (p, 4, 0x00000010, "c1");
3369       orc_program_add_constant (p, 4, 0x00000080, "c2");
3370       orc_program_add_constant (p, 4, 0x00000008, "c3");
3371       orc_program_add_parameter (p, 2, "p1");
3372       orc_program_add_parameter (p, 2, "p2");
3373       orc_program_add_temporary (p, 2, "t1");
3374       orc_program_add_temporary (p, 2, "t2");
3375       orc_program_add_temporary (p, 2, "t3");
3376       orc_program_add_temporary (p, 2, "t4");
3377
3378       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
3379           ORC_VAR_D1);
3380       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
3381           ORC_VAR_D1);
3382       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_P1,
3383           ORC_VAR_D1);
3384       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
3385           ORC_VAR_D1);
3386       orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2,
3387           ORC_VAR_D1);
3388       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_P2,
3389           ORC_VAR_D1);
3390       orc_program_append_2 (p, "addw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4,
3391           ORC_VAR_D1);
3392       orc_program_append_2 (p, "addw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2,
3393           ORC_VAR_D1);
3394       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C3,
3395           ORC_VAR_D1);
3396       orc_program_append_2 (p, "addw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T1,
3397           ORC_VAR_D1);
3398       orc_program_append_2 (p, "addw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T2,
3399           ORC_VAR_D1);
3400       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T3,
3401           ORC_VAR_D1, ORC_VAR_D1);
3402
3403       orc_program_compile (p);
3404     }
3405     p_inited = TRUE;
3406     orc_once_mutex_unlock ();
3407   }
3408   ex->program = p;
3409
3410   ex->n = n;
3411   ex->arrays[ORC_VAR_D1] = d1;
3412   ex->arrays[ORC_VAR_S1] = (void *) s1;
3413   ex->arrays[ORC_VAR_S2] = (void *) s2;
3414   ex->params[ORC_VAR_P1] = p1;
3415   ex->params[ORC_VAR_P2] = p2;
3416
3417   func = p->code_exec;
3418   func (ex);
3419 }
3420 #endif
3421
3422
3423 /* orc_matrix2_12_u8 */
3424 #ifdef DISABLE_ORC
3425 void
3426 orc_matrix2_12_u8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
3427     const guint8 * ORC_RESTRICT s2, int p1, int p2, int n)
3428 {
3429   int i;
3430   orc_int8 *ORC_RESTRICT ptr0;
3431   const orc_int8 *ORC_RESTRICT ptr4;
3432   const orc_int8 *ORC_RESTRICT ptr5;
3433   orc_int8 var36;
3434   orc_union16 var37;
3435   orc_union16 var38;
3436   orc_int8 var39;
3437   orc_union16 var40;
3438   orc_union16 var41;
3439   orc_union16 var42;
3440   orc_int8 var43;
3441   orc_union16 var44;
3442   orc_union16 var45;
3443   orc_union16 var46;
3444   orc_union16 var47;
3445   orc_union16 var48;
3446   orc_union16 var49;
3447   orc_union16 var50;
3448   orc_union16 var51;
3449   orc_union16 var52;
3450   orc_union16 var53;
3451   orc_union16 var54;
3452   orc_union16 var55;
3453
3454   ptr0 = (orc_int8 *) d1;
3455   ptr4 = (orc_int8 *) s1;
3456   ptr5 = (orc_int8 *) s2;
3457
3458   /* 2: loadpw */
3459   var37.i = (int) 0x00000010;   /* 16 or 7.90505e-323f */
3460   /* 4: loadpw */
3461   var38.i = p1;
3462   /* 8: loadpw */
3463   var40.i = (int) 0x00000080;   /* 128 or 6.32404e-322f */
3464   /* 10: loadpw */
3465   var41.i = p2;
3466   /* 13: loadpw */
3467   var42.i = (int) 0x00000080;   /* 128 or 6.32404e-322f */
3468
3469   for (i = 0; i < n; i++) {
3470     /* 0: loadb */
3471     var36 = ptr4[i];
3472     /* 1: convubw */
3473     var44.i = (orc_uint8) var36;
3474     /* 3: subw */
3475     var45.i = var44.i - var37.i;
3476     /* 5: mullw */
3477     var46.i = (var45.i * var38.i) & 0xffff;
3478     /* 6: loadb */
3479     var39 = ptr5[i];
3480     /* 7: convubw */
3481     var47.i = (orc_uint8) var39;
3482     /* 9: subw */
3483     var48.i = var47.i - var40.i;
3484     /* 11: mullw */
3485     var49.i = (var48.i * var41.i) & 0xffff;
3486     /* 12: addw */
3487     var50.i = var46.i + var49.i;
3488     /* 14: addw */
3489     var51.i = var50.i + var42.i;
3490     /* 15: shrsw */
3491     var52.i = var51.i >> 8;
3492     /* 16: addw */
3493     var53.i = var52.i + var45.i;
3494     /* 17: addw */
3495     var54.i = var53.i + var48.i;
3496     /* 18: addw */
3497     var55.i = var54.i + var48.i;
3498     /* 19: convsuswb */
3499     var43 = ORC_CLAMP_UB (var55.i);
3500     /* 20: storeb */
3501     ptr0[i] = var43;
3502   }
3503
3504 }
3505
3506 #else
3507 static void
3508 _backup_orc_matrix2_12_u8 (OrcExecutor * ORC_RESTRICT ex)
3509 {
3510   int i;
3511   int n = ex->n;
3512   orc_int8 *ORC_RESTRICT ptr0;
3513   const orc_int8 *ORC_RESTRICT ptr4;
3514   const orc_int8 *ORC_RESTRICT ptr5;
3515   orc_int8 var36;
3516   orc_union16 var37;
3517   orc_union16 var38;
3518   orc_int8 var39;
3519   orc_union16 var40;
3520   orc_union16 var41;
3521   orc_union16 var42;
3522   orc_int8 var43;
3523   orc_union16 var44;
3524   orc_union16 var45;
3525   orc_union16 var46;
3526   orc_union16 var47;
3527   orc_union16 var48;
3528   orc_union16 var49;
3529   orc_union16 var50;
3530   orc_union16 var51;
3531   orc_union16 var52;
3532   orc_union16 var53;
3533   orc_union16 var54;
3534   orc_union16 var55;
3535
3536   ptr0 = (orc_int8 *) ex->arrays[0];
3537   ptr4 = (orc_int8 *) ex->arrays[4];
3538   ptr5 = (orc_int8 *) ex->arrays[5];
3539
3540   /* 2: loadpw */
3541   var37.i = (int) 0x00000010;   /* 16 or 7.90505e-323f */
3542   /* 4: loadpw */
3543   var38.i = ex->params[24];
3544   /* 8: loadpw */
3545   var40.i = (int) 0x00000080;   /* 128 or 6.32404e-322f */
3546   /* 10: loadpw */
3547   var41.i = ex->params[25];
3548   /* 13: loadpw */
3549   var42.i = (int) 0x00000080;   /* 128 or 6.32404e-322f */
3550
3551   for (i = 0; i < n; i++) {
3552     /* 0: loadb */
3553     var36 = ptr4[i];
3554     /* 1: convubw */
3555     var44.i = (orc_uint8) var36;
3556     /* 3: subw */
3557     var45.i = var44.i - var37.i;
3558     /* 5: mullw */
3559     var46.i = (var45.i * var38.i) & 0xffff;
3560     /* 6: loadb */
3561     var39 = ptr5[i];
3562     /* 7: convubw */
3563     var47.i = (orc_uint8) var39;
3564     /* 9: subw */
3565     var48.i = var47.i - var40.i;
3566     /* 11: mullw */
3567     var49.i = (var48.i * var41.i) & 0xffff;
3568     /* 12: addw */
3569     var50.i = var46.i + var49.i;
3570     /* 14: addw */
3571     var51.i = var50.i + var42.i;
3572     /* 15: shrsw */
3573     var52.i = var51.i >> 8;
3574     /* 16: addw */
3575     var53.i = var52.i + var45.i;
3576     /* 17: addw */
3577     var54.i = var53.i + var48.i;
3578     /* 18: addw */
3579     var55.i = var54.i + var48.i;
3580     /* 19: convsuswb */
3581     var43 = ORC_CLAMP_UB (var55.i);
3582     /* 20: storeb */
3583     ptr0[i] = var43;
3584   }
3585
3586 }
3587
3588 void
3589 orc_matrix2_12_u8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
3590     const guint8 * ORC_RESTRICT s2, int p1, int p2, int n)
3591 {
3592   OrcExecutor _ex, *ex = &_ex;
3593   static volatile int p_inited = 0;
3594   static OrcProgram *p = 0;
3595   void (*func) (OrcExecutor *);
3596
3597   if (!p_inited) {
3598     orc_once_mutex_lock ();
3599     if (!p_inited) {
3600
3601       p = orc_program_new ();
3602       orc_program_set_name (p, "orc_matrix2_12_u8");
3603       orc_program_set_backup_function (p, _backup_orc_matrix2_12_u8);
3604       orc_program_add_destination (p, 1, "d1");
3605       orc_program_add_source (p, 1, "s1");
3606       orc_program_add_source (p, 1, "s2");
3607       orc_program_add_constant (p, 4, 0x00000010, "c1");
3608       orc_program_add_constant (p, 4, 0x00000080, "c2");
3609       orc_program_add_constant (p, 4, 0x00000008, "c3");
3610       orc_program_add_parameter (p, 2, "p1");
3611       orc_program_add_parameter (p, 2, "p2");
3612       orc_program_add_temporary (p, 2, "t1");
3613       orc_program_add_temporary (p, 2, "t2");
3614       orc_program_add_temporary (p, 2, "t3");
3615       orc_program_add_temporary (p, 2, "t4");
3616
3617       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
3618           ORC_VAR_D1);
3619       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
3620           ORC_VAR_D1);
3621       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_P1,
3622           ORC_VAR_D1);
3623       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
3624           ORC_VAR_D1);
3625       orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2,
3626           ORC_VAR_D1);
3627       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_P2,
3628           ORC_VAR_D1);
3629       orc_program_append_2 (p, "addw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4,
3630           ORC_VAR_D1);
3631       orc_program_append_2 (p, "addw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2,
3632           ORC_VAR_D1);
3633       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C3,
3634           ORC_VAR_D1);
3635       orc_program_append_2 (p, "addw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T1,
3636           ORC_VAR_D1);
3637       orc_program_append_2 (p, "addw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T2,
3638           ORC_VAR_D1);
3639       orc_program_append_2 (p, "addw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T2,
3640           ORC_VAR_D1);
3641       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T3,
3642           ORC_VAR_D1, ORC_VAR_D1);
3643
3644       orc_program_compile (p);
3645     }
3646     p_inited = TRUE;
3647     orc_once_mutex_unlock ();
3648   }
3649   ex->program = p;
3650
3651   ex->n = n;
3652   ex->arrays[ORC_VAR_D1] = d1;
3653   ex->arrays[ORC_VAR_S1] = (void *) s1;
3654   ex->arrays[ORC_VAR_S2] = (void *) s2;
3655   ex->params[ORC_VAR_P1] = p1;
3656   ex->params[ORC_VAR_P2] = p2;
3657
3658   func = p->code_exec;
3659   func (ex);
3660 }
3661 #endif
3662
3663
3664 /* orc_matrix3_u8 */
3665 #ifdef DISABLE_ORC
3666 void
3667 orc_matrix3_u8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
3668     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int p1,
3669     int p2, int p3, int p4, int n)
3670 {
3671   int i;
3672   orc_int8 *ORC_RESTRICT ptr0;
3673   const orc_int8 *ORC_RESTRICT ptr4;
3674   const orc_int8 *ORC_RESTRICT ptr5;
3675   const orc_int8 *ORC_RESTRICT ptr6;
3676   orc_int8 var34;
3677   orc_union16 var35;
3678   orc_int8 var36;
3679   orc_union16 var37;
3680   orc_int8 var38;
3681   orc_union16 var39;
3682   orc_union16 var40;
3683   orc_int8 var41;
3684   orc_union16 var42;
3685   orc_union16 var43;
3686   orc_union16 var44;
3687   orc_union16 var45;
3688   orc_union16 var46;
3689   orc_union16 var47;
3690   orc_union16 var48;
3691   orc_union16 var49;
3692   orc_union16 var50;
3693   orc_union16 var51;
3694
3695   ptr0 = (orc_int8 *) d1;
3696   ptr4 = (orc_int8 *) s1;
3697   ptr5 = (orc_int8 *) s2;
3698   ptr6 = (orc_int8 *) s3;
3699
3700   /* 2: loadpw */
3701   var35.i = p1;
3702   /* 6: loadpw */
3703   var37.i = p2;
3704   /* 11: loadpw */
3705   var39.i = p3;
3706   /* 14: loadpw */
3707   var40.i = p4;
3708
3709   for (i = 0; i < n; i++) {
3710     /* 0: loadb */
3711     var34 = ptr4[i];
3712     /* 1: convubw */
3713     var42.i = (orc_uint8) var34;
3714     /* 3: mullw */
3715     var43.i = (var42.i * var35.i) & 0xffff;
3716     /* 4: loadb */
3717     var36 = ptr5[i];
3718     /* 5: convubw */
3719     var44.i = (orc_uint8) var36;
3720     /* 7: mullw */
3721     var45.i = (var44.i * var37.i) & 0xffff;
3722     /* 8: addw */
3723     var46.i = var43.i + var45.i;
3724     /* 9: loadb */
3725     var38 = ptr6[i];
3726     /* 10: convubw */
3727     var47.i = (orc_uint8) var38;
3728     /* 12: mullw */
3729     var48.i = (var47.i * var39.i) & 0xffff;
3730     /* 13: addw */
3731     var49.i = var46.i + var48.i;
3732     /* 15: addw */
3733     var50.i = var49.i + var40.i;
3734     /* 16: shrsw */
3735     var51.i = var50.i >> 6;
3736     /* 17: convsuswb */
3737     var41 = ORC_CLAMP_UB (var51.i);
3738     /* 18: storeb */
3739     ptr0[i] = var41;
3740   }
3741
3742 }
3743
3744 #else
3745 static void
3746 _backup_orc_matrix3_u8 (OrcExecutor * ORC_RESTRICT ex)
3747 {
3748   int i;
3749   int n = ex->n;
3750   orc_int8 *ORC_RESTRICT ptr0;
3751   const orc_int8 *ORC_RESTRICT ptr4;
3752   const orc_int8 *ORC_RESTRICT ptr5;
3753   const orc_int8 *ORC_RESTRICT ptr6;
3754   orc_int8 var34;
3755   orc_union16 var35;
3756   orc_int8 var36;
3757   orc_union16 var37;
3758   orc_int8 var38;
3759   orc_union16 var39;
3760   orc_union16 var40;
3761   orc_int8 var41;
3762   orc_union16 var42;
3763   orc_union16 var43;
3764   orc_union16 var44;
3765   orc_union16 var45;
3766   orc_union16 var46;
3767   orc_union16 var47;
3768   orc_union16 var48;
3769   orc_union16 var49;
3770   orc_union16 var50;
3771   orc_union16 var51;
3772
3773   ptr0 = (orc_int8 *) ex->arrays[0];
3774   ptr4 = (orc_int8 *) ex->arrays[4];
3775   ptr5 = (orc_int8 *) ex->arrays[5];
3776   ptr6 = (orc_int8 *) ex->arrays[6];
3777
3778   /* 2: loadpw */
3779   var35.i = ex->params[24];
3780   /* 6: loadpw */
3781   var37.i = ex->params[25];
3782   /* 11: loadpw */
3783   var39.i = ex->params[26];
3784   /* 14: loadpw */
3785   var40.i = ex->params[27];
3786
3787   for (i = 0; i < n; i++) {
3788     /* 0: loadb */
3789     var34 = ptr4[i];
3790     /* 1: convubw */
3791     var42.i = (orc_uint8) var34;
3792     /* 3: mullw */
3793     var43.i = (var42.i * var35.i) & 0xffff;
3794     /* 4: loadb */
3795     var36 = ptr5[i];
3796     /* 5: convubw */
3797     var44.i = (orc_uint8) var36;
3798     /* 7: mullw */
3799     var45.i = (var44.i * var37.i) & 0xffff;
3800     /* 8: addw */
3801     var46.i = var43.i + var45.i;
3802     /* 9: loadb */
3803     var38 = ptr6[i];
3804     /* 10: convubw */
3805     var47.i = (orc_uint8) var38;
3806     /* 12: mullw */
3807     var48.i = (var47.i * var39.i) & 0xffff;
3808     /* 13: addw */
3809     var49.i = var46.i + var48.i;
3810     /* 15: addw */
3811     var50.i = var49.i + var40.i;
3812     /* 16: shrsw */
3813     var51.i = var50.i >> 6;
3814     /* 17: convsuswb */
3815     var41 = ORC_CLAMP_UB (var51.i);
3816     /* 18: storeb */
3817     ptr0[i] = var41;
3818   }
3819
3820 }
3821
3822 void
3823 orc_matrix3_u8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
3824     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int p1,
3825     int p2, int p3, int p4, int n)
3826 {
3827   OrcExecutor _ex, *ex = &_ex;
3828   static volatile int p_inited = 0;
3829   static OrcProgram *p = 0;
3830   void (*func) (OrcExecutor *);
3831
3832   if (!p_inited) {
3833     orc_once_mutex_lock ();
3834     if (!p_inited) {
3835
3836       p = orc_program_new ();
3837       orc_program_set_name (p, "orc_matrix3_u8");
3838       orc_program_set_backup_function (p, _backup_orc_matrix3_u8);
3839       orc_program_add_destination (p, 1, "d1");
3840       orc_program_add_source (p, 1, "s1");
3841       orc_program_add_source (p, 1, "s2");
3842       orc_program_add_source (p, 1, "s3");
3843       orc_program_add_constant (p, 4, 0x00000006, "c1");
3844       orc_program_add_parameter (p, 2, "p1");
3845       orc_program_add_parameter (p, 2, "p2");
3846       orc_program_add_parameter (p, 2, "p3");
3847       orc_program_add_parameter (p, 2, "p4");
3848       orc_program_add_temporary (p, 2, "t1");
3849       orc_program_add_temporary (p, 2, "t2");
3850
3851       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
3852           ORC_VAR_D1);
3853       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1,
3854           ORC_VAR_D1);
3855       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
3856           ORC_VAR_D1);
3857       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2,
3858           ORC_VAR_D1);
3859       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
3860           ORC_VAR_D1);
3861       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1,
3862           ORC_VAR_D1);
3863       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P3,
3864           ORC_VAR_D1);
3865       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
3866           ORC_VAR_D1);
3867       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P4,
3868           ORC_VAR_D1);
3869       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
3870           ORC_VAR_D1);
3871       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1,
3872           ORC_VAR_D1, ORC_VAR_D1);
3873
3874       orc_program_compile (p);
3875     }
3876     p_inited = TRUE;
3877     orc_once_mutex_unlock ();
3878   }
3879   ex->program = p;
3880
3881   ex->n = n;
3882   ex->arrays[ORC_VAR_D1] = d1;
3883   ex->arrays[ORC_VAR_S1] = (void *) s1;
3884   ex->arrays[ORC_VAR_S2] = (void *) s2;
3885   ex->arrays[ORC_VAR_S3] = (void *) s3;
3886   ex->params[ORC_VAR_P1] = p1;
3887   ex->params[ORC_VAR_P2] = p2;
3888   ex->params[ORC_VAR_P3] = p3;
3889   ex->params[ORC_VAR_P4] = p4;
3890
3891   func = p->code_exec;
3892   func (ex);
3893 }
3894 #endif
3895
3896
3897 /* orc_matrix3_100_u8 */
3898 #ifdef DISABLE_ORC
3899 void
3900 orc_matrix3_100_u8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
3901     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int p1,
3902     int p2, int p3, int n)
3903 {
3904   int i;
3905   orc_int8 *ORC_RESTRICT ptr0;
3906   const orc_int8 *ORC_RESTRICT ptr4;
3907   const orc_int8 *ORC_RESTRICT ptr5;
3908   const orc_int8 *ORC_RESTRICT ptr6;
3909   orc_int8 var35;
3910   orc_union16 var36;
3911   orc_union16 var37;
3912   orc_int8 var38;
3913   orc_union16 var39;
3914   orc_union16 var40;
3915   orc_int8 var41;
3916   orc_union16 var42;
3917   orc_union16 var43;
3918   orc_union16 var44;
3919   orc_int8 var45;
3920   orc_union16 var46;
3921   orc_union16 var47;
3922   orc_union16 var48;
3923   orc_union16 var49;
3924   orc_union16 var50;
3925   orc_union16 var51;
3926   orc_union16 var52;
3927   orc_union16 var53;
3928   orc_union16 var54;
3929   orc_union16 var55;
3930   orc_union16 var56;
3931   orc_union16 var57;
3932   orc_union16 var58;
3933   orc_union16 var59;
3934
3935   ptr0 = (orc_int8 *) d1;
3936   ptr4 = (orc_int8 *) s1;
3937   ptr5 = (orc_int8 *) s2;
3938   ptr6 = (orc_int8 *) s3;
3939
3940   /* 2: loadpw */
3941   var36.i = (int) 0x00000010;   /* 16 or 7.90505e-323f */
3942   /* 4: loadpw */
3943   var37.i = p1;
3944   /* 8: loadpw */
3945   var39.i = (int) 0x00000080;   /* 128 or 6.32404e-322f */
3946   /* 10: loadpw */
3947   var40.i = p2;
3948   /* 15: loadpw */
3949   var42.i = (int) 0x00000080;   /* 128 or 6.32404e-322f */
3950   /* 17: loadpw */
3951   var43.i = p3;
3952   /* 20: loadpw */
3953   var44.i = (int) 0x00000080;   /* 128 or 6.32404e-322f */
3954
3955   for (i = 0; i < n; i++) {
3956     /* 0: loadb */
3957     var35 = ptr4[i];
3958     /* 1: convubw */
3959     var46.i = (orc_uint8) var35;
3960     /* 3: subw */
3961     var47.i = var46.i - var36.i;
3962     /* 5: mullw */
3963     var48.i = (var47.i * var37.i) & 0xffff;
3964     /* 6: loadb */
3965     var38 = ptr5[i];
3966     /* 7: convubw */
3967     var49.i = (orc_uint8) var38;
3968     /* 9: subw */
3969     var50.i = var49.i - var39.i;
3970     /* 11: mullw */
3971     var51.i = (var50.i * var40.i) & 0xffff;
3972     /* 12: addw */
3973     var52.i = var48.i + var51.i;
3974     /* 13: loadb */
3975     var41 = ptr6[i];
3976     /* 14: convubw */
3977     var53.i = (orc_uint8) var41;
3978     /* 16: subw */
3979     var54.i = var53.i - var42.i;
3980     /* 18: mullw */
3981     var55.i = (var54.i * var43.i) & 0xffff;
3982     /* 19: addw */
3983     var56.i = var52.i + var55.i;
3984     /* 21: addw */
3985     var57.i = var56.i + var44.i;
3986     /* 22: shrsw */
3987     var58.i = var57.i >> 8;
3988     /* 23: addw */
3989     var59.i = var58.i + var47.i;
3990     /* 24: convsuswb */
3991     var45 = ORC_CLAMP_UB (var59.i);
3992     /* 25: storeb */
3993     ptr0[i] = var45;
3994   }
3995
3996 }
3997
3998 #else
3999 static void
4000 _backup_orc_matrix3_100_u8 (OrcExecutor * ORC_RESTRICT ex)
4001 {
4002   int i;
4003   int n = ex->n;
4004   orc_int8 *ORC_RESTRICT ptr0;
4005   const orc_int8 *ORC_RESTRICT ptr4;
4006   const orc_int8 *ORC_RESTRICT ptr5;
4007   const orc_int8 *ORC_RESTRICT ptr6;
4008   orc_int8 var35;
4009   orc_union16 var36;
4010   orc_union16 var37;
4011   orc_int8 var38;
4012   orc_union16 var39;
4013   orc_union16 var40;
4014   orc_int8 var41;
4015   orc_union16 var42;
4016   orc_union16 var43;
4017   orc_union16 var44;
4018   orc_int8 var45;
4019   orc_union16 var46;
4020   orc_union16 var47;
4021   orc_union16 var48;
4022   orc_union16 var49;
4023   orc_union16 var50;
4024   orc_union16 var51;
4025   orc_union16 var52;
4026   orc_union16 var53;
4027   orc_union16 var54;
4028   orc_union16 var55;
4029   orc_union16 var56;
4030   orc_union16 var57;
4031   orc_union16 var58;
4032   orc_union16 var59;
4033
4034   ptr0 = (orc_int8 *) ex->arrays[0];
4035   ptr4 = (orc_int8 *) ex->arrays[4];
4036   ptr5 = (orc_int8 *) ex->arrays[5];
4037   ptr6 = (orc_int8 *) ex->arrays[6];
4038
4039   /* 2: loadpw */
4040   var36.i = (int) 0x00000010;   /* 16 or 7.90505e-323f */
4041   /* 4: loadpw */
4042   var37.i = ex->params[24];
4043   /* 8: loadpw */
4044   var39.i = (int) 0x00000080;   /* 128 or 6.32404e-322f */
4045   /* 10: loadpw */
4046   var40.i = ex->params[25];
4047   /* 15: loadpw */
4048   var42.i = (int) 0x00000080;   /* 128 or 6.32404e-322f */
4049   /* 17: loadpw */
4050   var43.i = ex->params[26];
4051   /* 20: loadpw */
4052   var44.i = (int) 0x00000080;   /* 128 or 6.32404e-322f */
4053
4054   for (i = 0; i < n; i++) {
4055     /* 0: loadb */
4056     var35 = ptr4[i];
4057     /* 1: convubw */
4058     var46.i = (orc_uint8) var35;
4059     /* 3: subw */
4060     var47.i = var46.i - var36.i;
4061     /* 5: mullw */
4062     var48.i = (var47.i * var37.i) & 0xffff;
4063     /* 6: loadb */
4064     var38 = ptr5[i];
4065     /* 7: convubw */
4066     var49.i = (orc_uint8) var38;
4067     /* 9: subw */
4068     var50.i = var49.i - var39.i;
4069     /* 11: mullw */
4070     var51.i = (var50.i * var40.i) & 0xffff;
4071     /* 12: addw */
4072     var52.i = var48.i + var51.i;
4073     /* 13: loadb */
4074     var41 = ptr6[i];
4075     /* 14: convubw */
4076     var53.i = (orc_uint8) var41;
4077     /* 16: subw */
4078     var54.i = var53.i - var42.i;
4079     /* 18: mullw */
4080     var55.i = (var54.i * var43.i) & 0xffff;
4081     /* 19: addw */
4082     var56.i = var52.i + var55.i;
4083     /* 21: addw */
4084     var57.i = var56.i + var44.i;
4085     /* 22: shrsw */
4086     var58.i = var57.i >> 8;
4087     /* 23: addw */
4088     var59.i = var58.i + var47.i;
4089     /* 24: convsuswb */
4090     var45 = ORC_CLAMP_UB (var59.i);
4091     /* 25: storeb */
4092     ptr0[i] = var45;
4093   }
4094
4095 }
4096
4097 void
4098 orc_matrix3_100_u8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
4099     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int p1,
4100     int p2, int p3, int n)
4101 {
4102   OrcExecutor _ex, *ex = &_ex;
4103   static volatile int p_inited = 0;
4104   static OrcProgram *p = 0;
4105   void (*func) (OrcExecutor *);
4106
4107   if (!p_inited) {
4108     orc_once_mutex_lock ();
4109     if (!p_inited) {
4110
4111       p = orc_program_new ();
4112       orc_program_set_name (p, "orc_matrix3_100_u8");
4113       orc_program_set_backup_function (p, _backup_orc_matrix3_100_u8);
4114       orc_program_add_destination (p, 1, "d1");
4115       orc_program_add_source (p, 1, "s1");
4116       orc_program_add_source (p, 1, "s2");
4117       orc_program_add_source (p, 1, "s3");
4118       orc_program_add_constant (p, 4, 0x00000010, "c1");
4119       orc_program_add_constant (p, 4, 0x00000080, "c2");
4120       orc_program_add_constant (p, 4, 0x00000008, "c3");
4121       orc_program_add_parameter (p, 2, "p1");
4122       orc_program_add_parameter (p, 2, "p2");
4123       orc_program_add_parameter (p, 2, "p3");
4124       orc_program_add_temporary (p, 2, "t1");
4125       orc_program_add_temporary (p, 2, "t2");
4126       orc_program_add_temporary (p, 2, "t3");
4127
4128       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
4129           ORC_VAR_D1);
4130       orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
4131           ORC_VAR_D1);
4132       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_P1,
4133           ORC_VAR_D1);
4134       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
4135           ORC_VAR_D1);
4136       orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2,
4137           ORC_VAR_D1);
4138       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2,
4139           ORC_VAR_D1);
4140       orc_program_append_2 (p, "addw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T2,
4141           ORC_VAR_D1);
4142       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1,
4143           ORC_VAR_D1);
4144       orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2,
4145           ORC_VAR_D1);
4146       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P3,
4147           ORC_VAR_D1);
4148       orc_program_append_2 (p, "addw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T2,
4149           ORC_VAR_D1);
4150       orc_program_append_2 (p, "addw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2,
4151           ORC_VAR_D1);
4152       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C3,
4153           ORC_VAR_D1);
4154       orc_program_append_2 (p, "addw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T1,
4155           ORC_VAR_D1);
4156       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T3,
4157           ORC_VAR_D1, ORC_VAR_D1);
4158
4159       orc_program_compile (p);
4160     }
4161     p_inited = TRUE;
4162     orc_once_mutex_unlock ();
4163   }
4164   ex->program = p;
4165
4166   ex->n = n;
4167   ex->arrays[ORC_VAR_D1] = d1;
4168   ex->arrays[ORC_VAR_S1] = (void *) s1;
4169   ex->arrays[ORC_VAR_S2] = (void *) s2;
4170   ex->arrays[ORC_VAR_S3] = (void *) s3;
4171   ex->params[ORC_VAR_P1] = p1;
4172   ex->params[ORC_VAR_P2] = p2;
4173   ex->params[ORC_VAR_P3] = p3;
4174
4175   func = p->code_exec;
4176   func (ex);
4177 }
4178 #endif
4179
4180
4181 /* orc_matrix3_100_offset_u8 */
4182 #ifdef DISABLE_ORC
4183 void
4184 orc_matrix3_100_offset_u8 (guint8 * ORC_RESTRICT d1,
4185     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
4186     const guint8 * ORC_RESTRICT s3, int p1, int p2, int p3, int p4, int p5,
4187     int n)
4188 {
4189   int i;
4190   orc_int8 *ORC_RESTRICT ptr0;
4191   const orc_int8 *ORC_RESTRICT ptr4;
4192   const orc_int8 *ORC_RESTRICT ptr5;
4193   const orc_int8 *ORC_RESTRICT ptr6;
4194   orc_int8 var35;
4195   orc_union16 var36;
4196   orc_int8 var37;
4197   orc_union16 var38;
4198   orc_int8 var39;
4199   orc_union16 var40;
4200   orc_union16 var41;
4201   orc_int8 var42;
4202   orc_union16 var43;
4203   orc_union16 var44;
4204   orc_union16 var45;
4205   orc_union16 var46;
4206   orc_union16 var47;
4207   orc_union16 var48;
4208   orc_union16 var49;
4209   orc_union16 var50;
4210   orc_union16 var51;
4211   orc_union16 var52;
4212   orc_union16 var53;
4213
4214   ptr0 = (orc_int8 *) d1;
4215   ptr4 = (orc_int8 *) s1;
4216   ptr5 = (orc_int8 *) s2;
4217   ptr6 = (orc_int8 *) s3;
4218
4219   /* 2: loadpw */
4220   var36.i = p1;
4221   /* 6: loadpw */
4222   var38.i = p2;
4223   /* 11: loadpw */
4224   var40.i = p3;
4225   /* 14: loadpw */
4226   var41.i = p4;
4227
4228   for (i = 0; i < n; i++) {
4229     /* 0: loadb */
4230     var35 = ptr4[i];
4231     /* 1: convubw */
4232     var43.i = (orc_uint8) var35;
4233     /* 3: mullw */
4234     var44.i = (var43.i * var36.i) & 0xffff;
4235     /* 4: loadb */
4236     var37 = ptr5[i];
4237     /* 5: convubw */
4238     var45.i = (orc_uint8) var37;
4239     /* 7: mullw */
4240     var46.i = (var45.i * var38.i) & 0xffff;
4241     /* 8: addw */
4242     var47.i = var44.i + var46.i;
4243     /* 9: loadb */
4244     var39 = ptr6[i];
4245     /* 10: convubw */
4246     var48.i = (orc_uint8) var39;
4247     /* 12: mullw */
4248     var49.i = (var48.i * var40.i) & 0xffff;
4249     /* 13: addw */
4250     var50.i = var47.i + var49.i;
4251     /* 15: addw */
4252     var51.i = var50.i + var41.i;
4253     /* 16: shrsw */
4254     var52.i = var51.i >> p5;
4255     /* 17: addw */
4256     var53.i = var52.i + var43.i;
4257     /* 18: convsuswb */
4258     var42 = ORC_CLAMP_UB (var53.i);
4259     /* 19: storeb */
4260     ptr0[i] = var42;
4261   }
4262
4263 }
4264
4265 #else
4266 static void
4267 _backup_orc_matrix3_100_offset_u8 (OrcExecutor * ORC_RESTRICT ex)
4268 {
4269   int i;
4270   int n = ex->n;
4271   orc_int8 *ORC_RESTRICT ptr0;
4272   const orc_int8 *ORC_RESTRICT ptr4;
4273   const orc_int8 *ORC_RESTRICT ptr5;
4274   const orc_int8 *ORC_RESTRICT ptr6;
4275   orc_int8 var35;
4276   orc_union16 var36;
4277   orc_int8 var37;
4278   orc_union16 var38;
4279   orc_int8 var39;
4280   orc_union16 var40;
4281   orc_union16 var41;
4282   orc_int8 var42;
4283   orc_union16 var43;
4284   orc_union16 var44;
4285   orc_union16 var45;
4286   orc_union16 var46;
4287   orc_union16 var47;
4288   orc_union16 var48;
4289   orc_union16 var49;
4290   orc_union16 var50;
4291   orc_union16 var51;
4292   orc_union16 var52;
4293   orc_union16 var53;
4294
4295   ptr0 = (orc_int8 *) ex->arrays[0];
4296   ptr4 = (orc_int8 *) ex->arrays[4];
4297   ptr5 = (orc_int8 *) ex->arrays[5];
4298   ptr6 = (orc_int8 *) ex->arrays[6];
4299
4300   /* 2: loadpw */
4301   var36.i = ex->params[24];
4302   /* 6: loadpw */
4303   var38.i = ex->params[25];
4304   /* 11: loadpw */
4305   var40.i = ex->params[26];
4306   /* 14: loadpw */
4307   var41.i = ex->params[27];
4308
4309   for (i = 0; i < n; i++) {
4310     /* 0: loadb */
4311     var35 = ptr4[i];
4312     /* 1: convubw */
4313     var43.i = (orc_uint8) var35;
4314     /* 3: mullw */
4315     var44.i = (var43.i * var36.i) & 0xffff;
4316     /* 4: loadb */
4317     var37 = ptr5[i];
4318     /* 5: convubw */
4319     var45.i = (orc_uint8) var37;
4320     /* 7: mullw */
4321     var46.i = (var45.i * var38.i) & 0xffff;
4322     /* 8: addw */
4323     var47.i = var44.i + var46.i;
4324     /* 9: loadb */
4325     var39 = ptr6[i];
4326     /* 10: convubw */
4327     var48.i = (orc_uint8) var39;
4328     /* 12: mullw */
4329     var49.i = (var48.i * var40.i) & 0xffff;
4330     /* 13: addw */
4331     var50.i = var47.i + var49.i;
4332     /* 15: addw */
4333     var51.i = var50.i + var41.i;
4334     /* 16: shrsw */
4335     var52.i = var51.i >> ex->params[28];
4336     /* 17: addw */
4337     var53.i = var52.i + var43.i;
4338     /* 18: convsuswb */
4339     var42 = ORC_CLAMP_UB (var53.i);
4340     /* 19: storeb */
4341     ptr0[i] = var42;
4342   }
4343
4344 }
4345
4346 void
4347 orc_matrix3_100_offset_u8 (guint8 * ORC_RESTRICT d1,
4348     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
4349     const guint8 * ORC_RESTRICT s3, int p1, int p2, int p3, int p4, int p5,
4350     int n)
4351 {
4352   OrcExecutor _ex, *ex = &_ex;
4353   static volatile int p_inited = 0;
4354   static OrcProgram *p = 0;
4355   void (*func) (OrcExecutor *);
4356
4357   if (!p_inited) {
4358     orc_once_mutex_lock ();
4359     if (!p_inited) {
4360
4361       p = orc_program_new ();
4362       orc_program_set_name (p, "orc_matrix3_100_offset_u8");
4363       orc_program_set_backup_function (p, _backup_orc_matrix3_100_offset_u8);
4364       orc_program_add_destination (p, 1, "d1");
4365       orc_program_add_source (p, 1, "s1");
4366       orc_program_add_source (p, 1, "s2");
4367       orc_program_add_source (p, 1, "s3");
4368       orc_program_add_parameter (p, 2, "p1");
4369       orc_program_add_parameter (p, 2, "p2");
4370       orc_program_add_parameter (p, 2, "p3");
4371       orc_program_add_parameter (p, 2, "p4");
4372       orc_program_add_parameter (p, 2, "p5");
4373       orc_program_add_temporary (p, 2, "t1");
4374       orc_program_add_temporary (p, 2, "t2");
4375       orc_program_add_temporary (p, 2, "t3");
4376
4377       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_D1,
4378           ORC_VAR_D1);
4379       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_P1,
4380           ORC_VAR_D1);
4381       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
4382           ORC_VAR_D1);
4383       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2,
4384           ORC_VAR_D1);
4385       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
4386           ORC_VAR_D1);
4387       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1,
4388           ORC_VAR_D1);
4389       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P3,
4390           ORC_VAR_D1);
4391       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
4392           ORC_VAR_D1);
4393       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P4,
4394           ORC_VAR_D1);
4395       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P5,
4396           ORC_VAR_D1);
4397       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T3,
4398           ORC_VAR_D1);
4399       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1,
4400           ORC_VAR_D1, ORC_VAR_D1);
4401
4402       orc_program_compile (p);
4403     }
4404     p_inited = TRUE;
4405     orc_once_mutex_unlock ();
4406   }
4407   ex->program = p;
4408
4409   ex->n = n;
4410   ex->arrays[ORC_VAR_D1] = d1;
4411   ex->arrays[ORC_VAR_S1] = (void *) s1;
4412   ex->arrays[ORC_VAR_S2] = (void *) s2;
4413   ex->arrays[ORC_VAR_S3] = (void *) s3;
4414   ex->params[ORC_VAR_P1] = p1;
4415   ex->params[ORC_VAR_P2] = p2;
4416   ex->params[ORC_VAR_P3] = p3;
4417   ex->params[ORC_VAR_P4] = p4;
4418   ex->params[ORC_VAR_P5] = p5;
4419
4420   func = p->code_exec;
4421   func (ex);
4422 }
4423 #endif
4424
4425
4426 /* orc_matrix3_000_u8 */
4427 #ifdef DISABLE_ORC
4428 void
4429 orc_matrix3_000_u8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
4430     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int p1,
4431     int p2, int p3, int p4, int p5, int n)
4432 {
4433   int i;
4434   orc_int8 *ORC_RESTRICT ptr0;
4435   const orc_int8 *ORC_RESTRICT ptr4;
4436   const orc_int8 *ORC_RESTRICT ptr5;
4437   const orc_int8 *ORC_RESTRICT ptr6;
4438   orc_int8 var34;
4439   orc_union16 var35;
4440   orc_int8 var36;
4441   orc_union16 var37;
4442   orc_int8 var38;
4443   orc_union16 var39;
4444   orc_union16 var40;
4445   orc_int8 var41;
4446   orc_union16 var42;
4447   orc_union16 var43;
4448   orc_union16 var44;
4449   orc_union16 var45;
4450   orc_union16 var46;
4451   orc_union16 var47;
4452   orc_union16 var48;
4453   orc_union16 var49;
4454   orc_union16 var50;
4455   orc_union16 var51;
4456
4457   ptr0 = (orc_int8 *) d1;
4458   ptr4 = (orc_int8 *) s1;
4459   ptr5 = (orc_int8 *) s2;
4460   ptr6 = (orc_int8 *) s3;
4461
4462   /* 2: loadpw */
4463   var35.i = p1;
4464   /* 6: loadpw */
4465   var37.i = p2;
4466   /* 11: loadpw */
4467   var39.i = p3;
4468   /* 14: loadpw */
4469   var40.i = p4;
4470
4471   for (i = 0; i < n; i++) {
4472     /* 0: loadb */
4473     var34 = ptr4[i];
4474     /* 1: convubw */
4475     var42.i = (orc_uint8) var34;
4476     /* 3: mullw */
4477     var43.i = (var42.i * var35.i) & 0xffff;
4478     /* 4: loadb */
4479     var36 = ptr5[i];
4480     /* 5: convubw */
4481     var44.i = (orc_uint8) var36;
4482     /* 7: mullw */
4483     var45.i = (var44.i * var37.i) & 0xffff;
4484     /* 8: addw */
4485     var46.i = var43.i + var45.i;
4486     /* 9: loadb */
4487     var38 = ptr6[i];
4488     /* 10: convubw */
4489     var47.i = (orc_uint8) var38;
4490     /* 12: mullw */
4491     var48.i = (var47.i * var39.i) & 0xffff;
4492     /* 13: addw */
4493     var49.i = var46.i + var48.i;
4494     /* 15: addw */
4495     var50.i = var49.i + var40.i;
4496     /* 16: shrsw */
4497     var51.i = var50.i >> p5;
4498     /* 17: convwb */
4499     var41 = var51.i;
4500     /* 18: storeb */
4501     ptr0[i] = var41;
4502   }
4503
4504 }
4505
4506 #else
4507 static void
4508 _backup_orc_matrix3_000_u8 (OrcExecutor * ORC_RESTRICT ex)
4509 {
4510   int i;
4511   int n = ex->n;
4512   orc_int8 *ORC_RESTRICT ptr0;
4513   const orc_int8 *ORC_RESTRICT ptr4;
4514   const orc_int8 *ORC_RESTRICT ptr5;
4515   const orc_int8 *ORC_RESTRICT ptr6;
4516   orc_int8 var34;
4517   orc_union16 var35;
4518   orc_int8 var36;
4519   orc_union16 var37;
4520   orc_int8 var38;
4521   orc_union16 var39;
4522   orc_union16 var40;
4523   orc_int8 var41;
4524   orc_union16 var42;
4525   orc_union16 var43;
4526   orc_union16 var44;
4527   orc_union16 var45;
4528   orc_union16 var46;
4529   orc_union16 var47;
4530   orc_union16 var48;
4531   orc_union16 var49;
4532   orc_union16 var50;
4533   orc_union16 var51;
4534
4535   ptr0 = (orc_int8 *) ex->arrays[0];
4536   ptr4 = (orc_int8 *) ex->arrays[4];
4537   ptr5 = (orc_int8 *) ex->arrays[5];
4538   ptr6 = (orc_int8 *) ex->arrays[6];
4539
4540   /* 2: loadpw */
4541   var35.i = ex->params[24];
4542   /* 6: loadpw */
4543   var37.i = ex->params[25];
4544   /* 11: loadpw */
4545   var39.i = ex->params[26];
4546   /* 14: loadpw */
4547   var40.i = ex->params[27];
4548
4549   for (i = 0; i < n; i++) {
4550     /* 0: loadb */
4551     var34 = ptr4[i];
4552     /* 1: convubw */
4553     var42.i = (orc_uint8) var34;
4554     /* 3: mullw */
4555     var43.i = (var42.i * var35.i) & 0xffff;
4556     /* 4: loadb */
4557     var36 = ptr5[i];
4558     /* 5: convubw */
4559     var44.i = (orc_uint8) var36;
4560     /* 7: mullw */
4561     var45.i = (var44.i * var37.i) & 0xffff;
4562     /* 8: addw */
4563     var46.i = var43.i + var45.i;
4564     /* 9: loadb */
4565     var38 = ptr6[i];
4566     /* 10: convubw */
4567     var47.i = (orc_uint8) var38;
4568     /* 12: mullw */
4569     var48.i = (var47.i * var39.i) & 0xffff;
4570     /* 13: addw */
4571     var49.i = var46.i + var48.i;
4572     /* 15: addw */
4573     var50.i = var49.i + var40.i;
4574     /* 16: shrsw */
4575     var51.i = var50.i >> ex->params[28];
4576     /* 17: convwb */
4577     var41 = var51.i;
4578     /* 18: storeb */
4579     ptr0[i] = var41;
4580   }
4581
4582 }
4583
4584 void
4585 orc_matrix3_000_u8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
4586     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int p1,
4587     int p2, int p3, int p4, int p5, int n)
4588 {
4589   OrcExecutor _ex, *ex = &_ex;
4590   static volatile int p_inited = 0;
4591   static OrcProgram *p = 0;
4592   void (*func) (OrcExecutor *);
4593
4594   if (!p_inited) {
4595     orc_once_mutex_lock ();
4596     if (!p_inited) {
4597
4598       p = orc_program_new ();
4599       orc_program_set_name (p, "orc_matrix3_000_u8");
4600       orc_program_set_backup_function (p, _backup_orc_matrix3_000_u8);
4601       orc_program_add_destination (p, 1, "d1");
4602       orc_program_add_source (p, 1, "s1");
4603       orc_program_add_source (p, 1, "s2");
4604       orc_program_add_source (p, 1, "s3");
4605       orc_program_add_parameter (p, 2, "p1");
4606       orc_program_add_parameter (p, 2, "p2");
4607       orc_program_add_parameter (p, 2, "p3");
4608       orc_program_add_parameter (p, 2, "p4");
4609       orc_program_add_parameter (p, 2, "p5");
4610       orc_program_add_temporary (p, 2, "t1");
4611       orc_program_add_temporary (p, 2, "t2");
4612
4613       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
4614           ORC_VAR_D1);
4615       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1,
4616           ORC_VAR_D1);
4617       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
4618           ORC_VAR_D1);
4619       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2,
4620           ORC_VAR_D1);
4621       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
4622           ORC_VAR_D1);
4623       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1,
4624           ORC_VAR_D1);
4625       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P3,
4626           ORC_VAR_D1);
4627       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
4628           ORC_VAR_D1);
4629       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P4,
4630           ORC_VAR_D1);
4631       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P5,
4632           ORC_VAR_D1);
4633       orc_program_append_2 (p, "convwb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
4634           ORC_VAR_D1);
4635
4636       orc_program_compile (p);
4637     }
4638     p_inited = TRUE;
4639     orc_once_mutex_unlock ();
4640   }
4641   ex->program = p;
4642
4643   ex->n = n;
4644   ex->arrays[ORC_VAR_D1] = d1;
4645   ex->arrays[ORC_VAR_S1] = (void *) s1;
4646   ex->arrays[ORC_VAR_S2] = (void *) s2;
4647   ex->arrays[ORC_VAR_S3] = (void *) s3;
4648   ex->params[ORC_VAR_P1] = p1;
4649   ex->params[ORC_VAR_P2] = p2;
4650   ex->params[ORC_VAR_P3] = p3;
4651   ex->params[ORC_VAR_P4] = p4;
4652   ex->params[ORC_VAR_P5] = p5;
4653
4654   func = p->code_exec;
4655   func (ex);
4656 }
4657 #endif
4658
4659
4660 /* orc_pack_123x */
4661 #ifdef DISABLE_ORC
4662 void
4663 orc_pack_123x (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
4664     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int p1,
4665     int n)
4666 {
4667   int i;
4668   orc_union32 *ORC_RESTRICT ptr0;
4669   const orc_int8 *ORC_RESTRICT ptr4;
4670   const orc_int8 *ORC_RESTRICT ptr5;
4671   const orc_int8 *ORC_RESTRICT ptr6;
4672   orc_int8 var34;
4673   orc_int8 var35;
4674   orc_int8 var36;
4675   orc_int8 var37;
4676   orc_union32 var38;
4677   orc_union16 var39;
4678   orc_union16 var40;
4679
4680   ptr0 = (orc_union32 *) d1;
4681   ptr4 = (orc_int8 *) s1;
4682   ptr5 = (orc_int8 *) s2;
4683   ptr6 = (orc_int8 *) s3;
4684
4685   /* 4: loadpb */
4686   var37 = p1;
4687
4688   for (i = 0; i < n; i++) {
4689     /* 0: loadb */
4690     var34 = ptr4[i];
4691     /* 1: loadb */
4692     var35 = ptr5[i];
4693     /* 2: mergebw */
4694     {
4695       orc_union16 _dest;
4696       _dest.x2[0] = var34;
4697       _dest.x2[1] = var35;
4698       var39.i = _dest.i;
4699     }
4700     /* 3: loadb */
4701     var36 = ptr6[i];
4702     /* 5: mergebw */
4703     {
4704       orc_union16 _dest;
4705       _dest.x2[0] = var36;
4706       _dest.x2[1] = var37;
4707       var40.i = _dest.i;
4708     }
4709     /* 6: mergewl */
4710     {
4711       orc_union32 _dest;
4712       _dest.x2[0] = var39.i;
4713       _dest.x2[1] = var40.i;
4714       var38.i = _dest.i;
4715     }
4716     /* 7: storel */
4717     ptr0[i] = var38;
4718   }
4719
4720 }
4721
4722 #else
4723 static void
4724 _backup_orc_pack_123x (OrcExecutor * ORC_RESTRICT ex)
4725 {
4726   int i;
4727   int n = ex->n;
4728   orc_union32 *ORC_RESTRICT ptr0;
4729   const orc_int8 *ORC_RESTRICT ptr4;
4730   const orc_int8 *ORC_RESTRICT ptr5;
4731   const orc_int8 *ORC_RESTRICT ptr6;
4732   orc_int8 var34;
4733   orc_int8 var35;
4734   orc_int8 var36;
4735   orc_int8 var37;
4736   orc_union32 var38;
4737   orc_union16 var39;
4738   orc_union16 var40;
4739
4740   ptr0 = (orc_union32 *) ex->arrays[0];
4741   ptr4 = (orc_int8 *) ex->arrays[4];
4742   ptr5 = (orc_int8 *) ex->arrays[5];
4743   ptr6 = (orc_int8 *) ex->arrays[6];
4744
4745   /* 4: loadpb */
4746   var37 = ex->params[24];
4747
4748   for (i = 0; i < n; i++) {
4749     /* 0: loadb */
4750     var34 = ptr4[i];
4751     /* 1: loadb */
4752     var35 = ptr5[i];
4753     /* 2: mergebw */
4754     {
4755       orc_union16 _dest;
4756       _dest.x2[0] = var34;
4757       _dest.x2[1] = var35;
4758       var39.i = _dest.i;
4759     }
4760     /* 3: loadb */
4761     var36 = ptr6[i];
4762     /* 5: mergebw */
4763     {
4764       orc_union16 _dest;
4765       _dest.x2[0] = var36;
4766       _dest.x2[1] = var37;
4767       var40.i = _dest.i;
4768     }
4769     /* 6: mergewl */
4770     {
4771       orc_union32 _dest;
4772       _dest.x2[0] = var39.i;
4773       _dest.x2[1] = var40.i;
4774       var38.i = _dest.i;
4775     }
4776     /* 7: storel */
4777     ptr0[i] = var38;
4778   }
4779
4780 }
4781
4782 void
4783 orc_pack_123x (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
4784     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int p1,
4785     int n)
4786 {
4787   OrcExecutor _ex, *ex = &_ex;
4788   static volatile int p_inited = 0;
4789   static OrcProgram *p = 0;
4790   void (*func) (OrcExecutor *);
4791
4792   if (!p_inited) {
4793     orc_once_mutex_lock ();
4794     if (!p_inited) {
4795
4796       p = orc_program_new ();
4797       orc_program_set_name (p, "orc_pack_123x");
4798       orc_program_set_backup_function (p, _backup_orc_pack_123x);
4799       orc_program_add_destination (p, 4, "d1");
4800       orc_program_add_source (p, 1, "s1");
4801       orc_program_add_source (p, 1, "s2");
4802       orc_program_add_source (p, 1, "s3");
4803       orc_program_add_parameter (p, 1, "p1");
4804       orc_program_add_temporary (p, 2, "t1");
4805       orc_program_add_temporary (p, 2, "t2");
4806
4807       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S2,
4808           ORC_VAR_D1);
4809       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_P1,
4810           ORC_VAR_D1);
4811       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
4812           ORC_VAR_D1);
4813
4814       orc_program_compile (p);
4815     }
4816     p_inited = TRUE;
4817     orc_once_mutex_unlock ();
4818   }
4819   ex->program = p;
4820
4821   ex->n = n;
4822   ex->arrays[ORC_VAR_D1] = d1;
4823   ex->arrays[ORC_VAR_S1] = (void *) s1;
4824   ex->arrays[ORC_VAR_S2] = (void *) s2;
4825   ex->arrays[ORC_VAR_S3] = (void *) s3;
4826   ex->params[ORC_VAR_P1] = p1;
4827
4828   func = p->code_exec;
4829   func (ex);
4830 }
4831 #endif
4832
4833
4834 /* orc_pack_x123 */
4835 #ifdef DISABLE_ORC
4836 void
4837 orc_pack_x123 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
4838     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int p1,
4839     int n)
4840 {
4841   int i;
4842   orc_union32 *ORC_RESTRICT ptr0;
4843   const orc_int8 *ORC_RESTRICT ptr4;
4844   const orc_int8 *ORC_RESTRICT ptr5;
4845   const orc_int8 *ORC_RESTRICT ptr6;
4846   orc_int8 var34;
4847   orc_int8 var35;
4848   orc_int8 var36;
4849   orc_int8 var37;
4850   orc_union32 var38;
4851   orc_union16 var39;
4852   orc_union16 var40;
4853
4854   ptr0 = (orc_union32 *) d1;
4855   ptr4 = (orc_int8 *) s1;
4856   ptr5 = (orc_int8 *) s2;
4857   ptr6 = (orc_int8 *) s3;
4858
4859   /* 0: loadpb */
4860   var34 = p1;
4861
4862   for (i = 0; i < n; i++) {
4863     /* 1: loadb */
4864     var35 = ptr4[i];
4865     /* 2: mergebw */
4866     {
4867       orc_union16 _dest;
4868       _dest.x2[0] = var34;
4869       _dest.x2[1] = var35;
4870       var39.i = _dest.i;
4871     }
4872     /* 3: loadb */
4873     var36 = ptr5[i];
4874     /* 4: loadb */
4875     var37 = ptr6[i];
4876     /* 5: mergebw */
4877     {
4878       orc_union16 _dest;
4879       _dest.x2[0] = var36;
4880       _dest.x2[1] = var37;
4881       var40.i = _dest.i;
4882     }
4883     /* 6: mergewl */
4884     {
4885       orc_union32 _dest;
4886       _dest.x2[0] = var39.i;
4887       _dest.x2[1] = var40.i;
4888       var38.i = _dest.i;
4889     }
4890     /* 7: storel */
4891     ptr0[i] = var38;
4892   }
4893
4894 }
4895
4896 #else
4897 static void
4898 _backup_orc_pack_x123 (OrcExecutor * ORC_RESTRICT ex)
4899 {
4900   int i;
4901   int n = ex->n;
4902   orc_union32 *ORC_RESTRICT ptr0;
4903   const orc_int8 *ORC_RESTRICT ptr4;
4904   const orc_int8 *ORC_RESTRICT ptr5;
4905   const orc_int8 *ORC_RESTRICT ptr6;
4906   orc_int8 var34;
4907   orc_int8 var35;
4908   orc_int8 var36;
4909   orc_int8 var37;
4910   orc_union32 var38;
4911   orc_union16 var39;
4912   orc_union16 var40;
4913
4914   ptr0 = (orc_union32 *) ex->arrays[0];
4915   ptr4 = (orc_int8 *) ex->arrays[4];
4916   ptr5 = (orc_int8 *) ex->arrays[5];
4917   ptr6 = (orc_int8 *) ex->arrays[6];
4918
4919   /* 0: loadpb */
4920   var34 = ex->params[24];
4921
4922   for (i = 0; i < n; i++) {
4923     /* 1: loadb */
4924     var35 = ptr4[i];
4925     /* 2: mergebw */
4926     {
4927       orc_union16 _dest;
4928       _dest.x2[0] = var34;
4929       _dest.x2[1] = var35;
4930       var39.i = _dest.i;
4931     }
4932     /* 3: loadb */
4933     var36 = ptr5[i];
4934     /* 4: loadb */
4935     var37 = ptr6[i];
4936     /* 5: mergebw */
4937     {
4938       orc_union16 _dest;
4939       _dest.x2[0] = var36;
4940       _dest.x2[1] = var37;
4941       var40.i = _dest.i;
4942     }
4943     /* 6: mergewl */
4944     {
4945       orc_union32 _dest;
4946       _dest.x2[0] = var39.i;
4947       _dest.x2[1] = var40.i;
4948       var38.i = _dest.i;
4949     }
4950     /* 7: storel */
4951     ptr0[i] = var38;
4952   }
4953
4954 }
4955
4956 void
4957 orc_pack_x123 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
4958     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int p1,
4959     int n)
4960 {
4961   OrcExecutor _ex, *ex = &_ex;
4962   static volatile int p_inited = 0;
4963   static OrcProgram *p = 0;
4964   void (*func) (OrcExecutor *);
4965
4966   if (!p_inited) {
4967     orc_once_mutex_lock ();
4968     if (!p_inited) {
4969
4970       p = orc_program_new ();
4971       orc_program_set_name (p, "orc_pack_x123");
4972       orc_program_set_backup_function (p, _backup_orc_pack_x123);
4973       orc_program_add_destination (p, 4, "d1");
4974       orc_program_add_source (p, 1, "s1");
4975       orc_program_add_source (p, 1, "s2");
4976       orc_program_add_source (p, 1, "s3");
4977       orc_program_add_parameter (p, 1, "p1");
4978       orc_program_add_temporary (p, 2, "t1");
4979       orc_program_add_temporary (p, 2, "t2");
4980
4981       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_S1,
4982           ORC_VAR_D1);
4983       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S3,
4984           ORC_VAR_D1);
4985       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
4986           ORC_VAR_D1);
4987
4988       orc_program_compile (p);
4989     }
4990     p_inited = TRUE;
4991     orc_once_mutex_unlock ();
4992   }
4993   ex->program = p;
4994
4995   ex->n = n;
4996   ex->arrays[ORC_VAR_D1] = d1;
4997   ex->arrays[ORC_VAR_S1] = (void *) s1;
4998   ex->arrays[ORC_VAR_S2] = (void *) s2;
4999   ex->arrays[ORC_VAR_S3] = (void *) s3;
5000   ex->params[ORC_VAR_P1] = p1;
5001
5002   func = p->code_exec;
5003   func (ex);
5004 }
5005 #endif
5006
5007
5008 /* cogorc_combine2_u8 */
5009 #ifdef DISABLE_ORC
5010 void
5011 cogorc_combine2_u8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
5012     const guint8 * ORC_RESTRICT s2, int p1, int p2, int n)
5013 {
5014   int i;
5015   orc_int8 *ORC_RESTRICT ptr0;
5016   const orc_int8 *ORC_RESTRICT ptr4;
5017   const orc_int8 *ORC_RESTRICT ptr5;
5018   orc_int8 var34;
5019   orc_union16 var35;
5020   orc_int8 var36;
5021   orc_union16 var37;
5022   orc_int8 var38;
5023   orc_union16 var39;
5024   orc_union16 var40;
5025   orc_union16 var41;
5026   orc_union16 var42;
5027   orc_union16 var43;
5028   orc_union16 var44;
5029
5030   ptr0 = (orc_int8 *) d1;
5031   ptr4 = (orc_int8 *) s1;
5032   ptr5 = (orc_int8 *) s2;
5033
5034   /* 2: loadpw */
5035   var35.i = p1;
5036   /* 6: loadpw */
5037   var37.i = p2;
5038
5039   for (i = 0; i < n; i++) {
5040     /* 0: loadb */
5041     var34 = ptr4[i];
5042     /* 1: convubw */
5043     var39.i = (orc_uint8) var34;
5044     /* 3: mullw */
5045     var40.i = (var39.i * var35.i) & 0xffff;
5046     /* 4: loadb */
5047     var36 = ptr5[i];
5048     /* 5: convubw */
5049     var41.i = (orc_uint8) var36;
5050     /* 7: mullw */
5051     var42.i = (var41.i * var37.i) & 0xffff;
5052     /* 8: addw */
5053     var43.i = var40.i + var42.i;
5054     /* 9: shruw */
5055     var44.i = ((orc_uint16) var43.i) >> 8;
5056     /* 10: convsuswb */
5057     var38 = ORC_CLAMP_UB (var44.i);
5058     /* 11: storeb */
5059     ptr0[i] = var38;
5060   }
5061
5062 }
5063
5064 #else
5065 static void
5066 _backup_cogorc_combine2_u8 (OrcExecutor * ORC_RESTRICT ex)
5067 {
5068   int i;
5069   int n = ex->n;
5070   orc_int8 *ORC_RESTRICT ptr0;
5071   const orc_int8 *ORC_RESTRICT ptr4;
5072   const orc_int8 *ORC_RESTRICT ptr5;
5073   orc_int8 var34;
5074   orc_union16 var35;
5075   orc_int8 var36;
5076   orc_union16 var37;
5077   orc_int8 var38;
5078   orc_union16 var39;
5079   orc_union16 var40;
5080   orc_union16 var41;
5081   orc_union16 var42;
5082   orc_union16 var43;
5083   orc_union16 var44;
5084
5085   ptr0 = (orc_int8 *) ex->arrays[0];
5086   ptr4 = (orc_int8 *) ex->arrays[4];
5087   ptr5 = (orc_int8 *) ex->arrays[5];
5088
5089   /* 2: loadpw */
5090   var35.i = ex->params[24];
5091   /* 6: loadpw */
5092   var37.i = ex->params[25];
5093
5094   for (i = 0; i < n; i++) {
5095     /* 0: loadb */
5096     var34 = ptr4[i];
5097     /* 1: convubw */
5098     var39.i = (orc_uint8) var34;
5099     /* 3: mullw */
5100     var40.i = (var39.i * var35.i) & 0xffff;
5101     /* 4: loadb */
5102     var36 = ptr5[i];
5103     /* 5: convubw */
5104     var41.i = (orc_uint8) var36;
5105     /* 7: mullw */
5106     var42.i = (var41.i * var37.i) & 0xffff;
5107     /* 8: addw */
5108     var43.i = var40.i + var42.i;
5109     /* 9: shruw */
5110     var44.i = ((orc_uint16) var43.i) >> 8;
5111     /* 10: convsuswb */
5112     var38 = ORC_CLAMP_UB (var44.i);
5113     /* 11: storeb */
5114     ptr0[i] = var38;
5115   }
5116
5117 }
5118
5119 void
5120 cogorc_combine2_u8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
5121     const guint8 * ORC_RESTRICT s2, int p1, int p2, int n)
5122 {
5123   OrcExecutor _ex, *ex = &_ex;
5124   static volatile int p_inited = 0;
5125   static OrcProgram *p = 0;
5126   void (*func) (OrcExecutor *);
5127
5128   if (!p_inited) {
5129     orc_once_mutex_lock ();
5130     if (!p_inited) {
5131
5132       p = orc_program_new ();
5133       orc_program_set_name (p, "cogorc_combine2_u8");
5134       orc_program_set_backup_function (p, _backup_cogorc_combine2_u8);
5135       orc_program_add_destination (p, 1, "d1");
5136       orc_program_add_source (p, 1, "s1");
5137       orc_program_add_source (p, 1, "s2");
5138       orc_program_add_constant (p, 4, 0x00000008, "c1");
5139       orc_program_add_parameter (p, 2, "p1");
5140       orc_program_add_parameter (p, 2, "p2");
5141       orc_program_add_temporary (p, 2, "t1");
5142       orc_program_add_temporary (p, 2, "t2");
5143
5144       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
5145           ORC_VAR_D1);
5146       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1,
5147           ORC_VAR_D1);
5148       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
5149           ORC_VAR_D1);
5150       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2,
5151           ORC_VAR_D1);
5152       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
5153           ORC_VAR_D1);
5154       orc_program_append_2 (p, "shruw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
5155           ORC_VAR_D1);
5156       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1,
5157           ORC_VAR_D1, ORC_VAR_D1);
5158
5159       orc_program_compile (p);
5160     }
5161     p_inited = TRUE;
5162     orc_once_mutex_unlock ();
5163   }
5164   ex->program = p;
5165
5166   ex->n = n;
5167   ex->arrays[ORC_VAR_D1] = d1;
5168   ex->arrays[ORC_VAR_S1] = (void *) s1;
5169   ex->arrays[ORC_VAR_S2] = (void *) s2;
5170   ex->params[ORC_VAR_P1] = p1;
5171   ex->params[ORC_VAR_P2] = p2;
5172
5173   func = p->code_exec;
5174   func (ex);
5175 }
5176 #endif
5177
5178
5179 /* cogorc_convert_I420_UYVY */
5180 #ifdef DISABLE_ORC
5181 void
5182 cogorc_convert_I420_UYVY (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
5183     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
5184     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n)
5185 {
5186   int i;
5187   orc_union32 *ORC_RESTRICT ptr0;
5188   orc_union32 *ORC_RESTRICT ptr1;
5189   const orc_union16 *ORC_RESTRICT ptr4;
5190   const orc_union16 *ORC_RESTRICT ptr5;
5191   const orc_int8 *ORC_RESTRICT ptr6;
5192   const orc_int8 *ORC_RESTRICT ptr7;
5193   orc_int8 var33;
5194   orc_int8 var34;
5195   orc_union16 var35;
5196   orc_union32 var36;
5197   orc_union16 var37;
5198   orc_union32 var38;
5199   orc_union16 var39;
5200
5201   ptr0 = (orc_union32 *) d1;
5202   ptr1 = (orc_union32 *) d2;
5203   ptr4 = (orc_union16 *) s1;
5204   ptr5 = (orc_union16 *) s2;
5205   ptr6 = (orc_int8 *) s3;
5206   ptr7 = (orc_int8 *) s4;
5207
5208
5209   for (i = 0; i < n; i++) {
5210     /* 0: loadb */
5211     var33 = ptr6[i];
5212     /* 1: loadb */
5213     var34 = ptr7[i];
5214     /* 2: mergebw */
5215     {
5216       orc_union16 _dest;
5217       _dest.x2[0] = var33;
5218       _dest.x2[1] = var34;
5219       var39.i = _dest.i;
5220     }
5221     /* 3: loadw */
5222     var35 = ptr4[i];
5223     /* 4: mergebw */
5224     {
5225       orc_union16 _dest;
5226       _dest.x2[0] = var39.x2[0];
5227       _dest.x2[1] = var35.x2[0];
5228       var36.x2[0] = _dest.i;
5229     }
5230     {
5231       orc_union16 _dest;
5232       _dest.x2[0] = var39.x2[1];
5233       _dest.x2[1] = var35.x2[1];
5234       var36.x2[1] = _dest.i;
5235     }
5236     /* 5: storel */
5237     ptr0[i] = var36;
5238     /* 6: loadw */
5239     var37 = ptr5[i];
5240     /* 7: mergebw */
5241     {
5242       orc_union16 _dest;
5243       _dest.x2[0] = var39.x2[0];
5244       _dest.x2[1] = var37.x2[0];
5245       var38.x2[0] = _dest.i;
5246     }
5247     {
5248       orc_union16 _dest;
5249       _dest.x2[0] = var39.x2[1];
5250       _dest.x2[1] = var37.x2[1];
5251       var38.x2[1] = _dest.i;
5252     }
5253     /* 8: storel */
5254     ptr1[i] = var38;
5255   }
5256
5257 }
5258
5259 #else
5260 static void
5261 _backup_cogorc_convert_I420_UYVY (OrcExecutor * ORC_RESTRICT ex)
5262 {
5263   int i;
5264   int n = ex->n;
5265   orc_union32 *ORC_RESTRICT ptr0;
5266   orc_union32 *ORC_RESTRICT ptr1;
5267   const orc_union16 *ORC_RESTRICT ptr4;
5268   const orc_union16 *ORC_RESTRICT ptr5;
5269   const orc_int8 *ORC_RESTRICT ptr6;
5270   const orc_int8 *ORC_RESTRICT ptr7;
5271   orc_int8 var33;
5272   orc_int8 var34;
5273   orc_union16 var35;
5274   orc_union32 var36;
5275   orc_union16 var37;
5276   orc_union32 var38;
5277   orc_union16 var39;
5278
5279   ptr0 = (orc_union32 *) ex->arrays[0];
5280   ptr1 = (orc_union32 *) ex->arrays[1];
5281   ptr4 = (orc_union16 *) ex->arrays[4];
5282   ptr5 = (orc_union16 *) ex->arrays[5];
5283   ptr6 = (orc_int8 *) ex->arrays[6];
5284   ptr7 = (orc_int8 *) ex->arrays[7];
5285
5286
5287   for (i = 0; i < n; i++) {
5288     /* 0: loadb */
5289     var33 = ptr6[i];
5290     /* 1: loadb */
5291     var34 = ptr7[i];
5292     /* 2: mergebw */
5293     {
5294       orc_union16 _dest;
5295       _dest.x2[0] = var33;
5296       _dest.x2[1] = var34;
5297       var39.i = _dest.i;
5298     }
5299     /* 3: loadw */
5300     var35 = ptr4[i];
5301     /* 4: mergebw */
5302     {
5303       orc_union16 _dest;
5304       _dest.x2[0] = var39.x2[0];
5305       _dest.x2[1] = var35.x2[0];
5306       var36.x2[0] = _dest.i;
5307     }
5308     {
5309       orc_union16 _dest;
5310       _dest.x2[0] = var39.x2[1];
5311       _dest.x2[1] = var35.x2[1];
5312       var36.x2[1] = _dest.i;
5313     }
5314     /* 5: storel */
5315     ptr0[i] = var36;
5316     /* 6: loadw */
5317     var37 = ptr5[i];
5318     /* 7: mergebw */
5319     {
5320       orc_union16 _dest;
5321       _dest.x2[0] = var39.x2[0];
5322       _dest.x2[1] = var37.x2[0];
5323       var38.x2[0] = _dest.i;
5324     }
5325     {
5326       orc_union16 _dest;
5327       _dest.x2[0] = var39.x2[1];
5328       _dest.x2[1] = var37.x2[1];
5329       var38.x2[1] = _dest.i;
5330     }
5331     /* 8: storel */
5332     ptr1[i] = var38;
5333   }
5334
5335 }
5336
5337 void
5338 cogorc_convert_I420_UYVY (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
5339     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
5340     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n)
5341 {
5342   OrcExecutor _ex, *ex = &_ex;
5343   static volatile int p_inited = 0;
5344   static OrcProgram *p = 0;
5345   void (*func) (OrcExecutor *);
5346
5347   if (!p_inited) {
5348     orc_once_mutex_lock ();
5349     if (!p_inited) {
5350
5351       p = orc_program_new ();
5352       orc_program_set_name (p, "cogorc_convert_I420_UYVY");
5353       orc_program_set_backup_function (p, _backup_cogorc_convert_I420_UYVY);
5354       orc_program_add_destination (p, 4, "d1");
5355       orc_program_add_destination (p, 4, "d2");
5356       orc_program_add_source (p, 2, "s1");
5357       orc_program_add_source (p, 2, "s2");
5358       orc_program_add_source (p, 1, "s3");
5359       orc_program_add_source (p, 1, "s4");
5360       orc_program_add_temporary (p, 2, "t1");
5361
5362       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S3, ORC_VAR_S4,
5363           ORC_VAR_D1);
5364       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1,
5365           ORC_VAR_D1);
5366       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D2, ORC_VAR_T1, ORC_VAR_S2,
5367           ORC_VAR_D1);
5368
5369       orc_program_compile (p);
5370     }
5371     p_inited = TRUE;
5372     orc_once_mutex_unlock ();
5373   }
5374   ex->program = p;
5375
5376   ex->n = n;
5377   ex->arrays[ORC_VAR_D1] = d1;
5378   ex->arrays[ORC_VAR_D2] = d2;
5379   ex->arrays[ORC_VAR_S1] = (void *) s1;
5380   ex->arrays[ORC_VAR_S2] = (void *) s2;
5381   ex->arrays[ORC_VAR_S3] = (void *) s3;
5382   ex->arrays[ORC_VAR_S4] = (void *) s4;
5383
5384   func = p->code_exec;
5385   func (ex);
5386 }
5387 #endif
5388
5389
5390 /* cogorc_convert_I420_YUY2 */
5391 #ifdef DISABLE_ORC
5392 void
5393 cogorc_convert_I420_YUY2 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
5394     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
5395     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n)
5396 {
5397   int i;
5398   orc_union32 *ORC_RESTRICT ptr0;
5399   orc_union32 *ORC_RESTRICT ptr1;
5400   const orc_union16 *ORC_RESTRICT ptr4;
5401   const orc_union16 *ORC_RESTRICT ptr5;
5402   const orc_int8 *ORC_RESTRICT ptr6;
5403   const orc_int8 *ORC_RESTRICT ptr7;
5404   orc_int8 var33;
5405   orc_int8 var34;
5406   orc_union16 var35;
5407   orc_union32 var36;
5408   orc_union16 var37;
5409   orc_union32 var38;
5410   orc_union16 var39;
5411
5412   ptr0 = (orc_union32 *) d1;
5413   ptr1 = (orc_union32 *) d2;
5414   ptr4 = (orc_union16 *) s1;
5415   ptr5 = (orc_union16 *) s2;
5416   ptr6 = (orc_int8 *) s3;
5417   ptr7 = (orc_int8 *) s4;
5418
5419
5420   for (i = 0; i < n; i++) {
5421     /* 0: loadb */
5422     var33 = ptr6[i];
5423     /* 1: loadb */
5424     var34 = ptr7[i];
5425     /* 2: mergebw */
5426     {
5427       orc_union16 _dest;
5428       _dest.x2[0] = var33;
5429       _dest.x2[1] = var34;
5430       var39.i = _dest.i;
5431     }
5432     /* 3: loadw */
5433     var35 = ptr4[i];
5434     /* 4: mergebw */
5435     {
5436       orc_union16 _dest;
5437       _dest.x2[0] = var35.x2[0];
5438       _dest.x2[1] = var39.x2[0];
5439       var36.x2[0] = _dest.i;
5440     }
5441     {
5442       orc_union16 _dest;
5443       _dest.x2[0] = var35.x2[1];
5444       _dest.x2[1] = var39.x2[1];
5445       var36.x2[1] = _dest.i;
5446     }
5447     /* 5: storel */
5448     ptr0[i] = var36;
5449     /* 6: loadw */
5450     var37 = ptr5[i];
5451     /* 7: mergebw */
5452     {
5453       orc_union16 _dest;
5454       _dest.x2[0] = var37.x2[0];
5455       _dest.x2[1] = var39.x2[0];
5456       var38.x2[0] = _dest.i;
5457     }
5458     {
5459       orc_union16 _dest;
5460       _dest.x2[0] = var37.x2[1];
5461       _dest.x2[1] = var39.x2[1];
5462       var38.x2[1] = _dest.i;
5463     }
5464     /* 8: storel */
5465     ptr1[i] = var38;
5466   }
5467
5468 }
5469
5470 #else
5471 static void
5472 _backup_cogorc_convert_I420_YUY2 (OrcExecutor * ORC_RESTRICT ex)
5473 {
5474   int i;
5475   int n = ex->n;
5476   orc_union32 *ORC_RESTRICT ptr0;
5477   orc_union32 *ORC_RESTRICT ptr1;
5478   const orc_union16 *ORC_RESTRICT ptr4;
5479   const orc_union16 *ORC_RESTRICT ptr5;
5480   const orc_int8 *ORC_RESTRICT ptr6;
5481   const orc_int8 *ORC_RESTRICT ptr7;
5482   orc_int8 var33;
5483   orc_int8 var34;
5484   orc_union16 var35;
5485   orc_union32 var36;
5486   orc_union16 var37;
5487   orc_union32 var38;
5488   orc_union16 var39;
5489
5490   ptr0 = (orc_union32 *) ex->arrays[0];
5491   ptr1 = (orc_union32 *) ex->arrays[1];
5492   ptr4 = (orc_union16 *) ex->arrays[4];
5493   ptr5 = (orc_union16 *) ex->arrays[5];
5494   ptr6 = (orc_int8 *) ex->arrays[6];
5495   ptr7 = (orc_int8 *) ex->arrays[7];
5496
5497
5498   for (i = 0; i < n; i++) {
5499     /* 0: loadb */
5500     var33 = ptr6[i];
5501     /* 1: loadb */
5502     var34 = ptr7[i];
5503     /* 2: mergebw */
5504     {
5505       orc_union16 _dest;
5506       _dest.x2[0] = var33;
5507       _dest.x2[1] = var34;
5508       var39.i = _dest.i;
5509     }
5510     /* 3: loadw */
5511     var35 = ptr4[i];
5512     /* 4: mergebw */
5513     {
5514       orc_union16 _dest;
5515       _dest.x2[0] = var35.x2[0];
5516       _dest.x2[1] = var39.x2[0];
5517       var36.x2[0] = _dest.i;
5518     }
5519     {
5520       orc_union16 _dest;
5521       _dest.x2[0] = var35.x2[1];
5522       _dest.x2[1] = var39.x2[1];
5523       var36.x2[1] = _dest.i;
5524     }
5525     /* 5: storel */
5526     ptr0[i] = var36;
5527     /* 6: loadw */
5528     var37 = ptr5[i];
5529     /* 7: mergebw */
5530     {
5531       orc_union16 _dest;
5532       _dest.x2[0] = var37.x2[0];
5533       _dest.x2[1] = var39.x2[0];
5534       var38.x2[0] = _dest.i;
5535     }
5536     {
5537       orc_union16 _dest;
5538       _dest.x2[0] = var37.x2[1];
5539       _dest.x2[1] = var39.x2[1];
5540       var38.x2[1] = _dest.i;
5541     }
5542     /* 8: storel */
5543     ptr1[i] = var38;
5544   }
5545
5546 }
5547
5548 void
5549 cogorc_convert_I420_YUY2 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
5550     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
5551     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n)
5552 {
5553   OrcExecutor _ex, *ex = &_ex;
5554   static volatile int p_inited = 0;
5555   static OrcProgram *p = 0;
5556   void (*func) (OrcExecutor *);
5557
5558   if (!p_inited) {
5559     orc_once_mutex_lock ();
5560     if (!p_inited) {
5561
5562       p = orc_program_new ();
5563       orc_program_set_name (p, "cogorc_convert_I420_YUY2");
5564       orc_program_set_backup_function (p, _backup_cogorc_convert_I420_YUY2);
5565       orc_program_add_destination (p, 4, "d1");
5566       orc_program_add_destination (p, 4, "d2");
5567       orc_program_add_source (p, 2, "s1");
5568       orc_program_add_source (p, 2, "s2");
5569       orc_program_add_source (p, 1, "s3");
5570       orc_program_add_source (p, 1, "s4");
5571       orc_program_add_temporary (p, 2, "t1");
5572
5573       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S3, ORC_VAR_S4,
5574           ORC_VAR_D1);
5575       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1,
5576           ORC_VAR_D1);
5577       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D2, ORC_VAR_S2, ORC_VAR_T1,
5578           ORC_VAR_D1);
5579
5580       orc_program_compile (p);
5581     }
5582     p_inited = TRUE;
5583     orc_once_mutex_unlock ();
5584   }
5585   ex->program = p;
5586
5587   ex->n = n;
5588   ex->arrays[ORC_VAR_D1] = d1;
5589   ex->arrays[ORC_VAR_D2] = d2;
5590   ex->arrays[ORC_VAR_S1] = (void *) s1;
5591   ex->arrays[ORC_VAR_S2] = (void *) s2;
5592   ex->arrays[ORC_VAR_S3] = (void *) s3;
5593   ex->arrays[ORC_VAR_S4] = (void *) s4;
5594
5595   func = p->code_exec;
5596   func (ex);
5597 }
5598 #endif
5599
5600
5601 /* cogorc_convert_I420_AYUV */
5602 #ifdef DISABLE_ORC
5603 void
5604 cogorc_convert_I420_AYUV (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
5605     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
5606     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n)
5607 {
5608   int i;
5609   orc_union32 *ORC_RESTRICT ptr0;
5610   orc_union32 *ORC_RESTRICT ptr1;
5611   const orc_int8 *ORC_RESTRICT ptr4;
5612   const orc_int8 *ORC_RESTRICT ptr5;
5613   const orc_int8 *ORC_RESTRICT ptr6;
5614   const orc_int8 *ORC_RESTRICT ptr7;
5615   orc_int8 var36;
5616   orc_int8 var37;
5617   orc_union32 var38;
5618   orc_int8 var39;
5619   orc_int8 var40;
5620   orc_union32 var41;
5621   orc_int8 var42;
5622   orc_int8 var43;
5623   orc_union16 var44;
5624   orc_union16 var45;
5625   orc_union16 var46;
5626
5627   ptr0 = (orc_union32 *) d1;
5628   ptr1 = (orc_union32 *) d2;
5629   ptr4 = (orc_int8 *) s1;
5630   ptr5 = (orc_int8 *) s2;
5631   ptr6 = (orc_int8 *) s3;
5632   ptr7 = (orc_int8 *) s4;
5633
5634   /* 3: loadpb */
5635   var36 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
5636   /* 8: loadpb */
5637   var39 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
5638
5639   for (i = 0; i < n; i++) {
5640     /* 0: loadupdb */
5641     var42 = ptr6[i >> 1];
5642     /* 1: loadupdb */
5643     var43 = ptr7[i >> 1];
5644     /* 2: mergebw */
5645     {
5646       orc_union16 _dest;
5647       _dest.x2[0] = var42;
5648       _dest.x2[1] = var43;
5649       var44.i = _dest.i;
5650     }
5651     /* 4: loadb */
5652     var37 = ptr4[i];
5653     /* 5: mergebw */
5654     {
5655       orc_union16 _dest;
5656       _dest.x2[0] = var36;
5657       _dest.x2[1] = var37;
5658       var45.i = _dest.i;
5659     }
5660     /* 6: mergewl */
5661     {
5662       orc_union32 _dest;
5663       _dest.x2[0] = var45.i;
5664       _dest.x2[1] = var44.i;
5665       var38.i = _dest.i;
5666     }
5667     /* 7: storel */
5668     ptr0[i] = var38;
5669     /* 9: loadb */
5670     var40 = ptr5[i];
5671     /* 10: mergebw */
5672     {
5673       orc_union16 _dest;
5674       _dest.x2[0] = var39;
5675       _dest.x2[1] = var40;
5676       var46.i = _dest.i;
5677     }
5678     /* 11: mergewl */
5679     {
5680       orc_union32 _dest;
5681       _dest.x2[0] = var46.i;
5682       _dest.x2[1] = var44.i;
5683       var41.i = _dest.i;
5684     }
5685     /* 12: storel */
5686     ptr1[i] = var41;
5687   }
5688
5689 }
5690
5691 #else
5692 static void
5693 _backup_cogorc_convert_I420_AYUV (OrcExecutor * ORC_RESTRICT ex)
5694 {
5695   int i;
5696   int n = ex->n;
5697   orc_union32 *ORC_RESTRICT ptr0;
5698   orc_union32 *ORC_RESTRICT ptr1;
5699   const orc_int8 *ORC_RESTRICT ptr4;
5700   const orc_int8 *ORC_RESTRICT ptr5;
5701   const orc_int8 *ORC_RESTRICT ptr6;
5702   const orc_int8 *ORC_RESTRICT ptr7;
5703   orc_int8 var36;
5704   orc_int8 var37;
5705   orc_union32 var38;
5706   orc_int8 var39;
5707   orc_int8 var40;
5708   orc_union32 var41;
5709   orc_int8 var42;
5710   orc_int8 var43;
5711   orc_union16 var44;
5712   orc_union16 var45;
5713   orc_union16 var46;
5714
5715   ptr0 = (orc_union32 *) ex->arrays[0];
5716   ptr1 = (orc_union32 *) ex->arrays[1];
5717   ptr4 = (orc_int8 *) ex->arrays[4];
5718   ptr5 = (orc_int8 *) ex->arrays[5];
5719   ptr6 = (orc_int8 *) ex->arrays[6];
5720   ptr7 = (orc_int8 *) ex->arrays[7];
5721
5722   /* 3: loadpb */
5723   var36 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
5724   /* 8: loadpb */
5725   var39 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
5726
5727   for (i = 0; i < n; i++) {
5728     /* 0: loadupdb */
5729     var42 = ptr6[i >> 1];
5730     /* 1: loadupdb */
5731     var43 = ptr7[i >> 1];
5732     /* 2: mergebw */
5733     {
5734       orc_union16 _dest;
5735       _dest.x2[0] = var42;
5736       _dest.x2[1] = var43;
5737       var44.i = _dest.i;
5738     }
5739     /* 4: loadb */
5740     var37 = ptr4[i];
5741     /* 5: mergebw */
5742     {
5743       orc_union16 _dest;
5744       _dest.x2[0] = var36;
5745       _dest.x2[1] = var37;
5746       var45.i = _dest.i;
5747     }
5748     /* 6: mergewl */
5749     {
5750       orc_union32 _dest;
5751       _dest.x2[0] = var45.i;
5752       _dest.x2[1] = var44.i;
5753       var38.i = _dest.i;
5754     }
5755     /* 7: storel */
5756     ptr0[i] = var38;
5757     /* 9: loadb */
5758     var40 = ptr5[i];
5759     /* 10: mergebw */
5760     {
5761       orc_union16 _dest;
5762       _dest.x2[0] = var39;
5763       _dest.x2[1] = var40;
5764       var46.i = _dest.i;
5765     }
5766     /* 11: mergewl */
5767     {
5768       orc_union32 _dest;
5769       _dest.x2[0] = var46.i;
5770       _dest.x2[1] = var44.i;
5771       var41.i = _dest.i;
5772     }
5773     /* 12: storel */
5774     ptr1[i] = var41;
5775   }
5776
5777 }
5778
5779 void
5780 cogorc_convert_I420_AYUV (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
5781     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
5782     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n)
5783 {
5784   OrcExecutor _ex, *ex = &_ex;
5785   static volatile int p_inited = 0;
5786   static OrcProgram *p = 0;
5787   void (*func) (OrcExecutor *);
5788
5789   if (!p_inited) {
5790     orc_once_mutex_lock ();
5791     if (!p_inited) {
5792
5793       p = orc_program_new ();
5794       orc_program_set_name (p, "cogorc_convert_I420_AYUV");
5795       orc_program_set_backup_function (p, _backup_cogorc_convert_I420_AYUV);
5796       orc_program_add_destination (p, 4, "d1");
5797       orc_program_add_destination (p, 4, "d2");
5798       orc_program_add_source (p, 1, "s1");
5799       orc_program_add_source (p, 1, "s2");
5800       orc_program_add_source (p, 1, "s3");
5801       orc_program_add_source (p, 1, "s4");
5802       orc_program_add_constant (p, 1, 0x000000ff, "c1");
5803       orc_program_add_temporary (p, 2, "t1");
5804       orc_program_add_temporary (p, 2, "t2");
5805       orc_program_add_temporary (p, 1, "t3");
5806       orc_program_add_temporary (p, 1, "t4");
5807
5808       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T3, ORC_VAR_S3,
5809           ORC_VAR_D1, ORC_VAR_D1);
5810       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T4, ORC_VAR_S4,
5811           ORC_VAR_D1, ORC_VAR_D1);
5812       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4,
5813           ORC_VAR_D1);
5814       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1,
5815           ORC_VAR_D1);
5816       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
5817           ORC_VAR_D1);
5818       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S2,
5819           ORC_VAR_D1);
5820       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_T1,
5821           ORC_VAR_D1);
5822
5823       orc_program_compile (p);
5824     }
5825     p_inited = TRUE;
5826     orc_once_mutex_unlock ();
5827   }
5828   ex->program = p;
5829
5830   ex->n = n;
5831   ex->arrays[ORC_VAR_D1] = d1;
5832   ex->arrays[ORC_VAR_D2] = d2;
5833   ex->arrays[ORC_VAR_S1] = (void *) s1;
5834   ex->arrays[ORC_VAR_S2] = (void *) s2;
5835   ex->arrays[ORC_VAR_S3] = (void *) s3;
5836   ex->arrays[ORC_VAR_S4] = (void *) s4;
5837
5838   func = p->code_exec;
5839   func (ex);
5840 }
5841 #endif
5842
5843
5844 /* cogorc_convert_YUY2_I420 */
5845 #ifdef DISABLE_ORC
5846 void
5847 cogorc_convert_YUY2_I420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
5848     guint8 * ORC_RESTRICT d3, guint8 * ORC_RESTRICT d4,
5849     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
5850 {
5851   int i;
5852   orc_union16 *ORC_RESTRICT ptr0;
5853   orc_union16 *ORC_RESTRICT ptr1;
5854   orc_int8 *ORC_RESTRICT ptr2;
5855   orc_int8 *ORC_RESTRICT ptr3;
5856   const orc_union32 *ORC_RESTRICT ptr4;
5857   const orc_union32 *ORC_RESTRICT ptr5;
5858   orc_union32 var35;
5859   orc_union32 var36;
5860   orc_int8 var37;
5861   orc_int8 var38;
5862   orc_union16 var39;
5863   orc_union16 var40;
5864   orc_union16 var41;
5865   orc_union16 var42;
5866   orc_union16 var43;
5867
5868   ptr0 = (orc_union16 *) d1;
5869   ptr1 = (orc_union16 *) d2;
5870   ptr2 = (orc_int8 *) d3;
5871   ptr3 = (orc_int8 *) d4;
5872   ptr4 = (orc_union32 *) s1;
5873   ptr5 = (orc_union32 *) s2;
5874
5875
5876   for (i = 0; i < n; i++) {
5877     /* 0: loadl */
5878     var35 = ptr4[i];
5879     /* 1: splitwb */
5880     {
5881       orc_union16 _src;
5882       _src.i = var35.x2[0];
5883       var39.x2[0] = _src.x2[1];
5884       var40.x2[0] = _src.x2[0];
5885     }
5886     {
5887       orc_union16 _src;
5888       _src.i = var35.x2[1];
5889       var39.x2[1] = _src.x2[1];
5890       var40.x2[1] = _src.x2[0];
5891     }
5892     /* 2: storew */
5893     ptr0[i] = var40;
5894     /* 3: loadl */
5895     var36 = ptr5[i];
5896     /* 4: splitwb */
5897     {
5898       orc_union16 _src;
5899       _src.i = var36.x2[0];
5900       var41.x2[0] = _src.x2[1];
5901       var42.x2[0] = _src.x2[0];
5902     }
5903     {
5904       orc_union16 _src;
5905       _src.i = var36.x2[1];
5906       var41.x2[1] = _src.x2[1];
5907       var42.x2[1] = _src.x2[0];
5908     }
5909     /* 5: storew */
5910     ptr1[i] = var42;
5911     /* 6: avgub */
5912     var43.x2[0] = ((orc_uint8) var39.x2[0] + (orc_uint8) var41.x2[0] + 1) >> 1;
5913     var43.x2[1] = ((orc_uint8) var39.x2[1] + (orc_uint8) var41.x2[1] + 1) >> 1;
5914     /* 7: splitwb */
5915     {
5916       orc_union16 _src;
5917       _src.i = var43.i;
5918       var37 = _src.x2[1];
5919       var38 = _src.x2[0];
5920     }
5921     /* 8: storeb */
5922     ptr3[i] = var37;
5923     /* 9: storeb */
5924     ptr2[i] = var38;
5925   }
5926
5927 }
5928
5929 #else
5930 static void
5931 _backup_cogorc_convert_YUY2_I420 (OrcExecutor * ORC_RESTRICT ex)
5932 {
5933   int i;
5934   int n = ex->n;
5935   orc_union16 *ORC_RESTRICT ptr0;
5936   orc_union16 *ORC_RESTRICT ptr1;
5937   orc_int8 *ORC_RESTRICT ptr2;
5938   orc_int8 *ORC_RESTRICT ptr3;
5939   const orc_union32 *ORC_RESTRICT ptr4;
5940   const orc_union32 *ORC_RESTRICT ptr5;
5941   orc_union32 var35;
5942   orc_union32 var36;
5943   orc_int8 var37;
5944   orc_int8 var38;
5945   orc_union16 var39;
5946   orc_union16 var40;
5947   orc_union16 var41;
5948   orc_union16 var42;
5949   orc_union16 var43;
5950
5951   ptr0 = (orc_union16 *) ex->arrays[0];
5952   ptr1 = (orc_union16 *) ex->arrays[1];
5953   ptr2 = (orc_int8 *) ex->arrays[2];
5954   ptr3 = (orc_int8 *) ex->arrays[3];
5955   ptr4 = (orc_union32 *) ex->arrays[4];
5956   ptr5 = (orc_union32 *) ex->arrays[5];
5957
5958
5959   for (i = 0; i < n; i++) {
5960     /* 0: loadl */
5961     var35 = ptr4[i];
5962     /* 1: splitwb */
5963     {
5964       orc_union16 _src;
5965       _src.i = var35.x2[0];
5966       var39.x2[0] = _src.x2[1];
5967       var40.x2[0] = _src.x2[0];
5968     }
5969     {
5970       orc_union16 _src;
5971       _src.i = var35.x2[1];
5972       var39.x2[1] = _src.x2[1];
5973       var40.x2[1] = _src.x2[0];
5974     }
5975     /* 2: storew */
5976     ptr0[i] = var40;
5977     /* 3: loadl */
5978     var36 = ptr5[i];
5979     /* 4: splitwb */
5980     {
5981       orc_union16 _src;
5982       _src.i = var36.x2[0];
5983       var41.x2[0] = _src.x2[1];
5984       var42.x2[0] = _src.x2[0];
5985     }
5986     {
5987       orc_union16 _src;
5988       _src.i = var36.x2[1];
5989       var41.x2[1] = _src.x2[1];
5990       var42.x2[1] = _src.x2[0];
5991     }
5992     /* 5: storew */
5993     ptr1[i] = var42;
5994     /* 6: avgub */
5995     var43.x2[0] = ((orc_uint8) var39.x2[0] + (orc_uint8) var41.x2[0] + 1) >> 1;
5996     var43.x2[1] = ((orc_uint8) var39.x2[1] + (orc_uint8) var41.x2[1] + 1) >> 1;
5997     /* 7: splitwb */
5998     {
5999       orc_union16 _src;
6000       _src.i = var43.i;
6001       var37 = _src.x2[1];
6002       var38 = _src.x2[0];
6003     }
6004     /* 8: storeb */
6005     ptr3[i] = var37;
6006     /* 9: storeb */
6007     ptr2[i] = var38;
6008   }
6009
6010 }
6011
6012 void
6013 cogorc_convert_YUY2_I420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
6014     guint8 * ORC_RESTRICT d3, guint8 * ORC_RESTRICT d4,
6015     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
6016 {
6017   OrcExecutor _ex, *ex = &_ex;
6018   static volatile int p_inited = 0;
6019   static OrcProgram *p = 0;
6020   void (*func) (OrcExecutor *);
6021
6022   if (!p_inited) {
6023     orc_once_mutex_lock ();
6024     if (!p_inited) {
6025
6026       p = orc_program_new ();
6027       orc_program_set_name (p, "cogorc_convert_YUY2_I420");
6028       orc_program_set_backup_function (p, _backup_cogorc_convert_YUY2_I420);
6029       orc_program_add_destination (p, 2, "d1");
6030       orc_program_add_destination (p, 2, "d2");
6031       orc_program_add_destination (p, 1, "d3");
6032       orc_program_add_destination (p, 1, "d4");
6033       orc_program_add_source (p, 4, "s1");
6034       orc_program_add_source (p, 4, "s2");
6035       orc_program_add_temporary (p, 2, "t1");
6036       orc_program_add_temporary (p, 2, "t2");
6037       orc_program_add_temporary (p, 2, "t3");
6038
6039       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_S1,
6040           ORC_VAR_D1);
6041       orc_program_append_2 (p, "storew", 0, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_D1,
6042           ORC_VAR_D1);
6043       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_S2,
6044           ORC_VAR_D1);
6045       orc_program_append_2 (p, "storew", 0, ORC_VAR_D2, ORC_VAR_T3, ORC_VAR_D1,
6046           ORC_VAR_D1);
6047       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
6048           ORC_VAR_D1);
6049       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D4, ORC_VAR_D3, ORC_VAR_T1,
6050           ORC_VAR_D1);
6051
6052       orc_program_compile (p);
6053     }
6054     p_inited = TRUE;
6055     orc_once_mutex_unlock ();
6056   }
6057   ex->program = p;
6058
6059   ex->n = n;
6060   ex->arrays[ORC_VAR_D1] = d1;
6061   ex->arrays[ORC_VAR_D2] = d2;
6062   ex->arrays[ORC_VAR_D3] = d3;
6063   ex->arrays[ORC_VAR_D4] = d4;
6064   ex->arrays[ORC_VAR_S1] = (void *) s1;
6065   ex->arrays[ORC_VAR_S2] = (void *) s2;
6066
6067   func = p->code_exec;
6068   func (ex);
6069 }
6070 #endif
6071
6072
6073 /* cogorc_convert_UYVY_YUY2 */
6074 #ifdef DISABLE_ORC
6075 void
6076 cogorc_convert_UYVY_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
6077     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
6078 {
6079   int i;
6080   int j;
6081   orc_union32 *ORC_RESTRICT ptr0;
6082   const orc_union32 *ORC_RESTRICT ptr4;
6083   orc_union32 var32;
6084   orc_union32 var33;
6085
6086   for (j = 0; j < m; j++) {
6087     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
6088     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
6089
6090
6091     for (i = 0; i < n; i++) {
6092       /* 0: loadl */
6093       var32 = ptr4[i];
6094       /* 1: swapw */
6095       var33.x2[0] = ORC_SWAP_W (var32.x2[0]);
6096       var33.x2[1] = ORC_SWAP_W (var32.x2[1]);
6097       /* 2: storel */
6098       ptr0[i] = var33;
6099     }
6100   }
6101
6102 }
6103
6104 #else
6105 static void
6106 _backup_cogorc_convert_UYVY_YUY2 (OrcExecutor * ORC_RESTRICT ex)
6107 {
6108   int i;
6109   int j;
6110   int n = ex->n;
6111   int m = ex->params[ORC_VAR_A1];
6112   orc_union32 *ORC_RESTRICT ptr0;
6113   const orc_union32 *ORC_RESTRICT ptr4;
6114   orc_union32 var32;
6115   orc_union32 var33;
6116
6117   for (j = 0; j < m; j++) {
6118     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
6119     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
6120
6121
6122     for (i = 0; i < n; i++) {
6123       /* 0: loadl */
6124       var32 = ptr4[i];
6125       /* 1: swapw */
6126       var33.x2[0] = ORC_SWAP_W (var32.x2[0]);
6127       var33.x2[1] = ORC_SWAP_W (var32.x2[1]);
6128       /* 2: storel */
6129       ptr0[i] = var33;
6130     }
6131   }
6132
6133 }
6134
6135 void
6136 cogorc_convert_UYVY_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
6137     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
6138 {
6139   OrcExecutor _ex, *ex = &_ex;
6140   static volatile int p_inited = 0;
6141   static OrcProgram *p = 0;
6142   void (*func) (OrcExecutor *);
6143
6144   if (!p_inited) {
6145     orc_once_mutex_lock ();
6146     if (!p_inited) {
6147
6148       p = orc_program_new ();
6149       orc_program_set_2d (p);
6150       orc_program_set_name (p, "cogorc_convert_UYVY_YUY2");
6151       orc_program_set_backup_function (p, _backup_cogorc_convert_UYVY_YUY2);
6152       orc_program_add_destination (p, 4, "d1");
6153       orc_program_add_source (p, 4, "s1");
6154
6155       orc_program_append_2 (p, "swapw", 1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1,
6156           ORC_VAR_D1);
6157
6158       orc_program_compile (p);
6159     }
6160     p_inited = TRUE;
6161     orc_once_mutex_unlock ();
6162   }
6163   ex->program = p;
6164
6165   ex->n = n;
6166   ORC_EXECUTOR_M (ex) = m;
6167   ex->arrays[ORC_VAR_D1] = d1;
6168   ex->params[ORC_VAR_D1] = d1_stride;
6169   ex->arrays[ORC_VAR_S1] = (void *) s1;
6170   ex->params[ORC_VAR_S1] = s1_stride;
6171
6172   func = p->code_exec;
6173   func (ex);
6174 }
6175 #endif
6176
6177
6178 /* cogorc_planar_chroma_420_422 */
6179 #ifdef DISABLE_ORC
6180 void
6181 cogorc_planar_chroma_420_422 (guint8 * ORC_RESTRICT d1, int d1_stride,
6182     guint8 * ORC_RESTRICT d2, int d2_stride, const guint8 * ORC_RESTRICT s1,
6183     int s1_stride, int n, int m)
6184 {
6185   int i;
6186   int j;
6187   orc_int8 *ORC_RESTRICT ptr0;
6188   orc_int8 *ORC_RESTRICT ptr1;
6189   const orc_int8 *ORC_RESTRICT ptr4;
6190   orc_int8 var32;
6191   orc_int8 var33;
6192   orc_int8 var34;
6193   orc_int8 var35;
6194
6195   for (j = 0; j < m; j++) {
6196     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
6197     ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
6198     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
6199
6200
6201     for (i = 0; i < n; i++) {
6202       /* 0: loadb */
6203       var32 = ptr4[i];
6204       /* 1: copyb */
6205       var33 = var32;
6206       /* 2: storeb */
6207       ptr0[i] = var33;
6208       /* 3: loadb */
6209       var34 = ptr4[i];
6210       /* 4: copyb */
6211       var35 = var34;
6212       /* 5: storeb */
6213       ptr1[i] = var35;
6214     }
6215   }
6216
6217 }
6218
6219 #else
6220 static void
6221 _backup_cogorc_planar_chroma_420_422 (OrcExecutor * ORC_RESTRICT ex)
6222 {
6223   int i;
6224   int j;
6225   int n = ex->n;
6226   int m = ex->params[ORC_VAR_A1];
6227   orc_int8 *ORC_RESTRICT ptr0;
6228   orc_int8 *ORC_RESTRICT ptr1;
6229   const orc_int8 *ORC_RESTRICT ptr4;
6230   orc_int8 var32;
6231   orc_int8 var33;
6232   orc_int8 var34;
6233   orc_int8 var35;
6234
6235   for (j = 0; j < m; j++) {
6236     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
6237     ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
6238     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
6239
6240
6241     for (i = 0; i < n; i++) {
6242       /* 0: loadb */
6243       var32 = ptr4[i];
6244       /* 1: copyb */
6245       var33 = var32;
6246       /* 2: storeb */
6247       ptr0[i] = var33;
6248       /* 3: loadb */
6249       var34 = ptr4[i];
6250       /* 4: copyb */
6251       var35 = var34;
6252       /* 5: storeb */
6253       ptr1[i] = var35;
6254     }
6255   }
6256
6257 }
6258
6259 void
6260 cogorc_planar_chroma_420_422 (guint8 * ORC_RESTRICT d1, int d1_stride,
6261     guint8 * ORC_RESTRICT d2, int d2_stride, const guint8 * ORC_RESTRICT s1,
6262     int s1_stride, int n, int m)
6263 {
6264   OrcExecutor _ex, *ex = &_ex;
6265   static volatile int p_inited = 0;
6266   static OrcProgram *p = 0;
6267   void (*func) (OrcExecutor *);
6268
6269   if (!p_inited) {
6270     orc_once_mutex_lock ();
6271     if (!p_inited) {
6272
6273       p = orc_program_new ();
6274       orc_program_set_2d (p);
6275       orc_program_set_name (p, "cogorc_planar_chroma_420_422");
6276       orc_program_set_backup_function (p, _backup_cogorc_planar_chroma_420_422);
6277       orc_program_add_destination (p, 1, "d1");
6278       orc_program_add_destination (p, 1, "d2");
6279       orc_program_add_source (p, 1, "s1");
6280
6281       orc_program_append_2 (p, "copyb", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1,
6282           ORC_VAR_D1);
6283       orc_program_append_2 (p, "copyb", 0, ORC_VAR_D2, ORC_VAR_S1, ORC_VAR_D1,
6284           ORC_VAR_D1);
6285
6286       orc_program_compile (p);
6287     }
6288     p_inited = TRUE;
6289     orc_once_mutex_unlock ();
6290   }
6291   ex->program = p;
6292
6293   ex->n = n;
6294   ORC_EXECUTOR_M (ex) = m;
6295   ex->arrays[ORC_VAR_D1] = d1;
6296   ex->params[ORC_VAR_D1] = d1_stride;
6297   ex->arrays[ORC_VAR_D2] = d2;
6298   ex->params[ORC_VAR_D2] = d2_stride;
6299   ex->arrays[ORC_VAR_S1] = (void *) s1;
6300   ex->params[ORC_VAR_S1] = s1_stride;
6301
6302   func = p->code_exec;
6303   func (ex);
6304 }
6305 #endif
6306
6307
6308 /* cogorc_planar_chroma_420_444 */
6309 #ifdef DISABLE_ORC
6310 void
6311 cogorc_planar_chroma_420_444 (guint8 * ORC_RESTRICT d1, int d1_stride,
6312     guint8 * ORC_RESTRICT d2, int d2_stride, const guint8 * ORC_RESTRICT s1,
6313     int s1_stride, int n, int m)
6314 {
6315   int i;
6316   int j;
6317   orc_union16 *ORC_RESTRICT ptr0;
6318   orc_union16 *ORC_RESTRICT ptr1;
6319   const orc_int8 *ORC_RESTRICT ptr4;
6320   orc_int8 var33;
6321   orc_union16 var34;
6322
6323   for (j = 0; j < m; j++) {
6324     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
6325     ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
6326     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
6327
6328
6329     for (i = 0; i < n; i++) {
6330       /* 0: loadb */
6331       var33 = ptr4[i];
6332       /* 1: splatbw */
6333       var34.i = ((var33 & 0xff) << 8) | (var33 & 0xff);
6334       /* 2: storew */
6335       ptr0[i] = var34;
6336       /* 3: storew */
6337       ptr1[i] = var34;
6338     }
6339   }
6340
6341 }
6342
6343 #else
6344 static void
6345 _backup_cogorc_planar_chroma_420_444 (OrcExecutor * ORC_RESTRICT ex)
6346 {
6347   int i;
6348   int j;
6349   int n = ex->n;
6350   int m = ex->params[ORC_VAR_A1];
6351   orc_union16 *ORC_RESTRICT ptr0;
6352   orc_union16 *ORC_RESTRICT ptr1;
6353   const orc_int8 *ORC_RESTRICT ptr4;
6354   orc_int8 var33;
6355   orc_union16 var34;
6356
6357   for (j = 0; j < m; j++) {
6358     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
6359     ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
6360     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
6361
6362
6363     for (i = 0; i < n; i++) {
6364       /* 0: loadb */
6365       var33 = ptr4[i];
6366       /* 1: splatbw */
6367       var34.i = ((var33 & 0xff) << 8) | (var33 & 0xff);
6368       /* 2: storew */
6369       ptr0[i] = var34;
6370       /* 3: storew */
6371       ptr1[i] = var34;
6372     }
6373   }
6374
6375 }
6376
6377 void
6378 cogorc_planar_chroma_420_444 (guint8 * ORC_RESTRICT d1, int d1_stride,
6379     guint8 * ORC_RESTRICT d2, int d2_stride, const guint8 * ORC_RESTRICT s1,
6380     int s1_stride, int n, int m)
6381 {
6382   OrcExecutor _ex, *ex = &_ex;
6383   static volatile int p_inited = 0;
6384   static OrcProgram *p = 0;
6385   void (*func) (OrcExecutor *);
6386
6387   if (!p_inited) {
6388     orc_once_mutex_lock ();
6389     if (!p_inited) {
6390
6391       p = orc_program_new ();
6392       orc_program_set_2d (p);
6393       orc_program_set_name (p, "cogorc_planar_chroma_420_444");
6394       orc_program_set_backup_function (p, _backup_cogorc_planar_chroma_420_444);
6395       orc_program_add_destination (p, 2, "d1");
6396       orc_program_add_destination (p, 2, "d2");
6397       orc_program_add_source (p, 1, "s1");
6398       orc_program_add_temporary (p, 2, "t1");
6399
6400       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
6401           ORC_VAR_D1);
6402       orc_program_append_2 (p, "storew", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
6403           ORC_VAR_D1);
6404       orc_program_append_2 (p, "storew", 0, ORC_VAR_D2, ORC_VAR_T1, ORC_VAR_D1,
6405           ORC_VAR_D1);
6406
6407       orc_program_compile (p);
6408     }
6409     p_inited = TRUE;
6410     orc_once_mutex_unlock ();
6411   }
6412   ex->program = p;
6413
6414   ex->n = n;
6415   ORC_EXECUTOR_M (ex) = m;
6416   ex->arrays[ORC_VAR_D1] = d1;
6417   ex->params[ORC_VAR_D1] = d1_stride;
6418   ex->arrays[ORC_VAR_D2] = d2;
6419   ex->params[ORC_VAR_D2] = d2_stride;
6420   ex->arrays[ORC_VAR_S1] = (void *) s1;
6421   ex->params[ORC_VAR_S1] = s1_stride;
6422
6423   func = p->code_exec;
6424   func (ex);
6425 }
6426 #endif
6427
6428
6429 /* cogorc_planar_chroma_422_444 */
6430 #ifdef DISABLE_ORC
6431 void
6432 cogorc_planar_chroma_422_444 (guint8 * ORC_RESTRICT d1, int d1_stride,
6433     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
6434 {
6435   int i;
6436   int j;
6437   orc_union16 *ORC_RESTRICT ptr0;
6438   const orc_int8 *ORC_RESTRICT ptr4;
6439   orc_int8 var33;
6440   orc_union16 var34;
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
6446
6447     for (i = 0; i < n; i++) {
6448       /* 0: loadb */
6449       var33 = ptr4[i];
6450       /* 1: splatbw */
6451       var34.i = ((var33 & 0xff) << 8) | (var33 & 0xff);
6452       /* 2: storew */
6453       ptr0[i] = var34;
6454     }
6455   }
6456
6457 }
6458
6459 #else
6460 static void
6461 _backup_cogorc_planar_chroma_422_444 (OrcExecutor * ORC_RESTRICT ex)
6462 {
6463   int i;
6464   int j;
6465   int n = ex->n;
6466   int m = ex->params[ORC_VAR_A1];
6467   orc_union16 *ORC_RESTRICT ptr0;
6468   const orc_int8 *ORC_RESTRICT ptr4;
6469   orc_int8 var33;
6470   orc_union16 var34;
6471
6472   for (j = 0; j < m; j++) {
6473     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
6474     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
6475
6476
6477     for (i = 0; i < n; i++) {
6478       /* 0: loadb */
6479       var33 = ptr4[i];
6480       /* 1: splatbw */
6481       var34.i = ((var33 & 0xff) << 8) | (var33 & 0xff);
6482       /* 2: storew */
6483       ptr0[i] = var34;
6484     }
6485   }
6486
6487 }
6488
6489 void
6490 cogorc_planar_chroma_422_444 (guint8 * ORC_RESTRICT d1, int d1_stride,
6491     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
6492 {
6493   OrcExecutor _ex, *ex = &_ex;
6494   static volatile int p_inited = 0;
6495   static OrcProgram *p = 0;
6496   void (*func) (OrcExecutor *);
6497
6498   if (!p_inited) {
6499     orc_once_mutex_lock ();
6500     if (!p_inited) {
6501
6502       p = orc_program_new ();
6503       orc_program_set_2d (p);
6504       orc_program_set_name (p, "cogorc_planar_chroma_422_444");
6505       orc_program_set_backup_function (p, _backup_cogorc_planar_chroma_422_444);
6506       orc_program_add_destination (p, 2, "d1");
6507       orc_program_add_source (p, 1, "s1");
6508       orc_program_add_temporary (p, 2, "t1");
6509
6510       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
6511           ORC_VAR_D1);
6512       orc_program_append_2 (p, "storew", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
6513           ORC_VAR_D1);
6514
6515       orc_program_compile (p);
6516     }
6517     p_inited = TRUE;
6518     orc_once_mutex_unlock ();
6519   }
6520   ex->program = p;
6521
6522   ex->n = n;
6523   ORC_EXECUTOR_M (ex) = m;
6524   ex->arrays[ORC_VAR_D1] = d1;
6525   ex->params[ORC_VAR_D1] = d1_stride;
6526   ex->arrays[ORC_VAR_S1] = (void *) s1;
6527   ex->params[ORC_VAR_S1] = s1_stride;
6528
6529   func = p->code_exec;
6530   func (ex);
6531 }
6532 #endif
6533
6534
6535 /* cogorc_planar_chroma_444_422 */
6536 #ifdef DISABLE_ORC
6537 void
6538 cogorc_planar_chroma_444_422 (guint8 * ORC_RESTRICT d1, int d1_stride,
6539     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
6540 {
6541   int i;
6542   int j;
6543   orc_int8 *ORC_RESTRICT ptr0;
6544   const orc_union16 *ORC_RESTRICT ptr4;
6545   orc_union16 var34;
6546   orc_int8 var35;
6547   orc_int8 var36;
6548   orc_int8 var37;
6549
6550   for (j = 0; j < m; j++) {
6551     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
6552     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
6553
6554
6555     for (i = 0; i < n; i++) {
6556       /* 0: loadw */
6557       var34 = ptr4[i];
6558       /* 1: splitwb */
6559       {
6560         orc_union16 _src;
6561         _src.i = var34.i;
6562         var36 = _src.x2[1];
6563         var37 = _src.x2[0];
6564       }
6565       /* 2: avgub */
6566       var35 = ((orc_uint8) var36 + (orc_uint8) var37 + 1) >> 1;
6567       /* 3: storeb */
6568       ptr0[i] = var35;
6569     }
6570   }
6571
6572 }
6573
6574 #else
6575 static void
6576 _backup_cogorc_planar_chroma_444_422 (OrcExecutor * ORC_RESTRICT ex)
6577 {
6578   int i;
6579   int j;
6580   int n = ex->n;
6581   int m = ex->params[ORC_VAR_A1];
6582   orc_int8 *ORC_RESTRICT ptr0;
6583   const orc_union16 *ORC_RESTRICT ptr4;
6584   orc_union16 var34;
6585   orc_int8 var35;
6586   orc_int8 var36;
6587   orc_int8 var37;
6588
6589   for (j = 0; j < m; j++) {
6590     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
6591     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
6592
6593
6594     for (i = 0; i < n; i++) {
6595       /* 0: loadw */
6596       var34 = ptr4[i];
6597       /* 1: splitwb */
6598       {
6599         orc_union16 _src;
6600         _src.i = var34.i;
6601         var36 = _src.x2[1];
6602         var37 = _src.x2[0];
6603       }
6604       /* 2: avgub */
6605       var35 = ((orc_uint8) var36 + (orc_uint8) var37 + 1) >> 1;
6606       /* 3: storeb */
6607       ptr0[i] = var35;
6608     }
6609   }
6610
6611 }
6612
6613 void
6614 cogorc_planar_chroma_444_422 (guint8 * ORC_RESTRICT d1, int d1_stride,
6615     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
6616 {
6617   OrcExecutor _ex, *ex = &_ex;
6618   static volatile int p_inited = 0;
6619   static OrcProgram *p = 0;
6620   void (*func) (OrcExecutor *);
6621
6622   if (!p_inited) {
6623     orc_once_mutex_lock ();
6624     if (!p_inited) {
6625
6626       p = orc_program_new ();
6627       orc_program_set_2d (p);
6628       orc_program_set_name (p, "cogorc_planar_chroma_444_422");
6629       orc_program_set_backup_function (p, _backup_cogorc_planar_chroma_444_422);
6630       orc_program_add_destination (p, 1, "d1");
6631       orc_program_add_source (p, 2, "s1");
6632       orc_program_add_temporary (p, 1, "t1");
6633       orc_program_add_temporary (p, 1, "t2");
6634
6635       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1,
6636           ORC_VAR_D1);
6637       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
6638           ORC_VAR_D1);
6639
6640       orc_program_compile (p);
6641     }
6642     p_inited = TRUE;
6643     orc_once_mutex_unlock ();
6644   }
6645   ex->program = p;
6646
6647   ex->n = n;
6648   ORC_EXECUTOR_M (ex) = m;
6649   ex->arrays[ORC_VAR_D1] = d1;
6650   ex->params[ORC_VAR_D1] = d1_stride;
6651   ex->arrays[ORC_VAR_S1] = (void *) s1;
6652   ex->params[ORC_VAR_S1] = s1_stride;
6653
6654   func = p->code_exec;
6655   func (ex);
6656 }
6657 #endif
6658
6659
6660 /* cogorc_planar_chroma_444_420 */
6661 #ifdef DISABLE_ORC
6662 void
6663 cogorc_planar_chroma_444_420 (guint8 * ORC_RESTRICT d1, int d1_stride,
6664     const guint8 * ORC_RESTRICT s1, int s1_stride,
6665     const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m)
6666 {
6667   int i;
6668   int j;
6669   orc_int8 *ORC_RESTRICT ptr0;
6670   const orc_union16 *ORC_RESTRICT ptr4;
6671   const orc_union16 *ORC_RESTRICT ptr5;
6672   orc_union16 var35;
6673   orc_union16 var36;
6674   orc_int8 var37;
6675   orc_union16 var38;
6676   orc_int8 var39;
6677   orc_int8 var40;
6678
6679   for (j = 0; j < m; j++) {
6680     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
6681     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
6682     ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
6683
6684
6685     for (i = 0; i < n; i++) {
6686       /* 0: loadw */
6687       var35 = ptr4[i];
6688       /* 1: loadw */
6689       var36 = ptr5[i];
6690       /* 2: avgub */
6691       var38.x2[0] =
6692           ((orc_uint8) var35.x2[0] + (orc_uint8) var36.x2[0] + 1) >> 1;
6693       var38.x2[1] =
6694           ((orc_uint8) var35.x2[1] + (orc_uint8) var36.x2[1] + 1) >> 1;
6695       /* 3: splitwb */
6696       {
6697         orc_union16 _src;
6698         _src.i = var38.i;
6699         var39 = _src.x2[1];
6700         var40 = _src.x2[0];
6701       }
6702       /* 4: avgub */
6703       var37 = ((orc_uint8) var39 + (orc_uint8) var40 + 1) >> 1;
6704       /* 5: storeb */
6705       ptr0[i] = var37;
6706     }
6707   }
6708
6709 }
6710
6711 #else
6712 static void
6713 _backup_cogorc_planar_chroma_444_420 (OrcExecutor * ORC_RESTRICT ex)
6714 {
6715   int i;
6716   int j;
6717   int n = ex->n;
6718   int m = ex->params[ORC_VAR_A1];
6719   orc_int8 *ORC_RESTRICT ptr0;
6720   const orc_union16 *ORC_RESTRICT ptr4;
6721   const orc_union16 *ORC_RESTRICT ptr5;
6722   orc_union16 var35;
6723   orc_union16 var36;
6724   orc_int8 var37;
6725   orc_union16 var38;
6726   orc_int8 var39;
6727   orc_int8 var40;
6728
6729   for (j = 0; j < m; j++) {
6730     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
6731     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
6732     ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
6733
6734
6735     for (i = 0; i < n; i++) {
6736       /* 0: loadw */
6737       var35 = ptr4[i];
6738       /* 1: loadw */
6739       var36 = ptr5[i];
6740       /* 2: avgub */
6741       var38.x2[0] =
6742           ((orc_uint8) var35.x2[0] + (orc_uint8) var36.x2[0] + 1) >> 1;
6743       var38.x2[1] =
6744           ((orc_uint8) var35.x2[1] + (orc_uint8) var36.x2[1] + 1) >> 1;
6745       /* 3: splitwb */
6746       {
6747         orc_union16 _src;
6748         _src.i = var38.i;
6749         var39 = _src.x2[1];
6750         var40 = _src.x2[0];
6751       }
6752       /* 4: avgub */
6753       var37 = ((orc_uint8) var39 + (orc_uint8) var40 + 1) >> 1;
6754       /* 5: storeb */
6755       ptr0[i] = var37;
6756     }
6757   }
6758
6759 }
6760
6761 void
6762 cogorc_planar_chroma_444_420 (guint8 * ORC_RESTRICT d1, int d1_stride,
6763     const guint8 * ORC_RESTRICT s1, int s1_stride,
6764     const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m)
6765 {
6766   OrcExecutor _ex, *ex = &_ex;
6767   static volatile int p_inited = 0;
6768   static OrcProgram *p = 0;
6769   void (*func) (OrcExecutor *);
6770
6771   if (!p_inited) {
6772     orc_once_mutex_lock ();
6773     if (!p_inited) {
6774
6775       p = orc_program_new ();
6776       orc_program_set_2d (p);
6777       orc_program_set_name (p, "cogorc_planar_chroma_444_420");
6778       orc_program_set_backup_function (p, _backup_cogorc_planar_chroma_444_420);
6779       orc_program_add_destination (p, 1, "d1");
6780       orc_program_add_source (p, 2, "s1");
6781       orc_program_add_source (p, 2, "s2");
6782       orc_program_add_temporary (p, 2, "t1");
6783       orc_program_add_temporary (p, 1, "t2");
6784       orc_program_add_temporary (p, 1, "t3");
6785
6786       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S2,
6787           ORC_VAR_D1);
6788       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T1,
6789           ORC_VAR_D1);
6790       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T3,
6791           ORC_VAR_D1);
6792
6793       orc_program_compile (p);
6794     }
6795     p_inited = TRUE;
6796     orc_once_mutex_unlock ();
6797   }
6798   ex->program = p;
6799
6800   ex->n = n;
6801   ORC_EXECUTOR_M (ex) = m;
6802   ex->arrays[ORC_VAR_D1] = d1;
6803   ex->params[ORC_VAR_D1] = d1_stride;
6804   ex->arrays[ORC_VAR_S1] = (void *) s1;
6805   ex->params[ORC_VAR_S1] = s1_stride;
6806   ex->arrays[ORC_VAR_S2] = (void *) s2;
6807   ex->params[ORC_VAR_S2] = s2_stride;
6808
6809   func = p->code_exec;
6810   func (ex);
6811 }
6812 #endif
6813
6814
6815 /* cogorc_planar_chroma_422_420 */
6816 #ifdef DISABLE_ORC
6817 void
6818 cogorc_planar_chroma_422_420 (guint8 * ORC_RESTRICT d1, int d1_stride,
6819     const guint8 * ORC_RESTRICT s1, int s1_stride,
6820     const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m)
6821 {
6822   int i;
6823   int j;
6824   orc_int8 *ORC_RESTRICT ptr0;
6825   const orc_int8 *ORC_RESTRICT ptr4;
6826   const orc_int8 *ORC_RESTRICT ptr5;
6827   orc_int8 var32;
6828   orc_int8 var33;
6829   orc_int8 var34;
6830
6831   for (j = 0; j < m; j++) {
6832     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
6833     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
6834     ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
6835
6836
6837     for (i = 0; i < n; i++) {
6838       /* 0: loadb */
6839       var32 = ptr4[i];
6840       /* 1: loadb */
6841       var33 = ptr5[i];
6842       /* 2: avgub */
6843       var34 = ((orc_uint8) var32 + (orc_uint8) var33 + 1) >> 1;
6844       /* 3: storeb */
6845       ptr0[i] = var34;
6846     }
6847   }
6848
6849 }
6850
6851 #else
6852 static void
6853 _backup_cogorc_planar_chroma_422_420 (OrcExecutor * ORC_RESTRICT ex)
6854 {
6855   int i;
6856   int j;
6857   int n = ex->n;
6858   int m = ex->params[ORC_VAR_A1];
6859   orc_int8 *ORC_RESTRICT ptr0;
6860   const orc_int8 *ORC_RESTRICT ptr4;
6861   const orc_int8 *ORC_RESTRICT ptr5;
6862   orc_int8 var32;
6863   orc_int8 var33;
6864   orc_int8 var34;
6865
6866   for (j = 0; j < m; j++) {
6867     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
6868     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
6869     ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
6870
6871
6872     for (i = 0; i < n; i++) {
6873       /* 0: loadb */
6874       var32 = ptr4[i];
6875       /* 1: loadb */
6876       var33 = ptr5[i];
6877       /* 2: avgub */
6878       var34 = ((orc_uint8) var32 + (orc_uint8) var33 + 1) >> 1;
6879       /* 3: storeb */
6880       ptr0[i] = var34;
6881     }
6882   }
6883
6884 }
6885
6886 void
6887 cogorc_planar_chroma_422_420 (guint8 * ORC_RESTRICT d1, int d1_stride,
6888     const guint8 * ORC_RESTRICT s1, int s1_stride,
6889     const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m)
6890 {
6891   OrcExecutor _ex, *ex = &_ex;
6892   static volatile int p_inited = 0;
6893   static OrcProgram *p = 0;
6894   void (*func) (OrcExecutor *);
6895
6896   if (!p_inited) {
6897     orc_once_mutex_lock ();
6898     if (!p_inited) {
6899
6900       p = orc_program_new ();
6901       orc_program_set_2d (p);
6902       orc_program_set_name (p, "cogorc_planar_chroma_422_420");
6903       orc_program_set_backup_function (p, _backup_cogorc_planar_chroma_422_420);
6904       orc_program_add_destination (p, 1, "d1");
6905       orc_program_add_source (p, 1, "s1");
6906       orc_program_add_source (p, 1, "s2");
6907
6908       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S2,
6909           ORC_VAR_D1);
6910
6911       orc_program_compile (p);
6912     }
6913     p_inited = TRUE;
6914     orc_once_mutex_unlock ();
6915   }
6916   ex->program = p;
6917
6918   ex->n = n;
6919   ORC_EXECUTOR_M (ex) = m;
6920   ex->arrays[ORC_VAR_D1] = d1;
6921   ex->params[ORC_VAR_D1] = d1_stride;
6922   ex->arrays[ORC_VAR_S1] = (void *) s1;
6923   ex->params[ORC_VAR_S1] = s1_stride;
6924   ex->arrays[ORC_VAR_S2] = (void *) s2;
6925   ex->params[ORC_VAR_S2] = s2_stride;
6926
6927   func = p->code_exec;
6928   func (ex);
6929 }
6930 #endif
6931
6932
6933 /* cogorc_convert_YUY2_AYUV */
6934 #ifdef DISABLE_ORC
6935 void
6936 cogorc_convert_YUY2_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
6937     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
6938 {
6939   int i;
6940   int j;
6941   orc_union64 *ORC_RESTRICT ptr0;
6942   const orc_union32 *ORC_RESTRICT ptr4;
6943   orc_union32 var36;
6944   orc_union16 var37;
6945   orc_union64 var38;
6946   orc_union16 var39;
6947   orc_union16 var40;
6948   orc_union32 var41;
6949   orc_union32 var42;
6950
6951   for (j = 0; j < m; j++) {
6952     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
6953     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
6954
6955     /* 2: loadpb */
6956     var37.x2[0] = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
6957     var37.x2[1] = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
6958
6959     for (i = 0; i < n; i++) {
6960       /* 0: loadl */
6961       var36 = ptr4[i];
6962       /* 1: splitwb */
6963       {
6964         orc_union16 _src;
6965         _src.i = var36.x2[0];
6966         var39.x2[0] = _src.x2[1];
6967         var40.x2[0] = _src.x2[0];
6968       }
6969       {
6970         orc_union16 _src;
6971         _src.i = var36.x2[1];
6972         var39.x2[1] = _src.x2[1];
6973         var40.x2[1] = _src.x2[0];
6974       }
6975       /* 3: mergebw */
6976       {
6977         orc_union16 _dest;
6978         _dest.x2[0] = var37.x2[0];
6979         _dest.x2[1] = var40.x2[0];
6980         var41.x2[0] = _dest.i;
6981       }
6982       {
6983         orc_union16 _dest;
6984         _dest.x2[0] = var37.x2[1];
6985         _dest.x2[1] = var40.x2[1];
6986         var41.x2[1] = _dest.i;
6987       }
6988       /* 4: mergewl */
6989       {
6990         orc_union32 _dest;
6991         _dest.x2[0] = var39.i;
6992         _dest.x2[1] = var39.i;
6993         var42.i = _dest.i;
6994       }
6995       /* 5: mergewl */
6996       {
6997         orc_union32 _dest;
6998         _dest.x2[0] = var41.x2[0];
6999         _dest.x2[1] = var42.x2[0];
7000         var38.x2[0] = _dest.i;
7001       }
7002       {
7003         orc_union32 _dest;
7004         _dest.x2[0] = var41.x2[1];
7005         _dest.x2[1] = var42.x2[1];
7006         var38.x2[1] = _dest.i;
7007       }
7008       /* 6: storeq */
7009       ptr0[i] = var38;
7010     }
7011   }
7012
7013 }
7014
7015 #else
7016 static void
7017 _backup_cogorc_convert_YUY2_AYUV (OrcExecutor * ORC_RESTRICT ex)
7018 {
7019   int i;
7020   int j;
7021   int n = ex->n;
7022   int m = ex->params[ORC_VAR_A1];
7023   orc_union64 *ORC_RESTRICT ptr0;
7024   const orc_union32 *ORC_RESTRICT ptr4;
7025   orc_union32 var36;
7026   orc_union16 var37;
7027   orc_union64 var38;
7028   orc_union16 var39;
7029   orc_union16 var40;
7030   orc_union32 var41;
7031   orc_union32 var42;
7032
7033   for (j = 0; j < m; j++) {
7034     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
7035     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
7036
7037     /* 2: loadpb */
7038     var37.x2[0] = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
7039     var37.x2[1] = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
7040
7041     for (i = 0; i < n; i++) {
7042       /* 0: loadl */
7043       var36 = ptr4[i];
7044       /* 1: splitwb */
7045       {
7046         orc_union16 _src;
7047         _src.i = var36.x2[0];
7048         var39.x2[0] = _src.x2[1];
7049         var40.x2[0] = _src.x2[0];
7050       }
7051       {
7052         orc_union16 _src;
7053         _src.i = var36.x2[1];
7054         var39.x2[1] = _src.x2[1];
7055         var40.x2[1] = _src.x2[0];
7056       }
7057       /* 3: mergebw */
7058       {
7059         orc_union16 _dest;
7060         _dest.x2[0] = var37.x2[0];
7061         _dest.x2[1] = var40.x2[0];
7062         var41.x2[0] = _dest.i;
7063       }
7064       {
7065         orc_union16 _dest;
7066         _dest.x2[0] = var37.x2[1];
7067         _dest.x2[1] = var40.x2[1];
7068         var41.x2[1] = _dest.i;
7069       }
7070       /* 4: mergewl */
7071       {
7072         orc_union32 _dest;
7073         _dest.x2[0] = var39.i;
7074         _dest.x2[1] = var39.i;
7075         var42.i = _dest.i;
7076       }
7077       /* 5: mergewl */
7078       {
7079         orc_union32 _dest;
7080         _dest.x2[0] = var41.x2[0];
7081         _dest.x2[1] = var42.x2[0];
7082         var38.x2[0] = _dest.i;
7083       }
7084       {
7085         orc_union32 _dest;
7086         _dest.x2[0] = var41.x2[1];
7087         _dest.x2[1] = var42.x2[1];
7088         var38.x2[1] = _dest.i;
7089       }
7090       /* 6: storeq */
7091       ptr0[i] = var38;
7092     }
7093   }
7094
7095 }
7096
7097 void
7098 cogorc_convert_YUY2_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
7099     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
7100 {
7101   OrcExecutor _ex, *ex = &_ex;
7102   static volatile int p_inited = 0;
7103   static OrcProgram *p = 0;
7104   void (*func) (OrcExecutor *);
7105
7106   if (!p_inited) {
7107     orc_once_mutex_lock ();
7108     if (!p_inited) {
7109
7110       p = orc_program_new ();
7111       orc_program_set_2d (p);
7112       orc_program_set_name (p, "cogorc_convert_YUY2_AYUV");
7113       orc_program_set_backup_function (p, _backup_cogorc_convert_YUY2_AYUV);
7114       orc_program_add_destination (p, 8, "d1");
7115       orc_program_add_source (p, 4, "s1");
7116       orc_program_add_constant (p, 2, 0x000000ff, "c1");
7117       orc_program_add_temporary (p, 2, "t1");
7118       orc_program_add_temporary (p, 2, "t2");
7119       orc_program_add_temporary (p, 4, "t3");
7120       orc_program_add_temporary (p, 4, "t4");
7121
7122       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
7123           ORC_VAR_D1);
7124       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1,
7125           ORC_VAR_D1);
7126       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2,
7127           ORC_VAR_D1);
7128       orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4,
7129           ORC_VAR_D1);
7130
7131       orc_program_compile (p);
7132     }
7133     p_inited = TRUE;
7134     orc_once_mutex_unlock ();
7135   }
7136   ex->program = p;
7137
7138   ex->n = n;
7139   ORC_EXECUTOR_M (ex) = m;
7140   ex->arrays[ORC_VAR_D1] = d1;
7141   ex->params[ORC_VAR_D1] = d1_stride;
7142   ex->arrays[ORC_VAR_S1] = (void *) s1;
7143   ex->params[ORC_VAR_S1] = s1_stride;
7144
7145   func = p->code_exec;
7146   func (ex);
7147 }
7148 #endif
7149
7150
7151 /* cogorc_convert_UYVY_AYUV */
7152 #ifdef DISABLE_ORC
7153 void
7154 cogorc_convert_UYVY_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
7155     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
7156 {
7157   int i;
7158   int j;
7159   orc_union64 *ORC_RESTRICT ptr0;
7160   const orc_union32 *ORC_RESTRICT ptr4;
7161   orc_union32 var36;
7162   orc_union16 var37;
7163   orc_union64 var38;
7164   orc_union16 var39;
7165   orc_union16 var40;
7166   orc_union32 var41;
7167   orc_union32 var42;
7168
7169   for (j = 0; j < m; j++) {
7170     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
7171     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
7172
7173     /* 2: loadpb */
7174     var37.x2[0] = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
7175     var37.x2[1] = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
7176
7177     for (i = 0; i < n; i++) {
7178       /* 0: loadl */
7179       var36 = ptr4[i];
7180       /* 1: splitwb */
7181       {
7182         orc_union16 _src;
7183         _src.i = var36.x2[0];
7184         var39.x2[0] = _src.x2[1];
7185         var40.x2[0] = _src.x2[0];
7186       }
7187       {
7188         orc_union16 _src;
7189         _src.i = var36.x2[1];
7190         var39.x2[1] = _src.x2[1];
7191         var40.x2[1] = _src.x2[0];
7192       }
7193       /* 3: mergebw */
7194       {
7195         orc_union16 _dest;
7196         _dest.x2[0] = var37.x2[0];
7197         _dest.x2[1] = var39.x2[0];
7198         var41.x2[0] = _dest.i;
7199       }
7200       {
7201         orc_union16 _dest;
7202         _dest.x2[0] = var37.x2[1];
7203         _dest.x2[1] = var39.x2[1];
7204         var41.x2[1] = _dest.i;
7205       }
7206       /* 4: mergewl */
7207       {
7208         orc_union32 _dest;
7209         _dest.x2[0] = var40.i;
7210         _dest.x2[1] = var40.i;
7211         var42.i = _dest.i;
7212       }
7213       /* 5: mergewl */
7214       {
7215         orc_union32 _dest;
7216         _dest.x2[0] = var41.x2[0];
7217         _dest.x2[1] = var42.x2[0];
7218         var38.x2[0] = _dest.i;
7219       }
7220       {
7221         orc_union32 _dest;
7222         _dest.x2[0] = var41.x2[1];
7223         _dest.x2[1] = var42.x2[1];
7224         var38.x2[1] = _dest.i;
7225       }
7226       /* 6: storeq */
7227       ptr0[i] = var38;
7228     }
7229   }
7230
7231 }
7232
7233 #else
7234 static void
7235 _backup_cogorc_convert_UYVY_AYUV (OrcExecutor * ORC_RESTRICT ex)
7236 {
7237   int i;
7238   int j;
7239   int n = ex->n;
7240   int m = ex->params[ORC_VAR_A1];
7241   orc_union64 *ORC_RESTRICT ptr0;
7242   const orc_union32 *ORC_RESTRICT ptr4;
7243   orc_union32 var36;
7244   orc_union16 var37;
7245   orc_union64 var38;
7246   orc_union16 var39;
7247   orc_union16 var40;
7248   orc_union32 var41;
7249   orc_union32 var42;
7250
7251   for (j = 0; j < m; j++) {
7252     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
7253     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
7254
7255     /* 2: loadpb */
7256     var37.x2[0] = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
7257     var37.x2[1] = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
7258
7259     for (i = 0; i < n; i++) {
7260       /* 0: loadl */
7261       var36 = ptr4[i];
7262       /* 1: splitwb */
7263       {
7264         orc_union16 _src;
7265         _src.i = var36.x2[0];
7266         var39.x2[0] = _src.x2[1];
7267         var40.x2[0] = _src.x2[0];
7268       }
7269       {
7270         orc_union16 _src;
7271         _src.i = var36.x2[1];
7272         var39.x2[1] = _src.x2[1];
7273         var40.x2[1] = _src.x2[0];
7274       }
7275       /* 3: mergebw */
7276       {
7277         orc_union16 _dest;
7278         _dest.x2[0] = var37.x2[0];
7279         _dest.x2[1] = var39.x2[0];
7280         var41.x2[0] = _dest.i;
7281       }
7282       {
7283         orc_union16 _dest;
7284         _dest.x2[0] = var37.x2[1];
7285         _dest.x2[1] = var39.x2[1];
7286         var41.x2[1] = _dest.i;
7287       }
7288       /* 4: mergewl */
7289       {
7290         orc_union32 _dest;
7291         _dest.x2[0] = var40.i;
7292         _dest.x2[1] = var40.i;
7293         var42.i = _dest.i;
7294       }
7295       /* 5: mergewl */
7296       {
7297         orc_union32 _dest;
7298         _dest.x2[0] = var41.x2[0];
7299         _dest.x2[1] = var42.x2[0];
7300         var38.x2[0] = _dest.i;
7301       }
7302       {
7303         orc_union32 _dest;
7304         _dest.x2[0] = var41.x2[1];
7305         _dest.x2[1] = var42.x2[1];
7306         var38.x2[1] = _dest.i;
7307       }
7308       /* 6: storeq */
7309       ptr0[i] = var38;
7310     }
7311   }
7312
7313 }
7314
7315 void
7316 cogorc_convert_UYVY_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
7317     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
7318 {
7319   OrcExecutor _ex, *ex = &_ex;
7320   static volatile int p_inited = 0;
7321   static OrcProgram *p = 0;
7322   void (*func) (OrcExecutor *);
7323
7324   if (!p_inited) {
7325     orc_once_mutex_lock ();
7326     if (!p_inited) {
7327
7328       p = orc_program_new ();
7329       orc_program_set_2d (p);
7330       orc_program_set_name (p, "cogorc_convert_UYVY_AYUV");
7331       orc_program_set_backup_function (p, _backup_cogorc_convert_UYVY_AYUV);
7332       orc_program_add_destination (p, 8, "d1");
7333       orc_program_add_source (p, 4, "s1");
7334       orc_program_add_constant (p, 2, 0x000000ff, "c1");
7335       orc_program_add_temporary (p, 2, "t1");
7336       orc_program_add_temporary (p, 2, "t2");
7337       orc_program_add_temporary (p, 4, "t3");
7338       orc_program_add_temporary (p, 4, "t4");
7339
7340       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1,
7341           ORC_VAR_D1);
7342       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1,
7343           ORC_VAR_D1);
7344       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2,
7345           ORC_VAR_D1);
7346       orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4,
7347           ORC_VAR_D1);
7348
7349       orc_program_compile (p);
7350     }
7351     p_inited = TRUE;
7352     orc_once_mutex_unlock ();
7353   }
7354   ex->program = p;
7355
7356   ex->n = n;
7357   ORC_EXECUTOR_M (ex) = m;
7358   ex->arrays[ORC_VAR_D1] = d1;
7359   ex->params[ORC_VAR_D1] = d1_stride;
7360   ex->arrays[ORC_VAR_S1] = (void *) s1;
7361   ex->params[ORC_VAR_S1] = s1_stride;
7362
7363   func = p->code_exec;
7364   func (ex);
7365 }
7366 #endif
7367
7368
7369 /* cogorc_convert_YUY2_Y42B */
7370 #ifdef DISABLE_ORC
7371 void
7372 cogorc_convert_YUY2_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride,
7373     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
7374     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
7375 {
7376   int i;
7377   int j;
7378   orc_union16 *ORC_RESTRICT ptr0;
7379   orc_int8 *ORC_RESTRICT ptr1;
7380   orc_int8 *ORC_RESTRICT ptr2;
7381   const orc_union32 *ORC_RESTRICT ptr4;
7382   orc_union32 var33;
7383   orc_union16 var34;
7384   orc_int8 var35;
7385   orc_int8 var36;
7386   orc_union16 var37;
7387
7388   for (j = 0; j < m; j++) {
7389     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
7390     ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
7391     ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j);
7392     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
7393
7394
7395     for (i = 0; i < n; i++) {
7396       /* 0: loadl */
7397       var33 = ptr4[i];
7398       /* 1: splitwb */
7399       {
7400         orc_union16 _src;
7401         _src.i = var33.x2[0];
7402         var37.x2[0] = _src.x2[1];
7403         var34.x2[0] = _src.x2[0];
7404       }
7405       {
7406         orc_union16 _src;
7407         _src.i = var33.x2[1];
7408         var37.x2[1] = _src.x2[1];
7409         var34.x2[1] = _src.x2[0];
7410       }
7411       /* 2: storew */
7412       ptr0[i] = var34;
7413       /* 3: splitwb */
7414       {
7415         orc_union16 _src;
7416         _src.i = var37.i;
7417         var35 = _src.x2[1];
7418         var36 = _src.x2[0];
7419       }
7420       /* 4: storeb */
7421       ptr2[i] = var35;
7422       /* 5: storeb */
7423       ptr1[i] = var36;
7424     }
7425   }
7426
7427 }
7428
7429 #else
7430 static void
7431 _backup_cogorc_convert_YUY2_Y42B (OrcExecutor * ORC_RESTRICT ex)
7432 {
7433   int i;
7434   int j;
7435   int n = ex->n;
7436   int m = ex->params[ORC_VAR_A1];
7437   orc_union16 *ORC_RESTRICT ptr0;
7438   orc_int8 *ORC_RESTRICT ptr1;
7439   orc_int8 *ORC_RESTRICT ptr2;
7440   const orc_union32 *ORC_RESTRICT ptr4;
7441   orc_union32 var33;
7442   orc_union16 var34;
7443   orc_int8 var35;
7444   orc_int8 var36;
7445   orc_union16 var37;
7446
7447   for (j = 0; j < m; j++) {
7448     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
7449     ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
7450     ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j);
7451     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
7452
7453
7454     for (i = 0; i < n; i++) {
7455       /* 0: loadl */
7456       var33 = ptr4[i];
7457       /* 1: splitwb */
7458       {
7459         orc_union16 _src;
7460         _src.i = var33.x2[0];
7461         var37.x2[0] = _src.x2[1];
7462         var34.x2[0] = _src.x2[0];
7463       }
7464       {
7465         orc_union16 _src;
7466         _src.i = var33.x2[1];
7467         var37.x2[1] = _src.x2[1];
7468         var34.x2[1] = _src.x2[0];
7469       }
7470       /* 2: storew */
7471       ptr0[i] = var34;
7472       /* 3: splitwb */
7473       {
7474         orc_union16 _src;
7475         _src.i = var37.i;
7476         var35 = _src.x2[1];
7477         var36 = _src.x2[0];
7478       }
7479       /* 4: storeb */
7480       ptr2[i] = var35;
7481       /* 5: storeb */
7482       ptr1[i] = var36;
7483     }
7484   }
7485
7486 }
7487
7488 void
7489 cogorc_convert_YUY2_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride,
7490     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
7491     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
7492 {
7493   OrcExecutor _ex, *ex = &_ex;
7494   static volatile int p_inited = 0;
7495   static OrcProgram *p = 0;
7496   void (*func) (OrcExecutor *);
7497
7498   if (!p_inited) {
7499     orc_once_mutex_lock ();
7500     if (!p_inited) {
7501
7502       p = orc_program_new ();
7503       orc_program_set_2d (p);
7504       orc_program_set_name (p, "cogorc_convert_YUY2_Y42B");
7505       orc_program_set_backup_function (p, _backup_cogorc_convert_YUY2_Y42B);
7506       orc_program_add_destination (p, 2, "d1");
7507       orc_program_add_destination (p, 1, "d2");
7508       orc_program_add_destination (p, 1, "d3");
7509       orc_program_add_source (p, 4, "s1");
7510       orc_program_add_temporary (p, 2, "t1");
7511
7512       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_S1,
7513           ORC_VAR_D1);
7514       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T1,
7515           ORC_VAR_D1);
7516
7517       orc_program_compile (p);
7518     }
7519     p_inited = TRUE;
7520     orc_once_mutex_unlock ();
7521   }
7522   ex->program = p;
7523
7524   ex->n = n;
7525   ORC_EXECUTOR_M (ex) = m;
7526   ex->arrays[ORC_VAR_D1] = d1;
7527   ex->params[ORC_VAR_D1] = d1_stride;
7528   ex->arrays[ORC_VAR_D2] = d2;
7529   ex->params[ORC_VAR_D2] = d2_stride;
7530   ex->arrays[ORC_VAR_D3] = d3;
7531   ex->params[ORC_VAR_D3] = d3_stride;
7532   ex->arrays[ORC_VAR_S1] = (void *) s1;
7533   ex->params[ORC_VAR_S1] = s1_stride;
7534
7535   func = p->code_exec;
7536   func (ex);
7537 }
7538 #endif
7539
7540
7541 /* cogorc_convert_UYVY_Y42B */
7542 #ifdef DISABLE_ORC
7543 void
7544 cogorc_convert_UYVY_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride,
7545     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
7546     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
7547 {
7548   int i;
7549   int j;
7550   orc_union16 *ORC_RESTRICT ptr0;
7551   orc_int8 *ORC_RESTRICT ptr1;
7552   orc_int8 *ORC_RESTRICT ptr2;
7553   const orc_union32 *ORC_RESTRICT ptr4;
7554   orc_union32 var33;
7555   orc_union16 var34;
7556   orc_int8 var35;
7557   orc_int8 var36;
7558   orc_union16 var37;
7559
7560   for (j = 0; j < m; j++) {
7561     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
7562     ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
7563     ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j);
7564     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
7565
7566
7567     for (i = 0; i < n; i++) {
7568       /* 0: loadl */
7569       var33 = ptr4[i];
7570       /* 1: splitwb */
7571       {
7572         orc_union16 _src;
7573         _src.i = var33.x2[0];
7574         var34.x2[0] = _src.x2[1];
7575         var37.x2[0] = _src.x2[0];
7576       }
7577       {
7578         orc_union16 _src;
7579         _src.i = var33.x2[1];
7580         var34.x2[1] = _src.x2[1];
7581         var37.x2[1] = _src.x2[0];
7582       }
7583       /* 2: storew */
7584       ptr0[i] = var34;
7585       /* 3: splitwb */
7586       {
7587         orc_union16 _src;
7588         _src.i = var37.i;
7589         var35 = _src.x2[1];
7590         var36 = _src.x2[0];
7591       }
7592       /* 4: storeb */
7593       ptr2[i] = var35;
7594       /* 5: storeb */
7595       ptr1[i] = var36;
7596     }
7597   }
7598
7599 }
7600
7601 #else
7602 static void
7603 _backup_cogorc_convert_UYVY_Y42B (OrcExecutor * ORC_RESTRICT ex)
7604 {
7605   int i;
7606   int j;
7607   int n = ex->n;
7608   int m = ex->params[ORC_VAR_A1];
7609   orc_union16 *ORC_RESTRICT ptr0;
7610   orc_int8 *ORC_RESTRICT ptr1;
7611   orc_int8 *ORC_RESTRICT ptr2;
7612   const orc_union32 *ORC_RESTRICT ptr4;
7613   orc_union32 var33;
7614   orc_union16 var34;
7615   orc_int8 var35;
7616   orc_int8 var36;
7617   orc_union16 var37;
7618
7619   for (j = 0; j < m; j++) {
7620     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
7621     ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
7622     ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j);
7623     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
7624
7625
7626     for (i = 0; i < n; i++) {
7627       /* 0: loadl */
7628       var33 = ptr4[i];
7629       /* 1: splitwb */
7630       {
7631         orc_union16 _src;
7632         _src.i = var33.x2[0];
7633         var34.x2[0] = _src.x2[1];
7634         var37.x2[0] = _src.x2[0];
7635       }
7636       {
7637         orc_union16 _src;
7638         _src.i = var33.x2[1];
7639         var34.x2[1] = _src.x2[1];
7640         var37.x2[1] = _src.x2[0];
7641       }
7642       /* 2: storew */
7643       ptr0[i] = var34;
7644       /* 3: splitwb */
7645       {
7646         orc_union16 _src;
7647         _src.i = var37.i;
7648         var35 = _src.x2[1];
7649         var36 = _src.x2[0];
7650       }
7651       /* 4: storeb */
7652       ptr2[i] = var35;
7653       /* 5: storeb */
7654       ptr1[i] = var36;
7655     }
7656   }
7657
7658 }
7659
7660 void
7661 cogorc_convert_UYVY_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride,
7662     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
7663     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
7664 {
7665   OrcExecutor _ex, *ex = &_ex;
7666   static volatile int p_inited = 0;
7667   static OrcProgram *p = 0;
7668   void (*func) (OrcExecutor *);
7669
7670   if (!p_inited) {
7671     orc_once_mutex_lock ();
7672     if (!p_inited) {
7673
7674       p = orc_program_new ();
7675       orc_program_set_2d (p);
7676       orc_program_set_name (p, "cogorc_convert_UYVY_Y42B");
7677       orc_program_set_backup_function (p, _backup_cogorc_convert_UYVY_Y42B);
7678       orc_program_add_destination (p, 2, "d1");
7679       orc_program_add_destination (p, 1, "d2");
7680       orc_program_add_destination (p, 1, "d3");
7681       orc_program_add_source (p, 4, "s1");
7682       orc_program_add_temporary (p, 2, "t1");
7683
7684       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1,
7685           ORC_VAR_D1);
7686       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T1,
7687           ORC_VAR_D1);
7688
7689       orc_program_compile (p);
7690     }
7691     p_inited = TRUE;
7692     orc_once_mutex_unlock ();
7693   }
7694   ex->program = p;
7695
7696   ex->n = n;
7697   ORC_EXECUTOR_M (ex) = m;
7698   ex->arrays[ORC_VAR_D1] = d1;
7699   ex->params[ORC_VAR_D1] = d1_stride;
7700   ex->arrays[ORC_VAR_D2] = d2;
7701   ex->params[ORC_VAR_D2] = d2_stride;
7702   ex->arrays[ORC_VAR_D3] = d3;
7703   ex->params[ORC_VAR_D3] = d3_stride;
7704   ex->arrays[ORC_VAR_S1] = (void *) s1;
7705   ex->params[ORC_VAR_S1] = s1_stride;
7706
7707   func = p->code_exec;
7708   func (ex);
7709 }
7710 #endif
7711
7712
7713 /* cogorc_convert_YUY2_Y444 */
7714 #ifdef DISABLE_ORC
7715 void
7716 cogorc_convert_YUY2_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride,
7717     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
7718     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
7719 {
7720   int i;
7721   int j;
7722   orc_union16 *ORC_RESTRICT ptr0;
7723   orc_union16 *ORC_RESTRICT ptr1;
7724   orc_union16 *ORC_RESTRICT ptr2;
7725   const orc_union32 *ORC_RESTRICT ptr4;
7726   orc_union32 var35;
7727   orc_union16 var36;
7728   orc_union16 var37;
7729   orc_union16 var38;
7730   orc_union16 var39;
7731   orc_int8 var40;
7732   orc_int8 var41;
7733
7734   for (j = 0; j < m; j++) {
7735     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
7736     ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
7737     ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j);
7738     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
7739
7740
7741     for (i = 0; i < n; i++) {
7742       /* 0: loadl */
7743       var35 = ptr4[i];
7744       /* 1: splitwb */
7745       {
7746         orc_union16 _src;
7747         _src.i = var35.x2[0];
7748         var39.x2[0] = _src.x2[1];
7749         var36.x2[0] = _src.x2[0];
7750       }
7751       {
7752         orc_union16 _src;
7753         _src.i = var35.x2[1];
7754         var39.x2[1] = _src.x2[1];
7755         var36.x2[1] = _src.x2[0];
7756       }
7757       /* 2: storew */
7758       ptr0[i] = var36;
7759       /* 3: splitwb */
7760       {
7761         orc_union16 _src;
7762         _src.i = var39.i;
7763         var40 = _src.x2[1];
7764         var41 = _src.x2[0];
7765       }
7766       /* 4: splatbw */
7767       var37.i = ((var41 & 0xff) << 8) | (var41 & 0xff);
7768       /* 5: storew */
7769       ptr1[i] = var37;
7770       /* 6: splatbw */
7771       var38.i = ((var40 & 0xff) << 8) | (var40 & 0xff);
7772       /* 7: storew */
7773       ptr2[i] = var38;
7774     }
7775   }
7776
7777 }
7778
7779 #else
7780 static void
7781 _backup_cogorc_convert_YUY2_Y444 (OrcExecutor * ORC_RESTRICT ex)
7782 {
7783   int i;
7784   int j;
7785   int n = ex->n;
7786   int m = ex->params[ORC_VAR_A1];
7787   orc_union16 *ORC_RESTRICT ptr0;
7788   orc_union16 *ORC_RESTRICT ptr1;
7789   orc_union16 *ORC_RESTRICT ptr2;
7790   const orc_union32 *ORC_RESTRICT ptr4;
7791   orc_union32 var35;
7792   orc_union16 var36;
7793   orc_union16 var37;
7794   orc_union16 var38;
7795   orc_union16 var39;
7796   orc_int8 var40;
7797   orc_int8 var41;
7798
7799   for (j = 0; j < m; j++) {
7800     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
7801     ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
7802     ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j);
7803     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
7804
7805
7806     for (i = 0; i < n; i++) {
7807       /* 0: loadl */
7808       var35 = ptr4[i];
7809       /* 1: splitwb */
7810       {
7811         orc_union16 _src;
7812         _src.i = var35.x2[0];
7813         var39.x2[0] = _src.x2[1];
7814         var36.x2[0] = _src.x2[0];
7815       }
7816       {
7817         orc_union16 _src;
7818         _src.i = var35.x2[1];
7819         var39.x2[1] = _src.x2[1];
7820         var36.x2[1] = _src.x2[0];
7821       }
7822       /* 2: storew */
7823       ptr0[i] = var36;
7824       /* 3: splitwb */
7825       {
7826         orc_union16 _src;
7827         _src.i = var39.i;
7828         var40 = _src.x2[1];
7829         var41 = _src.x2[0];
7830       }
7831       /* 4: splatbw */
7832       var37.i = ((var41 & 0xff) << 8) | (var41 & 0xff);
7833       /* 5: storew */
7834       ptr1[i] = var37;
7835       /* 6: splatbw */
7836       var38.i = ((var40 & 0xff) << 8) | (var40 & 0xff);
7837       /* 7: storew */
7838       ptr2[i] = var38;
7839     }
7840   }
7841
7842 }
7843
7844 void
7845 cogorc_convert_YUY2_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride,
7846     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
7847     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
7848 {
7849   OrcExecutor _ex, *ex = &_ex;
7850   static volatile int p_inited = 0;
7851   static OrcProgram *p = 0;
7852   void (*func) (OrcExecutor *);
7853
7854   if (!p_inited) {
7855     orc_once_mutex_lock ();
7856     if (!p_inited) {
7857
7858       p = orc_program_new ();
7859       orc_program_set_2d (p);
7860       orc_program_set_name (p, "cogorc_convert_YUY2_Y444");
7861       orc_program_set_backup_function (p, _backup_cogorc_convert_YUY2_Y444);
7862       orc_program_add_destination (p, 2, "d1");
7863       orc_program_add_destination (p, 2, "d2");
7864       orc_program_add_destination (p, 2, "d3");
7865       orc_program_add_source (p, 4, "s1");
7866       orc_program_add_temporary (p, 2, "t1");
7867       orc_program_add_temporary (p, 1, "t2");
7868       orc_program_add_temporary (p, 1, "t3");
7869
7870       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_S1,
7871           ORC_VAR_D1);
7872       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_T1,
7873           ORC_VAR_D1);
7874       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_D1,
7875           ORC_VAR_D1);
7876       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_D3, ORC_VAR_T3, ORC_VAR_D1,
7877           ORC_VAR_D1);
7878
7879       orc_program_compile (p);
7880     }
7881     p_inited = TRUE;
7882     orc_once_mutex_unlock ();
7883   }
7884   ex->program = p;
7885
7886   ex->n = n;
7887   ORC_EXECUTOR_M (ex) = m;
7888   ex->arrays[ORC_VAR_D1] = d1;
7889   ex->params[ORC_VAR_D1] = d1_stride;
7890   ex->arrays[ORC_VAR_D2] = d2;
7891   ex->params[ORC_VAR_D2] = d2_stride;
7892   ex->arrays[ORC_VAR_D3] = d3;
7893   ex->params[ORC_VAR_D3] = d3_stride;
7894   ex->arrays[ORC_VAR_S1] = (void *) s1;
7895   ex->params[ORC_VAR_S1] = s1_stride;
7896
7897   func = p->code_exec;
7898   func (ex);
7899 }
7900 #endif
7901
7902
7903 /* cogorc_convert_UYVY_Y444 */
7904 #ifdef DISABLE_ORC
7905 void
7906 cogorc_convert_UYVY_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride,
7907     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
7908     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
7909 {
7910   int i;
7911   int j;
7912   orc_union16 *ORC_RESTRICT ptr0;
7913   orc_union16 *ORC_RESTRICT ptr1;
7914   orc_union16 *ORC_RESTRICT ptr2;
7915   const orc_union32 *ORC_RESTRICT ptr4;
7916   orc_union32 var35;
7917   orc_union16 var36;
7918   orc_union16 var37;
7919   orc_union16 var38;
7920   orc_union16 var39;
7921   orc_int8 var40;
7922   orc_int8 var41;
7923
7924   for (j = 0; j < m; j++) {
7925     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
7926     ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
7927     ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j);
7928     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
7929
7930
7931     for (i = 0; i < n; i++) {
7932       /* 0: loadl */
7933       var35 = ptr4[i];
7934       /* 1: splitwb */
7935       {
7936         orc_union16 _src;
7937         _src.i = var35.x2[0];
7938         var36.x2[0] = _src.x2[1];
7939         var39.x2[0] = _src.x2[0];
7940       }
7941       {
7942         orc_union16 _src;
7943         _src.i = var35.x2[1];
7944         var36.x2[1] = _src.x2[1];
7945         var39.x2[1] = _src.x2[0];
7946       }
7947       /* 2: storew */
7948       ptr0[i] = var36;
7949       /* 3: splitwb */
7950       {
7951         orc_union16 _src;
7952         _src.i = var39.i;
7953         var40 = _src.x2[1];
7954         var41 = _src.x2[0];
7955       }
7956       /* 4: splatbw */
7957       var37.i = ((var41 & 0xff) << 8) | (var41 & 0xff);
7958       /* 5: storew */
7959       ptr1[i] = var37;
7960       /* 6: splatbw */
7961       var38.i = ((var40 & 0xff) << 8) | (var40 & 0xff);
7962       /* 7: storew */
7963       ptr2[i] = var38;
7964     }
7965   }
7966
7967 }
7968
7969 #else
7970 static void
7971 _backup_cogorc_convert_UYVY_Y444 (OrcExecutor * ORC_RESTRICT ex)
7972 {
7973   int i;
7974   int j;
7975   int n = ex->n;
7976   int m = ex->params[ORC_VAR_A1];
7977   orc_union16 *ORC_RESTRICT ptr0;
7978   orc_union16 *ORC_RESTRICT ptr1;
7979   orc_union16 *ORC_RESTRICT ptr2;
7980   const orc_union32 *ORC_RESTRICT ptr4;
7981   orc_union32 var35;
7982   orc_union16 var36;
7983   orc_union16 var37;
7984   orc_union16 var38;
7985   orc_union16 var39;
7986   orc_int8 var40;
7987   orc_int8 var41;
7988
7989   for (j = 0; j < m; j++) {
7990     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
7991     ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
7992     ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j);
7993     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
7994
7995
7996     for (i = 0; i < n; i++) {
7997       /* 0: loadl */
7998       var35 = ptr4[i];
7999       /* 1: splitwb */
8000       {
8001         orc_union16 _src;
8002         _src.i = var35.x2[0];
8003         var36.x2[0] = _src.x2[1];
8004         var39.x2[0] = _src.x2[0];
8005       }
8006       {
8007         orc_union16 _src;
8008         _src.i = var35.x2[1];
8009         var36.x2[1] = _src.x2[1];
8010         var39.x2[1] = _src.x2[0];
8011       }
8012       /* 2: storew */
8013       ptr0[i] = var36;
8014       /* 3: splitwb */
8015       {
8016         orc_union16 _src;
8017         _src.i = var39.i;
8018         var40 = _src.x2[1];
8019         var41 = _src.x2[0];
8020       }
8021       /* 4: splatbw */
8022       var37.i = ((var41 & 0xff) << 8) | (var41 & 0xff);
8023       /* 5: storew */
8024       ptr1[i] = var37;
8025       /* 6: splatbw */
8026       var38.i = ((var40 & 0xff) << 8) | (var40 & 0xff);
8027       /* 7: storew */
8028       ptr2[i] = var38;
8029     }
8030   }
8031
8032 }
8033
8034 void
8035 cogorc_convert_UYVY_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride,
8036     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
8037     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
8038 {
8039   OrcExecutor _ex, *ex = &_ex;
8040   static volatile int p_inited = 0;
8041   static OrcProgram *p = 0;
8042   void (*func) (OrcExecutor *);
8043
8044   if (!p_inited) {
8045     orc_once_mutex_lock ();
8046     if (!p_inited) {
8047
8048       p = orc_program_new ();
8049       orc_program_set_2d (p);
8050       orc_program_set_name (p, "cogorc_convert_UYVY_Y444");
8051       orc_program_set_backup_function (p, _backup_cogorc_convert_UYVY_Y444);
8052       orc_program_add_destination (p, 2, "d1");
8053       orc_program_add_destination (p, 2, "d2");
8054       orc_program_add_destination (p, 2, "d3");
8055       orc_program_add_source (p, 4, "s1");
8056       orc_program_add_temporary (p, 2, "t1");
8057       orc_program_add_temporary (p, 1, "t2");
8058       orc_program_add_temporary (p, 1, "t3");
8059
8060       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1,
8061           ORC_VAR_D1);
8062       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_T1,
8063           ORC_VAR_D1);
8064       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_D1,
8065           ORC_VAR_D1);
8066       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_D3, ORC_VAR_T3, ORC_VAR_D1,
8067           ORC_VAR_D1);
8068
8069       orc_program_compile (p);
8070     }
8071     p_inited = TRUE;
8072     orc_once_mutex_unlock ();
8073   }
8074   ex->program = p;
8075
8076   ex->n = n;
8077   ORC_EXECUTOR_M (ex) = m;
8078   ex->arrays[ORC_VAR_D1] = d1;
8079   ex->params[ORC_VAR_D1] = d1_stride;
8080   ex->arrays[ORC_VAR_D2] = d2;
8081   ex->params[ORC_VAR_D2] = d2_stride;
8082   ex->arrays[ORC_VAR_D3] = d3;
8083   ex->params[ORC_VAR_D3] = d3_stride;
8084   ex->arrays[ORC_VAR_S1] = (void *) s1;
8085   ex->params[ORC_VAR_S1] = s1_stride;
8086
8087   func = p->code_exec;
8088   func (ex);
8089 }
8090 #endif
8091
8092
8093 /* cogorc_convert_UYVY_I420 */
8094 #ifdef DISABLE_ORC
8095 void
8096 cogorc_convert_UYVY_I420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
8097     guint8 * ORC_RESTRICT d3, guint8 * ORC_RESTRICT d4,
8098     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
8099 {
8100   int i;
8101   orc_union16 *ORC_RESTRICT ptr0;
8102   orc_union16 *ORC_RESTRICT ptr1;
8103   orc_int8 *ORC_RESTRICT ptr2;
8104   orc_int8 *ORC_RESTRICT ptr3;
8105   const orc_union32 *ORC_RESTRICT ptr4;
8106   const orc_union32 *ORC_RESTRICT ptr5;
8107   orc_union32 var35;
8108   orc_union32 var36;
8109   orc_int8 var37;
8110   orc_int8 var38;
8111   orc_union16 var39;
8112   orc_union16 var40;
8113   orc_union16 var41;
8114   orc_union16 var42;
8115   orc_union16 var43;
8116
8117   ptr0 = (orc_union16 *) d1;
8118   ptr1 = (orc_union16 *) d2;
8119   ptr2 = (orc_int8 *) d3;
8120   ptr3 = (orc_int8 *) d4;
8121   ptr4 = (orc_union32 *) s1;
8122   ptr5 = (orc_union32 *) s2;
8123
8124
8125   for (i = 0; i < n; i++) {
8126     /* 0: loadl */
8127     var35 = ptr4[i];
8128     /* 1: splitwb */
8129     {
8130       orc_union16 _src;
8131       _src.i = var35.x2[0];
8132       var39.x2[0] = _src.x2[1];
8133       var40.x2[0] = _src.x2[0];
8134     }
8135     {
8136       orc_union16 _src;
8137       _src.i = var35.x2[1];
8138       var39.x2[1] = _src.x2[1];
8139       var40.x2[1] = _src.x2[0];
8140     }
8141     /* 2: storew */
8142     ptr0[i] = var39;
8143     /* 3: loadl */
8144     var36 = ptr5[i];
8145     /* 4: splitwb */
8146     {
8147       orc_union16 _src;
8148       _src.i = var36.x2[0];
8149       var41.x2[0] = _src.x2[1];
8150       var42.x2[0] = _src.x2[0];
8151     }
8152     {
8153       orc_union16 _src;
8154       _src.i = var36.x2[1];
8155       var41.x2[1] = _src.x2[1];
8156       var42.x2[1] = _src.x2[0];
8157     }
8158     /* 5: storew */
8159     ptr1[i] = var41;
8160     /* 6: avgub */
8161     var43.x2[0] = ((orc_uint8) var40.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
8162     var43.x2[1] = ((orc_uint8) var40.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
8163     /* 7: splitwb */
8164     {
8165       orc_union16 _src;
8166       _src.i = var43.i;
8167       var37 = _src.x2[1];
8168       var38 = _src.x2[0];
8169     }
8170     /* 8: storeb */
8171     ptr3[i] = var37;
8172     /* 9: storeb */
8173     ptr2[i] = var38;
8174   }
8175
8176 }
8177
8178 #else
8179 static void
8180 _backup_cogorc_convert_UYVY_I420 (OrcExecutor * ORC_RESTRICT ex)
8181 {
8182   int i;
8183   int n = ex->n;
8184   orc_union16 *ORC_RESTRICT ptr0;
8185   orc_union16 *ORC_RESTRICT ptr1;
8186   orc_int8 *ORC_RESTRICT ptr2;
8187   orc_int8 *ORC_RESTRICT ptr3;
8188   const orc_union32 *ORC_RESTRICT ptr4;
8189   const orc_union32 *ORC_RESTRICT ptr5;
8190   orc_union32 var35;
8191   orc_union32 var36;
8192   orc_int8 var37;
8193   orc_int8 var38;
8194   orc_union16 var39;
8195   orc_union16 var40;
8196   orc_union16 var41;
8197   orc_union16 var42;
8198   orc_union16 var43;
8199
8200   ptr0 = (orc_union16 *) ex->arrays[0];
8201   ptr1 = (orc_union16 *) ex->arrays[1];
8202   ptr2 = (orc_int8 *) ex->arrays[2];
8203   ptr3 = (orc_int8 *) ex->arrays[3];
8204   ptr4 = (orc_union32 *) ex->arrays[4];
8205   ptr5 = (orc_union32 *) ex->arrays[5];
8206
8207
8208   for (i = 0; i < n; i++) {
8209     /* 0: loadl */
8210     var35 = ptr4[i];
8211     /* 1: splitwb */
8212     {
8213       orc_union16 _src;
8214       _src.i = var35.x2[0];
8215       var39.x2[0] = _src.x2[1];
8216       var40.x2[0] = _src.x2[0];
8217     }
8218     {
8219       orc_union16 _src;
8220       _src.i = var35.x2[1];
8221       var39.x2[1] = _src.x2[1];
8222       var40.x2[1] = _src.x2[0];
8223     }
8224     /* 2: storew */
8225     ptr0[i] = var39;
8226     /* 3: loadl */
8227     var36 = ptr5[i];
8228     /* 4: splitwb */
8229     {
8230       orc_union16 _src;
8231       _src.i = var36.x2[0];
8232       var41.x2[0] = _src.x2[1];
8233       var42.x2[0] = _src.x2[0];
8234     }
8235     {
8236       orc_union16 _src;
8237       _src.i = var36.x2[1];
8238       var41.x2[1] = _src.x2[1];
8239       var42.x2[1] = _src.x2[0];
8240     }
8241     /* 5: storew */
8242     ptr1[i] = var41;
8243     /* 6: avgub */
8244     var43.x2[0] = ((orc_uint8) var40.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
8245     var43.x2[1] = ((orc_uint8) var40.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
8246     /* 7: splitwb */
8247     {
8248       orc_union16 _src;
8249       _src.i = var43.i;
8250       var37 = _src.x2[1];
8251       var38 = _src.x2[0];
8252     }
8253     /* 8: storeb */
8254     ptr3[i] = var37;
8255     /* 9: storeb */
8256     ptr2[i] = var38;
8257   }
8258
8259 }
8260
8261 void
8262 cogorc_convert_UYVY_I420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
8263     guint8 * ORC_RESTRICT d3, guint8 * ORC_RESTRICT d4,
8264     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
8265 {
8266   OrcExecutor _ex, *ex = &_ex;
8267   static volatile int p_inited = 0;
8268   static OrcProgram *p = 0;
8269   void (*func) (OrcExecutor *);
8270
8271   if (!p_inited) {
8272     orc_once_mutex_lock ();
8273     if (!p_inited) {
8274
8275       p = orc_program_new ();
8276       orc_program_set_name (p, "cogorc_convert_UYVY_I420");
8277       orc_program_set_backup_function (p, _backup_cogorc_convert_UYVY_I420);
8278       orc_program_add_destination (p, 2, "d1");
8279       orc_program_add_destination (p, 2, "d2");
8280       orc_program_add_destination (p, 1, "d3");
8281       orc_program_add_destination (p, 1, "d4");
8282       orc_program_add_source (p, 4, "s1");
8283       orc_program_add_source (p, 4, "s2");
8284       orc_program_add_temporary (p, 2, "t1");
8285       orc_program_add_temporary (p, 2, "t2");
8286       orc_program_add_temporary (p, 2, "t3");
8287
8288       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_S1,
8289           ORC_VAR_D1);
8290       orc_program_append_2 (p, "storew", 0, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_D1,
8291           ORC_VAR_D1);
8292       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_S2,
8293           ORC_VAR_D1);
8294       orc_program_append_2 (p, "storew", 0, ORC_VAR_D2, ORC_VAR_T3, ORC_VAR_D1,
8295           ORC_VAR_D1);
8296       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
8297           ORC_VAR_D1);
8298       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D4, ORC_VAR_D3, ORC_VAR_T1,
8299           ORC_VAR_D1);
8300
8301       orc_program_compile (p);
8302     }
8303     p_inited = TRUE;
8304     orc_once_mutex_unlock ();
8305   }
8306   ex->program = p;
8307
8308   ex->n = n;
8309   ex->arrays[ORC_VAR_D1] = d1;
8310   ex->arrays[ORC_VAR_D2] = d2;
8311   ex->arrays[ORC_VAR_D3] = d3;
8312   ex->arrays[ORC_VAR_D4] = d4;
8313   ex->arrays[ORC_VAR_S1] = (void *) s1;
8314   ex->arrays[ORC_VAR_S2] = (void *) s2;
8315
8316   func = p->code_exec;
8317   func (ex);
8318 }
8319 #endif
8320
8321
8322 /* cogorc_convert_AYUV_I420 */
8323 #ifdef DISABLE_ORC
8324 void
8325 cogorc_convert_AYUV_I420 (guint8 * ORC_RESTRICT d1, int d1_stride,
8326     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
8327     int d3_stride, guint8 * ORC_RESTRICT d4, int d4_stride,
8328     const guint8 * ORC_RESTRICT s1, int s1_stride,
8329     const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m)
8330 {
8331   int i;
8332   int j;
8333   orc_union16 *ORC_RESTRICT ptr0;
8334   orc_union16 *ORC_RESTRICT ptr1;
8335   orc_int8 *ORC_RESTRICT ptr2;
8336   orc_int8 *ORC_RESTRICT ptr3;
8337   const orc_union64 *ORC_RESTRICT ptr4;
8338   const orc_union64 *ORC_RESTRICT ptr5;
8339   orc_union64 var40;
8340   orc_union16 var41;
8341   orc_union64 var42;
8342   orc_union16 var43;
8343   orc_int8 var44;
8344   orc_int8 var45;
8345   orc_union32 var46;
8346   orc_union32 var47;
8347   orc_union32 var48;
8348   orc_union32 var49;
8349   orc_union32 var50;
8350   orc_union16 var51;
8351   orc_union16 var52;
8352   orc_int8 var53;
8353   orc_int8 var54;
8354   orc_int8 var55;
8355   orc_int8 var56;
8356
8357   for (j = 0; j < m; j++) {
8358     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
8359     ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
8360     ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j);
8361     ptr3 = ORC_PTR_OFFSET (d4, d4_stride * j);
8362     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
8363     ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
8364
8365
8366     for (i = 0; i < n; i++) {
8367       /* 0: loadq */
8368       var40 = ptr4[i];
8369       /* 1: splitlw */
8370       {
8371         orc_union32 _src;
8372         _src.i = var40.x2[0];
8373         var46.x2[0] = _src.x2[1];
8374         var47.x2[0] = _src.x2[0];
8375       }
8376       {
8377         orc_union32 _src;
8378         _src.i = var40.x2[1];
8379         var46.x2[1] = _src.x2[1];
8380         var47.x2[1] = _src.x2[0];
8381       }
8382       /* 2: select1wb */
8383       {
8384         orc_union16 _src;
8385         _src.i = var47.x2[0];
8386         var41.x2[0] = _src.x2[1];
8387       }
8388       {
8389         orc_union16 _src;
8390         _src.i = var47.x2[1];
8391         var41.x2[1] = _src.x2[1];
8392       }
8393       /* 3: storew */
8394       ptr0[i] = var41;
8395       /* 4: loadq */
8396       var42 = ptr5[i];
8397       /* 5: splitlw */
8398       {
8399         orc_union32 _src;
8400         _src.i = var42.x2[0];
8401         var48.x2[0] = _src.x2[1];
8402         var49.x2[0] = _src.x2[0];
8403       }
8404       {
8405         orc_union32 _src;
8406         _src.i = var42.x2[1];
8407         var48.x2[1] = _src.x2[1];
8408         var49.x2[1] = _src.x2[0];
8409       }
8410       /* 6: select1wb */
8411       {
8412         orc_union16 _src;
8413         _src.i = var49.x2[0];
8414         var43.x2[0] = _src.x2[1];
8415       }
8416       {
8417         orc_union16 _src;
8418         _src.i = var49.x2[1];
8419         var43.x2[1] = _src.x2[1];
8420       }
8421       /* 7: storew */
8422       ptr1[i] = var43;
8423       /* 8: avgub */
8424       var50.x4[0] =
8425           ((orc_uint8) var46.x4[0] + (orc_uint8) var48.x4[0] + 1) >> 1;
8426       var50.x4[1] =
8427           ((orc_uint8) var46.x4[1] + (orc_uint8) var48.x4[1] + 1) >> 1;
8428       var50.x4[2] =
8429           ((orc_uint8) var46.x4[2] + (orc_uint8) var48.x4[2] + 1) >> 1;
8430       var50.x4[3] =
8431           ((orc_uint8) var46.x4[3] + (orc_uint8) var48.x4[3] + 1) >> 1;
8432       /* 9: splitwb */
8433       {
8434         orc_union16 _src;
8435         _src.i = var50.x2[0];
8436         var51.x2[0] = _src.x2[1];
8437         var52.x2[0] = _src.x2[0];
8438       }
8439       {
8440         orc_union16 _src;
8441         _src.i = var50.x2[1];
8442         var51.x2[1] = _src.x2[1];
8443         var52.x2[1] = _src.x2[0];
8444       }
8445       /* 10: splitwb */
8446       {
8447         orc_union16 _src;
8448         _src.i = var52.i;
8449         var53 = _src.x2[1];
8450         var54 = _src.x2[0];
8451       }
8452       /* 11: avgub */
8453       var44 = ((orc_uint8) var53 + (orc_uint8) var54 + 1) >> 1;
8454       /* 12: storeb */
8455       ptr2[i] = var44;
8456       /* 13: splitwb */
8457       {
8458         orc_union16 _src;
8459         _src.i = var51.i;
8460         var55 = _src.x2[1];
8461         var56 = _src.x2[0];
8462       }
8463       /* 14: avgub */
8464       var45 = ((orc_uint8) var55 + (orc_uint8) var56 + 1) >> 1;
8465       /* 15: storeb */
8466       ptr3[i] = var45;
8467     }
8468   }
8469
8470 }
8471
8472 #else
8473 static void
8474 _backup_cogorc_convert_AYUV_I420 (OrcExecutor * ORC_RESTRICT ex)
8475 {
8476   int i;
8477   int j;
8478   int n = ex->n;
8479   int m = ex->params[ORC_VAR_A1];
8480   orc_union16 *ORC_RESTRICT ptr0;
8481   orc_union16 *ORC_RESTRICT ptr1;
8482   orc_int8 *ORC_RESTRICT ptr2;
8483   orc_int8 *ORC_RESTRICT ptr3;
8484   const orc_union64 *ORC_RESTRICT ptr4;
8485   const orc_union64 *ORC_RESTRICT ptr5;
8486   orc_union64 var40;
8487   orc_union16 var41;
8488   orc_union64 var42;
8489   orc_union16 var43;
8490   orc_int8 var44;
8491   orc_int8 var45;
8492   orc_union32 var46;
8493   orc_union32 var47;
8494   orc_union32 var48;
8495   orc_union32 var49;
8496   orc_union32 var50;
8497   orc_union16 var51;
8498   orc_union16 var52;
8499   orc_int8 var53;
8500   orc_int8 var54;
8501   orc_int8 var55;
8502   orc_int8 var56;
8503
8504   for (j = 0; j < m; j++) {
8505     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
8506     ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
8507     ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j);
8508     ptr3 = ORC_PTR_OFFSET (ex->arrays[3], ex->params[3] * j);
8509     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
8510     ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
8511
8512
8513     for (i = 0; i < n; i++) {
8514       /* 0: loadq */
8515       var40 = ptr4[i];
8516       /* 1: splitlw */
8517       {
8518         orc_union32 _src;
8519         _src.i = var40.x2[0];
8520         var46.x2[0] = _src.x2[1];
8521         var47.x2[0] = _src.x2[0];
8522       }
8523       {
8524         orc_union32 _src;
8525         _src.i = var40.x2[1];
8526         var46.x2[1] = _src.x2[1];
8527         var47.x2[1] = _src.x2[0];
8528       }
8529       /* 2: select1wb */
8530       {
8531         orc_union16 _src;
8532         _src.i = var47.x2[0];
8533         var41.x2[0] = _src.x2[1];
8534       }
8535       {
8536         orc_union16 _src;
8537         _src.i = var47.x2[1];
8538         var41.x2[1] = _src.x2[1];
8539       }
8540       /* 3: storew */
8541       ptr0[i] = var41;
8542       /* 4: loadq */
8543       var42 = ptr5[i];
8544       /* 5: splitlw */
8545       {
8546         orc_union32 _src;
8547         _src.i = var42.x2[0];
8548         var48.x2[0] = _src.x2[1];
8549         var49.x2[0] = _src.x2[0];
8550       }
8551       {
8552         orc_union32 _src;
8553         _src.i = var42.x2[1];
8554         var48.x2[1] = _src.x2[1];
8555         var49.x2[1] = _src.x2[0];
8556       }
8557       /* 6: select1wb */
8558       {
8559         orc_union16 _src;
8560         _src.i = var49.x2[0];
8561         var43.x2[0] = _src.x2[1];
8562       }
8563       {
8564         orc_union16 _src;
8565         _src.i = var49.x2[1];
8566         var43.x2[1] = _src.x2[1];
8567       }
8568       /* 7: storew */
8569       ptr1[i] = var43;
8570       /* 8: avgub */
8571       var50.x4[0] =
8572           ((orc_uint8) var46.x4[0] + (orc_uint8) var48.x4[0] + 1) >> 1;
8573       var50.x4[1] =
8574           ((orc_uint8) var46.x4[1] + (orc_uint8) var48.x4[1] + 1) >> 1;
8575       var50.x4[2] =
8576           ((orc_uint8) var46.x4[2] + (orc_uint8) var48.x4[2] + 1) >> 1;
8577       var50.x4[3] =
8578           ((orc_uint8) var46.x4[3] + (orc_uint8) var48.x4[3] + 1) >> 1;
8579       /* 9: splitwb */
8580       {
8581         orc_union16 _src;
8582         _src.i = var50.x2[0];
8583         var51.x2[0] = _src.x2[1];
8584         var52.x2[0] = _src.x2[0];
8585       }
8586       {
8587         orc_union16 _src;
8588         _src.i = var50.x2[1];
8589         var51.x2[1] = _src.x2[1];
8590         var52.x2[1] = _src.x2[0];
8591       }
8592       /* 10: splitwb */
8593       {
8594         orc_union16 _src;
8595         _src.i = var52.i;
8596         var53 = _src.x2[1];
8597         var54 = _src.x2[0];
8598       }
8599       /* 11: avgub */
8600       var44 = ((orc_uint8) var53 + (orc_uint8) var54 + 1) >> 1;
8601       /* 12: storeb */
8602       ptr2[i] = var44;
8603       /* 13: splitwb */
8604       {
8605         orc_union16 _src;
8606         _src.i = var51.i;
8607         var55 = _src.x2[1];
8608         var56 = _src.x2[0];
8609       }
8610       /* 14: avgub */
8611       var45 = ((orc_uint8) var55 + (orc_uint8) var56 + 1) >> 1;
8612       /* 15: storeb */
8613       ptr3[i] = var45;
8614     }
8615   }
8616
8617 }
8618
8619 void
8620 cogorc_convert_AYUV_I420 (guint8 * ORC_RESTRICT d1, int d1_stride,
8621     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
8622     int d3_stride, guint8 * ORC_RESTRICT d4, int d4_stride,
8623     const guint8 * ORC_RESTRICT s1, int s1_stride,
8624     const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m)
8625 {
8626   OrcExecutor _ex, *ex = &_ex;
8627   static volatile int p_inited = 0;
8628   static OrcProgram *p = 0;
8629   void (*func) (OrcExecutor *);
8630
8631   if (!p_inited) {
8632     orc_once_mutex_lock ();
8633     if (!p_inited) {
8634
8635       p = orc_program_new ();
8636       orc_program_set_2d (p);
8637       orc_program_set_name (p, "cogorc_convert_AYUV_I420");
8638       orc_program_set_backup_function (p, _backup_cogorc_convert_AYUV_I420);
8639       orc_program_add_destination (p, 2, "d1");
8640       orc_program_add_destination (p, 2, "d2");
8641       orc_program_add_destination (p, 1, "d3");
8642       orc_program_add_destination (p, 1, "d4");
8643       orc_program_add_source (p, 8, "s1");
8644       orc_program_add_source (p, 8, "s2");
8645       orc_program_add_temporary (p, 4, "t1");
8646       orc_program_add_temporary (p, 4, "t2");
8647       orc_program_add_temporary (p, 4, "t3");
8648       orc_program_add_temporary (p, 4, "t4");
8649       orc_program_add_temporary (p, 2, "t5");
8650       orc_program_add_temporary (p, 2, "t6");
8651       orc_program_add_temporary (p, 1, "t7");
8652       orc_program_add_temporary (p, 1, "t8");
8653
8654       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
8655           ORC_VAR_D1);
8656       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
8657           ORC_VAR_D1, ORC_VAR_D1);
8658       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_S2,
8659           ORC_VAR_D1);
8660       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D2, ORC_VAR_T1,
8661           ORC_VAR_D1, ORC_VAR_D1);
8662       orc_program_append_2 (p, "avgub", 2, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T3,
8663           ORC_VAR_D1);
8664       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_T4,
8665           ORC_VAR_D1);
8666       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T7, ORC_VAR_T8, ORC_VAR_T5,
8667           ORC_VAR_D1);
8668       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D3, ORC_VAR_T7, ORC_VAR_T8,
8669           ORC_VAR_D1);
8670       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T7, ORC_VAR_T8, ORC_VAR_T6,
8671           ORC_VAR_D1);
8672       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D4, ORC_VAR_T7, ORC_VAR_T8,
8673           ORC_VAR_D1);
8674
8675       orc_program_compile (p);
8676     }
8677     p_inited = TRUE;
8678     orc_once_mutex_unlock ();
8679   }
8680   ex->program = p;
8681
8682   ex->n = n;
8683   ORC_EXECUTOR_M (ex) = m;
8684   ex->arrays[ORC_VAR_D1] = d1;
8685   ex->params[ORC_VAR_D1] = d1_stride;
8686   ex->arrays[ORC_VAR_D2] = d2;
8687   ex->params[ORC_VAR_D2] = d2_stride;
8688   ex->arrays[ORC_VAR_D3] = d3;
8689   ex->params[ORC_VAR_D3] = d3_stride;
8690   ex->arrays[ORC_VAR_D4] = d4;
8691   ex->params[ORC_VAR_D4] = d4_stride;
8692   ex->arrays[ORC_VAR_S1] = (void *) s1;
8693   ex->params[ORC_VAR_S1] = s1_stride;
8694   ex->arrays[ORC_VAR_S2] = (void *) s2;
8695   ex->params[ORC_VAR_S2] = s2_stride;
8696
8697   func = p->code_exec;
8698   func (ex);
8699 }
8700 #endif
8701
8702
8703 /* cogorc_convert_AYUV_YUY2 */
8704 #ifdef DISABLE_ORC
8705 void
8706 cogorc_convert_AYUV_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
8707     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
8708 {
8709   int i;
8710   int j;
8711   orc_union32 *ORC_RESTRICT ptr0;
8712   const orc_union64 *ORC_RESTRICT ptr4;
8713   orc_union64 var37;
8714   orc_union32 var38;
8715   orc_union32 var39;
8716   orc_union32 var40;
8717   orc_union16 var41;
8718   orc_union16 var42;
8719   orc_union16 var43;
8720   orc_union16 var44;
8721
8722   for (j = 0; j < m; j++) {
8723     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
8724     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
8725
8726
8727     for (i = 0; i < n; i++) {
8728       /* 0: loadq */
8729       var37 = ptr4[i];
8730       /* 1: splitlw */
8731       {
8732         orc_union32 _src;
8733         _src.i = var37.x2[0];
8734         var39.x2[0] = _src.x2[1];
8735         var40.x2[0] = _src.x2[0];
8736       }
8737       {
8738         orc_union32 _src;
8739         _src.i = var37.x2[1];
8740         var39.x2[1] = _src.x2[1];
8741         var40.x2[1] = _src.x2[0];
8742       }
8743       /* 2: splitlw */
8744       {
8745         orc_union32 _src;
8746         _src.i = var39.i;
8747         var41.i = _src.x2[1];
8748         var42.i = _src.x2[0];
8749       }
8750       /* 3: avgub */
8751       var43.x2[0] =
8752           ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
8753       var43.x2[1] =
8754           ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
8755       /* 4: select1wb */
8756       {
8757         orc_union16 _src;
8758         _src.i = var40.x2[0];
8759         var44.x2[0] = _src.x2[1];
8760       }
8761       {
8762         orc_union16 _src;
8763         _src.i = var40.x2[1];
8764         var44.x2[1] = _src.x2[1];
8765       }
8766       /* 5: mergebw */
8767       {
8768         orc_union16 _dest;
8769         _dest.x2[0] = var44.x2[0];
8770         _dest.x2[1] = var43.x2[0];
8771         var38.x2[0] = _dest.i;
8772       }
8773       {
8774         orc_union16 _dest;
8775         _dest.x2[0] = var44.x2[1];
8776         _dest.x2[1] = var43.x2[1];
8777         var38.x2[1] = _dest.i;
8778       }
8779       /* 6: storel */
8780       ptr0[i] = var38;
8781     }
8782   }
8783
8784 }
8785
8786 #else
8787 static void
8788 _backup_cogorc_convert_AYUV_YUY2 (OrcExecutor * ORC_RESTRICT ex)
8789 {
8790   int i;
8791   int j;
8792   int n = ex->n;
8793   int m = ex->params[ORC_VAR_A1];
8794   orc_union32 *ORC_RESTRICT ptr0;
8795   const orc_union64 *ORC_RESTRICT ptr4;
8796   orc_union64 var37;
8797   orc_union32 var38;
8798   orc_union32 var39;
8799   orc_union32 var40;
8800   orc_union16 var41;
8801   orc_union16 var42;
8802   orc_union16 var43;
8803   orc_union16 var44;
8804
8805   for (j = 0; j < m; j++) {
8806     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
8807     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
8808
8809
8810     for (i = 0; i < n; i++) {
8811       /* 0: loadq */
8812       var37 = ptr4[i];
8813       /* 1: splitlw */
8814       {
8815         orc_union32 _src;
8816         _src.i = var37.x2[0];
8817         var39.x2[0] = _src.x2[1];
8818         var40.x2[0] = _src.x2[0];
8819       }
8820       {
8821         orc_union32 _src;
8822         _src.i = var37.x2[1];
8823         var39.x2[1] = _src.x2[1];
8824         var40.x2[1] = _src.x2[0];
8825       }
8826       /* 2: splitlw */
8827       {
8828         orc_union32 _src;
8829         _src.i = var39.i;
8830         var41.i = _src.x2[1];
8831         var42.i = _src.x2[0];
8832       }
8833       /* 3: avgub */
8834       var43.x2[0] =
8835           ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
8836       var43.x2[1] =
8837           ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
8838       /* 4: select1wb */
8839       {
8840         orc_union16 _src;
8841         _src.i = var40.x2[0];
8842         var44.x2[0] = _src.x2[1];
8843       }
8844       {
8845         orc_union16 _src;
8846         _src.i = var40.x2[1];
8847         var44.x2[1] = _src.x2[1];
8848       }
8849       /* 5: mergebw */
8850       {
8851         orc_union16 _dest;
8852         _dest.x2[0] = var44.x2[0];
8853         _dest.x2[1] = var43.x2[0];
8854         var38.x2[0] = _dest.i;
8855       }
8856       {
8857         orc_union16 _dest;
8858         _dest.x2[0] = var44.x2[1];
8859         _dest.x2[1] = var43.x2[1];
8860         var38.x2[1] = _dest.i;
8861       }
8862       /* 6: storel */
8863       ptr0[i] = var38;
8864     }
8865   }
8866
8867 }
8868
8869 void
8870 cogorc_convert_AYUV_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
8871     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
8872 {
8873   OrcExecutor _ex, *ex = &_ex;
8874   static volatile int p_inited = 0;
8875   static OrcProgram *p = 0;
8876   void (*func) (OrcExecutor *);
8877
8878   if (!p_inited) {
8879     orc_once_mutex_lock ();
8880     if (!p_inited) {
8881
8882       p = orc_program_new ();
8883       orc_program_set_2d (p);
8884       orc_program_set_name (p, "cogorc_convert_AYUV_YUY2");
8885       orc_program_set_backup_function (p, _backup_cogorc_convert_AYUV_YUY2);
8886       orc_program_add_destination (p, 4, "d1");
8887       orc_program_add_source (p, 8, "s1");
8888       orc_program_add_temporary (p, 2, "t1");
8889       orc_program_add_temporary (p, 2, "t2");
8890       orc_program_add_temporary (p, 2, "t3");
8891       orc_program_add_temporary (p, 4, "t4");
8892       orc_program_add_temporary (p, 4, "t5");
8893
8894       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_S1,
8895           ORC_VAR_D1);
8896       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T5,
8897           ORC_VAR_D1);
8898       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3,
8899           ORC_VAR_D1);
8900       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T4,
8901           ORC_VAR_D1, ORC_VAR_D1);
8902       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
8903           ORC_VAR_D1);
8904
8905       orc_program_compile (p);
8906     }
8907     p_inited = TRUE;
8908     orc_once_mutex_unlock ();
8909   }
8910   ex->program = p;
8911
8912   ex->n = n;
8913   ORC_EXECUTOR_M (ex) = m;
8914   ex->arrays[ORC_VAR_D1] = d1;
8915   ex->params[ORC_VAR_D1] = d1_stride;
8916   ex->arrays[ORC_VAR_S1] = (void *) s1;
8917   ex->params[ORC_VAR_S1] = s1_stride;
8918
8919   func = p->code_exec;
8920   func (ex);
8921 }
8922 #endif
8923
8924
8925 /* cogorc_convert_AYUV_UYVY */
8926 #ifdef DISABLE_ORC
8927 void
8928 cogorc_convert_AYUV_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
8929     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
8930 {
8931   int i;
8932   int j;
8933   orc_union32 *ORC_RESTRICT ptr0;
8934   const orc_union64 *ORC_RESTRICT ptr4;
8935   orc_union64 var37;
8936   orc_union32 var38;
8937   orc_union32 var39;
8938   orc_union32 var40;
8939   orc_union16 var41;
8940   orc_union16 var42;
8941   orc_union16 var43;
8942   orc_union16 var44;
8943
8944   for (j = 0; j < m; j++) {
8945     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
8946     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
8947
8948
8949     for (i = 0; i < n; i++) {
8950       /* 0: loadq */
8951       var37 = ptr4[i];
8952       /* 1: splitlw */
8953       {
8954         orc_union32 _src;
8955         _src.i = var37.x2[0];
8956         var39.x2[0] = _src.x2[1];
8957         var40.x2[0] = _src.x2[0];
8958       }
8959       {
8960         orc_union32 _src;
8961         _src.i = var37.x2[1];
8962         var39.x2[1] = _src.x2[1];
8963         var40.x2[1] = _src.x2[0];
8964       }
8965       /* 2: splitlw */
8966       {
8967         orc_union32 _src;
8968         _src.i = var39.i;
8969         var41.i = _src.x2[1];
8970         var42.i = _src.x2[0];
8971       }
8972       /* 3: avgub */
8973       var43.x2[0] =
8974           ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
8975       var43.x2[1] =
8976           ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
8977       /* 4: select1wb */
8978       {
8979         orc_union16 _src;
8980         _src.i = var40.x2[0];
8981         var44.x2[0] = _src.x2[1];
8982       }
8983       {
8984         orc_union16 _src;
8985         _src.i = var40.x2[1];
8986         var44.x2[1] = _src.x2[1];
8987       }
8988       /* 5: mergebw */
8989       {
8990         orc_union16 _dest;
8991         _dest.x2[0] = var43.x2[0];
8992         _dest.x2[1] = var44.x2[0];
8993         var38.x2[0] = _dest.i;
8994       }
8995       {
8996         orc_union16 _dest;
8997         _dest.x2[0] = var43.x2[1];
8998         _dest.x2[1] = var44.x2[1];
8999         var38.x2[1] = _dest.i;
9000       }
9001       /* 6: storel */
9002       ptr0[i] = var38;
9003     }
9004   }
9005
9006 }
9007
9008 #else
9009 static void
9010 _backup_cogorc_convert_AYUV_UYVY (OrcExecutor * ORC_RESTRICT ex)
9011 {
9012   int i;
9013   int j;
9014   int n = ex->n;
9015   int m = ex->params[ORC_VAR_A1];
9016   orc_union32 *ORC_RESTRICT ptr0;
9017   const orc_union64 *ORC_RESTRICT ptr4;
9018   orc_union64 var37;
9019   orc_union32 var38;
9020   orc_union32 var39;
9021   orc_union32 var40;
9022   orc_union16 var41;
9023   orc_union16 var42;
9024   orc_union16 var43;
9025   orc_union16 var44;
9026
9027   for (j = 0; j < m; j++) {
9028     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
9029     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
9030
9031
9032     for (i = 0; i < n; i++) {
9033       /* 0: loadq */
9034       var37 = ptr4[i];
9035       /* 1: splitlw */
9036       {
9037         orc_union32 _src;
9038         _src.i = var37.x2[0];
9039         var39.x2[0] = _src.x2[1];
9040         var40.x2[0] = _src.x2[0];
9041       }
9042       {
9043         orc_union32 _src;
9044         _src.i = var37.x2[1];
9045         var39.x2[1] = _src.x2[1];
9046         var40.x2[1] = _src.x2[0];
9047       }
9048       /* 2: splitlw */
9049       {
9050         orc_union32 _src;
9051         _src.i = var39.i;
9052         var41.i = _src.x2[1];
9053         var42.i = _src.x2[0];
9054       }
9055       /* 3: avgub */
9056       var43.x2[0] =
9057           ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
9058       var43.x2[1] =
9059           ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
9060       /* 4: select1wb */
9061       {
9062         orc_union16 _src;
9063         _src.i = var40.x2[0];
9064         var44.x2[0] = _src.x2[1];
9065       }
9066       {
9067         orc_union16 _src;
9068         _src.i = var40.x2[1];
9069         var44.x2[1] = _src.x2[1];
9070       }
9071       /* 5: mergebw */
9072       {
9073         orc_union16 _dest;
9074         _dest.x2[0] = var43.x2[0];
9075         _dest.x2[1] = var44.x2[0];
9076         var38.x2[0] = _dest.i;
9077       }
9078       {
9079         orc_union16 _dest;
9080         _dest.x2[0] = var43.x2[1];
9081         _dest.x2[1] = var44.x2[1];
9082         var38.x2[1] = _dest.i;
9083       }
9084       /* 6: storel */
9085       ptr0[i] = var38;
9086     }
9087   }
9088
9089 }
9090
9091 void
9092 cogorc_convert_AYUV_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
9093     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
9094 {
9095   OrcExecutor _ex, *ex = &_ex;
9096   static volatile int p_inited = 0;
9097   static OrcProgram *p = 0;
9098   void (*func) (OrcExecutor *);
9099
9100   if (!p_inited) {
9101     orc_once_mutex_lock ();
9102     if (!p_inited) {
9103
9104       p = orc_program_new ();
9105       orc_program_set_2d (p);
9106       orc_program_set_name (p, "cogorc_convert_AYUV_UYVY");
9107       orc_program_set_backup_function (p, _backup_cogorc_convert_AYUV_UYVY);
9108       orc_program_add_destination (p, 4, "d1");
9109       orc_program_add_source (p, 8, "s1");
9110       orc_program_add_temporary (p, 2, "t1");
9111       orc_program_add_temporary (p, 2, "t2");
9112       orc_program_add_temporary (p, 2, "t3");
9113       orc_program_add_temporary (p, 4, "t4");
9114       orc_program_add_temporary (p, 4, "t5");
9115
9116       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_S1,
9117           ORC_VAR_D1);
9118       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T5,
9119           ORC_VAR_D1);
9120       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3,
9121           ORC_VAR_D1);
9122       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T4,
9123           ORC_VAR_D1, ORC_VAR_D1);
9124       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
9125           ORC_VAR_D1);
9126
9127       orc_program_compile (p);
9128     }
9129     p_inited = TRUE;
9130     orc_once_mutex_unlock ();
9131   }
9132   ex->program = p;
9133
9134   ex->n = n;
9135   ORC_EXECUTOR_M (ex) = m;
9136   ex->arrays[ORC_VAR_D1] = d1;
9137   ex->params[ORC_VAR_D1] = d1_stride;
9138   ex->arrays[ORC_VAR_S1] = (void *) s1;
9139   ex->params[ORC_VAR_S1] = s1_stride;
9140
9141   func = p->code_exec;
9142   func (ex);
9143 }
9144 #endif
9145
9146
9147 /* cogorc_convert_AYUV_Y42B */
9148 #ifdef DISABLE_ORC
9149 void
9150 cogorc_convert_AYUV_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride,
9151     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
9152     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
9153 {
9154   int i;
9155   int j;
9156   orc_union16 *ORC_RESTRICT ptr0;
9157   orc_int8 *ORC_RESTRICT ptr1;
9158   orc_int8 *ORC_RESTRICT ptr2;
9159   const orc_union64 *ORC_RESTRICT ptr4;
9160   orc_union64 var36;
9161   orc_int8 var37;
9162   orc_int8 var38;
9163   orc_union16 var39;
9164   orc_union32 var40;
9165   orc_union32 var41;
9166   orc_union16 var42;
9167   orc_union16 var43;
9168   orc_union16 var44;
9169
9170   for (j = 0; j < m; j++) {
9171     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
9172     ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
9173     ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j);
9174     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
9175
9176
9177     for (i = 0; i < n; i++) {
9178       /* 0: loadq */
9179       var36 = ptr4[i];
9180       /* 1: splitlw */
9181       {
9182         orc_union32 _src;
9183         _src.i = var36.x2[0];
9184         var40.x2[0] = _src.x2[1];
9185         var41.x2[0] = _src.x2[0];
9186       }
9187       {
9188         orc_union32 _src;
9189         _src.i = var36.x2[1];
9190         var40.x2[1] = _src.x2[1];
9191         var41.x2[1] = _src.x2[0];
9192       }
9193       /* 2: splitlw */
9194       {
9195         orc_union32 _src;
9196         _src.i = var40.i;
9197         var42.i = _src.x2[1];
9198         var43.i = _src.x2[0];
9199       }
9200       /* 3: avgub */
9201       var44.x2[0] =
9202           ((orc_uint8) var42.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1;
9203       var44.x2[1] =
9204           ((orc_uint8) var42.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1;
9205       /* 4: splitwb */
9206       {
9207         orc_union16 _src;
9208         _src.i = var44.i;
9209         var37 = _src.x2[1];
9210         var38 = _src.x2[0];
9211       }
9212       /* 5: storeb */
9213       ptr2[i] = var37;
9214       /* 6: storeb */
9215       ptr1[i] = var38;
9216       /* 7: select1wb */
9217       {
9218         orc_union16 _src;
9219         _src.i = var41.x2[0];
9220         var39.x2[0] = _src.x2[1];
9221       }
9222       {
9223         orc_union16 _src;
9224         _src.i = var41.x2[1];
9225         var39.x2[1] = _src.x2[1];
9226       }
9227       /* 8: storew */
9228       ptr0[i] = var39;
9229     }
9230   }
9231
9232 }
9233
9234 #else
9235 static void
9236 _backup_cogorc_convert_AYUV_Y42B (OrcExecutor * ORC_RESTRICT ex)
9237 {
9238   int i;
9239   int j;
9240   int n = ex->n;
9241   int m = ex->params[ORC_VAR_A1];
9242   orc_union16 *ORC_RESTRICT ptr0;
9243   orc_int8 *ORC_RESTRICT ptr1;
9244   orc_int8 *ORC_RESTRICT ptr2;
9245   const orc_union64 *ORC_RESTRICT ptr4;
9246   orc_union64 var36;
9247   orc_int8 var37;
9248   orc_int8 var38;
9249   orc_union16 var39;
9250   orc_union32 var40;
9251   orc_union32 var41;
9252   orc_union16 var42;
9253   orc_union16 var43;
9254   orc_union16 var44;
9255
9256   for (j = 0; j < m; j++) {
9257     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
9258     ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
9259     ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j);
9260     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
9261
9262
9263     for (i = 0; i < n; i++) {
9264       /* 0: loadq */
9265       var36 = ptr4[i];
9266       /* 1: splitlw */
9267       {
9268         orc_union32 _src;
9269         _src.i = var36.x2[0];
9270         var40.x2[0] = _src.x2[1];
9271         var41.x2[0] = _src.x2[0];
9272       }
9273       {
9274         orc_union32 _src;
9275         _src.i = var36.x2[1];
9276         var40.x2[1] = _src.x2[1];
9277         var41.x2[1] = _src.x2[0];
9278       }
9279       /* 2: splitlw */
9280       {
9281         orc_union32 _src;
9282         _src.i = var40.i;
9283         var42.i = _src.x2[1];
9284         var43.i = _src.x2[0];
9285       }
9286       /* 3: avgub */
9287       var44.x2[0] =
9288           ((orc_uint8) var42.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1;
9289       var44.x2[1] =
9290           ((orc_uint8) var42.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1;
9291       /* 4: splitwb */
9292       {
9293         orc_union16 _src;
9294         _src.i = var44.i;
9295         var37 = _src.x2[1];
9296         var38 = _src.x2[0];
9297       }
9298       /* 5: storeb */
9299       ptr2[i] = var37;
9300       /* 6: storeb */
9301       ptr1[i] = var38;
9302       /* 7: select1wb */
9303       {
9304         orc_union16 _src;
9305         _src.i = var41.x2[0];
9306         var39.x2[0] = _src.x2[1];
9307       }
9308       {
9309         orc_union16 _src;
9310         _src.i = var41.x2[1];
9311         var39.x2[1] = _src.x2[1];
9312       }
9313       /* 8: storew */
9314       ptr0[i] = var39;
9315     }
9316   }
9317
9318 }
9319
9320 void
9321 cogorc_convert_AYUV_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride,
9322     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
9323     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
9324 {
9325   OrcExecutor _ex, *ex = &_ex;
9326   static volatile int p_inited = 0;
9327   static OrcProgram *p = 0;
9328   void (*func) (OrcExecutor *);
9329
9330   if (!p_inited) {
9331     orc_once_mutex_lock ();
9332     if (!p_inited) {
9333
9334       p = orc_program_new ();
9335       orc_program_set_2d (p);
9336       orc_program_set_name (p, "cogorc_convert_AYUV_Y42B");
9337       orc_program_set_backup_function (p, _backup_cogorc_convert_AYUV_Y42B);
9338       orc_program_add_destination (p, 2, "d1");
9339       orc_program_add_destination (p, 1, "d2");
9340       orc_program_add_destination (p, 1, "d3");
9341       orc_program_add_source (p, 8, "s1");
9342       orc_program_add_temporary (p, 4, "t1");
9343       orc_program_add_temporary (p, 4, "t2");
9344       orc_program_add_temporary (p, 2, "t3");
9345       orc_program_add_temporary (p, 2, "t4");
9346
9347       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
9348           ORC_VAR_D1);
9349       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2,
9350           ORC_VAR_D1);
9351       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4,
9352           ORC_VAR_D1);
9353       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T3,
9354           ORC_VAR_D1);
9355       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
9356           ORC_VAR_D1, ORC_VAR_D1);
9357
9358       orc_program_compile (p);
9359     }
9360     p_inited = TRUE;
9361     orc_once_mutex_unlock ();
9362   }
9363   ex->program = p;
9364
9365   ex->n = n;
9366   ORC_EXECUTOR_M (ex) = m;
9367   ex->arrays[ORC_VAR_D1] = d1;
9368   ex->params[ORC_VAR_D1] = d1_stride;
9369   ex->arrays[ORC_VAR_D2] = d2;
9370   ex->params[ORC_VAR_D2] = d2_stride;
9371   ex->arrays[ORC_VAR_D3] = d3;
9372   ex->params[ORC_VAR_D3] = d3_stride;
9373   ex->arrays[ORC_VAR_S1] = (void *) s1;
9374   ex->params[ORC_VAR_S1] = s1_stride;
9375
9376   func = p->code_exec;
9377   func (ex);
9378 }
9379 #endif
9380
9381
9382 /* cogorc_convert_AYUV_Y444 */
9383 #ifdef DISABLE_ORC
9384 void
9385 cogorc_convert_AYUV_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride,
9386     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
9387     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
9388 {
9389   int i;
9390   int j;
9391   orc_int8 *ORC_RESTRICT ptr0;
9392   orc_int8 *ORC_RESTRICT ptr1;
9393   orc_int8 *ORC_RESTRICT ptr2;
9394   const orc_union32 *ORC_RESTRICT ptr4;
9395   orc_union32 var34;
9396   orc_int8 var35;
9397   orc_int8 var36;
9398   orc_int8 var37;
9399   orc_union16 var38;
9400   orc_union16 var39;
9401
9402   for (j = 0; j < m; j++) {
9403     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
9404     ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
9405     ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j);
9406     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
9407
9408
9409     for (i = 0; i < n; i++) {
9410       /* 0: loadl */
9411       var34 = ptr4[i];
9412       /* 1: splitlw */
9413       {
9414         orc_union32 _src;
9415         _src.i = var34.i;
9416         var38.i = _src.x2[1];
9417         var39.i = _src.x2[0];
9418       }
9419       /* 2: splitwb */
9420       {
9421         orc_union16 _src;
9422         _src.i = var38.i;
9423         var35 = _src.x2[1];
9424         var36 = _src.x2[0];
9425       }
9426       /* 3: storeb */
9427       ptr2[i] = var35;
9428       /* 4: storeb */
9429       ptr1[i] = var36;
9430       /* 5: select1wb */
9431       {
9432         orc_union16 _src;
9433         _src.i = var39.i;
9434         var37 = _src.x2[1];
9435       }
9436       /* 6: storeb */
9437       ptr0[i] = var37;
9438     }
9439   }
9440
9441 }
9442
9443 #else
9444 static void
9445 _backup_cogorc_convert_AYUV_Y444 (OrcExecutor * ORC_RESTRICT ex)
9446 {
9447   int i;
9448   int j;
9449   int n = ex->n;
9450   int m = ex->params[ORC_VAR_A1];
9451   orc_int8 *ORC_RESTRICT ptr0;
9452   orc_int8 *ORC_RESTRICT ptr1;
9453   orc_int8 *ORC_RESTRICT ptr2;
9454   const orc_union32 *ORC_RESTRICT ptr4;
9455   orc_union32 var34;
9456   orc_int8 var35;
9457   orc_int8 var36;
9458   orc_int8 var37;
9459   orc_union16 var38;
9460   orc_union16 var39;
9461
9462   for (j = 0; j < m; j++) {
9463     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
9464     ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
9465     ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j);
9466     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
9467
9468
9469     for (i = 0; i < n; i++) {
9470       /* 0: loadl */
9471       var34 = ptr4[i];
9472       /* 1: splitlw */
9473       {
9474         orc_union32 _src;
9475         _src.i = var34.i;
9476         var38.i = _src.x2[1];
9477         var39.i = _src.x2[0];
9478       }
9479       /* 2: splitwb */
9480       {
9481         orc_union16 _src;
9482         _src.i = var38.i;
9483         var35 = _src.x2[1];
9484         var36 = _src.x2[0];
9485       }
9486       /* 3: storeb */
9487       ptr2[i] = var35;
9488       /* 4: storeb */
9489       ptr1[i] = var36;
9490       /* 5: select1wb */
9491       {
9492         orc_union16 _src;
9493         _src.i = var39.i;
9494         var37 = _src.x2[1];
9495       }
9496       /* 6: storeb */
9497       ptr0[i] = var37;
9498     }
9499   }
9500
9501 }
9502
9503 void
9504 cogorc_convert_AYUV_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride,
9505     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
9506     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
9507 {
9508   OrcExecutor _ex, *ex = &_ex;
9509   static volatile int p_inited = 0;
9510   static OrcProgram *p = 0;
9511   void (*func) (OrcExecutor *);
9512
9513   if (!p_inited) {
9514     orc_once_mutex_lock ();
9515     if (!p_inited) {
9516
9517       p = orc_program_new ();
9518       orc_program_set_2d (p);
9519       orc_program_set_name (p, "cogorc_convert_AYUV_Y444");
9520       orc_program_set_backup_function (p, _backup_cogorc_convert_AYUV_Y444);
9521       orc_program_add_destination (p, 1, "d1");
9522       orc_program_add_destination (p, 1, "d2");
9523       orc_program_add_destination (p, 1, "d3");
9524       orc_program_add_source (p, 4, "s1");
9525       orc_program_add_temporary (p, 2, "t1");
9526       orc_program_add_temporary (p, 2, "t2");
9527
9528       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
9529           ORC_VAR_D1);
9530       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T2,
9531           ORC_VAR_D1);
9532       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1,
9533           ORC_VAR_D1, ORC_VAR_D1);
9534
9535       orc_program_compile (p);
9536     }
9537     p_inited = TRUE;
9538     orc_once_mutex_unlock ();
9539   }
9540   ex->program = p;
9541
9542   ex->n = n;
9543   ORC_EXECUTOR_M (ex) = m;
9544   ex->arrays[ORC_VAR_D1] = d1;
9545   ex->params[ORC_VAR_D1] = d1_stride;
9546   ex->arrays[ORC_VAR_D2] = d2;
9547   ex->params[ORC_VAR_D2] = d2_stride;
9548   ex->arrays[ORC_VAR_D3] = d3;
9549   ex->params[ORC_VAR_D3] = d3_stride;
9550   ex->arrays[ORC_VAR_S1] = (void *) s1;
9551   ex->params[ORC_VAR_S1] = s1_stride;
9552
9553   func = p->code_exec;
9554   func (ex);
9555 }
9556 #endif
9557
9558
9559 /* cogorc_convert_Y42B_YUY2 */
9560 #ifdef DISABLE_ORC
9561 void
9562 cogorc_convert_Y42B_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
9563     const guint8 * ORC_RESTRICT s1, int s1_stride,
9564     const guint8 * ORC_RESTRICT s2, int s2_stride,
9565     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
9566 {
9567   int i;
9568   int j;
9569   orc_union32 *ORC_RESTRICT ptr0;
9570   const orc_union16 *ORC_RESTRICT ptr4;
9571   const orc_int8 *ORC_RESTRICT ptr5;
9572   const orc_int8 *ORC_RESTRICT ptr6;
9573   orc_int8 var33;
9574   orc_int8 var34;
9575   orc_union16 var35;
9576   orc_union32 var36;
9577   orc_union16 var37;
9578
9579   for (j = 0; j < m; j++) {
9580     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
9581     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
9582     ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
9583     ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j);
9584
9585
9586     for (i = 0; i < n; i++) {
9587       /* 0: loadb */
9588       var33 = ptr5[i];
9589       /* 1: loadb */
9590       var34 = ptr6[i];
9591       /* 2: mergebw */
9592       {
9593         orc_union16 _dest;
9594         _dest.x2[0] = var33;
9595         _dest.x2[1] = var34;
9596         var37.i = _dest.i;
9597       }
9598       /* 3: loadw */
9599       var35 = ptr4[i];
9600       /* 4: mergebw */
9601       {
9602         orc_union16 _dest;
9603         _dest.x2[0] = var35.x2[0];
9604         _dest.x2[1] = var37.x2[0];
9605         var36.x2[0] = _dest.i;
9606       }
9607       {
9608         orc_union16 _dest;
9609         _dest.x2[0] = var35.x2[1];
9610         _dest.x2[1] = var37.x2[1];
9611         var36.x2[1] = _dest.i;
9612       }
9613       /* 5: storel */
9614       ptr0[i] = var36;
9615     }
9616   }
9617
9618 }
9619
9620 #else
9621 static void
9622 _backup_cogorc_convert_Y42B_YUY2 (OrcExecutor * ORC_RESTRICT ex)
9623 {
9624   int i;
9625   int j;
9626   int n = ex->n;
9627   int m = ex->params[ORC_VAR_A1];
9628   orc_union32 *ORC_RESTRICT ptr0;
9629   const orc_union16 *ORC_RESTRICT ptr4;
9630   const orc_int8 *ORC_RESTRICT ptr5;
9631   const orc_int8 *ORC_RESTRICT ptr6;
9632   orc_int8 var33;
9633   orc_int8 var34;
9634   orc_union16 var35;
9635   orc_union32 var36;
9636   orc_union16 var37;
9637
9638   for (j = 0; j < m; j++) {
9639     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
9640     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
9641     ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
9642     ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j);
9643
9644
9645     for (i = 0; i < n; i++) {
9646       /* 0: loadb */
9647       var33 = ptr5[i];
9648       /* 1: loadb */
9649       var34 = ptr6[i];
9650       /* 2: mergebw */
9651       {
9652         orc_union16 _dest;
9653         _dest.x2[0] = var33;
9654         _dest.x2[1] = var34;
9655         var37.i = _dest.i;
9656       }
9657       /* 3: loadw */
9658       var35 = ptr4[i];
9659       /* 4: mergebw */
9660       {
9661         orc_union16 _dest;
9662         _dest.x2[0] = var35.x2[0];
9663         _dest.x2[1] = var37.x2[0];
9664         var36.x2[0] = _dest.i;
9665       }
9666       {
9667         orc_union16 _dest;
9668         _dest.x2[0] = var35.x2[1];
9669         _dest.x2[1] = var37.x2[1];
9670         var36.x2[1] = _dest.i;
9671       }
9672       /* 5: storel */
9673       ptr0[i] = var36;
9674     }
9675   }
9676
9677 }
9678
9679 void
9680 cogorc_convert_Y42B_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
9681     const guint8 * ORC_RESTRICT s1, int s1_stride,
9682     const guint8 * ORC_RESTRICT s2, int s2_stride,
9683     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
9684 {
9685   OrcExecutor _ex, *ex = &_ex;
9686   static volatile int p_inited = 0;
9687   static OrcProgram *p = 0;
9688   void (*func) (OrcExecutor *);
9689
9690   if (!p_inited) {
9691     orc_once_mutex_lock ();
9692     if (!p_inited) {
9693
9694       p = orc_program_new ();
9695       orc_program_set_2d (p);
9696       orc_program_set_name (p, "cogorc_convert_Y42B_YUY2");
9697       orc_program_set_backup_function (p, _backup_cogorc_convert_Y42B_YUY2);
9698       orc_program_add_destination (p, 4, "d1");
9699       orc_program_add_source (p, 2, "s1");
9700       orc_program_add_source (p, 1, "s2");
9701       orc_program_add_source (p, 1, "s3");
9702       orc_program_add_temporary (p, 2, "t1");
9703
9704       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3,
9705           ORC_VAR_D1);
9706       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1,
9707           ORC_VAR_D1);
9708
9709       orc_program_compile (p);
9710     }
9711     p_inited = TRUE;
9712     orc_once_mutex_unlock ();
9713   }
9714   ex->program = p;
9715
9716   ex->n = n;
9717   ORC_EXECUTOR_M (ex) = m;
9718   ex->arrays[ORC_VAR_D1] = d1;
9719   ex->params[ORC_VAR_D1] = d1_stride;
9720   ex->arrays[ORC_VAR_S1] = (void *) s1;
9721   ex->params[ORC_VAR_S1] = s1_stride;
9722   ex->arrays[ORC_VAR_S2] = (void *) s2;
9723   ex->params[ORC_VAR_S2] = s2_stride;
9724   ex->arrays[ORC_VAR_S3] = (void *) s3;
9725   ex->params[ORC_VAR_S3] = s3_stride;
9726
9727   func = p->code_exec;
9728   func (ex);
9729 }
9730 #endif
9731
9732
9733 /* cogorc_convert_Y42B_UYVY */
9734 #ifdef DISABLE_ORC
9735 void
9736 cogorc_convert_Y42B_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
9737     const guint8 * ORC_RESTRICT s1, int s1_stride,
9738     const guint8 * ORC_RESTRICT s2, int s2_stride,
9739     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
9740 {
9741   int i;
9742   int j;
9743   orc_union32 *ORC_RESTRICT ptr0;
9744   const orc_union16 *ORC_RESTRICT ptr4;
9745   const orc_int8 *ORC_RESTRICT ptr5;
9746   const orc_int8 *ORC_RESTRICT ptr6;
9747   orc_int8 var33;
9748   orc_int8 var34;
9749   orc_union16 var35;
9750   orc_union32 var36;
9751   orc_union16 var37;
9752
9753   for (j = 0; j < m; j++) {
9754     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
9755     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
9756     ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
9757     ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j);
9758
9759
9760     for (i = 0; i < n; i++) {
9761       /* 0: loadb */
9762       var33 = ptr5[i];
9763       /* 1: loadb */
9764       var34 = ptr6[i];
9765       /* 2: mergebw */
9766       {
9767         orc_union16 _dest;
9768         _dest.x2[0] = var33;
9769         _dest.x2[1] = var34;
9770         var37.i = _dest.i;
9771       }
9772       /* 3: loadw */
9773       var35 = ptr4[i];
9774       /* 4: mergebw */
9775       {
9776         orc_union16 _dest;
9777         _dest.x2[0] = var37.x2[0];
9778         _dest.x2[1] = var35.x2[0];
9779         var36.x2[0] = _dest.i;
9780       }
9781       {
9782         orc_union16 _dest;
9783         _dest.x2[0] = var37.x2[1];
9784         _dest.x2[1] = var35.x2[1];
9785         var36.x2[1] = _dest.i;
9786       }
9787       /* 5: storel */
9788       ptr0[i] = var36;
9789     }
9790   }
9791
9792 }
9793
9794 #else
9795 static void
9796 _backup_cogorc_convert_Y42B_UYVY (OrcExecutor * ORC_RESTRICT ex)
9797 {
9798   int i;
9799   int j;
9800   int n = ex->n;
9801   int m = ex->params[ORC_VAR_A1];
9802   orc_union32 *ORC_RESTRICT ptr0;
9803   const orc_union16 *ORC_RESTRICT ptr4;
9804   const orc_int8 *ORC_RESTRICT ptr5;
9805   const orc_int8 *ORC_RESTRICT ptr6;
9806   orc_int8 var33;
9807   orc_int8 var34;
9808   orc_union16 var35;
9809   orc_union32 var36;
9810   orc_union16 var37;
9811
9812   for (j = 0; j < m; j++) {
9813     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
9814     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
9815     ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
9816     ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j);
9817
9818
9819     for (i = 0; i < n; i++) {
9820       /* 0: loadb */
9821       var33 = ptr5[i];
9822       /* 1: loadb */
9823       var34 = ptr6[i];
9824       /* 2: mergebw */
9825       {
9826         orc_union16 _dest;
9827         _dest.x2[0] = var33;
9828         _dest.x2[1] = var34;
9829         var37.i = _dest.i;
9830       }
9831       /* 3: loadw */
9832       var35 = ptr4[i];
9833       /* 4: mergebw */
9834       {
9835         orc_union16 _dest;
9836         _dest.x2[0] = var37.x2[0];
9837         _dest.x2[1] = var35.x2[0];
9838         var36.x2[0] = _dest.i;
9839       }
9840       {
9841         orc_union16 _dest;
9842         _dest.x2[0] = var37.x2[1];
9843         _dest.x2[1] = var35.x2[1];
9844         var36.x2[1] = _dest.i;
9845       }
9846       /* 5: storel */
9847       ptr0[i] = var36;
9848     }
9849   }
9850
9851 }
9852
9853 void
9854 cogorc_convert_Y42B_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
9855     const guint8 * ORC_RESTRICT s1, int s1_stride,
9856     const guint8 * ORC_RESTRICT s2, int s2_stride,
9857     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
9858 {
9859   OrcExecutor _ex, *ex = &_ex;
9860   static volatile int p_inited = 0;
9861   static OrcProgram *p = 0;
9862   void (*func) (OrcExecutor *);
9863
9864   if (!p_inited) {
9865     orc_once_mutex_lock ();
9866     if (!p_inited) {
9867
9868       p = orc_program_new ();
9869       orc_program_set_2d (p);
9870       orc_program_set_name (p, "cogorc_convert_Y42B_UYVY");
9871       orc_program_set_backup_function (p, _backup_cogorc_convert_Y42B_UYVY);
9872       orc_program_add_destination (p, 4, "d1");
9873       orc_program_add_source (p, 2, "s1");
9874       orc_program_add_source (p, 1, "s2");
9875       orc_program_add_source (p, 1, "s3");
9876       orc_program_add_temporary (p, 2, "t1");
9877
9878       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3,
9879           ORC_VAR_D1);
9880       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1,
9881           ORC_VAR_D1);
9882
9883       orc_program_compile (p);
9884     }
9885     p_inited = TRUE;
9886     orc_once_mutex_unlock ();
9887   }
9888   ex->program = p;
9889
9890   ex->n = n;
9891   ORC_EXECUTOR_M (ex) = m;
9892   ex->arrays[ORC_VAR_D1] = d1;
9893   ex->params[ORC_VAR_D1] = d1_stride;
9894   ex->arrays[ORC_VAR_S1] = (void *) s1;
9895   ex->params[ORC_VAR_S1] = s1_stride;
9896   ex->arrays[ORC_VAR_S2] = (void *) s2;
9897   ex->params[ORC_VAR_S2] = s2_stride;
9898   ex->arrays[ORC_VAR_S3] = (void *) s3;
9899   ex->params[ORC_VAR_S3] = s3_stride;
9900
9901   func = p->code_exec;
9902   func (ex);
9903 }
9904 #endif
9905
9906
9907 /* cogorc_convert_Y42B_AYUV */
9908 #ifdef DISABLE_ORC
9909 void
9910 cogorc_convert_Y42B_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
9911     const guint8 * ORC_RESTRICT s1, int s1_stride,
9912     const guint8 * ORC_RESTRICT s2, int s2_stride,
9913     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
9914 {
9915   int i;
9916   int j;
9917   orc_union64 *ORC_RESTRICT ptr0;
9918   const orc_union16 *ORC_RESTRICT ptr4;
9919   const orc_int8 *ORC_RESTRICT ptr5;
9920   const orc_int8 *ORC_RESTRICT ptr6;
9921   orc_int8 var36;
9922   orc_int8 var37;
9923   orc_union16 var38;
9924   orc_union16 var39;
9925   orc_union64 var40;
9926   orc_union16 var41;
9927   orc_union32 var42;
9928   orc_union32 var43;
9929
9930   for (j = 0; j < m; j++) {
9931     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
9932     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
9933     ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
9934     ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j);
9935
9936     /* 3: loadpb */
9937     var38.x2[0] = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
9938     var38.x2[1] = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
9939
9940     for (i = 0; i < n; i++) {
9941       /* 0: loadb */
9942       var36 = ptr5[i];
9943       /* 1: loadb */
9944       var37 = ptr6[i];
9945       /* 2: mergebw */
9946       {
9947         orc_union16 _dest;
9948         _dest.x2[0] = var36;
9949         _dest.x2[1] = var37;
9950         var41.i = _dest.i;
9951       }
9952       /* 4: loadw */
9953       var39 = ptr4[i];
9954       /* 5: mergebw */
9955       {
9956         orc_union16 _dest;
9957         _dest.x2[0] = var38.x2[0];
9958         _dest.x2[1] = var39.x2[0];
9959         var42.x2[0] = _dest.i;
9960       }
9961       {
9962         orc_union16 _dest;
9963         _dest.x2[0] = var38.x2[1];
9964         _dest.x2[1] = var39.x2[1];
9965         var42.x2[1] = _dest.i;
9966       }
9967       /* 6: mergewl */
9968       {
9969         orc_union32 _dest;
9970         _dest.x2[0] = var41.i;
9971         _dest.x2[1] = var41.i;
9972         var43.i = _dest.i;
9973       }
9974       /* 7: mergewl */
9975       {
9976         orc_union32 _dest;
9977         _dest.x2[0] = var42.x2[0];
9978         _dest.x2[1] = var43.x2[0];
9979         var40.x2[0] = _dest.i;
9980       }
9981       {
9982         orc_union32 _dest;
9983         _dest.x2[0] = var42.x2[1];
9984         _dest.x2[1] = var43.x2[1];
9985         var40.x2[1] = _dest.i;
9986       }
9987       /* 8: storeq */
9988       ptr0[i] = var40;
9989     }
9990   }
9991
9992 }
9993
9994 #else
9995 static void
9996 _backup_cogorc_convert_Y42B_AYUV (OrcExecutor * ORC_RESTRICT ex)
9997 {
9998   int i;
9999   int j;
10000   int n = ex->n;
10001   int m = ex->params[ORC_VAR_A1];
10002   orc_union64 *ORC_RESTRICT ptr0;
10003   const orc_union16 *ORC_RESTRICT ptr4;
10004   const orc_int8 *ORC_RESTRICT ptr5;
10005   const orc_int8 *ORC_RESTRICT ptr6;
10006   orc_int8 var36;
10007   orc_int8 var37;
10008   orc_union16 var38;
10009   orc_union16 var39;
10010   orc_union64 var40;
10011   orc_union16 var41;
10012   orc_union32 var42;
10013   orc_union32 var43;
10014
10015   for (j = 0; j < m; j++) {
10016     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
10017     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
10018     ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
10019     ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j);
10020
10021     /* 3: loadpb */
10022     var38.x2[0] = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
10023     var38.x2[1] = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
10024
10025     for (i = 0; i < n; i++) {
10026       /* 0: loadb */
10027       var36 = ptr5[i];
10028       /* 1: loadb */
10029       var37 = ptr6[i];
10030       /* 2: mergebw */
10031       {
10032         orc_union16 _dest;
10033         _dest.x2[0] = var36;
10034         _dest.x2[1] = var37;
10035         var41.i = _dest.i;
10036       }
10037       /* 4: loadw */
10038       var39 = ptr4[i];
10039       /* 5: mergebw */
10040       {
10041         orc_union16 _dest;
10042         _dest.x2[0] = var38.x2[0];
10043         _dest.x2[1] = var39.x2[0];
10044         var42.x2[0] = _dest.i;
10045       }
10046       {
10047         orc_union16 _dest;
10048         _dest.x2[0] = var38.x2[1];
10049         _dest.x2[1] = var39.x2[1];
10050         var42.x2[1] = _dest.i;
10051       }
10052       /* 6: mergewl */
10053       {
10054         orc_union32 _dest;
10055         _dest.x2[0] = var41.i;
10056         _dest.x2[1] = var41.i;
10057         var43.i = _dest.i;
10058       }
10059       /* 7: mergewl */
10060       {
10061         orc_union32 _dest;
10062         _dest.x2[0] = var42.x2[0];
10063         _dest.x2[1] = var43.x2[0];
10064         var40.x2[0] = _dest.i;
10065       }
10066       {
10067         orc_union32 _dest;
10068         _dest.x2[0] = var42.x2[1];
10069         _dest.x2[1] = var43.x2[1];
10070         var40.x2[1] = _dest.i;
10071       }
10072       /* 8: storeq */
10073       ptr0[i] = var40;
10074     }
10075   }
10076
10077 }
10078
10079 void
10080 cogorc_convert_Y42B_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
10081     const guint8 * ORC_RESTRICT s1, int s1_stride,
10082     const guint8 * ORC_RESTRICT s2, int s2_stride,
10083     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
10084 {
10085   OrcExecutor _ex, *ex = &_ex;
10086   static volatile int p_inited = 0;
10087   static OrcProgram *p = 0;
10088   void (*func) (OrcExecutor *);
10089
10090   if (!p_inited) {
10091     orc_once_mutex_lock ();
10092     if (!p_inited) {
10093
10094       p = orc_program_new ();
10095       orc_program_set_2d (p);
10096       orc_program_set_name (p, "cogorc_convert_Y42B_AYUV");
10097       orc_program_set_backup_function (p, _backup_cogorc_convert_Y42B_AYUV);
10098       orc_program_add_destination (p, 8, "d1");
10099       orc_program_add_source (p, 2, "s1");
10100       orc_program_add_source (p, 1, "s2");
10101       orc_program_add_source (p, 1, "s3");
10102       orc_program_add_constant (p, 1, 0x000000ff, "c1");
10103       orc_program_add_temporary (p, 2, "t1");
10104       orc_program_add_temporary (p, 2, "t2");
10105       orc_program_add_temporary (p, 4, "t3");
10106       orc_program_add_temporary (p, 4, "t4");
10107
10108       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3,
10109           ORC_VAR_D1);
10110       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T4, ORC_VAR_C1, ORC_VAR_S1,
10111           ORC_VAR_D1);
10112       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1,
10113           ORC_VAR_D1);
10114       orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_T3,
10115           ORC_VAR_D1);
10116
10117       orc_program_compile (p);
10118     }
10119     p_inited = TRUE;
10120     orc_once_mutex_unlock ();
10121   }
10122   ex->program = p;
10123
10124   ex->n = n;
10125   ORC_EXECUTOR_M (ex) = m;
10126   ex->arrays[ORC_VAR_D1] = d1;
10127   ex->params[ORC_VAR_D1] = d1_stride;
10128   ex->arrays[ORC_VAR_S1] = (void *) s1;
10129   ex->params[ORC_VAR_S1] = s1_stride;
10130   ex->arrays[ORC_VAR_S2] = (void *) s2;
10131   ex->params[ORC_VAR_S2] = s2_stride;
10132   ex->arrays[ORC_VAR_S3] = (void *) s3;
10133   ex->params[ORC_VAR_S3] = s3_stride;
10134
10135   func = p->code_exec;
10136   func (ex);
10137 }
10138 #endif
10139
10140
10141 /* cogorc_convert_Y444_YUY2 */
10142 #ifdef DISABLE_ORC
10143 void
10144 cogorc_convert_Y444_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
10145     const guint8 * ORC_RESTRICT s1, int s1_stride,
10146     const guint8 * ORC_RESTRICT s2, int s2_stride,
10147     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
10148 {
10149   int i;
10150   int j;
10151   orc_union32 *ORC_RESTRICT ptr0;
10152   const orc_union16 *ORC_RESTRICT ptr4;
10153   const orc_union16 *ORC_RESTRICT ptr5;
10154   const orc_union16 *ORC_RESTRICT ptr6;
10155   orc_union16 var36;
10156   orc_union16 var37;
10157   orc_union16 var38;
10158   orc_union32 var39;
10159   orc_union32 var40;
10160   orc_union16 var41;
10161   orc_union16 var42;
10162   orc_union16 var43;
10163
10164   for (j = 0; j < m; j++) {
10165     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
10166     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
10167     ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
10168     ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j);
10169
10170
10171     for (i = 0; i < n; i++) {
10172       /* 0: loadw */
10173       var36 = ptr5[i];
10174       /* 1: loadw */
10175       var37 = ptr6[i];
10176       /* 2: mergebw */
10177       {
10178         orc_union16 _dest;
10179         _dest.x2[0] = var36.x2[0];
10180         _dest.x2[1] = var37.x2[0];
10181         var40.x2[0] = _dest.i;
10182       }
10183       {
10184         orc_union16 _dest;
10185         _dest.x2[0] = var36.x2[1];
10186         _dest.x2[1] = var37.x2[1];
10187         var40.x2[1] = _dest.i;
10188       }
10189       /* 3: splitlw */
10190       {
10191         orc_union32 _src;
10192         _src.i = var40.i;
10193         var41.i = _src.x2[1];
10194         var42.i = _src.x2[0];
10195       }
10196       /* 4: avgub */
10197       var43.x2[0] =
10198           ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
10199       var43.x2[1] =
10200           ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
10201       /* 5: loadw */
10202       var38 = ptr4[i];
10203       /* 6: mergebw */
10204       {
10205         orc_union16 _dest;
10206         _dest.x2[0] = var38.x2[0];
10207         _dest.x2[1] = var43.x2[0];
10208         var39.x2[0] = _dest.i;
10209       }
10210       {
10211         orc_union16 _dest;
10212         _dest.x2[0] = var38.x2[1];
10213         _dest.x2[1] = var43.x2[1];
10214         var39.x2[1] = _dest.i;
10215       }
10216       /* 7: storel */
10217       ptr0[i] = var39;
10218     }
10219   }
10220
10221 }
10222
10223 #else
10224 static void
10225 _backup_cogorc_convert_Y444_YUY2 (OrcExecutor * ORC_RESTRICT ex)
10226 {
10227   int i;
10228   int j;
10229   int n = ex->n;
10230   int m = ex->params[ORC_VAR_A1];
10231   orc_union32 *ORC_RESTRICT ptr0;
10232   const orc_union16 *ORC_RESTRICT ptr4;
10233   const orc_union16 *ORC_RESTRICT ptr5;
10234   const orc_union16 *ORC_RESTRICT ptr6;
10235   orc_union16 var36;
10236   orc_union16 var37;
10237   orc_union16 var38;
10238   orc_union32 var39;
10239   orc_union32 var40;
10240   orc_union16 var41;
10241   orc_union16 var42;
10242   orc_union16 var43;
10243
10244   for (j = 0; j < m; j++) {
10245     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
10246     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
10247     ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
10248     ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j);
10249
10250
10251     for (i = 0; i < n; i++) {
10252       /* 0: loadw */
10253       var36 = ptr5[i];
10254       /* 1: loadw */
10255       var37 = ptr6[i];
10256       /* 2: mergebw */
10257       {
10258         orc_union16 _dest;
10259         _dest.x2[0] = var36.x2[0];
10260         _dest.x2[1] = var37.x2[0];
10261         var40.x2[0] = _dest.i;
10262       }
10263       {
10264         orc_union16 _dest;
10265         _dest.x2[0] = var36.x2[1];
10266         _dest.x2[1] = var37.x2[1];
10267         var40.x2[1] = _dest.i;
10268       }
10269       /* 3: splitlw */
10270       {
10271         orc_union32 _src;
10272         _src.i = var40.i;
10273         var41.i = _src.x2[1];
10274         var42.i = _src.x2[0];
10275       }
10276       /* 4: avgub */
10277       var43.x2[0] =
10278           ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
10279       var43.x2[1] =
10280           ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
10281       /* 5: loadw */
10282       var38 = ptr4[i];
10283       /* 6: mergebw */
10284       {
10285         orc_union16 _dest;
10286         _dest.x2[0] = var38.x2[0];
10287         _dest.x2[1] = var43.x2[0];
10288         var39.x2[0] = _dest.i;
10289       }
10290       {
10291         orc_union16 _dest;
10292         _dest.x2[0] = var38.x2[1];
10293         _dest.x2[1] = var43.x2[1];
10294         var39.x2[1] = _dest.i;
10295       }
10296       /* 7: storel */
10297       ptr0[i] = var39;
10298     }
10299   }
10300
10301 }
10302
10303 void
10304 cogorc_convert_Y444_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
10305     const guint8 * ORC_RESTRICT s1, int s1_stride,
10306     const guint8 * ORC_RESTRICT s2, int s2_stride,
10307     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
10308 {
10309   OrcExecutor _ex, *ex = &_ex;
10310   static volatile int p_inited = 0;
10311   static OrcProgram *p = 0;
10312   void (*func) (OrcExecutor *);
10313
10314   if (!p_inited) {
10315     orc_once_mutex_lock ();
10316     if (!p_inited) {
10317
10318       p = orc_program_new ();
10319       orc_program_set_2d (p);
10320       orc_program_set_name (p, "cogorc_convert_Y444_YUY2");
10321       orc_program_set_backup_function (p, _backup_cogorc_convert_Y444_YUY2);
10322       orc_program_add_destination (p, 4, "d1");
10323       orc_program_add_source (p, 2, "s1");
10324       orc_program_add_source (p, 2, "s2");
10325       orc_program_add_source (p, 2, "s3");
10326       orc_program_add_temporary (p, 2, "t1");
10327       orc_program_add_temporary (p, 4, "t2");
10328       orc_program_add_temporary (p, 2, "t3");
10329       orc_program_add_temporary (p, 2, "t4");
10330
10331       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S3,
10332           ORC_VAR_D1);
10333       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2,
10334           ORC_VAR_D1);
10335       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4,
10336           ORC_VAR_D1);
10337       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1,
10338           ORC_VAR_D1);
10339
10340       orc_program_compile (p);
10341     }
10342     p_inited = TRUE;
10343     orc_once_mutex_unlock ();
10344   }
10345   ex->program = p;
10346
10347   ex->n = n;
10348   ORC_EXECUTOR_M (ex) = m;
10349   ex->arrays[ORC_VAR_D1] = d1;
10350   ex->params[ORC_VAR_D1] = d1_stride;
10351   ex->arrays[ORC_VAR_S1] = (void *) s1;
10352   ex->params[ORC_VAR_S1] = s1_stride;
10353   ex->arrays[ORC_VAR_S2] = (void *) s2;
10354   ex->params[ORC_VAR_S2] = s2_stride;
10355   ex->arrays[ORC_VAR_S3] = (void *) s3;
10356   ex->params[ORC_VAR_S3] = s3_stride;
10357
10358   func = p->code_exec;
10359   func (ex);
10360 }
10361 #endif
10362
10363
10364 /* cogorc_convert_Y444_UYVY */
10365 #ifdef DISABLE_ORC
10366 void
10367 cogorc_convert_Y444_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
10368     const guint8 * ORC_RESTRICT s1, int s1_stride,
10369     const guint8 * ORC_RESTRICT s2, int s2_stride,
10370     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
10371 {
10372   int i;
10373   int j;
10374   orc_union32 *ORC_RESTRICT ptr0;
10375   const orc_union16 *ORC_RESTRICT ptr4;
10376   const orc_union16 *ORC_RESTRICT ptr5;
10377   const orc_union16 *ORC_RESTRICT ptr6;
10378   orc_union16 var36;
10379   orc_union16 var37;
10380   orc_union16 var38;
10381   orc_union32 var39;
10382   orc_union32 var40;
10383   orc_union16 var41;
10384   orc_union16 var42;
10385   orc_union16 var43;
10386
10387   for (j = 0; j < m; j++) {
10388     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
10389     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
10390     ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
10391     ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j);
10392
10393
10394     for (i = 0; i < n; i++) {
10395       /* 0: loadw */
10396       var36 = ptr5[i];
10397       /* 1: loadw */
10398       var37 = ptr6[i];
10399       /* 2: mergebw */
10400       {
10401         orc_union16 _dest;
10402         _dest.x2[0] = var36.x2[0];
10403         _dest.x2[1] = var37.x2[0];
10404         var40.x2[0] = _dest.i;
10405       }
10406       {
10407         orc_union16 _dest;
10408         _dest.x2[0] = var36.x2[1];
10409         _dest.x2[1] = var37.x2[1];
10410         var40.x2[1] = _dest.i;
10411       }
10412       /* 3: splitlw */
10413       {
10414         orc_union32 _src;
10415         _src.i = var40.i;
10416         var41.i = _src.x2[1];
10417         var42.i = _src.x2[0];
10418       }
10419       /* 4: avgub */
10420       var43.x2[0] =
10421           ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
10422       var43.x2[1] =
10423           ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
10424       /* 5: loadw */
10425       var38 = ptr4[i];
10426       /* 6: mergebw */
10427       {
10428         orc_union16 _dest;
10429         _dest.x2[0] = var43.x2[0];
10430         _dest.x2[1] = var38.x2[0];
10431         var39.x2[0] = _dest.i;
10432       }
10433       {
10434         orc_union16 _dest;
10435         _dest.x2[0] = var43.x2[1];
10436         _dest.x2[1] = var38.x2[1];
10437         var39.x2[1] = _dest.i;
10438       }
10439       /* 7: storel */
10440       ptr0[i] = var39;
10441     }
10442   }
10443
10444 }
10445
10446 #else
10447 static void
10448 _backup_cogorc_convert_Y444_UYVY (OrcExecutor * ORC_RESTRICT ex)
10449 {
10450   int i;
10451   int j;
10452   int n = ex->n;
10453   int m = ex->params[ORC_VAR_A1];
10454   orc_union32 *ORC_RESTRICT ptr0;
10455   const orc_union16 *ORC_RESTRICT ptr4;
10456   const orc_union16 *ORC_RESTRICT ptr5;
10457   const orc_union16 *ORC_RESTRICT ptr6;
10458   orc_union16 var36;
10459   orc_union16 var37;
10460   orc_union16 var38;
10461   orc_union32 var39;
10462   orc_union32 var40;
10463   orc_union16 var41;
10464   orc_union16 var42;
10465   orc_union16 var43;
10466
10467   for (j = 0; j < m; j++) {
10468     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
10469     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
10470     ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
10471     ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j);
10472
10473
10474     for (i = 0; i < n; i++) {
10475       /* 0: loadw */
10476       var36 = ptr5[i];
10477       /* 1: loadw */
10478       var37 = ptr6[i];
10479       /* 2: mergebw */
10480       {
10481         orc_union16 _dest;
10482         _dest.x2[0] = var36.x2[0];
10483         _dest.x2[1] = var37.x2[0];
10484         var40.x2[0] = _dest.i;
10485       }
10486       {
10487         orc_union16 _dest;
10488         _dest.x2[0] = var36.x2[1];
10489         _dest.x2[1] = var37.x2[1];
10490         var40.x2[1] = _dest.i;
10491       }
10492       /* 3: splitlw */
10493       {
10494         orc_union32 _src;
10495         _src.i = var40.i;
10496         var41.i = _src.x2[1];
10497         var42.i = _src.x2[0];
10498       }
10499       /* 4: avgub */
10500       var43.x2[0] =
10501           ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
10502       var43.x2[1] =
10503           ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
10504       /* 5: loadw */
10505       var38 = ptr4[i];
10506       /* 6: mergebw */
10507       {
10508         orc_union16 _dest;
10509         _dest.x2[0] = var43.x2[0];
10510         _dest.x2[1] = var38.x2[0];
10511         var39.x2[0] = _dest.i;
10512       }
10513       {
10514         orc_union16 _dest;
10515         _dest.x2[0] = var43.x2[1];
10516         _dest.x2[1] = var38.x2[1];
10517         var39.x2[1] = _dest.i;
10518       }
10519       /* 7: storel */
10520       ptr0[i] = var39;
10521     }
10522   }
10523
10524 }
10525
10526 void
10527 cogorc_convert_Y444_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
10528     const guint8 * ORC_RESTRICT s1, int s1_stride,
10529     const guint8 * ORC_RESTRICT s2, int s2_stride,
10530     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
10531 {
10532   OrcExecutor _ex, *ex = &_ex;
10533   static volatile int p_inited = 0;
10534   static OrcProgram *p = 0;
10535   void (*func) (OrcExecutor *);
10536
10537   if (!p_inited) {
10538     orc_once_mutex_lock ();
10539     if (!p_inited) {
10540
10541       p = orc_program_new ();
10542       orc_program_set_2d (p);
10543       orc_program_set_name (p, "cogorc_convert_Y444_UYVY");
10544       orc_program_set_backup_function (p, _backup_cogorc_convert_Y444_UYVY);
10545       orc_program_add_destination (p, 4, "d1");
10546       orc_program_add_source (p, 2, "s1");
10547       orc_program_add_source (p, 2, "s2");
10548       orc_program_add_source (p, 2, "s3");
10549       orc_program_add_temporary (p, 2, "t1");
10550       orc_program_add_temporary (p, 4, "t2");
10551       orc_program_add_temporary (p, 2, "t3");
10552       orc_program_add_temporary (p, 2, "t4");
10553
10554       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S3,
10555           ORC_VAR_D1);
10556       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2,
10557           ORC_VAR_D1);
10558       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4,
10559           ORC_VAR_D1);
10560       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1,
10561           ORC_VAR_D1);
10562
10563       orc_program_compile (p);
10564     }
10565     p_inited = TRUE;
10566     orc_once_mutex_unlock ();
10567   }
10568   ex->program = p;
10569
10570   ex->n = n;
10571   ORC_EXECUTOR_M (ex) = m;
10572   ex->arrays[ORC_VAR_D1] = d1;
10573   ex->params[ORC_VAR_D1] = d1_stride;
10574   ex->arrays[ORC_VAR_S1] = (void *) s1;
10575   ex->params[ORC_VAR_S1] = s1_stride;
10576   ex->arrays[ORC_VAR_S2] = (void *) s2;
10577   ex->params[ORC_VAR_S2] = s2_stride;
10578   ex->arrays[ORC_VAR_S3] = (void *) s3;
10579   ex->params[ORC_VAR_S3] = s3_stride;
10580
10581   func = p->code_exec;
10582   func (ex);
10583 }
10584 #endif
10585
10586
10587 /* cogorc_convert_Y444_AYUV */
10588 #ifdef DISABLE_ORC
10589 void
10590 cogorc_convert_Y444_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
10591     const guint8 * ORC_RESTRICT s1, int s1_stride,
10592     const guint8 * ORC_RESTRICT s2, int s2_stride,
10593     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
10594 {
10595   int i;
10596   int j;
10597   orc_union32 *ORC_RESTRICT ptr0;
10598   const orc_int8 *ORC_RESTRICT ptr4;
10599   const orc_int8 *ORC_RESTRICT ptr5;
10600   const orc_int8 *ORC_RESTRICT ptr6;
10601   orc_int8 var34;
10602   orc_int8 var35;
10603   orc_int8 var36;
10604   orc_int8 var37;
10605   orc_union32 var38;
10606   orc_union16 var39;
10607   orc_union16 var40;
10608
10609   for (j = 0; j < m; j++) {
10610     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
10611     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
10612     ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
10613     ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j);
10614
10615     /* 3: loadpb */
10616     var36 = (int) 0x000000ff;   /* 255 or 1.25987e-321f */
10617
10618     for (i = 0; i < n; i++) {
10619       /* 0: loadb */
10620       var34 = ptr5[i];
10621       /* 1: loadb */
10622       var35 = ptr6[i];
10623       /* 2: mergebw */
10624       {
10625         orc_union16 _dest;
10626         _dest.x2[0] = var34;
10627         _dest.x2[1] = var35;
10628         var39.i = _dest.i;
10629       }
10630       /* 4: loadb */
10631       var37 = ptr4[i];
10632       /* 5: mergebw */
10633       {
10634         orc_union16 _dest;
10635         _dest.x2[0] = var36;
10636         _dest.x2[1] = var37;
10637         var40.i = _dest.i;
10638       }
10639       /* 6: mergewl */
10640       {
10641         orc_union32 _dest;
10642         _dest.x2[0] = var40.i;
10643         _dest.x2[1] = var39.i;
10644         var38.i = _dest.i;
10645       }
10646       /* 7: storel */
10647       ptr0[i] = var38;
10648     }
10649   }
10650
10651 }
10652
10653 #else
10654 static void
10655 _backup_cogorc_convert_Y444_AYUV (OrcExecutor * ORC_RESTRICT ex)
10656 {
10657   int i;
10658   int j;
10659   int n = ex->n;
10660   int m = ex->params[ORC_VAR_A1];
10661   orc_union32 *ORC_RESTRICT ptr0;
10662   const orc_int8 *ORC_RESTRICT ptr4;
10663   const orc_int8 *ORC_RESTRICT ptr5;
10664   const orc_int8 *ORC_RESTRICT ptr6;
10665   orc_int8 var34;
10666   orc_int8 var35;
10667   orc_int8 var36;
10668   orc_int8 var37;
10669   orc_union32 var38;
10670   orc_union16 var39;
10671   orc_union16 var40;
10672
10673   for (j = 0; j < m; j++) {
10674     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
10675     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
10676     ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
10677     ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j);
10678
10679     /* 3: loadpb */
10680     var36 = (int) 0x000000ff;   /* 255 or 1.25987e-321f */
10681
10682     for (i = 0; i < n; i++) {
10683       /* 0: loadb */
10684       var34 = ptr5[i];
10685       /* 1: loadb */
10686       var35 = ptr6[i];
10687       /* 2: mergebw */
10688       {
10689         orc_union16 _dest;
10690         _dest.x2[0] = var34;
10691         _dest.x2[1] = var35;
10692         var39.i = _dest.i;
10693       }
10694       /* 4: loadb */
10695       var37 = ptr4[i];
10696       /* 5: mergebw */
10697       {
10698         orc_union16 _dest;
10699         _dest.x2[0] = var36;
10700         _dest.x2[1] = var37;
10701         var40.i = _dest.i;
10702       }
10703       /* 6: mergewl */
10704       {
10705         orc_union32 _dest;
10706         _dest.x2[0] = var40.i;
10707         _dest.x2[1] = var39.i;
10708         var38.i = _dest.i;
10709       }
10710       /* 7: storel */
10711       ptr0[i] = var38;
10712     }
10713   }
10714
10715 }
10716
10717 void
10718 cogorc_convert_Y444_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
10719     const guint8 * ORC_RESTRICT s1, int s1_stride,
10720     const guint8 * ORC_RESTRICT s2, int s2_stride,
10721     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
10722 {
10723   OrcExecutor _ex, *ex = &_ex;
10724   static volatile int p_inited = 0;
10725   static OrcProgram *p = 0;
10726   void (*func) (OrcExecutor *);
10727
10728   if (!p_inited) {
10729     orc_once_mutex_lock ();
10730     if (!p_inited) {
10731
10732       p = orc_program_new ();
10733       orc_program_set_2d (p);
10734       orc_program_set_name (p, "cogorc_convert_Y444_AYUV");
10735       orc_program_set_backup_function (p, _backup_cogorc_convert_Y444_AYUV);
10736       orc_program_add_destination (p, 4, "d1");
10737       orc_program_add_source (p, 1, "s1");
10738       orc_program_add_source (p, 1, "s2");
10739       orc_program_add_source (p, 1, "s3");
10740       orc_program_add_constant (p, 1, 0x000000ff, "c1");
10741       orc_program_add_temporary (p, 2, "t1");
10742       orc_program_add_temporary (p, 2, "t2");
10743
10744       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3,
10745           ORC_VAR_D1);
10746       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1,
10747           ORC_VAR_D1);
10748       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
10749           ORC_VAR_D1);
10750
10751       orc_program_compile (p);
10752     }
10753     p_inited = TRUE;
10754     orc_once_mutex_unlock ();
10755   }
10756   ex->program = p;
10757
10758   ex->n = n;
10759   ORC_EXECUTOR_M (ex) = m;
10760   ex->arrays[ORC_VAR_D1] = d1;
10761   ex->params[ORC_VAR_D1] = d1_stride;
10762   ex->arrays[ORC_VAR_S1] = (void *) s1;
10763   ex->params[ORC_VAR_S1] = s1_stride;
10764   ex->arrays[ORC_VAR_S2] = (void *) s2;
10765   ex->params[ORC_VAR_S2] = s2_stride;
10766   ex->arrays[ORC_VAR_S3] = (void *) s3;
10767   ex->params[ORC_VAR_S3] = s3_stride;
10768
10769   func = p->code_exec;
10770   func (ex);
10771 }
10772 #endif
10773
10774
10775 /* cogorc_convert_AYUV_ARGB */
10776 #ifdef DISABLE_ORC
10777 void
10778 cogorc_convert_AYUV_ARGB (guint8 * ORC_RESTRICT d1, int d1_stride,
10779     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
10780 {
10781   int i;
10782   int j;
10783   orc_union32 *ORC_RESTRICT ptr0;
10784   const orc_union32 *ORC_RESTRICT ptr4;
10785   orc_union32 var48;
10786   orc_union32 var49;
10787   orc_union16 var50;
10788   orc_union16 var51;
10789   orc_union16 var52;
10790   orc_union16 var53;
10791   orc_union16 var54;
10792   orc_union32 var55;
10793   orc_union32 var56;
10794   orc_union32 var57;
10795   orc_union16 var58;
10796   orc_union16 var59;
10797   orc_int8 var60;
10798   orc_int8 var61;
10799   orc_int8 var62;
10800   orc_int8 var63;
10801   orc_union16 var64;
10802   orc_union16 var65;
10803   orc_union16 var66;
10804   orc_union16 var67;
10805   orc_union16 var68;
10806   orc_union16 var69;
10807   orc_union16 var70;
10808   orc_union16 var71;
10809   orc_union16 var72;
10810   orc_union16 var73;
10811   orc_union16 var74;
10812   orc_union16 var75;
10813   orc_union16 var76;
10814   orc_union16 var77;
10815   orc_union16 var78;
10816   orc_union16 var79;
10817   orc_union16 var80;
10818   orc_union16 var81;
10819   orc_union16 var82;
10820   orc_union16 var83;
10821   orc_union16 var84;
10822   orc_union16 var85;
10823   orc_union16 var86;
10824   orc_int8 var87;
10825   orc_int8 var88;
10826   orc_int8 var89;
10827   orc_union16 var90;
10828   orc_union16 var91;
10829   orc_union32 var92;
10830
10831   for (j = 0; j < m; j++) {
10832     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
10833     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
10834
10835     /* 1: loadpb */
10836     var49.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
10837     var49.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
10838     var49.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
10839     var49.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
10840     /* 9: loadpw */
10841     var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */
10842     /* 14: loadpw */
10843     var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */
10844     /* 21: loadpw */
10845     var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */
10846     /* 25: loadpw */
10847     var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */
10848     /* 29: loadpw */
10849     var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */
10850     /* 40: loadpb */
10851     var55.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
10852     var55.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
10853     var55.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
10854     var55.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
10855
10856     for (i = 0; i < n; i++) {
10857       /* 0: loadl */
10858       var48 = ptr4[i];
10859       /* 2: subb */
10860       var57.x4[0] = var48.x4[0] - var49.x4[0];
10861       var57.x4[1] = var48.x4[1] - var49.x4[1];
10862       var57.x4[2] = var48.x4[2] - var49.x4[2];
10863       var57.x4[3] = var48.x4[3] - var49.x4[3];
10864       /* 3: splitlw */
10865       {
10866         orc_union32 _src;
10867         _src.i = var57.i;
10868         var58.i = _src.x2[1];
10869         var59.i = _src.x2[0];
10870       }
10871       /* 4: splitwb */
10872       {
10873         orc_union16 _src;
10874         _src.i = var59.i;
10875         var60 = _src.x2[1];
10876         var61 = _src.x2[0];
10877       }
10878       /* 5: splitwb */
10879       {
10880         orc_union16 _src;
10881         _src.i = var58.i;
10882         var62 = _src.x2[1];
10883         var63 = _src.x2[0];
10884       }
10885       /* 6: convsbw */
10886       var64.i = var60;
10887       /* 7: convsbw */
10888       var65.i = var63;
10889       /* 8: convsbw */
10890       var66.i = var62;
10891       /* 10: mullw */
10892       var67.i = (var64.i * var50.i) & 0xffff;
10893       /* 11: shrsw */
10894       var68.i = var67.i >> 8;
10895       /* 12: addssw */
10896       var69.i = ORC_CLAMP_SW (var64.i + var68.i);
10897       /* 13: addssw */
10898       var70.i = ORC_CLAMP_SW (var69.i + var66.i);
10899       /* 15: mullw */
10900       var71.i = (var66.i * var51.i) & 0xffff;
10901       /* 16: shrsw */
10902       var72.i = var71.i >> 8;
10903       /* 17: subssw */
10904       var73.i = ORC_CLAMP_SW (var70.i - var72.i);
10905       /* 18: addssw */
10906       var74.i = ORC_CLAMP_SW (var73.i + var66.i);
10907       /* 19: addssw */
10908       var75.i = ORC_CLAMP_SW (var69.i + var65.i);
10909       /* 20: addssw */
10910       var76.i = ORC_CLAMP_SW (var75.i + var65.i);
10911       /* 22: mullw */
10912       var77.i = (var65.i * var52.i) & 0xffff;
10913       /* 23: shrsw */
10914       var78.i = var77.i >> 8;
10915       /* 24: addssw */
10916       var79.i = ORC_CLAMP_SW (var76.i + var78.i);
10917       /* 26: mullw */
10918       var80.i = (var65.i * var53.i) & 0xffff;
10919       /* 27: shrsw */
10920       var81.i = var80.i >> 8;
10921       /* 28: subssw */
10922       var82.i = ORC_CLAMP_SW (var69.i - var81.i);
10923       /* 30: mullw */
10924       var83.i = (var66.i * var54.i) & 0xffff;
10925       /* 31: shrsw */
10926       var84.i = var83.i >> 8;
10927       /* 32: subssw */
10928       var85.i = ORC_CLAMP_SW (var82.i - var84.i);
10929       /* 33: subssw */
10930       var86.i = ORC_CLAMP_SW (var85.i - var84.i);
10931       /* 34: convssswb */
10932       var87 = ORC_CLAMP_SB (var74.i);
10933       /* 35: convssswb */
10934       var88 = ORC_CLAMP_SB (var86.i);
10935       /* 36: convssswb */
10936       var89 = ORC_CLAMP_SB (var79.i);
10937       /* 37: mergebw */
10938       {
10939         orc_union16 _dest;
10940         _dest.x2[0] = var61;
10941         _dest.x2[1] = var87;
10942         var90.i = _dest.i;
10943       }
10944       /* 38: mergebw */
10945       {
10946         orc_union16 _dest;
10947         _dest.x2[0] = var88;
10948         _dest.x2[1] = var89;
10949         var91.i = _dest.i;
10950       }
10951       /* 39: mergewl */
10952       {
10953         orc_union32 _dest;
10954         _dest.x2[0] = var90.i;
10955         _dest.x2[1] = var91.i;
10956         var92.i = _dest.i;
10957       }
10958       /* 41: addb */
10959       var56.x4[0] = var92.x4[0] + var55.x4[0];
10960       var56.x4[1] = var92.x4[1] + var55.x4[1];
10961       var56.x4[2] = var92.x4[2] + var55.x4[2];
10962       var56.x4[3] = var92.x4[3] + var55.x4[3];
10963       /* 42: storel */
10964       ptr0[i] = var56;
10965     }
10966   }
10967
10968 }
10969
10970 #else
10971 static void
10972 _backup_cogorc_convert_AYUV_ARGB (OrcExecutor * ORC_RESTRICT ex)
10973 {
10974   int i;
10975   int j;
10976   int n = ex->n;
10977   int m = ex->params[ORC_VAR_A1];
10978   orc_union32 *ORC_RESTRICT ptr0;
10979   const orc_union32 *ORC_RESTRICT ptr4;
10980   orc_union32 var48;
10981   orc_union32 var49;
10982   orc_union16 var50;
10983   orc_union16 var51;
10984   orc_union16 var52;
10985   orc_union16 var53;
10986   orc_union16 var54;
10987   orc_union32 var55;
10988   orc_union32 var56;
10989   orc_union32 var57;
10990   orc_union16 var58;
10991   orc_union16 var59;
10992   orc_int8 var60;
10993   orc_int8 var61;
10994   orc_int8 var62;
10995   orc_int8 var63;
10996   orc_union16 var64;
10997   orc_union16 var65;
10998   orc_union16 var66;
10999   orc_union16 var67;
11000   orc_union16 var68;
11001   orc_union16 var69;
11002   orc_union16 var70;
11003   orc_union16 var71;
11004   orc_union16 var72;
11005   orc_union16 var73;
11006   orc_union16 var74;
11007   orc_union16 var75;
11008   orc_union16 var76;
11009   orc_union16 var77;
11010   orc_union16 var78;
11011   orc_union16 var79;
11012   orc_union16 var80;
11013   orc_union16 var81;
11014   orc_union16 var82;
11015   orc_union16 var83;
11016   orc_union16 var84;
11017   orc_union16 var85;
11018   orc_union16 var86;
11019   orc_int8 var87;
11020   orc_int8 var88;
11021   orc_int8 var89;
11022   orc_union16 var90;
11023   orc_union16 var91;
11024   orc_union32 var92;
11025
11026   for (j = 0; j < m; j++) {
11027     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
11028     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
11029
11030     /* 1: loadpb */
11031     var49.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
11032     var49.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
11033     var49.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
11034     var49.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
11035     /* 9: loadpw */
11036     var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */
11037     /* 14: loadpw */
11038     var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */
11039     /* 21: loadpw */
11040     var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */
11041     /* 25: loadpw */
11042     var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */
11043     /* 29: loadpw */
11044     var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */
11045     /* 40: loadpb */
11046     var55.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
11047     var55.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
11048     var55.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
11049     var55.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
11050
11051     for (i = 0; i < n; i++) {
11052       /* 0: loadl */
11053       var48 = ptr4[i];
11054       /* 2: subb */
11055       var57.x4[0] = var48.x4[0] - var49.x4[0];
11056       var57.x4[1] = var48.x4[1] - var49.x4[1];
11057       var57.x4[2] = var48.x4[2] - var49.x4[2];
11058       var57.x4[3] = var48.x4[3] - var49.x4[3];
11059       /* 3: splitlw */
11060       {
11061         orc_union32 _src;
11062         _src.i = var57.i;
11063         var58.i = _src.x2[1];
11064         var59.i = _src.x2[0];
11065       }
11066       /* 4: splitwb */
11067       {
11068         orc_union16 _src;
11069         _src.i = var59.i;
11070         var60 = _src.x2[1];
11071         var61 = _src.x2[0];
11072       }
11073       /* 5: splitwb */
11074       {
11075         orc_union16 _src;
11076         _src.i = var58.i;
11077         var62 = _src.x2[1];
11078         var63 = _src.x2[0];
11079       }
11080       /* 6: convsbw */
11081       var64.i = var60;
11082       /* 7: convsbw */
11083       var65.i = var63;
11084       /* 8: convsbw */
11085       var66.i = var62;
11086       /* 10: mullw */
11087       var67.i = (var64.i * var50.i) & 0xffff;
11088       /* 11: shrsw */
11089       var68.i = var67.i >> 8;
11090       /* 12: addssw */
11091       var69.i = ORC_CLAMP_SW (var64.i + var68.i);
11092       /* 13: addssw */
11093       var70.i = ORC_CLAMP_SW (var69.i + var66.i);
11094       /* 15: mullw */
11095       var71.i = (var66.i * var51.i) & 0xffff;
11096       /* 16: shrsw */
11097       var72.i = var71.i >> 8;
11098       /* 17: subssw */
11099       var73.i = ORC_CLAMP_SW (var70.i - var72.i);
11100       /* 18: addssw */
11101       var74.i = ORC_CLAMP_SW (var73.i + var66.i);
11102       /* 19: addssw */
11103       var75.i = ORC_CLAMP_SW (var69.i + var65.i);
11104       /* 20: addssw */
11105       var76.i = ORC_CLAMP_SW (var75.i + var65.i);
11106       /* 22: mullw */
11107       var77.i = (var65.i * var52.i) & 0xffff;
11108       /* 23: shrsw */
11109       var78.i = var77.i >> 8;
11110       /* 24: addssw */
11111       var79.i = ORC_CLAMP_SW (var76.i + var78.i);
11112       /* 26: mullw */
11113       var80.i = (var65.i * var53.i) & 0xffff;
11114       /* 27: shrsw */
11115       var81.i = var80.i >> 8;
11116       /* 28: subssw */
11117       var82.i = ORC_CLAMP_SW (var69.i - var81.i);
11118       /* 30: mullw */
11119       var83.i = (var66.i * var54.i) & 0xffff;
11120       /* 31: shrsw */
11121       var84.i = var83.i >> 8;
11122       /* 32: subssw */
11123       var85.i = ORC_CLAMP_SW (var82.i - var84.i);
11124       /* 33: subssw */
11125       var86.i = ORC_CLAMP_SW (var85.i - var84.i);
11126       /* 34: convssswb */
11127       var87 = ORC_CLAMP_SB (var74.i);
11128       /* 35: convssswb */
11129       var88 = ORC_CLAMP_SB (var86.i);
11130       /* 36: convssswb */
11131       var89 = ORC_CLAMP_SB (var79.i);
11132       /* 37: mergebw */
11133       {
11134         orc_union16 _dest;
11135         _dest.x2[0] = var61;
11136         _dest.x2[1] = var87;
11137         var90.i = _dest.i;
11138       }
11139       /* 38: mergebw */
11140       {
11141         orc_union16 _dest;
11142         _dest.x2[0] = var88;
11143         _dest.x2[1] = var89;
11144         var91.i = _dest.i;
11145       }
11146       /* 39: mergewl */
11147       {
11148         orc_union32 _dest;
11149         _dest.x2[0] = var90.i;
11150         _dest.x2[1] = var91.i;
11151         var92.i = _dest.i;
11152       }
11153       /* 41: addb */
11154       var56.x4[0] = var92.x4[0] + var55.x4[0];
11155       var56.x4[1] = var92.x4[1] + var55.x4[1];
11156       var56.x4[2] = var92.x4[2] + var55.x4[2];
11157       var56.x4[3] = var92.x4[3] + var55.x4[3];
11158       /* 42: storel */
11159       ptr0[i] = var56;
11160     }
11161   }
11162
11163 }
11164
11165 void
11166 cogorc_convert_AYUV_ARGB (guint8 * ORC_RESTRICT d1, int d1_stride,
11167     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
11168 {
11169   OrcExecutor _ex, *ex = &_ex;
11170   static volatile int p_inited = 0;
11171   static OrcProgram *p = 0;
11172   void (*func) (OrcExecutor *);
11173
11174   if (!p_inited) {
11175     orc_once_mutex_lock ();
11176     if (!p_inited) {
11177
11178       p = orc_program_new ();
11179       orc_program_set_2d (p);
11180       orc_program_set_name (p, "cogorc_convert_AYUV_ARGB");
11181       orc_program_set_backup_function (p, _backup_cogorc_convert_AYUV_ARGB);
11182       orc_program_add_destination (p, 4, "d1");
11183       orc_program_add_source (p, 4, "s1");
11184       orc_program_add_constant (p, 1, 0x00000008, "c1");
11185       orc_program_add_constant (p, 4, 0x00000080, "c2");
11186       orc_program_add_constant (p, 4, 0x0000002a, "c3");
11187       orc_program_add_constant (p, 4, 0x00000067, "c4");
11188       orc_program_add_constant (p, 4, 0x00000004, "c5");
11189       orc_program_add_constant (p, 4, 0x00000064, "c6");
11190       orc_program_add_constant (p, 4, 0x00000068, "c7");
11191       orc_program_add_temporary (p, 2, "t1");
11192       orc_program_add_temporary (p, 2, "t2");
11193       orc_program_add_temporary (p, 1, "t3");
11194       orc_program_add_temporary (p, 1, "t4");
11195       orc_program_add_temporary (p, 1, "t5");
11196       orc_program_add_temporary (p, 1, "t6");
11197       orc_program_add_temporary (p, 2, "t7");
11198       orc_program_add_temporary (p, 2, "t8");
11199       orc_program_add_temporary (p, 2, "t9");
11200       orc_program_add_temporary (p, 2, "t10");
11201       orc_program_add_temporary (p, 2, "t11");
11202       orc_program_add_temporary (p, 2, "t12");
11203       orc_program_add_temporary (p, 1, "t13");
11204       orc_program_add_temporary (p, 1, "t14");
11205       orc_program_add_temporary (p, 1, "t15");
11206       orc_program_add_temporary (p, 4, "t16");
11207
11208       orc_program_append_2 (p, "subb", 2, 47, ORC_VAR_S1, ORC_VAR_C2,
11209           ORC_VAR_D1);
11210       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T1, ORC_VAR_T2, 47,
11211           ORC_VAR_D1);
11212       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T2,
11213           ORC_VAR_D1);
11214       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_T1,
11215           ORC_VAR_D1);
11216       orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1,
11217           ORC_VAR_D1);
11218       orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_D1,
11219           ORC_VAR_D1);
11220       orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_D1,
11221           ORC_VAR_D1);
11222       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_C3,
11223           ORC_VAR_D1);
11224       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
11225           ORC_VAR_D1);
11226       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T1,
11227           ORC_VAR_D1);
11228       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T7, ORC_VAR_T9,
11229           ORC_VAR_D1);
11230       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_C4,
11231           ORC_VAR_D1);
11232       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
11233           ORC_VAR_D1);
11234       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T10, ORC_VAR_T10,
11235           ORC_VAR_T1, ORC_VAR_D1);
11236       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T10,
11237           ORC_VAR_T9, ORC_VAR_D1);
11238       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T7, ORC_VAR_T8,
11239           ORC_VAR_D1);
11240       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T12,
11241           ORC_VAR_T8, ORC_VAR_D1);
11242       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_C5,
11243           ORC_VAR_D1);
11244       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
11245           ORC_VAR_D1);
11246       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T12,
11247           ORC_VAR_T1, ORC_VAR_D1);
11248       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_C6,
11249           ORC_VAR_D1);
11250       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
11251           ORC_VAR_D1);
11252       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T7, ORC_VAR_T1,
11253           ORC_VAR_D1);
11254       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_C7,
11255           ORC_VAR_D1);
11256       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
11257           ORC_VAR_D1);
11258       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T11,
11259           ORC_VAR_T1, ORC_VAR_D1);
11260       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T11,
11261           ORC_VAR_T1, ORC_VAR_D1);
11262       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T13, ORC_VAR_T10,
11263           ORC_VAR_D1, ORC_VAR_D1);
11264       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T14, ORC_VAR_T11,
11265           ORC_VAR_D1, ORC_VAR_D1);
11266       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T15, ORC_VAR_T12,
11267           ORC_VAR_D1, ORC_VAR_D1);
11268       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T3,
11269           ORC_VAR_T13, ORC_VAR_D1);
11270       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_T14,
11271           ORC_VAR_T15, ORC_VAR_D1);
11272       orc_program_append_2 (p, "mergewl", 0, 47, ORC_VAR_T1, ORC_VAR_T2,
11273           ORC_VAR_D1);
11274       orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, 47, ORC_VAR_C2,
11275           ORC_VAR_D1);
11276
11277       orc_program_compile (p);
11278     }
11279     p_inited = TRUE;
11280     orc_once_mutex_unlock ();
11281   }
11282   ex->program = p;
11283
11284   ex->n = n;
11285   ORC_EXECUTOR_M (ex) = m;
11286   ex->arrays[ORC_VAR_D1] = d1;
11287   ex->params[ORC_VAR_D1] = d1_stride;
11288   ex->arrays[ORC_VAR_S1] = (void *) s1;
11289   ex->params[ORC_VAR_S1] = s1_stride;
11290
11291   func = p->code_exec;
11292   func (ex);
11293 }
11294 #endif
11295
11296
11297 /* cogorc_convert_AYUV_BGRA */
11298 #ifdef DISABLE_ORC
11299 void
11300 cogorc_convert_AYUV_BGRA (guint8 * ORC_RESTRICT d1, int d1_stride,
11301     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
11302 {
11303   int i;
11304   int j;
11305   orc_union32 *ORC_RESTRICT ptr0;
11306   const orc_union32 *ORC_RESTRICT ptr4;
11307   orc_union32 var48;
11308   orc_union32 var49;
11309   orc_union16 var50;
11310   orc_union16 var51;
11311   orc_union16 var52;
11312   orc_union16 var53;
11313   orc_union16 var54;
11314   orc_union32 var55;
11315   orc_union32 var56;
11316   orc_union32 var57;
11317   orc_union16 var58;
11318   orc_union16 var59;
11319   orc_int8 var60;
11320   orc_int8 var61;
11321   orc_int8 var62;
11322   orc_int8 var63;
11323   orc_union16 var64;
11324   orc_union16 var65;
11325   orc_union16 var66;
11326   orc_union16 var67;
11327   orc_union16 var68;
11328   orc_union16 var69;
11329   orc_union16 var70;
11330   orc_union16 var71;
11331   orc_union16 var72;
11332   orc_union16 var73;
11333   orc_union16 var74;
11334   orc_union16 var75;
11335   orc_union16 var76;
11336   orc_union16 var77;
11337   orc_union16 var78;
11338   orc_union16 var79;
11339   orc_union16 var80;
11340   orc_union16 var81;
11341   orc_union16 var82;
11342   orc_union16 var83;
11343   orc_union16 var84;
11344   orc_union16 var85;
11345   orc_union16 var86;
11346   orc_int8 var87;
11347   orc_int8 var88;
11348   orc_int8 var89;
11349   orc_union16 var90;
11350   orc_union16 var91;
11351   orc_union32 var92;
11352
11353   for (j = 0; j < m; j++) {
11354     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
11355     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
11356
11357     /* 1: loadpb */
11358     var49.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
11359     var49.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
11360     var49.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
11361     var49.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
11362     /* 9: loadpw */
11363     var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */
11364     /* 14: loadpw */
11365     var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */
11366     /* 21: loadpw */
11367     var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */
11368     /* 25: loadpw */
11369     var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */
11370     /* 29: loadpw */
11371     var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */
11372     /* 40: loadpb */
11373     var55.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
11374     var55.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
11375     var55.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
11376     var55.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
11377
11378     for (i = 0; i < n; i++) {
11379       /* 0: loadl */
11380       var48 = ptr4[i];
11381       /* 2: subb */
11382       var57.x4[0] = var48.x4[0] - var49.x4[0];
11383       var57.x4[1] = var48.x4[1] - var49.x4[1];
11384       var57.x4[2] = var48.x4[2] - var49.x4[2];
11385       var57.x4[3] = var48.x4[3] - var49.x4[3];
11386       /* 3: splitlw */
11387       {
11388         orc_union32 _src;
11389         _src.i = var57.i;
11390         var58.i = _src.x2[1];
11391         var59.i = _src.x2[0];
11392       }
11393       /* 4: splitwb */
11394       {
11395         orc_union16 _src;
11396         _src.i = var59.i;
11397         var60 = _src.x2[1];
11398         var61 = _src.x2[0];
11399       }
11400       /* 5: splitwb */
11401       {
11402         orc_union16 _src;
11403         _src.i = var58.i;
11404         var62 = _src.x2[1];
11405         var63 = _src.x2[0];
11406       }
11407       /* 6: convsbw */
11408       var64.i = var60;
11409       /* 7: convsbw */
11410       var65.i = var63;
11411       /* 8: convsbw */
11412       var66.i = var62;
11413       /* 10: mullw */
11414       var67.i = (var64.i * var50.i) & 0xffff;
11415       /* 11: shrsw */
11416       var68.i = var67.i >> 8;
11417       /* 12: addssw */
11418       var69.i = ORC_CLAMP_SW (var64.i + var68.i);
11419       /* 13: addssw */
11420       var70.i = ORC_CLAMP_SW (var69.i + var66.i);
11421       /* 15: mullw */
11422       var71.i = (var66.i * var51.i) & 0xffff;
11423       /* 16: shrsw */
11424       var72.i = var71.i >> 8;
11425       /* 17: subssw */
11426       var73.i = ORC_CLAMP_SW (var70.i - var72.i);
11427       /* 18: addssw */
11428       var74.i = ORC_CLAMP_SW (var73.i + var66.i);
11429       /* 19: addssw */
11430       var75.i = ORC_CLAMP_SW (var69.i + var65.i);
11431       /* 20: addssw */
11432       var76.i = ORC_CLAMP_SW (var75.i + var65.i);
11433       /* 22: mullw */
11434       var77.i = (var65.i * var52.i) & 0xffff;
11435       /* 23: shrsw */
11436       var78.i = var77.i >> 8;
11437       /* 24: addssw */
11438       var79.i = ORC_CLAMP_SW (var76.i + var78.i);
11439       /* 26: mullw */
11440       var80.i = (var65.i * var53.i) & 0xffff;
11441       /* 27: shrsw */
11442       var81.i = var80.i >> 8;
11443       /* 28: subssw */
11444       var82.i = ORC_CLAMP_SW (var69.i - var81.i);
11445       /* 30: mullw */
11446       var83.i = (var66.i * var54.i) & 0xffff;
11447       /* 31: shrsw */
11448       var84.i = var83.i >> 8;
11449       /* 32: subssw */
11450       var85.i = ORC_CLAMP_SW (var82.i - var84.i);
11451       /* 33: subssw */
11452       var86.i = ORC_CLAMP_SW (var85.i - var84.i);
11453       /* 34: convssswb */
11454       var87 = ORC_CLAMP_SB (var74.i);
11455       /* 35: convssswb */
11456       var88 = ORC_CLAMP_SB (var86.i);
11457       /* 36: convssswb */
11458       var89 = ORC_CLAMP_SB (var79.i);
11459       /* 37: mergebw */
11460       {
11461         orc_union16 _dest;
11462         _dest.x2[0] = var89;
11463         _dest.x2[1] = var88;
11464         var90.i = _dest.i;
11465       }
11466       /* 38: mergebw */
11467       {
11468         orc_union16 _dest;
11469         _dest.x2[0] = var87;
11470         _dest.x2[1] = var61;
11471         var91.i = _dest.i;
11472       }
11473       /* 39: mergewl */
11474       {
11475         orc_union32 _dest;
11476         _dest.x2[0] = var90.i;
11477         _dest.x2[1] = var91.i;
11478         var92.i = _dest.i;
11479       }
11480       /* 41: addb */
11481       var56.x4[0] = var92.x4[0] + var55.x4[0];
11482       var56.x4[1] = var92.x4[1] + var55.x4[1];
11483       var56.x4[2] = var92.x4[2] + var55.x4[2];
11484       var56.x4[3] = var92.x4[3] + var55.x4[3];
11485       /* 42: storel */
11486       ptr0[i] = var56;
11487     }
11488   }
11489
11490 }
11491
11492 #else
11493 static void
11494 _backup_cogorc_convert_AYUV_BGRA (OrcExecutor * ORC_RESTRICT ex)
11495 {
11496   int i;
11497   int j;
11498   int n = ex->n;
11499   int m = ex->params[ORC_VAR_A1];
11500   orc_union32 *ORC_RESTRICT ptr0;
11501   const orc_union32 *ORC_RESTRICT ptr4;
11502   orc_union32 var48;
11503   orc_union32 var49;
11504   orc_union16 var50;
11505   orc_union16 var51;
11506   orc_union16 var52;
11507   orc_union16 var53;
11508   orc_union16 var54;
11509   orc_union32 var55;
11510   orc_union32 var56;
11511   orc_union32 var57;
11512   orc_union16 var58;
11513   orc_union16 var59;
11514   orc_int8 var60;
11515   orc_int8 var61;
11516   orc_int8 var62;
11517   orc_int8 var63;
11518   orc_union16 var64;
11519   orc_union16 var65;
11520   orc_union16 var66;
11521   orc_union16 var67;
11522   orc_union16 var68;
11523   orc_union16 var69;
11524   orc_union16 var70;
11525   orc_union16 var71;
11526   orc_union16 var72;
11527   orc_union16 var73;
11528   orc_union16 var74;
11529   orc_union16 var75;
11530   orc_union16 var76;
11531   orc_union16 var77;
11532   orc_union16 var78;
11533   orc_union16 var79;
11534   orc_union16 var80;
11535   orc_union16 var81;
11536   orc_union16 var82;
11537   orc_union16 var83;
11538   orc_union16 var84;
11539   orc_union16 var85;
11540   orc_union16 var86;
11541   orc_int8 var87;
11542   orc_int8 var88;
11543   orc_int8 var89;
11544   orc_union16 var90;
11545   orc_union16 var91;
11546   orc_union32 var92;
11547
11548   for (j = 0; j < m; j++) {
11549     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
11550     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
11551
11552     /* 1: loadpb */
11553     var49.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
11554     var49.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
11555     var49.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
11556     var49.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
11557     /* 9: loadpw */
11558     var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */
11559     /* 14: loadpw */
11560     var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */
11561     /* 21: loadpw */
11562     var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */
11563     /* 25: loadpw */
11564     var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */
11565     /* 29: loadpw */
11566     var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */
11567     /* 40: loadpb */
11568     var55.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
11569     var55.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
11570     var55.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
11571     var55.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
11572
11573     for (i = 0; i < n; i++) {
11574       /* 0: loadl */
11575       var48 = ptr4[i];
11576       /* 2: subb */
11577       var57.x4[0] = var48.x4[0] - var49.x4[0];
11578       var57.x4[1] = var48.x4[1] - var49.x4[1];
11579       var57.x4[2] = var48.x4[2] - var49.x4[2];
11580       var57.x4[3] = var48.x4[3] - var49.x4[3];
11581       /* 3: splitlw */
11582       {
11583         orc_union32 _src;
11584         _src.i = var57.i;
11585         var58.i = _src.x2[1];
11586         var59.i = _src.x2[0];
11587       }
11588       /* 4: splitwb */
11589       {
11590         orc_union16 _src;
11591         _src.i = var59.i;
11592         var60 = _src.x2[1];
11593         var61 = _src.x2[0];
11594       }
11595       /* 5: splitwb */
11596       {
11597         orc_union16 _src;
11598         _src.i = var58.i;
11599         var62 = _src.x2[1];
11600         var63 = _src.x2[0];
11601       }
11602       /* 6: convsbw */
11603       var64.i = var60;
11604       /* 7: convsbw */
11605       var65.i = var63;
11606       /* 8: convsbw */
11607       var66.i = var62;
11608       /* 10: mullw */
11609       var67.i = (var64.i * var50.i) & 0xffff;
11610       /* 11: shrsw */
11611       var68.i = var67.i >> 8;
11612       /* 12: addssw */
11613       var69.i = ORC_CLAMP_SW (var64.i + var68.i);
11614       /* 13: addssw */
11615       var70.i = ORC_CLAMP_SW (var69.i + var66.i);
11616       /* 15: mullw */
11617       var71.i = (var66.i * var51.i) & 0xffff;
11618       /* 16: shrsw */
11619       var72.i = var71.i >> 8;
11620       /* 17: subssw */
11621       var73.i = ORC_CLAMP_SW (var70.i - var72.i);
11622       /* 18: addssw */
11623       var74.i = ORC_CLAMP_SW (var73.i + var66.i);
11624       /* 19: addssw */
11625       var75.i = ORC_CLAMP_SW (var69.i + var65.i);
11626       /* 20: addssw */
11627       var76.i = ORC_CLAMP_SW (var75.i + var65.i);
11628       /* 22: mullw */
11629       var77.i = (var65.i * var52.i) & 0xffff;
11630       /* 23: shrsw */
11631       var78.i = var77.i >> 8;
11632       /* 24: addssw */
11633       var79.i = ORC_CLAMP_SW (var76.i + var78.i);
11634       /* 26: mullw */
11635       var80.i = (var65.i * var53.i) & 0xffff;
11636       /* 27: shrsw */
11637       var81.i = var80.i >> 8;
11638       /* 28: subssw */
11639       var82.i = ORC_CLAMP_SW (var69.i - var81.i);
11640       /* 30: mullw */
11641       var83.i = (var66.i * var54.i) & 0xffff;
11642       /* 31: shrsw */
11643       var84.i = var83.i >> 8;
11644       /* 32: subssw */
11645       var85.i = ORC_CLAMP_SW (var82.i - var84.i);
11646       /* 33: subssw */
11647       var86.i = ORC_CLAMP_SW (var85.i - var84.i);
11648       /* 34: convssswb */
11649       var87 = ORC_CLAMP_SB (var74.i);
11650       /* 35: convssswb */
11651       var88 = ORC_CLAMP_SB (var86.i);
11652       /* 36: convssswb */
11653       var89 = ORC_CLAMP_SB (var79.i);
11654       /* 37: mergebw */
11655       {
11656         orc_union16 _dest;
11657         _dest.x2[0] = var89;
11658         _dest.x2[1] = var88;
11659         var90.i = _dest.i;
11660       }
11661       /* 38: mergebw */
11662       {
11663         orc_union16 _dest;
11664         _dest.x2[0] = var87;
11665         _dest.x2[1] = var61;
11666         var91.i = _dest.i;
11667       }
11668       /* 39: mergewl */
11669       {
11670         orc_union32 _dest;
11671         _dest.x2[0] = var90.i;
11672         _dest.x2[1] = var91.i;
11673         var92.i = _dest.i;
11674       }
11675       /* 41: addb */
11676       var56.x4[0] = var92.x4[0] + var55.x4[0];
11677       var56.x4[1] = var92.x4[1] + var55.x4[1];
11678       var56.x4[2] = var92.x4[2] + var55.x4[2];
11679       var56.x4[3] = var92.x4[3] + var55.x4[3];
11680       /* 42: storel */
11681       ptr0[i] = var56;
11682     }
11683   }
11684
11685 }
11686
11687 void
11688 cogorc_convert_AYUV_BGRA (guint8 * ORC_RESTRICT d1, int d1_stride,
11689     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
11690 {
11691   OrcExecutor _ex, *ex = &_ex;
11692   static volatile int p_inited = 0;
11693   static OrcProgram *p = 0;
11694   void (*func) (OrcExecutor *);
11695
11696   if (!p_inited) {
11697     orc_once_mutex_lock ();
11698     if (!p_inited) {
11699
11700       p = orc_program_new ();
11701       orc_program_set_2d (p);
11702       orc_program_set_name (p, "cogorc_convert_AYUV_BGRA");
11703       orc_program_set_backup_function (p, _backup_cogorc_convert_AYUV_BGRA);
11704       orc_program_add_destination (p, 4, "d1");
11705       orc_program_add_source (p, 4, "s1");
11706       orc_program_add_constant (p, 1, 0x00000008, "c1");
11707       orc_program_add_constant (p, 4, 0x00000080, "c2");
11708       orc_program_add_constant (p, 4, 0x0000002a, "c3");
11709       orc_program_add_constant (p, 4, 0x00000067, "c4");
11710       orc_program_add_constant (p, 4, 0x00000004, "c5");
11711       orc_program_add_constant (p, 4, 0x00000064, "c6");
11712       orc_program_add_constant (p, 4, 0x00000068, "c7");
11713       orc_program_add_temporary (p, 2, "t1");
11714       orc_program_add_temporary (p, 2, "t2");
11715       orc_program_add_temporary (p, 1, "t3");
11716       orc_program_add_temporary (p, 1, "t4");
11717       orc_program_add_temporary (p, 1, "t5");
11718       orc_program_add_temporary (p, 1, "t6");
11719       orc_program_add_temporary (p, 2, "t7");
11720       orc_program_add_temporary (p, 2, "t8");
11721       orc_program_add_temporary (p, 2, "t9");
11722       orc_program_add_temporary (p, 2, "t10");
11723       orc_program_add_temporary (p, 2, "t11");
11724       orc_program_add_temporary (p, 2, "t12");
11725       orc_program_add_temporary (p, 1, "t13");
11726       orc_program_add_temporary (p, 1, "t14");
11727       orc_program_add_temporary (p, 1, "t15");
11728       orc_program_add_temporary (p, 4, "t16");
11729
11730       orc_program_append_2 (p, "subb", 2, 47, ORC_VAR_S1, ORC_VAR_C2,
11731           ORC_VAR_D1);
11732       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T1, ORC_VAR_T2, 47,
11733           ORC_VAR_D1);
11734       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T2,
11735           ORC_VAR_D1);
11736       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_T1,
11737           ORC_VAR_D1);
11738       orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1,
11739           ORC_VAR_D1);
11740       orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_D1,
11741           ORC_VAR_D1);
11742       orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_D1,
11743           ORC_VAR_D1);
11744       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_C3,
11745           ORC_VAR_D1);
11746       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
11747           ORC_VAR_D1);
11748       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T1,
11749           ORC_VAR_D1);
11750       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T7, ORC_VAR_T9,
11751           ORC_VAR_D1);
11752       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_C4,
11753           ORC_VAR_D1);
11754       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
11755           ORC_VAR_D1);
11756       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T10, ORC_VAR_T10,
11757           ORC_VAR_T1, ORC_VAR_D1);
11758       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T10,
11759           ORC_VAR_T9, ORC_VAR_D1);
11760       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T7, ORC_VAR_T8,
11761           ORC_VAR_D1);
11762       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T12,
11763           ORC_VAR_T8, ORC_VAR_D1);
11764       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_C5,
11765           ORC_VAR_D1);
11766       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
11767           ORC_VAR_D1);
11768       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T12,
11769           ORC_VAR_T1, ORC_VAR_D1);
11770       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_C6,
11771           ORC_VAR_D1);
11772       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
11773           ORC_VAR_D1);
11774       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T7, ORC_VAR_T1,
11775           ORC_VAR_D1);
11776       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_C7,
11777           ORC_VAR_D1);
11778       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
11779           ORC_VAR_D1);
11780       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T11,
11781           ORC_VAR_T1, ORC_VAR_D1);
11782       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T11,
11783           ORC_VAR_T1, ORC_VAR_D1);
11784       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T13, ORC_VAR_T10,
11785           ORC_VAR_D1, ORC_VAR_D1);
11786       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T14, ORC_VAR_T11,
11787           ORC_VAR_D1, ORC_VAR_D1);
11788       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T15, ORC_VAR_T12,
11789           ORC_VAR_D1, ORC_VAR_D1);
11790       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T15,
11791           ORC_VAR_T14, ORC_VAR_D1);
11792       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_T13,
11793           ORC_VAR_T3, ORC_VAR_D1);
11794       orc_program_append_2 (p, "mergewl", 0, 47, ORC_VAR_T1, ORC_VAR_T2,
11795           ORC_VAR_D1);
11796       orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, 47, ORC_VAR_C2,
11797           ORC_VAR_D1);
11798
11799       orc_program_compile (p);
11800     }
11801     p_inited = TRUE;
11802     orc_once_mutex_unlock ();
11803   }
11804   ex->program = p;
11805
11806   ex->n = n;
11807   ORC_EXECUTOR_M (ex) = m;
11808   ex->arrays[ORC_VAR_D1] = d1;
11809   ex->params[ORC_VAR_D1] = d1_stride;
11810   ex->arrays[ORC_VAR_S1] = (void *) s1;
11811   ex->params[ORC_VAR_S1] = s1_stride;
11812
11813   func = p->code_exec;
11814   func (ex);
11815 }
11816 #endif
11817
11818
11819 /* cogorc_convert_AYUV_ABGR */
11820 #ifdef DISABLE_ORC
11821 void
11822 cogorc_convert_AYUV_ABGR (guint8 * ORC_RESTRICT d1, int d1_stride,
11823     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
11824 {
11825   int i;
11826   int j;
11827   orc_union32 *ORC_RESTRICT ptr0;
11828   const orc_union32 *ORC_RESTRICT ptr4;
11829   orc_union32 var48;
11830   orc_union32 var49;
11831   orc_union16 var50;
11832   orc_union16 var51;
11833   orc_union16 var52;
11834   orc_union16 var53;
11835   orc_union16 var54;
11836   orc_union32 var55;
11837   orc_union32 var56;
11838   orc_union32 var57;
11839   orc_union16 var58;
11840   orc_union16 var59;
11841   orc_int8 var60;
11842   orc_int8 var61;
11843   orc_int8 var62;
11844   orc_int8 var63;
11845   orc_union16 var64;
11846   orc_union16 var65;
11847   orc_union16 var66;
11848   orc_union16 var67;
11849   orc_union16 var68;
11850   orc_union16 var69;
11851   orc_union16 var70;
11852   orc_union16 var71;
11853   orc_union16 var72;
11854   orc_union16 var73;
11855   orc_union16 var74;
11856   orc_union16 var75;
11857   orc_union16 var76;
11858   orc_union16 var77;
11859   orc_union16 var78;
11860   orc_union16 var79;
11861   orc_union16 var80;
11862   orc_union16 var81;
11863   orc_union16 var82;
11864   orc_union16 var83;
11865   orc_union16 var84;
11866   orc_union16 var85;
11867   orc_union16 var86;
11868   orc_int8 var87;
11869   orc_int8 var88;
11870   orc_int8 var89;
11871   orc_union16 var90;
11872   orc_union16 var91;
11873   orc_union32 var92;
11874
11875   for (j = 0; j < m; j++) {
11876     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
11877     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
11878
11879     /* 1: loadpb */
11880     var49.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
11881     var49.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
11882     var49.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
11883     var49.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
11884     /* 9: loadpw */
11885     var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */
11886     /* 14: loadpw */
11887     var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */
11888     /* 21: loadpw */
11889     var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */
11890     /* 25: loadpw */
11891     var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */
11892     /* 29: loadpw */
11893     var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */
11894     /* 40: loadpb */
11895     var55.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
11896     var55.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
11897     var55.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
11898     var55.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
11899
11900     for (i = 0; i < n; i++) {
11901       /* 0: loadl */
11902       var48 = ptr4[i];
11903       /* 2: subb */
11904       var57.x4[0] = var48.x4[0] - var49.x4[0];
11905       var57.x4[1] = var48.x4[1] - var49.x4[1];
11906       var57.x4[2] = var48.x4[2] - var49.x4[2];
11907       var57.x4[3] = var48.x4[3] - var49.x4[3];
11908       /* 3: splitlw */
11909       {
11910         orc_union32 _src;
11911         _src.i = var57.i;
11912         var58.i = _src.x2[1];
11913         var59.i = _src.x2[0];
11914       }
11915       /* 4: splitwb */
11916       {
11917         orc_union16 _src;
11918         _src.i = var59.i;
11919         var60 = _src.x2[1];
11920         var61 = _src.x2[0];
11921       }
11922       /* 5: splitwb */
11923       {
11924         orc_union16 _src;
11925         _src.i = var58.i;
11926         var62 = _src.x2[1];
11927         var63 = _src.x2[0];
11928       }
11929       /* 6: convsbw */
11930       var64.i = var60;
11931       /* 7: convsbw */
11932       var65.i = var63;
11933       /* 8: convsbw */
11934       var66.i = var62;
11935       /* 10: mullw */
11936       var67.i = (var64.i * var50.i) & 0xffff;
11937       /* 11: shrsw */
11938       var68.i = var67.i >> 8;
11939       /* 12: addssw */
11940       var69.i = ORC_CLAMP_SW (var64.i + var68.i);
11941       /* 13: addssw */
11942       var70.i = ORC_CLAMP_SW (var69.i + var66.i);
11943       /* 15: mullw */
11944       var71.i = (var66.i * var51.i) & 0xffff;
11945       /* 16: shrsw */
11946       var72.i = var71.i >> 8;
11947       /* 17: subssw */
11948       var73.i = ORC_CLAMP_SW (var70.i - var72.i);
11949       /* 18: addssw */
11950       var74.i = ORC_CLAMP_SW (var73.i + var66.i);
11951       /* 19: addssw */
11952       var75.i = ORC_CLAMP_SW (var69.i + var65.i);
11953       /* 20: addssw */
11954       var76.i = ORC_CLAMP_SW (var75.i + var65.i);
11955       /* 22: mullw */
11956       var77.i = (var65.i * var52.i) & 0xffff;
11957       /* 23: shrsw */
11958       var78.i = var77.i >> 8;
11959       /* 24: addssw */
11960       var79.i = ORC_CLAMP_SW (var76.i + var78.i);
11961       /* 26: mullw */
11962       var80.i = (var65.i * var53.i) & 0xffff;
11963       /* 27: shrsw */
11964       var81.i = var80.i >> 8;
11965       /* 28: subssw */
11966       var82.i = ORC_CLAMP_SW (var69.i - var81.i);
11967       /* 30: mullw */
11968       var83.i = (var66.i * var54.i) & 0xffff;
11969       /* 31: shrsw */
11970       var84.i = var83.i >> 8;
11971       /* 32: subssw */
11972       var85.i = ORC_CLAMP_SW (var82.i - var84.i);
11973       /* 33: subssw */
11974       var86.i = ORC_CLAMP_SW (var85.i - var84.i);
11975       /* 34: convssswb */
11976       var87 = ORC_CLAMP_SB (var74.i);
11977       /* 35: convssswb */
11978       var88 = ORC_CLAMP_SB (var86.i);
11979       /* 36: convssswb */
11980       var89 = ORC_CLAMP_SB (var79.i);
11981       /* 37: mergebw */
11982       {
11983         orc_union16 _dest;
11984         _dest.x2[0] = var61;
11985         _dest.x2[1] = var89;
11986         var90.i = _dest.i;
11987       }
11988       /* 38: mergebw */
11989       {
11990         orc_union16 _dest;
11991         _dest.x2[0] = var88;
11992         _dest.x2[1] = var87;
11993         var91.i = _dest.i;
11994       }
11995       /* 39: mergewl */
11996       {
11997         orc_union32 _dest;
11998         _dest.x2[0] = var90.i;
11999         _dest.x2[1] = var91.i;
12000         var92.i = _dest.i;
12001       }
12002       /* 41: addb */
12003       var56.x4[0] = var92.x4[0] + var55.x4[0];
12004       var56.x4[1] = var92.x4[1] + var55.x4[1];
12005       var56.x4[2] = var92.x4[2] + var55.x4[2];
12006       var56.x4[3] = var92.x4[3] + var55.x4[3];
12007       /* 42: storel */
12008       ptr0[i] = var56;
12009     }
12010   }
12011
12012 }
12013
12014 #else
12015 static void
12016 _backup_cogorc_convert_AYUV_ABGR (OrcExecutor * ORC_RESTRICT ex)
12017 {
12018   int i;
12019   int j;
12020   int n = ex->n;
12021   int m = ex->params[ORC_VAR_A1];
12022   orc_union32 *ORC_RESTRICT ptr0;
12023   const orc_union32 *ORC_RESTRICT ptr4;
12024   orc_union32 var48;
12025   orc_union32 var49;
12026   orc_union16 var50;
12027   orc_union16 var51;
12028   orc_union16 var52;
12029   orc_union16 var53;
12030   orc_union16 var54;
12031   orc_union32 var55;
12032   orc_union32 var56;
12033   orc_union32 var57;
12034   orc_union16 var58;
12035   orc_union16 var59;
12036   orc_int8 var60;
12037   orc_int8 var61;
12038   orc_int8 var62;
12039   orc_int8 var63;
12040   orc_union16 var64;
12041   orc_union16 var65;
12042   orc_union16 var66;
12043   orc_union16 var67;
12044   orc_union16 var68;
12045   orc_union16 var69;
12046   orc_union16 var70;
12047   orc_union16 var71;
12048   orc_union16 var72;
12049   orc_union16 var73;
12050   orc_union16 var74;
12051   orc_union16 var75;
12052   orc_union16 var76;
12053   orc_union16 var77;
12054   orc_union16 var78;
12055   orc_union16 var79;
12056   orc_union16 var80;
12057   orc_union16 var81;
12058   orc_union16 var82;
12059   orc_union16 var83;
12060   orc_union16 var84;
12061   orc_union16 var85;
12062   orc_union16 var86;
12063   orc_int8 var87;
12064   orc_int8 var88;
12065   orc_int8 var89;
12066   orc_union16 var90;
12067   orc_union16 var91;
12068   orc_union32 var92;
12069
12070   for (j = 0; j < m; j++) {
12071     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
12072     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
12073
12074     /* 1: loadpb */
12075     var49.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
12076     var49.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
12077     var49.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
12078     var49.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
12079     /* 9: loadpw */
12080     var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */
12081     /* 14: loadpw */
12082     var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */
12083     /* 21: loadpw */
12084     var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */
12085     /* 25: loadpw */
12086     var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */
12087     /* 29: loadpw */
12088     var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */
12089     /* 40: loadpb */
12090     var55.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
12091     var55.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
12092     var55.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
12093     var55.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
12094
12095     for (i = 0; i < n; i++) {
12096       /* 0: loadl */
12097       var48 = ptr4[i];
12098       /* 2: subb */
12099       var57.x4[0] = var48.x4[0] - var49.x4[0];
12100       var57.x4[1] = var48.x4[1] - var49.x4[1];
12101       var57.x4[2] = var48.x4[2] - var49.x4[2];
12102       var57.x4[3] = var48.x4[3] - var49.x4[3];
12103       /* 3: splitlw */
12104       {
12105         orc_union32 _src;
12106         _src.i = var57.i;
12107         var58.i = _src.x2[1];
12108         var59.i = _src.x2[0];
12109       }
12110       /* 4: splitwb */
12111       {
12112         orc_union16 _src;
12113         _src.i = var59.i;
12114         var60 = _src.x2[1];
12115         var61 = _src.x2[0];
12116       }
12117       /* 5: splitwb */
12118       {
12119         orc_union16 _src;
12120         _src.i = var58.i;
12121         var62 = _src.x2[1];
12122         var63 = _src.x2[0];
12123       }
12124       /* 6: convsbw */
12125       var64.i = var60;
12126       /* 7: convsbw */
12127       var65.i = var63;
12128       /* 8: convsbw */
12129       var66.i = var62;
12130       /* 10: mullw */
12131       var67.i = (var64.i * var50.i) & 0xffff;
12132       /* 11: shrsw */
12133       var68.i = var67.i >> 8;
12134       /* 12: addssw */
12135       var69.i = ORC_CLAMP_SW (var64.i + var68.i);
12136       /* 13: addssw */
12137       var70.i = ORC_CLAMP_SW (var69.i + var66.i);
12138       /* 15: mullw */
12139       var71.i = (var66.i * var51.i) & 0xffff;
12140       /* 16: shrsw */
12141       var72.i = var71.i >> 8;
12142       /* 17: subssw */
12143       var73.i = ORC_CLAMP_SW (var70.i - var72.i);
12144       /* 18: addssw */
12145       var74.i = ORC_CLAMP_SW (var73.i + var66.i);
12146       /* 19: addssw */
12147       var75.i = ORC_CLAMP_SW (var69.i + var65.i);
12148       /* 20: addssw */
12149       var76.i = ORC_CLAMP_SW (var75.i + var65.i);
12150       /* 22: mullw */
12151       var77.i = (var65.i * var52.i) & 0xffff;
12152       /* 23: shrsw */
12153       var78.i = var77.i >> 8;
12154       /* 24: addssw */
12155       var79.i = ORC_CLAMP_SW (var76.i + var78.i);
12156       /* 26: mullw */
12157       var80.i = (var65.i * var53.i) & 0xffff;
12158       /* 27: shrsw */
12159       var81.i = var80.i >> 8;
12160       /* 28: subssw */
12161       var82.i = ORC_CLAMP_SW (var69.i - var81.i);
12162       /* 30: mullw */
12163       var83.i = (var66.i * var54.i) & 0xffff;
12164       /* 31: shrsw */
12165       var84.i = var83.i >> 8;
12166       /* 32: subssw */
12167       var85.i = ORC_CLAMP_SW (var82.i - var84.i);
12168       /* 33: subssw */
12169       var86.i = ORC_CLAMP_SW (var85.i - var84.i);
12170       /* 34: convssswb */
12171       var87 = ORC_CLAMP_SB (var74.i);
12172       /* 35: convssswb */
12173       var88 = ORC_CLAMP_SB (var86.i);
12174       /* 36: convssswb */
12175       var89 = ORC_CLAMP_SB (var79.i);
12176       /* 37: mergebw */
12177       {
12178         orc_union16 _dest;
12179         _dest.x2[0] = var61;
12180         _dest.x2[1] = var89;
12181         var90.i = _dest.i;
12182       }
12183       /* 38: mergebw */
12184       {
12185         orc_union16 _dest;
12186         _dest.x2[0] = var88;
12187         _dest.x2[1] = var87;
12188         var91.i = _dest.i;
12189       }
12190       /* 39: mergewl */
12191       {
12192         orc_union32 _dest;
12193         _dest.x2[0] = var90.i;
12194         _dest.x2[1] = var91.i;
12195         var92.i = _dest.i;
12196       }
12197       /* 41: addb */
12198       var56.x4[0] = var92.x4[0] + var55.x4[0];
12199       var56.x4[1] = var92.x4[1] + var55.x4[1];
12200       var56.x4[2] = var92.x4[2] + var55.x4[2];
12201       var56.x4[3] = var92.x4[3] + var55.x4[3];
12202       /* 42: storel */
12203       ptr0[i] = var56;
12204     }
12205   }
12206
12207 }
12208
12209 void
12210 cogorc_convert_AYUV_ABGR (guint8 * ORC_RESTRICT d1, int d1_stride,
12211     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
12212 {
12213   OrcExecutor _ex, *ex = &_ex;
12214   static volatile int p_inited = 0;
12215   static OrcProgram *p = 0;
12216   void (*func) (OrcExecutor *);
12217
12218   if (!p_inited) {
12219     orc_once_mutex_lock ();
12220     if (!p_inited) {
12221
12222       p = orc_program_new ();
12223       orc_program_set_2d (p);
12224       orc_program_set_name (p, "cogorc_convert_AYUV_ABGR");
12225       orc_program_set_backup_function (p, _backup_cogorc_convert_AYUV_ABGR);
12226       orc_program_add_destination (p, 4, "d1");
12227       orc_program_add_source (p, 4, "s1");
12228       orc_program_add_constant (p, 1, 0x00000008, "c1");
12229       orc_program_add_constant (p, 4, 0x00000080, "c2");
12230       orc_program_add_constant (p, 4, 0x0000002a, "c3");
12231       orc_program_add_constant (p, 4, 0x00000067, "c4");
12232       orc_program_add_constant (p, 4, 0x00000004, "c5");
12233       orc_program_add_constant (p, 4, 0x00000064, "c6");
12234       orc_program_add_constant (p, 4, 0x00000068, "c7");
12235       orc_program_add_temporary (p, 2, "t1");
12236       orc_program_add_temporary (p, 2, "t2");
12237       orc_program_add_temporary (p, 1, "t3");
12238       orc_program_add_temporary (p, 1, "t4");
12239       orc_program_add_temporary (p, 1, "t5");
12240       orc_program_add_temporary (p, 1, "t6");
12241       orc_program_add_temporary (p, 2, "t7");
12242       orc_program_add_temporary (p, 2, "t8");
12243       orc_program_add_temporary (p, 2, "t9");
12244       orc_program_add_temporary (p, 2, "t10");
12245       orc_program_add_temporary (p, 2, "t11");
12246       orc_program_add_temporary (p, 2, "t12");
12247       orc_program_add_temporary (p, 1, "t13");
12248       orc_program_add_temporary (p, 1, "t14");
12249       orc_program_add_temporary (p, 1, "t15");
12250       orc_program_add_temporary (p, 4, "t16");
12251
12252       orc_program_append_2 (p, "subb", 2, 47, ORC_VAR_S1, ORC_VAR_C2,
12253           ORC_VAR_D1);
12254       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T1, ORC_VAR_T2, 47,
12255           ORC_VAR_D1);
12256       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T2,
12257           ORC_VAR_D1);
12258       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_T1,
12259           ORC_VAR_D1);
12260       orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1,
12261           ORC_VAR_D1);
12262       orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_D1,
12263           ORC_VAR_D1);
12264       orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_D1,
12265           ORC_VAR_D1);
12266       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_C3,
12267           ORC_VAR_D1);
12268       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
12269           ORC_VAR_D1);
12270       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T1,
12271           ORC_VAR_D1);
12272       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T7, ORC_VAR_T9,
12273           ORC_VAR_D1);
12274       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_C4,
12275           ORC_VAR_D1);
12276       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
12277           ORC_VAR_D1);
12278       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T10, ORC_VAR_T10,
12279           ORC_VAR_T1, ORC_VAR_D1);
12280       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T10,
12281           ORC_VAR_T9, ORC_VAR_D1);
12282       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T7, ORC_VAR_T8,
12283           ORC_VAR_D1);
12284       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T12,
12285           ORC_VAR_T8, ORC_VAR_D1);
12286       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_C5,
12287           ORC_VAR_D1);
12288       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
12289           ORC_VAR_D1);
12290       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T12,
12291           ORC_VAR_T1, ORC_VAR_D1);
12292       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_C6,
12293           ORC_VAR_D1);
12294       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
12295           ORC_VAR_D1);
12296       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T7, ORC_VAR_T1,
12297           ORC_VAR_D1);
12298       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_C7,
12299           ORC_VAR_D1);
12300       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
12301           ORC_VAR_D1);
12302       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T11,
12303           ORC_VAR_T1, ORC_VAR_D1);
12304       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T11,
12305           ORC_VAR_T1, ORC_VAR_D1);
12306       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T13, ORC_VAR_T10,
12307           ORC_VAR_D1, ORC_VAR_D1);
12308       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T14, ORC_VAR_T11,
12309           ORC_VAR_D1, ORC_VAR_D1);
12310       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T15, ORC_VAR_T12,
12311           ORC_VAR_D1, ORC_VAR_D1);
12312       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T3,
12313           ORC_VAR_T15, ORC_VAR_D1);
12314       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_T14,
12315           ORC_VAR_T13, ORC_VAR_D1);
12316       orc_program_append_2 (p, "mergewl", 0, 47, ORC_VAR_T1, ORC_VAR_T2,
12317           ORC_VAR_D1);
12318       orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, 47, ORC_VAR_C2,
12319           ORC_VAR_D1);
12320
12321       orc_program_compile (p);
12322     }
12323     p_inited = TRUE;
12324     orc_once_mutex_unlock ();
12325   }
12326   ex->program = p;
12327
12328   ex->n = n;
12329   ORC_EXECUTOR_M (ex) = m;
12330   ex->arrays[ORC_VAR_D1] = d1;
12331   ex->params[ORC_VAR_D1] = d1_stride;
12332   ex->arrays[ORC_VAR_S1] = (void *) s1;
12333   ex->params[ORC_VAR_S1] = s1_stride;
12334
12335   func = p->code_exec;
12336   func (ex);
12337 }
12338 #endif
12339
12340
12341 /* cogorc_convert_AYUV_RGBA */
12342 #ifdef DISABLE_ORC
12343 void
12344 cogorc_convert_AYUV_RGBA (guint8 * ORC_RESTRICT d1, int d1_stride,
12345     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
12346 {
12347   int i;
12348   int j;
12349   orc_union32 *ORC_RESTRICT ptr0;
12350   const orc_union32 *ORC_RESTRICT ptr4;
12351   orc_union32 var48;
12352   orc_union32 var49;
12353   orc_union16 var50;
12354   orc_union16 var51;
12355   orc_union16 var52;
12356   orc_union16 var53;
12357   orc_union16 var54;
12358   orc_union32 var55;
12359   orc_union32 var56;
12360   orc_union32 var57;
12361   orc_union16 var58;
12362   orc_union16 var59;
12363   orc_int8 var60;
12364   orc_int8 var61;
12365   orc_int8 var62;
12366   orc_int8 var63;
12367   orc_union16 var64;
12368   orc_union16 var65;
12369   orc_union16 var66;
12370   orc_union16 var67;
12371   orc_union16 var68;
12372   orc_union16 var69;
12373   orc_union16 var70;
12374   orc_union16 var71;
12375   orc_union16 var72;
12376   orc_union16 var73;
12377   orc_union16 var74;
12378   orc_union16 var75;
12379   orc_union16 var76;
12380   orc_union16 var77;
12381   orc_union16 var78;
12382   orc_union16 var79;
12383   orc_union16 var80;
12384   orc_union16 var81;
12385   orc_union16 var82;
12386   orc_union16 var83;
12387   orc_union16 var84;
12388   orc_union16 var85;
12389   orc_union16 var86;
12390   orc_int8 var87;
12391   orc_int8 var88;
12392   orc_int8 var89;
12393   orc_union16 var90;
12394   orc_union16 var91;
12395   orc_union32 var92;
12396
12397   for (j = 0; j < m; j++) {
12398     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
12399     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
12400
12401     /* 1: loadpb */
12402     var49.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
12403     var49.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
12404     var49.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
12405     var49.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
12406     /* 9: loadpw */
12407     var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */
12408     /* 14: loadpw */
12409     var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */
12410     /* 21: loadpw */
12411     var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */
12412     /* 25: loadpw */
12413     var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */
12414     /* 29: loadpw */
12415     var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */
12416     /* 40: loadpb */
12417     var55.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
12418     var55.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
12419     var55.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
12420     var55.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
12421
12422     for (i = 0; i < n; i++) {
12423       /* 0: loadl */
12424       var48 = ptr4[i];
12425       /* 2: subb */
12426       var57.x4[0] = var48.x4[0] - var49.x4[0];
12427       var57.x4[1] = var48.x4[1] - var49.x4[1];
12428       var57.x4[2] = var48.x4[2] - var49.x4[2];
12429       var57.x4[3] = var48.x4[3] - var49.x4[3];
12430       /* 3: splitlw */
12431       {
12432         orc_union32 _src;
12433         _src.i = var57.i;
12434         var58.i = _src.x2[1];
12435         var59.i = _src.x2[0];
12436       }
12437       /* 4: splitwb */
12438       {
12439         orc_union16 _src;
12440         _src.i = var59.i;
12441         var60 = _src.x2[1];
12442         var61 = _src.x2[0];
12443       }
12444       /* 5: splitwb */
12445       {
12446         orc_union16 _src;
12447         _src.i = var58.i;
12448         var62 = _src.x2[1];
12449         var63 = _src.x2[0];
12450       }
12451       /* 6: convsbw */
12452       var64.i = var60;
12453       /* 7: convsbw */
12454       var65.i = var63;
12455       /* 8: convsbw */
12456       var66.i = var62;
12457       /* 10: mullw */
12458       var67.i = (var64.i * var50.i) & 0xffff;
12459       /* 11: shrsw */
12460       var68.i = var67.i >> 8;
12461       /* 12: addssw */
12462       var69.i = ORC_CLAMP_SW (var64.i + var68.i);
12463       /* 13: addssw */
12464       var70.i = ORC_CLAMP_SW (var69.i + var66.i);
12465       /* 15: mullw */
12466       var71.i = (var66.i * var51.i) & 0xffff;
12467       /* 16: shrsw */
12468       var72.i = var71.i >> 8;
12469       /* 17: subssw */
12470       var73.i = ORC_CLAMP_SW (var70.i - var72.i);
12471       /* 18: addssw */
12472       var74.i = ORC_CLAMP_SW (var73.i + var66.i);
12473       /* 19: addssw */
12474       var75.i = ORC_CLAMP_SW (var69.i + var65.i);
12475       /* 20: addssw */
12476       var76.i = ORC_CLAMP_SW (var75.i + var65.i);
12477       /* 22: mullw */
12478       var77.i = (var65.i * var52.i) & 0xffff;
12479       /* 23: shrsw */
12480       var78.i = var77.i >> 8;
12481       /* 24: addssw */
12482       var79.i = ORC_CLAMP_SW (var76.i + var78.i);
12483       /* 26: mullw */
12484       var80.i = (var65.i * var53.i) & 0xffff;
12485       /* 27: shrsw */
12486       var81.i = var80.i >> 8;
12487       /* 28: subssw */
12488       var82.i = ORC_CLAMP_SW (var69.i - var81.i);
12489       /* 30: mullw */
12490       var83.i = (var66.i * var54.i) & 0xffff;
12491       /* 31: shrsw */
12492       var84.i = var83.i >> 8;
12493       /* 32: subssw */
12494       var85.i = ORC_CLAMP_SW (var82.i - var84.i);
12495       /* 33: subssw */
12496       var86.i = ORC_CLAMP_SW (var85.i - var84.i);
12497       /* 34: convssswb */
12498       var87 = ORC_CLAMP_SB (var74.i);
12499       /* 35: convssswb */
12500       var88 = ORC_CLAMP_SB (var86.i);
12501       /* 36: convssswb */
12502       var89 = ORC_CLAMP_SB (var79.i);
12503       /* 37: mergebw */
12504       {
12505         orc_union16 _dest;
12506         _dest.x2[0] = var87;
12507         _dest.x2[1] = var88;
12508         var90.i = _dest.i;
12509       }
12510       /* 38: mergebw */
12511       {
12512         orc_union16 _dest;
12513         _dest.x2[0] = var89;
12514         _dest.x2[1] = var61;
12515         var91.i = _dest.i;
12516       }
12517       /* 39: mergewl */
12518       {
12519         orc_union32 _dest;
12520         _dest.x2[0] = var90.i;
12521         _dest.x2[1] = var91.i;
12522         var92.i = _dest.i;
12523       }
12524       /* 41: addb */
12525       var56.x4[0] = var92.x4[0] + var55.x4[0];
12526       var56.x4[1] = var92.x4[1] + var55.x4[1];
12527       var56.x4[2] = var92.x4[2] + var55.x4[2];
12528       var56.x4[3] = var92.x4[3] + var55.x4[3];
12529       /* 42: storel */
12530       ptr0[i] = var56;
12531     }
12532   }
12533
12534 }
12535
12536 #else
12537 static void
12538 _backup_cogorc_convert_AYUV_RGBA (OrcExecutor * ORC_RESTRICT ex)
12539 {
12540   int i;
12541   int j;
12542   int n = ex->n;
12543   int m = ex->params[ORC_VAR_A1];
12544   orc_union32 *ORC_RESTRICT ptr0;
12545   const orc_union32 *ORC_RESTRICT ptr4;
12546   orc_union32 var48;
12547   orc_union32 var49;
12548   orc_union16 var50;
12549   orc_union16 var51;
12550   orc_union16 var52;
12551   orc_union16 var53;
12552   orc_union16 var54;
12553   orc_union32 var55;
12554   orc_union32 var56;
12555   orc_union32 var57;
12556   orc_union16 var58;
12557   orc_union16 var59;
12558   orc_int8 var60;
12559   orc_int8 var61;
12560   orc_int8 var62;
12561   orc_int8 var63;
12562   orc_union16 var64;
12563   orc_union16 var65;
12564   orc_union16 var66;
12565   orc_union16 var67;
12566   orc_union16 var68;
12567   orc_union16 var69;
12568   orc_union16 var70;
12569   orc_union16 var71;
12570   orc_union16 var72;
12571   orc_union16 var73;
12572   orc_union16 var74;
12573   orc_union16 var75;
12574   orc_union16 var76;
12575   orc_union16 var77;
12576   orc_union16 var78;
12577   orc_union16 var79;
12578   orc_union16 var80;
12579   orc_union16 var81;
12580   orc_union16 var82;
12581   orc_union16 var83;
12582   orc_union16 var84;
12583   orc_union16 var85;
12584   orc_union16 var86;
12585   orc_int8 var87;
12586   orc_int8 var88;
12587   orc_int8 var89;
12588   orc_union16 var90;
12589   orc_union16 var91;
12590   orc_union32 var92;
12591
12592   for (j = 0; j < m; j++) {
12593     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
12594     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
12595
12596     /* 1: loadpb */
12597     var49.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
12598     var49.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
12599     var49.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
12600     var49.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
12601     /* 9: loadpw */
12602     var50.i = (int) 0x0000002a; /* 42 or 2.07508e-322f */
12603     /* 14: loadpw */
12604     var51.i = (int) 0x00000067; /* 103 or 5.08888e-322f */
12605     /* 21: loadpw */
12606     var52.i = (int) 0x00000004; /* 4 or 1.97626e-323f */
12607     /* 25: loadpw */
12608     var53.i = (int) 0x00000064; /* 100 or 4.94066e-322f */
12609     /* 29: loadpw */
12610     var54.i = (int) 0x00000068; /* 104 or 5.13828e-322f */
12611     /* 40: loadpb */
12612     var55.x4[0] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
12613     var55.x4[1] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
12614     var55.x4[2] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
12615     var55.x4[3] = (int) 0x00000080;     /* 128 or 6.32404e-322f */
12616
12617     for (i = 0; i < n; i++) {
12618       /* 0: loadl */
12619       var48 = ptr4[i];
12620       /* 2: subb */
12621       var57.x4[0] = var48.x4[0] - var49.x4[0];
12622       var57.x4[1] = var48.x4[1] - var49.x4[1];
12623       var57.x4[2] = var48.x4[2] - var49.x4[2];
12624       var57.x4[3] = var48.x4[3] - var49.x4[3];
12625       /* 3: splitlw */
12626       {
12627         orc_union32 _src;
12628         _src.i = var57.i;
12629         var58.i = _src.x2[1];
12630         var59.i = _src.x2[0];
12631       }
12632       /* 4: splitwb */
12633       {
12634         orc_union16 _src;
12635         _src.i = var59.i;
12636         var60 = _src.x2[1];
12637         var61 = _src.x2[0];
12638       }
12639       /* 5: splitwb */
12640       {
12641         orc_union16 _src;
12642         _src.i = var58.i;
12643         var62 = _src.x2[1];
12644         var63 = _src.x2[0];
12645       }
12646       /* 6: convsbw */
12647       var64.i = var60;
12648       /* 7: convsbw */
12649       var65.i = var63;
12650       /* 8: convsbw */
12651       var66.i = var62;
12652       /* 10: mullw */
12653       var67.i = (var64.i * var50.i) & 0xffff;
12654       /* 11: shrsw */
12655       var68.i = var67.i >> 8;
12656       /* 12: addssw */
12657       var69.i = ORC_CLAMP_SW (var64.i + var68.i);
12658       /* 13: addssw */
12659       var70.i = ORC_CLAMP_SW (var69.i + var66.i);
12660       /* 15: mullw */
12661       var71.i = (var66.i * var51.i) & 0xffff;
12662       /* 16: shrsw */
12663       var72.i = var71.i >> 8;
12664       /* 17: subssw */
12665       var73.i = ORC_CLAMP_SW (var70.i - var72.i);
12666       /* 18: addssw */
12667       var74.i = ORC_CLAMP_SW (var73.i + var66.i);
12668       /* 19: addssw */
12669       var75.i = ORC_CLAMP_SW (var69.i + var65.i);
12670       /* 20: addssw */
12671       var76.i = ORC_CLAMP_SW (var75.i + var65.i);
12672       /* 22: mullw */
12673       var77.i = (var65.i * var52.i) & 0xffff;
12674       /* 23: shrsw */
12675       var78.i = var77.i >> 8;
12676       /* 24: addssw */
12677       var79.i = ORC_CLAMP_SW (var76.i + var78.i);
12678       /* 26: mullw */
12679       var80.i = (var65.i * var53.i) & 0xffff;
12680       /* 27: shrsw */
12681       var81.i = var80.i >> 8;
12682       /* 28: subssw */
12683       var82.i = ORC_CLAMP_SW (var69.i - var81.i);
12684       /* 30: mullw */
12685       var83.i = (var66.i * var54.i) & 0xffff;
12686       /* 31: shrsw */
12687       var84.i = var83.i >> 8;
12688       /* 32: subssw */
12689       var85.i = ORC_CLAMP_SW (var82.i - var84.i);
12690       /* 33: subssw */
12691       var86.i = ORC_CLAMP_SW (var85.i - var84.i);
12692       /* 34: convssswb */
12693       var87 = ORC_CLAMP_SB (var74.i);
12694       /* 35: convssswb */
12695       var88 = ORC_CLAMP_SB (var86.i);
12696       /* 36: convssswb */
12697       var89 = ORC_CLAMP_SB (var79.i);
12698       /* 37: mergebw */
12699       {
12700         orc_union16 _dest;
12701         _dest.x2[0] = var87;
12702         _dest.x2[1] = var88;
12703         var90.i = _dest.i;
12704       }
12705       /* 38: mergebw */
12706       {
12707         orc_union16 _dest;
12708         _dest.x2[0] = var89;
12709         _dest.x2[1] = var61;
12710         var91.i = _dest.i;
12711       }
12712       /* 39: mergewl */
12713       {
12714         orc_union32 _dest;
12715         _dest.x2[0] = var90.i;
12716         _dest.x2[1] = var91.i;
12717         var92.i = _dest.i;
12718       }
12719       /* 41: addb */
12720       var56.x4[0] = var92.x4[0] + var55.x4[0];
12721       var56.x4[1] = var92.x4[1] + var55.x4[1];
12722       var56.x4[2] = var92.x4[2] + var55.x4[2];
12723       var56.x4[3] = var92.x4[3] + var55.x4[3];
12724       /* 42: storel */
12725       ptr0[i] = var56;
12726     }
12727   }
12728
12729 }
12730
12731 void
12732 cogorc_convert_AYUV_RGBA (guint8 * ORC_RESTRICT d1, int d1_stride,
12733     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
12734 {
12735   OrcExecutor _ex, *ex = &_ex;
12736   static volatile int p_inited = 0;
12737   static OrcProgram *p = 0;
12738   void (*func) (OrcExecutor *);
12739
12740   if (!p_inited) {
12741     orc_once_mutex_lock ();
12742     if (!p_inited) {
12743
12744       p = orc_program_new ();
12745       orc_program_set_2d (p);
12746       orc_program_set_name (p, "cogorc_convert_AYUV_RGBA");
12747       orc_program_set_backup_function (p, _backup_cogorc_convert_AYUV_RGBA);
12748       orc_program_add_destination (p, 4, "d1");
12749       orc_program_add_source (p, 4, "s1");
12750       orc_program_add_constant (p, 1, 0x00000008, "c1");
12751       orc_program_add_constant (p, 4, 0x00000080, "c2");
12752       orc_program_add_constant (p, 4, 0x0000002a, "c3");
12753       orc_program_add_constant (p, 4, 0x00000067, "c4");
12754       orc_program_add_constant (p, 4, 0x00000004, "c5");
12755       orc_program_add_constant (p, 4, 0x00000064, "c6");
12756       orc_program_add_constant (p, 4, 0x00000068, "c7");
12757       orc_program_add_temporary (p, 2, "t1");
12758       orc_program_add_temporary (p, 2, "t2");
12759       orc_program_add_temporary (p, 1, "t3");
12760       orc_program_add_temporary (p, 1, "t4");
12761       orc_program_add_temporary (p, 1, "t5");
12762       orc_program_add_temporary (p, 1, "t6");
12763       orc_program_add_temporary (p, 2, "t7");
12764       orc_program_add_temporary (p, 2, "t8");
12765       orc_program_add_temporary (p, 2, "t9");
12766       orc_program_add_temporary (p, 2, "t10");
12767       orc_program_add_temporary (p, 2, "t11");
12768       orc_program_add_temporary (p, 2, "t12");
12769       orc_program_add_temporary (p, 1, "t13");
12770       orc_program_add_temporary (p, 1, "t14");
12771       orc_program_add_temporary (p, 1, "t15");
12772       orc_program_add_temporary (p, 4, "t16");
12773
12774       orc_program_append_2 (p, "subb", 2, 47, ORC_VAR_S1, ORC_VAR_C2,
12775           ORC_VAR_D1);
12776       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T1, ORC_VAR_T2, 47,
12777           ORC_VAR_D1);
12778       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T2,
12779           ORC_VAR_D1);
12780       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_T1,
12781           ORC_VAR_D1);
12782       orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1,
12783           ORC_VAR_D1);
12784       orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_D1,
12785           ORC_VAR_D1);
12786       orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_D1,
12787           ORC_VAR_D1);
12788       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_C3,
12789           ORC_VAR_D1);
12790       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
12791           ORC_VAR_D1);
12792       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T1,
12793           ORC_VAR_D1);
12794       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T7, ORC_VAR_T9,
12795           ORC_VAR_D1);
12796       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_C4,
12797           ORC_VAR_D1);
12798       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
12799           ORC_VAR_D1);
12800       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T10, ORC_VAR_T10,
12801           ORC_VAR_T1, ORC_VAR_D1);
12802       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T10,
12803           ORC_VAR_T9, ORC_VAR_D1);
12804       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T7, ORC_VAR_T8,
12805           ORC_VAR_D1);
12806       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T12,
12807           ORC_VAR_T8, ORC_VAR_D1);
12808       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_C5,
12809           ORC_VAR_D1);
12810       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
12811           ORC_VAR_D1);
12812       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T12, ORC_VAR_T12,
12813           ORC_VAR_T1, ORC_VAR_D1);
12814       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T8, ORC_VAR_C6,
12815           ORC_VAR_D1);
12816       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
12817           ORC_VAR_D1);
12818       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T7, ORC_VAR_T1,
12819           ORC_VAR_D1);
12820       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T9, ORC_VAR_C7,
12821           ORC_VAR_D1);
12822       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
12823           ORC_VAR_D1);
12824       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T11,
12825           ORC_VAR_T1, ORC_VAR_D1);
12826       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T11, ORC_VAR_T11,
12827           ORC_VAR_T1, ORC_VAR_D1);
12828       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T13, ORC_VAR_T10,
12829           ORC_VAR_D1, ORC_VAR_D1);
12830       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T14, ORC_VAR_T11,
12831           ORC_VAR_D1, ORC_VAR_D1);
12832       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T15, ORC_VAR_T12,
12833           ORC_VAR_D1, ORC_VAR_D1);
12834       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T13,
12835           ORC_VAR_T14, ORC_VAR_D1);
12836       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_T15,
12837           ORC_VAR_T3, ORC_VAR_D1);
12838       orc_program_append_2 (p, "mergewl", 0, 47, ORC_VAR_T1, ORC_VAR_T2,
12839           ORC_VAR_D1);
12840       orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, 47, ORC_VAR_C2,
12841           ORC_VAR_D1);
12842
12843       orc_program_compile (p);
12844     }
12845     p_inited = TRUE;
12846     orc_once_mutex_unlock ();
12847   }
12848   ex->program = p;
12849
12850   ex->n = n;
12851   ORC_EXECUTOR_M (ex) = m;
12852   ex->arrays[ORC_VAR_D1] = d1;
12853   ex->params[ORC_VAR_D1] = d1_stride;
12854   ex->arrays[ORC_VAR_S1] = (void *) s1;
12855   ex->params[ORC_VAR_S1] = s1_stride;
12856
12857   func = p->code_exec;
12858   func (ex);
12859 }
12860 #endif
12861
12862
12863 /* cogorc_convert_I420_BGRA */
12864 #ifdef DISABLE_ORC
12865 void
12866 cogorc_convert_I420_BGRA (guint8 * ORC_RESTRICT d1,
12867     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
12868     const guint8 * ORC_RESTRICT s3, int n)
12869 {
12870   int i;
12871   orc_union32 *ORC_RESTRICT ptr0;
12872   const orc_int8 *ORC_RESTRICT ptr4;
12873   const orc_int8 *ORC_RESTRICT ptr5;
12874   const orc_int8 *ORC_RESTRICT ptr6;
12875   orc_int8 var45;
12876   orc_int8 var46;
12877   orc_int8 var47;
12878   orc_int8 var48;
12879   orc_union16 var49;
12880   orc_union16 var50;
12881   orc_union16 var51;
12882   orc_union16 var52;
12883   orc_union16 var53;
12884   orc_int8 var54;
12885   orc_union32 var55;
12886   orc_union32 var56;
12887   orc_int8 var57;
12888   orc_union16 var58;
12889   orc_int8 var59;
12890   orc_int8 var60;
12891   orc_union16 var61;
12892   orc_int8 var62;
12893   orc_int8 var63;
12894   orc_union16 var64;
12895   orc_union16 var65;
12896   orc_union16 var66;
12897   orc_union16 var67;
12898   orc_union16 var68;
12899   orc_union16 var69;
12900   orc_union16 var70;
12901   orc_union16 var71;
12902   orc_union16 var72;
12903   orc_union16 var73;
12904   orc_union16 var74;
12905   orc_union16 var75;
12906   orc_union16 var76;
12907   orc_union16 var77;
12908   orc_union16 var78;
12909   orc_union16 var79;
12910   orc_union16 var80;
12911   orc_union16 var81;
12912   orc_union16 var82;
12913   orc_union16 var83;
12914   orc_union16 var84;
12915   orc_int8 var85;
12916   orc_int8 var86;
12917   orc_int8 var87;
12918   orc_union16 var88;
12919   orc_union16 var89;
12920   orc_union32 var90;
12921
12922   ptr0 = (orc_union32 *) d1;
12923   ptr4 = (orc_int8 *) s1;
12924   ptr5 = (orc_int8 *) s2;
12925   ptr6 = (orc_int8 *) s3;
12926
12927   /* 1: loadpb */
12928   var46 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
12929   /* 5: loadpb */
12930   var47 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
12931   /* 9: loadpb */
12932   var48 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
12933   /* 12: loadpw */
12934   var49.i = (int) 0x0000002a;   /* 42 or 2.07508e-322f */
12935   /* 17: loadpw */
12936   var50.i = (int) 0x00000067;   /* 103 or 5.08888e-322f */
12937   /* 24: loadpw */
12938   var51.i = (int) 0x00000004;   /* 4 or 1.97626e-323f */
12939   /* 28: loadpw */
12940   var52.i = (int) 0x00000064;   /* 100 or 4.94066e-322f */
12941   /* 32: loadpw */
12942   var53.i = (int) 0x00000068;   /* 104 or 5.13828e-322f */
12943   /* 41: loadpb */
12944   var54 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
12945   /* 44: loadpb */
12946   var55.x4[0] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
12947   var55.x4[1] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
12948   var55.x4[2] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
12949   var55.x4[3] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
12950
12951   for (i = 0; i < n; i++) {
12952     /* 0: loadb */
12953     var45 = ptr4[i];
12954     /* 2: subb */
12955     var57 = var45 - var46;
12956     /* 3: convsbw */
12957     var58.i = var57;
12958     /* 4: loadupib */
12959     var59 =
12960         (i & 1) ? ((orc_uint8) ptr5[i >> 1] + (orc_uint8) ptr5[(i >> 1) + 1] +
12961         1) >> 1 : ptr5[i >> 1];
12962     /* 6: subb */
12963     var60 = var59 - var47;
12964     /* 7: convsbw */
12965     var61.i = var60;
12966     /* 8: loadupib */
12967     var62 =
12968         (i & 1) ? ((orc_uint8) ptr6[i >> 1] + (orc_uint8) ptr6[(i >> 1) + 1] +
12969         1) >> 1 : ptr6[i >> 1];
12970     /* 10: subb */
12971     var63 = var62 - var48;
12972     /* 11: convsbw */
12973     var64.i = var63;
12974     /* 13: mullw */
12975     var65.i = (var58.i * var49.i) & 0xffff;
12976     /* 14: shrsw */
12977     var66.i = var65.i >> 8;
12978     /* 15: addssw */
12979     var67.i = ORC_CLAMP_SW (var58.i + var66.i);
12980     /* 16: addssw */
12981     var68.i = ORC_CLAMP_SW (var67.i + var64.i);
12982     /* 18: mullw */
12983     var69.i = (var64.i * var50.i) & 0xffff;
12984     /* 19: shrsw */
12985     var70.i = var69.i >> 8;
12986     /* 20: subssw */
12987     var71.i = ORC_CLAMP_SW (var68.i - var70.i);
12988     /* 21: addssw */
12989     var72.i = ORC_CLAMP_SW (var71.i + var64.i);
12990     /* 22: addssw */
12991     var73.i = ORC_CLAMP_SW (var67.i + var61.i);
12992     /* 23: addssw */
12993     var74.i = ORC_CLAMP_SW (var73.i + var61.i);
12994     /* 25: mullw */
12995     var75.i = (var61.i * var51.i) & 0xffff;
12996     /* 26: shrsw */
12997     var76.i = var75.i >> 8;
12998     /* 27: addssw */
12999     var77.i = ORC_CLAMP_SW (var74.i + var76.i);
13000     /* 29: mullw */
13001     var78.i = (var61.i * var52.i) & 0xffff;
13002     /* 30: shrsw */
13003     var79.i = var78.i >> 8;
13004     /* 31: subssw */
13005     var80.i = ORC_CLAMP_SW (var67.i - var79.i);
13006     /* 33: mullw */
13007     var81.i = (var64.i * var53.i) & 0xffff;
13008     /* 34: shrsw */
13009     var82.i = var81.i >> 8;
13010     /* 35: subssw */
13011     var83.i = ORC_CLAMP_SW (var80.i - var82.i);
13012     /* 36: subssw */
13013     var84.i = ORC_CLAMP_SW (var83.i - var82.i);
13014     /* 37: convssswb */
13015     var85 = ORC_CLAMP_SB (var72.i);
13016     /* 38: convssswb */
13017     var86 = ORC_CLAMP_SB (var84.i);
13018     /* 39: convssswb */
13019     var87 = ORC_CLAMP_SB (var77.i);
13020     /* 40: mergebw */
13021     {
13022       orc_union16 _dest;
13023       _dest.x2[0] = var87;
13024       _dest.x2[1] = var86;
13025       var88.i = _dest.i;
13026     }
13027     /* 42: mergebw */
13028     {
13029       orc_union16 _dest;
13030       _dest.x2[0] = var85;
13031       _dest.x2[1] = var54;
13032       var89.i = _dest.i;
13033     }
13034     /* 43: mergewl */
13035     {
13036       orc_union32 _dest;
13037       _dest.x2[0] = var88.i;
13038       _dest.x2[1] = var89.i;
13039       var90.i = _dest.i;
13040     }
13041     /* 45: addb */
13042     var56.x4[0] = var90.x4[0] + var55.x4[0];
13043     var56.x4[1] = var90.x4[1] + var55.x4[1];
13044     var56.x4[2] = var90.x4[2] + var55.x4[2];
13045     var56.x4[3] = var90.x4[3] + var55.x4[3];
13046     /* 46: storel */
13047     ptr0[i] = var56;
13048   }
13049
13050 }
13051
13052 #else
13053 static void
13054 _backup_cogorc_convert_I420_BGRA (OrcExecutor * ORC_RESTRICT ex)
13055 {
13056   int i;
13057   int n = ex->n;
13058   orc_union32 *ORC_RESTRICT ptr0;
13059   const orc_int8 *ORC_RESTRICT ptr4;
13060   const orc_int8 *ORC_RESTRICT ptr5;
13061   const orc_int8 *ORC_RESTRICT ptr6;
13062   orc_int8 var45;
13063   orc_int8 var46;
13064   orc_int8 var47;
13065   orc_int8 var48;
13066   orc_union16 var49;
13067   orc_union16 var50;
13068   orc_union16 var51;
13069   orc_union16 var52;
13070   orc_union16 var53;
13071   orc_int8 var54;
13072   orc_union32 var55;
13073   orc_union32 var56;
13074   orc_int8 var57;
13075   orc_union16 var58;
13076   orc_int8 var59;
13077   orc_int8 var60;
13078   orc_union16 var61;
13079   orc_int8 var62;
13080   orc_int8 var63;
13081   orc_union16 var64;
13082   orc_union16 var65;
13083   orc_union16 var66;
13084   orc_union16 var67;
13085   orc_union16 var68;
13086   orc_union16 var69;
13087   orc_union16 var70;
13088   orc_union16 var71;
13089   orc_union16 var72;
13090   orc_union16 var73;
13091   orc_union16 var74;
13092   orc_union16 var75;
13093   orc_union16 var76;
13094   orc_union16 var77;
13095   orc_union16 var78;
13096   orc_union16 var79;
13097   orc_union16 var80;
13098   orc_union16 var81;
13099   orc_union16 var82;
13100   orc_union16 var83;
13101   orc_union16 var84;
13102   orc_int8 var85;
13103   orc_int8 var86;
13104   orc_int8 var87;
13105   orc_union16 var88;
13106   orc_union16 var89;
13107   orc_union32 var90;
13108
13109   ptr0 = (orc_union32 *) ex->arrays[0];
13110   ptr4 = (orc_int8 *) ex->arrays[4];
13111   ptr5 = (orc_int8 *) ex->arrays[5];
13112   ptr6 = (orc_int8 *) ex->arrays[6];
13113
13114   /* 1: loadpb */
13115   var46 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
13116   /* 5: loadpb */
13117   var47 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
13118   /* 9: loadpb */
13119   var48 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
13120   /* 12: loadpw */
13121   var49.i = (int) 0x0000002a;   /* 42 or 2.07508e-322f */
13122   /* 17: loadpw */
13123   var50.i = (int) 0x00000067;   /* 103 or 5.08888e-322f */
13124   /* 24: loadpw */
13125   var51.i = (int) 0x00000004;   /* 4 or 1.97626e-323f */
13126   /* 28: loadpw */
13127   var52.i = (int) 0x00000064;   /* 100 or 4.94066e-322f */
13128   /* 32: loadpw */
13129   var53.i = (int) 0x00000068;   /* 104 or 5.13828e-322f */
13130   /* 41: loadpb */
13131   var54 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
13132   /* 44: loadpb */
13133   var55.x4[0] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
13134   var55.x4[1] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
13135   var55.x4[2] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
13136   var55.x4[3] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
13137
13138   for (i = 0; i < n; i++) {
13139     /* 0: loadb */
13140     var45 = ptr4[i];
13141     /* 2: subb */
13142     var57 = var45 - var46;
13143     /* 3: convsbw */
13144     var58.i = var57;
13145     /* 4: loadupib */
13146     var59 =
13147         (i & 1) ? ((orc_uint8) ptr5[i >> 1] + (orc_uint8) ptr5[(i >> 1) + 1] +
13148         1) >> 1 : ptr5[i >> 1];
13149     /* 6: subb */
13150     var60 = var59 - var47;
13151     /* 7: convsbw */
13152     var61.i = var60;
13153     /* 8: loadupib */
13154     var62 =
13155         (i & 1) ? ((orc_uint8) ptr6[i >> 1] + (orc_uint8) ptr6[(i >> 1) + 1] +
13156         1) >> 1 : ptr6[i >> 1];
13157     /* 10: subb */
13158     var63 = var62 - var48;
13159     /* 11: convsbw */
13160     var64.i = var63;
13161     /* 13: mullw */
13162     var65.i = (var58.i * var49.i) & 0xffff;
13163     /* 14: shrsw */
13164     var66.i = var65.i >> 8;
13165     /* 15: addssw */
13166     var67.i = ORC_CLAMP_SW (var58.i + var66.i);
13167     /* 16: addssw */
13168     var68.i = ORC_CLAMP_SW (var67.i + var64.i);
13169     /* 18: mullw */
13170     var69.i = (var64.i * var50.i) & 0xffff;
13171     /* 19: shrsw */
13172     var70.i = var69.i >> 8;
13173     /* 20: subssw */
13174     var71.i = ORC_CLAMP_SW (var68.i - var70.i);
13175     /* 21: addssw */
13176     var72.i = ORC_CLAMP_SW (var71.i + var64.i);
13177     /* 22: addssw */
13178     var73.i = ORC_CLAMP_SW (var67.i + var61.i);
13179     /* 23: addssw */
13180     var74.i = ORC_CLAMP_SW (var73.i + var61.i);
13181     /* 25: mullw */
13182     var75.i = (var61.i * var51.i) & 0xffff;
13183     /* 26: shrsw */
13184     var76.i = var75.i >> 8;
13185     /* 27: addssw */
13186     var77.i = ORC_CLAMP_SW (var74.i + var76.i);
13187     /* 29: mullw */
13188     var78.i = (var61.i * var52.i) & 0xffff;
13189     /* 30: shrsw */
13190     var79.i = var78.i >> 8;
13191     /* 31: subssw */
13192     var80.i = ORC_CLAMP_SW (var67.i - var79.i);
13193     /* 33: mullw */
13194     var81.i = (var64.i * var53.i) & 0xffff;
13195     /* 34: shrsw */
13196     var82.i = var81.i >> 8;
13197     /* 35: subssw */
13198     var83.i = ORC_CLAMP_SW (var80.i - var82.i);
13199     /* 36: subssw */
13200     var84.i = ORC_CLAMP_SW (var83.i - var82.i);
13201     /* 37: convssswb */
13202     var85 = ORC_CLAMP_SB (var72.i);
13203     /* 38: convssswb */
13204     var86 = ORC_CLAMP_SB (var84.i);
13205     /* 39: convssswb */
13206     var87 = ORC_CLAMP_SB (var77.i);
13207     /* 40: mergebw */
13208     {
13209       orc_union16 _dest;
13210       _dest.x2[0] = var87;
13211       _dest.x2[1] = var86;
13212       var88.i = _dest.i;
13213     }
13214     /* 42: mergebw */
13215     {
13216       orc_union16 _dest;
13217       _dest.x2[0] = var85;
13218       _dest.x2[1] = var54;
13219       var89.i = _dest.i;
13220     }
13221     /* 43: mergewl */
13222     {
13223       orc_union32 _dest;
13224       _dest.x2[0] = var88.i;
13225       _dest.x2[1] = var89.i;
13226       var90.i = _dest.i;
13227     }
13228     /* 45: addb */
13229     var56.x4[0] = var90.x4[0] + var55.x4[0];
13230     var56.x4[1] = var90.x4[1] + var55.x4[1];
13231     var56.x4[2] = var90.x4[2] + var55.x4[2];
13232     var56.x4[3] = var90.x4[3] + var55.x4[3];
13233     /* 46: storel */
13234     ptr0[i] = var56;
13235   }
13236
13237 }
13238
13239 void
13240 cogorc_convert_I420_BGRA (guint8 * ORC_RESTRICT d1,
13241     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
13242     const guint8 * ORC_RESTRICT s3, int n)
13243 {
13244   OrcExecutor _ex, *ex = &_ex;
13245   static volatile int p_inited = 0;
13246   static OrcProgram *p = 0;
13247   void (*func) (OrcExecutor *);
13248
13249   if (!p_inited) {
13250     orc_once_mutex_lock ();
13251     if (!p_inited) {
13252
13253       p = orc_program_new ();
13254       orc_program_set_name (p, "cogorc_convert_I420_BGRA");
13255       orc_program_set_backup_function (p, _backup_cogorc_convert_I420_BGRA);
13256       orc_program_add_destination (p, 4, "d1");
13257       orc_program_add_source (p, 1, "s1");
13258       orc_program_add_source (p, 1, "s2");
13259       orc_program_add_source (p, 1, "s3");
13260       orc_program_add_constant (p, 1, 0x00000008, "c1");
13261       orc_program_add_constant (p, 1, 0x00000080, "c2");
13262       orc_program_add_constant (p, 4, 0x0000002a, "c3");
13263       orc_program_add_constant (p, 4, 0x00000067, "c4");
13264       orc_program_add_constant (p, 4, 0x00000004, "c5");
13265       orc_program_add_constant (p, 4, 0x00000064, "c6");
13266       orc_program_add_constant (p, 4, 0x00000068, "c7");
13267       orc_program_add_constant (p, 4, 0x000000ff, "c8");
13268       orc_program_add_temporary (p, 2, "t1");
13269       orc_program_add_temporary (p, 2, "t2");
13270       orc_program_add_temporary (p, 1, "t3");
13271       orc_program_add_temporary (p, 2, "t4");
13272       orc_program_add_temporary (p, 2, "t5");
13273       orc_program_add_temporary (p, 2, "t6");
13274       orc_program_add_temporary (p, 2, "t7");
13275       orc_program_add_temporary (p, 2, "t8");
13276       orc_program_add_temporary (p, 2, "t9");
13277       orc_program_add_temporary (p, 1, "t10");
13278       orc_program_add_temporary (p, 1, "t11");
13279       orc_program_add_temporary (p, 1, "t12");
13280       orc_program_add_temporary (p, 4, "t13");
13281
13282       orc_program_append_2 (p, "subb", 0, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_C2,
13283           ORC_VAR_D1);
13284       orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1,
13285           ORC_VAR_D1);
13286       orc_program_append_2 (p, "loadupib", 0, ORC_VAR_T3, ORC_VAR_S2,
13287           ORC_VAR_D1, ORC_VAR_D1);
13288       orc_program_append_2 (p, "subb", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2,
13289           ORC_VAR_D1);
13290       orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_D1,
13291           ORC_VAR_D1);
13292       orc_program_append_2 (p, "loadupib", 0, ORC_VAR_T3, ORC_VAR_S3,
13293           ORC_VAR_D1, ORC_VAR_D1);
13294       orc_program_append_2 (p, "subb", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2,
13295           ORC_VAR_D1);
13296       orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_D1,
13297           ORC_VAR_D1);
13298       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T4, ORC_VAR_C3,
13299           ORC_VAR_D1);
13300       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
13301           ORC_VAR_D1);
13302       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T1,
13303           ORC_VAR_D1);
13304       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_T6,
13305           ORC_VAR_D1);
13306       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T6, ORC_VAR_C4,
13307           ORC_VAR_D1);
13308       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
13309           ORC_VAR_D1);
13310       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T1,
13311           ORC_VAR_D1);
13312       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T6,
13313           ORC_VAR_D1);
13314       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T9, ORC_VAR_T4, ORC_VAR_T5,
13315           ORC_VAR_D1);
13316       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T5,
13317           ORC_VAR_D1);
13318       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_C5,
13319           ORC_VAR_D1);
13320       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
13321           ORC_VAR_D1);
13322       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T1,
13323           ORC_VAR_D1);
13324       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_C6,
13325           ORC_VAR_D1);
13326       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
13327           ORC_VAR_D1);
13328       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T8, ORC_VAR_T4, ORC_VAR_T1,
13329           ORC_VAR_D1);
13330       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T6, ORC_VAR_C7,
13331           ORC_VAR_D1);
13332       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
13333           ORC_VAR_D1);
13334       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T1,
13335           ORC_VAR_D1);
13336       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T1,
13337           ORC_VAR_D1);
13338       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T10, ORC_VAR_T7,
13339           ORC_VAR_D1, ORC_VAR_D1);
13340       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T11, ORC_VAR_T8,
13341           ORC_VAR_D1, ORC_VAR_D1);
13342       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T12, ORC_VAR_T9,
13343           ORC_VAR_D1, ORC_VAR_D1);
13344       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T12,
13345           ORC_VAR_T11, ORC_VAR_D1);
13346       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_T10,
13347           ORC_VAR_C8, ORC_VAR_D1);
13348       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T13, ORC_VAR_T1,
13349           ORC_VAR_T2, ORC_VAR_D1);
13350       orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T13, ORC_VAR_C2,
13351           ORC_VAR_D1);
13352
13353       orc_program_compile (p);
13354     }
13355     p_inited = TRUE;
13356     orc_once_mutex_unlock ();
13357   }
13358   ex->program = p;
13359
13360   ex->n = n;
13361   ex->arrays[ORC_VAR_D1] = d1;
13362   ex->arrays[ORC_VAR_S1] = (void *) s1;
13363   ex->arrays[ORC_VAR_S2] = (void *) s2;
13364   ex->arrays[ORC_VAR_S3] = (void *) s3;
13365
13366   func = p->code_exec;
13367   func (ex);
13368 }
13369 #endif
13370
13371
13372 /* cogorc_convert_I420_BGRA_avg */
13373 #ifdef DISABLE_ORC
13374 void
13375 cogorc_convert_I420_BGRA_avg (guint8 * ORC_RESTRICT d1,
13376     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
13377     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4,
13378     const guint8 * ORC_RESTRICT s5, int n)
13379 {
13380   int i;
13381   orc_union32 *ORC_RESTRICT ptr0;
13382   const orc_int8 *ORC_RESTRICT ptr4;
13383   const orc_int8 *ORC_RESTRICT ptr5;
13384   const orc_int8 *ORC_RESTRICT ptr6;
13385   const orc_int8 *ORC_RESTRICT ptr7;
13386   const orc_int8 *ORC_RESTRICT ptr8;
13387   orc_int8 var46;
13388   orc_int8 var47;
13389   orc_int8 var48;
13390   orc_int8 var49;
13391   orc_union16 var50;
13392   orc_union16 var51;
13393   orc_union16 var52;
13394   orc_union16 var53;
13395   orc_union16 var54;
13396   orc_int8 var55;
13397   orc_union32 var56;
13398   orc_union32 var57;
13399   orc_int8 var58;
13400   orc_union16 var59;
13401   orc_int8 var60;
13402   orc_int8 var61;
13403   orc_int8 var62;
13404   orc_int8 var63;
13405   orc_union16 var64;
13406   orc_int8 var65;
13407   orc_int8 var66;
13408   orc_int8 var67;
13409   orc_int8 var68;
13410   orc_union16 var69;
13411   orc_union16 var70;
13412   orc_union16 var71;
13413   orc_union16 var72;
13414   orc_union16 var73;
13415   orc_union16 var74;
13416   orc_union16 var75;
13417   orc_union16 var76;
13418   orc_union16 var77;
13419   orc_union16 var78;
13420   orc_union16 var79;
13421   orc_union16 var80;
13422   orc_union16 var81;
13423   orc_union16 var82;
13424   orc_union16 var83;
13425   orc_union16 var84;
13426   orc_union16 var85;
13427   orc_union16 var86;
13428   orc_union16 var87;
13429   orc_union16 var88;
13430   orc_union16 var89;
13431   orc_int8 var90;
13432   orc_int8 var91;
13433   orc_int8 var92;
13434   orc_union16 var93;
13435   orc_union16 var94;
13436   orc_union32 var95;
13437
13438   ptr0 = (orc_union32 *) d1;
13439   ptr4 = (orc_int8 *) s1;
13440   ptr5 = (orc_int8 *) s2;
13441   ptr6 = (orc_int8 *) s3;
13442   ptr7 = (orc_int8 *) s4;
13443   ptr8 = (orc_int8 *) s5;
13444
13445   /* 1: loadpb */
13446   var47 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
13447   /* 7: loadpb */
13448   var48 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
13449   /* 13: loadpb */
13450   var49 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
13451   /* 16: loadpw */
13452   var50.i = (int) 0x0000002a;   /* 42 or 2.07508e-322f */
13453   /* 21: loadpw */
13454   var51.i = (int) 0x00000067;   /* 103 or 5.08888e-322f */
13455   /* 28: loadpw */
13456   var52.i = (int) 0x00000004;   /* 4 or 1.97626e-323f */
13457   /* 32: loadpw */
13458   var53.i = (int) 0x00000064;   /* 100 or 4.94066e-322f */
13459   /* 36: loadpw */
13460   var54.i = (int) 0x00000068;   /* 104 or 5.13828e-322f */
13461   /* 45: loadpb */
13462   var55 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
13463   /* 48: loadpb */
13464   var56.x4[0] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
13465   var56.x4[1] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
13466   var56.x4[2] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
13467   var56.x4[3] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
13468
13469   for (i = 0; i < n; i++) {
13470     /* 0: loadb */
13471     var46 = ptr4[i];
13472     /* 2: subb */
13473     var58 = var46 - var47;
13474     /* 3: convsbw */
13475     var59.i = var58;
13476     /* 4: loadupib */
13477     var60 =
13478         (i & 1) ? ((orc_uint8) ptr5[i >> 1] + (orc_uint8) ptr5[(i >> 1) + 1] +
13479         1) >> 1 : ptr5[i >> 1];
13480     /* 5: loadupib */
13481     var61 =
13482         (i & 1) ? ((orc_uint8) ptr6[i >> 1] + (orc_uint8) ptr6[(i >> 1) + 1] +
13483         1) >> 1 : ptr6[i >> 1];
13484     /* 6: avgub */
13485     var62 = ((orc_uint8) var60 + (orc_uint8) var61 + 1) >> 1;
13486     /* 8: subb */
13487     var63 = var62 - var48;
13488     /* 9: convsbw */
13489     var64.i = var63;
13490     /* 10: loadupib */
13491     var65 =
13492         (i & 1) ? ((orc_uint8) ptr7[i >> 1] + (orc_uint8) ptr7[(i >> 1) + 1] +
13493         1) >> 1 : ptr7[i >> 1];
13494     /* 11: loadupib */
13495     var66 =
13496         (i & 1) ? ((orc_uint8) ptr8[i >> 1] + (orc_uint8) ptr8[(i >> 1) + 1] +
13497         1) >> 1 : ptr8[i >> 1];
13498     /* 12: avgub */
13499     var67 = ((orc_uint8) var65 + (orc_uint8) var66 + 1) >> 1;
13500     /* 14: subb */
13501     var68 = var67 - var49;
13502     /* 15: convsbw */
13503     var69.i = var68;
13504     /* 17: mullw */
13505     var70.i = (var59.i * var50.i) & 0xffff;
13506     /* 18: shrsw */
13507     var71.i = var70.i >> 8;
13508     /* 19: addssw */
13509     var72.i = ORC_CLAMP_SW (var59.i + var71.i);
13510     /* 20: addssw */
13511     var73.i = ORC_CLAMP_SW (var72.i + var69.i);
13512     /* 22: mullw */
13513     var74.i = (var69.i * var51.i) & 0xffff;
13514     /* 23: shrsw */
13515     var75.i = var74.i >> 8;
13516     /* 24: subssw */
13517     var76.i = ORC_CLAMP_SW (var73.i - var75.i);
13518     /* 25: addssw */
13519     var77.i = ORC_CLAMP_SW (var76.i + var69.i);
13520     /* 26: addssw */
13521     var78.i = ORC_CLAMP_SW (var72.i + var64.i);
13522     /* 27: addssw */
13523     var79.i = ORC_CLAMP_SW (var78.i + var64.i);
13524     /* 29: mullw */
13525     var80.i = (var64.i * var52.i) & 0xffff;
13526     /* 30: shrsw */
13527     var81.i = var80.i >> 8;
13528     /* 31: addssw */
13529     var82.i = ORC_CLAMP_SW (var79.i + var81.i);
13530     /* 33: mullw */
13531     var83.i = (var64.i * var53.i) & 0xffff;
13532     /* 34: shrsw */
13533     var84.i = var83.i >> 8;
13534     /* 35: subssw */
13535     var85.i = ORC_CLAMP_SW (var72.i - var84.i);
13536     /* 37: mullw */
13537     var86.i = (var69.i * var54.i) & 0xffff;
13538     /* 38: shrsw */
13539     var87.i = var86.i >> 8;
13540     /* 39: subssw */
13541     var88.i = ORC_CLAMP_SW (var85.i - var87.i);
13542     /* 40: subssw */
13543     var89.i = ORC_CLAMP_SW (var88.i - var87.i);
13544     /* 41: convssswb */
13545     var90 = ORC_CLAMP_SB (var77.i);
13546     /* 42: convssswb */
13547     var91 = ORC_CLAMP_SB (var89.i);
13548     /* 43: convssswb */
13549     var92 = ORC_CLAMP_SB (var82.i);
13550     /* 44: mergebw */
13551     {
13552       orc_union16 _dest;
13553       _dest.x2[0] = var92;
13554       _dest.x2[1] = var91;
13555       var93.i = _dest.i;
13556     }
13557     /* 46: mergebw */
13558     {
13559       orc_union16 _dest;
13560       _dest.x2[0] = var90;
13561       _dest.x2[1] = var55;
13562       var94.i = _dest.i;
13563     }
13564     /* 47: mergewl */
13565     {
13566       orc_union32 _dest;
13567       _dest.x2[0] = var93.i;
13568       _dest.x2[1] = var94.i;
13569       var95.i = _dest.i;
13570     }
13571     /* 49: addb */
13572     var57.x4[0] = var95.x4[0] + var56.x4[0];
13573     var57.x4[1] = var95.x4[1] + var56.x4[1];
13574     var57.x4[2] = var95.x4[2] + var56.x4[2];
13575     var57.x4[3] = var95.x4[3] + var56.x4[3];
13576     /* 50: storel */
13577     ptr0[i] = var57;
13578   }
13579
13580 }
13581
13582 #else
13583 static void
13584 _backup_cogorc_convert_I420_BGRA_avg (OrcExecutor * ORC_RESTRICT ex)
13585 {
13586   int i;
13587   int n = ex->n;
13588   orc_union32 *ORC_RESTRICT ptr0;
13589   const orc_int8 *ORC_RESTRICT ptr4;
13590   const orc_int8 *ORC_RESTRICT ptr5;
13591   const orc_int8 *ORC_RESTRICT ptr6;
13592   const orc_int8 *ORC_RESTRICT ptr7;
13593   const orc_int8 *ORC_RESTRICT ptr8;
13594   orc_int8 var46;
13595   orc_int8 var47;
13596   orc_int8 var48;
13597   orc_int8 var49;
13598   orc_union16 var50;
13599   orc_union16 var51;
13600   orc_union16 var52;
13601   orc_union16 var53;
13602   orc_union16 var54;
13603   orc_int8 var55;
13604   orc_union32 var56;
13605   orc_union32 var57;
13606   orc_int8 var58;
13607   orc_union16 var59;
13608   orc_int8 var60;
13609   orc_int8 var61;
13610   orc_int8 var62;
13611   orc_int8 var63;
13612   orc_union16 var64;
13613   orc_int8 var65;
13614   orc_int8 var66;
13615   orc_int8 var67;
13616   orc_int8 var68;
13617   orc_union16 var69;
13618   orc_union16 var70;
13619   orc_union16 var71;
13620   orc_union16 var72;
13621   orc_union16 var73;
13622   orc_union16 var74;
13623   orc_union16 var75;
13624   orc_union16 var76;
13625   orc_union16 var77;
13626   orc_union16 var78;
13627   orc_union16 var79;
13628   orc_union16 var80;
13629   orc_union16 var81;
13630   orc_union16 var82;
13631   orc_union16 var83;
13632   orc_union16 var84;
13633   orc_union16 var85;
13634   orc_union16 var86;
13635   orc_union16 var87;
13636   orc_union16 var88;
13637   orc_union16 var89;
13638   orc_int8 var90;
13639   orc_int8 var91;
13640   orc_int8 var92;
13641   orc_union16 var93;
13642   orc_union16 var94;
13643   orc_union32 var95;
13644
13645   ptr0 = (orc_union32 *) ex->arrays[0];
13646   ptr4 = (orc_int8 *) ex->arrays[4];
13647   ptr5 = (orc_int8 *) ex->arrays[5];
13648   ptr6 = (orc_int8 *) ex->arrays[6];
13649   ptr7 = (orc_int8 *) ex->arrays[7];
13650   ptr8 = (orc_int8 *) ex->arrays[8];
13651
13652   /* 1: loadpb */
13653   var47 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
13654   /* 7: loadpb */
13655   var48 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
13656   /* 13: loadpb */
13657   var49 = (int) 0x00000080;     /* 128 or 6.32404e-322f */
13658   /* 16: loadpw */
13659   var50.i = (int) 0x0000002a;   /* 42 or 2.07508e-322f */
13660   /* 21: loadpw */
13661   var51.i = (int) 0x00000067;   /* 103 or 5.08888e-322f */
13662   /* 28: loadpw */
13663   var52.i = (int) 0x00000004;   /* 4 or 1.97626e-323f */
13664   /* 32: loadpw */
13665   var53.i = (int) 0x00000064;   /* 100 or 4.94066e-322f */
13666   /* 36: loadpw */
13667   var54.i = (int) 0x00000068;   /* 104 or 5.13828e-322f */
13668   /* 45: loadpb */
13669   var55 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
13670   /* 48: loadpb */
13671   var56.x4[0] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
13672   var56.x4[1] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
13673   var56.x4[2] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
13674   var56.x4[3] = (int) 0x00000080;       /* 128 or 6.32404e-322f */
13675
13676   for (i = 0; i < n; i++) {
13677     /* 0: loadb */
13678     var46 = ptr4[i];
13679     /* 2: subb */
13680     var58 = var46 - var47;
13681     /* 3: convsbw */
13682     var59.i = var58;
13683     /* 4: loadupib */
13684     var60 =
13685         (i & 1) ? ((orc_uint8) ptr5[i >> 1] + (orc_uint8) ptr5[(i >> 1) + 1] +
13686         1) >> 1 : ptr5[i >> 1];
13687     /* 5: loadupib */
13688     var61 =
13689         (i & 1) ? ((orc_uint8) ptr6[i >> 1] + (orc_uint8) ptr6[(i >> 1) + 1] +
13690         1) >> 1 : ptr6[i >> 1];
13691     /* 6: avgub */
13692     var62 = ((orc_uint8) var60 + (orc_uint8) var61 + 1) >> 1;
13693     /* 8: subb */
13694     var63 = var62 - var48;
13695     /* 9: convsbw */
13696     var64.i = var63;
13697     /* 10: loadupib */
13698     var65 =
13699         (i & 1) ? ((orc_uint8) ptr7[i >> 1] + (orc_uint8) ptr7[(i >> 1) + 1] +
13700         1) >> 1 : ptr7[i >> 1];
13701     /* 11: loadupib */
13702     var66 =
13703         (i & 1) ? ((orc_uint8) ptr8[i >> 1] + (orc_uint8) ptr8[(i >> 1) + 1] +
13704         1) >> 1 : ptr8[i >> 1];
13705     /* 12: avgub */
13706     var67 = ((orc_uint8) var65 + (orc_uint8) var66 + 1) >> 1;
13707     /* 14: subb */
13708     var68 = var67 - var49;
13709     /* 15: convsbw */
13710     var69.i = var68;
13711     /* 17: mullw */
13712     var70.i = (var59.i * var50.i) & 0xffff;
13713     /* 18: shrsw */
13714     var71.i = var70.i >> 8;
13715     /* 19: addssw */
13716     var72.i = ORC_CLAMP_SW (var59.i + var71.i);
13717     /* 20: addssw */
13718     var73.i = ORC_CLAMP_SW (var72.i + var69.i);
13719     /* 22: mullw */
13720     var74.i = (var69.i * var51.i) & 0xffff;
13721     /* 23: shrsw */
13722     var75.i = var74.i >> 8;
13723     /* 24: subssw */
13724     var76.i = ORC_CLAMP_SW (var73.i - var75.i);
13725     /* 25: addssw */
13726     var77.i = ORC_CLAMP_SW (var76.i + var69.i);
13727     /* 26: addssw */
13728     var78.i = ORC_CLAMP_SW (var72.i + var64.i);
13729     /* 27: addssw */
13730     var79.i = ORC_CLAMP_SW (var78.i + var64.i);
13731     /* 29: mullw */
13732     var80.i = (var64.i * var52.i) & 0xffff;
13733     /* 30: shrsw */
13734     var81.i = var80.i >> 8;
13735     /* 31: addssw */
13736     var82.i = ORC_CLAMP_SW (var79.i + var81.i);
13737     /* 33: mullw */
13738     var83.i = (var64.i * var53.i) & 0xffff;
13739     /* 34: shrsw */
13740     var84.i = var83.i >> 8;
13741     /* 35: subssw */
13742     var85.i = ORC_CLAMP_SW (var72.i - var84.i);
13743     /* 37: mullw */
13744     var86.i = (var69.i * var54.i) & 0xffff;
13745     /* 38: shrsw */
13746     var87.i = var86.i >> 8;
13747     /* 39: subssw */
13748     var88.i = ORC_CLAMP_SW (var85.i - var87.i);
13749     /* 40: subssw */
13750     var89.i = ORC_CLAMP_SW (var88.i - var87.i);
13751     /* 41: convssswb */
13752     var90 = ORC_CLAMP_SB (var77.i);
13753     /* 42: convssswb */
13754     var91 = ORC_CLAMP_SB (var89.i);
13755     /* 43: convssswb */
13756     var92 = ORC_CLAMP_SB (var82.i);
13757     /* 44: mergebw */
13758     {
13759       orc_union16 _dest;
13760       _dest.x2[0] = var92;
13761       _dest.x2[1] = var91;
13762       var93.i = _dest.i;
13763     }
13764     /* 46: mergebw */
13765     {
13766       orc_union16 _dest;
13767       _dest.x2[0] = var90;
13768       _dest.x2[1] = var55;
13769       var94.i = _dest.i;
13770     }
13771     /* 47: mergewl */
13772     {
13773       orc_union32 _dest;
13774       _dest.x2[0] = var93.i;
13775       _dest.x2[1] = var94.i;
13776       var95.i = _dest.i;
13777     }
13778     /* 49: addb */
13779     var57.x4[0] = var95.x4[0] + var56.x4[0];
13780     var57.x4[1] = var95.x4[1] + var56.x4[1];
13781     var57.x4[2] = var95.x4[2] + var56.x4[2];
13782     var57.x4[3] = var95.x4[3] + var56.x4[3];
13783     /* 50: storel */
13784     ptr0[i] = var57;
13785   }
13786
13787 }
13788
13789 void
13790 cogorc_convert_I420_BGRA_avg (guint8 * ORC_RESTRICT d1,
13791     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
13792     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4,
13793     const guint8 * ORC_RESTRICT s5, int n)
13794 {
13795   OrcExecutor _ex, *ex = &_ex;
13796   static volatile int p_inited = 0;
13797   static OrcProgram *p = 0;
13798   void (*func) (OrcExecutor *);
13799
13800   if (!p_inited) {
13801     orc_once_mutex_lock ();
13802     if (!p_inited) {
13803
13804       p = orc_program_new ();
13805       orc_program_set_name (p, "cogorc_convert_I420_BGRA_avg");
13806       orc_program_set_backup_function (p, _backup_cogorc_convert_I420_BGRA_avg);
13807       orc_program_add_destination (p, 4, "d1");
13808       orc_program_add_source (p, 1, "s1");
13809       orc_program_add_source (p, 1, "s2");
13810       orc_program_add_source (p, 1, "s3");
13811       orc_program_add_source (p, 1, "s4");
13812       orc_program_add_source (p, 1, "s5");
13813       orc_program_add_constant (p, 1, 0x00000008, "c1");
13814       orc_program_add_constant (p, 1, 0x00000080, "c2");
13815       orc_program_add_constant (p, 4, 0x0000002a, "c3");
13816       orc_program_add_constant (p, 4, 0x00000067, "c4");
13817       orc_program_add_constant (p, 4, 0x00000004, "c5");
13818       orc_program_add_constant (p, 4, 0x00000064, "c6");
13819       orc_program_add_constant (p, 4, 0x00000068, "c7");
13820       orc_program_add_constant (p, 4, 0x000000ff, "c8");
13821       orc_program_add_temporary (p, 2, "t1");
13822       orc_program_add_temporary (p, 2, "t2");
13823       orc_program_add_temporary (p, 1, "t3");
13824       orc_program_add_temporary (p, 1, "t4");
13825       orc_program_add_temporary (p, 2, "t5");
13826       orc_program_add_temporary (p, 2, "t6");
13827       orc_program_add_temporary (p, 2, "t7");
13828       orc_program_add_temporary (p, 2, "t8");
13829       orc_program_add_temporary (p, 2, "t9");
13830       orc_program_add_temporary (p, 2, "t10");
13831       orc_program_add_temporary (p, 1, "t11");
13832       orc_program_add_temporary (p, 1, "t12");
13833       orc_program_add_temporary (p, 1, "t13");
13834       orc_program_add_temporary (p, 4, "t14");
13835
13836       orc_program_append_2 (p, "subb", 0, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_C2,
13837           ORC_VAR_D1);
13838       orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_D1,
13839           ORC_VAR_D1);
13840       orc_program_append_2 (p, "loadupib", 0, ORC_VAR_T3, ORC_VAR_S2,
13841           ORC_VAR_D1, ORC_VAR_D1);
13842       orc_program_append_2 (p, "loadupib", 0, ORC_VAR_T4, ORC_VAR_S3,
13843           ORC_VAR_D1, ORC_VAR_D1);
13844       orc_program_append_2 (p, "avgub", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4,
13845           ORC_VAR_D1);
13846       orc_program_append_2 (p, "subb", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2,
13847           ORC_VAR_D1);
13848       orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_D1,
13849           ORC_VAR_D1);
13850       orc_program_append_2 (p, "loadupib", 0, ORC_VAR_T3, ORC_VAR_S4,
13851           ORC_VAR_D1, ORC_VAR_D1);
13852       orc_program_append_2 (p, "loadupib", 0, ORC_VAR_T4, ORC_VAR_S5,
13853           ORC_VAR_D1, ORC_VAR_D1);
13854       orc_program_append_2 (p, "avgub", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4,
13855           ORC_VAR_D1);
13856       orc_program_append_2 (p, "subb", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2,
13857           ORC_VAR_D1);
13858       orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T7, ORC_VAR_T3, ORC_VAR_D1,
13859           ORC_VAR_D1);
13860       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_C3,
13861           ORC_VAR_D1);
13862       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
13863           ORC_VAR_D1);
13864       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T1,
13865           ORC_VAR_D1);
13866       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T7,
13867           ORC_VAR_D1);
13868       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_C4,
13869           ORC_VAR_D1);
13870       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
13871           ORC_VAR_D1);
13872       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T1,
13873           ORC_VAR_D1);
13874       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T7,
13875           ORC_VAR_D1);
13876       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T5, ORC_VAR_T6,
13877           ORC_VAR_D1);
13878       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T10,
13879           ORC_VAR_T6, ORC_VAR_D1);
13880       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T6, ORC_VAR_C5,
13881           ORC_VAR_D1);
13882       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
13883           ORC_VAR_D1);
13884       orc_program_append_2 (p, "addssw", 0, ORC_VAR_T10, ORC_VAR_T10,
13885           ORC_VAR_T1, ORC_VAR_D1);
13886       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T6, ORC_VAR_C6,
13887           ORC_VAR_D1);
13888       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
13889           ORC_VAR_D1);
13890       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T9, ORC_VAR_T5, ORC_VAR_T1,
13891           ORC_VAR_D1);
13892       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_C7,
13893           ORC_VAR_D1);
13894       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
13895           ORC_VAR_D1);
13896       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T1,
13897           ORC_VAR_D1);
13898       orc_program_append_2 (p, "subssw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T1,
13899           ORC_VAR_D1);
13900       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T11, ORC_VAR_T8,
13901           ORC_VAR_D1, ORC_VAR_D1);
13902       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T12, ORC_VAR_T9,
13903           ORC_VAR_D1, ORC_VAR_D1);
13904       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T13, ORC_VAR_T10,
13905           ORC_VAR_D1, ORC_VAR_D1);
13906       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T13,
13907           ORC_VAR_T12, ORC_VAR_D1);
13908       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_T11,
13909           ORC_VAR_C8, ORC_VAR_D1);
13910       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T14, ORC_VAR_T1,
13911           ORC_VAR_T2, ORC_VAR_D1);
13912       orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T14, ORC_VAR_C2,
13913           ORC_VAR_D1);
13914
13915       orc_program_compile (p);
13916     }
13917     p_inited = TRUE;
13918     orc_once_mutex_unlock ();
13919   }
13920   ex->program = p;
13921
13922   ex->n = n;
13923   ex->arrays[ORC_VAR_D1] = d1;
13924   ex->arrays[ORC_VAR_S1] = (void *) s1;
13925   ex->arrays[ORC_VAR_S2] = (void *) s2;
13926   ex->arrays[ORC_VAR_S3] = (void *) s3;
13927   ex->arrays[ORC_VAR_S4] = (void *) s4;
13928   ex->arrays[ORC_VAR_S5] = (void *) s5;
13929
13930   func = p->code_exec;
13931   func (ex);
13932 }
13933 #endif
13934
13935
13936 /* cogorc_getline_I420 */
13937 #ifdef DISABLE_ORC
13938 void
13939 cogorc_getline_I420 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
13940     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n)
13941 {
13942   int i;
13943   orc_union32 *ORC_RESTRICT ptr0;
13944   const orc_int8 *ORC_RESTRICT ptr4;
13945   const orc_int8 *ORC_RESTRICT ptr5;
13946   const orc_int8 *ORC_RESTRICT ptr6;
13947   orc_int8 var36;
13948   orc_int8 var37;
13949   orc_union32 var38;
13950   orc_int8 var39;
13951   orc_int8 var40;
13952   orc_union16 var41;
13953   orc_union16 var42;
13954
13955   ptr0 = (orc_union32 *) d1;
13956   ptr4 = (orc_int8 *) s1;
13957   ptr5 = (orc_int8 *) s2;
13958   ptr6 = (orc_int8 *) s3;
13959
13960   /* 3: loadpb */
13961   var36 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
13962
13963   for (i = 0; i < n; i++) {
13964     /* 0: loadupdb */
13965     var39 = ptr5[i >> 1];
13966     /* 1: loadupdb */
13967     var40 = ptr6[i >> 1];
13968     /* 2: mergebw */
13969     {
13970       orc_union16 _dest;
13971       _dest.x2[0] = var39;
13972       _dest.x2[1] = var40;
13973       var41.i = _dest.i;
13974     }
13975     /* 4: loadb */
13976     var37 = ptr4[i];
13977     /* 5: mergebw */
13978     {
13979       orc_union16 _dest;
13980       _dest.x2[0] = var36;
13981       _dest.x2[1] = var37;
13982       var42.i = _dest.i;
13983     }
13984     /* 6: mergewl */
13985     {
13986       orc_union32 _dest;
13987       _dest.x2[0] = var42.i;
13988       _dest.x2[1] = var41.i;
13989       var38.i = _dest.i;
13990     }
13991     /* 7: storel */
13992     ptr0[i] = var38;
13993   }
13994
13995 }
13996
13997 #else
13998 static void
13999 _backup_cogorc_getline_I420 (OrcExecutor * ORC_RESTRICT ex)
14000 {
14001   int i;
14002   int n = ex->n;
14003   orc_union32 *ORC_RESTRICT ptr0;
14004   const orc_int8 *ORC_RESTRICT ptr4;
14005   const orc_int8 *ORC_RESTRICT ptr5;
14006   const orc_int8 *ORC_RESTRICT ptr6;
14007   orc_int8 var36;
14008   orc_int8 var37;
14009   orc_union32 var38;
14010   orc_int8 var39;
14011   orc_int8 var40;
14012   orc_union16 var41;
14013   orc_union16 var42;
14014
14015   ptr0 = (orc_union32 *) ex->arrays[0];
14016   ptr4 = (orc_int8 *) ex->arrays[4];
14017   ptr5 = (orc_int8 *) ex->arrays[5];
14018   ptr6 = (orc_int8 *) ex->arrays[6];
14019
14020   /* 3: loadpb */
14021   var36 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
14022
14023   for (i = 0; i < n; i++) {
14024     /* 0: loadupdb */
14025     var39 = ptr5[i >> 1];
14026     /* 1: loadupdb */
14027     var40 = ptr6[i >> 1];
14028     /* 2: mergebw */
14029     {
14030       orc_union16 _dest;
14031       _dest.x2[0] = var39;
14032       _dest.x2[1] = var40;
14033       var41.i = _dest.i;
14034     }
14035     /* 4: loadb */
14036     var37 = ptr4[i];
14037     /* 5: mergebw */
14038     {
14039       orc_union16 _dest;
14040       _dest.x2[0] = var36;
14041       _dest.x2[1] = var37;
14042       var42.i = _dest.i;
14043     }
14044     /* 6: mergewl */
14045     {
14046       orc_union32 _dest;
14047       _dest.x2[0] = var42.i;
14048       _dest.x2[1] = var41.i;
14049       var38.i = _dest.i;
14050     }
14051     /* 7: storel */
14052     ptr0[i] = var38;
14053   }
14054
14055 }
14056
14057 void
14058 cogorc_getline_I420 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
14059     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n)
14060 {
14061   OrcExecutor _ex, *ex = &_ex;
14062   static volatile int p_inited = 0;
14063   static OrcProgram *p = 0;
14064   void (*func) (OrcExecutor *);
14065
14066   if (!p_inited) {
14067     orc_once_mutex_lock ();
14068     if (!p_inited) {
14069
14070       p = orc_program_new ();
14071       orc_program_set_name (p, "cogorc_getline_I420");
14072       orc_program_set_backup_function (p, _backup_cogorc_getline_I420);
14073       orc_program_add_destination (p, 4, "d1");
14074       orc_program_add_source (p, 1, "s1");
14075       orc_program_add_source (p, 1, "s2");
14076       orc_program_add_source (p, 1, "s3");
14077       orc_program_add_constant (p, 1, 0x000000ff, "c1");
14078       orc_program_add_temporary (p, 2, "t1");
14079       orc_program_add_temporary (p, 2, "t2");
14080       orc_program_add_temporary (p, 1, "t3");
14081       orc_program_add_temporary (p, 1, "t4");
14082
14083       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T3, ORC_VAR_S2,
14084           ORC_VAR_D1, ORC_VAR_D1);
14085       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T4, ORC_VAR_S3,
14086           ORC_VAR_D1, ORC_VAR_D1);
14087       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4,
14088           ORC_VAR_D1);
14089       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1,
14090           ORC_VAR_D1);
14091       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
14092           ORC_VAR_D1);
14093
14094       orc_program_compile (p);
14095     }
14096     p_inited = TRUE;
14097     orc_once_mutex_unlock ();
14098   }
14099   ex->program = p;
14100
14101   ex->n = n;
14102   ex->arrays[ORC_VAR_D1] = d1;
14103   ex->arrays[ORC_VAR_S1] = (void *) s1;
14104   ex->arrays[ORC_VAR_S2] = (void *) s2;
14105   ex->arrays[ORC_VAR_S3] = (void *) s3;
14106
14107   func = p->code_exec;
14108   func (ex);
14109 }
14110 #endif
14111
14112
14113 /* cogorc_getline_YUV9 */
14114 #ifdef DISABLE_ORC
14115 void
14116 cogorc_getline_YUV9 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
14117     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n)
14118 {
14119   int i;
14120   orc_union64 *ORC_RESTRICT ptr0;
14121   const orc_union16 *ORC_RESTRICT ptr4;
14122   const orc_int8 *ORC_RESTRICT ptr5;
14123   const orc_int8 *ORC_RESTRICT ptr6;
14124   orc_union16 var37;
14125   orc_union16 var38;
14126   orc_union64 var39;
14127   orc_int8 var40;
14128   orc_int8 var41;
14129   orc_union16 var42;
14130   orc_union32 var43;
14131   orc_union32 var44;
14132
14133   ptr0 = (orc_union64 *) d1;
14134   ptr4 = (orc_union16 *) s1;
14135   ptr5 = (orc_int8 *) s2;
14136   ptr6 = (orc_int8 *) s3;
14137
14138   /* 4: loadpb */
14139   var37.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
14140   var37.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
14141
14142   for (i = 0; i < n; i++) {
14143     /* 0: loadupdb */
14144     var40 = ptr5[i >> 1];
14145     /* 1: loadupdb */
14146     var41 = ptr6[i >> 1];
14147     /* 2: mergebw */
14148     {
14149       orc_union16 _dest;
14150       _dest.x2[0] = var40;
14151       _dest.x2[1] = var41;
14152       var42.i = _dest.i;
14153     }
14154     /* 3: mergewl */
14155     {
14156       orc_union32 _dest;
14157       _dest.x2[0] = var42.i;
14158       _dest.x2[1] = var42.i;
14159       var43.i = _dest.i;
14160     }
14161     /* 5: loadw */
14162     var38 = ptr4[i];
14163     /* 6: mergebw */
14164     {
14165       orc_union16 _dest;
14166       _dest.x2[0] = var37.x2[0];
14167       _dest.x2[1] = var38.x2[0];
14168       var44.x2[0] = _dest.i;
14169     }
14170     {
14171       orc_union16 _dest;
14172       _dest.x2[0] = var37.x2[1];
14173       _dest.x2[1] = var38.x2[1];
14174       var44.x2[1] = _dest.i;
14175     }
14176     /* 7: mergewl */
14177     {
14178       orc_union32 _dest;
14179       _dest.x2[0] = var44.x2[0];
14180       _dest.x2[1] = var43.x2[0];
14181       var39.x2[0] = _dest.i;
14182     }
14183     {
14184       orc_union32 _dest;
14185       _dest.x2[0] = var44.x2[1];
14186       _dest.x2[1] = var43.x2[1];
14187       var39.x2[1] = _dest.i;
14188     }
14189     /* 8: storeq */
14190     ptr0[i] = var39;
14191   }
14192
14193 }
14194
14195 #else
14196 static void
14197 _backup_cogorc_getline_YUV9 (OrcExecutor * ORC_RESTRICT ex)
14198 {
14199   int i;
14200   int n = ex->n;
14201   orc_union64 *ORC_RESTRICT ptr0;
14202   const orc_union16 *ORC_RESTRICT ptr4;
14203   const orc_int8 *ORC_RESTRICT ptr5;
14204   const orc_int8 *ORC_RESTRICT ptr6;
14205   orc_union16 var37;
14206   orc_union16 var38;
14207   orc_union64 var39;
14208   orc_int8 var40;
14209   orc_int8 var41;
14210   orc_union16 var42;
14211   orc_union32 var43;
14212   orc_union32 var44;
14213
14214   ptr0 = (orc_union64 *) ex->arrays[0];
14215   ptr4 = (orc_union16 *) ex->arrays[4];
14216   ptr5 = (orc_int8 *) ex->arrays[5];
14217   ptr6 = (orc_int8 *) ex->arrays[6];
14218
14219   /* 4: loadpb */
14220   var37.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
14221   var37.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
14222
14223   for (i = 0; i < n; i++) {
14224     /* 0: loadupdb */
14225     var40 = ptr5[i >> 1];
14226     /* 1: loadupdb */
14227     var41 = ptr6[i >> 1];
14228     /* 2: mergebw */
14229     {
14230       orc_union16 _dest;
14231       _dest.x2[0] = var40;
14232       _dest.x2[1] = var41;
14233       var42.i = _dest.i;
14234     }
14235     /* 3: mergewl */
14236     {
14237       orc_union32 _dest;
14238       _dest.x2[0] = var42.i;
14239       _dest.x2[1] = var42.i;
14240       var43.i = _dest.i;
14241     }
14242     /* 5: loadw */
14243     var38 = ptr4[i];
14244     /* 6: mergebw */
14245     {
14246       orc_union16 _dest;
14247       _dest.x2[0] = var37.x2[0];
14248       _dest.x2[1] = var38.x2[0];
14249       var44.x2[0] = _dest.i;
14250     }
14251     {
14252       orc_union16 _dest;
14253       _dest.x2[0] = var37.x2[1];
14254       _dest.x2[1] = var38.x2[1];
14255       var44.x2[1] = _dest.i;
14256     }
14257     /* 7: mergewl */
14258     {
14259       orc_union32 _dest;
14260       _dest.x2[0] = var44.x2[0];
14261       _dest.x2[1] = var43.x2[0];
14262       var39.x2[0] = _dest.i;
14263     }
14264     {
14265       orc_union32 _dest;
14266       _dest.x2[0] = var44.x2[1];
14267       _dest.x2[1] = var43.x2[1];
14268       var39.x2[1] = _dest.i;
14269     }
14270     /* 8: storeq */
14271     ptr0[i] = var39;
14272   }
14273
14274 }
14275
14276 void
14277 cogorc_getline_YUV9 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
14278     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n)
14279 {
14280   OrcExecutor _ex, *ex = &_ex;
14281   static volatile int p_inited = 0;
14282   static OrcProgram *p = 0;
14283   void (*func) (OrcExecutor *);
14284
14285   if (!p_inited) {
14286     orc_once_mutex_lock ();
14287     if (!p_inited) {
14288
14289       p = orc_program_new ();
14290       orc_program_set_name (p, "cogorc_getline_YUV9");
14291       orc_program_set_backup_function (p, _backup_cogorc_getline_YUV9);
14292       orc_program_add_destination (p, 8, "d1");
14293       orc_program_add_source (p, 2, "s1");
14294       orc_program_add_source (p, 1, "s2");
14295       orc_program_add_source (p, 1, "s3");
14296       orc_program_add_constant (p, 1, 0x000000ff, "c1");
14297       orc_program_add_temporary (p, 2, "t1");
14298       orc_program_add_temporary (p, 4, "t2");
14299       orc_program_add_temporary (p, 4, "t3");
14300       orc_program_add_temporary (p, 1, "t4");
14301       orc_program_add_temporary (p, 1, "t5");
14302
14303       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T4, ORC_VAR_S2,
14304           ORC_VAR_D1, ORC_VAR_D1);
14305       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T5, ORC_VAR_S3,
14306           ORC_VAR_D1, ORC_VAR_D1);
14307       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T4, ORC_VAR_T5,
14308           ORC_VAR_D1);
14309       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1,
14310           ORC_VAR_D1);
14311       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1,
14312           ORC_VAR_D1);
14313       orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T3,
14314           ORC_VAR_D1);
14315
14316       orc_program_compile (p);
14317     }
14318     p_inited = TRUE;
14319     orc_once_mutex_unlock ();
14320   }
14321   ex->program = p;
14322
14323   ex->n = n;
14324   ex->arrays[ORC_VAR_D1] = d1;
14325   ex->arrays[ORC_VAR_S1] = (void *) s1;
14326   ex->arrays[ORC_VAR_S2] = (void *) s2;
14327   ex->arrays[ORC_VAR_S3] = (void *) s3;
14328
14329   func = p->code_exec;
14330   func (ex);
14331 }
14332 #endif
14333
14334
14335 /* cogorc_getline_YUY2 */
14336 #ifdef DISABLE_ORC
14337 void
14338 cogorc_getline_YUY2 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
14339     int n)
14340 {
14341   int i;
14342   orc_union64 *ORC_RESTRICT ptr0;
14343   const orc_union32 *ORC_RESTRICT ptr4;
14344   orc_union32 var36;
14345   orc_union16 var37;
14346   orc_union64 var38;
14347   orc_union16 var39;
14348   orc_union16 var40;
14349   orc_union32 var41;
14350   orc_union32 var42;
14351
14352   ptr0 = (orc_union64 *) d1;
14353   ptr4 = (orc_union32 *) s1;
14354
14355   /* 2: loadpb */
14356   var37.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
14357   var37.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
14358
14359   for (i = 0; i < n; i++) {
14360     /* 0: loadl */
14361     var36 = ptr4[i];
14362     /* 1: splitwb */
14363     {
14364       orc_union16 _src;
14365       _src.i = var36.x2[0];
14366       var39.x2[0] = _src.x2[1];
14367       var40.x2[0] = _src.x2[0];
14368     }
14369     {
14370       orc_union16 _src;
14371       _src.i = var36.x2[1];
14372       var39.x2[1] = _src.x2[1];
14373       var40.x2[1] = _src.x2[0];
14374     }
14375     /* 3: mergebw */
14376     {
14377       orc_union16 _dest;
14378       _dest.x2[0] = var37.x2[0];
14379       _dest.x2[1] = var40.x2[0];
14380       var41.x2[0] = _dest.i;
14381     }
14382     {
14383       orc_union16 _dest;
14384       _dest.x2[0] = var37.x2[1];
14385       _dest.x2[1] = var40.x2[1];
14386       var41.x2[1] = _dest.i;
14387     }
14388     /* 4: mergewl */
14389     {
14390       orc_union32 _dest;
14391       _dest.x2[0] = var39.i;
14392       _dest.x2[1] = var39.i;
14393       var42.i = _dest.i;
14394     }
14395     /* 5: mergewl */
14396     {
14397       orc_union32 _dest;
14398       _dest.x2[0] = var41.x2[0];
14399       _dest.x2[1] = var42.x2[0];
14400       var38.x2[0] = _dest.i;
14401     }
14402     {
14403       orc_union32 _dest;
14404       _dest.x2[0] = var41.x2[1];
14405       _dest.x2[1] = var42.x2[1];
14406       var38.x2[1] = _dest.i;
14407     }
14408     /* 6: storeq */
14409     ptr0[i] = var38;
14410   }
14411
14412 }
14413
14414 #else
14415 static void
14416 _backup_cogorc_getline_YUY2 (OrcExecutor * ORC_RESTRICT ex)
14417 {
14418   int i;
14419   int n = ex->n;
14420   orc_union64 *ORC_RESTRICT ptr0;
14421   const orc_union32 *ORC_RESTRICT ptr4;
14422   orc_union32 var36;
14423   orc_union16 var37;
14424   orc_union64 var38;
14425   orc_union16 var39;
14426   orc_union16 var40;
14427   orc_union32 var41;
14428   orc_union32 var42;
14429
14430   ptr0 = (orc_union64 *) ex->arrays[0];
14431   ptr4 = (orc_union32 *) ex->arrays[4];
14432
14433   /* 2: loadpb */
14434   var37.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
14435   var37.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
14436
14437   for (i = 0; i < n; i++) {
14438     /* 0: loadl */
14439     var36 = ptr4[i];
14440     /* 1: splitwb */
14441     {
14442       orc_union16 _src;
14443       _src.i = var36.x2[0];
14444       var39.x2[0] = _src.x2[1];
14445       var40.x2[0] = _src.x2[0];
14446     }
14447     {
14448       orc_union16 _src;
14449       _src.i = var36.x2[1];
14450       var39.x2[1] = _src.x2[1];
14451       var40.x2[1] = _src.x2[0];
14452     }
14453     /* 3: mergebw */
14454     {
14455       orc_union16 _dest;
14456       _dest.x2[0] = var37.x2[0];
14457       _dest.x2[1] = var40.x2[0];
14458       var41.x2[0] = _dest.i;
14459     }
14460     {
14461       orc_union16 _dest;
14462       _dest.x2[0] = var37.x2[1];
14463       _dest.x2[1] = var40.x2[1];
14464       var41.x2[1] = _dest.i;
14465     }
14466     /* 4: mergewl */
14467     {
14468       orc_union32 _dest;
14469       _dest.x2[0] = var39.i;
14470       _dest.x2[1] = var39.i;
14471       var42.i = _dest.i;
14472     }
14473     /* 5: mergewl */
14474     {
14475       orc_union32 _dest;
14476       _dest.x2[0] = var41.x2[0];
14477       _dest.x2[1] = var42.x2[0];
14478       var38.x2[0] = _dest.i;
14479     }
14480     {
14481       orc_union32 _dest;
14482       _dest.x2[0] = var41.x2[1];
14483       _dest.x2[1] = var42.x2[1];
14484       var38.x2[1] = _dest.i;
14485     }
14486     /* 6: storeq */
14487     ptr0[i] = var38;
14488   }
14489
14490 }
14491
14492 void
14493 cogorc_getline_YUY2 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
14494     int n)
14495 {
14496   OrcExecutor _ex, *ex = &_ex;
14497   static volatile int p_inited = 0;
14498   static OrcProgram *p = 0;
14499   void (*func) (OrcExecutor *);
14500
14501   if (!p_inited) {
14502     orc_once_mutex_lock ();
14503     if (!p_inited) {
14504
14505       p = orc_program_new ();
14506       orc_program_set_name (p, "cogorc_getline_YUY2");
14507       orc_program_set_backup_function (p, _backup_cogorc_getline_YUY2);
14508       orc_program_add_destination (p, 8, "d1");
14509       orc_program_add_source (p, 4, "s1");
14510       orc_program_add_constant (p, 2, 0x000000ff, "c1");
14511       orc_program_add_temporary (p, 2, "t1");
14512       orc_program_add_temporary (p, 2, "t2");
14513       orc_program_add_temporary (p, 4, "t3");
14514       orc_program_add_temporary (p, 4, "t4");
14515
14516       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
14517           ORC_VAR_D1);
14518       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1,
14519           ORC_VAR_D1);
14520       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2,
14521           ORC_VAR_D1);
14522       orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4,
14523           ORC_VAR_D1);
14524
14525       orc_program_compile (p);
14526     }
14527     p_inited = TRUE;
14528     orc_once_mutex_unlock ();
14529   }
14530   ex->program = p;
14531
14532   ex->n = n;
14533   ex->arrays[ORC_VAR_D1] = d1;
14534   ex->arrays[ORC_VAR_S1] = (void *) s1;
14535
14536   func = p->code_exec;
14537   func (ex);
14538 }
14539 #endif
14540
14541
14542 /* cogorc_getline_UYVY */
14543 #ifdef DISABLE_ORC
14544 void
14545 cogorc_getline_UYVY (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
14546     int n)
14547 {
14548   int i;
14549   orc_union64 *ORC_RESTRICT ptr0;
14550   const orc_union32 *ORC_RESTRICT ptr4;
14551   orc_union32 var36;
14552   orc_union16 var37;
14553   orc_union64 var38;
14554   orc_union16 var39;
14555   orc_union16 var40;
14556   orc_union32 var41;
14557   orc_union32 var42;
14558
14559   ptr0 = (orc_union64 *) d1;
14560   ptr4 = (orc_union32 *) s1;
14561
14562   /* 2: loadpb */
14563   var37.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
14564   var37.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
14565
14566   for (i = 0; i < n; i++) {
14567     /* 0: loadl */
14568     var36 = ptr4[i];
14569     /* 1: splitwb */
14570     {
14571       orc_union16 _src;
14572       _src.i = var36.x2[0];
14573       var39.x2[0] = _src.x2[1];
14574       var40.x2[0] = _src.x2[0];
14575     }
14576     {
14577       orc_union16 _src;
14578       _src.i = var36.x2[1];
14579       var39.x2[1] = _src.x2[1];
14580       var40.x2[1] = _src.x2[0];
14581     }
14582     /* 3: mergebw */
14583     {
14584       orc_union16 _dest;
14585       _dest.x2[0] = var37.x2[0];
14586       _dest.x2[1] = var39.x2[0];
14587       var41.x2[0] = _dest.i;
14588     }
14589     {
14590       orc_union16 _dest;
14591       _dest.x2[0] = var37.x2[1];
14592       _dest.x2[1] = var39.x2[1];
14593       var41.x2[1] = _dest.i;
14594     }
14595     /* 4: mergewl */
14596     {
14597       orc_union32 _dest;
14598       _dest.x2[0] = var40.i;
14599       _dest.x2[1] = var40.i;
14600       var42.i = _dest.i;
14601     }
14602     /* 5: mergewl */
14603     {
14604       orc_union32 _dest;
14605       _dest.x2[0] = var41.x2[0];
14606       _dest.x2[1] = var42.x2[0];
14607       var38.x2[0] = _dest.i;
14608     }
14609     {
14610       orc_union32 _dest;
14611       _dest.x2[0] = var41.x2[1];
14612       _dest.x2[1] = var42.x2[1];
14613       var38.x2[1] = _dest.i;
14614     }
14615     /* 6: storeq */
14616     ptr0[i] = var38;
14617   }
14618
14619 }
14620
14621 #else
14622 static void
14623 _backup_cogorc_getline_UYVY (OrcExecutor * ORC_RESTRICT ex)
14624 {
14625   int i;
14626   int n = ex->n;
14627   orc_union64 *ORC_RESTRICT ptr0;
14628   const orc_union32 *ORC_RESTRICT ptr4;
14629   orc_union32 var36;
14630   orc_union16 var37;
14631   orc_union64 var38;
14632   orc_union16 var39;
14633   orc_union16 var40;
14634   orc_union32 var41;
14635   orc_union32 var42;
14636
14637   ptr0 = (orc_union64 *) ex->arrays[0];
14638   ptr4 = (orc_union32 *) ex->arrays[4];
14639
14640   /* 2: loadpb */
14641   var37.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
14642   var37.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
14643
14644   for (i = 0; i < n; i++) {
14645     /* 0: loadl */
14646     var36 = ptr4[i];
14647     /* 1: splitwb */
14648     {
14649       orc_union16 _src;
14650       _src.i = var36.x2[0];
14651       var39.x2[0] = _src.x2[1];
14652       var40.x2[0] = _src.x2[0];
14653     }
14654     {
14655       orc_union16 _src;
14656       _src.i = var36.x2[1];
14657       var39.x2[1] = _src.x2[1];
14658       var40.x2[1] = _src.x2[0];
14659     }
14660     /* 3: mergebw */
14661     {
14662       orc_union16 _dest;
14663       _dest.x2[0] = var37.x2[0];
14664       _dest.x2[1] = var39.x2[0];
14665       var41.x2[0] = _dest.i;
14666     }
14667     {
14668       orc_union16 _dest;
14669       _dest.x2[0] = var37.x2[1];
14670       _dest.x2[1] = var39.x2[1];
14671       var41.x2[1] = _dest.i;
14672     }
14673     /* 4: mergewl */
14674     {
14675       orc_union32 _dest;
14676       _dest.x2[0] = var40.i;
14677       _dest.x2[1] = var40.i;
14678       var42.i = _dest.i;
14679     }
14680     /* 5: mergewl */
14681     {
14682       orc_union32 _dest;
14683       _dest.x2[0] = var41.x2[0];
14684       _dest.x2[1] = var42.x2[0];
14685       var38.x2[0] = _dest.i;
14686     }
14687     {
14688       orc_union32 _dest;
14689       _dest.x2[0] = var41.x2[1];
14690       _dest.x2[1] = var42.x2[1];
14691       var38.x2[1] = _dest.i;
14692     }
14693     /* 6: storeq */
14694     ptr0[i] = var38;
14695   }
14696
14697 }
14698
14699 void
14700 cogorc_getline_UYVY (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
14701     int n)
14702 {
14703   OrcExecutor _ex, *ex = &_ex;
14704   static volatile int p_inited = 0;
14705   static OrcProgram *p = 0;
14706   void (*func) (OrcExecutor *);
14707
14708   if (!p_inited) {
14709     orc_once_mutex_lock ();
14710     if (!p_inited) {
14711
14712       p = orc_program_new ();
14713       orc_program_set_name (p, "cogorc_getline_UYVY");
14714       orc_program_set_backup_function (p, _backup_cogorc_getline_UYVY);
14715       orc_program_add_destination (p, 8, "d1");
14716       orc_program_add_source (p, 4, "s1");
14717       orc_program_add_constant (p, 2, 0x000000ff, "c1");
14718       orc_program_add_temporary (p, 2, "t1");
14719       orc_program_add_temporary (p, 2, "t2");
14720       orc_program_add_temporary (p, 4, "t3");
14721       orc_program_add_temporary (p, 4, "t4");
14722
14723       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1,
14724           ORC_VAR_D1);
14725       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1,
14726           ORC_VAR_D1);
14727       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2,
14728           ORC_VAR_D1);
14729       orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4,
14730           ORC_VAR_D1);
14731
14732       orc_program_compile (p);
14733     }
14734     p_inited = TRUE;
14735     orc_once_mutex_unlock ();
14736   }
14737   ex->program = p;
14738
14739   ex->n = n;
14740   ex->arrays[ORC_VAR_D1] = d1;
14741   ex->arrays[ORC_VAR_S1] = (void *) s1;
14742
14743   func = p->code_exec;
14744   func (ex);
14745 }
14746 #endif
14747
14748
14749 /* cogorc_getline_YVYU */
14750 #ifdef DISABLE_ORC
14751 void
14752 cogorc_getline_YVYU (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
14753     int n)
14754 {
14755   int i;
14756   orc_union64 *ORC_RESTRICT ptr0;
14757   const orc_union32 *ORC_RESTRICT ptr4;
14758   orc_union32 var36;
14759   orc_union16 var37;
14760   orc_union64 var38;
14761   orc_union16 var39;
14762   orc_union16 var40;
14763   orc_union16 var41;
14764   orc_union32 var42;
14765   orc_union32 var43;
14766
14767   ptr0 = (orc_union64 *) d1;
14768   ptr4 = (orc_union32 *) s1;
14769
14770   /* 3: loadpb */
14771   var37.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
14772   var37.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
14773
14774   for (i = 0; i < n; i++) {
14775     /* 0: loadl */
14776     var36 = ptr4[i];
14777     /* 1: splitwb */
14778     {
14779       orc_union16 _src;
14780       _src.i = var36.x2[0];
14781       var39.x2[0] = _src.x2[1];
14782       var40.x2[0] = _src.x2[0];
14783     }
14784     {
14785       orc_union16 _src;
14786       _src.i = var36.x2[1];
14787       var39.x2[1] = _src.x2[1];
14788       var40.x2[1] = _src.x2[0];
14789     }
14790     /* 2: swapw */
14791     var41.i = ORC_SWAP_W (var39.i);
14792     /* 4: mergebw */
14793     {
14794       orc_union16 _dest;
14795       _dest.x2[0] = var37.x2[0];
14796       _dest.x2[1] = var40.x2[0];
14797       var42.x2[0] = _dest.i;
14798     }
14799     {
14800       orc_union16 _dest;
14801       _dest.x2[0] = var37.x2[1];
14802       _dest.x2[1] = var40.x2[1];
14803       var42.x2[1] = _dest.i;
14804     }
14805     /* 5: mergewl */
14806     {
14807       orc_union32 _dest;
14808       _dest.x2[0] = var41.i;
14809       _dest.x2[1] = var41.i;
14810       var43.i = _dest.i;
14811     }
14812     /* 6: mergewl */
14813     {
14814       orc_union32 _dest;
14815       _dest.x2[0] = var42.x2[0];
14816       _dest.x2[1] = var43.x2[0];
14817       var38.x2[0] = _dest.i;
14818     }
14819     {
14820       orc_union32 _dest;
14821       _dest.x2[0] = var42.x2[1];
14822       _dest.x2[1] = var43.x2[1];
14823       var38.x2[1] = _dest.i;
14824     }
14825     /* 7: storeq */
14826     ptr0[i] = var38;
14827   }
14828
14829 }
14830
14831 #else
14832 static void
14833 _backup_cogorc_getline_YVYU (OrcExecutor * ORC_RESTRICT ex)
14834 {
14835   int i;
14836   int n = ex->n;
14837   orc_union64 *ORC_RESTRICT ptr0;
14838   const orc_union32 *ORC_RESTRICT ptr4;
14839   orc_union32 var36;
14840   orc_union16 var37;
14841   orc_union64 var38;
14842   orc_union16 var39;
14843   orc_union16 var40;
14844   orc_union16 var41;
14845   orc_union32 var42;
14846   orc_union32 var43;
14847
14848   ptr0 = (orc_union64 *) ex->arrays[0];
14849   ptr4 = (orc_union32 *) ex->arrays[4];
14850
14851   /* 3: loadpb */
14852   var37.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
14853   var37.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
14854
14855   for (i = 0; i < n; i++) {
14856     /* 0: loadl */
14857     var36 = ptr4[i];
14858     /* 1: splitwb */
14859     {
14860       orc_union16 _src;
14861       _src.i = var36.x2[0];
14862       var39.x2[0] = _src.x2[1];
14863       var40.x2[0] = _src.x2[0];
14864     }
14865     {
14866       orc_union16 _src;
14867       _src.i = var36.x2[1];
14868       var39.x2[1] = _src.x2[1];
14869       var40.x2[1] = _src.x2[0];
14870     }
14871     /* 2: swapw */
14872     var41.i = ORC_SWAP_W (var39.i);
14873     /* 4: mergebw */
14874     {
14875       orc_union16 _dest;
14876       _dest.x2[0] = var37.x2[0];
14877       _dest.x2[1] = var40.x2[0];
14878       var42.x2[0] = _dest.i;
14879     }
14880     {
14881       orc_union16 _dest;
14882       _dest.x2[0] = var37.x2[1];
14883       _dest.x2[1] = var40.x2[1];
14884       var42.x2[1] = _dest.i;
14885     }
14886     /* 5: mergewl */
14887     {
14888       orc_union32 _dest;
14889       _dest.x2[0] = var41.i;
14890       _dest.x2[1] = var41.i;
14891       var43.i = _dest.i;
14892     }
14893     /* 6: mergewl */
14894     {
14895       orc_union32 _dest;
14896       _dest.x2[0] = var42.x2[0];
14897       _dest.x2[1] = var43.x2[0];
14898       var38.x2[0] = _dest.i;
14899     }
14900     {
14901       orc_union32 _dest;
14902       _dest.x2[0] = var42.x2[1];
14903       _dest.x2[1] = var43.x2[1];
14904       var38.x2[1] = _dest.i;
14905     }
14906     /* 7: storeq */
14907     ptr0[i] = var38;
14908   }
14909
14910 }
14911
14912 void
14913 cogorc_getline_YVYU (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
14914     int n)
14915 {
14916   OrcExecutor _ex, *ex = &_ex;
14917   static volatile int p_inited = 0;
14918   static OrcProgram *p = 0;
14919   void (*func) (OrcExecutor *);
14920
14921   if (!p_inited) {
14922     orc_once_mutex_lock ();
14923     if (!p_inited) {
14924
14925       p = orc_program_new ();
14926       orc_program_set_name (p, "cogorc_getline_YVYU");
14927       orc_program_set_backup_function (p, _backup_cogorc_getline_YVYU);
14928       orc_program_add_destination (p, 8, "d1");
14929       orc_program_add_source (p, 4, "s1");
14930       orc_program_add_constant (p, 2, 0x000000ff, "c1");
14931       orc_program_add_temporary (p, 2, "t1");
14932       orc_program_add_temporary (p, 2, "t2");
14933       orc_program_add_temporary (p, 4, "t3");
14934       orc_program_add_temporary (p, 4, "t4");
14935
14936       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
14937           ORC_VAR_D1);
14938       orc_program_append_2 (p, "swapw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1,
14939           ORC_VAR_D1);
14940       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1,
14941           ORC_VAR_D1);
14942       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2,
14943           ORC_VAR_D1);
14944       orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4,
14945           ORC_VAR_D1);
14946
14947       orc_program_compile (p);
14948     }
14949     p_inited = TRUE;
14950     orc_once_mutex_unlock ();
14951   }
14952   ex->program = p;
14953
14954   ex->n = n;
14955   ex->arrays[ORC_VAR_D1] = d1;
14956   ex->arrays[ORC_VAR_S1] = (void *) s1;
14957
14958   func = p->code_exec;
14959   func (ex);
14960 }
14961 #endif
14962
14963
14964 /* cogorc_getline_Y42B */
14965 #ifdef DISABLE_ORC
14966 void
14967 cogorc_getline_Y42B (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
14968     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n)
14969 {
14970   int i;
14971   orc_union64 *ORC_RESTRICT ptr0;
14972   const orc_union16 *ORC_RESTRICT ptr4;
14973   const orc_int8 *ORC_RESTRICT ptr5;
14974   const orc_int8 *ORC_RESTRICT ptr6;
14975   orc_int8 var36;
14976   orc_int8 var37;
14977   orc_union16 var38;
14978   orc_union16 var39;
14979   orc_union64 var40;
14980   orc_union16 var41;
14981   orc_union32 var42;
14982   orc_union32 var43;
14983
14984   ptr0 = (orc_union64 *) d1;
14985   ptr4 = (orc_union16 *) s1;
14986   ptr5 = (orc_int8 *) s2;
14987   ptr6 = (orc_int8 *) s3;
14988
14989   /* 3: loadpb */
14990   var38.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
14991   var38.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
14992
14993   for (i = 0; i < n; i++) {
14994     /* 0: loadb */
14995     var36 = ptr5[i];
14996     /* 1: loadb */
14997     var37 = ptr6[i];
14998     /* 2: mergebw */
14999     {
15000       orc_union16 _dest;
15001       _dest.x2[0] = var36;
15002       _dest.x2[1] = var37;
15003       var41.i = _dest.i;
15004     }
15005     /* 4: loadw */
15006     var39 = ptr4[i];
15007     /* 5: mergebw */
15008     {
15009       orc_union16 _dest;
15010       _dest.x2[0] = var38.x2[0];
15011       _dest.x2[1] = var39.x2[0];
15012       var42.x2[0] = _dest.i;
15013     }
15014     {
15015       orc_union16 _dest;
15016       _dest.x2[0] = var38.x2[1];
15017       _dest.x2[1] = var39.x2[1];
15018       var42.x2[1] = _dest.i;
15019     }
15020     /* 6: mergewl */
15021     {
15022       orc_union32 _dest;
15023       _dest.x2[0] = var41.i;
15024       _dest.x2[1] = var41.i;
15025       var43.i = _dest.i;
15026     }
15027     /* 7: mergewl */
15028     {
15029       orc_union32 _dest;
15030       _dest.x2[0] = var42.x2[0];
15031       _dest.x2[1] = var43.x2[0];
15032       var40.x2[0] = _dest.i;
15033     }
15034     {
15035       orc_union32 _dest;
15036       _dest.x2[0] = var42.x2[1];
15037       _dest.x2[1] = var43.x2[1];
15038       var40.x2[1] = _dest.i;
15039     }
15040     /* 8: storeq */
15041     ptr0[i] = var40;
15042   }
15043
15044 }
15045
15046 #else
15047 static void
15048 _backup_cogorc_getline_Y42B (OrcExecutor * ORC_RESTRICT ex)
15049 {
15050   int i;
15051   int n = ex->n;
15052   orc_union64 *ORC_RESTRICT ptr0;
15053   const orc_union16 *ORC_RESTRICT ptr4;
15054   const orc_int8 *ORC_RESTRICT ptr5;
15055   const orc_int8 *ORC_RESTRICT ptr6;
15056   orc_int8 var36;
15057   orc_int8 var37;
15058   orc_union16 var38;
15059   orc_union16 var39;
15060   orc_union64 var40;
15061   orc_union16 var41;
15062   orc_union32 var42;
15063   orc_union32 var43;
15064
15065   ptr0 = (orc_union64 *) ex->arrays[0];
15066   ptr4 = (orc_union16 *) ex->arrays[4];
15067   ptr5 = (orc_int8 *) ex->arrays[5];
15068   ptr6 = (orc_int8 *) ex->arrays[6];
15069
15070   /* 3: loadpb */
15071   var38.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
15072   var38.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
15073
15074   for (i = 0; i < n; i++) {
15075     /* 0: loadb */
15076     var36 = ptr5[i];
15077     /* 1: loadb */
15078     var37 = ptr6[i];
15079     /* 2: mergebw */
15080     {
15081       orc_union16 _dest;
15082       _dest.x2[0] = var36;
15083       _dest.x2[1] = var37;
15084       var41.i = _dest.i;
15085     }
15086     /* 4: loadw */
15087     var39 = ptr4[i];
15088     /* 5: mergebw */
15089     {
15090       orc_union16 _dest;
15091       _dest.x2[0] = var38.x2[0];
15092       _dest.x2[1] = var39.x2[0];
15093       var42.x2[0] = _dest.i;
15094     }
15095     {
15096       orc_union16 _dest;
15097       _dest.x2[0] = var38.x2[1];
15098       _dest.x2[1] = var39.x2[1];
15099       var42.x2[1] = _dest.i;
15100     }
15101     /* 6: mergewl */
15102     {
15103       orc_union32 _dest;
15104       _dest.x2[0] = var41.i;
15105       _dest.x2[1] = var41.i;
15106       var43.i = _dest.i;
15107     }
15108     /* 7: mergewl */
15109     {
15110       orc_union32 _dest;
15111       _dest.x2[0] = var42.x2[0];
15112       _dest.x2[1] = var43.x2[0];
15113       var40.x2[0] = _dest.i;
15114     }
15115     {
15116       orc_union32 _dest;
15117       _dest.x2[0] = var42.x2[1];
15118       _dest.x2[1] = var43.x2[1];
15119       var40.x2[1] = _dest.i;
15120     }
15121     /* 8: storeq */
15122     ptr0[i] = var40;
15123   }
15124
15125 }
15126
15127 void
15128 cogorc_getline_Y42B (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
15129     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n)
15130 {
15131   OrcExecutor _ex, *ex = &_ex;
15132   static volatile int p_inited = 0;
15133   static OrcProgram *p = 0;
15134   void (*func) (OrcExecutor *);
15135
15136   if (!p_inited) {
15137     orc_once_mutex_lock ();
15138     if (!p_inited) {
15139
15140       p = orc_program_new ();
15141       orc_program_set_name (p, "cogorc_getline_Y42B");
15142       orc_program_set_backup_function (p, _backup_cogorc_getline_Y42B);
15143       orc_program_add_destination (p, 8, "d1");
15144       orc_program_add_source (p, 2, "s1");
15145       orc_program_add_source (p, 1, "s2");
15146       orc_program_add_source (p, 1, "s3");
15147       orc_program_add_constant (p, 1, 0x000000ff, "c1");
15148       orc_program_add_temporary (p, 2, "t1");
15149       orc_program_add_temporary (p, 2, "t2");
15150       orc_program_add_temporary (p, 4, "t3");
15151       orc_program_add_temporary (p, 4, "t4");
15152
15153       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3,
15154           ORC_VAR_D1);
15155       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T4, ORC_VAR_C1, ORC_VAR_S1,
15156           ORC_VAR_D1);
15157       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1,
15158           ORC_VAR_D1);
15159       orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_T3,
15160           ORC_VAR_D1);
15161
15162       orc_program_compile (p);
15163     }
15164     p_inited = TRUE;
15165     orc_once_mutex_unlock ();
15166   }
15167   ex->program = p;
15168
15169   ex->n = n;
15170   ex->arrays[ORC_VAR_D1] = d1;
15171   ex->arrays[ORC_VAR_S1] = (void *) s1;
15172   ex->arrays[ORC_VAR_S2] = (void *) s2;
15173   ex->arrays[ORC_VAR_S3] = (void *) s3;
15174
15175   func = p->code_exec;
15176   func (ex);
15177 }
15178 #endif
15179
15180
15181 /* cogorc_getline_Y444 */
15182 #ifdef DISABLE_ORC
15183 void
15184 cogorc_getline_Y444 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
15185     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n)
15186 {
15187   int i;
15188   orc_union32 *ORC_RESTRICT ptr0;
15189   const orc_int8 *ORC_RESTRICT ptr4;
15190   const orc_int8 *ORC_RESTRICT ptr5;
15191   const orc_int8 *ORC_RESTRICT ptr6;
15192   orc_int8 var34;
15193   orc_int8 var35;
15194   orc_int8 var36;
15195   orc_int8 var37;
15196   orc_union32 var38;
15197   orc_union16 var39;
15198   orc_union16 var40;
15199
15200   ptr0 = (orc_union32 *) d1;
15201   ptr4 = (orc_int8 *) s1;
15202   ptr5 = (orc_int8 *) s2;
15203   ptr6 = (orc_int8 *) s3;
15204
15205   /* 3: loadpb */
15206   var36 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
15207
15208   for (i = 0; i < n; i++) {
15209     /* 0: loadb */
15210     var34 = ptr5[i];
15211     /* 1: loadb */
15212     var35 = ptr6[i];
15213     /* 2: mergebw */
15214     {
15215       orc_union16 _dest;
15216       _dest.x2[0] = var34;
15217       _dest.x2[1] = var35;
15218       var39.i = _dest.i;
15219     }
15220     /* 4: loadb */
15221     var37 = ptr4[i];
15222     /* 5: mergebw */
15223     {
15224       orc_union16 _dest;
15225       _dest.x2[0] = var36;
15226       _dest.x2[1] = var37;
15227       var40.i = _dest.i;
15228     }
15229     /* 6: mergewl */
15230     {
15231       orc_union32 _dest;
15232       _dest.x2[0] = var40.i;
15233       _dest.x2[1] = var39.i;
15234       var38.i = _dest.i;
15235     }
15236     /* 7: storel */
15237     ptr0[i] = var38;
15238   }
15239
15240 }
15241
15242 #else
15243 static void
15244 _backup_cogorc_getline_Y444 (OrcExecutor * ORC_RESTRICT ex)
15245 {
15246   int i;
15247   int n = ex->n;
15248   orc_union32 *ORC_RESTRICT ptr0;
15249   const orc_int8 *ORC_RESTRICT ptr4;
15250   const orc_int8 *ORC_RESTRICT ptr5;
15251   const orc_int8 *ORC_RESTRICT ptr6;
15252   orc_int8 var34;
15253   orc_int8 var35;
15254   orc_int8 var36;
15255   orc_int8 var37;
15256   orc_union32 var38;
15257   orc_union16 var39;
15258   orc_union16 var40;
15259
15260   ptr0 = (orc_union32 *) ex->arrays[0];
15261   ptr4 = (orc_int8 *) ex->arrays[4];
15262   ptr5 = (orc_int8 *) ex->arrays[5];
15263   ptr6 = (orc_int8 *) ex->arrays[6];
15264
15265   /* 3: loadpb */
15266   var36 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
15267
15268   for (i = 0; i < n; i++) {
15269     /* 0: loadb */
15270     var34 = ptr5[i];
15271     /* 1: loadb */
15272     var35 = ptr6[i];
15273     /* 2: mergebw */
15274     {
15275       orc_union16 _dest;
15276       _dest.x2[0] = var34;
15277       _dest.x2[1] = var35;
15278       var39.i = _dest.i;
15279     }
15280     /* 4: loadb */
15281     var37 = ptr4[i];
15282     /* 5: mergebw */
15283     {
15284       orc_union16 _dest;
15285       _dest.x2[0] = var36;
15286       _dest.x2[1] = var37;
15287       var40.i = _dest.i;
15288     }
15289     /* 6: mergewl */
15290     {
15291       orc_union32 _dest;
15292       _dest.x2[0] = var40.i;
15293       _dest.x2[1] = var39.i;
15294       var38.i = _dest.i;
15295     }
15296     /* 7: storel */
15297     ptr0[i] = var38;
15298   }
15299
15300 }
15301
15302 void
15303 cogorc_getline_Y444 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
15304     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n)
15305 {
15306   OrcExecutor _ex, *ex = &_ex;
15307   static volatile int p_inited = 0;
15308   static OrcProgram *p = 0;
15309   void (*func) (OrcExecutor *);
15310
15311   if (!p_inited) {
15312     orc_once_mutex_lock ();
15313     if (!p_inited) {
15314
15315       p = orc_program_new ();
15316       orc_program_set_name (p, "cogorc_getline_Y444");
15317       orc_program_set_backup_function (p, _backup_cogorc_getline_Y444);
15318       orc_program_add_destination (p, 4, "d1");
15319       orc_program_add_source (p, 1, "s1");
15320       orc_program_add_source (p, 1, "s2");
15321       orc_program_add_source (p, 1, "s3");
15322       orc_program_add_constant (p, 1, 0x000000ff, "c1");
15323       orc_program_add_temporary (p, 2, "t1");
15324       orc_program_add_temporary (p, 2, "t2");
15325
15326       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3,
15327           ORC_VAR_D1);
15328       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1,
15329           ORC_VAR_D1);
15330       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
15331           ORC_VAR_D1);
15332
15333       orc_program_compile (p);
15334     }
15335     p_inited = TRUE;
15336     orc_once_mutex_unlock ();
15337   }
15338   ex->program = p;
15339
15340   ex->n = n;
15341   ex->arrays[ORC_VAR_D1] = d1;
15342   ex->arrays[ORC_VAR_S1] = (void *) s1;
15343   ex->arrays[ORC_VAR_S2] = (void *) s2;
15344   ex->arrays[ORC_VAR_S3] = (void *) s3;
15345
15346   func = p->code_exec;
15347   func (ex);
15348 }
15349 #endif
15350
15351
15352 /* cogorc_getline_Y800 */
15353 #ifdef DISABLE_ORC
15354 void
15355 cogorc_getline_Y800 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
15356     int n)
15357 {
15358   int i;
15359   orc_union32 *ORC_RESTRICT ptr0;
15360   const orc_int8 *ORC_RESTRICT ptr4;
15361   orc_int8 var33;
15362   orc_int8 var34;
15363   orc_union16 var35;
15364   orc_union32 var36;
15365   orc_union16 var37;
15366
15367   ptr0 = (orc_union32 *) d1;
15368   ptr4 = (orc_int8 *) s1;
15369
15370   /* 0: loadpb */
15371   var33 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
15372   /* 3: loadpw */
15373   var35.i = (int) 0x00008080;   /* 32896 or 1.62528e-319f */
15374
15375   for (i = 0; i < n; i++) {
15376     /* 1: loadb */
15377     var34 = ptr4[i];
15378     /* 2: mergebw */
15379     {
15380       orc_union16 _dest;
15381       _dest.x2[0] = var33;
15382       _dest.x2[1] = var34;
15383       var37.i = _dest.i;
15384     }
15385     /* 4: mergewl */
15386     {
15387       orc_union32 _dest;
15388       _dest.x2[0] = var37.i;
15389       _dest.x2[1] = var35.i;
15390       var36.i = _dest.i;
15391     }
15392     /* 5: storel */
15393     ptr0[i] = var36;
15394   }
15395
15396 }
15397
15398 #else
15399 static void
15400 _backup_cogorc_getline_Y800 (OrcExecutor * ORC_RESTRICT ex)
15401 {
15402   int i;
15403   int n = ex->n;
15404   orc_union32 *ORC_RESTRICT ptr0;
15405   const orc_int8 *ORC_RESTRICT ptr4;
15406   orc_int8 var33;
15407   orc_int8 var34;
15408   orc_union16 var35;
15409   orc_union32 var36;
15410   orc_union16 var37;
15411
15412   ptr0 = (orc_union32 *) ex->arrays[0];
15413   ptr4 = (orc_int8 *) ex->arrays[4];
15414
15415   /* 0: loadpb */
15416   var33 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
15417   /* 3: loadpw */
15418   var35.i = (int) 0x00008080;   /* 32896 or 1.62528e-319f */
15419
15420   for (i = 0; i < n; i++) {
15421     /* 1: loadb */
15422     var34 = ptr4[i];
15423     /* 2: mergebw */
15424     {
15425       orc_union16 _dest;
15426       _dest.x2[0] = var33;
15427       _dest.x2[1] = var34;
15428       var37.i = _dest.i;
15429     }
15430     /* 4: mergewl */
15431     {
15432       orc_union32 _dest;
15433       _dest.x2[0] = var37.i;
15434       _dest.x2[1] = var35.i;
15435       var36.i = _dest.i;
15436     }
15437     /* 5: storel */
15438     ptr0[i] = var36;
15439   }
15440
15441 }
15442
15443 void
15444 cogorc_getline_Y800 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
15445     int n)
15446 {
15447   OrcExecutor _ex, *ex = &_ex;
15448   static volatile int p_inited = 0;
15449   static OrcProgram *p = 0;
15450   void (*func) (OrcExecutor *);
15451
15452   if (!p_inited) {
15453     orc_once_mutex_lock ();
15454     if (!p_inited) {
15455
15456       p = orc_program_new ();
15457       orc_program_set_name (p, "cogorc_getline_Y800");
15458       orc_program_set_backup_function (p, _backup_cogorc_getline_Y800);
15459       orc_program_add_destination (p, 4, "d1");
15460       orc_program_add_source (p, 1, "s1");
15461       orc_program_add_constant (p, 1, 0x000000ff, "c1");
15462       orc_program_add_constant (p, 2, 0x00008080, "c2");
15463       orc_program_add_temporary (p, 2, "t1");
15464
15465       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_S1,
15466           ORC_VAR_D1);
15467       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C2,
15468           ORC_VAR_D1);
15469
15470       orc_program_compile (p);
15471     }
15472     p_inited = TRUE;
15473     orc_once_mutex_unlock ();
15474   }
15475   ex->program = p;
15476
15477   ex->n = n;
15478   ex->arrays[ORC_VAR_D1] = d1;
15479   ex->arrays[ORC_VAR_S1] = (void *) s1;
15480
15481   func = p->code_exec;
15482   func (ex);
15483 }
15484 #endif
15485
15486
15487 /* cogorc_getline_Y16 */
15488 #ifdef DISABLE_ORC
15489 void
15490 cogorc_getline_Y16 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
15491     int n)
15492 {
15493   int i;
15494   orc_union32 *ORC_RESTRICT ptr0;
15495   const orc_union16 *ORC_RESTRICT ptr4;
15496   orc_union16 var34;
15497   orc_int8 var35;
15498   orc_union16 var36;
15499   orc_union32 var37;
15500   orc_int8 var38;
15501   orc_union16 var39;
15502
15503   ptr0 = (orc_union32 *) d1;
15504   ptr4 = (orc_union16 *) s1;
15505
15506   /* 2: loadpb */
15507   var35 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
15508   /* 4: loadpw */
15509   var36.i = (int) 0x00008080;   /* 32896 or 1.62528e-319f */
15510
15511   for (i = 0; i < n; i++) {
15512     /* 0: loadw */
15513     var34 = ptr4[i];
15514     /* 1: convhwb */
15515     var38 = ((orc_uint16) var34.i) >> 8;
15516     /* 3: mergebw */
15517     {
15518       orc_union16 _dest;
15519       _dest.x2[0] = var35;
15520       _dest.x2[1] = var38;
15521       var39.i = _dest.i;
15522     }
15523     /* 5: mergewl */
15524     {
15525       orc_union32 _dest;
15526       _dest.x2[0] = var39.i;
15527       _dest.x2[1] = var36.i;
15528       var37.i = _dest.i;
15529     }
15530     /* 6: storel */
15531     ptr0[i] = var37;
15532   }
15533
15534 }
15535
15536 #else
15537 static void
15538 _backup_cogorc_getline_Y16 (OrcExecutor * ORC_RESTRICT ex)
15539 {
15540   int i;
15541   int n = ex->n;
15542   orc_union32 *ORC_RESTRICT ptr0;
15543   const orc_union16 *ORC_RESTRICT ptr4;
15544   orc_union16 var34;
15545   orc_int8 var35;
15546   orc_union16 var36;
15547   orc_union32 var37;
15548   orc_int8 var38;
15549   orc_union16 var39;
15550
15551   ptr0 = (orc_union32 *) ex->arrays[0];
15552   ptr4 = (orc_union16 *) ex->arrays[4];
15553
15554   /* 2: loadpb */
15555   var35 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
15556   /* 4: loadpw */
15557   var36.i = (int) 0x00008080;   /* 32896 or 1.62528e-319f */
15558
15559   for (i = 0; i < n; i++) {
15560     /* 0: loadw */
15561     var34 = ptr4[i];
15562     /* 1: convhwb */
15563     var38 = ((orc_uint16) var34.i) >> 8;
15564     /* 3: mergebw */
15565     {
15566       orc_union16 _dest;
15567       _dest.x2[0] = var35;
15568       _dest.x2[1] = var38;
15569       var39.i = _dest.i;
15570     }
15571     /* 5: mergewl */
15572     {
15573       orc_union32 _dest;
15574       _dest.x2[0] = var39.i;
15575       _dest.x2[1] = var36.i;
15576       var37.i = _dest.i;
15577     }
15578     /* 6: storel */
15579     ptr0[i] = var37;
15580   }
15581
15582 }
15583
15584 void
15585 cogorc_getline_Y16 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
15586     int n)
15587 {
15588   OrcExecutor _ex, *ex = &_ex;
15589   static volatile int p_inited = 0;
15590   static OrcProgram *p = 0;
15591   void (*func) (OrcExecutor *);
15592
15593   if (!p_inited) {
15594     orc_once_mutex_lock ();
15595     if (!p_inited) {
15596
15597       p = orc_program_new ();
15598       orc_program_set_name (p, "cogorc_getline_Y16");
15599       orc_program_set_backup_function (p, _backup_cogorc_getline_Y16);
15600       orc_program_add_destination (p, 4, "d1");
15601       orc_program_add_source (p, 2, "s1");
15602       orc_program_add_constant (p, 1, 0x000000ff, "c1");
15603       orc_program_add_constant (p, 2, 0x00008080, "c2");
15604       orc_program_add_temporary (p, 2, "t1");
15605       orc_program_add_temporary (p, 1, "t2");
15606
15607       orc_program_append_2 (p, "convhwb", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1,
15608           ORC_VAR_D1);
15609       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_T2,
15610           ORC_VAR_D1);
15611       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C2,
15612           ORC_VAR_D1);
15613
15614       orc_program_compile (p);
15615     }
15616     p_inited = TRUE;
15617     orc_once_mutex_unlock ();
15618   }
15619   ex->program = p;
15620
15621   ex->n = n;
15622   ex->arrays[ORC_VAR_D1] = d1;
15623   ex->arrays[ORC_VAR_S1] = (void *) s1;
15624
15625   func = p->code_exec;
15626   func (ex);
15627 }
15628 #endif
15629
15630
15631 /* cogorc_getline_BGRA */
15632 #ifdef DISABLE_ORC
15633 void
15634 cogorc_getline_BGRA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
15635     int n)
15636 {
15637   int i;
15638   orc_union32 *ORC_RESTRICT ptr0;
15639   const orc_union32 *ORC_RESTRICT ptr4;
15640   orc_union32 var32;
15641   orc_union32 var33;
15642
15643   ptr0 = (orc_union32 *) d1;
15644   ptr4 = (orc_union32 *) s1;
15645
15646
15647   for (i = 0; i < n; i++) {
15648     /* 0: loadl */
15649     var32 = ptr4[i];
15650     /* 1: swapl */
15651     var33.i = ORC_SWAP_L (var32.i);
15652     /* 2: storel */
15653     ptr0[i] = var33;
15654   }
15655
15656 }
15657
15658 #else
15659 static void
15660 _backup_cogorc_getline_BGRA (OrcExecutor * ORC_RESTRICT ex)
15661 {
15662   int i;
15663   int n = ex->n;
15664   orc_union32 *ORC_RESTRICT ptr0;
15665   const orc_union32 *ORC_RESTRICT ptr4;
15666   orc_union32 var32;
15667   orc_union32 var33;
15668
15669   ptr0 = (orc_union32 *) ex->arrays[0];
15670   ptr4 = (orc_union32 *) ex->arrays[4];
15671
15672
15673   for (i = 0; i < n; i++) {
15674     /* 0: loadl */
15675     var32 = ptr4[i];
15676     /* 1: swapl */
15677     var33.i = ORC_SWAP_L (var32.i);
15678     /* 2: storel */
15679     ptr0[i] = var33;
15680   }
15681
15682 }
15683
15684 void
15685 cogorc_getline_BGRA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
15686     int n)
15687 {
15688   OrcExecutor _ex, *ex = &_ex;
15689   static volatile int p_inited = 0;
15690   static OrcProgram *p = 0;
15691   void (*func) (OrcExecutor *);
15692
15693   if (!p_inited) {
15694     orc_once_mutex_lock ();
15695     if (!p_inited) {
15696
15697       p = orc_program_new ();
15698       orc_program_set_name (p, "cogorc_getline_BGRA");
15699       orc_program_set_backup_function (p, _backup_cogorc_getline_BGRA);
15700       orc_program_add_destination (p, 4, "d1");
15701       orc_program_add_source (p, 4, "s1");
15702
15703       orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1,
15704           ORC_VAR_D1);
15705
15706       orc_program_compile (p);
15707     }
15708     p_inited = TRUE;
15709     orc_once_mutex_unlock ();
15710   }
15711   ex->program = p;
15712
15713   ex->n = n;
15714   ex->arrays[ORC_VAR_D1] = d1;
15715   ex->arrays[ORC_VAR_S1] = (void *) s1;
15716
15717   func = p->code_exec;
15718   func (ex);
15719 }
15720 #endif
15721
15722
15723 /* cogorc_getline_ABGR */
15724 #ifdef DISABLE_ORC
15725 void
15726 cogorc_getline_ABGR (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
15727     int n)
15728 {
15729   int i;
15730   orc_union32 *ORC_RESTRICT ptr0;
15731   const orc_union32 *ORC_RESTRICT ptr4;
15732   orc_union32 var40;
15733   orc_union32 var41;
15734   orc_union16 var42;
15735   orc_union16 var43;
15736   orc_int8 var44;
15737   orc_int8 var45;
15738   orc_int8 var46;
15739   orc_int8 var47;
15740   orc_union16 var48;
15741   orc_union16 var49;
15742
15743   ptr0 = (orc_union32 *) d1;
15744   ptr4 = (orc_union32 *) s1;
15745
15746
15747   for (i = 0; i < n; i++) {
15748     /* 0: loadl */
15749     var40 = ptr4[i];
15750     /* 1: splitlw */
15751     {
15752       orc_union32 _src;
15753       _src.i = var40.i;
15754       var42.i = _src.x2[1];
15755       var43.i = _src.x2[0];
15756     }
15757     /* 2: splitwb */
15758     {
15759       orc_union16 _src;
15760       _src.i = var42.i;
15761       var44 = _src.x2[1];
15762       var45 = _src.x2[0];
15763     }
15764     /* 3: splitwb */
15765     {
15766       orc_union16 _src;
15767       _src.i = var43.i;
15768       var46 = _src.x2[1];
15769       var47 = _src.x2[0];
15770     }
15771     /* 4: mergebw */
15772     {
15773       orc_union16 _dest;
15774       _dest.x2[0] = var47;
15775       _dest.x2[1] = var44;
15776       var48.i = _dest.i;
15777     }
15778     /* 5: mergebw */
15779     {
15780       orc_union16 _dest;
15781       _dest.x2[0] = var45;
15782       _dest.x2[1] = var46;
15783       var49.i = _dest.i;
15784     }
15785     /* 6: mergewl */
15786     {
15787       orc_union32 _dest;
15788       _dest.x2[0] = var48.i;
15789       _dest.x2[1] = var49.i;
15790       var41.i = _dest.i;
15791     }
15792     /* 7: storel */
15793     ptr0[i] = var41;
15794   }
15795
15796 }
15797
15798 #else
15799 static void
15800 _backup_cogorc_getline_ABGR (OrcExecutor * ORC_RESTRICT ex)
15801 {
15802   int i;
15803   int n = ex->n;
15804   orc_union32 *ORC_RESTRICT ptr0;
15805   const orc_union32 *ORC_RESTRICT ptr4;
15806   orc_union32 var40;
15807   orc_union32 var41;
15808   orc_union16 var42;
15809   orc_union16 var43;
15810   orc_int8 var44;
15811   orc_int8 var45;
15812   orc_int8 var46;
15813   orc_int8 var47;
15814   orc_union16 var48;
15815   orc_union16 var49;
15816
15817   ptr0 = (orc_union32 *) ex->arrays[0];
15818   ptr4 = (orc_union32 *) ex->arrays[4];
15819
15820
15821   for (i = 0; i < n; i++) {
15822     /* 0: loadl */
15823     var40 = ptr4[i];
15824     /* 1: splitlw */
15825     {
15826       orc_union32 _src;
15827       _src.i = var40.i;
15828       var42.i = _src.x2[1];
15829       var43.i = _src.x2[0];
15830     }
15831     /* 2: splitwb */
15832     {
15833       orc_union16 _src;
15834       _src.i = var42.i;
15835       var44 = _src.x2[1];
15836       var45 = _src.x2[0];
15837     }
15838     /* 3: splitwb */
15839     {
15840       orc_union16 _src;
15841       _src.i = var43.i;
15842       var46 = _src.x2[1];
15843       var47 = _src.x2[0];
15844     }
15845     /* 4: mergebw */
15846     {
15847       orc_union16 _dest;
15848       _dest.x2[0] = var47;
15849       _dest.x2[1] = var44;
15850       var48.i = _dest.i;
15851     }
15852     /* 5: mergebw */
15853     {
15854       orc_union16 _dest;
15855       _dest.x2[0] = var45;
15856       _dest.x2[1] = var46;
15857       var49.i = _dest.i;
15858     }
15859     /* 6: mergewl */
15860     {
15861       orc_union32 _dest;
15862       _dest.x2[0] = var48.i;
15863       _dest.x2[1] = var49.i;
15864       var41.i = _dest.i;
15865     }
15866     /* 7: storel */
15867     ptr0[i] = var41;
15868   }
15869
15870 }
15871
15872 void
15873 cogorc_getline_ABGR (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
15874     int n)
15875 {
15876   OrcExecutor _ex, *ex = &_ex;
15877   static volatile int p_inited = 0;
15878   static OrcProgram *p = 0;
15879   void (*func) (OrcExecutor *);
15880
15881   if (!p_inited) {
15882     orc_once_mutex_lock ();
15883     if (!p_inited) {
15884
15885       p = orc_program_new ();
15886       orc_program_set_name (p, "cogorc_getline_ABGR");
15887       orc_program_set_backup_function (p, _backup_cogorc_getline_ABGR);
15888       orc_program_add_destination (p, 4, "d1");
15889       orc_program_add_source (p, 4, "s1");
15890       orc_program_add_temporary (p, 1, "t1");
15891       orc_program_add_temporary (p, 1, "t2");
15892       orc_program_add_temporary (p, 1, "t3");
15893       orc_program_add_temporary (p, 1, "t4");
15894       orc_program_add_temporary (p, 2, "t5");
15895       orc_program_add_temporary (p, 2, "t6");
15896       orc_program_add_temporary (p, 2, "t7");
15897       orc_program_add_temporary (p, 2, "t8");
15898
15899       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T5, ORC_VAR_T6, ORC_VAR_S1,
15900           ORC_VAR_D1);
15901       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T5,
15902           ORC_VAR_D1);
15903       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_T6,
15904           ORC_VAR_D1);
15905       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T7, ORC_VAR_T1, ORC_VAR_T2,
15906           ORC_VAR_D1);
15907       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T8, ORC_VAR_T3, ORC_VAR_T4,
15908           ORC_VAR_D1);
15909       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T7, ORC_VAR_T8,
15910           ORC_VAR_D1);
15911
15912       orc_program_compile (p);
15913     }
15914     p_inited = TRUE;
15915     orc_once_mutex_unlock ();
15916   }
15917   ex->program = p;
15918
15919   ex->n = n;
15920   ex->arrays[ORC_VAR_D1] = d1;
15921   ex->arrays[ORC_VAR_S1] = (void *) s1;
15922
15923   func = p->code_exec;
15924   func (ex);
15925 }
15926 #endif
15927
15928
15929 /* cogorc_getline_RGBA */
15930 #ifdef DISABLE_ORC
15931 void
15932 cogorc_getline_RGBA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
15933     int n)
15934 {
15935   int i;
15936   orc_union32 *ORC_RESTRICT ptr0;
15937   const orc_union32 *ORC_RESTRICT ptr4;
15938   orc_union32 var40;
15939   orc_union32 var41;
15940   orc_union16 var42;
15941   orc_union16 var43;
15942   orc_int8 var44;
15943   orc_int8 var45;
15944   orc_int8 var46;
15945   orc_int8 var47;
15946   orc_union16 var48;
15947   orc_union16 var49;
15948
15949   ptr0 = (orc_union32 *) d1;
15950   ptr4 = (orc_union32 *) s1;
15951
15952
15953   for (i = 0; i < n; i++) {
15954     /* 0: loadl */
15955     var40 = ptr4[i];
15956     /* 1: splitlw */
15957     {
15958       orc_union32 _src;
15959       _src.i = var40.i;
15960       var42.i = _src.x2[1];
15961       var43.i = _src.x2[0];
15962     }
15963     /* 2: splitwb */
15964     {
15965       orc_union16 _src;
15966       _src.i = var43.i;
15967       var44 = _src.x2[1];
15968       var45 = _src.x2[0];
15969     }
15970     /* 3: splitwb */
15971     {
15972       orc_union16 _src;
15973       _src.i = var42.i;
15974       var46 = _src.x2[1];
15975       var47 = _src.x2[0];
15976     }
15977     /* 4: mergebw */
15978     {
15979       orc_union16 _dest;
15980       _dest.x2[0] = var46;
15981       _dest.x2[1] = var45;
15982       var48.i = _dest.i;
15983     }
15984     /* 5: mergebw */
15985     {
15986       orc_union16 _dest;
15987       _dest.x2[0] = var44;
15988       _dest.x2[1] = var47;
15989       var49.i = _dest.i;
15990     }
15991     /* 6: mergewl */
15992     {
15993       orc_union32 _dest;
15994       _dest.x2[0] = var48.i;
15995       _dest.x2[1] = var49.i;
15996       var41.i = _dest.i;
15997     }
15998     /* 7: storel */
15999     ptr0[i] = var41;
16000   }
16001
16002 }
16003
16004 #else
16005 static void
16006 _backup_cogorc_getline_RGBA (OrcExecutor * ORC_RESTRICT ex)
16007 {
16008   int i;
16009   int n = ex->n;
16010   orc_union32 *ORC_RESTRICT ptr0;
16011   const orc_union32 *ORC_RESTRICT ptr4;
16012   orc_union32 var40;
16013   orc_union32 var41;
16014   orc_union16 var42;
16015   orc_union16 var43;
16016   orc_int8 var44;
16017   orc_int8 var45;
16018   orc_int8 var46;
16019   orc_int8 var47;
16020   orc_union16 var48;
16021   orc_union16 var49;
16022
16023   ptr0 = (orc_union32 *) ex->arrays[0];
16024   ptr4 = (orc_union32 *) ex->arrays[4];
16025
16026
16027   for (i = 0; i < n; i++) {
16028     /* 0: loadl */
16029     var40 = ptr4[i];
16030     /* 1: splitlw */
16031     {
16032       orc_union32 _src;
16033       _src.i = var40.i;
16034       var42.i = _src.x2[1];
16035       var43.i = _src.x2[0];
16036     }
16037     /* 2: splitwb */
16038     {
16039       orc_union16 _src;
16040       _src.i = var43.i;
16041       var44 = _src.x2[1];
16042       var45 = _src.x2[0];
16043     }
16044     /* 3: splitwb */
16045     {
16046       orc_union16 _src;
16047       _src.i = var42.i;
16048       var46 = _src.x2[1];
16049       var47 = _src.x2[0];
16050     }
16051     /* 4: mergebw */
16052     {
16053       orc_union16 _dest;
16054       _dest.x2[0] = var46;
16055       _dest.x2[1] = var45;
16056       var48.i = _dest.i;
16057     }
16058     /* 5: mergebw */
16059     {
16060       orc_union16 _dest;
16061       _dest.x2[0] = var44;
16062       _dest.x2[1] = var47;
16063       var49.i = _dest.i;
16064     }
16065     /* 6: mergewl */
16066     {
16067       orc_union32 _dest;
16068       _dest.x2[0] = var48.i;
16069       _dest.x2[1] = var49.i;
16070       var41.i = _dest.i;
16071     }
16072     /* 7: storel */
16073     ptr0[i] = var41;
16074   }
16075
16076 }
16077
16078 void
16079 cogorc_getline_RGBA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
16080     int n)
16081 {
16082   OrcExecutor _ex, *ex = &_ex;
16083   static volatile int p_inited = 0;
16084   static OrcProgram *p = 0;
16085   void (*func) (OrcExecutor *);
16086
16087   if (!p_inited) {
16088     orc_once_mutex_lock ();
16089     if (!p_inited) {
16090
16091       p = orc_program_new ();
16092       orc_program_set_name (p, "cogorc_getline_RGBA");
16093       orc_program_set_backup_function (p, _backup_cogorc_getline_RGBA);
16094       orc_program_add_destination (p, 4, "d1");
16095       orc_program_add_source (p, 4, "s1");
16096       orc_program_add_temporary (p, 1, "t1");
16097       orc_program_add_temporary (p, 1, "t2");
16098       orc_program_add_temporary (p, 1, "t3");
16099       orc_program_add_temporary (p, 1, "t4");
16100       orc_program_add_temporary (p, 2, "t5");
16101       orc_program_add_temporary (p, 2, "t6");
16102       orc_program_add_temporary (p, 2, "t7");
16103       orc_program_add_temporary (p, 2, "t8");
16104
16105       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_S1,
16106           ORC_VAR_D1);
16107       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_T5,
16108           ORC_VAR_D1);
16109       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T1, ORC_VAR_T4, ORC_VAR_T6,
16110           ORC_VAR_D1);
16111       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T7, ORC_VAR_T1, ORC_VAR_T2,
16112           ORC_VAR_D1);
16113       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T8, ORC_VAR_T3, ORC_VAR_T4,
16114           ORC_VAR_D1);
16115       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T7, ORC_VAR_T8,
16116           ORC_VAR_D1);
16117
16118       orc_program_compile (p);
16119     }
16120     p_inited = TRUE;
16121     orc_once_mutex_unlock ();
16122   }
16123   ex->program = p;
16124
16125   ex->n = n;
16126   ex->arrays[ORC_VAR_D1] = d1;
16127   ex->arrays[ORC_VAR_S1] = (void *) s1;
16128
16129   func = p->code_exec;
16130   func (ex);
16131 }
16132 #endif
16133
16134
16135 /* cogorc_getline_NV12 */
16136 #ifdef DISABLE_ORC
16137 void
16138 cogorc_getline_NV12 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
16139     const guint8 * ORC_RESTRICT s2, int n)
16140 {
16141   int i;
16142   orc_union64 *ORC_RESTRICT ptr0;
16143   const orc_union16 *ORC_RESTRICT ptr4;
16144   const orc_union16 *ORC_RESTRICT ptr5;
16145   orc_union16 var34;
16146   orc_union16 var35;
16147   orc_union16 var36;
16148   orc_union16 var37;
16149   orc_union64 var38;
16150   orc_union32 var39;
16151   orc_union32 var40;
16152
16153   ptr0 = (orc_union64 *) d1;
16154   ptr4 = (orc_union16 *) s1;
16155   ptr5 = (orc_union16 *) s2;
16156
16157   /* 3: loadpb */
16158   var36.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
16159   var36.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
16160
16161   for (i = 0; i < n; i++) {
16162     /* 0: loadw */
16163     var34 = ptr5[i];
16164     /* 1: loadw */
16165     var35 = ptr5[i];
16166     /* 2: mergewl */
16167     {
16168       orc_union32 _dest;
16169       _dest.x2[0] = var34.i;
16170       _dest.x2[1] = var35.i;
16171       var39.i = _dest.i;
16172     }
16173     /* 4: loadw */
16174     var37 = ptr4[i];
16175     /* 5: mergebw */
16176     {
16177       orc_union16 _dest;
16178       _dest.x2[0] = var36.x2[0];
16179       _dest.x2[1] = var37.x2[0];
16180       var40.x2[0] = _dest.i;
16181     }
16182     {
16183       orc_union16 _dest;
16184       _dest.x2[0] = var36.x2[1];
16185       _dest.x2[1] = var37.x2[1];
16186       var40.x2[1] = _dest.i;
16187     }
16188     /* 6: mergewl */
16189     {
16190       orc_union32 _dest;
16191       _dest.x2[0] = var40.x2[0];
16192       _dest.x2[1] = var39.x2[0];
16193       var38.x2[0] = _dest.i;
16194     }
16195     {
16196       orc_union32 _dest;
16197       _dest.x2[0] = var40.x2[1];
16198       _dest.x2[1] = var39.x2[1];
16199       var38.x2[1] = _dest.i;
16200     }
16201     /* 7: storeq */
16202     ptr0[i] = var38;
16203   }
16204
16205 }
16206
16207 #else
16208 static void
16209 _backup_cogorc_getline_NV12 (OrcExecutor * ORC_RESTRICT ex)
16210 {
16211   int i;
16212   int n = ex->n;
16213   orc_union64 *ORC_RESTRICT ptr0;
16214   const orc_union16 *ORC_RESTRICT ptr4;
16215   const orc_union16 *ORC_RESTRICT ptr5;
16216   orc_union16 var34;
16217   orc_union16 var35;
16218   orc_union16 var36;
16219   orc_union16 var37;
16220   orc_union64 var38;
16221   orc_union32 var39;
16222   orc_union32 var40;
16223
16224   ptr0 = (orc_union64 *) ex->arrays[0];
16225   ptr4 = (orc_union16 *) ex->arrays[4];
16226   ptr5 = (orc_union16 *) ex->arrays[5];
16227
16228   /* 3: loadpb */
16229   var36.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
16230   var36.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
16231
16232   for (i = 0; i < n; i++) {
16233     /* 0: loadw */
16234     var34 = ptr5[i];
16235     /* 1: loadw */
16236     var35 = ptr5[i];
16237     /* 2: mergewl */
16238     {
16239       orc_union32 _dest;
16240       _dest.x2[0] = var34.i;
16241       _dest.x2[1] = var35.i;
16242       var39.i = _dest.i;
16243     }
16244     /* 4: loadw */
16245     var37 = ptr4[i];
16246     /* 5: mergebw */
16247     {
16248       orc_union16 _dest;
16249       _dest.x2[0] = var36.x2[0];
16250       _dest.x2[1] = var37.x2[0];
16251       var40.x2[0] = _dest.i;
16252     }
16253     {
16254       orc_union16 _dest;
16255       _dest.x2[0] = var36.x2[1];
16256       _dest.x2[1] = var37.x2[1];
16257       var40.x2[1] = _dest.i;
16258     }
16259     /* 6: mergewl */
16260     {
16261       orc_union32 _dest;
16262       _dest.x2[0] = var40.x2[0];
16263       _dest.x2[1] = var39.x2[0];
16264       var38.x2[0] = _dest.i;
16265     }
16266     {
16267       orc_union32 _dest;
16268       _dest.x2[0] = var40.x2[1];
16269       _dest.x2[1] = var39.x2[1];
16270       var38.x2[1] = _dest.i;
16271     }
16272     /* 7: storeq */
16273     ptr0[i] = var38;
16274   }
16275
16276 }
16277
16278 void
16279 cogorc_getline_NV12 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
16280     const guint8 * ORC_RESTRICT s2, int n)
16281 {
16282   OrcExecutor _ex, *ex = &_ex;
16283   static volatile int p_inited = 0;
16284   static OrcProgram *p = 0;
16285   void (*func) (OrcExecutor *);
16286
16287   if (!p_inited) {
16288     orc_once_mutex_lock ();
16289     if (!p_inited) {
16290
16291       p = orc_program_new ();
16292       orc_program_set_name (p, "cogorc_getline_NV12");
16293       orc_program_set_backup_function (p, _backup_cogorc_getline_NV12);
16294       orc_program_add_destination (p, 8, "d1");
16295       orc_program_add_source (p, 2, "s1");
16296       orc_program_add_source (p, 2, "s2");
16297       orc_program_add_constant (p, 1, 0x000000ff, "c1");
16298       orc_program_add_temporary (p, 4, "t1");
16299       orc_program_add_temporary (p, 4, "t2");
16300
16301       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S2,
16302           ORC_VAR_D1);
16303       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_S1,
16304           ORC_VAR_D1);
16305       orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
16306           ORC_VAR_D1);
16307
16308       orc_program_compile (p);
16309     }
16310     p_inited = TRUE;
16311     orc_once_mutex_unlock ();
16312   }
16313   ex->program = p;
16314
16315   ex->n = n;
16316   ex->arrays[ORC_VAR_D1] = d1;
16317   ex->arrays[ORC_VAR_S1] = (void *) s1;
16318   ex->arrays[ORC_VAR_S2] = (void *) s2;
16319
16320   func = p->code_exec;
16321   func (ex);
16322 }
16323 #endif
16324
16325
16326 /* cogorc_getline_NV21 */
16327 #ifdef DISABLE_ORC
16328 void
16329 cogorc_getline_NV21 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
16330     const guint8 * ORC_RESTRICT s2, int n)
16331 {
16332   int i;
16333   orc_union64 *ORC_RESTRICT ptr0;
16334   const orc_union16 *ORC_RESTRICT ptr4;
16335   const orc_union16 *ORC_RESTRICT ptr5;
16336   orc_union16 var35;
16337   orc_union16 var36;
16338   orc_union16 var37;
16339   orc_union64 var38;
16340   orc_union16 var39;
16341   orc_union32 var40;
16342   orc_union32 var41;
16343
16344   ptr0 = (orc_union64 *) d1;
16345   ptr4 = (orc_union16 *) s1;
16346   ptr5 = (orc_union16 *) s2;
16347
16348   /* 3: loadpb */
16349   var36.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
16350   var36.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
16351
16352   for (i = 0; i < n; i++) {
16353     /* 0: loadw */
16354     var35 = ptr5[i];
16355     /* 1: swapw */
16356     var39.i = ORC_SWAP_W (var35.i);
16357     /* 2: mergewl */
16358     {
16359       orc_union32 _dest;
16360       _dest.x2[0] = var39.i;
16361       _dest.x2[1] = var39.i;
16362       var40.i = _dest.i;
16363     }
16364     /* 4: loadw */
16365     var37 = ptr4[i];
16366     /* 5: mergebw */
16367     {
16368       orc_union16 _dest;
16369       _dest.x2[0] = var36.x2[0];
16370       _dest.x2[1] = var37.x2[0];
16371       var41.x2[0] = _dest.i;
16372     }
16373     {
16374       orc_union16 _dest;
16375       _dest.x2[0] = var36.x2[1];
16376       _dest.x2[1] = var37.x2[1];
16377       var41.x2[1] = _dest.i;
16378     }
16379     /* 6: mergewl */
16380     {
16381       orc_union32 _dest;
16382       _dest.x2[0] = var41.x2[0];
16383       _dest.x2[1] = var40.x2[0];
16384       var38.x2[0] = _dest.i;
16385     }
16386     {
16387       orc_union32 _dest;
16388       _dest.x2[0] = var41.x2[1];
16389       _dest.x2[1] = var40.x2[1];
16390       var38.x2[1] = _dest.i;
16391     }
16392     /* 7: storeq */
16393     ptr0[i] = var38;
16394   }
16395
16396 }
16397
16398 #else
16399 static void
16400 _backup_cogorc_getline_NV21 (OrcExecutor * ORC_RESTRICT ex)
16401 {
16402   int i;
16403   int n = ex->n;
16404   orc_union64 *ORC_RESTRICT ptr0;
16405   const orc_union16 *ORC_RESTRICT ptr4;
16406   const orc_union16 *ORC_RESTRICT ptr5;
16407   orc_union16 var35;
16408   orc_union16 var36;
16409   orc_union16 var37;
16410   orc_union64 var38;
16411   orc_union16 var39;
16412   orc_union32 var40;
16413   orc_union32 var41;
16414
16415   ptr0 = (orc_union64 *) ex->arrays[0];
16416   ptr4 = (orc_union16 *) ex->arrays[4];
16417   ptr5 = (orc_union16 *) ex->arrays[5];
16418
16419   /* 3: loadpb */
16420   var36.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
16421   var36.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
16422
16423   for (i = 0; i < n; i++) {
16424     /* 0: loadw */
16425     var35 = ptr5[i];
16426     /* 1: swapw */
16427     var39.i = ORC_SWAP_W (var35.i);
16428     /* 2: mergewl */
16429     {
16430       orc_union32 _dest;
16431       _dest.x2[0] = var39.i;
16432       _dest.x2[1] = var39.i;
16433       var40.i = _dest.i;
16434     }
16435     /* 4: loadw */
16436     var37 = ptr4[i];
16437     /* 5: mergebw */
16438     {
16439       orc_union16 _dest;
16440       _dest.x2[0] = var36.x2[0];
16441       _dest.x2[1] = var37.x2[0];
16442       var41.x2[0] = _dest.i;
16443     }
16444     {
16445       orc_union16 _dest;
16446       _dest.x2[0] = var36.x2[1];
16447       _dest.x2[1] = var37.x2[1];
16448       var41.x2[1] = _dest.i;
16449     }
16450     /* 6: mergewl */
16451     {
16452       orc_union32 _dest;
16453       _dest.x2[0] = var41.x2[0];
16454       _dest.x2[1] = var40.x2[0];
16455       var38.x2[0] = _dest.i;
16456     }
16457     {
16458       orc_union32 _dest;
16459       _dest.x2[0] = var41.x2[1];
16460       _dest.x2[1] = var40.x2[1];
16461       var38.x2[1] = _dest.i;
16462     }
16463     /* 7: storeq */
16464     ptr0[i] = var38;
16465   }
16466
16467 }
16468
16469 void
16470 cogorc_getline_NV21 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
16471     const guint8 * ORC_RESTRICT s2, int n)
16472 {
16473   OrcExecutor _ex, *ex = &_ex;
16474   static volatile int p_inited = 0;
16475   static OrcProgram *p = 0;
16476   void (*func) (OrcExecutor *);
16477
16478   if (!p_inited) {
16479     orc_once_mutex_lock ();
16480     if (!p_inited) {
16481
16482       p = orc_program_new ();
16483       orc_program_set_name (p, "cogorc_getline_NV21");
16484       orc_program_set_backup_function (p, _backup_cogorc_getline_NV21);
16485       orc_program_add_destination (p, 8, "d1");
16486       orc_program_add_source (p, 2, "s1");
16487       orc_program_add_source (p, 2, "s2");
16488       orc_program_add_constant (p, 1, 0x000000ff, "c1");
16489       orc_program_add_temporary (p, 2, "t1");
16490       orc_program_add_temporary (p, 4, "t2");
16491       orc_program_add_temporary (p, 4, "t3");
16492
16493       orc_program_append_2 (p, "swapw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_D1,
16494           ORC_VAR_D1);
16495       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1,
16496           ORC_VAR_D1);
16497       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1,
16498           ORC_VAR_D1);
16499       orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T3,
16500           ORC_VAR_D1);
16501
16502       orc_program_compile (p);
16503     }
16504     p_inited = TRUE;
16505     orc_once_mutex_unlock ();
16506   }
16507   ex->program = p;
16508
16509   ex->n = n;
16510   ex->arrays[ORC_VAR_D1] = d1;
16511   ex->arrays[ORC_VAR_S1] = (void *) s1;
16512   ex->arrays[ORC_VAR_S2] = (void *) s2;
16513
16514   func = p->code_exec;
16515   func (ex);
16516 }
16517 #endif
16518
16519
16520 /* cogorc_getline_A420 */
16521 #ifdef DISABLE_ORC
16522 void
16523 cogorc_getline_A420 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
16524     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3,
16525     const guint8 * ORC_RESTRICT s4, int n)
16526 {
16527   int i;
16528   orc_union32 *ORC_RESTRICT ptr0;
16529   const orc_int8 *ORC_RESTRICT ptr4;
16530   const orc_int8 *ORC_RESTRICT ptr5;
16531   const orc_int8 *ORC_RESTRICT ptr6;
16532   const orc_int8 *ORC_RESTRICT ptr7;
16533   orc_int8 var36;
16534   orc_int8 var37;
16535   orc_union32 var38;
16536   orc_int8 var39;
16537   orc_int8 var40;
16538   orc_union16 var41;
16539   orc_union16 var42;
16540
16541   ptr0 = (orc_union32 *) d1;
16542   ptr4 = (orc_int8 *) s1;
16543   ptr5 = (orc_int8 *) s2;
16544   ptr6 = (orc_int8 *) s3;
16545   ptr7 = (orc_int8 *) s4;
16546
16547
16548   for (i = 0; i < n; i++) {
16549     /* 0: loadupdb */
16550     var39 = ptr5[i >> 1];
16551     /* 1: loadupdb */
16552     var40 = ptr6[i >> 1];
16553     /* 2: mergebw */
16554     {
16555       orc_union16 _dest;
16556       _dest.x2[0] = var39;
16557       _dest.x2[1] = var40;
16558       var41.i = _dest.i;
16559     }
16560     /* 3: loadb */
16561     var36 = ptr7[i];
16562     /* 4: loadb */
16563     var37 = ptr4[i];
16564     /* 5: mergebw */
16565     {
16566       orc_union16 _dest;
16567       _dest.x2[0] = var36;
16568       _dest.x2[1] = var37;
16569       var42.i = _dest.i;
16570     }
16571     /* 6: mergewl */
16572     {
16573       orc_union32 _dest;
16574       _dest.x2[0] = var42.i;
16575       _dest.x2[1] = var41.i;
16576       var38.i = _dest.i;
16577     }
16578     /* 7: storel */
16579     ptr0[i] = var38;
16580   }
16581
16582 }
16583
16584 #else
16585 static void
16586 _backup_cogorc_getline_A420 (OrcExecutor * ORC_RESTRICT ex)
16587 {
16588   int i;
16589   int n = ex->n;
16590   orc_union32 *ORC_RESTRICT ptr0;
16591   const orc_int8 *ORC_RESTRICT ptr4;
16592   const orc_int8 *ORC_RESTRICT ptr5;
16593   const orc_int8 *ORC_RESTRICT ptr6;
16594   const orc_int8 *ORC_RESTRICT ptr7;
16595   orc_int8 var36;
16596   orc_int8 var37;
16597   orc_union32 var38;
16598   orc_int8 var39;
16599   orc_int8 var40;
16600   orc_union16 var41;
16601   orc_union16 var42;
16602
16603   ptr0 = (orc_union32 *) ex->arrays[0];
16604   ptr4 = (orc_int8 *) ex->arrays[4];
16605   ptr5 = (orc_int8 *) ex->arrays[5];
16606   ptr6 = (orc_int8 *) ex->arrays[6];
16607   ptr7 = (orc_int8 *) ex->arrays[7];
16608
16609
16610   for (i = 0; i < n; i++) {
16611     /* 0: loadupdb */
16612     var39 = ptr5[i >> 1];
16613     /* 1: loadupdb */
16614     var40 = ptr6[i >> 1];
16615     /* 2: mergebw */
16616     {
16617       orc_union16 _dest;
16618       _dest.x2[0] = var39;
16619       _dest.x2[1] = var40;
16620       var41.i = _dest.i;
16621     }
16622     /* 3: loadb */
16623     var36 = ptr7[i];
16624     /* 4: loadb */
16625     var37 = ptr4[i];
16626     /* 5: mergebw */
16627     {
16628       orc_union16 _dest;
16629       _dest.x2[0] = var36;
16630       _dest.x2[1] = var37;
16631       var42.i = _dest.i;
16632     }
16633     /* 6: mergewl */
16634     {
16635       orc_union32 _dest;
16636       _dest.x2[0] = var42.i;
16637       _dest.x2[1] = var41.i;
16638       var38.i = _dest.i;
16639     }
16640     /* 7: storel */
16641     ptr0[i] = var38;
16642   }
16643
16644 }
16645
16646 void
16647 cogorc_getline_A420 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
16648     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3,
16649     const guint8 * ORC_RESTRICT s4, int n)
16650 {
16651   OrcExecutor _ex, *ex = &_ex;
16652   static volatile int p_inited = 0;
16653   static OrcProgram *p = 0;
16654   void (*func) (OrcExecutor *);
16655
16656   if (!p_inited) {
16657     orc_once_mutex_lock ();
16658     if (!p_inited) {
16659
16660       p = orc_program_new ();
16661       orc_program_set_name (p, "cogorc_getline_A420");
16662       orc_program_set_backup_function (p, _backup_cogorc_getline_A420);
16663       orc_program_add_destination (p, 4, "d1");
16664       orc_program_add_source (p, 1, "s1");
16665       orc_program_add_source (p, 1, "s2");
16666       orc_program_add_source (p, 1, "s3");
16667       orc_program_add_source (p, 1, "s4");
16668       orc_program_add_temporary (p, 2, "t1");
16669       orc_program_add_temporary (p, 2, "t2");
16670       orc_program_add_temporary (p, 1, "t3");
16671       orc_program_add_temporary (p, 1, "t4");
16672
16673       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T3, ORC_VAR_S2,
16674           ORC_VAR_D1, ORC_VAR_D1);
16675       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T4, ORC_VAR_S3,
16676           ORC_VAR_D1, ORC_VAR_D1);
16677       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4,
16678           ORC_VAR_D1);
16679       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_S4, ORC_VAR_S1,
16680           ORC_VAR_D1);
16681       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
16682           ORC_VAR_D1);
16683
16684       orc_program_compile (p);
16685     }
16686     p_inited = TRUE;
16687     orc_once_mutex_unlock ();
16688   }
16689   ex->program = p;
16690
16691   ex->n = n;
16692   ex->arrays[ORC_VAR_D1] = d1;
16693   ex->arrays[ORC_VAR_S1] = (void *) s1;
16694   ex->arrays[ORC_VAR_S2] = (void *) s2;
16695   ex->arrays[ORC_VAR_S3] = (void *) s3;
16696   ex->arrays[ORC_VAR_S4] = (void *) s4;
16697
16698   func = p->code_exec;
16699   func (ex);
16700 }
16701 #endif
16702
16703
16704 /* cogorc_putline_I420 */
16705 #ifdef DISABLE_ORC
16706 void
16707 cogorc_putline_I420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
16708     guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n)
16709 {
16710   int i;
16711   orc_union16 *ORC_RESTRICT ptr0;
16712   orc_int8 *ORC_RESTRICT ptr1;
16713   orc_int8 *ORC_RESTRICT ptr2;
16714   const orc_union64 *ORC_RESTRICT ptr4;
16715   orc_union64 var38;
16716   orc_union16 var39;
16717   orc_int8 var40;
16718   orc_int8 var41;
16719   orc_union32 var42;
16720   orc_union32 var43;
16721   orc_union16 var44;
16722   orc_union16 var45;
16723   orc_int8 var46;
16724   orc_int8 var47;
16725   orc_int8 var48;
16726   orc_int8 var49;
16727
16728   ptr0 = (orc_union16 *) d1;
16729   ptr1 = (orc_int8 *) d2;
16730   ptr2 = (orc_int8 *) d3;
16731   ptr4 = (orc_union64 *) s1;
16732
16733
16734   for (i = 0; i < n; i++) {
16735     /* 0: loadq */
16736     var38 = ptr4[i];
16737     /* 1: splitlw */
16738     {
16739       orc_union32 _src;
16740       _src.i = var38.x2[0];
16741       var42.x2[0] = _src.x2[1];
16742       var43.x2[0] = _src.x2[0];
16743     }
16744     {
16745       orc_union32 _src;
16746       _src.i = var38.x2[1];
16747       var42.x2[1] = _src.x2[1];
16748       var43.x2[1] = _src.x2[0];
16749     }
16750     /* 2: select1wb */
16751     {
16752       orc_union16 _src;
16753       _src.i = var43.x2[0];
16754       var39.x2[0] = _src.x2[1];
16755     }
16756     {
16757       orc_union16 _src;
16758       _src.i = var43.x2[1];
16759       var39.x2[1] = _src.x2[1];
16760     }
16761     /* 3: storew */
16762     ptr0[i] = var39;
16763     /* 4: splitwb */
16764     {
16765       orc_union16 _src;
16766       _src.i = var42.x2[0];
16767       var44.x2[0] = _src.x2[1];
16768       var45.x2[0] = _src.x2[0];
16769     }
16770     {
16771       orc_union16 _src;
16772       _src.i = var42.x2[1];
16773       var44.x2[1] = _src.x2[1];
16774       var45.x2[1] = _src.x2[0];
16775     }
16776     /* 5: splitwb */
16777     {
16778       orc_union16 _src;
16779       _src.i = var45.i;
16780       var46 = _src.x2[1];
16781       var47 = _src.x2[0];
16782     }
16783     /* 6: avgub */
16784     var40 = ((orc_uint8) var46 + (orc_uint8) var47 + 1) >> 1;
16785     /* 7: storeb */
16786     ptr1[i] = var40;
16787     /* 8: splitwb */
16788     {
16789       orc_union16 _src;
16790       _src.i = var44.i;
16791       var48 = _src.x2[1];
16792       var49 = _src.x2[0];
16793     }
16794     /* 9: avgub */
16795     var41 = ((orc_uint8) var48 + (orc_uint8) var49 + 1) >> 1;
16796     /* 10: storeb */
16797     ptr2[i] = var41;
16798   }
16799
16800 }
16801
16802 #else
16803 static void
16804 _backup_cogorc_putline_I420 (OrcExecutor * ORC_RESTRICT ex)
16805 {
16806   int i;
16807   int n = ex->n;
16808   orc_union16 *ORC_RESTRICT ptr0;
16809   orc_int8 *ORC_RESTRICT ptr1;
16810   orc_int8 *ORC_RESTRICT ptr2;
16811   const orc_union64 *ORC_RESTRICT ptr4;
16812   orc_union64 var38;
16813   orc_union16 var39;
16814   orc_int8 var40;
16815   orc_int8 var41;
16816   orc_union32 var42;
16817   orc_union32 var43;
16818   orc_union16 var44;
16819   orc_union16 var45;
16820   orc_int8 var46;
16821   orc_int8 var47;
16822   orc_int8 var48;
16823   orc_int8 var49;
16824
16825   ptr0 = (orc_union16 *) ex->arrays[0];
16826   ptr1 = (orc_int8 *) ex->arrays[1];
16827   ptr2 = (orc_int8 *) ex->arrays[2];
16828   ptr4 = (orc_union64 *) ex->arrays[4];
16829
16830
16831   for (i = 0; i < n; i++) {
16832     /* 0: loadq */
16833     var38 = ptr4[i];
16834     /* 1: splitlw */
16835     {
16836       orc_union32 _src;
16837       _src.i = var38.x2[0];
16838       var42.x2[0] = _src.x2[1];
16839       var43.x2[0] = _src.x2[0];
16840     }
16841     {
16842       orc_union32 _src;
16843       _src.i = var38.x2[1];
16844       var42.x2[1] = _src.x2[1];
16845       var43.x2[1] = _src.x2[0];
16846     }
16847     /* 2: select1wb */
16848     {
16849       orc_union16 _src;
16850       _src.i = var43.x2[0];
16851       var39.x2[0] = _src.x2[1];
16852     }
16853     {
16854       orc_union16 _src;
16855       _src.i = var43.x2[1];
16856       var39.x2[1] = _src.x2[1];
16857     }
16858     /* 3: storew */
16859     ptr0[i] = var39;
16860     /* 4: splitwb */
16861     {
16862       orc_union16 _src;
16863       _src.i = var42.x2[0];
16864       var44.x2[0] = _src.x2[1];
16865       var45.x2[0] = _src.x2[0];
16866     }
16867     {
16868       orc_union16 _src;
16869       _src.i = var42.x2[1];
16870       var44.x2[1] = _src.x2[1];
16871       var45.x2[1] = _src.x2[0];
16872     }
16873     /* 5: splitwb */
16874     {
16875       orc_union16 _src;
16876       _src.i = var45.i;
16877       var46 = _src.x2[1];
16878       var47 = _src.x2[0];
16879     }
16880     /* 6: avgub */
16881     var40 = ((orc_uint8) var46 + (orc_uint8) var47 + 1) >> 1;
16882     /* 7: storeb */
16883     ptr1[i] = var40;
16884     /* 8: splitwb */
16885     {
16886       orc_union16 _src;
16887       _src.i = var44.i;
16888       var48 = _src.x2[1];
16889       var49 = _src.x2[0];
16890     }
16891     /* 9: avgub */
16892     var41 = ((orc_uint8) var48 + (orc_uint8) var49 + 1) >> 1;
16893     /* 10: storeb */
16894     ptr2[i] = var41;
16895   }
16896
16897 }
16898
16899 void
16900 cogorc_putline_I420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
16901     guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n)
16902 {
16903   OrcExecutor _ex, *ex = &_ex;
16904   static volatile int p_inited = 0;
16905   static OrcProgram *p = 0;
16906   void (*func) (OrcExecutor *);
16907
16908   if (!p_inited) {
16909     orc_once_mutex_lock ();
16910     if (!p_inited) {
16911
16912       p = orc_program_new ();
16913       orc_program_set_name (p, "cogorc_putline_I420");
16914       orc_program_set_backup_function (p, _backup_cogorc_putline_I420);
16915       orc_program_add_destination (p, 2, "d1");
16916       orc_program_add_destination (p, 1, "d2");
16917       orc_program_add_destination (p, 1, "d3");
16918       orc_program_add_source (p, 8, "s1");
16919       orc_program_add_temporary (p, 4, "t1");
16920       orc_program_add_temporary (p, 4, "t2");
16921       orc_program_add_temporary (p, 2, "t3");
16922       orc_program_add_temporary (p, 2, "t4");
16923       orc_program_add_temporary (p, 1, "t5");
16924       orc_program_add_temporary (p, 1, "t6");
16925
16926       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
16927           ORC_VAR_D1);
16928       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
16929           ORC_VAR_D1, ORC_VAR_D1);
16930       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T2,
16931           ORC_VAR_D1);
16932       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T5, ORC_VAR_T6, ORC_VAR_T3,
16933           ORC_VAR_D1);
16934       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D2, ORC_VAR_T5, ORC_VAR_T6,
16935           ORC_VAR_D1);
16936       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T5, ORC_VAR_T6, ORC_VAR_T4,
16937           ORC_VAR_D1);
16938       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D3, ORC_VAR_T5, ORC_VAR_T6,
16939           ORC_VAR_D1);
16940
16941       orc_program_compile (p);
16942     }
16943     p_inited = TRUE;
16944     orc_once_mutex_unlock ();
16945   }
16946   ex->program = p;
16947
16948   ex->n = n;
16949   ex->arrays[ORC_VAR_D1] = d1;
16950   ex->arrays[ORC_VAR_D2] = d2;
16951   ex->arrays[ORC_VAR_D3] = d3;
16952   ex->arrays[ORC_VAR_S1] = (void *) s1;
16953
16954   func = p->code_exec;
16955   func (ex);
16956 }
16957 #endif
16958
16959
16960 /* cogorc_putline_YUY2 */
16961 #ifdef DISABLE_ORC
16962 void
16963 cogorc_putline_YUY2 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
16964     int n)
16965 {
16966   int i;
16967   orc_union32 *ORC_RESTRICT ptr0;
16968   const orc_union64 *ORC_RESTRICT ptr4;
16969   orc_union64 var37;
16970   orc_union32 var38;
16971   orc_union32 var39;
16972   orc_union32 var40;
16973   orc_union16 var41;
16974   orc_union16 var42;
16975   orc_union16 var43;
16976   orc_union16 var44;
16977
16978   ptr0 = (orc_union32 *) d1;
16979   ptr4 = (orc_union64 *) s1;
16980
16981
16982   for (i = 0; i < n; i++) {
16983     /* 0: loadq */
16984     var37 = ptr4[i];
16985     /* 1: splitlw */
16986     {
16987       orc_union32 _src;
16988       _src.i = var37.x2[0];
16989       var39.x2[0] = _src.x2[1];
16990       var40.x2[0] = _src.x2[0];
16991     }
16992     {
16993       orc_union32 _src;
16994       _src.i = var37.x2[1];
16995       var39.x2[1] = _src.x2[1];
16996       var40.x2[1] = _src.x2[0];
16997     }
16998     /* 2: splitlw */
16999     {
17000       orc_union32 _src;
17001       _src.i = var39.i;
17002       var41.i = _src.x2[1];
17003       var42.i = _src.x2[0];
17004     }
17005     /* 3: avgub */
17006     var43.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
17007     var43.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
17008     /* 4: select1wb */
17009     {
17010       orc_union16 _src;
17011       _src.i = var40.x2[0];
17012       var44.x2[0] = _src.x2[1];
17013     }
17014     {
17015       orc_union16 _src;
17016       _src.i = var40.x2[1];
17017       var44.x2[1] = _src.x2[1];
17018     }
17019     /* 5: mergebw */
17020     {
17021       orc_union16 _dest;
17022       _dest.x2[0] = var44.x2[0];
17023       _dest.x2[1] = var43.x2[0];
17024       var38.x2[0] = _dest.i;
17025     }
17026     {
17027       orc_union16 _dest;
17028       _dest.x2[0] = var44.x2[1];
17029       _dest.x2[1] = var43.x2[1];
17030       var38.x2[1] = _dest.i;
17031     }
17032     /* 6: storel */
17033     ptr0[i] = var38;
17034   }
17035
17036 }
17037
17038 #else
17039 static void
17040 _backup_cogorc_putline_YUY2 (OrcExecutor * ORC_RESTRICT ex)
17041 {
17042   int i;
17043   int n = ex->n;
17044   orc_union32 *ORC_RESTRICT ptr0;
17045   const orc_union64 *ORC_RESTRICT ptr4;
17046   orc_union64 var37;
17047   orc_union32 var38;
17048   orc_union32 var39;
17049   orc_union32 var40;
17050   orc_union16 var41;
17051   orc_union16 var42;
17052   orc_union16 var43;
17053   orc_union16 var44;
17054
17055   ptr0 = (orc_union32 *) ex->arrays[0];
17056   ptr4 = (orc_union64 *) ex->arrays[4];
17057
17058
17059   for (i = 0; i < n; i++) {
17060     /* 0: loadq */
17061     var37 = ptr4[i];
17062     /* 1: splitlw */
17063     {
17064       orc_union32 _src;
17065       _src.i = var37.x2[0];
17066       var39.x2[0] = _src.x2[1];
17067       var40.x2[0] = _src.x2[0];
17068     }
17069     {
17070       orc_union32 _src;
17071       _src.i = var37.x2[1];
17072       var39.x2[1] = _src.x2[1];
17073       var40.x2[1] = _src.x2[0];
17074     }
17075     /* 2: splitlw */
17076     {
17077       orc_union32 _src;
17078       _src.i = var39.i;
17079       var41.i = _src.x2[1];
17080       var42.i = _src.x2[0];
17081     }
17082     /* 3: avgub */
17083     var43.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
17084     var43.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
17085     /* 4: select1wb */
17086     {
17087       orc_union16 _src;
17088       _src.i = var40.x2[0];
17089       var44.x2[0] = _src.x2[1];
17090     }
17091     {
17092       orc_union16 _src;
17093       _src.i = var40.x2[1];
17094       var44.x2[1] = _src.x2[1];
17095     }
17096     /* 5: mergebw */
17097     {
17098       orc_union16 _dest;
17099       _dest.x2[0] = var44.x2[0];
17100       _dest.x2[1] = var43.x2[0];
17101       var38.x2[0] = _dest.i;
17102     }
17103     {
17104       orc_union16 _dest;
17105       _dest.x2[0] = var44.x2[1];
17106       _dest.x2[1] = var43.x2[1];
17107       var38.x2[1] = _dest.i;
17108     }
17109     /* 6: storel */
17110     ptr0[i] = var38;
17111   }
17112
17113 }
17114
17115 void
17116 cogorc_putline_YUY2 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
17117     int n)
17118 {
17119   OrcExecutor _ex, *ex = &_ex;
17120   static volatile int p_inited = 0;
17121   static OrcProgram *p = 0;
17122   void (*func) (OrcExecutor *);
17123
17124   if (!p_inited) {
17125     orc_once_mutex_lock ();
17126     if (!p_inited) {
17127
17128       p = orc_program_new ();
17129       orc_program_set_name (p, "cogorc_putline_YUY2");
17130       orc_program_set_backup_function (p, _backup_cogorc_putline_YUY2);
17131       orc_program_add_destination (p, 4, "d1");
17132       orc_program_add_source (p, 8, "s1");
17133       orc_program_add_temporary (p, 2, "t1");
17134       orc_program_add_temporary (p, 2, "t2");
17135       orc_program_add_temporary (p, 2, "t3");
17136       orc_program_add_temporary (p, 4, "t4");
17137       orc_program_add_temporary (p, 4, "t5");
17138
17139       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_S1,
17140           ORC_VAR_D1);
17141       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T5,
17142           ORC_VAR_D1);
17143       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3,
17144           ORC_VAR_D1);
17145       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T4,
17146           ORC_VAR_D1, ORC_VAR_D1);
17147       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
17148           ORC_VAR_D1);
17149
17150       orc_program_compile (p);
17151     }
17152     p_inited = TRUE;
17153     orc_once_mutex_unlock ();
17154   }
17155   ex->program = p;
17156
17157   ex->n = n;
17158   ex->arrays[ORC_VAR_D1] = d1;
17159   ex->arrays[ORC_VAR_S1] = (void *) s1;
17160
17161   func = p->code_exec;
17162   func (ex);
17163 }
17164 #endif
17165
17166
17167 /* cogorc_putline_YVYU */
17168 #ifdef DISABLE_ORC
17169 void
17170 cogorc_putline_YVYU (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
17171     int n)
17172 {
17173   int i;
17174   orc_union32 *ORC_RESTRICT ptr0;
17175   const orc_union64 *ORC_RESTRICT ptr4;
17176   orc_union64 var37;
17177   orc_union32 var38;
17178   orc_union32 var39;
17179   orc_union32 var40;
17180   orc_union16 var41;
17181   orc_union16 var42;
17182   orc_union16 var43;
17183   orc_union16 var44;
17184   orc_union16 var45;
17185
17186   ptr0 = (orc_union32 *) d1;
17187   ptr4 = (orc_union64 *) s1;
17188
17189
17190   for (i = 0; i < n; i++) {
17191     /* 0: loadq */
17192     var37 = ptr4[i];
17193     /* 1: splitlw */
17194     {
17195       orc_union32 _src;
17196       _src.i = var37.x2[0];
17197       var39.x2[0] = _src.x2[1];
17198       var40.x2[0] = _src.x2[0];
17199     }
17200     {
17201       orc_union32 _src;
17202       _src.i = var37.x2[1];
17203       var39.x2[1] = _src.x2[1];
17204       var40.x2[1] = _src.x2[0];
17205     }
17206     /* 2: splitlw */
17207     {
17208       orc_union32 _src;
17209       _src.i = var39.i;
17210       var41.i = _src.x2[1];
17211       var42.i = _src.x2[0];
17212     }
17213     /* 3: avgub */
17214     var43.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
17215     var43.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
17216     /* 4: select1wb */
17217     {
17218       orc_union16 _src;
17219       _src.i = var40.x2[0];
17220       var44.x2[0] = _src.x2[1];
17221     }
17222     {
17223       orc_union16 _src;
17224       _src.i = var40.x2[1];
17225       var44.x2[1] = _src.x2[1];
17226     }
17227     /* 5: swapw */
17228     var45.i = ORC_SWAP_W (var43.i);
17229     /* 6: mergebw */
17230     {
17231       orc_union16 _dest;
17232       _dest.x2[0] = var44.x2[0];
17233       _dest.x2[1] = var45.x2[0];
17234       var38.x2[0] = _dest.i;
17235     }
17236     {
17237       orc_union16 _dest;
17238       _dest.x2[0] = var44.x2[1];
17239       _dest.x2[1] = var45.x2[1];
17240       var38.x2[1] = _dest.i;
17241     }
17242     /* 7: storel */
17243     ptr0[i] = var38;
17244   }
17245
17246 }
17247
17248 #else
17249 static void
17250 _backup_cogorc_putline_YVYU (OrcExecutor * ORC_RESTRICT ex)
17251 {
17252   int i;
17253   int n = ex->n;
17254   orc_union32 *ORC_RESTRICT ptr0;
17255   const orc_union64 *ORC_RESTRICT ptr4;
17256   orc_union64 var37;
17257   orc_union32 var38;
17258   orc_union32 var39;
17259   orc_union32 var40;
17260   orc_union16 var41;
17261   orc_union16 var42;
17262   orc_union16 var43;
17263   orc_union16 var44;
17264   orc_union16 var45;
17265
17266   ptr0 = (orc_union32 *) ex->arrays[0];
17267   ptr4 = (orc_union64 *) ex->arrays[4];
17268
17269
17270   for (i = 0; i < n; i++) {
17271     /* 0: loadq */
17272     var37 = ptr4[i];
17273     /* 1: splitlw */
17274     {
17275       orc_union32 _src;
17276       _src.i = var37.x2[0];
17277       var39.x2[0] = _src.x2[1];
17278       var40.x2[0] = _src.x2[0];
17279     }
17280     {
17281       orc_union32 _src;
17282       _src.i = var37.x2[1];
17283       var39.x2[1] = _src.x2[1];
17284       var40.x2[1] = _src.x2[0];
17285     }
17286     /* 2: splitlw */
17287     {
17288       orc_union32 _src;
17289       _src.i = var39.i;
17290       var41.i = _src.x2[1];
17291       var42.i = _src.x2[0];
17292     }
17293     /* 3: avgub */
17294     var43.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
17295     var43.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
17296     /* 4: select1wb */
17297     {
17298       orc_union16 _src;
17299       _src.i = var40.x2[0];
17300       var44.x2[0] = _src.x2[1];
17301     }
17302     {
17303       orc_union16 _src;
17304       _src.i = var40.x2[1];
17305       var44.x2[1] = _src.x2[1];
17306     }
17307     /* 5: swapw */
17308     var45.i = ORC_SWAP_W (var43.i);
17309     /* 6: mergebw */
17310     {
17311       orc_union16 _dest;
17312       _dest.x2[0] = var44.x2[0];
17313       _dest.x2[1] = var45.x2[0];
17314       var38.x2[0] = _dest.i;
17315     }
17316     {
17317       orc_union16 _dest;
17318       _dest.x2[0] = var44.x2[1];
17319       _dest.x2[1] = var45.x2[1];
17320       var38.x2[1] = _dest.i;
17321     }
17322     /* 7: storel */
17323     ptr0[i] = var38;
17324   }
17325
17326 }
17327
17328 void
17329 cogorc_putline_YVYU (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
17330     int n)
17331 {
17332   OrcExecutor _ex, *ex = &_ex;
17333   static volatile int p_inited = 0;
17334   static OrcProgram *p = 0;
17335   void (*func) (OrcExecutor *);
17336
17337   if (!p_inited) {
17338     orc_once_mutex_lock ();
17339     if (!p_inited) {
17340
17341       p = orc_program_new ();
17342       orc_program_set_name (p, "cogorc_putline_YVYU");
17343       orc_program_set_backup_function (p, _backup_cogorc_putline_YVYU);
17344       orc_program_add_destination (p, 4, "d1");
17345       orc_program_add_source (p, 8, "s1");
17346       orc_program_add_temporary (p, 2, "t1");
17347       orc_program_add_temporary (p, 2, "t2");
17348       orc_program_add_temporary (p, 2, "t3");
17349       orc_program_add_temporary (p, 4, "t4");
17350       orc_program_add_temporary (p, 4, "t5");
17351
17352       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_S1,
17353           ORC_VAR_D1);
17354       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T5,
17355           ORC_VAR_D1);
17356       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3,
17357           ORC_VAR_D1);
17358       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T4,
17359           ORC_VAR_D1, ORC_VAR_D1);
17360       orc_program_append_2 (p, "swapw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1,
17361           ORC_VAR_D1);
17362       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
17363           ORC_VAR_D1);
17364
17365       orc_program_compile (p);
17366     }
17367     p_inited = TRUE;
17368     orc_once_mutex_unlock ();
17369   }
17370   ex->program = p;
17371
17372   ex->n = n;
17373   ex->arrays[ORC_VAR_D1] = d1;
17374   ex->arrays[ORC_VAR_S1] = (void *) s1;
17375
17376   func = p->code_exec;
17377   func (ex);
17378 }
17379 #endif
17380
17381
17382 /* cogorc_putline_UYVY */
17383 #ifdef DISABLE_ORC
17384 void
17385 cogorc_putline_UYVY (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
17386     int n)
17387 {
17388   int i;
17389   orc_union32 *ORC_RESTRICT ptr0;
17390   const orc_union64 *ORC_RESTRICT ptr4;
17391   orc_union64 var37;
17392   orc_union32 var38;
17393   orc_union32 var39;
17394   orc_union32 var40;
17395   orc_union16 var41;
17396   orc_union16 var42;
17397   orc_union16 var43;
17398   orc_union16 var44;
17399
17400   ptr0 = (orc_union32 *) d1;
17401   ptr4 = (orc_union64 *) s1;
17402
17403
17404   for (i = 0; i < n; i++) {
17405     /* 0: loadq */
17406     var37 = ptr4[i];
17407     /* 1: splitlw */
17408     {
17409       orc_union32 _src;
17410       _src.i = var37.x2[0];
17411       var39.x2[0] = _src.x2[1];
17412       var40.x2[0] = _src.x2[0];
17413     }
17414     {
17415       orc_union32 _src;
17416       _src.i = var37.x2[1];
17417       var39.x2[1] = _src.x2[1];
17418       var40.x2[1] = _src.x2[0];
17419     }
17420     /* 2: splitlw */
17421     {
17422       orc_union32 _src;
17423       _src.i = var39.i;
17424       var41.i = _src.x2[1];
17425       var42.i = _src.x2[0];
17426     }
17427     /* 3: avgub */
17428     var43.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
17429     var43.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
17430     /* 4: select1wb */
17431     {
17432       orc_union16 _src;
17433       _src.i = var40.x2[0];
17434       var44.x2[0] = _src.x2[1];
17435     }
17436     {
17437       orc_union16 _src;
17438       _src.i = var40.x2[1];
17439       var44.x2[1] = _src.x2[1];
17440     }
17441     /* 5: mergebw */
17442     {
17443       orc_union16 _dest;
17444       _dest.x2[0] = var43.x2[0];
17445       _dest.x2[1] = var44.x2[0];
17446       var38.x2[0] = _dest.i;
17447     }
17448     {
17449       orc_union16 _dest;
17450       _dest.x2[0] = var43.x2[1];
17451       _dest.x2[1] = var44.x2[1];
17452       var38.x2[1] = _dest.i;
17453     }
17454     /* 6: storel */
17455     ptr0[i] = var38;
17456   }
17457
17458 }
17459
17460 #else
17461 static void
17462 _backup_cogorc_putline_UYVY (OrcExecutor * ORC_RESTRICT ex)
17463 {
17464   int i;
17465   int n = ex->n;
17466   orc_union32 *ORC_RESTRICT ptr0;
17467   const orc_union64 *ORC_RESTRICT ptr4;
17468   orc_union64 var37;
17469   orc_union32 var38;
17470   orc_union32 var39;
17471   orc_union32 var40;
17472   orc_union16 var41;
17473   orc_union16 var42;
17474   orc_union16 var43;
17475   orc_union16 var44;
17476
17477   ptr0 = (orc_union32 *) ex->arrays[0];
17478   ptr4 = (orc_union64 *) ex->arrays[4];
17479
17480
17481   for (i = 0; i < n; i++) {
17482     /* 0: loadq */
17483     var37 = ptr4[i];
17484     /* 1: splitlw */
17485     {
17486       orc_union32 _src;
17487       _src.i = var37.x2[0];
17488       var39.x2[0] = _src.x2[1];
17489       var40.x2[0] = _src.x2[0];
17490     }
17491     {
17492       orc_union32 _src;
17493       _src.i = var37.x2[1];
17494       var39.x2[1] = _src.x2[1];
17495       var40.x2[1] = _src.x2[0];
17496     }
17497     /* 2: splitlw */
17498     {
17499       orc_union32 _src;
17500       _src.i = var39.i;
17501       var41.i = _src.x2[1];
17502       var42.i = _src.x2[0];
17503     }
17504     /* 3: avgub */
17505     var43.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
17506     var43.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
17507     /* 4: select1wb */
17508     {
17509       orc_union16 _src;
17510       _src.i = var40.x2[0];
17511       var44.x2[0] = _src.x2[1];
17512     }
17513     {
17514       orc_union16 _src;
17515       _src.i = var40.x2[1];
17516       var44.x2[1] = _src.x2[1];
17517     }
17518     /* 5: mergebw */
17519     {
17520       orc_union16 _dest;
17521       _dest.x2[0] = var43.x2[0];
17522       _dest.x2[1] = var44.x2[0];
17523       var38.x2[0] = _dest.i;
17524     }
17525     {
17526       orc_union16 _dest;
17527       _dest.x2[0] = var43.x2[1];
17528       _dest.x2[1] = var44.x2[1];
17529       var38.x2[1] = _dest.i;
17530     }
17531     /* 6: storel */
17532     ptr0[i] = var38;
17533   }
17534
17535 }
17536
17537 void
17538 cogorc_putline_UYVY (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
17539     int n)
17540 {
17541   OrcExecutor _ex, *ex = &_ex;
17542   static volatile int p_inited = 0;
17543   static OrcProgram *p = 0;
17544   void (*func) (OrcExecutor *);
17545
17546   if (!p_inited) {
17547     orc_once_mutex_lock ();
17548     if (!p_inited) {
17549
17550       p = orc_program_new ();
17551       orc_program_set_name (p, "cogorc_putline_UYVY");
17552       orc_program_set_backup_function (p, _backup_cogorc_putline_UYVY);
17553       orc_program_add_destination (p, 4, "d1");
17554       orc_program_add_source (p, 8, "s1");
17555       orc_program_add_temporary (p, 2, "t1");
17556       orc_program_add_temporary (p, 2, "t2");
17557       orc_program_add_temporary (p, 2, "t3");
17558       orc_program_add_temporary (p, 4, "t4");
17559       orc_program_add_temporary (p, 4, "t5");
17560
17561       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_S1,
17562           ORC_VAR_D1);
17563       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T5,
17564           ORC_VAR_D1);
17565       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3,
17566           ORC_VAR_D1);
17567       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T4,
17568           ORC_VAR_D1, ORC_VAR_D1);
17569       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
17570           ORC_VAR_D1);
17571
17572       orc_program_compile (p);
17573     }
17574     p_inited = TRUE;
17575     orc_once_mutex_unlock ();
17576   }
17577   ex->program = p;
17578
17579   ex->n = n;
17580   ex->arrays[ORC_VAR_D1] = d1;
17581   ex->arrays[ORC_VAR_S1] = (void *) s1;
17582
17583   func = p->code_exec;
17584   func (ex);
17585 }
17586 #endif
17587
17588
17589 /* cogorc_putline_Y42B */
17590 #ifdef DISABLE_ORC
17591 void
17592 cogorc_putline_Y42B (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
17593     guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n)
17594 {
17595   int i;
17596   orc_union16 *ORC_RESTRICT ptr0;
17597   orc_int8 *ORC_RESTRICT ptr1;
17598   orc_int8 *ORC_RESTRICT ptr2;
17599   const orc_union64 *ORC_RESTRICT ptr4;
17600   orc_union64 var36;
17601   orc_int8 var37;
17602   orc_int8 var38;
17603   orc_union16 var39;
17604   orc_union32 var40;
17605   orc_union32 var41;
17606   orc_union16 var42;
17607   orc_union16 var43;
17608   orc_union16 var44;
17609
17610   ptr0 = (orc_union16 *) d1;
17611   ptr1 = (orc_int8 *) d2;
17612   ptr2 = (orc_int8 *) d3;
17613   ptr4 = (orc_union64 *) s1;
17614
17615
17616   for (i = 0; i < n; i++) {
17617     /* 0: loadq */
17618     var36 = ptr4[i];
17619     /* 1: splitlw */
17620     {
17621       orc_union32 _src;
17622       _src.i = var36.x2[0];
17623       var40.x2[0] = _src.x2[1];
17624       var41.x2[0] = _src.x2[0];
17625     }
17626     {
17627       orc_union32 _src;
17628       _src.i = var36.x2[1];
17629       var40.x2[1] = _src.x2[1];
17630       var41.x2[1] = _src.x2[0];
17631     }
17632     /* 2: splitlw */
17633     {
17634       orc_union32 _src;
17635       _src.i = var40.i;
17636       var42.i = _src.x2[1];
17637       var43.i = _src.x2[0];
17638     }
17639     /* 3: avgub */
17640     var44.x2[0] = ((orc_uint8) var42.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1;
17641     var44.x2[1] = ((orc_uint8) var42.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1;
17642     /* 4: splitwb */
17643     {
17644       orc_union16 _src;
17645       _src.i = var44.i;
17646       var37 = _src.x2[1];
17647       var38 = _src.x2[0];
17648     }
17649     /* 5: storeb */
17650     ptr2[i] = var37;
17651     /* 6: storeb */
17652     ptr1[i] = var38;
17653     /* 7: select1wb */
17654     {
17655       orc_union16 _src;
17656       _src.i = var41.x2[0];
17657       var39.x2[0] = _src.x2[1];
17658     }
17659     {
17660       orc_union16 _src;
17661       _src.i = var41.x2[1];
17662       var39.x2[1] = _src.x2[1];
17663     }
17664     /* 8: storew */
17665     ptr0[i] = var39;
17666   }
17667
17668 }
17669
17670 #else
17671 static void
17672 _backup_cogorc_putline_Y42B (OrcExecutor * ORC_RESTRICT ex)
17673 {
17674   int i;
17675   int n = ex->n;
17676   orc_union16 *ORC_RESTRICT ptr0;
17677   orc_int8 *ORC_RESTRICT ptr1;
17678   orc_int8 *ORC_RESTRICT ptr2;
17679   const orc_union64 *ORC_RESTRICT ptr4;
17680   orc_union64 var36;
17681   orc_int8 var37;
17682   orc_int8 var38;
17683   orc_union16 var39;
17684   orc_union32 var40;
17685   orc_union32 var41;
17686   orc_union16 var42;
17687   orc_union16 var43;
17688   orc_union16 var44;
17689
17690   ptr0 = (orc_union16 *) ex->arrays[0];
17691   ptr1 = (orc_int8 *) ex->arrays[1];
17692   ptr2 = (orc_int8 *) ex->arrays[2];
17693   ptr4 = (orc_union64 *) ex->arrays[4];
17694
17695
17696   for (i = 0; i < n; i++) {
17697     /* 0: loadq */
17698     var36 = ptr4[i];
17699     /* 1: splitlw */
17700     {
17701       orc_union32 _src;
17702       _src.i = var36.x2[0];
17703       var40.x2[0] = _src.x2[1];
17704       var41.x2[0] = _src.x2[0];
17705     }
17706     {
17707       orc_union32 _src;
17708       _src.i = var36.x2[1];
17709       var40.x2[1] = _src.x2[1];
17710       var41.x2[1] = _src.x2[0];
17711     }
17712     /* 2: splitlw */
17713     {
17714       orc_union32 _src;
17715       _src.i = var40.i;
17716       var42.i = _src.x2[1];
17717       var43.i = _src.x2[0];
17718     }
17719     /* 3: avgub */
17720     var44.x2[0] = ((orc_uint8) var42.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1;
17721     var44.x2[1] = ((orc_uint8) var42.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1;
17722     /* 4: splitwb */
17723     {
17724       orc_union16 _src;
17725       _src.i = var44.i;
17726       var37 = _src.x2[1];
17727       var38 = _src.x2[0];
17728     }
17729     /* 5: storeb */
17730     ptr2[i] = var37;
17731     /* 6: storeb */
17732     ptr1[i] = var38;
17733     /* 7: select1wb */
17734     {
17735       orc_union16 _src;
17736       _src.i = var41.x2[0];
17737       var39.x2[0] = _src.x2[1];
17738     }
17739     {
17740       orc_union16 _src;
17741       _src.i = var41.x2[1];
17742       var39.x2[1] = _src.x2[1];
17743     }
17744     /* 8: storew */
17745     ptr0[i] = var39;
17746   }
17747
17748 }
17749
17750 void
17751 cogorc_putline_Y42B (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
17752     guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n)
17753 {
17754   OrcExecutor _ex, *ex = &_ex;
17755   static volatile int p_inited = 0;
17756   static OrcProgram *p = 0;
17757   void (*func) (OrcExecutor *);
17758
17759   if (!p_inited) {
17760     orc_once_mutex_lock ();
17761     if (!p_inited) {
17762
17763       p = orc_program_new ();
17764       orc_program_set_name (p, "cogorc_putline_Y42B");
17765       orc_program_set_backup_function (p, _backup_cogorc_putline_Y42B);
17766       orc_program_add_destination (p, 2, "d1");
17767       orc_program_add_destination (p, 1, "d2");
17768       orc_program_add_destination (p, 1, "d3");
17769       orc_program_add_source (p, 8, "s1");
17770       orc_program_add_temporary (p, 4, "t1");
17771       orc_program_add_temporary (p, 4, "t2");
17772       orc_program_add_temporary (p, 2, "t3");
17773       orc_program_add_temporary (p, 2, "t4");
17774
17775       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
17776           ORC_VAR_D1);
17777       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2,
17778           ORC_VAR_D1);
17779       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4,
17780           ORC_VAR_D1);
17781       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T3,
17782           ORC_VAR_D1);
17783       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
17784           ORC_VAR_D1, ORC_VAR_D1);
17785
17786       orc_program_compile (p);
17787     }
17788     p_inited = TRUE;
17789     orc_once_mutex_unlock ();
17790   }
17791   ex->program = p;
17792
17793   ex->n = n;
17794   ex->arrays[ORC_VAR_D1] = d1;
17795   ex->arrays[ORC_VAR_D2] = d2;
17796   ex->arrays[ORC_VAR_D3] = d3;
17797   ex->arrays[ORC_VAR_S1] = (void *) s1;
17798
17799   func = p->code_exec;
17800   func (ex);
17801 }
17802 #endif
17803
17804
17805 /* cogorc_putline_Y444 */
17806 #ifdef DISABLE_ORC
17807 void
17808 cogorc_putline_Y444 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
17809     guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n)
17810 {
17811   int i;
17812   orc_int8 *ORC_RESTRICT ptr0;
17813   orc_int8 *ORC_RESTRICT ptr1;
17814   orc_int8 *ORC_RESTRICT ptr2;
17815   const orc_union32 *ORC_RESTRICT ptr4;
17816   orc_union32 var34;
17817   orc_int8 var35;
17818   orc_int8 var36;
17819   orc_int8 var37;
17820   orc_union16 var38;
17821   orc_union16 var39;
17822
17823   ptr0 = (orc_int8 *) d1;
17824   ptr1 = (orc_int8 *) d2;
17825   ptr2 = (orc_int8 *) d3;
17826   ptr4 = (orc_union32 *) s1;
17827
17828
17829   for (i = 0; i < n; i++) {
17830     /* 0: loadl */
17831     var34 = ptr4[i];
17832     /* 1: splitlw */
17833     {
17834       orc_union32 _src;
17835       _src.i = var34.i;
17836       var38.i = _src.x2[1];
17837       var39.i = _src.x2[0];
17838     }
17839     /* 2: splitwb */
17840     {
17841       orc_union16 _src;
17842       _src.i = var38.i;
17843       var35 = _src.x2[1];
17844       var36 = _src.x2[0];
17845     }
17846     /* 3: storeb */
17847     ptr2[i] = var35;
17848     /* 4: storeb */
17849     ptr1[i] = var36;
17850     /* 5: select1wb */
17851     {
17852       orc_union16 _src;
17853       _src.i = var39.i;
17854       var37 = _src.x2[1];
17855     }
17856     /* 6: storeb */
17857     ptr0[i] = var37;
17858   }
17859
17860 }
17861
17862 #else
17863 static void
17864 _backup_cogorc_putline_Y444 (OrcExecutor * ORC_RESTRICT ex)
17865 {
17866   int i;
17867   int n = ex->n;
17868   orc_int8 *ORC_RESTRICT ptr0;
17869   orc_int8 *ORC_RESTRICT ptr1;
17870   orc_int8 *ORC_RESTRICT ptr2;
17871   const orc_union32 *ORC_RESTRICT ptr4;
17872   orc_union32 var34;
17873   orc_int8 var35;
17874   orc_int8 var36;
17875   orc_int8 var37;
17876   orc_union16 var38;
17877   orc_union16 var39;
17878
17879   ptr0 = (orc_int8 *) ex->arrays[0];
17880   ptr1 = (orc_int8 *) ex->arrays[1];
17881   ptr2 = (orc_int8 *) ex->arrays[2];
17882   ptr4 = (orc_union32 *) ex->arrays[4];
17883
17884
17885   for (i = 0; i < n; i++) {
17886     /* 0: loadl */
17887     var34 = ptr4[i];
17888     /* 1: splitlw */
17889     {
17890       orc_union32 _src;
17891       _src.i = var34.i;
17892       var38.i = _src.x2[1];
17893       var39.i = _src.x2[0];
17894     }
17895     /* 2: splitwb */
17896     {
17897       orc_union16 _src;
17898       _src.i = var38.i;
17899       var35 = _src.x2[1];
17900       var36 = _src.x2[0];
17901     }
17902     /* 3: storeb */
17903     ptr2[i] = var35;
17904     /* 4: storeb */
17905     ptr1[i] = var36;
17906     /* 5: select1wb */
17907     {
17908       orc_union16 _src;
17909       _src.i = var39.i;
17910       var37 = _src.x2[1];
17911     }
17912     /* 6: storeb */
17913     ptr0[i] = var37;
17914   }
17915
17916 }
17917
17918 void
17919 cogorc_putline_Y444 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
17920     guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n)
17921 {
17922   OrcExecutor _ex, *ex = &_ex;
17923   static volatile int p_inited = 0;
17924   static OrcProgram *p = 0;
17925   void (*func) (OrcExecutor *);
17926
17927   if (!p_inited) {
17928     orc_once_mutex_lock ();
17929     if (!p_inited) {
17930
17931       p = orc_program_new ();
17932       orc_program_set_name (p, "cogorc_putline_Y444");
17933       orc_program_set_backup_function (p, _backup_cogorc_putline_Y444);
17934       orc_program_add_destination (p, 1, "d1");
17935       orc_program_add_destination (p, 1, "d2");
17936       orc_program_add_destination (p, 1, "d3");
17937       orc_program_add_source (p, 4, "s1");
17938       orc_program_add_temporary (p, 2, "t1");
17939       orc_program_add_temporary (p, 2, "t2");
17940
17941       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
17942           ORC_VAR_D1);
17943       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T2,
17944           ORC_VAR_D1);
17945       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1,
17946           ORC_VAR_D1, ORC_VAR_D1);
17947
17948       orc_program_compile (p);
17949     }
17950     p_inited = TRUE;
17951     orc_once_mutex_unlock ();
17952   }
17953   ex->program = p;
17954
17955   ex->n = n;
17956   ex->arrays[ORC_VAR_D1] = d1;
17957   ex->arrays[ORC_VAR_D2] = d2;
17958   ex->arrays[ORC_VAR_D3] = d3;
17959   ex->arrays[ORC_VAR_S1] = (void *) s1;
17960
17961   func = p->code_exec;
17962   func (ex);
17963 }
17964 #endif
17965
17966
17967 /* cogorc_putline_Y800 */
17968 #ifdef DISABLE_ORC
17969 void
17970 cogorc_putline_Y800 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
17971     int n)
17972 {
17973   int i;
17974   orc_int8 *ORC_RESTRICT ptr0;
17975   const orc_union32 *ORC_RESTRICT ptr4;
17976   orc_union32 var33;
17977   orc_int8 var34;
17978   orc_union16 var35;
17979
17980   ptr0 = (orc_int8 *) d1;
17981   ptr4 = (orc_union32 *) s1;
17982
17983
17984   for (i = 0; i < n; i++) {
17985     /* 0: loadl */
17986     var33 = ptr4[i];
17987     /* 1: select0lw */
17988     {
17989       orc_union32 _src;
17990       _src.i = var33.i;
17991       var35.i = _src.x2[0];
17992     }
17993     /* 2: select1wb */
17994     {
17995       orc_union16 _src;
17996       _src.i = var35.i;
17997       var34 = _src.x2[1];
17998     }
17999     /* 3: storeb */
18000     ptr0[i] = var34;
18001   }
18002
18003 }
18004
18005 #else
18006 static void
18007 _backup_cogorc_putline_Y800 (OrcExecutor * ORC_RESTRICT ex)
18008 {
18009   int i;
18010   int n = ex->n;
18011   orc_int8 *ORC_RESTRICT ptr0;
18012   const orc_union32 *ORC_RESTRICT ptr4;
18013   orc_union32 var33;
18014   orc_int8 var34;
18015   orc_union16 var35;
18016
18017   ptr0 = (orc_int8 *) ex->arrays[0];
18018   ptr4 = (orc_union32 *) ex->arrays[4];
18019
18020
18021   for (i = 0; i < n; i++) {
18022     /* 0: loadl */
18023     var33 = ptr4[i];
18024     /* 1: select0lw */
18025     {
18026       orc_union32 _src;
18027       _src.i = var33.i;
18028       var35.i = _src.x2[0];
18029     }
18030     /* 2: select1wb */
18031     {
18032       orc_union16 _src;
18033       _src.i = var35.i;
18034       var34 = _src.x2[1];
18035     }
18036     /* 3: storeb */
18037     ptr0[i] = var34;
18038   }
18039
18040 }
18041
18042 void
18043 cogorc_putline_Y800 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
18044     int n)
18045 {
18046   OrcExecutor _ex, *ex = &_ex;
18047   static volatile int p_inited = 0;
18048   static OrcProgram *p = 0;
18049   void (*func) (OrcExecutor *);
18050
18051   if (!p_inited) {
18052     orc_once_mutex_lock ();
18053     if (!p_inited) {
18054
18055       p = orc_program_new ();
18056       orc_program_set_name (p, "cogorc_putline_Y800");
18057       orc_program_set_backup_function (p, _backup_cogorc_putline_Y800);
18058       orc_program_add_destination (p, 1, "d1");
18059       orc_program_add_source (p, 4, "s1");
18060       orc_program_add_temporary (p, 2, "t1");
18061
18062       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_S1,
18063           ORC_VAR_D1, ORC_VAR_D1);
18064       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1,
18065           ORC_VAR_D1, ORC_VAR_D1);
18066
18067       orc_program_compile (p);
18068     }
18069     p_inited = TRUE;
18070     orc_once_mutex_unlock ();
18071   }
18072   ex->program = p;
18073
18074   ex->n = n;
18075   ex->arrays[ORC_VAR_D1] = d1;
18076   ex->arrays[ORC_VAR_S1] = (void *) s1;
18077
18078   func = p->code_exec;
18079   func (ex);
18080 }
18081 #endif
18082
18083
18084 /* cogorc_putline_Y16 */
18085 #ifdef DISABLE_ORC
18086 void
18087 cogorc_putline_Y16 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
18088     int n)
18089 {
18090   int i;
18091   orc_union16 *ORC_RESTRICT ptr0;
18092   const orc_union32 *ORC_RESTRICT ptr4;
18093   orc_union32 var34;
18094   orc_union16 var35;
18095   orc_union16 var36;
18096   orc_int8 var37;
18097   orc_union16 var38;
18098
18099   ptr0 = (orc_union16 *) d1;
18100   ptr4 = (orc_union32 *) s1;
18101
18102
18103   for (i = 0; i < n; i++) {
18104     /* 0: loadl */
18105     var34 = ptr4[i];
18106     /* 1: select0lw */
18107     {
18108       orc_union32 _src;
18109       _src.i = var34.i;
18110       var36.i = _src.x2[0];
18111     }
18112     /* 2: select1wb */
18113     {
18114       orc_union16 _src;
18115       _src.i = var36.i;
18116       var37 = _src.x2[1];
18117     }
18118     /* 3: convubw */
18119     var38.i = (orc_uint8) var37;
18120     /* 4: shlw */
18121     var35.i = var38.i << 8;
18122     /* 5: storew */
18123     ptr0[i] = var35;
18124   }
18125
18126 }
18127
18128 #else
18129 static void
18130 _backup_cogorc_putline_Y16 (OrcExecutor * ORC_RESTRICT ex)
18131 {
18132   int i;
18133   int n = ex->n;
18134   orc_union16 *ORC_RESTRICT ptr0;
18135   const orc_union32 *ORC_RESTRICT ptr4;
18136   orc_union32 var34;
18137   orc_union16 var35;
18138   orc_union16 var36;
18139   orc_int8 var37;
18140   orc_union16 var38;
18141
18142   ptr0 = (orc_union16 *) ex->arrays[0];
18143   ptr4 = (orc_union32 *) ex->arrays[4];
18144
18145
18146   for (i = 0; i < n; i++) {
18147     /* 0: loadl */
18148     var34 = ptr4[i];
18149     /* 1: select0lw */
18150     {
18151       orc_union32 _src;
18152       _src.i = var34.i;
18153       var36.i = _src.x2[0];
18154     }
18155     /* 2: select1wb */
18156     {
18157       orc_union16 _src;
18158       _src.i = var36.i;
18159       var37 = _src.x2[1];
18160     }
18161     /* 3: convubw */
18162     var38.i = (orc_uint8) var37;
18163     /* 4: shlw */
18164     var35.i = var38.i << 8;
18165     /* 5: storew */
18166     ptr0[i] = var35;
18167   }
18168
18169 }
18170
18171 void
18172 cogorc_putline_Y16 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
18173     int n)
18174 {
18175   OrcExecutor _ex, *ex = &_ex;
18176   static volatile int p_inited = 0;
18177   static OrcProgram *p = 0;
18178   void (*func) (OrcExecutor *);
18179
18180   if (!p_inited) {
18181     orc_once_mutex_lock ();
18182     if (!p_inited) {
18183
18184       p = orc_program_new ();
18185       orc_program_set_name (p, "cogorc_putline_Y16");
18186       orc_program_set_backup_function (p, _backup_cogorc_putline_Y16);
18187       orc_program_add_destination (p, 2, "d1");
18188       orc_program_add_source (p, 4, "s1");
18189       orc_program_add_constant (p, 4, 0x00000008, "c1");
18190       orc_program_add_temporary (p, 2, "t1");
18191       orc_program_add_temporary (p, 1, "t2");
18192
18193       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_S1,
18194           ORC_VAR_D1, ORC_VAR_D1);
18195       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T2, ORC_VAR_T1,
18196           ORC_VAR_D1, ORC_VAR_D1);
18197       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1,
18198           ORC_VAR_D1);
18199       orc_program_append_2 (p, "shlw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1,
18200           ORC_VAR_D1);
18201
18202       orc_program_compile (p);
18203     }
18204     p_inited = TRUE;
18205     orc_once_mutex_unlock ();
18206   }
18207   ex->program = p;
18208
18209   ex->n = n;
18210   ex->arrays[ORC_VAR_D1] = d1;
18211   ex->arrays[ORC_VAR_S1] = (void *) s1;
18212
18213   func = p->code_exec;
18214   func (ex);
18215 }
18216 #endif
18217
18218
18219 /* cogorc_putline_BGRA */
18220 #ifdef DISABLE_ORC
18221 void
18222 cogorc_putline_BGRA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
18223     int n)
18224 {
18225   int i;
18226   orc_union32 *ORC_RESTRICT ptr0;
18227   const orc_union32 *ORC_RESTRICT ptr4;
18228   orc_union32 var32;
18229   orc_union32 var33;
18230
18231   ptr0 = (orc_union32 *) d1;
18232   ptr4 = (orc_union32 *) s1;
18233
18234
18235   for (i = 0; i < n; i++) {
18236     /* 0: loadl */
18237     var32 = ptr4[i];
18238     /* 1: swapl */
18239     var33.i = ORC_SWAP_L (var32.i);
18240     /* 2: storel */
18241     ptr0[i] = var33;
18242   }
18243
18244 }
18245
18246 #else
18247 static void
18248 _backup_cogorc_putline_BGRA (OrcExecutor * ORC_RESTRICT ex)
18249 {
18250   int i;
18251   int n = ex->n;
18252   orc_union32 *ORC_RESTRICT ptr0;
18253   const orc_union32 *ORC_RESTRICT ptr4;
18254   orc_union32 var32;
18255   orc_union32 var33;
18256
18257   ptr0 = (orc_union32 *) ex->arrays[0];
18258   ptr4 = (orc_union32 *) ex->arrays[4];
18259
18260
18261   for (i = 0; i < n; i++) {
18262     /* 0: loadl */
18263     var32 = ptr4[i];
18264     /* 1: swapl */
18265     var33.i = ORC_SWAP_L (var32.i);
18266     /* 2: storel */
18267     ptr0[i] = var33;
18268   }
18269
18270 }
18271
18272 void
18273 cogorc_putline_BGRA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
18274     int n)
18275 {
18276   OrcExecutor _ex, *ex = &_ex;
18277   static volatile int p_inited = 0;
18278   static OrcProgram *p = 0;
18279   void (*func) (OrcExecutor *);
18280
18281   if (!p_inited) {
18282     orc_once_mutex_lock ();
18283     if (!p_inited) {
18284
18285       p = orc_program_new ();
18286       orc_program_set_name (p, "cogorc_putline_BGRA");
18287       orc_program_set_backup_function (p, _backup_cogorc_putline_BGRA);
18288       orc_program_add_destination (p, 4, "d1");
18289       orc_program_add_source (p, 4, "s1");
18290
18291       orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1,
18292           ORC_VAR_D1);
18293
18294       orc_program_compile (p);
18295     }
18296     p_inited = TRUE;
18297     orc_once_mutex_unlock ();
18298   }
18299   ex->program = p;
18300
18301   ex->n = n;
18302   ex->arrays[ORC_VAR_D1] = d1;
18303   ex->arrays[ORC_VAR_S1] = (void *) s1;
18304
18305   func = p->code_exec;
18306   func (ex);
18307 }
18308 #endif
18309
18310
18311 /* cogorc_putline_ABGR */
18312 #ifdef DISABLE_ORC
18313 void
18314 cogorc_putline_ABGR (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
18315     int n)
18316 {
18317   int i;
18318   orc_union32 *ORC_RESTRICT ptr0;
18319   const orc_union32 *ORC_RESTRICT ptr4;
18320   orc_union32 var40;
18321   orc_union32 var41;
18322   orc_union16 var42;
18323   orc_union16 var43;
18324   orc_int8 var44;
18325   orc_int8 var45;
18326   orc_int8 var46;
18327   orc_int8 var47;
18328   orc_union16 var48;
18329   orc_union16 var49;
18330
18331   ptr0 = (orc_union32 *) d1;
18332   ptr4 = (orc_union32 *) s1;
18333
18334
18335   for (i = 0; i < n; i++) {
18336     /* 0: loadl */
18337     var40 = ptr4[i];
18338     /* 1: splitlw */
18339     {
18340       orc_union32 _src;
18341       _src.i = var40.i;
18342       var42.i = _src.x2[1];
18343       var43.i = _src.x2[0];
18344     }
18345     /* 2: splitwb */
18346     {
18347       orc_union16 _src;
18348       _src.i = var42.i;
18349       var44 = _src.x2[1];
18350       var45 = _src.x2[0];
18351     }
18352     /* 3: splitwb */
18353     {
18354       orc_union16 _src;
18355       _src.i = var43.i;
18356       var46 = _src.x2[1];
18357       var47 = _src.x2[0];
18358     }
18359     /* 4: mergebw */
18360     {
18361       orc_union16 _dest;
18362       _dest.x2[0] = var47;
18363       _dest.x2[1] = var44;
18364       var48.i = _dest.i;
18365     }
18366     /* 5: mergebw */
18367     {
18368       orc_union16 _dest;
18369       _dest.x2[0] = var45;
18370       _dest.x2[1] = var46;
18371       var49.i = _dest.i;
18372     }
18373     /* 6: mergewl */
18374     {
18375       orc_union32 _dest;
18376       _dest.x2[0] = var48.i;
18377       _dest.x2[1] = var49.i;
18378       var41.i = _dest.i;
18379     }
18380     /* 7: storel */
18381     ptr0[i] = var41;
18382   }
18383
18384 }
18385
18386 #else
18387 static void
18388 _backup_cogorc_putline_ABGR (OrcExecutor * ORC_RESTRICT ex)
18389 {
18390   int i;
18391   int n = ex->n;
18392   orc_union32 *ORC_RESTRICT ptr0;
18393   const orc_union32 *ORC_RESTRICT ptr4;
18394   orc_union32 var40;
18395   orc_union32 var41;
18396   orc_union16 var42;
18397   orc_union16 var43;
18398   orc_int8 var44;
18399   orc_int8 var45;
18400   orc_int8 var46;
18401   orc_int8 var47;
18402   orc_union16 var48;
18403   orc_union16 var49;
18404
18405   ptr0 = (orc_union32 *) ex->arrays[0];
18406   ptr4 = (orc_union32 *) ex->arrays[4];
18407
18408
18409   for (i = 0; i < n; i++) {
18410     /* 0: loadl */
18411     var40 = ptr4[i];
18412     /* 1: splitlw */
18413     {
18414       orc_union32 _src;
18415       _src.i = var40.i;
18416       var42.i = _src.x2[1];
18417       var43.i = _src.x2[0];
18418     }
18419     /* 2: splitwb */
18420     {
18421       orc_union16 _src;
18422       _src.i = var42.i;
18423       var44 = _src.x2[1];
18424       var45 = _src.x2[0];
18425     }
18426     /* 3: splitwb */
18427     {
18428       orc_union16 _src;
18429       _src.i = var43.i;
18430       var46 = _src.x2[1];
18431       var47 = _src.x2[0];
18432     }
18433     /* 4: mergebw */
18434     {
18435       orc_union16 _dest;
18436       _dest.x2[0] = var47;
18437       _dest.x2[1] = var44;
18438       var48.i = _dest.i;
18439     }
18440     /* 5: mergebw */
18441     {
18442       orc_union16 _dest;
18443       _dest.x2[0] = var45;
18444       _dest.x2[1] = var46;
18445       var49.i = _dest.i;
18446     }
18447     /* 6: mergewl */
18448     {
18449       orc_union32 _dest;
18450       _dest.x2[0] = var48.i;
18451       _dest.x2[1] = var49.i;
18452       var41.i = _dest.i;
18453     }
18454     /* 7: storel */
18455     ptr0[i] = var41;
18456   }
18457
18458 }
18459
18460 void
18461 cogorc_putline_ABGR (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
18462     int n)
18463 {
18464   OrcExecutor _ex, *ex = &_ex;
18465   static volatile int p_inited = 0;
18466   static OrcProgram *p = 0;
18467   void (*func) (OrcExecutor *);
18468
18469   if (!p_inited) {
18470     orc_once_mutex_lock ();
18471     if (!p_inited) {
18472
18473       p = orc_program_new ();
18474       orc_program_set_name (p, "cogorc_putline_ABGR");
18475       orc_program_set_backup_function (p, _backup_cogorc_putline_ABGR);
18476       orc_program_add_destination (p, 4, "d1");
18477       orc_program_add_source (p, 4, "s1");
18478       orc_program_add_temporary (p, 1, "t1");
18479       orc_program_add_temporary (p, 1, "t2");
18480       orc_program_add_temporary (p, 1, "t3");
18481       orc_program_add_temporary (p, 1, "t4");
18482       orc_program_add_temporary (p, 2, "t5");
18483       orc_program_add_temporary (p, 2, "t6");
18484       orc_program_add_temporary (p, 2, "t7");
18485       orc_program_add_temporary (p, 2, "t8");
18486
18487       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_S1,
18488           ORC_VAR_D1);
18489       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T8,
18490           ORC_VAR_D1);
18491       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T7,
18492           ORC_VAR_D1);
18493       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_T4,
18494           ORC_VAR_D1);
18495       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_T2,
18496           ORC_VAR_D1);
18497       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T6, ORC_VAR_T5,
18498           ORC_VAR_D1);
18499
18500       orc_program_compile (p);
18501     }
18502     p_inited = TRUE;
18503     orc_once_mutex_unlock ();
18504   }
18505   ex->program = p;
18506
18507   ex->n = n;
18508   ex->arrays[ORC_VAR_D1] = d1;
18509   ex->arrays[ORC_VAR_S1] = (void *) s1;
18510
18511   func = p->code_exec;
18512   func (ex);
18513 }
18514 #endif
18515
18516
18517 /* cogorc_putline_RGBA */
18518 #ifdef DISABLE_ORC
18519 void
18520 cogorc_putline_RGBA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
18521     int n)
18522 {
18523   int i;
18524   orc_union32 *ORC_RESTRICT ptr0;
18525   const orc_union32 *ORC_RESTRICT ptr4;
18526   orc_union32 var40;
18527   orc_union32 var41;
18528   orc_union16 var42;
18529   orc_union16 var43;
18530   orc_int8 var44;
18531   orc_int8 var45;
18532   orc_int8 var46;
18533   orc_int8 var47;
18534   orc_union16 var48;
18535   orc_union16 var49;
18536
18537   ptr0 = (orc_union32 *) d1;
18538   ptr4 = (orc_union32 *) s1;
18539
18540
18541   for (i = 0; i < n; i++) {
18542     /* 0: loadl */
18543     var40 = ptr4[i];
18544     /* 1: splitlw */
18545     {
18546       orc_union32 _src;
18547       _src.i = var40.i;
18548       var42.i = _src.x2[1];
18549       var43.i = _src.x2[0];
18550     }
18551     /* 2: splitwb */
18552     {
18553       orc_union16 _src;
18554       _src.i = var42.i;
18555       var44 = _src.x2[1];
18556       var45 = _src.x2[0];
18557     }
18558     /* 3: splitwb */
18559     {
18560       orc_union16 _src;
18561       _src.i = var43.i;
18562       var46 = _src.x2[1];
18563       var47 = _src.x2[0];
18564     }
18565     /* 4: mergebw */
18566     {
18567       orc_union16 _dest;
18568       _dest.x2[0] = var44;
18569       _dest.x2[1] = var47;
18570       var48.i = _dest.i;
18571     }
18572     /* 5: mergebw */
18573     {
18574       orc_union16 _dest;
18575       _dest.x2[0] = var46;
18576       _dest.x2[1] = var45;
18577       var49.i = _dest.i;
18578     }
18579     /* 6: mergewl */
18580     {
18581       orc_union32 _dest;
18582       _dest.x2[0] = var49.i;
18583       _dest.x2[1] = var48.i;
18584       var41.i = _dest.i;
18585     }
18586     /* 7: storel */
18587     ptr0[i] = var41;
18588   }
18589
18590 }
18591
18592 #else
18593 static void
18594 _backup_cogorc_putline_RGBA (OrcExecutor * ORC_RESTRICT ex)
18595 {
18596   int i;
18597   int n = ex->n;
18598   orc_union32 *ORC_RESTRICT ptr0;
18599   const orc_union32 *ORC_RESTRICT ptr4;
18600   orc_union32 var40;
18601   orc_union32 var41;
18602   orc_union16 var42;
18603   orc_union16 var43;
18604   orc_int8 var44;
18605   orc_int8 var45;
18606   orc_int8 var46;
18607   orc_int8 var47;
18608   orc_union16 var48;
18609   orc_union16 var49;
18610
18611   ptr0 = (orc_union32 *) ex->arrays[0];
18612   ptr4 = (orc_union32 *) ex->arrays[4];
18613
18614
18615   for (i = 0; i < n; i++) {
18616     /* 0: loadl */
18617     var40 = ptr4[i];
18618     /* 1: splitlw */
18619     {
18620       orc_union32 _src;
18621       _src.i = var40.i;
18622       var42.i = _src.x2[1];
18623       var43.i = _src.x2[0];
18624     }
18625     /* 2: splitwb */
18626     {
18627       orc_union16 _src;
18628       _src.i = var42.i;
18629       var44 = _src.x2[1];
18630       var45 = _src.x2[0];
18631     }
18632     /* 3: splitwb */
18633     {
18634       orc_union16 _src;
18635       _src.i = var43.i;
18636       var46 = _src.x2[1];
18637       var47 = _src.x2[0];
18638     }
18639     /* 4: mergebw */
18640     {
18641       orc_union16 _dest;
18642       _dest.x2[0] = var44;
18643       _dest.x2[1] = var47;
18644       var48.i = _dest.i;
18645     }
18646     /* 5: mergebw */
18647     {
18648       orc_union16 _dest;
18649       _dest.x2[0] = var46;
18650       _dest.x2[1] = var45;
18651       var49.i = _dest.i;
18652     }
18653     /* 6: mergewl */
18654     {
18655       orc_union32 _dest;
18656       _dest.x2[0] = var49.i;
18657       _dest.x2[1] = var48.i;
18658       var41.i = _dest.i;
18659     }
18660     /* 7: storel */
18661     ptr0[i] = var41;
18662   }
18663
18664 }
18665
18666 void
18667 cogorc_putline_RGBA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
18668     int n)
18669 {
18670   OrcExecutor _ex, *ex = &_ex;
18671   static volatile int p_inited = 0;
18672   static OrcProgram *p = 0;
18673   void (*func) (OrcExecutor *);
18674
18675   if (!p_inited) {
18676     orc_once_mutex_lock ();
18677     if (!p_inited) {
18678
18679       p = orc_program_new ();
18680       orc_program_set_name (p, "cogorc_putline_RGBA");
18681       orc_program_set_backup_function (p, _backup_cogorc_putline_RGBA);
18682       orc_program_add_destination (p, 4, "d1");
18683       orc_program_add_source (p, 4, "s1");
18684       orc_program_add_temporary (p, 1, "t1");
18685       orc_program_add_temporary (p, 1, "t2");
18686       orc_program_add_temporary (p, 1, "t3");
18687       orc_program_add_temporary (p, 1, "t4");
18688       orc_program_add_temporary (p, 2, "t5");
18689       orc_program_add_temporary (p, 2, "t6");
18690       orc_program_add_temporary (p, 2, "t7");
18691       orc_program_add_temporary (p, 2, "t8");
18692
18693       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_S1,
18694           ORC_VAR_D1);
18695       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T8,
18696           ORC_VAR_D1);
18697       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T7,
18698           ORC_VAR_D1);
18699       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T6, ORC_VAR_T4, ORC_VAR_T1,
18700           ORC_VAR_D1);
18701       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_T3,
18702           ORC_VAR_D1);
18703       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_T6,
18704           ORC_VAR_D1);
18705
18706       orc_program_compile (p);
18707     }
18708     p_inited = TRUE;
18709     orc_once_mutex_unlock ();
18710   }
18711   ex->program = p;
18712
18713   ex->n = n;
18714   ex->arrays[ORC_VAR_D1] = d1;
18715   ex->arrays[ORC_VAR_S1] = (void *) s1;
18716
18717   func = p->code_exec;
18718   func (ex);
18719 }
18720 #endif
18721
18722
18723 /* cogorc_putline_NV12 */
18724 #ifdef DISABLE_ORC
18725 void
18726 cogorc_putline_NV12 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
18727     const guint8 * ORC_RESTRICT s1, int n)
18728 {
18729   int i;
18730   orc_union16 *ORC_RESTRICT ptr0;
18731   orc_union16 *ORC_RESTRICT ptr1;
18732   const orc_union64 *ORC_RESTRICT ptr4;
18733   orc_union64 var36;
18734   orc_union16 var37;
18735   orc_union16 var38;
18736   orc_union32 var39;
18737   orc_union32 var40;
18738   orc_union16 var41;
18739   orc_union16 var42;
18740
18741   ptr0 = (orc_union16 *) d1;
18742   ptr1 = (orc_union16 *) d2;
18743   ptr4 = (orc_union64 *) s1;
18744
18745
18746   for (i = 0; i < n; i++) {
18747     /* 0: loadq */
18748     var36 = ptr4[i];
18749     /* 1: splitlw */
18750     {
18751       orc_union32 _src;
18752       _src.i = var36.x2[0];
18753       var39.x2[0] = _src.x2[1];
18754       var40.x2[0] = _src.x2[0];
18755     }
18756     {
18757       orc_union32 _src;
18758       _src.i = var36.x2[1];
18759       var39.x2[1] = _src.x2[1];
18760       var40.x2[1] = _src.x2[0];
18761     }
18762     /* 2: select1wb */
18763     {
18764       orc_union16 _src;
18765       _src.i = var40.x2[0];
18766       var37.x2[0] = _src.x2[1];
18767     }
18768     {
18769       orc_union16 _src;
18770       _src.i = var40.x2[1];
18771       var37.x2[1] = _src.x2[1];
18772     }
18773     /* 3: storew */
18774     ptr0[i] = var37;
18775     /* 4: splitlw */
18776     {
18777       orc_union32 _src;
18778       _src.i = var39.i;
18779       var41.i = _src.x2[1];
18780       var42.i = _src.x2[0];
18781     }
18782     /* 5: avgub */
18783     var38.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
18784     var38.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
18785     /* 6: storew */
18786     ptr1[i] = var38;
18787   }
18788
18789 }
18790
18791 #else
18792 static void
18793 _backup_cogorc_putline_NV12 (OrcExecutor * ORC_RESTRICT ex)
18794 {
18795   int i;
18796   int n = ex->n;
18797   orc_union16 *ORC_RESTRICT ptr0;
18798   orc_union16 *ORC_RESTRICT ptr1;
18799   const orc_union64 *ORC_RESTRICT ptr4;
18800   orc_union64 var36;
18801   orc_union16 var37;
18802   orc_union16 var38;
18803   orc_union32 var39;
18804   orc_union32 var40;
18805   orc_union16 var41;
18806   orc_union16 var42;
18807
18808   ptr0 = (orc_union16 *) ex->arrays[0];
18809   ptr1 = (orc_union16 *) ex->arrays[1];
18810   ptr4 = (orc_union64 *) ex->arrays[4];
18811
18812
18813   for (i = 0; i < n; i++) {
18814     /* 0: loadq */
18815     var36 = ptr4[i];
18816     /* 1: splitlw */
18817     {
18818       orc_union32 _src;
18819       _src.i = var36.x2[0];
18820       var39.x2[0] = _src.x2[1];
18821       var40.x2[0] = _src.x2[0];
18822     }
18823     {
18824       orc_union32 _src;
18825       _src.i = var36.x2[1];
18826       var39.x2[1] = _src.x2[1];
18827       var40.x2[1] = _src.x2[0];
18828     }
18829     /* 2: select1wb */
18830     {
18831       orc_union16 _src;
18832       _src.i = var40.x2[0];
18833       var37.x2[0] = _src.x2[1];
18834     }
18835     {
18836       orc_union16 _src;
18837       _src.i = var40.x2[1];
18838       var37.x2[1] = _src.x2[1];
18839     }
18840     /* 3: storew */
18841     ptr0[i] = var37;
18842     /* 4: splitlw */
18843     {
18844       orc_union32 _src;
18845       _src.i = var39.i;
18846       var41.i = _src.x2[1];
18847       var42.i = _src.x2[0];
18848     }
18849     /* 5: avgub */
18850     var38.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
18851     var38.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
18852     /* 6: storew */
18853     ptr1[i] = var38;
18854   }
18855
18856 }
18857
18858 void
18859 cogorc_putline_NV12 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
18860     const guint8 * ORC_RESTRICT s1, int n)
18861 {
18862   OrcExecutor _ex, *ex = &_ex;
18863   static volatile int p_inited = 0;
18864   static OrcProgram *p = 0;
18865   void (*func) (OrcExecutor *);
18866
18867   if (!p_inited) {
18868     orc_once_mutex_lock ();
18869     if (!p_inited) {
18870
18871       p = orc_program_new ();
18872       orc_program_set_name (p, "cogorc_putline_NV12");
18873       orc_program_set_backup_function (p, _backup_cogorc_putline_NV12);
18874       orc_program_add_destination (p, 2, "d1");
18875       orc_program_add_destination (p, 2, "d2");
18876       orc_program_add_source (p, 8, "s1");
18877       orc_program_add_temporary (p, 4, "t1");
18878       orc_program_add_temporary (p, 4, "t2");
18879       orc_program_add_temporary (p, 2, "t3");
18880       orc_program_add_temporary (p, 2, "t4");
18881
18882       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
18883           ORC_VAR_D1);
18884       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
18885           ORC_VAR_D1, ORC_VAR_D1);
18886       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2,
18887           ORC_VAR_D1);
18888       orc_program_append_2 (p, "avgub", 1, ORC_VAR_D2, ORC_VAR_T3, ORC_VAR_T4,
18889           ORC_VAR_D1);
18890
18891       orc_program_compile (p);
18892     }
18893     p_inited = TRUE;
18894     orc_once_mutex_unlock ();
18895   }
18896   ex->program = p;
18897
18898   ex->n = n;
18899   ex->arrays[ORC_VAR_D1] = d1;
18900   ex->arrays[ORC_VAR_D2] = d2;
18901   ex->arrays[ORC_VAR_S1] = (void *) s1;
18902
18903   func = p->code_exec;
18904   func (ex);
18905 }
18906 #endif
18907
18908
18909 /* cogorc_putline_NV21 */
18910 #ifdef DISABLE_ORC
18911 void
18912 cogorc_putline_NV21 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
18913     const guint8 * ORC_RESTRICT s1, int n)
18914 {
18915   int i;
18916   orc_union16 *ORC_RESTRICT ptr0;
18917   orc_union16 *ORC_RESTRICT ptr1;
18918   const orc_union64 *ORC_RESTRICT ptr4;
18919   orc_union64 var37;
18920   orc_union16 var38;
18921   orc_union16 var39;
18922   orc_union32 var40;
18923   orc_union32 var41;
18924   orc_union16 var42;
18925   orc_union16 var43;
18926   orc_union16 var44;
18927
18928   ptr0 = (orc_union16 *) d1;
18929   ptr1 = (orc_union16 *) d2;
18930   ptr4 = (orc_union64 *) s1;
18931
18932
18933   for (i = 0; i < n; i++) {
18934     /* 0: loadq */
18935     var37 = ptr4[i];
18936     /* 1: splitlw */
18937     {
18938       orc_union32 _src;
18939       _src.i = var37.x2[0];
18940       var40.x2[0] = _src.x2[1];
18941       var41.x2[0] = _src.x2[0];
18942     }
18943     {
18944       orc_union32 _src;
18945       _src.i = var37.x2[1];
18946       var40.x2[1] = _src.x2[1];
18947       var41.x2[1] = _src.x2[0];
18948     }
18949     /* 2: select1wb */
18950     {
18951       orc_union16 _src;
18952       _src.i = var41.x2[0];
18953       var38.x2[0] = _src.x2[1];
18954     }
18955     {
18956       orc_union16 _src;
18957       _src.i = var41.x2[1];
18958       var38.x2[1] = _src.x2[1];
18959     }
18960     /* 3: storew */
18961     ptr0[i] = var38;
18962     /* 4: splitlw */
18963     {
18964       orc_union32 _src;
18965       _src.i = var40.i;
18966       var42.i = _src.x2[1];
18967       var43.i = _src.x2[0];
18968     }
18969     /* 5: avgub */
18970     var44.x2[0] = ((orc_uint8) var42.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1;
18971     var44.x2[1] = ((orc_uint8) var42.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1;
18972     /* 6: swapw */
18973     var39.i = ORC_SWAP_W (var44.i);
18974     /* 7: storew */
18975     ptr1[i] = var39;
18976   }
18977
18978 }
18979
18980 #else
18981 static void
18982 _backup_cogorc_putline_NV21 (OrcExecutor * ORC_RESTRICT ex)
18983 {
18984   int i;
18985   int n = ex->n;
18986   orc_union16 *ORC_RESTRICT ptr0;
18987   orc_union16 *ORC_RESTRICT ptr1;
18988   const orc_union64 *ORC_RESTRICT ptr4;
18989   orc_union64 var37;
18990   orc_union16 var38;
18991   orc_union16 var39;
18992   orc_union32 var40;
18993   orc_union32 var41;
18994   orc_union16 var42;
18995   orc_union16 var43;
18996   orc_union16 var44;
18997
18998   ptr0 = (orc_union16 *) ex->arrays[0];
18999   ptr1 = (orc_union16 *) ex->arrays[1];
19000   ptr4 = (orc_union64 *) ex->arrays[4];
19001
19002
19003   for (i = 0; i < n; i++) {
19004     /* 0: loadq */
19005     var37 = ptr4[i];
19006     /* 1: splitlw */
19007     {
19008       orc_union32 _src;
19009       _src.i = var37.x2[0];
19010       var40.x2[0] = _src.x2[1];
19011       var41.x2[0] = _src.x2[0];
19012     }
19013     {
19014       orc_union32 _src;
19015       _src.i = var37.x2[1];
19016       var40.x2[1] = _src.x2[1];
19017       var41.x2[1] = _src.x2[0];
19018     }
19019     /* 2: select1wb */
19020     {
19021       orc_union16 _src;
19022       _src.i = var41.x2[0];
19023       var38.x2[0] = _src.x2[1];
19024     }
19025     {
19026       orc_union16 _src;
19027       _src.i = var41.x2[1];
19028       var38.x2[1] = _src.x2[1];
19029     }
19030     /* 3: storew */
19031     ptr0[i] = var38;
19032     /* 4: splitlw */
19033     {
19034       orc_union32 _src;
19035       _src.i = var40.i;
19036       var42.i = _src.x2[1];
19037       var43.i = _src.x2[0];
19038     }
19039     /* 5: avgub */
19040     var44.x2[0] = ((orc_uint8) var42.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1;
19041     var44.x2[1] = ((orc_uint8) var42.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1;
19042     /* 6: swapw */
19043     var39.i = ORC_SWAP_W (var44.i);
19044     /* 7: storew */
19045     ptr1[i] = var39;
19046   }
19047
19048 }
19049
19050 void
19051 cogorc_putline_NV21 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
19052     const guint8 * ORC_RESTRICT s1, int n)
19053 {
19054   OrcExecutor _ex, *ex = &_ex;
19055   static volatile int p_inited = 0;
19056   static OrcProgram *p = 0;
19057   void (*func) (OrcExecutor *);
19058
19059   if (!p_inited) {
19060     orc_once_mutex_lock ();
19061     if (!p_inited) {
19062
19063       p = orc_program_new ();
19064       orc_program_set_name (p, "cogorc_putline_NV21");
19065       orc_program_set_backup_function (p, _backup_cogorc_putline_NV21);
19066       orc_program_add_destination (p, 2, "d1");
19067       orc_program_add_destination (p, 2, "d2");
19068       orc_program_add_source (p, 8, "s1");
19069       orc_program_add_temporary (p, 4, "t1");
19070       orc_program_add_temporary (p, 4, "t2");
19071       orc_program_add_temporary (p, 2, "t3");
19072       orc_program_add_temporary (p, 2, "t4");
19073       orc_program_add_temporary (p, 2, "t5");
19074
19075       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
19076           ORC_VAR_D1);
19077       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
19078           ORC_VAR_D1, ORC_VAR_D1);
19079       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2,
19080           ORC_VAR_D1);
19081       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_T4,
19082           ORC_VAR_D1);
19083       orc_program_append_2 (p, "swapw", 0, ORC_VAR_D2, ORC_VAR_T5, ORC_VAR_D1,
19084           ORC_VAR_D1);
19085
19086       orc_program_compile (p);
19087     }
19088     p_inited = TRUE;
19089     orc_once_mutex_unlock ();
19090   }
19091   ex->program = p;
19092
19093   ex->n = n;
19094   ex->arrays[ORC_VAR_D1] = d1;
19095   ex->arrays[ORC_VAR_D2] = d2;
19096   ex->arrays[ORC_VAR_S1] = (void *) s1;
19097
19098   func = p->code_exec;
19099   func (ex);
19100 }
19101 #endif
19102
19103
19104 /* cogorc_putline_A420 */
19105 #ifdef DISABLE_ORC
19106 void
19107 cogorc_putline_A420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
19108     guint8 * ORC_RESTRICT d3, guint8 * ORC_RESTRICT d4,
19109     const guint8 * ORC_RESTRICT s1, int n)
19110 {
19111   int i;
19112   orc_union16 *ORC_RESTRICT ptr0;
19113   orc_int8 *ORC_RESTRICT ptr1;
19114   orc_int8 *ORC_RESTRICT ptr2;
19115   orc_union16 *ORC_RESTRICT ptr3;
19116   const orc_union64 *ORC_RESTRICT ptr4;
19117   orc_union64 var38;
19118   orc_union16 var39;
19119   orc_union16 var40;
19120   orc_int8 var41;
19121   orc_int8 var42;
19122   orc_union32 var43;
19123   orc_union32 var44;
19124   orc_union16 var45;
19125   orc_union16 var46;
19126   orc_int8 var47;
19127   orc_int8 var48;
19128   orc_int8 var49;
19129   orc_int8 var50;
19130
19131   ptr0 = (orc_union16 *) d1;
19132   ptr1 = (orc_int8 *) d2;
19133   ptr2 = (orc_int8 *) d3;
19134   ptr3 = (orc_union16 *) d4;
19135   ptr4 = (orc_union64 *) s1;
19136
19137
19138   for (i = 0; i < n; i++) {
19139     /* 0: loadq */
19140     var38 = ptr4[i];
19141     /* 1: splitlw */
19142     {
19143       orc_union32 _src;
19144       _src.i = var38.x2[0];
19145       var43.x2[0] = _src.x2[1];
19146       var44.x2[0] = _src.x2[0];
19147     }
19148     {
19149       orc_union32 _src;
19150       _src.i = var38.x2[1];
19151       var43.x2[1] = _src.x2[1];
19152       var44.x2[1] = _src.x2[0];
19153     }
19154     /* 2: select1wb */
19155     {
19156       orc_union16 _src;
19157       _src.i = var44.x2[0];
19158       var39.x2[0] = _src.x2[1];
19159     }
19160     {
19161       orc_union16 _src;
19162       _src.i = var44.x2[1];
19163       var39.x2[1] = _src.x2[1];
19164     }
19165     /* 3: storew */
19166     ptr0[i] = var39;
19167     /* 4: select0wb */
19168     {
19169       orc_union16 _src;
19170       _src.i = var44.x2[0];
19171       var40.x2[0] = _src.x2[0];
19172     }
19173     {
19174       orc_union16 _src;
19175       _src.i = var44.x2[1];
19176       var40.x2[1] = _src.x2[0];
19177     }
19178     /* 5: storew */
19179     ptr3[i] = var40;
19180     /* 6: splitwb */
19181     {
19182       orc_union16 _src;
19183       _src.i = var43.x2[0];
19184       var45.x2[0] = _src.x2[1];
19185       var46.x2[0] = _src.x2[0];
19186     }
19187     {
19188       orc_union16 _src;
19189       _src.i = var43.x2[1];
19190       var45.x2[1] = _src.x2[1];
19191       var46.x2[1] = _src.x2[0];
19192     }
19193     /* 7: splitwb */
19194     {
19195       orc_union16 _src;
19196       _src.i = var46.i;
19197       var47 = _src.x2[1];
19198       var48 = _src.x2[0];
19199     }
19200     /* 8: avgub */
19201     var41 = ((orc_uint8) var47 + (orc_uint8) var48 + 1) >> 1;
19202     /* 9: storeb */
19203     ptr1[i] = var41;
19204     /* 10: splitwb */
19205     {
19206       orc_union16 _src;
19207       _src.i = var45.i;
19208       var49 = _src.x2[1];
19209       var50 = _src.x2[0];
19210     }
19211     /* 11: avgub */
19212     var42 = ((orc_uint8) var49 + (orc_uint8) var50 + 1) >> 1;
19213     /* 12: storeb */
19214     ptr2[i] = var42;
19215   }
19216
19217 }
19218
19219 #else
19220 static void
19221 _backup_cogorc_putline_A420 (OrcExecutor * ORC_RESTRICT ex)
19222 {
19223   int i;
19224   int n = ex->n;
19225   orc_union16 *ORC_RESTRICT ptr0;
19226   orc_int8 *ORC_RESTRICT ptr1;
19227   orc_int8 *ORC_RESTRICT ptr2;
19228   orc_union16 *ORC_RESTRICT ptr3;
19229   const orc_union64 *ORC_RESTRICT ptr4;
19230   orc_union64 var38;
19231   orc_union16 var39;
19232   orc_union16 var40;
19233   orc_int8 var41;
19234   orc_int8 var42;
19235   orc_union32 var43;
19236   orc_union32 var44;
19237   orc_union16 var45;
19238   orc_union16 var46;
19239   orc_int8 var47;
19240   orc_int8 var48;
19241   orc_int8 var49;
19242   orc_int8 var50;
19243
19244   ptr0 = (orc_union16 *) ex->arrays[0];
19245   ptr1 = (orc_int8 *) ex->arrays[1];
19246   ptr2 = (orc_int8 *) ex->arrays[2];
19247   ptr3 = (orc_union16 *) ex->arrays[3];
19248   ptr4 = (orc_union64 *) ex->arrays[4];
19249
19250
19251   for (i = 0; i < n; i++) {
19252     /* 0: loadq */
19253     var38 = ptr4[i];
19254     /* 1: splitlw */
19255     {
19256       orc_union32 _src;
19257       _src.i = var38.x2[0];
19258       var43.x2[0] = _src.x2[1];
19259       var44.x2[0] = _src.x2[0];
19260     }
19261     {
19262       orc_union32 _src;
19263       _src.i = var38.x2[1];
19264       var43.x2[1] = _src.x2[1];
19265       var44.x2[1] = _src.x2[0];
19266     }
19267     /* 2: select1wb */
19268     {
19269       orc_union16 _src;
19270       _src.i = var44.x2[0];
19271       var39.x2[0] = _src.x2[1];
19272     }
19273     {
19274       orc_union16 _src;
19275       _src.i = var44.x2[1];
19276       var39.x2[1] = _src.x2[1];
19277     }
19278     /* 3: storew */
19279     ptr0[i] = var39;
19280     /* 4: select0wb */
19281     {
19282       orc_union16 _src;
19283       _src.i = var44.x2[0];
19284       var40.x2[0] = _src.x2[0];
19285     }
19286     {
19287       orc_union16 _src;
19288       _src.i = var44.x2[1];
19289       var40.x2[1] = _src.x2[0];
19290     }
19291     /* 5: storew */
19292     ptr3[i] = var40;
19293     /* 6: splitwb */
19294     {
19295       orc_union16 _src;
19296       _src.i = var43.x2[0];
19297       var45.x2[0] = _src.x2[1];
19298       var46.x2[0] = _src.x2[0];
19299     }
19300     {
19301       orc_union16 _src;
19302       _src.i = var43.x2[1];
19303       var45.x2[1] = _src.x2[1];
19304       var46.x2[1] = _src.x2[0];
19305     }
19306     /* 7: splitwb */
19307     {
19308       orc_union16 _src;
19309       _src.i = var46.i;
19310       var47 = _src.x2[1];
19311       var48 = _src.x2[0];
19312     }
19313     /* 8: avgub */
19314     var41 = ((orc_uint8) var47 + (orc_uint8) var48 + 1) >> 1;
19315     /* 9: storeb */
19316     ptr1[i] = var41;
19317     /* 10: splitwb */
19318     {
19319       orc_union16 _src;
19320       _src.i = var45.i;
19321       var49 = _src.x2[1];
19322       var50 = _src.x2[0];
19323     }
19324     /* 11: avgub */
19325     var42 = ((orc_uint8) var49 + (orc_uint8) var50 + 1) >> 1;
19326     /* 12: storeb */
19327     ptr2[i] = var42;
19328   }
19329
19330 }
19331
19332 void
19333 cogorc_putline_A420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
19334     guint8 * ORC_RESTRICT d3, guint8 * ORC_RESTRICT d4,
19335     const guint8 * ORC_RESTRICT s1, int n)
19336 {
19337   OrcExecutor _ex, *ex = &_ex;
19338   static volatile int p_inited = 0;
19339   static OrcProgram *p = 0;
19340   void (*func) (OrcExecutor *);
19341
19342   if (!p_inited) {
19343     orc_once_mutex_lock ();
19344     if (!p_inited) {
19345
19346       p = orc_program_new ();
19347       orc_program_set_name (p, "cogorc_putline_A420");
19348       orc_program_set_backup_function (p, _backup_cogorc_putline_A420);
19349       orc_program_add_destination (p, 2, "d1");
19350       orc_program_add_destination (p, 1, "d2");
19351       orc_program_add_destination (p, 1, "d3");
19352       orc_program_add_destination (p, 2, "d4");
19353       orc_program_add_source (p, 8, "s1");
19354       orc_program_add_temporary (p, 4, "t1");
19355       orc_program_add_temporary (p, 4, "t2");
19356       orc_program_add_temporary (p, 2, "t3");
19357       orc_program_add_temporary (p, 2, "t4");
19358       orc_program_add_temporary (p, 1, "t5");
19359       orc_program_add_temporary (p, 1, "t6");
19360
19361       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
19362           ORC_VAR_D1);
19363       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
19364           ORC_VAR_D1, ORC_VAR_D1);
19365       orc_program_append_2 (p, "select0wb", 1, ORC_VAR_D4, ORC_VAR_T1,
19366           ORC_VAR_D1, ORC_VAR_D1);
19367       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T2,
19368           ORC_VAR_D1);
19369       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T5, ORC_VAR_T6, ORC_VAR_T3,
19370           ORC_VAR_D1);
19371       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D2, ORC_VAR_T5, ORC_VAR_T6,
19372           ORC_VAR_D1);
19373       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T5, ORC_VAR_T6, ORC_VAR_T4,
19374           ORC_VAR_D1);
19375       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D3, ORC_VAR_T5, ORC_VAR_T6,
19376           ORC_VAR_D1);
19377
19378       orc_program_compile (p);
19379     }
19380     p_inited = TRUE;
19381     orc_once_mutex_unlock ();
19382   }
19383   ex->program = p;
19384
19385   ex->n = n;
19386   ex->arrays[ORC_VAR_D1] = d1;
19387   ex->arrays[ORC_VAR_D2] = d2;
19388   ex->arrays[ORC_VAR_D3] = d3;
19389   ex->arrays[ORC_VAR_D4] = d4;
19390   ex->arrays[ORC_VAR_S1] = (void *) s1;
19391
19392   func = p->code_exec;
19393   func (ex);
19394 }
19395 #endif