~ubuntu-branches/ubuntu/precise/gst-plugins-base0.10/precise-updates

« back to all changes in this revision

Viewing changes to gst-libs/gst/video/videoblendorc-dist.c

  • Committer: Package Import Robot
  • Author(s): Sebastian Dröge
  • Date: 2011-12-11 19:27:10 UTC
  • mfrom: (11.7.12) (33.1.11 sid)
  • mto: This revision was merged to the branch mainline in revision 58.
  • Revision ID: package-import@ubuntu.com-20111211192710-f52020gqtas8705f
Tags: 0.10.35.2-1
* New upstream pre-release:
  + debian/rules,
    debian/build-deps.in:
    - Build-depend on GStreamer core >= 0.10.35.2.
    - Build-depend on GLib >= 2.24.
    - Build-depend on GTK+ 3.0.
    - Build-depend on zlib.
  + debian/patches/99_ltmain_as-needed.patch:
    - Refresh to apply cleanly again.
  + debian/libgstreamer-plugins-base.symbols:
    - Update symbols file with new API.
* debian/rules:
  + Remove all dependency_libs from the .la files.
* debian/control.in:
  + Put GI package into section introspection.
* debian/build-deps.in,
  debian/compat,
  debian/control.in,
  debian/gir1.2-gst-plugins-base.install,
  debian/gstreamer-alsa.install,
  debian/gstreamer-gnomevfs.install,
  debian/gstreamer-plugins-base.install,
  debian/gstreamer-x.install,
  debian/libgstreamer-plugins-base-dev.install,
  debian/libgstreamer-plugins-base.install,
  debian/rules:
  + Transition package to multi-arch (Closes: #647485).
    Patch taken from the Ubuntu package.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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