win32: Add the new audio symbols to the list of exported symbols
[platform/upstream/gstreamer.git] / gst-libs / gst / video / videoblendorc-dist.c
1
2 /* autogenerated from videoblendorc.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 orc_blend_little (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
86     int n);
87 void orc_blend_big (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
88     int n);
89 void cogorc_getline_I420 (guint8 * ORC_RESTRICT d1,
90     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
91     const guint8 * ORC_RESTRICT s3, int n);
92 void cogorc_putline_I420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
93     guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n);
94 void cogorc_getline_YUY2 (guint8 * ORC_RESTRICT d1,
95     const guint8 * ORC_RESTRICT s1, int n);
96 void cogorc_putline_YUY2 (guint8 * ORC_RESTRICT d1,
97     const guint8 * ORC_RESTRICT s1, int n);
98 void cogorc_putline_UYVY (guint8 * ORC_RESTRICT d1,
99     const guint8 * ORC_RESTRICT s1, int n);
100 void cogorc_getline_UYVY (guint8 * ORC_RESTRICT d1,
101     const guint8 * ORC_RESTRICT s1, int n);
102 void cogorc_getline_YUV9 (guint8 * ORC_RESTRICT d1,
103     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
104     const guint8 * ORC_RESTRICT s3, int n);
105 void cogorc_getline_Y42B (guint8 * ORC_RESTRICT d1,
106     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
107     const guint8 * ORC_RESTRICT s3, int n);
108 void cogorc_putline_Y42B (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
109     guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n);
110 void cogorc_getline_Y444 (guint8 * ORC_RESTRICT d1,
111     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
112     const guint8 * ORC_RESTRICT s3, int n);
113 void cogorc_putline_Y444 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
114     guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n);
115 void cogorc_getline_Y800 (guint8 * ORC_RESTRICT d1,
116     const guint8 * ORC_RESTRICT s1, int n);
117 void cogorc_putline_Y800 (guint8 * ORC_RESTRICT d1,
118     const guint8 * ORC_RESTRICT s1, int n);
119 void cogorc_putline_Y16 (guint8 * ORC_RESTRICT d1,
120     const guint8 * ORC_RESTRICT s1, int n);
121 void cogorc_getline_Y16 (guint8 * ORC_RESTRICT d1,
122     const guint8 * ORC_RESTRICT s1, int n);
123 void cogorc_getline_BGRA (guint8 * ORC_RESTRICT d1,
124     const guint8 * ORC_RESTRICT s1, int n);
125 void cogorc_putline_BGRA (guint8 * ORC_RESTRICT d1,
126     const guint8 * ORC_RESTRICT s1, int n);
127 void cogorc_putline_RGBA (guint8 * ORC_RESTRICT d1,
128     const guint8 * ORC_RESTRICT s1, int n);
129 void cogorc_getline_RGBA (guint8 * ORC_RESTRICT d1,
130     const guint8 * ORC_RESTRICT s1, int n);
131 void cogorc_getline_ABGR (guint8 * ORC_RESTRICT d1,
132     const guint8 * ORC_RESTRICT s1, int n);
133 void cogorc_putline_ABGR (guint8 * ORC_RESTRICT d1,
134     const guint8 * ORC_RESTRICT s1, int n);
135 void cogorc_getline_NV12 (guint8 * ORC_RESTRICT d1,
136     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n);
137 void cogorc_putline_NV12 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
138     const guint8 * ORC_RESTRICT s1, int n);
139 void cogorc_getline_NV21 (guint8 * ORC_RESTRICT d1,
140     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n);
141 void cogorc_putline_NV21 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
142     const guint8 * ORC_RESTRICT s1, int n);
143 void cogorc_getline_A420 (guint8 * ORC_RESTRICT d1,
144     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
145     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n);
146 void cogorc_putline_A420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
147     guint8 * ORC_RESTRICT d3, guint8 * ORC_RESTRICT d4,
148     const guint8 * ORC_RESTRICT s1, int n);
149 void orc_resample_bilinear_u32 (guint8 * ORC_RESTRICT d1,
150     const guint8 * ORC_RESTRICT s1, int p1, int p2, int n);
151 void orc_merge_linear_u8 (orc_uint8 * ORC_RESTRICT d1,
152     const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
153     int p1, int n);
154
155
156 /* begin Orc C target preamble */
157 #define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x)))
158 #define ORC_ABS(a) ((a)<0 ? -(a) : (a))
159 #define ORC_MIN(a,b) ((a)<(b) ? (a) : (b))
160 #define ORC_MAX(a,b) ((a)>(b) ? (a) : (b))
161 #define ORC_SB_MAX 127
162 #define ORC_SB_MIN (-1-ORC_SB_MAX)
163 #define ORC_UB_MAX 255
164 #define ORC_UB_MIN 0
165 #define ORC_SW_MAX 32767
166 #define ORC_SW_MIN (-1-ORC_SW_MAX)
167 #define ORC_UW_MAX 65535
168 #define ORC_UW_MIN 0
169 #define ORC_SL_MAX 2147483647
170 #define ORC_SL_MIN (-1-ORC_SL_MAX)
171 #define ORC_UL_MAX 4294967295U
172 #define ORC_UL_MIN 0
173 #define ORC_CLAMP_SB(x) ORC_CLAMP(x,ORC_SB_MIN,ORC_SB_MAX)
174 #define ORC_CLAMP_UB(x) ORC_CLAMP(x,ORC_UB_MIN,ORC_UB_MAX)
175 #define ORC_CLAMP_SW(x) ORC_CLAMP(x,ORC_SW_MIN,ORC_SW_MAX)
176 #define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX)
177 #define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX)
178 #define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX)
179 #define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8))
180 #define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24))
181 #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))
182 #define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset)))
183 #define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff))
184 #define ORC_ISNAN(x) ((((x)&0x7f800000) == 0x7f800000) && (((x)&0x007fffff) != 0))
185 #define ORC_DENORMAL_DOUBLE(x) ((x) & ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == 0) ? ORC_UINT64_C(0xfff0000000000000) : ORC_UINT64_C(0xffffffffffffffff)))
186 #define ORC_ISNAN_DOUBLE(x) ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == ORC_UINT64_C(0x7ff0000000000000)) && (((x)&ORC_UINT64_C(0x000fffffffffffff)) != 0))
187 #ifndef ORC_RESTRICT
188 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
189 #define ORC_RESTRICT restrict
190 #elif defined(__GNUC__) && __GNUC__ >= 4
191 #define ORC_RESTRICT __restrict__
192 #else
193 #define ORC_RESTRICT
194 #endif
195 #endif
196 /* end Orc C target preamble */
197
198
199
200 /* orc_blend_little */
201 #ifdef DISABLE_ORC
202 void
203 orc_blend_little (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
204     int n)
205 {
206   int i;
207   orc_union32 *ORC_RESTRICT ptr0;
208   const orc_union32 *ORC_RESTRICT ptr4;
209   orc_union32 var39;
210   orc_union32 var40;
211   orc_union16 var41;
212   orc_int8 var42;
213   orc_union32 var43;
214   orc_union64 var44;
215   orc_union64 var45;
216   orc_union64 var46;
217   orc_union32 var47;
218   orc_union64 var48;
219   orc_union64 var49;
220   orc_union64 var50;
221   orc_union64 var51;
222   orc_union64 var52;
223   orc_union32 var53;
224   orc_union32 var54;
225
226   ptr0 = (orc_union32 *) d1;
227   ptr4 = (orc_union32 *) s1;
228
229   /* 14: loadpl */
230   var39.i = (int) 0x000000ff;   /* 255 or 1.25987e-321f */
231
232   for (i = 0; i < n; i++) {
233     /* 0: loadl */
234     var40 = ptr4[i];
235     /* 1: convlw */
236     var41.i = var40.i;
237     /* 2: convwb */
238     var42 = var41.i;
239     /* 3: splatbl */
240     var43.i =
241         ((var42 & 0xff) << 24) | ((var42 & 0xff) << 16) | ((var42 & 0xff) << 8)
242         | (var42 & 0xff);
243     /* 4: convubw */
244     var44.x4[0] = (orc_uint8) var43.x4[0];
245     var44.x4[1] = (orc_uint8) var43.x4[1];
246     var44.x4[2] = (orc_uint8) var43.x4[2];
247     var44.x4[3] = (orc_uint8) var43.x4[3];
248     /* 5: shruw */
249     var45.x4[0] = ((orc_uint16) var44.x4[0]) >> 8;
250     var45.x4[1] = ((orc_uint16) var44.x4[1]) >> 8;
251     var45.x4[2] = ((orc_uint16) var44.x4[2]) >> 8;
252     var45.x4[3] = ((orc_uint16) var44.x4[3]) >> 8;
253     /* 6: convubw */
254     var46.x4[0] = (orc_uint8) var40.x4[0];
255     var46.x4[1] = (orc_uint8) var40.x4[1];
256     var46.x4[2] = (orc_uint8) var40.x4[2];
257     var46.x4[3] = (orc_uint8) var40.x4[3];
258     /* 7: loadl */
259     var47 = ptr0[i];
260     /* 8: convubw */
261     var48.x4[0] = (orc_uint8) var47.x4[0];
262     var48.x4[1] = (orc_uint8) var47.x4[1];
263     var48.x4[2] = (orc_uint8) var47.x4[2];
264     var48.x4[3] = (orc_uint8) var47.x4[3];
265     /* 9: subw */
266     var49.x4[0] = var46.x4[0] - var48.x4[0];
267     var49.x4[1] = var46.x4[1] - var48.x4[1];
268     var49.x4[2] = var46.x4[2] - var48.x4[2];
269     var49.x4[3] = var46.x4[3] - var48.x4[3];
270     /* 10: mullw */
271     var50.x4[0] = (var49.x4[0] * var45.x4[0]) & 0xffff;
272     var50.x4[1] = (var49.x4[1] * var45.x4[1]) & 0xffff;
273     var50.x4[2] = (var49.x4[2] * var45.x4[2]) & 0xffff;
274     var50.x4[3] = (var49.x4[3] * var45.x4[3]) & 0xffff;
275     /* 11: div255w */
276     var51.x4[0] =
277         ((orc_uint16) (((orc_uint16) (var50.x4[0] + 128)) +
278             (((orc_uint16) (var50.x4[0] + 128)) >> 8))) >> 8;
279     var51.x4[1] =
280         ((orc_uint16) (((orc_uint16) (var50.x4[1] + 128)) +
281             (((orc_uint16) (var50.x4[1] + 128)) >> 8))) >> 8;
282     var51.x4[2] =
283         ((orc_uint16) (((orc_uint16) (var50.x4[2] + 128)) +
284             (((orc_uint16) (var50.x4[2] + 128)) >> 8))) >> 8;
285     var51.x4[3] =
286         ((orc_uint16) (((orc_uint16) (var50.x4[3] + 128)) +
287             (((orc_uint16) (var50.x4[3] + 128)) >> 8))) >> 8;
288     /* 12: addw */
289     var52.x4[0] = var48.x4[0] + var51.x4[0];
290     var52.x4[1] = var48.x4[1] + var51.x4[1];
291     var52.x4[2] = var48.x4[2] + var51.x4[2];
292     var52.x4[3] = var48.x4[3] + var51.x4[3];
293     /* 13: convwb */
294     var53.x4[0] = var52.x4[0];
295     var53.x4[1] = var52.x4[1];
296     var53.x4[2] = var52.x4[2];
297     var53.x4[3] = var52.x4[3];
298     /* 15: orl */
299     var54.i = var53.i | var39.i;
300     /* 16: storel */
301     ptr0[i] = var54;
302   }
303
304 }
305
306 #else
307 static void
308 _backup_orc_blend_little (OrcExecutor * ORC_RESTRICT ex)
309 {
310   int i;
311   int n = ex->n;
312   orc_union32 *ORC_RESTRICT ptr0;
313   const orc_union32 *ORC_RESTRICT ptr4;
314   orc_union32 var39;
315   orc_union32 var40;
316   orc_union16 var41;
317   orc_int8 var42;
318   orc_union32 var43;
319   orc_union64 var44;
320   orc_union64 var45;
321   orc_union64 var46;
322   orc_union32 var47;
323   orc_union64 var48;
324   orc_union64 var49;
325   orc_union64 var50;
326   orc_union64 var51;
327   orc_union64 var52;
328   orc_union32 var53;
329   orc_union32 var54;
330
331   ptr0 = (orc_union32 *) ex->arrays[0];
332   ptr4 = (orc_union32 *) ex->arrays[4];
333
334   /* 14: loadpl */
335   var39.i = (int) 0x000000ff;   /* 255 or 1.25987e-321f */
336
337   for (i = 0; i < n; i++) {
338     /* 0: loadl */
339     var40 = ptr4[i];
340     /* 1: convlw */
341     var41.i = var40.i;
342     /* 2: convwb */
343     var42 = var41.i;
344     /* 3: splatbl */
345     var43.i =
346         ((var42 & 0xff) << 24) | ((var42 & 0xff) << 16) | ((var42 & 0xff) << 8)
347         | (var42 & 0xff);
348     /* 4: convubw */
349     var44.x4[0] = (orc_uint8) var43.x4[0];
350     var44.x4[1] = (orc_uint8) var43.x4[1];
351     var44.x4[2] = (orc_uint8) var43.x4[2];
352     var44.x4[3] = (orc_uint8) var43.x4[3];
353     /* 5: shruw */
354     var45.x4[0] = ((orc_uint16) var44.x4[0]) >> 8;
355     var45.x4[1] = ((orc_uint16) var44.x4[1]) >> 8;
356     var45.x4[2] = ((orc_uint16) var44.x4[2]) >> 8;
357     var45.x4[3] = ((orc_uint16) var44.x4[3]) >> 8;
358     /* 6: convubw */
359     var46.x4[0] = (orc_uint8) var40.x4[0];
360     var46.x4[1] = (orc_uint8) var40.x4[1];
361     var46.x4[2] = (orc_uint8) var40.x4[2];
362     var46.x4[3] = (orc_uint8) var40.x4[3];
363     /* 7: loadl */
364     var47 = ptr0[i];
365     /* 8: convubw */
366     var48.x4[0] = (orc_uint8) var47.x4[0];
367     var48.x4[1] = (orc_uint8) var47.x4[1];
368     var48.x4[2] = (orc_uint8) var47.x4[2];
369     var48.x4[3] = (orc_uint8) var47.x4[3];
370     /* 9: subw */
371     var49.x4[0] = var46.x4[0] - var48.x4[0];
372     var49.x4[1] = var46.x4[1] - var48.x4[1];
373     var49.x4[2] = var46.x4[2] - var48.x4[2];
374     var49.x4[3] = var46.x4[3] - var48.x4[3];
375     /* 10: mullw */
376     var50.x4[0] = (var49.x4[0] * var45.x4[0]) & 0xffff;
377     var50.x4[1] = (var49.x4[1] * var45.x4[1]) & 0xffff;
378     var50.x4[2] = (var49.x4[2] * var45.x4[2]) & 0xffff;
379     var50.x4[3] = (var49.x4[3] * var45.x4[3]) & 0xffff;
380     /* 11: div255w */
381     var51.x4[0] =
382         ((orc_uint16) (((orc_uint16) (var50.x4[0] + 128)) +
383             (((orc_uint16) (var50.x4[0] + 128)) >> 8))) >> 8;
384     var51.x4[1] =
385         ((orc_uint16) (((orc_uint16) (var50.x4[1] + 128)) +
386             (((orc_uint16) (var50.x4[1] + 128)) >> 8))) >> 8;
387     var51.x4[2] =
388         ((orc_uint16) (((orc_uint16) (var50.x4[2] + 128)) +
389             (((orc_uint16) (var50.x4[2] + 128)) >> 8))) >> 8;
390     var51.x4[3] =
391         ((orc_uint16) (((orc_uint16) (var50.x4[3] + 128)) +
392             (((orc_uint16) (var50.x4[3] + 128)) >> 8))) >> 8;
393     /* 12: addw */
394     var52.x4[0] = var48.x4[0] + var51.x4[0];
395     var52.x4[1] = var48.x4[1] + var51.x4[1];
396     var52.x4[2] = var48.x4[2] + var51.x4[2];
397     var52.x4[3] = var48.x4[3] + var51.x4[3];
398     /* 13: convwb */
399     var53.x4[0] = var52.x4[0];
400     var53.x4[1] = var52.x4[1];
401     var53.x4[2] = var52.x4[2];
402     var53.x4[3] = var52.x4[3];
403     /* 15: orl */
404     var54.i = var53.i | var39.i;
405     /* 16: storel */
406     ptr0[i] = var54;
407   }
408
409 }
410
411 void
412 orc_blend_little (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
413     int n)
414 {
415   OrcExecutor _ex, *ex = &_ex;
416   static volatile int p_inited = 0;
417   static OrcProgram *p = 0;
418   void (*func) (OrcExecutor *);
419
420   if (!p_inited) {
421     orc_once_mutex_lock ();
422     if (!p_inited) {
423
424       p = orc_program_new ();
425       orc_program_set_name (p, "orc_blend_little");
426       orc_program_set_backup_function (p, _backup_orc_blend_little);
427       orc_program_add_destination (p, 4, "d1");
428       orc_program_add_source (p, 4, "s1");
429       orc_program_add_constant (p, 4, 0x000000ff, "c1");
430       orc_program_add_constant (p, 4, 0x00000008, "c2");
431       orc_program_add_temporary (p, 4, "t1");
432       orc_program_add_temporary (p, 2, "t2");
433       orc_program_add_temporary (p, 1, "t3");
434       orc_program_add_temporary (p, 4, "t4");
435       orc_program_add_temporary (p, 8, "t5");
436       orc_program_add_temporary (p, 8, "t6");
437       orc_program_add_temporary (p, 8, "t7");
438
439       orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
440           ORC_VAR_D1);
441       orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1,
442           ORC_VAR_D1);
443       orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1,
444           ORC_VAR_D1);
445       orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1,
446           ORC_VAR_D1);
447       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1,
448           ORC_VAR_D1);
449       orc_program_append_2 (p, "shruw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2,
450           ORC_VAR_D1);
451       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_D1,
452           ORC_VAR_D1);
453       orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1,
454           ORC_VAR_D1);
455       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_D1,
456           ORC_VAR_D1);
457       orc_program_append_2 (p, "subw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T5,
458           ORC_VAR_D1);
459       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T7,
460           ORC_VAR_D1);
461       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1,
462           ORC_VAR_D1);
463       orc_program_append_2 (p, "addw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T6,
464           ORC_VAR_D1);
465       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_D1,
466           ORC_VAR_D1);
467       orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
468           ORC_VAR_D1);
469       orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
470           ORC_VAR_D1);
471
472       orc_program_compile (p);
473     }
474     p_inited = TRUE;
475     orc_once_mutex_unlock ();
476   }
477   ex->program = p;
478
479   ex->n = n;
480   ex->arrays[ORC_VAR_D1] = d1;
481   ex->arrays[ORC_VAR_S1] = (void *) s1;
482
483   func = p->code_exec;
484   func (ex);
485 }
486 #endif
487
488
489 /* orc_blend_big */
490 #ifdef DISABLE_ORC
491 void
492 orc_blend_big (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n)
493 {
494   int i;
495   orc_union32 *ORC_RESTRICT ptr0;
496   const orc_union32 *ORC_RESTRICT ptr4;
497   orc_union32 var40;
498   orc_union32 var41;
499   orc_union32 var42;
500   orc_union16 var43;
501   orc_int8 var44;
502   orc_union32 var45;
503   orc_union64 var46;
504   orc_union64 var47;
505   orc_union64 var48;
506   orc_union32 var49;
507   orc_union64 var50;
508   orc_union64 var51;
509   orc_union64 var52;
510   orc_union64 var53;
511   orc_union64 var54;
512   orc_union32 var55;
513   orc_union32 var56;
514
515   ptr0 = (orc_union32 *) d1;
516   ptr4 = (orc_union32 *) s1;
517
518   /* 15: loadpl */
519   var40.i = (int) 0xff000000;   /* -16777216 or 2.11371e-314f */
520
521   for (i = 0; i < n; i++) {
522     /* 0: loadl */
523     var41 = ptr4[i];
524     /* 1: shrul */
525     var42.i = ((orc_uint32) var41.i) >> 24;
526     /* 2: convlw */
527     var43.i = var42.i;
528     /* 3: convwb */
529     var44 = var43.i;
530     /* 4: splatbl */
531     var45.i =
532         ((var44 & 0xff) << 24) | ((var44 & 0xff) << 16) | ((var44 & 0xff) << 8)
533         | (var44 & 0xff);
534     /* 5: convubw */
535     var46.x4[0] = (orc_uint8) var45.x4[0];
536     var46.x4[1] = (orc_uint8) var45.x4[1];
537     var46.x4[2] = (orc_uint8) var45.x4[2];
538     var46.x4[3] = (orc_uint8) var45.x4[3];
539     /* 6: shruw */
540     var47.x4[0] = ((orc_uint16) var46.x4[0]) >> 8;
541     var47.x4[1] = ((orc_uint16) var46.x4[1]) >> 8;
542     var47.x4[2] = ((orc_uint16) var46.x4[2]) >> 8;
543     var47.x4[3] = ((orc_uint16) var46.x4[3]) >> 8;
544     /* 7: convubw */
545     var48.x4[0] = (orc_uint8) var41.x4[0];
546     var48.x4[1] = (orc_uint8) var41.x4[1];
547     var48.x4[2] = (orc_uint8) var41.x4[2];
548     var48.x4[3] = (orc_uint8) var41.x4[3];
549     /* 8: loadl */
550     var49 = ptr0[i];
551     /* 9: convubw */
552     var50.x4[0] = (orc_uint8) var49.x4[0];
553     var50.x4[1] = (orc_uint8) var49.x4[1];
554     var50.x4[2] = (orc_uint8) var49.x4[2];
555     var50.x4[3] = (orc_uint8) var49.x4[3];
556     /* 10: subw */
557     var51.x4[0] = var48.x4[0] - var50.x4[0];
558     var51.x4[1] = var48.x4[1] - var50.x4[1];
559     var51.x4[2] = var48.x4[2] - var50.x4[2];
560     var51.x4[3] = var48.x4[3] - var50.x4[3];
561     /* 11: mullw */
562     var52.x4[0] = (var51.x4[0] * var47.x4[0]) & 0xffff;
563     var52.x4[1] = (var51.x4[1] * var47.x4[1]) & 0xffff;
564     var52.x4[2] = (var51.x4[2] * var47.x4[2]) & 0xffff;
565     var52.x4[3] = (var51.x4[3] * var47.x4[3]) & 0xffff;
566     /* 12: div255w */
567     var53.x4[0] =
568         ((orc_uint16) (((orc_uint16) (var52.x4[0] + 128)) +
569             (((orc_uint16) (var52.x4[0] + 128)) >> 8))) >> 8;
570     var53.x4[1] =
571         ((orc_uint16) (((orc_uint16) (var52.x4[1] + 128)) +
572             (((orc_uint16) (var52.x4[1] + 128)) >> 8))) >> 8;
573     var53.x4[2] =
574         ((orc_uint16) (((orc_uint16) (var52.x4[2] + 128)) +
575             (((orc_uint16) (var52.x4[2] + 128)) >> 8))) >> 8;
576     var53.x4[3] =
577         ((orc_uint16) (((orc_uint16) (var52.x4[3] + 128)) +
578             (((orc_uint16) (var52.x4[3] + 128)) >> 8))) >> 8;
579     /* 13: addw */
580     var54.x4[0] = var50.x4[0] + var53.x4[0];
581     var54.x4[1] = var50.x4[1] + var53.x4[1];
582     var54.x4[2] = var50.x4[2] + var53.x4[2];
583     var54.x4[3] = var50.x4[3] + var53.x4[3];
584     /* 14: convwb */
585     var55.x4[0] = var54.x4[0];
586     var55.x4[1] = var54.x4[1];
587     var55.x4[2] = var54.x4[2];
588     var55.x4[3] = var54.x4[3];
589     /* 16: orl */
590     var56.i = var55.i | var40.i;
591     /* 17: storel */
592     ptr0[i] = var56;
593   }
594
595 }
596
597 #else
598 static void
599 _backup_orc_blend_big (OrcExecutor * ORC_RESTRICT ex)
600 {
601   int i;
602   int n = ex->n;
603   orc_union32 *ORC_RESTRICT ptr0;
604   const orc_union32 *ORC_RESTRICT ptr4;
605   orc_union32 var40;
606   orc_union32 var41;
607   orc_union32 var42;
608   orc_union16 var43;
609   orc_int8 var44;
610   orc_union32 var45;
611   orc_union64 var46;
612   orc_union64 var47;
613   orc_union64 var48;
614   orc_union32 var49;
615   orc_union64 var50;
616   orc_union64 var51;
617   orc_union64 var52;
618   orc_union64 var53;
619   orc_union64 var54;
620   orc_union32 var55;
621   orc_union32 var56;
622
623   ptr0 = (orc_union32 *) ex->arrays[0];
624   ptr4 = (orc_union32 *) ex->arrays[4];
625
626   /* 15: loadpl */
627   var40.i = (int) 0xff000000;   /* -16777216 or 2.11371e-314f */
628
629   for (i = 0; i < n; i++) {
630     /* 0: loadl */
631     var41 = ptr4[i];
632     /* 1: shrul */
633     var42.i = ((orc_uint32) var41.i) >> 24;
634     /* 2: convlw */
635     var43.i = var42.i;
636     /* 3: convwb */
637     var44 = var43.i;
638     /* 4: splatbl */
639     var45.i =
640         ((var44 & 0xff) << 24) | ((var44 & 0xff) << 16) | ((var44 & 0xff) << 8)
641         | (var44 & 0xff);
642     /* 5: convubw */
643     var46.x4[0] = (orc_uint8) var45.x4[0];
644     var46.x4[1] = (orc_uint8) var45.x4[1];
645     var46.x4[2] = (orc_uint8) var45.x4[2];
646     var46.x4[3] = (orc_uint8) var45.x4[3];
647     /* 6: shruw */
648     var47.x4[0] = ((orc_uint16) var46.x4[0]) >> 8;
649     var47.x4[1] = ((orc_uint16) var46.x4[1]) >> 8;
650     var47.x4[2] = ((orc_uint16) var46.x4[2]) >> 8;
651     var47.x4[3] = ((orc_uint16) var46.x4[3]) >> 8;
652     /* 7: convubw */
653     var48.x4[0] = (orc_uint8) var41.x4[0];
654     var48.x4[1] = (orc_uint8) var41.x4[1];
655     var48.x4[2] = (orc_uint8) var41.x4[2];
656     var48.x4[3] = (orc_uint8) var41.x4[3];
657     /* 8: loadl */
658     var49 = ptr0[i];
659     /* 9: convubw */
660     var50.x4[0] = (orc_uint8) var49.x4[0];
661     var50.x4[1] = (orc_uint8) var49.x4[1];
662     var50.x4[2] = (orc_uint8) var49.x4[2];
663     var50.x4[3] = (orc_uint8) var49.x4[3];
664     /* 10: subw */
665     var51.x4[0] = var48.x4[0] - var50.x4[0];
666     var51.x4[1] = var48.x4[1] - var50.x4[1];
667     var51.x4[2] = var48.x4[2] - var50.x4[2];
668     var51.x4[3] = var48.x4[3] - var50.x4[3];
669     /* 11: mullw */
670     var52.x4[0] = (var51.x4[0] * var47.x4[0]) & 0xffff;
671     var52.x4[1] = (var51.x4[1] * var47.x4[1]) & 0xffff;
672     var52.x4[2] = (var51.x4[2] * var47.x4[2]) & 0xffff;
673     var52.x4[3] = (var51.x4[3] * var47.x4[3]) & 0xffff;
674     /* 12: div255w */
675     var53.x4[0] =
676         ((orc_uint16) (((orc_uint16) (var52.x4[0] + 128)) +
677             (((orc_uint16) (var52.x4[0] + 128)) >> 8))) >> 8;
678     var53.x4[1] =
679         ((orc_uint16) (((orc_uint16) (var52.x4[1] + 128)) +
680             (((orc_uint16) (var52.x4[1] + 128)) >> 8))) >> 8;
681     var53.x4[2] =
682         ((orc_uint16) (((orc_uint16) (var52.x4[2] + 128)) +
683             (((orc_uint16) (var52.x4[2] + 128)) >> 8))) >> 8;
684     var53.x4[3] =
685         ((orc_uint16) (((orc_uint16) (var52.x4[3] + 128)) +
686             (((orc_uint16) (var52.x4[3] + 128)) >> 8))) >> 8;
687     /* 13: addw */
688     var54.x4[0] = var50.x4[0] + var53.x4[0];
689     var54.x4[1] = var50.x4[1] + var53.x4[1];
690     var54.x4[2] = var50.x4[2] + var53.x4[2];
691     var54.x4[3] = var50.x4[3] + var53.x4[3];
692     /* 14: convwb */
693     var55.x4[0] = var54.x4[0];
694     var55.x4[1] = var54.x4[1];
695     var55.x4[2] = var54.x4[2];
696     var55.x4[3] = var54.x4[3];
697     /* 16: orl */
698     var56.i = var55.i | var40.i;
699     /* 17: storel */
700     ptr0[i] = var56;
701   }
702
703 }
704
705 void
706 orc_blend_big (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n)
707 {
708   OrcExecutor _ex, *ex = &_ex;
709   static volatile int p_inited = 0;
710   static OrcProgram *p = 0;
711   void (*func) (OrcExecutor *);
712
713   if (!p_inited) {
714     orc_once_mutex_lock ();
715     if (!p_inited) {
716
717       p = orc_program_new ();
718       orc_program_set_name (p, "orc_blend_big");
719       orc_program_set_backup_function (p, _backup_orc_blend_big);
720       orc_program_add_destination (p, 4, "d1");
721       orc_program_add_source (p, 4, "s1");
722       orc_program_add_constant (p, 4, 0xff000000, "c1");
723       orc_program_add_constant (p, 4, 0x00000018, "c2");
724       orc_program_add_constant (p, 4, 0x00000008, "c3");
725       orc_program_add_temporary (p, 4, "t1");
726       orc_program_add_temporary (p, 4, "t2");
727       orc_program_add_temporary (p, 2, "t3");
728       orc_program_add_temporary (p, 1, "t4");
729       orc_program_add_temporary (p, 4, "t5");
730       orc_program_add_temporary (p, 8, "t6");
731       orc_program_add_temporary (p, 8, "t7");
732       orc_program_add_temporary (p, 8, "t8");
733
734       orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
735           ORC_VAR_D1);
736       orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C2,
737           ORC_VAR_D1);
738       orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1,
739           ORC_VAR_D1);
740       orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1,
741           ORC_VAR_D1);
742       orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1,
743           ORC_VAR_D1);
744       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_D1,
745           ORC_VAR_D1);
746       orc_program_append_2 (p, "shruw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_C3,
747           ORC_VAR_D1);
748       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T1, ORC_VAR_D1,
749           ORC_VAR_D1);
750       orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1,
751           ORC_VAR_D1);
752       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_D1,
753           ORC_VAR_D1);
754       orc_program_append_2 (p, "subw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T6,
755           ORC_VAR_D1);
756       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T8,
757           ORC_VAR_D1);
758       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_D1,
759           ORC_VAR_D1);
760       orc_program_append_2 (p, "addw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T7,
761           ORC_VAR_D1);
762       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T6, ORC_VAR_D1,
763           ORC_VAR_D1);
764       orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
765           ORC_VAR_D1);
766       orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
767           ORC_VAR_D1);
768
769       orc_program_compile (p);
770     }
771     p_inited = TRUE;
772     orc_once_mutex_unlock ();
773   }
774   ex->program = p;
775
776   ex->n = n;
777   ex->arrays[ORC_VAR_D1] = d1;
778   ex->arrays[ORC_VAR_S1] = (void *) s1;
779
780   func = p->code_exec;
781   func (ex);
782 }
783 #endif
784
785
786 /* cogorc_getline_I420 */
787 #ifdef DISABLE_ORC
788 void
789 cogorc_getline_I420 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
790     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n)
791 {
792   int i;
793   orc_union32 *ORC_RESTRICT ptr0;
794   const orc_int8 *ORC_RESTRICT ptr4;
795   const orc_int8 *ORC_RESTRICT ptr5;
796   const orc_int8 *ORC_RESTRICT ptr6;
797   orc_int8 var36;
798   orc_int8 var37;
799   orc_union32 var38;
800   orc_int8 var39;
801   orc_int8 var40;
802   orc_union16 var41;
803   orc_union16 var42;
804
805   ptr0 = (orc_union32 *) d1;
806   ptr4 = (orc_int8 *) s1;
807   ptr5 = (orc_int8 *) s2;
808   ptr6 = (orc_int8 *) s3;
809
810   /* 3: loadpb */
811   var36 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
812
813   for (i = 0; i < n; i++) {
814     /* 0: loadupdb */
815     var39 = ptr5[i >> 1];
816     /* 1: loadupdb */
817     var40 = ptr6[i >> 1];
818     /* 2: mergebw */
819     {
820       orc_union16 _dest;
821       _dest.x2[0] = var39;
822       _dest.x2[1] = var40;
823       var41.i = _dest.i;
824     }
825     /* 4: loadb */
826     var37 = ptr4[i];
827     /* 5: mergebw */
828     {
829       orc_union16 _dest;
830       _dest.x2[0] = var36;
831       _dest.x2[1] = var37;
832       var42.i = _dest.i;
833     }
834     /* 6: mergewl */
835     {
836       orc_union32 _dest;
837       _dest.x2[0] = var42.i;
838       _dest.x2[1] = var41.i;
839       var38.i = _dest.i;
840     }
841     /* 7: storel */
842     ptr0[i] = var38;
843   }
844
845 }
846
847 #else
848 static void
849 _backup_cogorc_getline_I420 (OrcExecutor * ORC_RESTRICT ex)
850 {
851   int i;
852   int n = ex->n;
853   orc_union32 *ORC_RESTRICT ptr0;
854   const orc_int8 *ORC_RESTRICT ptr4;
855   const orc_int8 *ORC_RESTRICT ptr5;
856   const orc_int8 *ORC_RESTRICT ptr6;
857   orc_int8 var36;
858   orc_int8 var37;
859   orc_union32 var38;
860   orc_int8 var39;
861   orc_int8 var40;
862   orc_union16 var41;
863   orc_union16 var42;
864
865   ptr0 = (orc_union32 *) ex->arrays[0];
866   ptr4 = (orc_int8 *) ex->arrays[4];
867   ptr5 = (orc_int8 *) ex->arrays[5];
868   ptr6 = (orc_int8 *) ex->arrays[6];
869
870   /* 3: loadpb */
871   var36 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
872
873   for (i = 0; i < n; i++) {
874     /* 0: loadupdb */
875     var39 = ptr5[i >> 1];
876     /* 1: loadupdb */
877     var40 = ptr6[i >> 1];
878     /* 2: mergebw */
879     {
880       orc_union16 _dest;
881       _dest.x2[0] = var39;
882       _dest.x2[1] = var40;
883       var41.i = _dest.i;
884     }
885     /* 4: loadb */
886     var37 = ptr4[i];
887     /* 5: mergebw */
888     {
889       orc_union16 _dest;
890       _dest.x2[0] = var36;
891       _dest.x2[1] = var37;
892       var42.i = _dest.i;
893     }
894     /* 6: mergewl */
895     {
896       orc_union32 _dest;
897       _dest.x2[0] = var42.i;
898       _dest.x2[1] = var41.i;
899       var38.i = _dest.i;
900     }
901     /* 7: storel */
902     ptr0[i] = var38;
903   }
904
905 }
906
907 void
908 cogorc_getline_I420 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
909     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n)
910 {
911   OrcExecutor _ex, *ex = &_ex;
912   static volatile int p_inited = 0;
913   static OrcProgram *p = 0;
914   void (*func) (OrcExecutor *);
915
916   if (!p_inited) {
917     orc_once_mutex_lock ();
918     if (!p_inited) {
919
920       p = orc_program_new ();
921       orc_program_set_name (p, "cogorc_getline_I420");
922       orc_program_set_backup_function (p, _backup_cogorc_getline_I420);
923       orc_program_add_destination (p, 4, "d1");
924       orc_program_add_source (p, 1, "s1");
925       orc_program_add_source (p, 1, "s2");
926       orc_program_add_source (p, 1, "s3");
927       orc_program_add_constant (p, 1, 0x000000ff, "c1");
928       orc_program_add_temporary (p, 2, "t1");
929       orc_program_add_temporary (p, 2, "t2");
930       orc_program_add_temporary (p, 1, "t3");
931       orc_program_add_temporary (p, 1, "t4");
932
933       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T3, ORC_VAR_S2,
934           ORC_VAR_D1, ORC_VAR_D1);
935       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T4, ORC_VAR_S3,
936           ORC_VAR_D1, ORC_VAR_D1);
937       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4,
938           ORC_VAR_D1);
939       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1,
940           ORC_VAR_D1);
941       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
942           ORC_VAR_D1);
943
944       orc_program_compile (p);
945     }
946     p_inited = TRUE;
947     orc_once_mutex_unlock ();
948   }
949   ex->program = p;
950
951   ex->n = n;
952   ex->arrays[ORC_VAR_D1] = d1;
953   ex->arrays[ORC_VAR_S1] = (void *) s1;
954   ex->arrays[ORC_VAR_S2] = (void *) s2;
955   ex->arrays[ORC_VAR_S3] = (void *) s3;
956
957   func = p->code_exec;
958   func (ex);
959 }
960 #endif
961
962
963 /* cogorc_putline_I420 */
964 #ifdef DISABLE_ORC
965 void
966 cogorc_putline_I420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
967     guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n)
968 {
969   int i;
970   orc_union16 *ORC_RESTRICT ptr0;
971   orc_int8 *ORC_RESTRICT ptr1;
972   orc_int8 *ORC_RESTRICT ptr2;
973   const orc_union64 *ORC_RESTRICT ptr4;
974   orc_union64 var38;
975   orc_union16 var39;
976   orc_int8 var40;
977   orc_int8 var41;
978   orc_union32 var42;
979   orc_union32 var43;
980   orc_union16 var44;
981   orc_union16 var45;
982   orc_int8 var46;
983   orc_int8 var47;
984   orc_int8 var48;
985   orc_int8 var49;
986
987   ptr0 = (orc_union16 *) d1;
988   ptr1 = (orc_int8 *) d2;
989   ptr2 = (orc_int8 *) d3;
990   ptr4 = (orc_union64 *) s1;
991
992
993   for (i = 0; i < n; i++) {
994     /* 0: loadq */
995     var38 = ptr4[i];
996     /* 1: splitlw */
997     {
998       orc_union32 _src;
999       _src.i = var38.x2[0];
1000       var42.x2[0] = _src.x2[1];
1001       var43.x2[0] = _src.x2[0];
1002     }
1003     {
1004       orc_union32 _src;
1005       _src.i = var38.x2[1];
1006       var42.x2[1] = _src.x2[1];
1007       var43.x2[1] = _src.x2[0];
1008     }
1009     /* 2: select1wb */
1010     {
1011       orc_union16 _src;
1012       _src.i = var43.x2[0];
1013       var39.x2[0] = _src.x2[1];
1014     }
1015     {
1016       orc_union16 _src;
1017       _src.i = var43.x2[1];
1018       var39.x2[1] = _src.x2[1];
1019     }
1020     /* 3: storew */
1021     ptr0[i] = var39;
1022     /* 4: splitwb */
1023     {
1024       orc_union16 _src;
1025       _src.i = var42.x2[0];
1026       var44.x2[0] = _src.x2[1];
1027       var45.x2[0] = _src.x2[0];
1028     }
1029     {
1030       orc_union16 _src;
1031       _src.i = var42.x2[1];
1032       var44.x2[1] = _src.x2[1];
1033       var45.x2[1] = _src.x2[0];
1034     }
1035     /* 5: splitwb */
1036     {
1037       orc_union16 _src;
1038       _src.i = var45.i;
1039       var46 = _src.x2[1];
1040       var47 = _src.x2[0];
1041     }
1042     /* 6: avgub */
1043     var40 = ((orc_uint8) var46 + (orc_uint8) var47 + 1) >> 1;
1044     /* 7: storeb */
1045     ptr1[i] = var40;
1046     /* 8: splitwb */
1047     {
1048       orc_union16 _src;
1049       _src.i = var44.i;
1050       var48 = _src.x2[1];
1051       var49 = _src.x2[0];
1052     }
1053     /* 9: avgub */
1054     var41 = ((orc_uint8) var48 + (orc_uint8) var49 + 1) >> 1;
1055     /* 10: storeb */
1056     ptr2[i] = var41;
1057   }
1058
1059 }
1060
1061 #else
1062 static void
1063 _backup_cogorc_putline_I420 (OrcExecutor * ORC_RESTRICT ex)
1064 {
1065   int i;
1066   int n = ex->n;
1067   orc_union16 *ORC_RESTRICT ptr0;
1068   orc_int8 *ORC_RESTRICT ptr1;
1069   orc_int8 *ORC_RESTRICT ptr2;
1070   const orc_union64 *ORC_RESTRICT ptr4;
1071   orc_union64 var38;
1072   orc_union16 var39;
1073   orc_int8 var40;
1074   orc_int8 var41;
1075   orc_union32 var42;
1076   orc_union32 var43;
1077   orc_union16 var44;
1078   orc_union16 var45;
1079   orc_int8 var46;
1080   orc_int8 var47;
1081   orc_int8 var48;
1082   orc_int8 var49;
1083
1084   ptr0 = (orc_union16 *) ex->arrays[0];
1085   ptr1 = (orc_int8 *) ex->arrays[1];
1086   ptr2 = (orc_int8 *) ex->arrays[2];
1087   ptr4 = (orc_union64 *) ex->arrays[4];
1088
1089
1090   for (i = 0; i < n; i++) {
1091     /* 0: loadq */
1092     var38 = ptr4[i];
1093     /* 1: splitlw */
1094     {
1095       orc_union32 _src;
1096       _src.i = var38.x2[0];
1097       var42.x2[0] = _src.x2[1];
1098       var43.x2[0] = _src.x2[0];
1099     }
1100     {
1101       orc_union32 _src;
1102       _src.i = var38.x2[1];
1103       var42.x2[1] = _src.x2[1];
1104       var43.x2[1] = _src.x2[0];
1105     }
1106     /* 2: select1wb */
1107     {
1108       orc_union16 _src;
1109       _src.i = var43.x2[0];
1110       var39.x2[0] = _src.x2[1];
1111     }
1112     {
1113       orc_union16 _src;
1114       _src.i = var43.x2[1];
1115       var39.x2[1] = _src.x2[1];
1116     }
1117     /* 3: storew */
1118     ptr0[i] = var39;
1119     /* 4: splitwb */
1120     {
1121       orc_union16 _src;
1122       _src.i = var42.x2[0];
1123       var44.x2[0] = _src.x2[1];
1124       var45.x2[0] = _src.x2[0];
1125     }
1126     {
1127       orc_union16 _src;
1128       _src.i = var42.x2[1];
1129       var44.x2[1] = _src.x2[1];
1130       var45.x2[1] = _src.x2[0];
1131     }
1132     /* 5: splitwb */
1133     {
1134       orc_union16 _src;
1135       _src.i = var45.i;
1136       var46 = _src.x2[1];
1137       var47 = _src.x2[0];
1138     }
1139     /* 6: avgub */
1140     var40 = ((orc_uint8) var46 + (orc_uint8) var47 + 1) >> 1;
1141     /* 7: storeb */
1142     ptr1[i] = var40;
1143     /* 8: splitwb */
1144     {
1145       orc_union16 _src;
1146       _src.i = var44.i;
1147       var48 = _src.x2[1];
1148       var49 = _src.x2[0];
1149     }
1150     /* 9: avgub */
1151     var41 = ((orc_uint8) var48 + (orc_uint8) var49 + 1) >> 1;
1152     /* 10: storeb */
1153     ptr2[i] = var41;
1154   }
1155
1156 }
1157
1158 void
1159 cogorc_putline_I420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
1160     guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n)
1161 {
1162   OrcExecutor _ex, *ex = &_ex;
1163   static volatile int p_inited = 0;
1164   static OrcProgram *p = 0;
1165   void (*func) (OrcExecutor *);
1166
1167   if (!p_inited) {
1168     orc_once_mutex_lock ();
1169     if (!p_inited) {
1170
1171       p = orc_program_new ();
1172       orc_program_set_name (p, "cogorc_putline_I420");
1173       orc_program_set_backup_function (p, _backup_cogorc_putline_I420);
1174       orc_program_add_destination (p, 2, "d1");
1175       orc_program_add_destination (p, 1, "d2");
1176       orc_program_add_destination (p, 1, "d3");
1177       orc_program_add_source (p, 8, "s1");
1178       orc_program_add_temporary (p, 4, "t1");
1179       orc_program_add_temporary (p, 4, "t2");
1180       orc_program_add_temporary (p, 2, "t3");
1181       orc_program_add_temporary (p, 2, "t4");
1182       orc_program_add_temporary (p, 1, "t5");
1183       orc_program_add_temporary (p, 1, "t6");
1184
1185       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
1186           ORC_VAR_D1);
1187       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
1188           ORC_VAR_D1, ORC_VAR_D1);
1189       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T2,
1190           ORC_VAR_D1);
1191       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T5, ORC_VAR_T6, ORC_VAR_T3,
1192           ORC_VAR_D1);
1193       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D2, ORC_VAR_T5, ORC_VAR_T6,
1194           ORC_VAR_D1);
1195       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T5, ORC_VAR_T6, ORC_VAR_T4,
1196           ORC_VAR_D1);
1197       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D3, ORC_VAR_T5, ORC_VAR_T6,
1198           ORC_VAR_D1);
1199
1200       orc_program_compile (p);
1201     }
1202     p_inited = TRUE;
1203     orc_once_mutex_unlock ();
1204   }
1205   ex->program = p;
1206
1207   ex->n = n;
1208   ex->arrays[ORC_VAR_D1] = d1;
1209   ex->arrays[ORC_VAR_D2] = d2;
1210   ex->arrays[ORC_VAR_D3] = d3;
1211   ex->arrays[ORC_VAR_S1] = (void *) s1;
1212
1213   func = p->code_exec;
1214   func (ex);
1215 }
1216 #endif
1217
1218
1219 /* cogorc_getline_YUY2 */
1220 #ifdef DISABLE_ORC
1221 void
1222 cogorc_getline_YUY2 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
1223     int n)
1224 {
1225   int i;
1226   orc_union64 *ORC_RESTRICT ptr0;
1227   const orc_union32 *ORC_RESTRICT ptr4;
1228   orc_union32 var36;
1229   orc_union16 var37;
1230   orc_union64 var38;
1231   orc_union16 var39;
1232   orc_union16 var40;
1233   orc_union32 var41;
1234   orc_union32 var42;
1235
1236   ptr0 = (orc_union64 *) d1;
1237   ptr4 = (orc_union32 *) s1;
1238
1239   /* 2: loadpb */
1240   var37.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
1241   var37.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
1242
1243   for (i = 0; i < n; i++) {
1244     /* 0: loadl */
1245     var36 = ptr4[i];
1246     /* 1: splitwb */
1247     {
1248       orc_union16 _src;
1249       _src.i = var36.x2[0];
1250       var39.x2[0] = _src.x2[1];
1251       var40.x2[0] = _src.x2[0];
1252     }
1253     {
1254       orc_union16 _src;
1255       _src.i = var36.x2[1];
1256       var39.x2[1] = _src.x2[1];
1257       var40.x2[1] = _src.x2[0];
1258     }
1259     /* 3: mergebw */
1260     {
1261       orc_union16 _dest;
1262       _dest.x2[0] = var37.x2[0];
1263       _dest.x2[1] = var40.x2[0];
1264       var41.x2[0] = _dest.i;
1265     }
1266     {
1267       orc_union16 _dest;
1268       _dest.x2[0] = var37.x2[1];
1269       _dest.x2[1] = var40.x2[1];
1270       var41.x2[1] = _dest.i;
1271     }
1272     /* 4: mergewl */
1273     {
1274       orc_union32 _dest;
1275       _dest.x2[0] = var39.i;
1276       _dest.x2[1] = var39.i;
1277       var42.i = _dest.i;
1278     }
1279     /* 5: mergewl */
1280     {
1281       orc_union32 _dest;
1282       _dest.x2[0] = var41.x2[0];
1283       _dest.x2[1] = var42.x2[0];
1284       var38.x2[0] = _dest.i;
1285     }
1286     {
1287       orc_union32 _dest;
1288       _dest.x2[0] = var41.x2[1];
1289       _dest.x2[1] = var42.x2[1];
1290       var38.x2[1] = _dest.i;
1291     }
1292     /* 6: storeq */
1293     ptr0[i] = var38;
1294   }
1295
1296 }
1297
1298 #else
1299 static void
1300 _backup_cogorc_getline_YUY2 (OrcExecutor * ORC_RESTRICT ex)
1301 {
1302   int i;
1303   int n = ex->n;
1304   orc_union64 *ORC_RESTRICT ptr0;
1305   const orc_union32 *ORC_RESTRICT ptr4;
1306   orc_union32 var36;
1307   orc_union16 var37;
1308   orc_union64 var38;
1309   orc_union16 var39;
1310   orc_union16 var40;
1311   orc_union32 var41;
1312   orc_union32 var42;
1313
1314   ptr0 = (orc_union64 *) ex->arrays[0];
1315   ptr4 = (orc_union32 *) ex->arrays[4];
1316
1317   /* 2: loadpb */
1318   var37.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
1319   var37.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
1320
1321   for (i = 0; i < n; i++) {
1322     /* 0: loadl */
1323     var36 = ptr4[i];
1324     /* 1: splitwb */
1325     {
1326       orc_union16 _src;
1327       _src.i = var36.x2[0];
1328       var39.x2[0] = _src.x2[1];
1329       var40.x2[0] = _src.x2[0];
1330     }
1331     {
1332       orc_union16 _src;
1333       _src.i = var36.x2[1];
1334       var39.x2[1] = _src.x2[1];
1335       var40.x2[1] = _src.x2[0];
1336     }
1337     /* 3: mergebw */
1338     {
1339       orc_union16 _dest;
1340       _dest.x2[0] = var37.x2[0];
1341       _dest.x2[1] = var40.x2[0];
1342       var41.x2[0] = _dest.i;
1343     }
1344     {
1345       orc_union16 _dest;
1346       _dest.x2[0] = var37.x2[1];
1347       _dest.x2[1] = var40.x2[1];
1348       var41.x2[1] = _dest.i;
1349     }
1350     /* 4: mergewl */
1351     {
1352       orc_union32 _dest;
1353       _dest.x2[0] = var39.i;
1354       _dest.x2[1] = var39.i;
1355       var42.i = _dest.i;
1356     }
1357     /* 5: mergewl */
1358     {
1359       orc_union32 _dest;
1360       _dest.x2[0] = var41.x2[0];
1361       _dest.x2[1] = var42.x2[0];
1362       var38.x2[0] = _dest.i;
1363     }
1364     {
1365       orc_union32 _dest;
1366       _dest.x2[0] = var41.x2[1];
1367       _dest.x2[1] = var42.x2[1];
1368       var38.x2[1] = _dest.i;
1369     }
1370     /* 6: storeq */
1371     ptr0[i] = var38;
1372   }
1373
1374 }
1375
1376 void
1377 cogorc_getline_YUY2 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
1378     int n)
1379 {
1380   OrcExecutor _ex, *ex = &_ex;
1381   static volatile int p_inited = 0;
1382   static OrcProgram *p = 0;
1383   void (*func) (OrcExecutor *);
1384
1385   if (!p_inited) {
1386     orc_once_mutex_lock ();
1387     if (!p_inited) {
1388
1389       p = orc_program_new ();
1390       orc_program_set_name (p, "cogorc_getline_YUY2");
1391       orc_program_set_backup_function (p, _backup_cogorc_getline_YUY2);
1392       orc_program_add_destination (p, 8, "d1");
1393       orc_program_add_source (p, 4, "s1");
1394       orc_program_add_constant (p, 2, 0x000000ff, "c1");
1395       orc_program_add_temporary (p, 2, "t1");
1396       orc_program_add_temporary (p, 2, "t2");
1397       orc_program_add_temporary (p, 4, "t3");
1398       orc_program_add_temporary (p, 4, "t4");
1399
1400       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
1401           ORC_VAR_D1);
1402       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1,
1403           ORC_VAR_D1);
1404       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2,
1405           ORC_VAR_D1);
1406       orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4,
1407           ORC_VAR_D1);
1408
1409       orc_program_compile (p);
1410     }
1411     p_inited = TRUE;
1412     orc_once_mutex_unlock ();
1413   }
1414   ex->program = p;
1415
1416   ex->n = n;
1417   ex->arrays[ORC_VAR_D1] = d1;
1418   ex->arrays[ORC_VAR_S1] = (void *) s1;
1419
1420   func = p->code_exec;
1421   func (ex);
1422 }
1423 #endif
1424
1425
1426 /* cogorc_putline_YUY2 */
1427 #ifdef DISABLE_ORC
1428 void
1429 cogorc_putline_YUY2 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
1430     int n)
1431 {
1432   int i;
1433   orc_union32 *ORC_RESTRICT ptr0;
1434   const orc_union64 *ORC_RESTRICT ptr4;
1435   orc_union64 var37;
1436   orc_union32 var38;
1437   orc_union32 var39;
1438   orc_union32 var40;
1439   orc_union16 var41;
1440   orc_union16 var42;
1441   orc_union16 var43;
1442   orc_union16 var44;
1443
1444   ptr0 = (orc_union32 *) d1;
1445   ptr4 = (orc_union64 *) s1;
1446
1447
1448   for (i = 0; i < n; i++) {
1449     /* 0: loadq */
1450     var37 = ptr4[i];
1451     /* 1: splitlw */
1452     {
1453       orc_union32 _src;
1454       _src.i = var37.x2[0];
1455       var39.x2[0] = _src.x2[1];
1456       var40.x2[0] = _src.x2[0];
1457     }
1458     {
1459       orc_union32 _src;
1460       _src.i = var37.x2[1];
1461       var39.x2[1] = _src.x2[1];
1462       var40.x2[1] = _src.x2[0];
1463     }
1464     /* 2: splitlw */
1465     {
1466       orc_union32 _src;
1467       _src.i = var39.i;
1468       var41.i = _src.x2[1];
1469       var42.i = _src.x2[0];
1470     }
1471     /* 3: avgub */
1472     var43.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
1473     var43.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
1474     /* 4: select1wb */
1475     {
1476       orc_union16 _src;
1477       _src.i = var40.x2[0];
1478       var44.x2[0] = _src.x2[1];
1479     }
1480     {
1481       orc_union16 _src;
1482       _src.i = var40.x2[1];
1483       var44.x2[1] = _src.x2[1];
1484     }
1485     /* 5: mergebw */
1486     {
1487       orc_union16 _dest;
1488       _dest.x2[0] = var44.x2[0];
1489       _dest.x2[1] = var43.x2[0];
1490       var38.x2[0] = _dest.i;
1491     }
1492     {
1493       orc_union16 _dest;
1494       _dest.x2[0] = var44.x2[1];
1495       _dest.x2[1] = var43.x2[1];
1496       var38.x2[1] = _dest.i;
1497     }
1498     /* 6: storel */
1499     ptr0[i] = var38;
1500   }
1501
1502 }
1503
1504 #else
1505 static void
1506 _backup_cogorc_putline_YUY2 (OrcExecutor * ORC_RESTRICT ex)
1507 {
1508   int i;
1509   int n = ex->n;
1510   orc_union32 *ORC_RESTRICT ptr0;
1511   const orc_union64 *ORC_RESTRICT ptr4;
1512   orc_union64 var37;
1513   orc_union32 var38;
1514   orc_union32 var39;
1515   orc_union32 var40;
1516   orc_union16 var41;
1517   orc_union16 var42;
1518   orc_union16 var43;
1519   orc_union16 var44;
1520
1521   ptr0 = (orc_union32 *) ex->arrays[0];
1522   ptr4 = (orc_union64 *) ex->arrays[4];
1523
1524
1525   for (i = 0; i < n; i++) {
1526     /* 0: loadq */
1527     var37 = ptr4[i];
1528     /* 1: splitlw */
1529     {
1530       orc_union32 _src;
1531       _src.i = var37.x2[0];
1532       var39.x2[0] = _src.x2[1];
1533       var40.x2[0] = _src.x2[0];
1534     }
1535     {
1536       orc_union32 _src;
1537       _src.i = var37.x2[1];
1538       var39.x2[1] = _src.x2[1];
1539       var40.x2[1] = _src.x2[0];
1540     }
1541     /* 2: splitlw */
1542     {
1543       orc_union32 _src;
1544       _src.i = var39.i;
1545       var41.i = _src.x2[1];
1546       var42.i = _src.x2[0];
1547     }
1548     /* 3: avgub */
1549     var43.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
1550     var43.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
1551     /* 4: select1wb */
1552     {
1553       orc_union16 _src;
1554       _src.i = var40.x2[0];
1555       var44.x2[0] = _src.x2[1];
1556     }
1557     {
1558       orc_union16 _src;
1559       _src.i = var40.x2[1];
1560       var44.x2[1] = _src.x2[1];
1561     }
1562     /* 5: mergebw */
1563     {
1564       orc_union16 _dest;
1565       _dest.x2[0] = var44.x2[0];
1566       _dest.x2[1] = var43.x2[0];
1567       var38.x2[0] = _dest.i;
1568     }
1569     {
1570       orc_union16 _dest;
1571       _dest.x2[0] = var44.x2[1];
1572       _dest.x2[1] = var43.x2[1];
1573       var38.x2[1] = _dest.i;
1574     }
1575     /* 6: storel */
1576     ptr0[i] = var38;
1577   }
1578
1579 }
1580
1581 void
1582 cogorc_putline_YUY2 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
1583     int n)
1584 {
1585   OrcExecutor _ex, *ex = &_ex;
1586   static volatile int p_inited = 0;
1587   static OrcProgram *p = 0;
1588   void (*func) (OrcExecutor *);
1589
1590   if (!p_inited) {
1591     orc_once_mutex_lock ();
1592     if (!p_inited) {
1593
1594       p = orc_program_new ();
1595       orc_program_set_name (p, "cogorc_putline_YUY2");
1596       orc_program_set_backup_function (p, _backup_cogorc_putline_YUY2);
1597       orc_program_add_destination (p, 4, "d1");
1598       orc_program_add_source (p, 8, "s1");
1599       orc_program_add_temporary (p, 2, "t1");
1600       orc_program_add_temporary (p, 2, "t2");
1601       orc_program_add_temporary (p, 2, "t3");
1602       orc_program_add_temporary (p, 4, "t4");
1603       orc_program_add_temporary (p, 4, "t5");
1604
1605       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_S1,
1606           ORC_VAR_D1);
1607       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T5,
1608           ORC_VAR_D1);
1609       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3,
1610           ORC_VAR_D1);
1611       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T4,
1612           ORC_VAR_D1, ORC_VAR_D1);
1613       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
1614           ORC_VAR_D1);
1615
1616       orc_program_compile (p);
1617     }
1618     p_inited = TRUE;
1619     orc_once_mutex_unlock ();
1620   }
1621   ex->program = p;
1622
1623   ex->n = n;
1624   ex->arrays[ORC_VAR_D1] = d1;
1625   ex->arrays[ORC_VAR_S1] = (void *) s1;
1626
1627   func = p->code_exec;
1628   func (ex);
1629 }
1630 #endif
1631
1632
1633 /* cogorc_putline_UYVY */
1634 #ifdef DISABLE_ORC
1635 void
1636 cogorc_putline_UYVY (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
1637     int n)
1638 {
1639   int i;
1640   orc_union32 *ORC_RESTRICT ptr0;
1641   const orc_union64 *ORC_RESTRICT ptr4;
1642   orc_union64 var37;
1643   orc_union32 var38;
1644   orc_union32 var39;
1645   orc_union32 var40;
1646   orc_union16 var41;
1647   orc_union16 var42;
1648   orc_union16 var43;
1649   orc_union16 var44;
1650
1651   ptr0 = (orc_union32 *) d1;
1652   ptr4 = (orc_union64 *) s1;
1653
1654
1655   for (i = 0; i < n; i++) {
1656     /* 0: loadq */
1657     var37 = ptr4[i];
1658     /* 1: splitlw */
1659     {
1660       orc_union32 _src;
1661       _src.i = var37.x2[0];
1662       var39.x2[0] = _src.x2[1];
1663       var40.x2[0] = _src.x2[0];
1664     }
1665     {
1666       orc_union32 _src;
1667       _src.i = var37.x2[1];
1668       var39.x2[1] = _src.x2[1];
1669       var40.x2[1] = _src.x2[0];
1670     }
1671     /* 2: splitlw */
1672     {
1673       orc_union32 _src;
1674       _src.i = var39.i;
1675       var41.i = _src.x2[1];
1676       var42.i = _src.x2[0];
1677     }
1678     /* 3: avgub */
1679     var43.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
1680     var43.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
1681     /* 4: select1wb */
1682     {
1683       orc_union16 _src;
1684       _src.i = var40.x2[0];
1685       var44.x2[0] = _src.x2[1];
1686     }
1687     {
1688       orc_union16 _src;
1689       _src.i = var40.x2[1];
1690       var44.x2[1] = _src.x2[1];
1691     }
1692     /* 5: mergebw */
1693     {
1694       orc_union16 _dest;
1695       _dest.x2[0] = var43.x2[0];
1696       _dest.x2[1] = var44.x2[0];
1697       var38.x2[0] = _dest.i;
1698     }
1699     {
1700       orc_union16 _dest;
1701       _dest.x2[0] = var43.x2[1];
1702       _dest.x2[1] = var44.x2[1];
1703       var38.x2[1] = _dest.i;
1704     }
1705     /* 6: storel */
1706     ptr0[i] = var38;
1707   }
1708
1709 }
1710
1711 #else
1712 static void
1713 _backup_cogorc_putline_UYVY (OrcExecutor * ORC_RESTRICT ex)
1714 {
1715   int i;
1716   int n = ex->n;
1717   orc_union32 *ORC_RESTRICT ptr0;
1718   const orc_union64 *ORC_RESTRICT ptr4;
1719   orc_union64 var37;
1720   orc_union32 var38;
1721   orc_union32 var39;
1722   orc_union32 var40;
1723   orc_union16 var41;
1724   orc_union16 var42;
1725   orc_union16 var43;
1726   orc_union16 var44;
1727
1728   ptr0 = (orc_union32 *) ex->arrays[0];
1729   ptr4 = (orc_union64 *) ex->arrays[4];
1730
1731
1732   for (i = 0; i < n; i++) {
1733     /* 0: loadq */
1734     var37 = ptr4[i];
1735     /* 1: splitlw */
1736     {
1737       orc_union32 _src;
1738       _src.i = var37.x2[0];
1739       var39.x2[0] = _src.x2[1];
1740       var40.x2[0] = _src.x2[0];
1741     }
1742     {
1743       orc_union32 _src;
1744       _src.i = var37.x2[1];
1745       var39.x2[1] = _src.x2[1];
1746       var40.x2[1] = _src.x2[0];
1747     }
1748     /* 2: splitlw */
1749     {
1750       orc_union32 _src;
1751       _src.i = var39.i;
1752       var41.i = _src.x2[1];
1753       var42.i = _src.x2[0];
1754     }
1755     /* 3: avgub */
1756     var43.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
1757     var43.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
1758     /* 4: select1wb */
1759     {
1760       orc_union16 _src;
1761       _src.i = var40.x2[0];
1762       var44.x2[0] = _src.x2[1];
1763     }
1764     {
1765       orc_union16 _src;
1766       _src.i = var40.x2[1];
1767       var44.x2[1] = _src.x2[1];
1768     }
1769     /* 5: mergebw */
1770     {
1771       orc_union16 _dest;
1772       _dest.x2[0] = var43.x2[0];
1773       _dest.x2[1] = var44.x2[0];
1774       var38.x2[0] = _dest.i;
1775     }
1776     {
1777       orc_union16 _dest;
1778       _dest.x2[0] = var43.x2[1];
1779       _dest.x2[1] = var44.x2[1];
1780       var38.x2[1] = _dest.i;
1781     }
1782     /* 6: storel */
1783     ptr0[i] = var38;
1784   }
1785
1786 }
1787
1788 void
1789 cogorc_putline_UYVY (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
1790     int n)
1791 {
1792   OrcExecutor _ex, *ex = &_ex;
1793   static volatile int p_inited = 0;
1794   static OrcProgram *p = 0;
1795   void (*func) (OrcExecutor *);
1796
1797   if (!p_inited) {
1798     orc_once_mutex_lock ();
1799     if (!p_inited) {
1800
1801       p = orc_program_new ();
1802       orc_program_set_name (p, "cogorc_putline_UYVY");
1803       orc_program_set_backup_function (p, _backup_cogorc_putline_UYVY);
1804       orc_program_add_destination (p, 4, "d1");
1805       orc_program_add_source (p, 8, "s1");
1806       orc_program_add_temporary (p, 2, "t1");
1807       orc_program_add_temporary (p, 2, "t2");
1808       orc_program_add_temporary (p, 2, "t3");
1809       orc_program_add_temporary (p, 4, "t4");
1810       orc_program_add_temporary (p, 4, "t5");
1811
1812       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_S1,
1813           ORC_VAR_D1);
1814       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T5,
1815           ORC_VAR_D1);
1816       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3,
1817           ORC_VAR_D1);
1818       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T4,
1819           ORC_VAR_D1, ORC_VAR_D1);
1820       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
1821           ORC_VAR_D1);
1822
1823       orc_program_compile (p);
1824     }
1825     p_inited = TRUE;
1826     orc_once_mutex_unlock ();
1827   }
1828   ex->program = p;
1829
1830   ex->n = n;
1831   ex->arrays[ORC_VAR_D1] = d1;
1832   ex->arrays[ORC_VAR_S1] = (void *) s1;
1833
1834   func = p->code_exec;
1835   func (ex);
1836 }
1837 #endif
1838
1839
1840 /* cogorc_getline_UYVY */
1841 #ifdef DISABLE_ORC
1842 void
1843 cogorc_getline_UYVY (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
1844     int n)
1845 {
1846   int i;
1847   orc_union64 *ORC_RESTRICT ptr0;
1848   const orc_union32 *ORC_RESTRICT ptr4;
1849   orc_union32 var36;
1850   orc_union16 var37;
1851   orc_union64 var38;
1852   orc_union16 var39;
1853   orc_union16 var40;
1854   orc_union32 var41;
1855   orc_union32 var42;
1856
1857   ptr0 = (orc_union64 *) d1;
1858   ptr4 = (orc_union32 *) s1;
1859
1860   /* 2: loadpb */
1861   var37.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
1862   var37.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
1863
1864   for (i = 0; i < n; i++) {
1865     /* 0: loadl */
1866     var36 = ptr4[i];
1867     /* 1: splitwb */
1868     {
1869       orc_union16 _src;
1870       _src.i = var36.x2[0];
1871       var39.x2[0] = _src.x2[1];
1872       var40.x2[0] = _src.x2[0];
1873     }
1874     {
1875       orc_union16 _src;
1876       _src.i = var36.x2[1];
1877       var39.x2[1] = _src.x2[1];
1878       var40.x2[1] = _src.x2[0];
1879     }
1880     /* 3: mergebw */
1881     {
1882       orc_union16 _dest;
1883       _dest.x2[0] = var37.x2[0];
1884       _dest.x2[1] = var39.x2[0];
1885       var41.x2[0] = _dest.i;
1886     }
1887     {
1888       orc_union16 _dest;
1889       _dest.x2[0] = var37.x2[1];
1890       _dest.x2[1] = var39.x2[1];
1891       var41.x2[1] = _dest.i;
1892     }
1893     /* 4: mergewl */
1894     {
1895       orc_union32 _dest;
1896       _dest.x2[0] = var40.i;
1897       _dest.x2[1] = var40.i;
1898       var42.i = _dest.i;
1899     }
1900     /* 5: mergewl */
1901     {
1902       orc_union32 _dest;
1903       _dest.x2[0] = var41.x2[0];
1904       _dest.x2[1] = var42.x2[0];
1905       var38.x2[0] = _dest.i;
1906     }
1907     {
1908       orc_union32 _dest;
1909       _dest.x2[0] = var41.x2[1];
1910       _dest.x2[1] = var42.x2[1];
1911       var38.x2[1] = _dest.i;
1912     }
1913     /* 6: storeq */
1914     ptr0[i] = var38;
1915   }
1916
1917 }
1918
1919 #else
1920 static void
1921 _backup_cogorc_getline_UYVY (OrcExecutor * ORC_RESTRICT ex)
1922 {
1923   int i;
1924   int n = ex->n;
1925   orc_union64 *ORC_RESTRICT ptr0;
1926   const orc_union32 *ORC_RESTRICT ptr4;
1927   orc_union32 var36;
1928   orc_union16 var37;
1929   orc_union64 var38;
1930   orc_union16 var39;
1931   orc_union16 var40;
1932   orc_union32 var41;
1933   orc_union32 var42;
1934
1935   ptr0 = (orc_union64 *) ex->arrays[0];
1936   ptr4 = (orc_union32 *) ex->arrays[4];
1937
1938   /* 2: loadpb */
1939   var37.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
1940   var37.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
1941
1942   for (i = 0; i < n; i++) {
1943     /* 0: loadl */
1944     var36 = ptr4[i];
1945     /* 1: splitwb */
1946     {
1947       orc_union16 _src;
1948       _src.i = var36.x2[0];
1949       var39.x2[0] = _src.x2[1];
1950       var40.x2[0] = _src.x2[0];
1951     }
1952     {
1953       orc_union16 _src;
1954       _src.i = var36.x2[1];
1955       var39.x2[1] = _src.x2[1];
1956       var40.x2[1] = _src.x2[0];
1957     }
1958     /* 3: mergebw */
1959     {
1960       orc_union16 _dest;
1961       _dest.x2[0] = var37.x2[0];
1962       _dest.x2[1] = var39.x2[0];
1963       var41.x2[0] = _dest.i;
1964     }
1965     {
1966       orc_union16 _dest;
1967       _dest.x2[0] = var37.x2[1];
1968       _dest.x2[1] = var39.x2[1];
1969       var41.x2[1] = _dest.i;
1970     }
1971     /* 4: mergewl */
1972     {
1973       orc_union32 _dest;
1974       _dest.x2[0] = var40.i;
1975       _dest.x2[1] = var40.i;
1976       var42.i = _dest.i;
1977     }
1978     /* 5: mergewl */
1979     {
1980       orc_union32 _dest;
1981       _dest.x2[0] = var41.x2[0];
1982       _dest.x2[1] = var42.x2[0];
1983       var38.x2[0] = _dest.i;
1984     }
1985     {
1986       orc_union32 _dest;
1987       _dest.x2[0] = var41.x2[1];
1988       _dest.x2[1] = var42.x2[1];
1989       var38.x2[1] = _dest.i;
1990     }
1991     /* 6: storeq */
1992     ptr0[i] = var38;
1993   }
1994
1995 }
1996
1997 void
1998 cogorc_getline_UYVY (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
1999     int n)
2000 {
2001   OrcExecutor _ex, *ex = &_ex;
2002   static volatile int p_inited = 0;
2003   static OrcProgram *p = 0;
2004   void (*func) (OrcExecutor *);
2005
2006   if (!p_inited) {
2007     orc_once_mutex_lock ();
2008     if (!p_inited) {
2009
2010       p = orc_program_new ();
2011       orc_program_set_name (p, "cogorc_getline_UYVY");
2012       orc_program_set_backup_function (p, _backup_cogorc_getline_UYVY);
2013       orc_program_add_destination (p, 8, "d1");
2014       orc_program_add_source (p, 4, "s1");
2015       orc_program_add_constant (p, 2, 0x000000ff, "c1");
2016       orc_program_add_temporary (p, 2, "t1");
2017       orc_program_add_temporary (p, 2, "t2");
2018       orc_program_add_temporary (p, 4, "t3");
2019       orc_program_add_temporary (p, 4, "t4");
2020
2021       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1,
2022           ORC_VAR_D1);
2023       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1,
2024           ORC_VAR_D1);
2025       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2,
2026           ORC_VAR_D1);
2027       orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4,
2028           ORC_VAR_D1);
2029
2030       orc_program_compile (p);
2031     }
2032     p_inited = TRUE;
2033     orc_once_mutex_unlock ();
2034   }
2035   ex->program = p;
2036
2037   ex->n = n;
2038   ex->arrays[ORC_VAR_D1] = d1;
2039   ex->arrays[ORC_VAR_S1] = (void *) s1;
2040
2041   func = p->code_exec;
2042   func (ex);
2043 }
2044 #endif
2045
2046
2047 /* cogorc_getline_YUV9 */
2048 #ifdef DISABLE_ORC
2049 void
2050 cogorc_getline_YUV9 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
2051     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n)
2052 {
2053   int i;
2054   orc_union64 *ORC_RESTRICT ptr0;
2055   const orc_union16 *ORC_RESTRICT ptr4;
2056   const orc_int8 *ORC_RESTRICT ptr5;
2057   const orc_int8 *ORC_RESTRICT ptr6;
2058   orc_union16 var37;
2059   orc_union16 var38;
2060   orc_union64 var39;
2061   orc_int8 var40;
2062   orc_int8 var41;
2063   orc_union16 var42;
2064   orc_union32 var43;
2065   orc_union32 var44;
2066
2067   ptr0 = (orc_union64 *) d1;
2068   ptr4 = (orc_union16 *) s1;
2069   ptr5 = (orc_int8 *) s2;
2070   ptr6 = (orc_int8 *) s3;
2071
2072   /* 4: loadpb */
2073   var37.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
2074   var37.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
2075
2076   for (i = 0; i < n; i++) {
2077     /* 0: loadupdb */
2078     var40 = ptr5[i >> 1];
2079     /* 1: loadupdb */
2080     var41 = ptr6[i >> 1];
2081     /* 2: mergebw */
2082     {
2083       orc_union16 _dest;
2084       _dest.x2[0] = var40;
2085       _dest.x2[1] = var41;
2086       var42.i = _dest.i;
2087     }
2088     /* 3: mergewl */
2089     {
2090       orc_union32 _dest;
2091       _dest.x2[0] = var42.i;
2092       _dest.x2[1] = var42.i;
2093       var43.i = _dest.i;
2094     }
2095     /* 5: loadw */
2096     var38 = ptr4[i];
2097     /* 6: mergebw */
2098     {
2099       orc_union16 _dest;
2100       _dest.x2[0] = var37.x2[0];
2101       _dest.x2[1] = var38.x2[0];
2102       var44.x2[0] = _dest.i;
2103     }
2104     {
2105       orc_union16 _dest;
2106       _dest.x2[0] = var37.x2[1];
2107       _dest.x2[1] = var38.x2[1];
2108       var44.x2[1] = _dest.i;
2109     }
2110     /* 7: mergewl */
2111     {
2112       orc_union32 _dest;
2113       _dest.x2[0] = var44.x2[0];
2114       _dest.x2[1] = var43.x2[0];
2115       var39.x2[0] = _dest.i;
2116     }
2117     {
2118       orc_union32 _dest;
2119       _dest.x2[0] = var44.x2[1];
2120       _dest.x2[1] = var43.x2[1];
2121       var39.x2[1] = _dest.i;
2122     }
2123     /* 8: storeq */
2124     ptr0[i] = var39;
2125   }
2126
2127 }
2128
2129 #else
2130 static void
2131 _backup_cogorc_getline_YUV9 (OrcExecutor * ORC_RESTRICT ex)
2132 {
2133   int i;
2134   int n = ex->n;
2135   orc_union64 *ORC_RESTRICT ptr0;
2136   const orc_union16 *ORC_RESTRICT ptr4;
2137   const orc_int8 *ORC_RESTRICT ptr5;
2138   const orc_int8 *ORC_RESTRICT ptr6;
2139   orc_union16 var37;
2140   orc_union16 var38;
2141   orc_union64 var39;
2142   orc_int8 var40;
2143   orc_int8 var41;
2144   orc_union16 var42;
2145   orc_union32 var43;
2146   orc_union32 var44;
2147
2148   ptr0 = (orc_union64 *) ex->arrays[0];
2149   ptr4 = (orc_union16 *) ex->arrays[4];
2150   ptr5 = (orc_int8 *) ex->arrays[5];
2151   ptr6 = (orc_int8 *) ex->arrays[6];
2152
2153   /* 4: loadpb */
2154   var37.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
2155   var37.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
2156
2157   for (i = 0; i < n; i++) {
2158     /* 0: loadupdb */
2159     var40 = ptr5[i >> 1];
2160     /* 1: loadupdb */
2161     var41 = ptr6[i >> 1];
2162     /* 2: mergebw */
2163     {
2164       orc_union16 _dest;
2165       _dest.x2[0] = var40;
2166       _dest.x2[1] = var41;
2167       var42.i = _dest.i;
2168     }
2169     /* 3: mergewl */
2170     {
2171       orc_union32 _dest;
2172       _dest.x2[0] = var42.i;
2173       _dest.x2[1] = var42.i;
2174       var43.i = _dest.i;
2175     }
2176     /* 5: loadw */
2177     var38 = ptr4[i];
2178     /* 6: mergebw */
2179     {
2180       orc_union16 _dest;
2181       _dest.x2[0] = var37.x2[0];
2182       _dest.x2[1] = var38.x2[0];
2183       var44.x2[0] = _dest.i;
2184     }
2185     {
2186       orc_union16 _dest;
2187       _dest.x2[0] = var37.x2[1];
2188       _dest.x2[1] = var38.x2[1];
2189       var44.x2[1] = _dest.i;
2190     }
2191     /* 7: mergewl */
2192     {
2193       orc_union32 _dest;
2194       _dest.x2[0] = var44.x2[0];
2195       _dest.x2[1] = var43.x2[0];
2196       var39.x2[0] = _dest.i;
2197     }
2198     {
2199       orc_union32 _dest;
2200       _dest.x2[0] = var44.x2[1];
2201       _dest.x2[1] = var43.x2[1];
2202       var39.x2[1] = _dest.i;
2203     }
2204     /* 8: storeq */
2205     ptr0[i] = var39;
2206   }
2207
2208 }
2209
2210 void
2211 cogorc_getline_YUV9 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
2212     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n)
2213 {
2214   OrcExecutor _ex, *ex = &_ex;
2215   static volatile int p_inited = 0;
2216   static OrcProgram *p = 0;
2217   void (*func) (OrcExecutor *);
2218
2219   if (!p_inited) {
2220     orc_once_mutex_lock ();
2221     if (!p_inited) {
2222
2223       p = orc_program_new ();
2224       orc_program_set_name (p, "cogorc_getline_YUV9");
2225       orc_program_set_backup_function (p, _backup_cogorc_getline_YUV9);
2226       orc_program_add_destination (p, 8, "d1");
2227       orc_program_add_source (p, 2, "s1");
2228       orc_program_add_source (p, 1, "s2");
2229       orc_program_add_source (p, 1, "s3");
2230       orc_program_add_constant (p, 1, 0x000000ff, "c1");
2231       orc_program_add_temporary (p, 2, "t1");
2232       orc_program_add_temporary (p, 4, "t2");
2233       orc_program_add_temporary (p, 4, "t3");
2234       orc_program_add_temporary (p, 1, "t4");
2235       orc_program_add_temporary (p, 1, "t5");
2236
2237       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T4, ORC_VAR_S2,
2238           ORC_VAR_D1, ORC_VAR_D1);
2239       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T5, ORC_VAR_S3,
2240           ORC_VAR_D1, ORC_VAR_D1);
2241       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T4, ORC_VAR_T5,
2242           ORC_VAR_D1);
2243       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1,
2244           ORC_VAR_D1);
2245       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1,
2246           ORC_VAR_D1);
2247       orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T3,
2248           ORC_VAR_D1);
2249
2250       orc_program_compile (p);
2251     }
2252     p_inited = TRUE;
2253     orc_once_mutex_unlock ();
2254   }
2255   ex->program = p;
2256
2257   ex->n = n;
2258   ex->arrays[ORC_VAR_D1] = d1;
2259   ex->arrays[ORC_VAR_S1] = (void *) s1;
2260   ex->arrays[ORC_VAR_S2] = (void *) s2;
2261   ex->arrays[ORC_VAR_S3] = (void *) s3;
2262
2263   func = p->code_exec;
2264   func (ex);
2265 }
2266 #endif
2267
2268
2269 /* cogorc_getline_Y42B */
2270 #ifdef DISABLE_ORC
2271 void
2272 cogorc_getline_Y42B (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
2273     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n)
2274 {
2275   int i;
2276   orc_union64 *ORC_RESTRICT ptr0;
2277   const orc_union16 *ORC_RESTRICT ptr4;
2278   const orc_int8 *ORC_RESTRICT ptr5;
2279   const orc_int8 *ORC_RESTRICT ptr6;
2280   orc_int8 var36;
2281   orc_int8 var37;
2282   orc_union16 var38;
2283   orc_union16 var39;
2284   orc_union64 var40;
2285   orc_union16 var41;
2286   orc_union32 var42;
2287   orc_union32 var43;
2288
2289   ptr0 = (orc_union64 *) d1;
2290   ptr4 = (orc_union16 *) s1;
2291   ptr5 = (orc_int8 *) s2;
2292   ptr6 = (orc_int8 *) s3;
2293
2294   /* 3: loadpb */
2295   var38.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
2296   var38.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
2297
2298   for (i = 0; i < n; i++) {
2299     /* 0: loadb */
2300     var36 = ptr5[i];
2301     /* 1: loadb */
2302     var37 = ptr6[i];
2303     /* 2: mergebw */
2304     {
2305       orc_union16 _dest;
2306       _dest.x2[0] = var36;
2307       _dest.x2[1] = var37;
2308       var41.i = _dest.i;
2309     }
2310     /* 4: loadw */
2311     var39 = ptr4[i];
2312     /* 5: mergebw */
2313     {
2314       orc_union16 _dest;
2315       _dest.x2[0] = var38.x2[0];
2316       _dest.x2[1] = var39.x2[0];
2317       var42.x2[0] = _dest.i;
2318     }
2319     {
2320       orc_union16 _dest;
2321       _dest.x2[0] = var38.x2[1];
2322       _dest.x2[1] = var39.x2[1];
2323       var42.x2[1] = _dest.i;
2324     }
2325     /* 6: mergewl */
2326     {
2327       orc_union32 _dest;
2328       _dest.x2[0] = var41.i;
2329       _dest.x2[1] = var41.i;
2330       var43.i = _dest.i;
2331     }
2332     /* 7: mergewl */
2333     {
2334       orc_union32 _dest;
2335       _dest.x2[0] = var42.x2[0];
2336       _dest.x2[1] = var43.x2[0];
2337       var40.x2[0] = _dest.i;
2338     }
2339     {
2340       orc_union32 _dest;
2341       _dest.x2[0] = var42.x2[1];
2342       _dest.x2[1] = var43.x2[1];
2343       var40.x2[1] = _dest.i;
2344     }
2345     /* 8: storeq */
2346     ptr0[i] = var40;
2347   }
2348
2349 }
2350
2351 #else
2352 static void
2353 _backup_cogorc_getline_Y42B (OrcExecutor * ORC_RESTRICT ex)
2354 {
2355   int i;
2356   int n = ex->n;
2357   orc_union64 *ORC_RESTRICT ptr0;
2358   const orc_union16 *ORC_RESTRICT ptr4;
2359   const orc_int8 *ORC_RESTRICT ptr5;
2360   const orc_int8 *ORC_RESTRICT ptr6;
2361   orc_int8 var36;
2362   orc_int8 var37;
2363   orc_union16 var38;
2364   orc_union16 var39;
2365   orc_union64 var40;
2366   orc_union16 var41;
2367   orc_union32 var42;
2368   orc_union32 var43;
2369
2370   ptr0 = (orc_union64 *) ex->arrays[0];
2371   ptr4 = (orc_union16 *) ex->arrays[4];
2372   ptr5 = (orc_int8 *) ex->arrays[5];
2373   ptr6 = (orc_int8 *) ex->arrays[6];
2374
2375   /* 3: loadpb */
2376   var38.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
2377   var38.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
2378
2379   for (i = 0; i < n; i++) {
2380     /* 0: loadb */
2381     var36 = ptr5[i];
2382     /* 1: loadb */
2383     var37 = ptr6[i];
2384     /* 2: mergebw */
2385     {
2386       orc_union16 _dest;
2387       _dest.x2[0] = var36;
2388       _dest.x2[1] = var37;
2389       var41.i = _dest.i;
2390     }
2391     /* 4: loadw */
2392     var39 = ptr4[i];
2393     /* 5: mergebw */
2394     {
2395       orc_union16 _dest;
2396       _dest.x2[0] = var38.x2[0];
2397       _dest.x2[1] = var39.x2[0];
2398       var42.x2[0] = _dest.i;
2399     }
2400     {
2401       orc_union16 _dest;
2402       _dest.x2[0] = var38.x2[1];
2403       _dest.x2[1] = var39.x2[1];
2404       var42.x2[1] = _dest.i;
2405     }
2406     /* 6: mergewl */
2407     {
2408       orc_union32 _dest;
2409       _dest.x2[0] = var41.i;
2410       _dest.x2[1] = var41.i;
2411       var43.i = _dest.i;
2412     }
2413     /* 7: mergewl */
2414     {
2415       orc_union32 _dest;
2416       _dest.x2[0] = var42.x2[0];
2417       _dest.x2[1] = var43.x2[0];
2418       var40.x2[0] = _dest.i;
2419     }
2420     {
2421       orc_union32 _dest;
2422       _dest.x2[0] = var42.x2[1];
2423       _dest.x2[1] = var43.x2[1];
2424       var40.x2[1] = _dest.i;
2425     }
2426     /* 8: storeq */
2427     ptr0[i] = var40;
2428   }
2429
2430 }
2431
2432 void
2433 cogorc_getline_Y42B (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
2434     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n)
2435 {
2436   OrcExecutor _ex, *ex = &_ex;
2437   static volatile int p_inited = 0;
2438   static OrcProgram *p = 0;
2439   void (*func) (OrcExecutor *);
2440
2441   if (!p_inited) {
2442     orc_once_mutex_lock ();
2443     if (!p_inited) {
2444
2445       p = orc_program_new ();
2446       orc_program_set_name (p, "cogorc_getline_Y42B");
2447       orc_program_set_backup_function (p, _backup_cogorc_getline_Y42B);
2448       orc_program_add_destination (p, 8, "d1");
2449       orc_program_add_source (p, 2, "s1");
2450       orc_program_add_source (p, 1, "s2");
2451       orc_program_add_source (p, 1, "s3");
2452       orc_program_add_constant (p, 1, 0x000000ff, "c1");
2453       orc_program_add_temporary (p, 2, "t1");
2454       orc_program_add_temporary (p, 2, "t2");
2455       orc_program_add_temporary (p, 4, "t3");
2456       orc_program_add_temporary (p, 4, "t4");
2457
2458       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3,
2459           ORC_VAR_D1);
2460       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T4, ORC_VAR_C1, ORC_VAR_S1,
2461           ORC_VAR_D1);
2462       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1,
2463           ORC_VAR_D1);
2464       orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_T3,
2465           ORC_VAR_D1);
2466
2467       orc_program_compile (p);
2468     }
2469     p_inited = TRUE;
2470     orc_once_mutex_unlock ();
2471   }
2472   ex->program = p;
2473
2474   ex->n = n;
2475   ex->arrays[ORC_VAR_D1] = d1;
2476   ex->arrays[ORC_VAR_S1] = (void *) s1;
2477   ex->arrays[ORC_VAR_S2] = (void *) s2;
2478   ex->arrays[ORC_VAR_S3] = (void *) s3;
2479
2480   func = p->code_exec;
2481   func (ex);
2482 }
2483 #endif
2484
2485
2486 /* cogorc_putline_Y42B */
2487 #ifdef DISABLE_ORC
2488 void
2489 cogorc_putline_Y42B (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
2490     guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n)
2491 {
2492   int i;
2493   orc_union16 *ORC_RESTRICT ptr0;
2494   orc_int8 *ORC_RESTRICT ptr1;
2495   orc_int8 *ORC_RESTRICT ptr2;
2496   const orc_union64 *ORC_RESTRICT ptr4;
2497   orc_union64 var36;
2498   orc_int8 var37;
2499   orc_int8 var38;
2500   orc_union16 var39;
2501   orc_union32 var40;
2502   orc_union32 var41;
2503   orc_union16 var42;
2504   orc_union16 var43;
2505   orc_union16 var44;
2506
2507   ptr0 = (orc_union16 *) d1;
2508   ptr1 = (orc_int8 *) d2;
2509   ptr2 = (orc_int8 *) d3;
2510   ptr4 = (orc_union64 *) s1;
2511
2512
2513   for (i = 0; i < n; i++) {
2514     /* 0: loadq */
2515     var36 = ptr4[i];
2516     /* 1: splitlw */
2517     {
2518       orc_union32 _src;
2519       _src.i = var36.x2[0];
2520       var40.x2[0] = _src.x2[1];
2521       var41.x2[0] = _src.x2[0];
2522     }
2523     {
2524       orc_union32 _src;
2525       _src.i = var36.x2[1];
2526       var40.x2[1] = _src.x2[1];
2527       var41.x2[1] = _src.x2[0];
2528     }
2529     /* 2: splitlw */
2530     {
2531       orc_union32 _src;
2532       _src.i = var40.i;
2533       var42.i = _src.x2[1];
2534       var43.i = _src.x2[0];
2535     }
2536     /* 3: avgub */
2537     var44.x2[0] = ((orc_uint8) var42.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1;
2538     var44.x2[1] = ((orc_uint8) var42.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1;
2539     /* 4: splitwb */
2540     {
2541       orc_union16 _src;
2542       _src.i = var44.i;
2543       var37 = _src.x2[1];
2544       var38 = _src.x2[0];
2545     }
2546     /* 5: storeb */
2547     ptr2[i] = var37;
2548     /* 6: storeb */
2549     ptr1[i] = var38;
2550     /* 7: select1wb */
2551     {
2552       orc_union16 _src;
2553       _src.i = var41.x2[0];
2554       var39.x2[0] = _src.x2[1];
2555     }
2556     {
2557       orc_union16 _src;
2558       _src.i = var41.x2[1];
2559       var39.x2[1] = _src.x2[1];
2560     }
2561     /* 8: storew */
2562     ptr0[i] = var39;
2563   }
2564
2565 }
2566
2567 #else
2568 static void
2569 _backup_cogorc_putline_Y42B (OrcExecutor * ORC_RESTRICT ex)
2570 {
2571   int i;
2572   int n = ex->n;
2573   orc_union16 *ORC_RESTRICT ptr0;
2574   orc_int8 *ORC_RESTRICT ptr1;
2575   orc_int8 *ORC_RESTRICT ptr2;
2576   const orc_union64 *ORC_RESTRICT ptr4;
2577   orc_union64 var36;
2578   orc_int8 var37;
2579   orc_int8 var38;
2580   orc_union16 var39;
2581   orc_union32 var40;
2582   orc_union32 var41;
2583   orc_union16 var42;
2584   orc_union16 var43;
2585   orc_union16 var44;
2586
2587   ptr0 = (orc_union16 *) ex->arrays[0];
2588   ptr1 = (orc_int8 *) ex->arrays[1];
2589   ptr2 = (orc_int8 *) ex->arrays[2];
2590   ptr4 = (orc_union64 *) ex->arrays[4];
2591
2592
2593   for (i = 0; i < n; i++) {
2594     /* 0: loadq */
2595     var36 = ptr4[i];
2596     /* 1: splitlw */
2597     {
2598       orc_union32 _src;
2599       _src.i = var36.x2[0];
2600       var40.x2[0] = _src.x2[1];
2601       var41.x2[0] = _src.x2[0];
2602     }
2603     {
2604       orc_union32 _src;
2605       _src.i = var36.x2[1];
2606       var40.x2[1] = _src.x2[1];
2607       var41.x2[1] = _src.x2[0];
2608     }
2609     /* 2: splitlw */
2610     {
2611       orc_union32 _src;
2612       _src.i = var40.i;
2613       var42.i = _src.x2[1];
2614       var43.i = _src.x2[0];
2615     }
2616     /* 3: avgub */
2617     var44.x2[0] = ((orc_uint8) var42.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1;
2618     var44.x2[1] = ((orc_uint8) var42.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1;
2619     /* 4: splitwb */
2620     {
2621       orc_union16 _src;
2622       _src.i = var44.i;
2623       var37 = _src.x2[1];
2624       var38 = _src.x2[0];
2625     }
2626     /* 5: storeb */
2627     ptr2[i] = var37;
2628     /* 6: storeb */
2629     ptr1[i] = var38;
2630     /* 7: select1wb */
2631     {
2632       orc_union16 _src;
2633       _src.i = var41.x2[0];
2634       var39.x2[0] = _src.x2[1];
2635     }
2636     {
2637       orc_union16 _src;
2638       _src.i = var41.x2[1];
2639       var39.x2[1] = _src.x2[1];
2640     }
2641     /* 8: storew */
2642     ptr0[i] = var39;
2643   }
2644
2645 }
2646
2647 void
2648 cogorc_putline_Y42B (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
2649     guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n)
2650 {
2651   OrcExecutor _ex, *ex = &_ex;
2652   static volatile int p_inited = 0;
2653   static OrcProgram *p = 0;
2654   void (*func) (OrcExecutor *);
2655
2656   if (!p_inited) {
2657     orc_once_mutex_lock ();
2658     if (!p_inited) {
2659
2660       p = orc_program_new ();
2661       orc_program_set_name (p, "cogorc_putline_Y42B");
2662       orc_program_set_backup_function (p, _backup_cogorc_putline_Y42B);
2663       orc_program_add_destination (p, 2, "d1");
2664       orc_program_add_destination (p, 1, "d2");
2665       orc_program_add_destination (p, 1, "d3");
2666       orc_program_add_source (p, 8, "s1");
2667       orc_program_add_temporary (p, 4, "t1");
2668       orc_program_add_temporary (p, 4, "t2");
2669       orc_program_add_temporary (p, 2, "t3");
2670       orc_program_add_temporary (p, 2, "t4");
2671
2672       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
2673           ORC_VAR_D1);
2674       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2,
2675           ORC_VAR_D1);
2676       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4,
2677           ORC_VAR_D1);
2678       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T3,
2679           ORC_VAR_D1);
2680       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
2681           ORC_VAR_D1, ORC_VAR_D1);
2682
2683       orc_program_compile (p);
2684     }
2685     p_inited = TRUE;
2686     orc_once_mutex_unlock ();
2687   }
2688   ex->program = p;
2689
2690   ex->n = n;
2691   ex->arrays[ORC_VAR_D1] = d1;
2692   ex->arrays[ORC_VAR_D2] = d2;
2693   ex->arrays[ORC_VAR_D3] = d3;
2694   ex->arrays[ORC_VAR_S1] = (void *) s1;
2695
2696   func = p->code_exec;
2697   func (ex);
2698 }
2699 #endif
2700
2701
2702 /* cogorc_getline_Y444 */
2703 #ifdef DISABLE_ORC
2704 void
2705 cogorc_getline_Y444 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
2706     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n)
2707 {
2708   int i;
2709   orc_union32 *ORC_RESTRICT ptr0;
2710   const orc_int8 *ORC_RESTRICT ptr4;
2711   const orc_int8 *ORC_RESTRICT ptr5;
2712   const orc_int8 *ORC_RESTRICT ptr6;
2713   orc_int8 var34;
2714   orc_int8 var35;
2715   orc_int8 var36;
2716   orc_int8 var37;
2717   orc_union32 var38;
2718   orc_union16 var39;
2719   orc_union16 var40;
2720
2721   ptr0 = (orc_union32 *) d1;
2722   ptr4 = (orc_int8 *) s1;
2723   ptr5 = (orc_int8 *) s2;
2724   ptr6 = (orc_int8 *) s3;
2725
2726   /* 3: loadpb */
2727   var36 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
2728
2729   for (i = 0; i < n; i++) {
2730     /* 0: loadb */
2731     var34 = ptr5[i];
2732     /* 1: loadb */
2733     var35 = ptr6[i];
2734     /* 2: mergebw */
2735     {
2736       orc_union16 _dest;
2737       _dest.x2[0] = var34;
2738       _dest.x2[1] = var35;
2739       var39.i = _dest.i;
2740     }
2741     /* 4: loadb */
2742     var37 = ptr4[i];
2743     /* 5: mergebw */
2744     {
2745       orc_union16 _dest;
2746       _dest.x2[0] = var36;
2747       _dest.x2[1] = var37;
2748       var40.i = _dest.i;
2749     }
2750     /* 6: mergewl */
2751     {
2752       orc_union32 _dest;
2753       _dest.x2[0] = var40.i;
2754       _dest.x2[1] = var39.i;
2755       var38.i = _dest.i;
2756     }
2757     /* 7: storel */
2758     ptr0[i] = var38;
2759   }
2760
2761 }
2762
2763 #else
2764 static void
2765 _backup_cogorc_getline_Y444 (OrcExecutor * ORC_RESTRICT ex)
2766 {
2767   int i;
2768   int n = ex->n;
2769   orc_union32 *ORC_RESTRICT ptr0;
2770   const orc_int8 *ORC_RESTRICT ptr4;
2771   const orc_int8 *ORC_RESTRICT ptr5;
2772   const orc_int8 *ORC_RESTRICT ptr6;
2773   orc_int8 var34;
2774   orc_int8 var35;
2775   orc_int8 var36;
2776   orc_int8 var37;
2777   orc_union32 var38;
2778   orc_union16 var39;
2779   orc_union16 var40;
2780
2781   ptr0 = (orc_union32 *) ex->arrays[0];
2782   ptr4 = (orc_int8 *) ex->arrays[4];
2783   ptr5 = (orc_int8 *) ex->arrays[5];
2784   ptr6 = (orc_int8 *) ex->arrays[6];
2785
2786   /* 3: loadpb */
2787   var36 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
2788
2789   for (i = 0; i < n; i++) {
2790     /* 0: loadb */
2791     var34 = ptr5[i];
2792     /* 1: loadb */
2793     var35 = ptr6[i];
2794     /* 2: mergebw */
2795     {
2796       orc_union16 _dest;
2797       _dest.x2[0] = var34;
2798       _dest.x2[1] = var35;
2799       var39.i = _dest.i;
2800     }
2801     /* 4: loadb */
2802     var37 = ptr4[i];
2803     /* 5: mergebw */
2804     {
2805       orc_union16 _dest;
2806       _dest.x2[0] = var36;
2807       _dest.x2[1] = var37;
2808       var40.i = _dest.i;
2809     }
2810     /* 6: mergewl */
2811     {
2812       orc_union32 _dest;
2813       _dest.x2[0] = var40.i;
2814       _dest.x2[1] = var39.i;
2815       var38.i = _dest.i;
2816     }
2817     /* 7: storel */
2818     ptr0[i] = var38;
2819   }
2820
2821 }
2822
2823 void
2824 cogorc_getline_Y444 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
2825     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n)
2826 {
2827   OrcExecutor _ex, *ex = &_ex;
2828   static volatile int p_inited = 0;
2829   static OrcProgram *p = 0;
2830   void (*func) (OrcExecutor *);
2831
2832   if (!p_inited) {
2833     orc_once_mutex_lock ();
2834     if (!p_inited) {
2835
2836       p = orc_program_new ();
2837       orc_program_set_name (p, "cogorc_getline_Y444");
2838       orc_program_set_backup_function (p, _backup_cogorc_getline_Y444);
2839       orc_program_add_destination (p, 4, "d1");
2840       orc_program_add_source (p, 1, "s1");
2841       orc_program_add_source (p, 1, "s2");
2842       orc_program_add_source (p, 1, "s3");
2843       orc_program_add_constant (p, 1, 0x000000ff, "c1");
2844       orc_program_add_temporary (p, 2, "t1");
2845       orc_program_add_temporary (p, 2, "t2");
2846
2847       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3,
2848           ORC_VAR_D1);
2849       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1,
2850           ORC_VAR_D1);
2851       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
2852           ORC_VAR_D1);
2853
2854       orc_program_compile (p);
2855     }
2856     p_inited = TRUE;
2857     orc_once_mutex_unlock ();
2858   }
2859   ex->program = p;
2860
2861   ex->n = n;
2862   ex->arrays[ORC_VAR_D1] = d1;
2863   ex->arrays[ORC_VAR_S1] = (void *) s1;
2864   ex->arrays[ORC_VAR_S2] = (void *) s2;
2865   ex->arrays[ORC_VAR_S3] = (void *) s3;
2866
2867   func = p->code_exec;
2868   func (ex);
2869 }
2870 #endif
2871
2872
2873 /* cogorc_putline_Y444 */
2874 #ifdef DISABLE_ORC
2875 void
2876 cogorc_putline_Y444 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
2877     guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n)
2878 {
2879   int i;
2880   orc_int8 *ORC_RESTRICT ptr0;
2881   orc_int8 *ORC_RESTRICT ptr1;
2882   orc_int8 *ORC_RESTRICT ptr2;
2883   const orc_union32 *ORC_RESTRICT ptr4;
2884   orc_union32 var34;
2885   orc_int8 var35;
2886   orc_int8 var36;
2887   orc_int8 var37;
2888   orc_union16 var38;
2889   orc_union16 var39;
2890
2891   ptr0 = (orc_int8 *) d1;
2892   ptr1 = (orc_int8 *) d2;
2893   ptr2 = (orc_int8 *) d3;
2894   ptr4 = (orc_union32 *) s1;
2895
2896
2897   for (i = 0; i < n; i++) {
2898     /* 0: loadl */
2899     var34 = ptr4[i];
2900     /* 1: splitlw */
2901     {
2902       orc_union32 _src;
2903       _src.i = var34.i;
2904       var38.i = _src.x2[1];
2905       var39.i = _src.x2[0];
2906     }
2907     /* 2: splitwb */
2908     {
2909       orc_union16 _src;
2910       _src.i = var38.i;
2911       var35 = _src.x2[1];
2912       var36 = _src.x2[0];
2913     }
2914     /* 3: storeb */
2915     ptr2[i] = var35;
2916     /* 4: storeb */
2917     ptr1[i] = var36;
2918     /* 5: select1wb */
2919     {
2920       orc_union16 _src;
2921       _src.i = var39.i;
2922       var37 = _src.x2[1];
2923     }
2924     /* 6: storeb */
2925     ptr0[i] = var37;
2926   }
2927
2928 }
2929
2930 #else
2931 static void
2932 _backup_cogorc_putline_Y444 (OrcExecutor * ORC_RESTRICT ex)
2933 {
2934   int i;
2935   int n = ex->n;
2936   orc_int8 *ORC_RESTRICT ptr0;
2937   orc_int8 *ORC_RESTRICT ptr1;
2938   orc_int8 *ORC_RESTRICT ptr2;
2939   const orc_union32 *ORC_RESTRICT ptr4;
2940   orc_union32 var34;
2941   orc_int8 var35;
2942   orc_int8 var36;
2943   orc_int8 var37;
2944   orc_union16 var38;
2945   orc_union16 var39;
2946
2947   ptr0 = (orc_int8 *) ex->arrays[0];
2948   ptr1 = (orc_int8 *) ex->arrays[1];
2949   ptr2 = (orc_int8 *) ex->arrays[2];
2950   ptr4 = (orc_union32 *) ex->arrays[4];
2951
2952
2953   for (i = 0; i < n; i++) {
2954     /* 0: loadl */
2955     var34 = ptr4[i];
2956     /* 1: splitlw */
2957     {
2958       orc_union32 _src;
2959       _src.i = var34.i;
2960       var38.i = _src.x2[1];
2961       var39.i = _src.x2[0];
2962     }
2963     /* 2: splitwb */
2964     {
2965       orc_union16 _src;
2966       _src.i = var38.i;
2967       var35 = _src.x2[1];
2968       var36 = _src.x2[0];
2969     }
2970     /* 3: storeb */
2971     ptr2[i] = var35;
2972     /* 4: storeb */
2973     ptr1[i] = var36;
2974     /* 5: select1wb */
2975     {
2976       orc_union16 _src;
2977       _src.i = var39.i;
2978       var37 = _src.x2[1];
2979     }
2980     /* 6: storeb */
2981     ptr0[i] = var37;
2982   }
2983
2984 }
2985
2986 void
2987 cogorc_putline_Y444 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
2988     guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n)
2989 {
2990   OrcExecutor _ex, *ex = &_ex;
2991   static volatile int p_inited = 0;
2992   static OrcProgram *p = 0;
2993   void (*func) (OrcExecutor *);
2994
2995   if (!p_inited) {
2996     orc_once_mutex_lock ();
2997     if (!p_inited) {
2998
2999       p = orc_program_new ();
3000       orc_program_set_name (p, "cogorc_putline_Y444");
3001       orc_program_set_backup_function (p, _backup_cogorc_putline_Y444);
3002       orc_program_add_destination (p, 1, "d1");
3003       orc_program_add_destination (p, 1, "d2");
3004       orc_program_add_destination (p, 1, "d3");
3005       orc_program_add_source (p, 4, "s1");
3006       orc_program_add_temporary (p, 2, "t1");
3007       orc_program_add_temporary (p, 2, "t2");
3008
3009       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
3010           ORC_VAR_D1);
3011       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T2,
3012           ORC_VAR_D1);
3013       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1,
3014           ORC_VAR_D1, ORC_VAR_D1);
3015
3016       orc_program_compile (p);
3017     }
3018     p_inited = TRUE;
3019     orc_once_mutex_unlock ();
3020   }
3021   ex->program = p;
3022
3023   ex->n = n;
3024   ex->arrays[ORC_VAR_D1] = d1;
3025   ex->arrays[ORC_VAR_D2] = d2;
3026   ex->arrays[ORC_VAR_D3] = d3;
3027   ex->arrays[ORC_VAR_S1] = (void *) s1;
3028
3029   func = p->code_exec;
3030   func (ex);
3031 }
3032 #endif
3033
3034
3035 /* cogorc_getline_Y800 */
3036 #ifdef DISABLE_ORC
3037 void
3038 cogorc_getline_Y800 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
3039     int n)
3040 {
3041   int i;
3042   orc_union32 *ORC_RESTRICT ptr0;
3043   const orc_int8 *ORC_RESTRICT ptr4;
3044   orc_int8 var33;
3045   orc_int8 var34;
3046   orc_union16 var35;
3047   orc_union32 var36;
3048   orc_union16 var37;
3049
3050   ptr0 = (orc_union32 *) d1;
3051   ptr4 = (orc_int8 *) s1;
3052
3053   /* 0: loadpb */
3054   var33 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
3055   /* 3: loadpw */
3056   var35.i = (int) 0x00008080;   /* 32896 or 1.62528e-319f */
3057
3058   for (i = 0; i < n; i++) {
3059     /* 1: loadb */
3060     var34 = ptr4[i];
3061     /* 2: mergebw */
3062     {
3063       orc_union16 _dest;
3064       _dest.x2[0] = var33;
3065       _dest.x2[1] = var34;
3066       var37.i = _dest.i;
3067     }
3068     /* 4: mergewl */
3069     {
3070       orc_union32 _dest;
3071       _dest.x2[0] = var37.i;
3072       _dest.x2[1] = var35.i;
3073       var36.i = _dest.i;
3074     }
3075     /* 5: storel */
3076     ptr0[i] = var36;
3077   }
3078
3079 }
3080
3081 #else
3082 static void
3083 _backup_cogorc_getline_Y800 (OrcExecutor * ORC_RESTRICT ex)
3084 {
3085   int i;
3086   int n = ex->n;
3087   orc_union32 *ORC_RESTRICT ptr0;
3088   const orc_int8 *ORC_RESTRICT ptr4;
3089   orc_int8 var33;
3090   orc_int8 var34;
3091   orc_union16 var35;
3092   orc_union32 var36;
3093   orc_union16 var37;
3094
3095   ptr0 = (orc_union32 *) ex->arrays[0];
3096   ptr4 = (orc_int8 *) ex->arrays[4];
3097
3098   /* 0: loadpb */
3099   var33 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
3100   /* 3: loadpw */
3101   var35.i = (int) 0x00008080;   /* 32896 or 1.62528e-319f */
3102
3103   for (i = 0; i < n; i++) {
3104     /* 1: loadb */
3105     var34 = ptr4[i];
3106     /* 2: mergebw */
3107     {
3108       orc_union16 _dest;
3109       _dest.x2[0] = var33;
3110       _dest.x2[1] = var34;
3111       var37.i = _dest.i;
3112     }
3113     /* 4: mergewl */
3114     {
3115       orc_union32 _dest;
3116       _dest.x2[0] = var37.i;
3117       _dest.x2[1] = var35.i;
3118       var36.i = _dest.i;
3119     }
3120     /* 5: storel */
3121     ptr0[i] = var36;
3122   }
3123
3124 }
3125
3126 void
3127 cogorc_getline_Y800 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
3128     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, "cogorc_getline_Y800");
3141       orc_program_set_backup_function (p, _backup_cogorc_getline_Y800);
3142       orc_program_add_destination (p, 4, "d1");
3143       orc_program_add_source (p, 1, "s1");
3144       orc_program_add_constant (p, 1, 0x000000ff, "c1");
3145       orc_program_add_constant (p, 2, 0x00008080, "c2");
3146       orc_program_add_temporary (p, 2, "t1");
3147
3148       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_S1,
3149           ORC_VAR_D1);
3150       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C2,
3151           ORC_VAR_D1);
3152
3153       orc_program_compile (p);
3154     }
3155     p_inited = TRUE;
3156     orc_once_mutex_unlock ();
3157   }
3158   ex->program = p;
3159
3160   ex->n = n;
3161   ex->arrays[ORC_VAR_D1] = d1;
3162   ex->arrays[ORC_VAR_S1] = (void *) s1;
3163
3164   func = p->code_exec;
3165   func (ex);
3166 }
3167 #endif
3168
3169
3170 /* cogorc_putline_Y800 */
3171 #ifdef DISABLE_ORC
3172 void
3173 cogorc_putline_Y800 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
3174     int n)
3175 {
3176   int i;
3177   orc_int8 *ORC_RESTRICT ptr0;
3178   const orc_union32 *ORC_RESTRICT ptr4;
3179   orc_union32 var33;
3180   orc_int8 var34;
3181   orc_union16 var35;
3182
3183   ptr0 = (orc_int8 *) d1;
3184   ptr4 = (orc_union32 *) s1;
3185
3186
3187   for (i = 0; i < n; i++) {
3188     /* 0: loadl */
3189     var33 = ptr4[i];
3190     /* 1: select0lw */
3191     {
3192       orc_union32 _src;
3193       _src.i = var33.i;
3194       var35.i = _src.x2[0];
3195     }
3196     /* 2: select1wb */
3197     {
3198       orc_union16 _src;
3199       _src.i = var35.i;
3200       var34 = _src.x2[1];
3201     }
3202     /* 3: storeb */
3203     ptr0[i] = var34;
3204   }
3205
3206 }
3207
3208 #else
3209 static void
3210 _backup_cogorc_putline_Y800 (OrcExecutor * ORC_RESTRICT ex)
3211 {
3212   int i;
3213   int n = ex->n;
3214   orc_int8 *ORC_RESTRICT ptr0;
3215   const orc_union32 *ORC_RESTRICT ptr4;
3216   orc_union32 var33;
3217   orc_int8 var34;
3218   orc_union16 var35;
3219
3220   ptr0 = (orc_int8 *) ex->arrays[0];
3221   ptr4 = (orc_union32 *) ex->arrays[4];
3222
3223
3224   for (i = 0; i < n; i++) {
3225     /* 0: loadl */
3226     var33 = ptr4[i];
3227     /* 1: select0lw */
3228     {
3229       orc_union32 _src;
3230       _src.i = var33.i;
3231       var35.i = _src.x2[0];
3232     }
3233     /* 2: select1wb */
3234     {
3235       orc_union16 _src;
3236       _src.i = var35.i;
3237       var34 = _src.x2[1];
3238     }
3239     /* 3: storeb */
3240     ptr0[i] = var34;
3241   }
3242
3243 }
3244
3245 void
3246 cogorc_putline_Y800 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
3247     int n)
3248 {
3249   OrcExecutor _ex, *ex = &_ex;
3250   static volatile int p_inited = 0;
3251   static OrcProgram *p = 0;
3252   void (*func) (OrcExecutor *);
3253
3254   if (!p_inited) {
3255     orc_once_mutex_lock ();
3256     if (!p_inited) {
3257
3258       p = orc_program_new ();
3259       orc_program_set_name (p, "cogorc_putline_Y800");
3260       orc_program_set_backup_function (p, _backup_cogorc_putline_Y800);
3261       orc_program_add_destination (p, 1, "d1");
3262       orc_program_add_source (p, 4, "s1");
3263       orc_program_add_temporary (p, 2, "t1");
3264
3265       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_S1,
3266           ORC_VAR_D1, ORC_VAR_D1);
3267       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1,
3268           ORC_VAR_D1, ORC_VAR_D1);
3269
3270       orc_program_compile (p);
3271     }
3272     p_inited = TRUE;
3273     orc_once_mutex_unlock ();
3274   }
3275   ex->program = p;
3276
3277   ex->n = n;
3278   ex->arrays[ORC_VAR_D1] = d1;
3279   ex->arrays[ORC_VAR_S1] = (void *) s1;
3280
3281   func = p->code_exec;
3282   func (ex);
3283 }
3284 #endif
3285
3286
3287 /* cogorc_putline_Y16 */
3288 #ifdef DISABLE_ORC
3289 void
3290 cogorc_putline_Y16 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
3291     int n)
3292 {
3293   int i;
3294   orc_union16 *ORC_RESTRICT ptr0;
3295   const orc_union32 *ORC_RESTRICT ptr4;
3296   orc_union32 var34;
3297   orc_union16 var35;
3298   orc_union16 var36;
3299   orc_int8 var37;
3300   orc_union16 var38;
3301
3302   ptr0 = (orc_union16 *) d1;
3303   ptr4 = (orc_union32 *) s1;
3304
3305
3306   for (i = 0; i < n; i++) {
3307     /* 0: loadl */
3308     var34 = ptr4[i];
3309     /* 1: select0lw */
3310     {
3311       orc_union32 _src;
3312       _src.i = var34.i;
3313       var36.i = _src.x2[0];
3314     }
3315     /* 2: select1wb */
3316     {
3317       orc_union16 _src;
3318       _src.i = var36.i;
3319       var37 = _src.x2[1];
3320     }
3321     /* 3: convubw */
3322     var38.i = (orc_uint8) var37;
3323     /* 4: shlw */
3324     var35.i = var38.i << 8;
3325     /* 5: storew */
3326     ptr0[i] = var35;
3327   }
3328
3329 }
3330
3331 #else
3332 static void
3333 _backup_cogorc_putline_Y16 (OrcExecutor * ORC_RESTRICT ex)
3334 {
3335   int i;
3336   int n = ex->n;
3337   orc_union16 *ORC_RESTRICT ptr0;
3338   const orc_union32 *ORC_RESTRICT ptr4;
3339   orc_union32 var34;
3340   orc_union16 var35;
3341   orc_union16 var36;
3342   orc_int8 var37;
3343   orc_union16 var38;
3344
3345   ptr0 = (orc_union16 *) ex->arrays[0];
3346   ptr4 = (orc_union32 *) ex->arrays[4];
3347
3348
3349   for (i = 0; i < n; i++) {
3350     /* 0: loadl */
3351     var34 = ptr4[i];
3352     /* 1: select0lw */
3353     {
3354       orc_union32 _src;
3355       _src.i = var34.i;
3356       var36.i = _src.x2[0];
3357     }
3358     /* 2: select1wb */
3359     {
3360       orc_union16 _src;
3361       _src.i = var36.i;
3362       var37 = _src.x2[1];
3363     }
3364     /* 3: convubw */
3365     var38.i = (orc_uint8) var37;
3366     /* 4: shlw */
3367     var35.i = var38.i << 8;
3368     /* 5: storew */
3369     ptr0[i] = var35;
3370   }
3371
3372 }
3373
3374 void
3375 cogorc_putline_Y16 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
3376     int n)
3377 {
3378   OrcExecutor _ex, *ex = &_ex;
3379   static volatile int p_inited = 0;
3380   static OrcProgram *p = 0;
3381   void (*func) (OrcExecutor *);
3382
3383   if (!p_inited) {
3384     orc_once_mutex_lock ();
3385     if (!p_inited) {
3386
3387       p = orc_program_new ();
3388       orc_program_set_name (p, "cogorc_putline_Y16");
3389       orc_program_set_backup_function (p, _backup_cogorc_putline_Y16);
3390       orc_program_add_destination (p, 2, "d1");
3391       orc_program_add_source (p, 4, "s1");
3392       orc_program_add_constant (p, 4, 0x00000008, "c1");
3393       orc_program_add_temporary (p, 2, "t1");
3394       orc_program_add_temporary (p, 1, "t2");
3395
3396       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_S1,
3397           ORC_VAR_D1, ORC_VAR_D1);
3398       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T2, ORC_VAR_T1,
3399           ORC_VAR_D1, ORC_VAR_D1);
3400       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1,
3401           ORC_VAR_D1);
3402       orc_program_append_2 (p, "shlw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1,
3403           ORC_VAR_D1);
3404
3405       orc_program_compile (p);
3406     }
3407     p_inited = TRUE;
3408     orc_once_mutex_unlock ();
3409   }
3410   ex->program = p;
3411
3412   ex->n = n;
3413   ex->arrays[ORC_VAR_D1] = d1;
3414   ex->arrays[ORC_VAR_S1] = (void *) s1;
3415
3416   func = p->code_exec;
3417   func (ex);
3418 }
3419 #endif
3420
3421
3422 /* cogorc_getline_Y16 */
3423 #ifdef DISABLE_ORC
3424 void
3425 cogorc_getline_Y16 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
3426     int n)
3427 {
3428   int i;
3429   orc_union32 *ORC_RESTRICT ptr0;
3430   const orc_union16 *ORC_RESTRICT ptr4;
3431   orc_union16 var34;
3432   orc_int8 var35;
3433   orc_union16 var36;
3434   orc_union32 var37;
3435   orc_int8 var38;
3436   orc_union16 var39;
3437
3438   ptr0 = (orc_union32 *) d1;
3439   ptr4 = (orc_union16 *) s1;
3440
3441   /* 2: loadpb */
3442   var35 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
3443   /* 4: loadpw */
3444   var36.i = (int) 0x00008080;   /* 32896 or 1.62528e-319f */
3445
3446   for (i = 0; i < n; i++) {
3447     /* 0: loadw */
3448     var34 = ptr4[i];
3449     /* 1: convhwb */
3450     var38 = ((orc_uint16) var34.i) >> 8;
3451     /* 3: mergebw */
3452     {
3453       orc_union16 _dest;
3454       _dest.x2[0] = var35;
3455       _dest.x2[1] = var38;
3456       var39.i = _dest.i;
3457     }
3458     /* 5: mergewl */
3459     {
3460       orc_union32 _dest;
3461       _dest.x2[0] = var39.i;
3462       _dest.x2[1] = var36.i;
3463       var37.i = _dest.i;
3464     }
3465     /* 6: storel */
3466     ptr0[i] = var37;
3467   }
3468
3469 }
3470
3471 #else
3472 static void
3473 _backup_cogorc_getline_Y16 (OrcExecutor * ORC_RESTRICT ex)
3474 {
3475   int i;
3476   int n = ex->n;
3477   orc_union32 *ORC_RESTRICT ptr0;
3478   const orc_union16 *ORC_RESTRICT ptr4;
3479   orc_union16 var34;
3480   orc_int8 var35;
3481   orc_union16 var36;
3482   orc_union32 var37;
3483   orc_int8 var38;
3484   orc_union16 var39;
3485
3486   ptr0 = (orc_union32 *) ex->arrays[0];
3487   ptr4 = (orc_union16 *) ex->arrays[4];
3488
3489   /* 2: loadpb */
3490   var35 = (int) 0x000000ff;     /* 255 or 1.25987e-321f */
3491   /* 4: loadpw */
3492   var36.i = (int) 0x00008080;   /* 32896 or 1.62528e-319f */
3493
3494   for (i = 0; i < n; i++) {
3495     /* 0: loadw */
3496     var34 = ptr4[i];
3497     /* 1: convhwb */
3498     var38 = ((orc_uint16) var34.i) >> 8;
3499     /* 3: mergebw */
3500     {
3501       orc_union16 _dest;
3502       _dest.x2[0] = var35;
3503       _dest.x2[1] = var38;
3504       var39.i = _dest.i;
3505     }
3506     /* 5: mergewl */
3507     {
3508       orc_union32 _dest;
3509       _dest.x2[0] = var39.i;
3510       _dest.x2[1] = var36.i;
3511       var37.i = _dest.i;
3512     }
3513     /* 6: storel */
3514     ptr0[i] = var37;
3515   }
3516
3517 }
3518
3519 void
3520 cogorc_getline_Y16 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
3521     int n)
3522 {
3523   OrcExecutor _ex, *ex = &_ex;
3524   static volatile int p_inited = 0;
3525   static OrcProgram *p = 0;
3526   void (*func) (OrcExecutor *);
3527
3528   if (!p_inited) {
3529     orc_once_mutex_lock ();
3530     if (!p_inited) {
3531
3532       p = orc_program_new ();
3533       orc_program_set_name (p, "cogorc_getline_Y16");
3534       orc_program_set_backup_function (p, _backup_cogorc_getline_Y16);
3535       orc_program_add_destination (p, 4, "d1");
3536       orc_program_add_source (p, 2, "s1");
3537       orc_program_add_constant (p, 1, 0x000000ff, "c1");
3538       orc_program_add_constant (p, 2, 0x00008080, "c2");
3539       orc_program_add_temporary (p, 2, "t1");
3540       orc_program_add_temporary (p, 1, "t2");
3541
3542       orc_program_append_2 (p, "convhwb", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1,
3543           ORC_VAR_D1);
3544       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_T2,
3545           ORC_VAR_D1);
3546       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C2,
3547           ORC_VAR_D1);
3548
3549       orc_program_compile (p);
3550     }
3551     p_inited = TRUE;
3552     orc_once_mutex_unlock ();
3553   }
3554   ex->program = p;
3555
3556   ex->n = n;
3557   ex->arrays[ORC_VAR_D1] = d1;
3558   ex->arrays[ORC_VAR_S1] = (void *) s1;
3559
3560   func = p->code_exec;
3561   func (ex);
3562 }
3563 #endif
3564
3565
3566 /* cogorc_getline_BGRA */
3567 #ifdef DISABLE_ORC
3568 void
3569 cogorc_getline_BGRA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
3570     int n)
3571 {
3572   int i;
3573   orc_union32 *ORC_RESTRICT ptr0;
3574   const orc_union32 *ORC_RESTRICT ptr4;
3575   orc_union32 var32;
3576   orc_union32 var33;
3577
3578   ptr0 = (orc_union32 *) d1;
3579   ptr4 = (orc_union32 *) s1;
3580
3581
3582   for (i = 0; i < n; i++) {
3583     /* 0: loadl */
3584     var32 = ptr4[i];
3585     /* 1: swapl */
3586     var33.i = ORC_SWAP_L (var32.i);
3587     /* 2: storel */
3588     ptr0[i] = var33;
3589   }
3590
3591 }
3592
3593 #else
3594 static void
3595 _backup_cogorc_getline_BGRA (OrcExecutor * ORC_RESTRICT ex)
3596 {
3597   int i;
3598   int n = ex->n;
3599   orc_union32 *ORC_RESTRICT ptr0;
3600   const orc_union32 *ORC_RESTRICT ptr4;
3601   orc_union32 var32;
3602   orc_union32 var33;
3603
3604   ptr0 = (orc_union32 *) ex->arrays[0];
3605   ptr4 = (orc_union32 *) ex->arrays[4];
3606
3607
3608   for (i = 0; i < n; i++) {
3609     /* 0: loadl */
3610     var32 = ptr4[i];
3611     /* 1: swapl */
3612     var33.i = ORC_SWAP_L (var32.i);
3613     /* 2: storel */
3614     ptr0[i] = var33;
3615   }
3616
3617 }
3618
3619 void
3620 cogorc_getline_BGRA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
3621     int n)
3622 {
3623   OrcExecutor _ex, *ex = &_ex;
3624   static volatile int p_inited = 0;
3625   static OrcProgram *p = 0;
3626   void (*func) (OrcExecutor *);
3627
3628   if (!p_inited) {
3629     orc_once_mutex_lock ();
3630     if (!p_inited) {
3631
3632       p = orc_program_new ();
3633       orc_program_set_name (p, "cogorc_getline_BGRA");
3634       orc_program_set_backup_function (p, _backup_cogorc_getline_BGRA);
3635       orc_program_add_destination (p, 4, "d1");
3636       orc_program_add_source (p, 4, "s1");
3637
3638       orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1,
3639           ORC_VAR_D1);
3640
3641       orc_program_compile (p);
3642     }
3643     p_inited = TRUE;
3644     orc_once_mutex_unlock ();
3645   }
3646   ex->program = p;
3647
3648   ex->n = n;
3649   ex->arrays[ORC_VAR_D1] = d1;
3650   ex->arrays[ORC_VAR_S1] = (void *) s1;
3651
3652   func = p->code_exec;
3653   func (ex);
3654 }
3655 #endif
3656
3657
3658 /* cogorc_putline_BGRA */
3659 #ifdef DISABLE_ORC
3660 void
3661 cogorc_putline_BGRA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
3662     int n)
3663 {
3664   int i;
3665   orc_union32 *ORC_RESTRICT ptr0;
3666   const orc_union32 *ORC_RESTRICT ptr4;
3667   orc_union32 var32;
3668   orc_union32 var33;
3669
3670   ptr0 = (orc_union32 *) d1;
3671   ptr4 = (orc_union32 *) s1;
3672
3673
3674   for (i = 0; i < n; i++) {
3675     /* 0: loadl */
3676     var32 = ptr4[i];
3677     /* 1: swapl */
3678     var33.i = ORC_SWAP_L (var32.i);
3679     /* 2: storel */
3680     ptr0[i] = var33;
3681   }
3682
3683 }
3684
3685 #else
3686 static void
3687 _backup_cogorc_putline_BGRA (OrcExecutor * ORC_RESTRICT ex)
3688 {
3689   int i;
3690   int n = ex->n;
3691   orc_union32 *ORC_RESTRICT ptr0;
3692   const orc_union32 *ORC_RESTRICT ptr4;
3693   orc_union32 var32;
3694   orc_union32 var33;
3695
3696   ptr0 = (orc_union32 *) ex->arrays[0];
3697   ptr4 = (orc_union32 *) ex->arrays[4];
3698
3699
3700   for (i = 0; i < n; i++) {
3701     /* 0: loadl */
3702     var32 = ptr4[i];
3703     /* 1: swapl */
3704     var33.i = ORC_SWAP_L (var32.i);
3705     /* 2: storel */
3706     ptr0[i] = var33;
3707   }
3708
3709 }
3710
3711 void
3712 cogorc_putline_BGRA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
3713     int n)
3714 {
3715   OrcExecutor _ex, *ex = &_ex;
3716   static volatile int p_inited = 0;
3717   static OrcProgram *p = 0;
3718   void (*func) (OrcExecutor *);
3719
3720   if (!p_inited) {
3721     orc_once_mutex_lock ();
3722     if (!p_inited) {
3723
3724       p = orc_program_new ();
3725       orc_program_set_name (p, "cogorc_putline_BGRA");
3726       orc_program_set_backup_function (p, _backup_cogorc_putline_BGRA);
3727       orc_program_add_destination (p, 4, "d1");
3728       orc_program_add_source (p, 4, "s1");
3729
3730       orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1,
3731           ORC_VAR_D1);
3732
3733       orc_program_compile (p);
3734     }
3735     p_inited = TRUE;
3736     orc_once_mutex_unlock ();
3737   }
3738   ex->program = p;
3739
3740   ex->n = n;
3741   ex->arrays[ORC_VAR_D1] = d1;
3742   ex->arrays[ORC_VAR_S1] = (void *) s1;
3743
3744   func = p->code_exec;
3745   func (ex);
3746 }
3747 #endif
3748
3749
3750 /* cogorc_putline_RGBA */
3751 #ifdef DISABLE_ORC
3752 void
3753 cogorc_putline_RGBA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
3754     int n)
3755 {
3756   int i;
3757   orc_union32 *ORC_RESTRICT ptr0;
3758   const orc_union32 *ORC_RESTRICT ptr4;
3759   orc_union32 var40;
3760   orc_union32 var41;
3761   orc_union16 var42;
3762   orc_union16 var43;
3763   orc_int8 var44;
3764   orc_int8 var45;
3765   orc_int8 var46;
3766   orc_int8 var47;
3767   orc_union16 var48;
3768   orc_union16 var49;
3769
3770   ptr0 = (orc_union32 *) d1;
3771   ptr4 = (orc_union32 *) s1;
3772
3773
3774   for (i = 0; i < n; i++) {
3775     /* 0: loadl */
3776     var40 = ptr4[i];
3777     /* 1: splitlw */
3778     {
3779       orc_union32 _src;
3780       _src.i = var40.i;
3781       var42.i = _src.x2[1];
3782       var43.i = _src.x2[0];
3783     }
3784     /* 2: splitwb */
3785     {
3786       orc_union16 _src;
3787       _src.i = var42.i;
3788       var44 = _src.x2[1];
3789       var45 = _src.x2[0];
3790     }
3791     /* 3: splitwb */
3792     {
3793       orc_union16 _src;
3794       _src.i = var43.i;
3795       var46 = _src.x2[1];
3796       var47 = _src.x2[0];
3797     }
3798     /* 4: mergebw */
3799     {
3800       orc_union16 _dest;
3801       _dest.x2[0] = var44;
3802       _dest.x2[1] = var47;
3803       var48.i = _dest.i;
3804     }
3805     /* 5: mergebw */
3806     {
3807       orc_union16 _dest;
3808       _dest.x2[0] = var46;
3809       _dest.x2[1] = var45;
3810       var49.i = _dest.i;
3811     }
3812     /* 6: mergewl */
3813     {
3814       orc_union32 _dest;
3815       _dest.x2[0] = var49.i;
3816       _dest.x2[1] = var48.i;
3817       var41.i = _dest.i;
3818     }
3819     /* 7: storel */
3820     ptr0[i] = var41;
3821   }
3822
3823 }
3824
3825 #else
3826 static void
3827 _backup_cogorc_putline_RGBA (OrcExecutor * ORC_RESTRICT ex)
3828 {
3829   int i;
3830   int n = ex->n;
3831   orc_union32 *ORC_RESTRICT ptr0;
3832   const orc_union32 *ORC_RESTRICT ptr4;
3833   orc_union32 var40;
3834   orc_union32 var41;
3835   orc_union16 var42;
3836   orc_union16 var43;
3837   orc_int8 var44;
3838   orc_int8 var45;
3839   orc_int8 var46;
3840   orc_int8 var47;
3841   orc_union16 var48;
3842   orc_union16 var49;
3843
3844   ptr0 = (orc_union32 *) ex->arrays[0];
3845   ptr4 = (orc_union32 *) ex->arrays[4];
3846
3847
3848   for (i = 0; i < n; i++) {
3849     /* 0: loadl */
3850     var40 = ptr4[i];
3851     /* 1: splitlw */
3852     {
3853       orc_union32 _src;
3854       _src.i = var40.i;
3855       var42.i = _src.x2[1];
3856       var43.i = _src.x2[0];
3857     }
3858     /* 2: splitwb */
3859     {
3860       orc_union16 _src;
3861       _src.i = var42.i;
3862       var44 = _src.x2[1];
3863       var45 = _src.x2[0];
3864     }
3865     /* 3: splitwb */
3866     {
3867       orc_union16 _src;
3868       _src.i = var43.i;
3869       var46 = _src.x2[1];
3870       var47 = _src.x2[0];
3871     }
3872     /* 4: mergebw */
3873     {
3874       orc_union16 _dest;
3875       _dest.x2[0] = var44;
3876       _dest.x2[1] = var47;
3877       var48.i = _dest.i;
3878     }
3879     /* 5: mergebw */
3880     {
3881       orc_union16 _dest;
3882       _dest.x2[0] = var46;
3883       _dest.x2[1] = var45;
3884       var49.i = _dest.i;
3885     }
3886     /* 6: mergewl */
3887     {
3888       orc_union32 _dest;
3889       _dest.x2[0] = var49.i;
3890       _dest.x2[1] = var48.i;
3891       var41.i = _dest.i;
3892     }
3893     /* 7: storel */
3894     ptr0[i] = var41;
3895   }
3896
3897 }
3898
3899 void
3900 cogorc_putline_RGBA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
3901     int n)
3902 {
3903   OrcExecutor _ex, *ex = &_ex;
3904   static volatile int p_inited = 0;
3905   static OrcProgram *p = 0;
3906   void (*func) (OrcExecutor *);
3907
3908   if (!p_inited) {
3909     orc_once_mutex_lock ();
3910     if (!p_inited) {
3911
3912       p = orc_program_new ();
3913       orc_program_set_name (p, "cogorc_putline_RGBA");
3914       orc_program_set_backup_function (p, _backup_cogorc_putline_RGBA);
3915       orc_program_add_destination (p, 4, "d1");
3916       orc_program_add_source (p, 4, "s1");
3917       orc_program_add_temporary (p, 1, "t1");
3918       orc_program_add_temporary (p, 1, "t2");
3919       orc_program_add_temporary (p, 1, "t3");
3920       orc_program_add_temporary (p, 1, "t4");
3921       orc_program_add_temporary (p, 2, "t5");
3922       orc_program_add_temporary (p, 2, "t6");
3923       orc_program_add_temporary (p, 2, "t7");
3924       orc_program_add_temporary (p, 2, "t8");
3925
3926       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_S1,
3927           ORC_VAR_D1);
3928       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T8,
3929           ORC_VAR_D1);
3930       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T7,
3931           ORC_VAR_D1);
3932       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T6, ORC_VAR_T4, ORC_VAR_T1,
3933           ORC_VAR_D1);
3934       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_T3,
3935           ORC_VAR_D1);
3936       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_T6,
3937           ORC_VAR_D1);
3938
3939       orc_program_compile (p);
3940     }
3941     p_inited = TRUE;
3942     orc_once_mutex_unlock ();
3943   }
3944   ex->program = p;
3945
3946   ex->n = n;
3947   ex->arrays[ORC_VAR_D1] = d1;
3948   ex->arrays[ORC_VAR_S1] = (void *) s1;
3949
3950   func = p->code_exec;
3951   func (ex);
3952 }
3953 #endif
3954
3955
3956 /* cogorc_getline_RGBA */
3957 #ifdef DISABLE_ORC
3958 void
3959 cogorc_getline_RGBA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
3960     int n)
3961 {
3962   int i;
3963   orc_union32 *ORC_RESTRICT ptr0;
3964   const orc_union32 *ORC_RESTRICT ptr4;
3965   orc_union32 var40;
3966   orc_union32 var41;
3967   orc_union16 var42;
3968   orc_union16 var43;
3969   orc_int8 var44;
3970   orc_int8 var45;
3971   orc_int8 var46;
3972   orc_int8 var47;
3973   orc_union16 var48;
3974   orc_union16 var49;
3975
3976   ptr0 = (orc_union32 *) d1;
3977   ptr4 = (orc_union32 *) s1;
3978
3979
3980   for (i = 0; i < n; i++) {
3981     /* 0: loadl */
3982     var40 = ptr4[i];
3983     /* 1: splitlw */
3984     {
3985       orc_union32 _src;
3986       _src.i = var40.i;
3987       var42.i = _src.x2[1];
3988       var43.i = _src.x2[0];
3989     }
3990     /* 2: splitwb */
3991     {
3992       orc_union16 _src;
3993       _src.i = var43.i;
3994       var44 = _src.x2[1];
3995       var45 = _src.x2[0];
3996     }
3997     /* 3: splitwb */
3998     {
3999       orc_union16 _src;
4000       _src.i = var42.i;
4001       var46 = _src.x2[1];
4002       var47 = _src.x2[0];
4003     }
4004     /* 4: mergebw */
4005     {
4006       orc_union16 _dest;
4007       _dest.x2[0] = var46;
4008       _dest.x2[1] = var45;
4009       var48.i = _dest.i;
4010     }
4011     /* 5: mergebw */
4012     {
4013       orc_union16 _dest;
4014       _dest.x2[0] = var44;
4015       _dest.x2[1] = var47;
4016       var49.i = _dest.i;
4017     }
4018     /* 6: mergewl */
4019     {
4020       orc_union32 _dest;
4021       _dest.x2[0] = var48.i;
4022       _dest.x2[1] = var49.i;
4023       var41.i = _dest.i;
4024     }
4025     /* 7: storel */
4026     ptr0[i] = var41;
4027   }
4028
4029 }
4030
4031 #else
4032 static void
4033 _backup_cogorc_getline_RGBA (OrcExecutor * ORC_RESTRICT ex)
4034 {
4035   int i;
4036   int n = ex->n;
4037   orc_union32 *ORC_RESTRICT ptr0;
4038   const orc_union32 *ORC_RESTRICT ptr4;
4039   orc_union32 var40;
4040   orc_union32 var41;
4041   orc_union16 var42;
4042   orc_union16 var43;
4043   orc_int8 var44;
4044   orc_int8 var45;
4045   orc_int8 var46;
4046   orc_int8 var47;
4047   orc_union16 var48;
4048   orc_union16 var49;
4049
4050   ptr0 = (orc_union32 *) ex->arrays[0];
4051   ptr4 = (orc_union32 *) ex->arrays[4];
4052
4053
4054   for (i = 0; i < n; i++) {
4055     /* 0: loadl */
4056     var40 = ptr4[i];
4057     /* 1: splitlw */
4058     {
4059       orc_union32 _src;
4060       _src.i = var40.i;
4061       var42.i = _src.x2[1];
4062       var43.i = _src.x2[0];
4063     }
4064     /* 2: splitwb */
4065     {
4066       orc_union16 _src;
4067       _src.i = var43.i;
4068       var44 = _src.x2[1];
4069       var45 = _src.x2[0];
4070     }
4071     /* 3: splitwb */
4072     {
4073       orc_union16 _src;
4074       _src.i = var42.i;
4075       var46 = _src.x2[1];
4076       var47 = _src.x2[0];
4077     }
4078     /* 4: mergebw */
4079     {
4080       orc_union16 _dest;
4081       _dest.x2[0] = var46;
4082       _dest.x2[1] = var45;
4083       var48.i = _dest.i;
4084     }
4085     /* 5: mergebw */
4086     {
4087       orc_union16 _dest;
4088       _dest.x2[0] = var44;
4089       _dest.x2[1] = var47;
4090       var49.i = _dest.i;
4091     }
4092     /* 6: mergewl */
4093     {
4094       orc_union32 _dest;
4095       _dest.x2[0] = var48.i;
4096       _dest.x2[1] = var49.i;
4097       var41.i = _dest.i;
4098     }
4099     /* 7: storel */
4100     ptr0[i] = var41;
4101   }
4102
4103 }
4104
4105 void
4106 cogorc_getline_RGBA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
4107     int n)
4108 {
4109   OrcExecutor _ex, *ex = &_ex;
4110   static volatile int p_inited = 0;
4111   static OrcProgram *p = 0;
4112   void (*func) (OrcExecutor *);
4113
4114   if (!p_inited) {
4115     orc_once_mutex_lock ();
4116     if (!p_inited) {
4117
4118       p = orc_program_new ();
4119       orc_program_set_name (p, "cogorc_getline_RGBA");
4120       orc_program_set_backup_function (p, _backup_cogorc_getline_RGBA);
4121       orc_program_add_destination (p, 4, "d1");
4122       orc_program_add_source (p, 4, "s1");
4123       orc_program_add_temporary (p, 1, "t1");
4124       orc_program_add_temporary (p, 1, "t2");
4125       orc_program_add_temporary (p, 1, "t3");
4126       orc_program_add_temporary (p, 1, "t4");
4127       orc_program_add_temporary (p, 2, "t5");
4128       orc_program_add_temporary (p, 2, "t6");
4129       orc_program_add_temporary (p, 2, "t7");
4130       orc_program_add_temporary (p, 2, "t8");
4131
4132       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_S1,
4133           ORC_VAR_D1);
4134       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_T5,
4135           ORC_VAR_D1);
4136       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T1, ORC_VAR_T4, ORC_VAR_T6,
4137           ORC_VAR_D1);
4138       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T7, ORC_VAR_T1, ORC_VAR_T2,
4139           ORC_VAR_D1);
4140       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T8, ORC_VAR_T3, ORC_VAR_T4,
4141           ORC_VAR_D1);
4142       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T7, ORC_VAR_T8,
4143           ORC_VAR_D1);
4144
4145       orc_program_compile (p);
4146     }
4147     p_inited = TRUE;
4148     orc_once_mutex_unlock ();
4149   }
4150   ex->program = p;
4151
4152   ex->n = n;
4153   ex->arrays[ORC_VAR_D1] = d1;
4154   ex->arrays[ORC_VAR_S1] = (void *) s1;
4155
4156   func = p->code_exec;
4157   func (ex);
4158 }
4159 #endif
4160
4161
4162 /* cogorc_getline_ABGR */
4163 #ifdef DISABLE_ORC
4164 void
4165 cogorc_getline_ABGR (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
4166     int n)
4167 {
4168   int i;
4169   orc_union32 *ORC_RESTRICT ptr0;
4170   const orc_union32 *ORC_RESTRICT ptr4;
4171   orc_union32 var40;
4172   orc_union32 var41;
4173   orc_union16 var42;
4174   orc_union16 var43;
4175   orc_int8 var44;
4176   orc_int8 var45;
4177   orc_int8 var46;
4178   orc_int8 var47;
4179   orc_union16 var48;
4180   orc_union16 var49;
4181
4182   ptr0 = (orc_union32 *) d1;
4183   ptr4 = (orc_union32 *) s1;
4184
4185
4186   for (i = 0; i < n; i++) {
4187     /* 0: loadl */
4188     var40 = ptr4[i];
4189     /* 1: splitlw */
4190     {
4191       orc_union32 _src;
4192       _src.i = var40.i;
4193       var42.i = _src.x2[1];
4194       var43.i = _src.x2[0];
4195     }
4196     /* 2: splitwb */
4197     {
4198       orc_union16 _src;
4199       _src.i = var42.i;
4200       var44 = _src.x2[1];
4201       var45 = _src.x2[0];
4202     }
4203     /* 3: splitwb */
4204     {
4205       orc_union16 _src;
4206       _src.i = var43.i;
4207       var46 = _src.x2[1];
4208       var47 = _src.x2[0];
4209     }
4210     /* 4: mergebw */
4211     {
4212       orc_union16 _dest;
4213       _dest.x2[0] = var47;
4214       _dest.x2[1] = var44;
4215       var48.i = _dest.i;
4216     }
4217     /* 5: mergebw */
4218     {
4219       orc_union16 _dest;
4220       _dest.x2[0] = var45;
4221       _dest.x2[1] = var46;
4222       var49.i = _dest.i;
4223     }
4224     /* 6: mergewl */
4225     {
4226       orc_union32 _dest;
4227       _dest.x2[0] = var48.i;
4228       _dest.x2[1] = var49.i;
4229       var41.i = _dest.i;
4230     }
4231     /* 7: storel */
4232     ptr0[i] = var41;
4233   }
4234
4235 }
4236
4237 #else
4238 static void
4239 _backup_cogorc_getline_ABGR (OrcExecutor * ORC_RESTRICT ex)
4240 {
4241   int i;
4242   int n = ex->n;
4243   orc_union32 *ORC_RESTRICT ptr0;
4244   const orc_union32 *ORC_RESTRICT ptr4;
4245   orc_union32 var40;
4246   orc_union32 var41;
4247   orc_union16 var42;
4248   orc_union16 var43;
4249   orc_int8 var44;
4250   orc_int8 var45;
4251   orc_int8 var46;
4252   orc_int8 var47;
4253   orc_union16 var48;
4254   orc_union16 var49;
4255
4256   ptr0 = (orc_union32 *) ex->arrays[0];
4257   ptr4 = (orc_union32 *) ex->arrays[4];
4258
4259
4260   for (i = 0; i < n; i++) {
4261     /* 0: loadl */
4262     var40 = ptr4[i];
4263     /* 1: splitlw */
4264     {
4265       orc_union32 _src;
4266       _src.i = var40.i;
4267       var42.i = _src.x2[1];
4268       var43.i = _src.x2[0];
4269     }
4270     /* 2: splitwb */
4271     {
4272       orc_union16 _src;
4273       _src.i = var42.i;
4274       var44 = _src.x2[1];
4275       var45 = _src.x2[0];
4276     }
4277     /* 3: splitwb */
4278     {
4279       orc_union16 _src;
4280       _src.i = var43.i;
4281       var46 = _src.x2[1];
4282       var47 = _src.x2[0];
4283     }
4284     /* 4: mergebw */
4285     {
4286       orc_union16 _dest;
4287       _dest.x2[0] = var47;
4288       _dest.x2[1] = var44;
4289       var48.i = _dest.i;
4290     }
4291     /* 5: mergebw */
4292     {
4293       orc_union16 _dest;
4294       _dest.x2[0] = var45;
4295       _dest.x2[1] = var46;
4296       var49.i = _dest.i;
4297     }
4298     /* 6: mergewl */
4299     {
4300       orc_union32 _dest;
4301       _dest.x2[0] = var48.i;
4302       _dest.x2[1] = var49.i;
4303       var41.i = _dest.i;
4304     }
4305     /* 7: storel */
4306     ptr0[i] = var41;
4307   }
4308
4309 }
4310
4311 void
4312 cogorc_getline_ABGR (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
4313     int n)
4314 {
4315   OrcExecutor _ex, *ex = &_ex;
4316   static volatile int p_inited = 0;
4317   static OrcProgram *p = 0;
4318   void (*func) (OrcExecutor *);
4319
4320   if (!p_inited) {
4321     orc_once_mutex_lock ();
4322     if (!p_inited) {
4323
4324       p = orc_program_new ();
4325       orc_program_set_name (p, "cogorc_getline_ABGR");
4326       orc_program_set_backup_function (p, _backup_cogorc_getline_ABGR);
4327       orc_program_add_destination (p, 4, "d1");
4328       orc_program_add_source (p, 4, "s1");
4329       orc_program_add_temporary (p, 1, "t1");
4330       orc_program_add_temporary (p, 1, "t2");
4331       orc_program_add_temporary (p, 1, "t3");
4332       orc_program_add_temporary (p, 1, "t4");
4333       orc_program_add_temporary (p, 2, "t5");
4334       orc_program_add_temporary (p, 2, "t6");
4335       orc_program_add_temporary (p, 2, "t7");
4336       orc_program_add_temporary (p, 2, "t8");
4337
4338       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T5, ORC_VAR_T6, ORC_VAR_S1,
4339           ORC_VAR_D1);
4340       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T5,
4341           ORC_VAR_D1);
4342       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_T6,
4343           ORC_VAR_D1);
4344       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T7, ORC_VAR_T1, ORC_VAR_T2,
4345           ORC_VAR_D1);
4346       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T8, ORC_VAR_T3, ORC_VAR_T4,
4347           ORC_VAR_D1);
4348       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T7, ORC_VAR_T8,
4349           ORC_VAR_D1);
4350
4351       orc_program_compile (p);
4352     }
4353     p_inited = TRUE;
4354     orc_once_mutex_unlock ();
4355   }
4356   ex->program = p;
4357
4358   ex->n = n;
4359   ex->arrays[ORC_VAR_D1] = d1;
4360   ex->arrays[ORC_VAR_S1] = (void *) s1;
4361
4362   func = p->code_exec;
4363   func (ex);
4364 }
4365 #endif
4366
4367
4368 /* cogorc_putline_ABGR */
4369 #ifdef DISABLE_ORC
4370 void
4371 cogorc_putline_ABGR (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
4372     int n)
4373 {
4374   int i;
4375   orc_union32 *ORC_RESTRICT ptr0;
4376   const orc_union32 *ORC_RESTRICT ptr4;
4377   orc_union32 var40;
4378   orc_union32 var41;
4379   orc_union16 var42;
4380   orc_union16 var43;
4381   orc_int8 var44;
4382   orc_int8 var45;
4383   orc_int8 var46;
4384   orc_int8 var47;
4385   orc_union16 var48;
4386   orc_union16 var49;
4387
4388   ptr0 = (orc_union32 *) d1;
4389   ptr4 = (orc_union32 *) s1;
4390
4391
4392   for (i = 0; i < n; i++) {
4393     /* 0: loadl */
4394     var40 = ptr4[i];
4395     /* 1: splitlw */
4396     {
4397       orc_union32 _src;
4398       _src.i = var40.i;
4399       var42.i = _src.x2[1];
4400       var43.i = _src.x2[0];
4401     }
4402     /* 2: splitwb */
4403     {
4404       orc_union16 _src;
4405       _src.i = var42.i;
4406       var44 = _src.x2[1];
4407       var45 = _src.x2[0];
4408     }
4409     /* 3: splitwb */
4410     {
4411       orc_union16 _src;
4412       _src.i = var43.i;
4413       var46 = _src.x2[1];
4414       var47 = _src.x2[0];
4415     }
4416     /* 4: mergebw */
4417     {
4418       orc_union16 _dest;
4419       _dest.x2[0] = var47;
4420       _dest.x2[1] = var44;
4421       var48.i = _dest.i;
4422     }
4423     /* 5: mergebw */
4424     {
4425       orc_union16 _dest;
4426       _dest.x2[0] = var45;
4427       _dest.x2[1] = var46;
4428       var49.i = _dest.i;
4429     }
4430     /* 6: mergewl */
4431     {
4432       orc_union32 _dest;
4433       _dest.x2[0] = var48.i;
4434       _dest.x2[1] = var49.i;
4435       var41.i = _dest.i;
4436     }
4437     /* 7: storel */
4438     ptr0[i] = var41;
4439   }
4440
4441 }
4442
4443 #else
4444 static void
4445 _backup_cogorc_putline_ABGR (OrcExecutor * ORC_RESTRICT ex)
4446 {
4447   int i;
4448   int n = ex->n;
4449   orc_union32 *ORC_RESTRICT ptr0;
4450   const orc_union32 *ORC_RESTRICT ptr4;
4451   orc_union32 var40;
4452   orc_union32 var41;
4453   orc_union16 var42;
4454   orc_union16 var43;
4455   orc_int8 var44;
4456   orc_int8 var45;
4457   orc_int8 var46;
4458   orc_int8 var47;
4459   orc_union16 var48;
4460   orc_union16 var49;
4461
4462   ptr0 = (orc_union32 *) ex->arrays[0];
4463   ptr4 = (orc_union32 *) ex->arrays[4];
4464
4465
4466   for (i = 0; i < n; i++) {
4467     /* 0: loadl */
4468     var40 = ptr4[i];
4469     /* 1: splitlw */
4470     {
4471       orc_union32 _src;
4472       _src.i = var40.i;
4473       var42.i = _src.x2[1];
4474       var43.i = _src.x2[0];
4475     }
4476     /* 2: splitwb */
4477     {
4478       orc_union16 _src;
4479       _src.i = var42.i;
4480       var44 = _src.x2[1];
4481       var45 = _src.x2[0];
4482     }
4483     /* 3: splitwb */
4484     {
4485       orc_union16 _src;
4486       _src.i = var43.i;
4487       var46 = _src.x2[1];
4488       var47 = _src.x2[0];
4489     }
4490     /* 4: mergebw */
4491     {
4492       orc_union16 _dest;
4493       _dest.x2[0] = var47;
4494       _dest.x2[1] = var44;
4495       var48.i = _dest.i;
4496     }
4497     /* 5: mergebw */
4498     {
4499       orc_union16 _dest;
4500       _dest.x2[0] = var45;
4501       _dest.x2[1] = var46;
4502       var49.i = _dest.i;
4503     }
4504     /* 6: mergewl */
4505     {
4506       orc_union32 _dest;
4507       _dest.x2[0] = var48.i;
4508       _dest.x2[1] = var49.i;
4509       var41.i = _dest.i;
4510     }
4511     /* 7: storel */
4512     ptr0[i] = var41;
4513   }
4514
4515 }
4516
4517 void
4518 cogorc_putline_ABGR (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
4519     int n)
4520 {
4521   OrcExecutor _ex, *ex = &_ex;
4522   static volatile int p_inited = 0;
4523   static OrcProgram *p = 0;
4524   void (*func) (OrcExecutor *);
4525
4526   if (!p_inited) {
4527     orc_once_mutex_lock ();
4528     if (!p_inited) {
4529
4530       p = orc_program_new ();
4531       orc_program_set_name (p, "cogorc_putline_ABGR");
4532       orc_program_set_backup_function (p, _backup_cogorc_putline_ABGR);
4533       orc_program_add_destination (p, 4, "d1");
4534       orc_program_add_source (p, 4, "s1");
4535       orc_program_add_temporary (p, 1, "t1");
4536       orc_program_add_temporary (p, 1, "t2");
4537       orc_program_add_temporary (p, 1, "t3");
4538       orc_program_add_temporary (p, 1, "t4");
4539       orc_program_add_temporary (p, 2, "t5");
4540       orc_program_add_temporary (p, 2, "t6");
4541       orc_program_add_temporary (p, 2, "t7");
4542       orc_program_add_temporary (p, 2, "t8");
4543
4544       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_S1,
4545           ORC_VAR_D1);
4546       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T8,
4547           ORC_VAR_D1);
4548       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T7,
4549           ORC_VAR_D1);
4550       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_T4,
4551           ORC_VAR_D1);
4552       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_T2,
4553           ORC_VAR_D1);
4554       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T6, ORC_VAR_T5,
4555           ORC_VAR_D1);
4556
4557       orc_program_compile (p);
4558     }
4559     p_inited = TRUE;
4560     orc_once_mutex_unlock ();
4561   }
4562   ex->program = p;
4563
4564   ex->n = n;
4565   ex->arrays[ORC_VAR_D1] = d1;
4566   ex->arrays[ORC_VAR_S1] = (void *) s1;
4567
4568   func = p->code_exec;
4569   func (ex);
4570 }
4571 #endif
4572
4573
4574 /* cogorc_getline_NV12 */
4575 #ifdef DISABLE_ORC
4576 void
4577 cogorc_getline_NV12 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
4578     const guint8 * ORC_RESTRICT s2, int n)
4579 {
4580   int i;
4581   orc_union64 *ORC_RESTRICT ptr0;
4582   const orc_union16 *ORC_RESTRICT ptr4;
4583   const orc_union16 *ORC_RESTRICT ptr5;
4584   orc_union16 var34;
4585   orc_union16 var35;
4586   orc_union16 var36;
4587   orc_union16 var37;
4588   orc_union64 var38;
4589   orc_union32 var39;
4590   orc_union32 var40;
4591
4592   ptr0 = (orc_union64 *) d1;
4593   ptr4 = (orc_union16 *) s1;
4594   ptr5 = (orc_union16 *) s2;
4595
4596   /* 3: loadpb */
4597   var36.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
4598   var36.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
4599
4600   for (i = 0; i < n; i++) {
4601     /* 0: loadw */
4602     var34 = ptr5[i];
4603     /* 1: loadw */
4604     var35 = ptr5[i];
4605     /* 2: mergewl */
4606     {
4607       orc_union32 _dest;
4608       _dest.x2[0] = var34.i;
4609       _dest.x2[1] = var35.i;
4610       var39.i = _dest.i;
4611     }
4612     /* 4: loadw */
4613     var37 = ptr4[i];
4614     /* 5: mergebw */
4615     {
4616       orc_union16 _dest;
4617       _dest.x2[0] = var36.x2[0];
4618       _dest.x2[1] = var37.x2[0];
4619       var40.x2[0] = _dest.i;
4620     }
4621     {
4622       orc_union16 _dest;
4623       _dest.x2[0] = var36.x2[1];
4624       _dest.x2[1] = var37.x2[1];
4625       var40.x2[1] = _dest.i;
4626     }
4627     /* 6: mergewl */
4628     {
4629       orc_union32 _dest;
4630       _dest.x2[0] = var40.x2[0];
4631       _dest.x2[1] = var39.x2[0];
4632       var38.x2[0] = _dest.i;
4633     }
4634     {
4635       orc_union32 _dest;
4636       _dest.x2[0] = var40.x2[1];
4637       _dest.x2[1] = var39.x2[1];
4638       var38.x2[1] = _dest.i;
4639     }
4640     /* 7: storeq */
4641     ptr0[i] = var38;
4642   }
4643
4644 }
4645
4646 #else
4647 static void
4648 _backup_cogorc_getline_NV12 (OrcExecutor * ORC_RESTRICT ex)
4649 {
4650   int i;
4651   int n = ex->n;
4652   orc_union64 *ORC_RESTRICT ptr0;
4653   const orc_union16 *ORC_RESTRICT ptr4;
4654   const orc_union16 *ORC_RESTRICT ptr5;
4655   orc_union16 var34;
4656   orc_union16 var35;
4657   orc_union16 var36;
4658   orc_union16 var37;
4659   orc_union64 var38;
4660   orc_union32 var39;
4661   orc_union32 var40;
4662
4663   ptr0 = (orc_union64 *) ex->arrays[0];
4664   ptr4 = (orc_union16 *) ex->arrays[4];
4665   ptr5 = (orc_union16 *) ex->arrays[5];
4666
4667   /* 3: loadpb */
4668   var36.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
4669   var36.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
4670
4671   for (i = 0; i < n; i++) {
4672     /* 0: loadw */
4673     var34 = ptr5[i];
4674     /* 1: loadw */
4675     var35 = ptr5[i];
4676     /* 2: mergewl */
4677     {
4678       orc_union32 _dest;
4679       _dest.x2[0] = var34.i;
4680       _dest.x2[1] = var35.i;
4681       var39.i = _dest.i;
4682     }
4683     /* 4: loadw */
4684     var37 = ptr4[i];
4685     /* 5: mergebw */
4686     {
4687       orc_union16 _dest;
4688       _dest.x2[0] = var36.x2[0];
4689       _dest.x2[1] = var37.x2[0];
4690       var40.x2[0] = _dest.i;
4691     }
4692     {
4693       orc_union16 _dest;
4694       _dest.x2[0] = var36.x2[1];
4695       _dest.x2[1] = var37.x2[1];
4696       var40.x2[1] = _dest.i;
4697     }
4698     /* 6: mergewl */
4699     {
4700       orc_union32 _dest;
4701       _dest.x2[0] = var40.x2[0];
4702       _dest.x2[1] = var39.x2[0];
4703       var38.x2[0] = _dest.i;
4704     }
4705     {
4706       orc_union32 _dest;
4707       _dest.x2[0] = var40.x2[1];
4708       _dest.x2[1] = var39.x2[1];
4709       var38.x2[1] = _dest.i;
4710     }
4711     /* 7: storeq */
4712     ptr0[i] = var38;
4713   }
4714
4715 }
4716
4717 void
4718 cogorc_getline_NV12 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
4719     const guint8 * ORC_RESTRICT s2, int n)
4720 {
4721   OrcExecutor _ex, *ex = &_ex;
4722   static volatile int p_inited = 0;
4723   static OrcProgram *p = 0;
4724   void (*func) (OrcExecutor *);
4725
4726   if (!p_inited) {
4727     orc_once_mutex_lock ();
4728     if (!p_inited) {
4729
4730       p = orc_program_new ();
4731       orc_program_set_name (p, "cogorc_getline_NV12");
4732       orc_program_set_backup_function (p, _backup_cogorc_getline_NV12);
4733       orc_program_add_destination (p, 8, "d1");
4734       orc_program_add_source (p, 2, "s1");
4735       orc_program_add_source (p, 2, "s2");
4736       orc_program_add_constant (p, 1, 0x000000ff, "c1");
4737       orc_program_add_temporary (p, 4, "t1");
4738       orc_program_add_temporary (p, 4, "t2");
4739
4740       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S2,
4741           ORC_VAR_D1);
4742       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_S1,
4743           ORC_VAR_D1);
4744       orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
4745           ORC_VAR_D1);
4746
4747       orc_program_compile (p);
4748     }
4749     p_inited = TRUE;
4750     orc_once_mutex_unlock ();
4751   }
4752   ex->program = p;
4753
4754   ex->n = n;
4755   ex->arrays[ORC_VAR_D1] = d1;
4756   ex->arrays[ORC_VAR_S1] = (void *) s1;
4757   ex->arrays[ORC_VAR_S2] = (void *) s2;
4758
4759   func = p->code_exec;
4760   func (ex);
4761 }
4762 #endif
4763
4764
4765 /* cogorc_putline_NV12 */
4766 #ifdef DISABLE_ORC
4767 void
4768 cogorc_putline_NV12 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
4769     const guint8 * ORC_RESTRICT s1, int n)
4770 {
4771   int i;
4772   orc_union16 *ORC_RESTRICT ptr0;
4773   orc_union16 *ORC_RESTRICT ptr1;
4774   const orc_union64 *ORC_RESTRICT ptr4;
4775   orc_union64 var36;
4776   orc_union16 var37;
4777   orc_union16 var38;
4778   orc_union32 var39;
4779   orc_union32 var40;
4780   orc_union16 var41;
4781   orc_union16 var42;
4782
4783   ptr0 = (orc_union16 *) d1;
4784   ptr1 = (orc_union16 *) d2;
4785   ptr4 = (orc_union64 *) s1;
4786
4787
4788   for (i = 0; i < n; i++) {
4789     /* 0: loadq */
4790     var36 = ptr4[i];
4791     /* 1: splitlw */
4792     {
4793       orc_union32 _src;
4794       _src.i = var36.x2[0];
4795       var39.x2[0] = _src.x2[1];
4796       var40.x2[0] = _src.x2[0];
4797     }
4798     {
4799       orc_union32 _src;
4800       _src.i = var36.x2[1];
4801       var39.x2[1] = _src.x2[1];
4802       var40.x2[1] = _src.x2[0];
4803     }
4804     /* 2: select1wb */
4805     {
4806       orc_union16 _src;
4807       _src.i = var40.x2[0];
4808       var37.x2[0] = _src.x2[1];
4809     }
4810     {
4811       orc_union16 _src;
4812       _src.i = var40.x2[1];
4813       var37.x2[1] = _src.x2[1];
4814     }
4815     /* 3: storew */
4816     ptr0[i] = var37;
4817     /* 4: splitlw */
4818     {
4819       orc_union32 _src;
4820       _src.i = var39.i;
4821       var41.i = _src.x2[1];
4822       var42.i = _src.x2[0];
4823     }
4824     /* 5: avgub */
4825     var38.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
4826     var38.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
4827     /* 6: storew */
4828     ptr1[i] = var38;
4829   }
4830
4831 }
4832
4833 #else
4834 static void
4835 _backup_cogorc_putline_NV12 (OrcExecutor * ORC_RESTRICT ex)
4836 {
4837   int i;
4838   int n = ex->n;
4839   orc_union16 *ORC_RESTRICT ptr0;
4840   orc_union16 *ORC_RESTRICT ptr1;
4841   const orc_union64 *ORC_RESTRICT ptr4;
4842   orc_union64 var36;
4843   orc_union16 var37;
4844   orc_union16 var38;
4845   orc_union32 var39;
4846   orc_union32 var40;
4847   orc_union16 var41;
4848   orc_union16 var42;
4849
4850   ptr0 = (orc_union16 *) ex->arrays[0];
4851   ptr1 = (orc_union16 *) ex->arrays[1];
4852   ptr4 = (orc_union64 *) ex->arrays[4];
4853
4854
4855   for (i = 0; i < n; i++) {
4856     /* 0: loadq */
4857     var36 = ptr4[i];
4858     /* 1: splitlw */
4859     {
4860       orc_union32 _src;
4861       _src.i = var36.x2[0];
4862       var39.x2[0] = _src.x2[1];
4863       var40.x2[0] = _src.x2[0];
4864     }
4865     {
4866       orc_union32 _src;
4867       _src.i = var36.x2[1];
4868       var39.x2[1] = _src.x2[1];
4869       var40.x2[1] = _src.x2[0];
4870     }
4871     /* 2: select1wb */
4872     {
4873       orc_union16 _src;
4874       _src.i = var40.x2[0];
4875       var37.x2[0] = _src.x2[1];
4876     }
4877     {
4878       orc_union16 _src;
4879       _src.i = var40.x2[1];
4880       var37.x2[1] = _src.x2[1];
4881     }
4882     /* 3: storew */
4883     ptr0[i] = var37;
4884     /* 4: splitlw */
4885     {
4886       orc_union32 _src;
4887       _src.i = var39.i;
4888       var41.i = _src.x2[1];
4889       var42.i = _src.x2[0];
4890     }
4891     /* 5: avgub */
4892     var38.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
4893     var38.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
4894     /* 6: storew */
4895     ptr1[i] = var38;
4896   }
4897
4898 }
4899
4900 void
4901 cogorc_putline_NV12 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
4902     const guint8 * ORC_RESTRICT s1, int n)
4903 {
4904   OrcExecutor _ex, *ex = &_ex;
4905   static volatile int p_inited = 0;
4906   static OrcProgram *p = 0;
4907   void (*func) (OrcExecutor *);
4908
4909   if (!p_inited) {
4910     orc_once_mutex_lock ();
4911     if (!p_inited) {
4912
4913       p = orc_program_new ();
4914       orc_program_set_name (p, "cogorc_putline_NV12");
4915       orc_program_set_backup_function (p, _backup_cogorc_putline_NV12);
4916       orc_program_add_destination (p, 2, "d1");
4917       orc_program_add_destination (p, 2, "d2");
4918       orc_program_add_source (p, 8, "s1");
4919       orc_program_add_temporary (p, 4, "t1");
4920       orc_program_add_temporary (p, 4, "t2");
4921       orc_program_add_temporary (p, 2, "t3");
4922       orc_program_add_temporary (p, 2, "t4");
4923
4924       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
4925           ORC_VAR_D1);
4926       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
4927           ORC_VAR_D1, ORC_VAR_D1);
4928       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2,
4929           ORC_VAR_D1);
4930       orc_program_append_2 (p, "avgub", 1, ORC_VAR_D2, ORC_VAR_T3, ORC_VAR_T4,
4931           ORC_VAR_D1);
4932
4933       orc_program_compile (p);
4934     }
4935     p_inited = TRUE;
4936     orc_once_mutex_unlock ();
4937   }
4938   ex->program = p;
4939
4940   ex->n = n;
4941   ex->arrays[ORC_VAR_D1] = d1;
4942   ex->arrays[ORC_VAR_D2] = d2;
4943   ex->arrays[ORC_VAR_S1] = (void *) s1;
4944
4945   func = p->code_exec;
4946   func (ex);
4947 }
4948 #endif
4949
4950
4951 /* cogorc_getline_NV21 */
4952 #ifdef DISABLE_ORC
4953 void
4954 cogorc_getline_NV21 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
4955     const guint8 * ORC_RESTRICT s2, int n)
4956 {
4957   int i;
4958   orc_union64 *ORC_RESTRICT ptr0;
4959   const orc_union16 *ORC_RESTRICT ptr4;
4960   const orc_union16 *ORC_RESTRICT ptr5;
4961   orc_union16 var35;
4962   orc_union16 var36;
4963   orc_union16 var37;
4964   orc_union64 var38;
4965   orc_union16 var39;
4966   orc_union32 var40;
4967   orc_union32 var41;
4968
4969   ptr0 = (orc_union64 *) d1;
4970   ptr4 = (orc_union16 *) s1;
4971   ptr5 = (orc_union16 *) s2;
4972
4973   /* 3: loadpb */
4974   var36.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
4975   var36.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
4976
4977   for (i = 0; i < n; i++) {
4978     /* 0: loadw */
4979     var35 = ptr5[i];
4980     /* 1: swapw */
4981     var39.i = ORC_SWAP_W (var35.i);
4982     /* 2: mergewl */
4983     {
4984       orc_union32 _dest;
4985       _dest.x2[0] = var39.i;
4986       _dest.x2[1] = var39.i;
4987       var40.i = _dest.i;
4988     }
4989     /* 4: loadw */
4990     var37 = ptr4[i];
4991     /* 5: mergebw */
4992     {
4993       orc_union16 _dest;
4994       _dest.x2[0] = var36.x2[0];
4995       _dest.x2[1] = var37.x2[0];
4996       var41.x2[0] = _dest.i;
4997     }
4998     {
4999       orc_union16 _dest;
5000       _dest.x2[0] = var36.x2[1];
5001       _dest.x2[1] = var37.x2[1];
5002       var41.x2[1] = _dest.i;
5003     }
5004     /* 6: mergewl */
5005     {
5006       orc_union32 _dest;
5007       _dest.x2[0] = var41.x2[0];
5008       _dest.x2[1] = var40.x2[0];
5009       var38.x2[0] = _dest.i;
5010     }
5011     {
5012       orc_union32 _dest;
5013       _dest.x2[0] = var41.x2[1];
5014       _dest.x2[1] = var40.x2[1];
5015       var38.x2[1] = _dest.i;
5016     }
5017     /* 7: storeq */
5018     ptr0[i] = var38;
5019   }
5020
5021 }
5022
5023 #else
5024 static void
5025 _backup_cogorc_getline_NV21 (OrcExecutor * ORC_RESTRICT ex)
5026 {
5027   int i;
5028   int n = ex->n;
5029   orc_union64 *ORC_RESTRICT ptr0;
5030   const orc_union16 *ORC_RESTRICT ptr4;
5031   const orc_union16 *ORC_RESTRICT ptr5;
5032   orc_union16 var35;
5033   orc_union16 var36;
5034   orc_union16 var37;
5035   orc_union64 var38;
5036   orc_union16 var39;
5037   orc_union32 var40;
5038   orc_union32 var41;
5039
5040   ptr0 = (orc_union64 *) ex->arrays[0];
5041   ptr4 = (orc_union16 *) ex->arrays[4];
5042   ptr5 = (orc_union16 *) ex->arrays[5];
5043
5044   /* 3: loadpb */
5045   var36.x2[0] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
5046   var36.x2[1] = (int) 0x000000ff;       /* 255 or 1.25987e-321f */
5047
5048   for (i = 0; i < n; i++) {
5049     /* 0: loadw */
5050     var35 = ptr5[i];
5051     /* 1: swapw */
5052     var39.i = ORC_SWAP_W (var35.i);
5053     /* 2: mergewl */
5054     {
5055       orc_union32 _dest;
5056       _dest.x2[0] = var39.i;
5057       _dest.x2[1] = var39.i;
5058       var40.i = _dest.i;
5059     }
5060     /* 4: loadw */
5061     var37 = ptr4[i];
5062     /* 5: mergebw */
5063     {
5064       orc_union16 _dest;
5065       _dest.x2[0] = var36.x2[0];
5066       _dest.x2[1] = var37.x2[0];
5067       var41.x2[0] = _dest.i;
5068     }
5069     {
5070       orc_union16 _dest;
5071       _dest.x2[0] = var36.x2[1];
5072       _dest.x2[1] = var37.x2[1];
5073       var41.x2[1] = _dest.i;
5074     }
5075     /* 6: mergewl */
5076     {
5077       orc_union32 _dest;
5078       _dest.x2[0] = var41.x2[0];
5079       _dest.x2[1] = var40.x2[0];
5080       var38.x2[0] = _dest.i;
5081     }
5082     {
5083       orc_union32 _dest;
5084       _dest.x2[0] = var41.x2[1];
5085       _dest.x2[1] = var40.x2[1];
5086       var38.x2[1] = _dest.i;
5087     }
5088     /* 7: storeq */
5089     ptr0[i] = var38;
5090   }
5091
5092 }
5093
5094 void
5095 cogorc_getline_NV21 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
5096     const guint8 * ORC_RESTRICT s2, int n)
5097 {
5098   OrcExecutor _ex, *ex = &_ex;
5099   static volatile int p_inited = 0;
5100   static OrcProgram *p = 0;
5101   void (*func) (OrcExecutor *);
5102
5103   if (!p_inited) {
5104     orc_once_mutex_lock ();
5105     if (!p_inited) {
5106
5107       p = orc_program_new ();
5108       orc_program_set_name (p, "cogorc_getline_NV21");
5109       orc_program_set_backup_function (p, _backup_cogorc_getline_NV21);
5110       orc_program_add_destination (p, 8, "d1");
5111       orc_program_add_source (p, 2, "s1");
5112       orc_program_add_source (p, 2, "s2");
5113       orc_program_add_constant (p, 1, 0x000000ff, "c1");
5114       orc_program_add_temporary (p, 2, "t1");
5115       orc_program_add_temporary (p, 4, "t2");
5116       orc_program_add_temporary (p, 4, "t3");
5117
5118       orc_program_append_2 (p, "swapw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_D1,
5119           ORC_VAR_D1);
5120       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1,
5121           ORC_VAR_D1);
5122       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1,
5123           ORC_VAR_D1);
5124       orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T3,
5125           ORC_VAR_D1);
5126
5127       orc_program_compile (p);
5128     }
5129     p_inited = TRUE;
5130     orc_once_mutex_unlock ();
5131   }
5132   ex->program = p;
5133
5134   ex->n = n;
5135   ex->arrays[ORC_VAR_D1] = d1;
5136   ex->arrays[ORC_VAR_S1] = (void *) s1;
5137   ex->arrays[ORC_VAR_S2] = (void *) s2;
5138
5139   func = p->code_exec;
5140   func (ex);
5141 }
5142 #endif
5143
5144
5145 /* cogorc_putline_NV21 */
5146 #ifdef DISABLE_ORC
5147 void
5148 cogorc_putline_NV21 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
5149     const guint8 * ORC_RESTRICT s1, int n)
5150 {
5151   int i;
5152   orc_union16 *ORC_RESTRICT ptr0;
5153   orc_union16 *ORC_RESTRICT ptr1;
5154   const orc_union64 *ORC_RESTRICT ptr4;
5155   orc_union64 var37;
5156   orc_union16 var38;
5157   orc_union16 var39;
5158   orc_union32 var40;
5159   orc_union32 var41;
5160   orc_union16 var42;
5161   orc_union16 var43;
5162   orc_union16 var44;
5163
5164   ptr0 = (orc_union16 *) d1;
5165   ptr1 = (orc_union16 *) d2;
5166   ptr4 = (orc_union64 *) s1;
5167
5168
5169   for (i = 0; i < n; i++) {
5170     /* 0: loadq */
5171     var37 = ptr4[i];
5172     /* 1: splitlw */
5173     {
5174       orc_union32 _src;
5175       _src.i = var37.x2[0];
5176       var40.x2[0] = _src.x2[1];
5177       var41.x2[0] = _src.x2[0];
5178     }
5179     {
5180       orc_union32 _src;
5181       _src.i = var37.x2[1];
5182       var40.x2[1] = _src.x2[1];
5183       var41.x2[1] = _src.x2[0];
5184     }
5185     /* 2: select1wb */
5186     {
5187       orc_union16 _src;
5188       _src.i = var41.x2[0];
5189       var38.x2[0] = _src.x2[1];
5190     }
5191     {
5192       orc_union16 _src;
5193       _src.i = var41.x2[1];
5194       var38.x2[1] = _src.x2[1];
5195     }
5196     /* 3: storew */
5197     ptr0[i] = var38;
5198     /* 4: splitlw */
5199     {
5200       orc_union32 _src;
5201       _src.i = var40.i;
5202       var42.i = _src.x2[1];
5203       var43.i = _src.x2[0];
5204     }
5205     /* 5: avgub */
5206     var44.x2[0] = ((orc_uint8) var42.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1;
5207     var44.x2[1] = ((orc_uint8) var42.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1;
5208     /* 6: swapw */
5209     var39.i = ORC_SWAP_W (var44.i);
5210     /* 7: storew */
5211     ptr1[i] = var39;
5212   }
5213
5214 }
5215
5216 #else
5217 static void
5218 _backup_cogorc_putline_NV21 (OrcExecutor * ORC_RESTRICT ex)
5219 {
5220   int i;
5221   int n = ex->n;
5222   orc_union16 *ORC_RESTRICT ptr0;
5223   orc_union16 *ORC_RESTRICT ptr1;
5224   const orc_union64 *ORC_RESTRICT ptr4;
5225   orc_union64 var37;
5226   orc_union16 var38;
5227   orc_union16 var39;
5228   orc_union32 var40;
5229   orc_union32 var41;
5230   orc_union16 var42;
5231   orc_union16 var43;
5232   orc_union16 var44;
5233
5234   ptr0 = (orc_union16 *) ex->arrays[0];
5235   ptr1 = (orc_union16 *) ex->arrays[1];
5236   ptr4 = (orc_union64 *) ex->arrays[4];
5237
5238
5239   for (i = 0; i < n; i++) {
5240     /* 0: loadq */
5241     var37 = ptr4[i];
5242     /* 1: splitlw */
5243     {
5244       orc_union32 _src;
5245       _src.i = var37.x2[0];
5246       var40.x2[0] = _src.x2[1];
5247       var41.x2[0] = _src.x2[0];
5248     }
5249     {
5250       orc_union32 _src;
5251       _src.i = var37.x2[1];
5252       var40.x2[1] = _src.x2[1];
5253       var41.x2[1] = _src.x2[0];
5254     }
5255     /* 2: select1wb */
5256     {
5257       orc_union16 _src;
5258       _src.i = var41.x2[0];
5259       var38.x2[0] = _src.x2[1];
5260     }
5261     {
5262       orc_union16 _src;
5263       _src.i = var41.x2[1];
5264       var38.x2[1] = _src.x2[1];
5265     }
5266     /* 3: storew */
5267     ptr0[i] = var38;
5268     /* 4: splitlw */
5269     {
5270       orc_union32 _src;
5271       _src.i = var40.i;
5272       var42.i = _src.x2[1];
5273       var43.i = _src.x2[0];
5274     }
5275     /* 5: avgub */
5276     var44.x2[0] = ((orc_uint8) var42.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1;
5277     var44.x2[1] = ((orc_uint8) var42.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1;
5278     /* 6: swapw */
5279     var39.i = ORC_SWAP_W (var44.i);
5280     /* 7: storew */
5281     ptr1[i] = var39;
5282   }
5283
5284 }
5285
5286 void
5287 cogorc_putline_NV21 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
5288     const guint8 * ORC_RESTRICT s1, int n)
5289 {
5290   OrcExecutor _ex, *ex = &_ex;
5291   static volatile int p_inited = 0;
5292   static OrcProgram *p = 0;
5293   void (*func) (OrcExecutor *);
5294
5295   if (!p_inited) {
5296     orc_once_mutex_lock ();
5297     if (!p_inited) {
5298
5299       p = orc_program_new ();
5300       orc_program_set_name (p, "cogorc_putline_NV21");
5301       orc_program_set_backup_function (p, _backup_cogorc_putline_NV21);
5302       orc_program_add_destination (p, 2, "d1");
5303       orc_program_add_destination (p, 2, "d2");
5304       orc_program_add_source (p, 8, "s1");
5305       orc_program_add_temporary (p, 4, "t1");
5306       orc_program_add_temporary (p, 4, "t2");
5307       orc_program_add_temporary (p, 2, "t3");
5308       orc_program_add_temporary (p, 2, "t4");
5309       orc_program_add_temporary (p, 2, "t5");
5310
5311       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
5312           ORC_VAR_D1);
5313       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
5314           ORC_VAR_D1, ORC_VAR_D1);
5315       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2,
5316           ORC_VAR_D1);
5317       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_T4,
5318           ORC_VAR_D1);
5319       orc_program_append_2 (p, "swapw", 0, ORC_VAR_D2, ORC_VAR_T5, ORC_VAR_D1,
5320           ORC_VAR_D1);
5321
5322       orc_program_compile (p);
5323     }
5324     p_inited = TRUE;
5325     orc_once_mutex_unlock ();
5326   }
5327   ex->program = p;
5328
5329   ex->n = n;
5330   ex->arrays[ORC_VAR_D1] = d1;
5331   ex->arrays[ORC_VAR_D2] = d2;
5332   ex->arrays[ORC_VAR_S1] = (void *) s1;
5333
5334   func = p->code_exec;
5335   func (ex);
5336 }
5337 #endif
5338
5339
5340 /* cogorc_getline_A420 */
5341 #ifdef DISABLE_ORC
5342 void
5343 cogorc_getline_A420 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
5344     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3,
5345     const guint8 * ORC_RESTRICT s4, int n)
5346 {
5347   int i;
5348   orc_union32 *ORC_RESTRICT ptr0;
5349   const orc_int8 *ORC_RESTRICT ptr4;
5350   const orc_int8 *ORC_RESTRICT ptr5;
5351   const orc_int8 *ORC_RESTRICT ptr6;
5352   const orc_int8 *ORC_RESTRICT ptr7;
5353   orc_int8 var36;
5354   orc_int8 var37;
5355   orc_union32 var38;
5356   orc_int8 var39;
5357   orc_int8 var40;
5358   orc_union16 var41;
5359   orc_union16 var42;
5360
5361   ptr0 = (orc_union32 *) d1;
5362   ptr4 = (orc_int8 *) s1;
5363   ptr5 = (orc_int8 *) s2;
5364   ptr6 = (orc_int8 *) s3;
5365   ptr7 = (orc_int8 *) s4;
5366
5367
5368   for (i = 0; i < n; i++) {
5369     /* 0: loadupdb */
5370     var39 = ptr5[i >> 1];
5371     /* 1: loadupdb */
5372     var40 = ptr6[i >> 1];
5373     /* 2: mergebw */
5374     {
5375       orc_union16 _dest;
5376       _dest.x2[0] = var39;
5377       _dest.x2[1] = var40;
5378       var41.i = _dest.i;
5379     }
5380     /* 3: loadb */
5381     var36 = ptr7[i];
5382     /* 4: loadb */
5383     var37 = ptr4[i];
5384     /* 5: mergebw */
5385     {
5386       orc_union16 _dest;
5387       _dest.x2[0] = var36;
5388       _dest.x2[1] = var37;
5389       var42.i = _dest.i;
5390     }
5391     /* 6: mergewl */
5392     {
5393       orc_union32 _dest;
5394       _dest.x2[0] = var42.i;
5395       _dest.x2[1] = var41.i;
5396       var38.i = _dest.i;
5397     }
5398     /* 7: storel */
5399     ptr0[i] = var38;
5400   }
5401
5402 }
5403
5404 #else
5405 static void
5406 _backup_cogorc_getline_A420 (OrcExecutor * ORC_RESTRICT ex)
5407 {
5408   int i;
5409   int n = ex->n;
5410   orc_union32 *ORC_RESTRICT ptr0;
5411   const orc_int8 *ORC_RESTRICT ptr4;
5412   const orc_int8 *ORC_RESTRICT ptr5;
5413   const orc_int8 *ORC_RESTRICT ptr6;
5414   const orc_int8 *ORC_RESTRICT ptr7;
5415   orc_int8 var36;
5416   orc_int8 var37;
5417   orc_union32 var38;
5418   orc_int8 var39;
5419   orc_int8 var40;
5420   orc_union16 var41;
5421   orc_union16 var42;
5422
5423   ptr0 = (orc_union32 *) ex->arrays[0];
5424   ptr4 = (orc_int8 *) ex->arrays[4];
5425   ptr5 = (orc_int8 *) ex->arrays[5];
5426   ptr6 = (orc_int8 *) ex->arrays[6];
5427   ptr7 = (orc_int8 *) ex->arrays[7];
5428
5429
5430   for (i = 0; i < n; i++) {
5431     /* 0: loadupdb */
5432     var39 = ptr5[i >> 1];
5433     /* 1: loadupdb */
5434     var40 = ptr6[i >> 1];
5435     /* 2: mergebw */
5436     {
5437       orc_union16 _dest;
5438       _dest.x2[0] = var39;
5439       _dest.x2[1] = var40;
5440       var41.i = _dest.i;
5441     }
5442     /* 3: loadb */
5443     var36 = ptr7[i];
5444     /* 4: loadb */
5445     var37 = ptr4[i];
5446     /* 5: mergebw */
5447     {
5448       orc_union16 _dest;
5449       _dest.x2[0] = var36;
5450       _dest.x2[1] = var37;
5451       var42.i = _dest.i;
5452     }
5453     /* 6: mergewl */
5454     {
5455       orc_union32 _dest;
5456       _dest.x2[0] = var42.i;
5457       _dest.x2[1] = var41.i;
5458       var38.i = _dest.i;
5459     }
5460     /* 7: storel */
5461     ptr0[i] = var38;
5462   }
5463
5464 }
5465
5466 void
5467 cogorc_getline_A420 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
5468     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3,
5469     const guint8 * ORC_RESTRICT s4, int n)
5470 {
5471   OrcExecutor _ex, *ex = &_ex;
5472   static volatile int p_inited = 0;
5473   static OrcProgram *p = 0;
5474   void (*func) (OrcExecutor *);
5475
5476   if (!p_inited) {
5477     orc_once_mutex_lock ();
5478     if (!p_inited) {
5479
5480       p = orc_program_new ();
5481       orc_program_set_name (p, "cogorc_getline_A420");
5482       orc_program_set_backup_function (p, _backup_cogorc_getline_A420);
5483       orc_program_add_destination (p, 4, "d1");
5484       orc_program_add_source (p, 1, "s1");
5485       orc_program_add_source (p, 1, "s2");
5486       orc_program_add_source (p, 1, "s3");
5487       orc_program_add_source (p, 1, "s4");
5488       orc_program_add_temporary (p, 2, "t1");
5489       orc_program_add_temporary (p, 2, "t2");
5490       orc_program_add_temporary (p, 1, "t3");
5491       orc_program_add_temporary (p, 1, "t4");
5492
5493       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T3, ORC_VAR_S2,
5494           ORC_VAR_D1, ORC_VAR_D1);
5495       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T4, ORC_VAR_S3,
5496           ORC_VAR_D1, ORC_VAR_D1);
5497       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4,
5498           ORC_VAR_D1);
5499       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_S4, ORC_VAR_S1,
5500           ORC_VAR_D1);
5501       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
5502           ORC_VAR_D1);
5503
5504       orc_program_compile (p);
5505     }
5506     p_inited = TRUE;
5507     orc_once_mutex_unlock ();
5508   }
5509   ex->program = p;
5510
5511   ex->n = n;
5512   ex->arrays[ORC_VAR_D1] = d1;
5513   ex->arrays[ORC_VAR_S1] = (void *) s1;
5514   ex->arrays[ORC_VAR_S2] = (void *) s2;
5515   ex->arrays[ORC_VAR_S3] = (void *) s3;
5516   ex->arrays[ORC_VAR_S4] = (void *) s4;
5517
5518   func = p->code_exec;
5519   func (ex);
5520 }
5521 #endif
5522
5523
5524 /* cogorc_putline_A420 */
5525 #ifdef DISABLE_ORC
5526 void
5527 cogorc_putline_A420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
5528     guint8 * ORC_RESTRICT d3, guint8 * ORC_RESTRICT d4,
5529     const guint8 * ORC_RESTRICT s1, int n)
5530 {
5531   int i;
5532   orc_union16 *ORC_RESTRICT ptr0;
5533   orc_int8 *ORC_RESTRICT ptr1;
5534   orc_int8 *ORC_RESTRICT ptr2;
5535   orc_union16 *ORC_RESTRICT ptr3;
5536   const orc_union64 *ORC_RESTRICT ptr4;
5537   orc_union64 var38;
5538   orc_union16 var39;
5539   orc_union16 var40;
5540   orc_int8 var41;
5541   orc_int8 var42;
5542   orc_union32 var43;
5543   orc_union32 var44;
5544   orc_union16 var45;
5545   orc_union16 var46;
5546   orc_int8 var47;
5547   orc_int8 var48;
5548   orc_int8 var49;
5549   orc_int8 var50;
5550
5551   ptr0 = (orc_union16 *) d1;
5552   ptr1 = (orc_int8 *) d2;
5553   ptr2 = (orc_int8 *) d3;
5554   ptr3 = (orc_union16 *) d4;
5555   ptr4 = (orc_union64 *) s1;
5556
5557
5558   for (i = 0; i < n; i++) {
5559     /* 0: loadq */
5560     var38 = ptr4[i];
5561     /* 1: splitlw */
5562     {
5563       orc_union32 _src;
5564       _src.i = var38.x2[0];
5565       var43.x2[0] = _src.x2[1];
5566       var44.x2[0] = _src.x2[0];
5567     }
5568     {
5569       orc_union32 _src;
5570       _src.i = var38.x2[1];
5571       var43.x2[1] = _src.x2[1];
5572       var44.x2[1] = _src.x2[0];
5573     }
5574     /* 2: select1wb */
5575     {
5576       orc_union16 _src;
5577       _src.i = var44.x2[0];
5578       var39.x2[0] = _src.x2[1];
5579     }
5580     {
5581       orc_union16 _src;
5582       _src.i = var44.x2[1];
5583       var39.x2[1] = _src.x2[1];
5584     }
5585     /* 3: storew */
5586     ptr0[i] = var39;
5587     /* 4: select0wb */
5588     {
5589       orc_union16 _src;
5590       _src.i = var44.x2[0];
5591       var40.x2[0] = _src.x2[0];
5592     }
5593     {
5594       orc_union16 _src;
5595       _src.i = var44.x2[1];
5596       var40.x2[1] = _src.x2[0];
5597     }
5598     /* 5: storew */
5599     ptr3[i] = var40;
5600     /* 6: splitwb */
5601     {
5602       orc_union16 _src;
5603       _src.i = var43.x2[0];
5604       var45.x2[0] = _src.x2[1];
5605       var46.x2[0] = _src.x2[0];
5606     }
5607     {
5608       orc_union16 _src;
5609       _src.i = var43.x2[1];
5610       var45.x2[1] = _src.x2[1];
5611       var46.x2[1] = _src.x2[0];
5612     }
5613     /* 7: splitwb */
5614     {
5615       orc_union16 _src;
5616       _src.i = var46.i;
5617       var47 = _src.x2[1];
5618       var48 = _src.x2[0];
5619     }
5620     /* 8: avgub */
5621     var41 = ((orc_uint8) var47 + (orc_uint8) var48 + 1) >> 1;
5622     /* 9: storeb */
5623     ptr1[i] = var41;
5624     /* 10: splitwb */
5625     {
5626       orc_union16 _src;
5627       _src.i = var45.i;
5628       var49 = _src.x2[1];
5629       var50 = _src.x2[0];
5630     }
5631     /* 11: avgub */
5632     var42 = ((orc_uint8) var49 + (orc_uint8) var50 + 1) >> 1;
5633     /* 12: storeb */
5634     ptr2[i] = var42;
5635   }
5636
5637 }
5638
5639 #else
5640 static void
5641 _backup_cogorc_putline_A420 (OrcExecutor * ORC_RESTRICT ex)
5642 {
5643   int i;
5644   int n = ex->n;
5645   orc_union16 *ORC_RESTRICT ptr0;
5646   orc_int8 *ORC_RESTRICT ptr1;
5647   orc_int8 *ORC_RESTRICT ptr2;
5648   orc_union16 *ORC_RESTRICT ptr3;
5649   const orc_union64 *ORC_RESTRICT ptr4;
5650   orc_union64 var38;
5651   orc_union16 var39;
5652   orc_union16 var40;
5653   orc_int8 var41;
5654   orc_int8 var42;
5655   orc_union32 var43;
5656   orc_union32 var44;
5657   orc_union16 var45;
5658   orc_union16 var46;
5659   orc_int8 var47;
5660   orc_int8 var48;
5661   orc_int8 var49;
5662   orc_int8 var50;
5663
5664   ptr0 = (orc_union16 *) ex->arrays[0];
5665   ptr1 = (orc_int8 *) ex->arrays[1];
5666   ptr2 = (orc_int8 *) ex->arrays[2];
5667   ptr3 = (orc_union16 *) ex->arrays[3];
5668   ptr4 = (orc_union64 *) ex->arrays[4];
5669
5670
5671   for (i = 0; i < n; i++) {
5672     /* 0: loadq */
5673     var38 = ptr4[i];
5674     /* 1: splitlw */
5675     {
5676       orc_union32 _src;
5677       _src.i = var38.x2[0];
5678       var43.x2[0] = _src.x2[1];
5679       var44.x2[0] = _src.x2[0];
5680     }
5681     {
5682       orc_union32 _src;
5683       _src.i = var38.x2[1];
5684       var43.x2[1] = _src.x2[1];
5685       var44.x2[1] = _src.x2[0];
5686     }
5687     /* 2: select1wb */
5688     {
5689       orc_union16 _src;
5690       _src.i = var44.x2[0];
5691       var39.x2[0] = _src.x2[1];
5692     }
5693     {
5694       orc_union16 _src;
5695       _src.i = var44.x2[1];
5696       var39.x2[1] = _src.x2[1];
5697     }
5698     /* 3: storew */
5699     ptr0[i] = var39;
5700     /* 4: select0wb */
5701     {
5702       orc_union16 _src;
5703       _src.i = var44.x2[0];
5704       var40.x2[0] = _src.x2[0];
5705     }
5706     {
5707       orc_union16 _src;
5708       _src.i = var44.x2[1];
5709       var40.x2[1] = _src.x2[0];
5710     }
5711     /* 5: storew */
5712     ptr3[i] = var40;
5713     /* 6: splitwb */
5714     {
5715       orc_union16 _src;
5716       _src.i = var43.x2[0];
5717       var45.x2[0] = _src.x2[1];
5718       var46.x2[0] = _src.x2[0];
5719     }
5720     {
5721       orc_union16 _src;
5722       _src.i = var43.x2[1];
5723       var45.x2[1] = _src.x2[1];
5724       var46.x2[1] = _src.x2[0];
5725     }
5726     /* 7: splitwb */
5727     {
5728       orc_union16 _src;
5729       _src.i = var46.i;
5730       var47 = _src.x2[1];
5731       var48 = _src.x2[0];
5732     }
5733     /* 8: avgub */
5734     var41 = ((orc_uint8) var47 + (orc_uint8) var48 + 1) >> 1;
5735     /* 9: storeb */
5736     ptr1[i] = var41;
5737     /* 10: splitwb */
5738     {
5739       orc_union16 _src;
5740       _src.i = var45.i;
5741       var49 = _src.x2[1];
5742       var50 = _src.x2[0];
5743     }
5744     /* 11: avgub */
5745     var42 = ((orc_uint8) var49 + (orc_uint8) var50 + 1) >> 1;
5746     /* 12: storeb */
5747     ptr2[i] = var42;
5748   }
5749
5750 }
5751
5752 void
5753 cogorc_putline_A420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
5754     guint8 * ORC_RESTRICT d3, guint8 * ORC_RESTRICT d4,
5755     const guint8 * ORC_RESTRICT s1, int n)
5756 {
5757   OrcExecutor _ex, *ex = &_ex;
5758   static volatile int p_inited = 0;
5759   static OrcProgram *p = 0;
5760   void (*func) (OrcExecutor *);
5761
5762   if (!p_inited) {
5763     orc_once_mutex_lock ();
5764     if (!p_inited) {
5765
5766       p = orc_program_new ();
5767       orc_program_set_name (p, "cogorc_putline_A420");
5768       orc_program_set_backup_function (p, _backup_cogorc_putline_A420);
5769       orc_program_add_destination (p, 2, "d1");
5770       orc_program_add_destination (p, 1, "d2");
5771       orc_program_add_destination (p, 1, "d3");
5772       orc_program_add_destination (p, 2, "d4");
5773       orc_program_add_source (p, 8, "s1");
5774       orc_program_add_temporary (p, 4, "t1");
5775       orc_program_add_temporary (p, 4, "t2");
5776       orc_program_add_temporary (p, 2, "t3");
5777       orc_program_add_temporary (p, 2, "t4");
5778       orc_program_add_temporary (p, 1, "t5");
5779       orc_program_add_temporary (p, 1, "t6");
5780
5781       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
5782           ORC_VAR_D1);
5783       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
5784           ORC_VAR_D1, ORC_VAR_D1);
5785       orc_program_append_2 (p, "select0wb", 1, ORC_VAR_D4, ORC_VAR_T1,
5786           ORC_VAR_D1, ORC_VAR_D1);
5787       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T2,
5788           ORC_VAR_D1);
5789       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T5, ORC_VAR_T6, ORC_VAR_T3,
5790           ORC_VAR_D1);
5791       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D2, ORC_VAR_T5, ORC_VAR_T6,
5792           ORC_VAR_D1);
5793       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T5, ORC_VAR_T6, ORC_VAR_T4,
5794           ORC_VAR_D1);
5795       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D3, ORC_VAR_T5, ORC_VAR_T6,
5796           ORC_VAR_D1);
5797
5798       orc_program_compile (p);
5799     }
5800     p_inited = TRUE;
5801     orc_once_mutex_unlock ();
5802   }
5803   ex->program = p;
5804
5805   ex->n = n;
5806   ex->arrays[ORC_VAR_D1] = d1;
5807   ex->arrays[ORC_VAR_D2] = d2;
5808   ex->arrays[ORC_VAR_D3] = d3;
5809   ex->arrays[ORC_VAR_D4] = d4;
5810   ex->arrays[ORC_VAR_S1] = (void *) s1;
5811
5812   func = p->code_exec;
5813   func (ex);
5814 }
5815 #endif
5816
5817
5818 /* orc_resample_bilinear_u32 */
5819 #ifdef DISABLE_ORC
5820 void
5821 orc_resample_bilinear_u32 (guint8 * ORC_RESTRICT d1,
5822     const guint8 * ORC_RESTRICT s1, int p1, int p2, int n)
5823 {
5824   int i;
5825   orc_union32 *ORC_RESTRICT ptr0;
5826   const orc_union32 *ORC_RESTRICT ptr4;
5827   orc_union32 var32;
5828
5829   ptr0 = (orc_union32 *) d1;
5830   ptr4 = (orc_union32 *) s1;
5831
5832
5833   for (i = 0; i < n; i++) {
5834     /* 0: ldreslinl */
5835     {
5836       int tmp = p1 + i * p2;
5837       orc_union32 a = ptr4[tmp >> 16];
5838       orc_union32 b = ptr4[(tmp >> 16) + 1];
5839       var32.x4[0] =
5840           ((orc_uint8) a.x4[0] * (256 - ((tmp >> 8) & 0xff)) +
5841           (orc_uint8) b.x4[0] * ((tmp >> 8) & 0xff)) >> 8;
5842       var32.x4[1] =
5843           ((orc_uint8) a.x4[1] * (256 - ((tmp >> 8) & 0xff)) +
5844           (orc_uint8) b.x4[1] * ((tmp >> 8) & 0xff)) >> 8;
5845       var32.x4[2] =
5846           ((orc_uint8) a.x4[2] * (256 - ((tmp >> 8) & 0xff)) +
5847           (orc_uint8) b.x4[2] * ((tmp >> 8) & 0xff)) >> 8;
5848       var32.x4[3] =
5849           ((orc_uint8) a.x4[3] * (256 - ((tmp >> 8) & 0xff)) +
5850           (orc_uint8) b.x4[3] * ((tmp >> 8) & 0xff)) >> 8;
5851     }
5852     /* 1: storel */
5853     ptr0[i] = var32;
5854   }
5855
5856 }
5857
5858 #else
5859 static void
5860 _backup_orc_resample_bilinear_u32 (OrcExecutor * ORC_RESTRICT ex)
5861 {
5862   int i;
5863   int n = ex->n;
5864   orc_union32 *ORC_RESTRICT ptr0;
5865   const orc_union32 *ORC_RESTRICT ptr4;
5866   orc_union32 var32;
5867
5868   ptr0 = (orc_union32 *) ex->arrays[0];
5869   ptr4 = (orc_union32 *) ex->arrays[4];
5870
5871
5872   for (i = 0; i < n; i++) {
5873     /* 0: ldreslinl */
5874     {
5875       int tmp = ex->params[24] + i * ex->params[25];
5876       orc_union32 a = ptr4[tmp >> 16];
5877       orc_union32 b = ptr4[(tmp >> 16) + 1];
5878       var32.x4[0] =
5879           ((orc_uint8) a.x4[0] * (256 - ((tmp >> 8) & 0xff)) +
5880           (orc_uint8) b.x4[0] * ((tmp >> 8) & 0xff)) >> 8;
5881       var32.x4[1] =
5882           ((orc_uint8) a.x4[1] * (256 - ((tmp >> 8) & 0xff)) +
5883           (orc_uint8) b.x4[1] * ((tmp >> 8) & 0xff)) >> 8;
5884       var32.x4[2] =
5885           ((orc_uint8) a.x4[2] * (256 - ((tmp >> 8) & 0xff)) +
5886           (orc_uint8) b.x4[2] * ((tmp >> 8) & 0xff)) >> 8;
5887       var32.x4[3] =
5888           ((orc_uint8) a.x4[3] * (256 - ((tmp >> 8) & 0xff)) +
5889           (orc_uint8) b.x4[3] * ((tmp >> 8) & 0xff)) >> 8;
5890     }
5891     /* 1: storel */
5892     ptr0[i] = var32;
5893   }
5894
5895 }
5896
5897 void
5898 orc_resample_bilinear_u32 (guint8 * ORC_RESTRICT d1,
5899     const guint8 * ORC_RESTRICT s1, int p1, int p2, int n)
5900 {
5901   OrcExecutor _ex, *ex = &_ex;
5902   static volatile int p_inited = 0;
5903   static OrcProgram *p = 0;
5904   void (*func) (OrcExecutor *);
5905
5906   if (!p_inited) {
5907     orc_once_mutex_lock ();
5908     if (!p_inited) {
5909
5910       p = orc_program_new ();
5911       orc_program_set_name (p, "orc_resample_bilinear_u32");
5912       orc_program_set_backup_function (p, _backup_orc_resample_bilinear_u32);
5913       orc_program_add_destination (p, 4, "d1");
5914       orc_program_add_source (p, 4, "s1");
5915       orc_program_add_parameter (p, 4, "p1");
5916       orc_program_add_parameter (p, 4, "p2");
5917
5918       orc_program_append_2 (p, "ldreslinl", 0, ORC_VAR_D1, ORC_VAR_S1,
5919           ORC_VAR_P1, ORC_VAR_P2);
5920
5921       orc_program_compile (p);
5922     }
5923     p_inited = TRUE;
5924     orc_once_mutex_unlock ();
5925   }
5926   ex->program = p;
5927
5928   ex->n = n;
5929   ex->arrays[ORC_VAR_D1] = d1;
5930   ex->arrays[ORC_VAR_S1] = (void *) s1;
5931   ex->params[ORC_VAR_P1] = p1;
5932   ex->params[ORC_VAR_P2] = p2;
5933
5934   func = p->code_exec;
5935   func (ex);
5936 }
5937 #endif
5938
5939
5940 /* orc_merge_linear_u8 */
5941 #ifdef DISABLE_ORC
5942 void
5943 orc_merge_linear_u8 (orc_uint8 * ORC_RESTRICT d1,
5944     const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
5945     int p1, int n)
5946 {
5947   int i;
5948   orc_int8 *ORC_RESTRICT ptr0;
5949   const orc_int8 *ORC_RESTRICT ptr4;
5950   const orc_int8 *ORC_RESTRICT ptr5;
5951   orc_int8 var36;
5952   orc_int8 var37;
5953   orc_union16 var38;
5954   orc_union16 var39;
5955   orc_int8 var40;
5956   orc_int8 var41;
5957   orc_union16 var42;
5958   orc_union16 var43;
5959   orc_union16 var44;
5960   orc_union16 var45;
5961   orc_union16 var46;
5962   orc_int8 var47;
5963
5964   ptr0 = (orc_int8 *) d1;
5965   ptr4 = (orc_int8 *) s1;
5966   ptr5 = (orc_int8 *) s2;
5967
5968   /* 6: loadpw */
5969   var38.i = p1;
5970   /* 8: loadpw */
5971   var39.i = (int) 0x00000080;   /* 128 or 6.32404e-322f */
5972
5973   for (i = 0; i < n; i++) {
5974     /* 0: loadb */
5975     var41 = ptr4[i];
5976     /* 1: loadb */
5977     var36 = ptr4[i];
5978     /* 2: convubw */
5979     var42.i = (orc_uint8) var36;
5980     /* 3: loadb */
5981     var37 = ptr5[i];
5982     /* 4: convubw */
5983     var43.i = (orc_uint8) var37;
5984     /* 5: subw */
5985     var44.i = var43.i - var42.i;
5986     /* 7: mullw */
5987     var45.i = (var44.i * var38.i) & 0xffff;
5988     /* 9: addw */
5989     var46.i = var45.i + var39.i;
5990     /* 10: convhwb */
5991     var47 = ((orc_uint16) var46.i) >> 8;
5992     /* 11: addb */
5993     var40 = var47 + var41;
5994     /* 12: storeb */
5995     ptr0[i] = var40;
5996   }
5997
5998 }
5999
6000 #else
6001 static void
6002 _backup_orc_merge_linear_u8 (OrcExecutor * ORC_RESTRICT ex)
6003 {
6004   int i;
6005   int n = ex->n;
6006   orc_int8 *ORC_RESTRICT ptr0;
6007   const orc_int8 *ORC_RESTRICT ptr4;
6008   const orc_int8 *ORC_RESTRICT ptr5;
6009   orc_int8 var36;
6010   orc_int8 var37;
6011   orc_union16 var38;
6012   orc_union16 var39;
6013   orc_int8 var40;
6014   orc_int8 var41;
6015   orc_union16 var42;
6016   orc_union16 var43;
6017   orc_union16 var44;
6018   orc_union16 var45;
6019   orc_union16 var46;
6020   orc_int8 var47;
6021
6022   ptr0 = (orc_int8 *) ex->arrays[0];
6023   ptr4 = (orc_int8 *) ex->arrays[4];
6024   ptr5 = (orc_int8 *) ex->arrays[5];
6025
6026   /* 6: loadpw */
6027   var38.i = ex->params[24];
6028   /* 8: loadpw */
6029   var39.i = (int) 0x00000080;   /* 128 or 6.32404e-322f */
6030
6031   for (i = 0; i < n; i++) {
6032     /* 0: loadb */
6033     var41 = ptr4[i];
6034     /* 1: loadb */
6035     var36 = ptr4[i];
6036     /* 2: convubw */
6037     var42.i = (orc_uint8) var36;
6038     /* 3: loadb */
6039     var37 = ptr5[i];
6040     /* 4: convubw */
6041     var43.i = (orc_uint8) var37;
6042     /* 5: subw */
6043     var44.i = var43.i - var42.i;
6044     /* 7: mullw */
6045     var45.i = (var44.i * var38.i) & 0xffff;
6046     /* 9: addw */
6047     var46.i = var45.i + var39.i;
6048     /* 10: convhwb */
6049     var47 = ((orc_uint16) var46.i) >> 8;
6050     /* 11: addb */
6051     var40 = var47 + var41;
6052     /* 12: storeb */
6053     ptr0[i] = var40;
6054   }
6055
6056 }
6057
6058 void
6059 orc_merge_linear_u8 (orc_uint8 * ORC_RESTRICT d1,
6060     const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
6061     int p1, int n)
6062 {
6063   OrcExecutor _ex, *ex = &_ex;
6064   static volatile int p_inited = 0;
6065   static OrcProgram *p = 0;
6066   void (*func) (OrcExecutor *);
6067
6068   if (!p_inited) {
6069     orc_once_mutex_lock ();
6070     if (!p_inited) {
6071
6072       p = orc_program_new ();
6073       orc_program_set_name (p, "orc_merge_linear_u8");
6074       orc_program_set_backup_function (p, _backup_orc_merge_linear_u8);
6075       orc_program_add_destination (p, 1, "d1");
6076       orc_program_add_source (p, 1, "s1");
6077       orc_program_add_source (p, 1, "s2");
6078       orc_program_add_constant (p, 4, 0x00000080, "c1");
6079       orc_program_add_parameter (p, 1, "p1");
6080       orc_program_add_temporary (p, 2, "t1");
6081       orc_program_add_temporary (p, 2, "t2");
6082       orc_program_add_temporary (p, 1, "t3");
6083       orc_program_add_temporary (p, 1, "t4");
6084
6085       orc_program_append_2 (p, "loadb", 0, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_D1,
6086           ORC_VAR_D1);
6087       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
6088           ORC_VAR_D1);
6089       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
6090           ORC_VAR_D1);
6091       orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1,
6092           ORC_VAR_D1);
6093       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1,
6094           ORC_VAR_D1);
6095       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1,
6096           ORC_VAR_D1);
6097       orc_program_append_2 (p, "convhwb", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_D1,
6098           ORC_VAR_D1);
6099       orc_program_append_2 (p, "addb", 0, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_T3,
6100           ORC_VAR_D1);
6101
6102       orc_program_compile (p);
6103     }
6104     p_inited = TRUE;
6105     orc_once_mutex_unlock ();
6106   }
6107   ex->program = p;
6108
6109   ex->n = n;
6110   ex->arrays[ORC_VAR_D1] = d1;
6111   ex->arrays[ORC_VAR_S1] = (void *) s1;
6112   ex->arrays[ORC_VAR_S2] = (void *) s2;
6113   ex->params[ORC_VAR_P1] = p1;
6114
6115   func = p->code_exec;
6116   func (ex);
6117 }
6118 #endif