1 
2 /* autogenerated from video-orc.orc */
3 
4 #ifdef HAVE_CONFIG_H
5 #include "config.h"
6 #endif
7 #include <glib.h>
8 
9 #ifndef _ORC_INTEGER_TYPEDEFS_
10 #define _ORC_INTEGER_TYPEDEFS_
11 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
12 #include <stdint.h>
13 typedef int8_t orc_int8;
14 typedef int16_t orc_int16;
15 typedef int32_t orc_int32;
16 typedef int64_t orc_int64;
17 typedef uint8_t orc_uint8;
18 typedef uint16_t orc_uint16;
19 typedef uint32_t orc_uint32;
20 typedef uint64_t orc_uint64;
21 #define ORC_UINT64_C(x) UINT64_C(x)
22 #elif defined(_MSC_VER)
23 typedef signed __int8 orc_int8;
24 typedef signed __int16 orc_int16;
25 typedef signed __int32 orc_int32;
26 typedef signed __int64 orc_int64;
27 typedef unsigned __int8 orc_uint8;
28 typedef unsigned __int16 orc_uint16;
29 typedef unsigned __int32 orc_uint32;
30 typedef unsigned __int64 orc_uint64;
31 #define ORC_UINT64_C(x) (x##Ui64)
32 #define inline __inline
33 #else
34 #include <limits.h>
35 typedef signed char orc_int8;
36 typedef short orc_int16;
37 typedef int orc_int32;
38 typedef unsigned char orc_uint8;
39 typedef unsigned short orc_uint16;
40 typedef unsigned int orc_uint32;
41 #if INT_MAX == LONG_MAX
42 typedef long long orc_int64;
43 typedef unsigned long long orc_uint64;
44 #define ORC_UINT64_C(x) (x##ULL)
45 #else
46 typedef long orc_int64;
47 typedef unsigned long orc_uint64;
48 #define ORC_UINT64_C(x) (x##UL)
49 #endif
50 #endif
51 typedef union
52 {
53   orc_int16 i;
54   orc_int8 x2[2];
55 } orc_union16;
56 typedef union
57 {
58   orc_int32 i;
59   float f;
60   orc_int16 x2[2];
61   orc_int8 x4[4];
62 } orc_union32;
63 typedef union
64 {
65   orc_int64 i;
66   double f;
67   orc_int32 x2[2];
68   float x2f[2];
69   orc_int16 x4[4];
70 } orc_union64;
71 #endif
72 #ifndef ORC_RESTRICT
73 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
74 #define ORC_RESTRICT restrict
75 #elif defined(__GNUC__) && __GNUC__ >= 4
76 #define ORC_RESTRICT __restrict__
77 #else
78 #define ORC_RESTRICT
79 #endif
80 #endif
81 
82 #ifndef ORC_INTERNAL
83 #if defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)
84 #define ORC_INTERNAL __attribute__((visibility("hidden")))
85 #elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)
86 #define ORC_INTERNAL __hidden
87 #elif defined (__GNUC__)
88 #define ORC_INTERNAL __attribute__((visibility("hidden")))
89 #else
90 #define ORC_INTERNAL
91 #endif
92 #endif
93 
94 
95 #ifndef DISABLE_ORC
96 #include <orc/orc.h>
97 #endif
98 void video_orc_blend_little (guint8 * ORC_RESTRICT d1,
99     const guint8 * ORC_RESTRICT s1, int n);
100 void video_orc_blend_big (guint8 * ORC_RESTRICT d1,
101     const guint8 * ORC_RESTRICT s1, int n);
102 void video_orc_unpack_I420 (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 video_orc_pack_I420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
106     guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n);
107 void video_orc_pack_Y (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
108     int n);
109 void video_orc_unpack_YUY2 (guint8 * ORC_RESTRICT d1,
110     const guint8 * ORC_RESTRICT s1, int n);
111 void video_orc_pack_YUY2 (guint8 * ORC_RESTRICT d1,
112     const guint8 * ORC_RESTRICT s1, int n);
113 void video_orc_pack_UYVY (guint8 * ORC_RESTRICT d1,
114     const guint8 * ORC_RESTRICT s1, int n);
115 void video_orc_unpack_UYVY (guint8 * ORC_RESTRICT d1,
116     const guint8 * ORC_RESTRICT s1, int n);
117 void video_orc_pack_VYUY (guint8 * ORC_RESTRICT d1,
118     const guint8 * ORC_RESTRICT s1, int n);
119 void video_orc_unpack_VYUY (guint8 * ORC_RESTRICT d1,
120     const guint8 * ORC_RESTRICT s1, int n);
121 void video_orc_unpack_YVYU (guint8 * ORC_RESTRICT d1,
122     const guint8 * ORC_RESTRICT s1, int n);
123 void video_orc_pack_YVYU (guint8 * ORC_RESTRICT d1,
124     const guint8 * ORC_RESTRICT s1, int n);
125 void video_orc_unpack_YUV9 (guint8 * ORC_RESTRICT d1,
126     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
127     const guint8 * ORC_RESTRICT s3, int n);
128 void video_orc_unpack_Y42B (guint8 * ORC_RESTRICT d1,
129     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
130     const guint8 * ORC_RESTRICT s3, int n);
131 void video_orc_pack_Y42B (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
132     guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n);
133 void video_orc_unpack_Y444 (guint8 * ORC_RESTRICT d1,
134     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
135     const guint8 * ORC_RESTRICT s3, int n);
136 void video_orc_pack_Y444 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
137     guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n);
138 void video_orc_unpack_GRAY8 (guint8 * ORC_RESTRICT d1,
139     const guint8 * ORC_RESTRICT s1, int n);
140 void video_orc_pack_GRAY8 (guint8 * ORC_RESTRICT d1,
141     const guint8 * ORC_RESTRICT s1, int n);
142 void video_orc_unpack_BGRA (guint8 * ORC_RESTRICT d1,
143     const guint8 * ORC_RESTRICT s1, int n);
144 void video_orc_pack_BGRA (guint8 * ORC_RESTRICT d1,
145     const guint8 * ORC_RESTRICT s1, int n);
146 void video_orc_pack_RGBA_le (guint8 * ORC_RESTRICT d1,
147     const guint8 * ORC_RESTRICT s1, int n);
148 void video_orc_unpack_RGBA_le (guint8 * ORC_RESTRICT d1,
149     const guint8 * ORC_RESTRICT s1, int n);
150 void video_orc_pack_RGBA_be (guint8 * ORC_RESTRICT d1,
151     const guint8 * ORC_RESTRICT s1, int n);
152 void video_orc_unpack_RGBA_be (guint8 * ORC_RESTRICT d1,
153     const guint8 * ORC_RESTRICT s1, int n);
154 void video_orc_unpack_ABGR_le (guint8 * ORC_RESTRICT d1,
155     const guint8 * ORC_RESTRICT s1, int n);
156 void video_orc_pack_ABGR_le (guint8 * ORC_RESTRICT d1,
157     const guint8 * ORC_RESTRICT s1, int n);
158 void video_orc_unpack_ABGR_be (guint8 * ORC_RESTRICT d1,
159     const guint8 * ORC_RESTRICT s1, int n);
160 void video_orc_pack_ABGR_be (guint8 * ORC_RESTRICT d1,
161     const guint8 * ORC_RESTRICT s1, int n);
162 void video_orc_unpack_NV12 (guint8 * ORC_RESTRICT d1,
163     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n);
164 void video_orc_pack_NV12 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
165     const guint8 * ORC_RESTRICT s1, int n);
166 void video_orc_unpack_NV21 (guint8 * ORC_RESTRICT d1,
167     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n);
168 void video_orc_pack_NV21 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
169     const guint8 * ORC_RESTRICT s1, int n);
170 void video_orc_unpack_NV24 (guint8 * ORC_RESTRICT d1,
171     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n);
172 void video_orc_pack_NV24 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
173     const guint8 * ORC_RESTRICT s1, int n);
174 void video_orc_unpack_A420 (guint8 * ORC_RESTRICT d1,
175     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
176     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n);
177 void video_orc_pack_A420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
178     guint8 * ORC_RESTRICT d3, guint8 * ORC_RESTRICT d4,
179     const guint8 * ORC_RESTRICT s1, int n);
180 void video_orc_pack_AY (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
181     const guint8 * ORC_RESTRICT s1, int n);
182 void video_orc_unpack_VUYA (guint8 * ORC_RESTRICT d1,
183     const guint8 * ORC_RESTRICT s1, int n);
184 void video_orc_pack_VUYA (guint8 * ORC_RESTRICT d1,
185     const guint8 * ORC_RESTRICT s1, int n);
186 void video_orc_unpack_RGB15_le (guint32 * ORC_RESTRICT d1,
187     const guint16 * ORC_RESTRICT s1, int n);
188 void video_orc_unpack_RGB15_be (guint32 * ORC_RESTRICT d1,
189     const guint16 * ORC_RESTRICT s1, int n);
190 void video_orc_unpack_RGB15_le_trunc (guint32 * ORC_RESTRICT d1,
191     const guint16 * ORC_RESTRICT s1, int n);
192 void video_orc_unpack_RGB15_be_trunc (guint32 * ORC_RESTRICT d1,
193     const guint16 * ORC_RESTRICT s1, int n);
194 void video_orc_pack_RGB15_le (guint16 * ORC_RESTRICT d1,
195     const guint32 * ORC_RESTRICT s1, int n);
196 void video_orc_pack_RGB15_be (guint16 * ORC_RESTRICT d1,
197     const guint32 * ORC_RESTRICT s1, int n);
198 void video_orc_unpack_BGR15_le (guint32 * ORC_RESTRICT d1,
199     const guint16 * ORC_RESTRICT s1, int n);
200 void video_orc_unpack_BGR15_be (guint32 * ORC_RESTRICT d1,
201     const guint16 * ORC_RESTRICT s1, int n);
202 void video_orc_unpack_BGR15_le_trunc (guint32 * ORC_RESTRICT d1,
203     const guint16 * ORC_RESTRICT s1, int n);
204 void video_orc_unpack_BGR15_be_trunc (guint32 * ORC_RESTRICT d1,
205     const guint16 * ORC_RESTRICT s1, int n);
206 void video_orc_pack_BGR15_le (guint16 * ORC_RESTRICT d1,
207     const guint32 * ORC_RESTRICT s1, int n);
208 void video_orc_pack_BGR15_be (guint16 * ORC_RESTRICT d1,
209     const guint32 * ORC_RESTRICT s1, int n);
210 void video_orc_unpack_RGB16 (guint32 * ORC_RESTRICT d1,
211     const guint16 * ORC_RESTRICT s1, int n);
212 void video_orc_unpack_RGB16_trunc (guint32 * ORC_RESTRICT d1,
213     const guint16 * ORC_RESTRICT s1, int n);
214 void video_orc_pack_RGB16_le (guint16 * ORC_RESTRICT d1,
215     const guint32 * ORC_RESTRICT s1, int n);
216 void video_orc_pack_RGB16_be (guint16 * ORC_RESTRICT d1,
217     const guint32 * ORC_RESTRICT s1, int n);
218 void video_orc_unpack_BGR16 (guint32 * ORC_RESTRICT d1,
219     const guint16 * ORC_RESTRICT s1, int n);
220 void video_orc_unpack_BGR16_trunc (guint32 * ORC_RESTRICT d1,
221     const guint16 * ORC_RESTRICT s1, int n);
222 void video_orc_pack_BGR16_le (guint16 * ORC_RESTRICT d1,
223     const guint32 * ORC_RESTRICT s1, int n);
224 void video_orc_pack_BGR16_be (guint16 * ORC_RESTRICT d1,
225     const guint32 * ORC_RESTRICT s1, int n);
226 void video_orc_resample_bilinear_u32 (guint8 * ORC_RESTRICT d1,
227     const guint8 * ORC_RESTRICT s1, int p1, int p2, int n);
228 void video_orc_merge_linear_u8 (orc_uint8 * ORC_RESTRICT d1,
229     const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
230     int p1, int n);
231 void video_orc_memset_2d (guint8 * ORC_RESTRICT d1, int d1_stride, int p1,
232     int n, int m);
233 void video_orc_memcpy_2d (guint8 * ORC_RESTRICT d1, int d1_stride,
234     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
235 void video_orc_convert_u16_to_u8 (guint8 * ORC_RESTRICT d1,
236     const guint16 * ORC_RESTRICT s1, int n);
237 void video_orc_convert_u8_to_u16 (guint16 * ORC_RESTRICT d1,
238     const guint8 * ORC_RESTRICT s1, int n);
239 void video_orc_splat_u16 (guint8 * ORC_RESTRICT d1, int p1, int n);
240 void video_orc_splat_u32 (guint8 * ORC_RESTRICT d1, int p1, int n);
241 void video_orc_splat_u64 (guint8 * ORC_RESTRICT d1, orc_int64 p1, int n);
242 void video_orc_splat2_u64 (guint8 * ORC_RESTRICT d1, int p1, int n);
243 void video_orc_convert_I420_UYVY (guint8 * ORC_RESTRICT d1,
244     guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1,
245     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3,
246     const guint8 * ORC_RESTRICT s4, int n);
247 void video_orc_convert_I420_YUY2 (guint8 * ORC_RESTRICT d1,
248     guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1,
249     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3,
250     const guint8 * ORC_RESTRICT s4, int n);
251 void video_orc_convert_I420_AYUV (guint8 * ORC_RESTRICT d1,
252     guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1,
253     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3,
254     const guint8 * ORC_RESTRICT s4, int p1, int n);
255 void video_orc_convert_YUY2_I420 (guint8 * ORC_RESTRICT d1,
256     guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
257     guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1,
258     const guint8 * ORC_RESTRICT s2, int n);
259 void video_orc_convert_UYVY_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
260     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
261 void video_orc_planar_chroma_420_422 (guint8 * ORC_RESTRICT d1, int d1_stride,
262     guint8 * ORC_RESTRICT d2, int d2_stride, const guint8 * ORC_RESTRICT s1,
263     int s1_stride, int n, int m);
264 void video_orc_planar_chroma_420_444 (guint8 * ORC_RESTRICT d1, int d1_stride,
265     guint8 * ORC_RESTRICT d2, int d2_stride, const guint8 * ORC_RESTRICT s1,
266     int s1_stride, int n, int m);
267 void video_orc_planar_chroma_422_444 (guint8 * ORC_RESTRICT d1, int d1_stride,
268     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
269 void video_orc_planar_chroma_444_422 (guint8 * ORC_RESTRICT d1, int d1_stride,
270     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
271 void video_orc_planar_chroma_444_420 (guint8 * ORC_RESTRICT d1, int d1_stride,
272     const guint8 * ORC_RESTRICT s1, int s1_stride,
273     const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m);
274 void video_orc_planar_chroma_422_420 (guint8 * ORC_RESTRICT d1, int d1_stride,
275     const guint8 * ORC_RESTRICT s1, int s1_stride,
276     const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m);
277 void video_orc_convert_YUY2_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
278     const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m);
279 void video_orc_convert_UYVY_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
280     const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m);
281 void video_orc_convert_YUY2_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride,
282     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
283     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
284 void video_orc_convert_UYVY_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride,
285     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
286     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
287 void video_orc_convert_YUY2_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride,
288     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
289     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
290 void video_orc_convert_UYVY_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride,
291     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
292     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
293 void video_orc_convert_UYVY_I420 (guint8 * ORC_RESTRICT d1,
294     guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
295     guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1,
296     const guint8 * ORC_RESTRICT s2, int n);
297 void video_orc_convert_AYUV_I420 (guint8 * ORC_RESTRICT d1, int d1_stride,
298     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
299     int d3_stride, guint8 * ORC_RESTRICT d4, int d4_stride,
300     const guint8 * ORC_RESTRICT s1, int s1_stride,
301     const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m);
302 void video_orc_convert_AYUV_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
303     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
304 void video_orc_convert_AYUV_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
305     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
306 void video_orc_convert_AYUV_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride,
307     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
308     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
309 void video_orc_convert_AYUV_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride,
310     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
311     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
312 void video_orc_convert_Y42B_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
313     const guint8 * ORC_RESTRICT s1, int s1_stride,
314     const guint8 * ORC_RESTRICT s2, int s2_stride,
315     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m);
316 void video_orc_convert_Y42B_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
317     const guint8 * ORC_RESTRICT s1, int s1_stride,
318     const guint8 * ORC_RESTRICT s2, int s2_stride,
319     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m);
320 void video_orc_convert_Y42B_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
321     const guint8 * ORC_RESTRICT s1, int s1_stride,
322     const guint8 * ORC_RESTRICT s2, int s2_stride,
323     const guint8 * ORC_RESTRICT s3, int s3_stride, int p1, int n, int m);
324 void video_orc_convert_Y444_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
325     const guint8 * ORC_RESTRICT s1, int s1_stride,
326     const guint8 * ORC_RESTRICT s2, int s2_stride,
327     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m);
328 void video_orc_convert_Y444_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
329     const guint8 * ORC_RESTRICT s1, int s1_stride,
330     const guint8 * ORC_RESTRICT s2, int s2_stride,
331     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m);
332 void video_orc_convert_Y444_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
333     const guint8 * ORC_RESTRICT s1, int s1_stride,
334     const guint8 * ORC_RESTRICT s2, int s2_stride,
335     const guint8 * ORC_RESTRICT s3, int s3_stride, int p1, int n, int m);
336 void video_orc_convert_AYUV_ARGB (guint8 * ORC_RESTRICT d1, int d1_stride,
337     const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
338     int p4, int p5, int n, int m);
339 void video_orc_convert_AYUV_BGRA (guint8 * ORC_RESTRICT d1, int d1_stride,
340     const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
341     int p4, int p5, int n, int m);
342 void video_orc_convert_AYUV_ABGR (guint8 * ORC_RESTRICT d1, int d1_stride,
343     const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
344     int p4, int p5, int n, int m);
345 void video_orc_convert_AYUV_RGBA (guint8 * ORC_RESTRICT d1, int d1_stride,
346     const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
347     int p4, int p5, int n, int m);
348 void video_orc_convert_I420_BGRA (guint8 * ORC_RESTRICT d1,
349     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
350     const guint8 * ORC_RESTRICT s3, int p1, int p2, int p3, int p4, int p5,
351     int n);
352 void video_orc_convert_I420_ARGB (guint8 * ORC_RESTRICT d1,
353     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
354     const guint8 * ORC_RESTRICT s3, int p1, int p2, int p3, int p4, int p5,
355     int n);
356 void video_orc_matrix8 (guint8 * ORC_RESTRICT d1,
357     const guint8 * ORC_RESTRICT s1, orc_int64 p1, orc_int64 p2, orc_int64 p3,
358     orc_int64 p4, int n);
359 void _custom_video_orc_matrix8 (guint8 * ORC_RESTRICT d1,
360     const guint8 * ORC_RESTRICT s1, orc_int64 p1, orc_int64 p2, orc_int64 p3,
361     orc_int64 p4, int n);
362 void video_orc_resample_h_near_u32_lq (guint32 * ORC_RESTRICT d1,
363     const guint32 * ORC_RESTRICT s1, int p1, int p2, int n);
364 void video_orc_resample_h_2tap_1u8_lq (guint8 * ORC_RESTRICT d1,
365     const guint8 * ORC_RESTRICT s1, int p1, int p2, int n);
366 void video_orc_resample_h_2tap_4u8_lq (guint32 * ORC_RESTRICT d1,
367     const guint32 * ORC_RESTRICT s1, int p1, int p2, int n);
368 void video_orc_resample_h_2tap_u8_lq (guint8 * ORC_RESTRICT d1,
369     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
370     const gint16 * ORC_RESTRICT s3, const gint16 * ORC_RESTRICT s4, int n);
371 void video_orc_resample_h_2tap_u16 (guint16 * ORC_RESTRICT d1,
372     const guint16 * ORC_RESTRICT s1, const guint16 * ORC_RESTRICT s2,
373     const gint16 * ORC_RESTRICT s3, const gint16 * ORC_RESTRICT s4, int n);
374 void video_orc_resample_v_2tap_u8_lq (guint8 * ORC_RESTRICT d1,
375     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int p1,
376     int n);
377 void video_orc_resample_v_2tap_u16 (guint16 * ORC_RESTRICT d1,
378     const guint16 * ORC_RESTRICT s1, const guint16 * ORC_RESTRICT s2, int p1,
379     int n);
380 void video_orc_resample_v_2tap_u8 (guint8 * ORC_RESTRICT d1,
381     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int p1,
382     int n);
383 void video_orc_resample_v_4tap_u8_lq (guint8 * ORC_RESTRICT d1,
384     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
385     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int p1,
386     int p2, int p3, int p4, int n);
387 void video_orc_resample_v_4tap_u8 (guint8 * ORC_RESTRICT d1,
388     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
389     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int p1,
390     int p2, int p3, int p4, int n);
391 void video_orc_resample_h_multaps_u8 (gint32 * ORC_RESTRICT d1,
392     const guint8 * ORC_RESTRICT s1, const gint16 * ORC_RESTRICT s2, int n);
393 void video_orc_resample_h_muladdtaps_u8 (gint32 * ORC_RESTRICT d1,
394     int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride,
395     const gint16 * ORC_RESTRICT s2, int s2_stride, int n, int m);
396 void video_orc_resample_scaletaps_u8 (guint8 * ORC_RESTRICT d1,
397     const gint32 * ORC_RESTRICT s1, int n);
398 void video_orc_resample_h_multaps_u8_lq (gint16 * ORC_RESTRICT d1,
399     const guint8 * ORC_RESTRICT s1, const gint16 * ORC_RESTRICT s2, int n);
400 void video_orc_resample_h_muladdtaps_u8_lq (gint16 * ORC_RESTRICT d1,
401     int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride,
402     const gint16 * ORC_RESTRICT s2, int s2_stride, int n, int m);
403 void video_orc_resample_h_multaps3_u8_lq (gint16 * ORC_RESTRICT d1,
404     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
405     const guint8 * ORC_RESTRICT s3, const gint16 * ORC_RESTRICT s4,
406     const gint16 * ORC_RESTRICT s5, const gint16 * ORC_RESTRICT s6, int n);
407 void video_orc_resample_h_muladdtaps3_u8_lq (gint16 * ORC_RESTRICT d1,
408     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
409     const guint8 * ORC_RESTRICT s3, const gint16 * ORC_RESTRICT s4,
410     const gint16 * ORC_RESTRICT s5, const gint16 * ORC_RESTRICT s6, int n);
411 void video_orc_resample_h_muladdscaletaps3_u8_lq (guint8 * ORC_RESTRICT d1,
412     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
413     const guint8 * ORC_RESTRICT s3, const gint16 * ORC_RESTRICT s4,
414     const gint16 * ORC_RESTRICT s5, const gint16 * ORC_RESTRICT s6,
415     const gint16 * ORC_RESTRICT s7, int n);
416 void video_orc_resample_scaletaps_u8_lq (guint8 * ORC_RESTRICT d1,
417     const gint16 * ORC_RESTRICT s1, int n);
418 void video_orc_resample_h_multaps_u16 (gint32 * ORC_RESTRICT d1,
419     const guint16 * ORC_RESTRICT s1, const gint16 * ORC_RESTRICT s2, int n);
420 void video_orc_resample_h_muladdtaps_u16 (gint32 * ORC_RESTRICT d1,
421     int d1_stride, const guint16 * ORC_RESTRICT s1, int s1_stride,
422     const gint16 * ORC_RESTRICT s2, int s2_stride, int n, int m);
423 void video_orc_resample_scaletaps_u16 (guint16 * ORC_RESTRICT d1,
424     const gint32 * ORC_RESTRICT s1, int n);
425 void video_orc_resample_v_multaps_u8 (gint32 * ORC_RESTRICT d1,
426     const guint8 * ORC_RESTRICT s1, int p1, int n);
427 void video_orc_resample_v_muladdtaps_u8 (gint32 * ORC_RESTRICT d1,
428     const guint8 * ORC_RESTRICT s1, int p1, int n);
429 void video_orc_resample_v_multaps_u16 (gint32 * ORC_RESTRICT d1,
430     const guint16 * ORC_RESTRICT s1, int p1, int n);
431 void video_orc_resample_v_muladdtaps_u16 (gint32 * ORC_RESTRICT d1,
432     const guint16 * ORC_RESTRICT s1, int p1, int n);
433 void video_orc_resample_v_multaps_u8_lq (gint16 * ORC_RESTRICT d1,
434     const guint8 * ORC_RESTRICT s1, int p1, int n);
435 void video_orc_resample_v_multaps4_u8_lq (gint16 * ORC_RESTRICT d1,
436     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
437     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int p1,
438     int p2, int p3, int p4, int n);
439 void video_orc_resample_v_muladdtaps_u8_lq (gint16 * ORC_RESTRICT d1,
440     const guint8 * ORC_RESTRICT s1, int p1, int n);
441 void video_orc_resample_v_muladdtaps4_u8_lq (gint16 * ORC_RESTRICT d1,
442     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
443     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int p1,
444     int p2, int p3, int p4, int n);
445 void video_orc_resample_v_muladdscaletaps4_u8_lq (guint8 * ORC_RESTRICT d1,
446     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
447     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4,
448     const gint16 * ORC_RESTRICT s5, int p1, int p2, int p3, int p4, int n);
449 void video_orc_chroma_down_h2_u8 (guint8 * ORC_RESTRICT d1,
450     const guint8 * ORC_RESTRICT s1, int n);
451 void video_orc_chroma_down_v2_u8 (guint8 * ORC_RESTRICT d1,
452     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n);
453 void video_orc_chroma_up_v2_u8 (guint8 * ORC_RESTRICT d1,
454     guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1,
455     const guint8 * ORC_RESTRICT s2, int n);
456 void video_orc_chroma_up_v2_u16 (guint16 * ORC_RESTRICT d1,
457     guint16 * ORC_RESTRICT d2, const guint16 * ORC_RESTRICT s1,
458     const guint16 * ORC_RESTRICT s2, int n);
459 void video_orc_chroma_down_v2_u16 (guint16 * ORC_RESTRICT d1,
460     const guint16 * ORC_RESTRICT s1, const guint16 * ORC_RESTRICT s2, int n);
461 void video_orc_chroma_down_v4_u8 (guint8 * ORC_RESTRICT d1,
462     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
463     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n);
464 void video_orc_chroma_down_v4_u16 (guint16 * ORC_RESTRICT d1,
465     const guint16 * ORC_RESTRICT s1, const guint16 * ORC_RESTRICT s2,
466     const guint16 * ORC_RESTRICT s3, const guint16 * ORC_RESTRICT s4, int n);
467 void video_orc_dither_none_4u8_mask (guint8 * ORC_RESTRICT d1, int p1, int n);
468 void video_orc_dither_none_4u16_mask (guint16 * ORC_RESTRICT d1, orc_int64 p1,
469     int n);
470 void video_orc_dither_verterr_4u8_mask (guint8 * ORC_RESTRICT d1,
471     guint16 * ORC_RESTRICT d2, orc_int64 p1, int n);
472 void video_orc_dither_fs_muladd_u8 (guint16 * ORC_RESTRICT d1, int n);
473 void video_orc_dither_ordered_u8 (guint8 * ORC_RESTRICT d1,
474     const guint8 * ORC_RESTRICT s1, int n);
475 void video_orc_dither_ordered_4u8_mask (guint8 * ORC_RESTRICT d1,
476     const guint16 * ORC_RESTRICT s1, orc_int64 p1, int n);
477 void video_orc_dither_ordered_4u16_mask (guint16 * ORC_RESTRICT d1,
478     const guint16 * ORC_RESTRICT s1, orc_int64 p1, int n);
479 void video_orc_convert_UYVY_GRAY8 (guint8 * ORC_RESTRICT d1, int d1_stride,
480     const orc_uint16 * ORC_RESTRICT s1, int s1_stride, int n, int m);
481 
482 
483 /* begin Orc C target preamble */
484 #define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x)))
485 #define ORC_ABS(a) ((a)<0 ? -(a) : (a))
486 #define ORC_MIN(a,b) ((a)<(b) ? (a) : (b))
487 #define ORC_MAX(a,b) ((a)>(b) ? (a) : (b))
488 #define ORC_SB_MAX 127
489 #define ORC_SB_MIN (-1-ORC_SB_MAX)
490 #define ORC_UB_MAX (orc_uint8) 255
491 #define ORC_UB_MIN 0
492 #define ORC_SW_MAX 32767
493 #define ORC_SW_MIN (-1-ORC_SW_MAX)
494 #define ORC_UW_MAX (orc_uint16)65535
495 #define ORC_UW_MIN 0
496 #define ORC_SL_MAX 2147483647
497 #define ORC_SL_MIN (-1-ORC_SL_MAX)
498 #define ORC_UL_MAX 4294967295U
499 #define ORC_UL_MIN 0
500 #define ORC_CLAMP_SB(x) ORC_CLAMP(x,ORC_SB_MIN,ORC_SB_MAX)
501 #define ORC_CLAMP_UB(x) ORC_CLAMP(x,ORC_UB_MIN,ORC_UB_MAX)
502 #define ORC_CLAMP_SW(x) ORC_CLAMP(x,ORC_SW_MIN,ORC_SW_MAX)
503 #define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX)
504 #define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX)
505 #define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX)
506 #define ORC_SWAP_W(x) ((((x)&0xffU)<<8) | (((x)&0xff00U)>>8))
507 #define ORC_SWAP_L(x) ((((x)&0xffU)<<24) | (((x)&0xff00U)<<8) | (((x)&0xff0000U)>>8) | (((x)&0xff000000U)>>24))
508 #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))
509 #define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset)))
510 #define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff))
511 #define ORC_ISNAN(x) ((((x)&0x7f800000) == 0x7f800000) && (((x)&0x007fffff) != 0))
512 #define ORC_DENORMAL_DOUBLE(x) ((x) & ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == 0) ? ORC_UINT64_C(0xfff0000000000000) : ORC_UINT64_C(0xffffffffffffffff)))
513 #define ORC_ISNAN_DOUBLE(x) ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == ORC_UINT64_C(0x7ff0000000000000)) && (((x)&ORC_UINT64_C(0x000fffffffffffff)) != 0))
514 #ifndef ORC_RESTRICT
515 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
516 #define ORC_RESTRICT restrict
517 #elif defined(__GNUC__) && __GNUC__ >= 4
518 #define ORC_RESTRICT __restrict__
519 #else
520 #define ORC_RESTRICT
521 #endif
522 #endif
523 /* end Orc C target preamble */
524 
525 
526 
527 /* video_orc_blend_little */
528 #ifdef DISABLE_ORC
529 void
video_orc_blend_little(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)530 video_orc_blend_little (guint8 * ORC_RESTRICT d1,
531     const guint8 * ORC_RESTRICT s1, int n)
532 {
533   int i;
534   orc_union32 *ORC_RESTRICT ptr0;
535   const orc_union32 *ORC_RESTRICT ptr4;
536 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
537   volatile orc_union32 var39;
538 #else
539   orc_union32 var39;
540 #endif
541   orc_union32 var40;
542   orc_union16 var41;
543   orc_int8 var42;
544   orc_union32 var43;
545   orc_union64 var44;
546   orc_union64 var45;
547   orc_union64 var46;
548   orc_union32 var47;
549   orc_union64 var48;
550   orc_union64 var49;
551   orc_union64 var50;
552   orc_union64 var51;
553   orc_union64 var52;
554   orc_union32 var53;
555   orc_union32 var54;
556 
557   ptr0 = (orc_union32 *) d1;
558   ptr4 = (orc_union32 *) s1;
559 
560   /* 14: loadpl */
561   var39.i = 0x000000ff;         /* 255 or 1.25987e-321f */
562 
563   for (i = 0; i < n; i++) {
564     /* 0: loadl */
565     var40 = ptr4[i];
566     /* 1: convlw */
567     var41.i = var40.i;
568     /* 2: convwb */
569     var42 = var41.i;
570     /* 3: splatbl */
571     var43.i =
572         ((((orc_uint32) var42) & 0xff) << 24) | ((((orc_uint32) var42) & 0xff)
573         << 16) | ((((orc_uint32) var42) & 0xff) << 8) | (((orc_uint32) var42) &
574         0xff);
575     /* 4: convubw */
576     var44.x4[0] = (orc_uint8) var43.x4[0];
577     var44.x4[1] = (orc_uint8) var43.x4[1];
578     var44.x4[2] = (orc_uint8) var43.x4[2];
579     var44.x4[3] = (orc_uint8) var43.x4[3];
580     /* 5: shruw */
581     var45.x4[0] = ((orc_uint16) var44.x4[0]) >> 8;
582     var45.x4[1] = ((orc_uint16) var44.x4[1]) >> 8;
583     var45.x4[2] = ((orc_uint16) var44.x4[2]) >> 8;
584     var45.x4[3] = ((orc_uint16) var44.x4[3]) >> 8;
585     /* 6: convubw */
586     var46.x4[0] = (orc_uint8) var40.x4[0];
587     var46.x4[1] = (orc_uint8) var40.x4[1];
588     var46.x4[2] = (orc_uint8) var40.x4[2];
589     var46.x4[3] = (orc_uint8) var40.x4[3];
590     /* 7: loadl */
591     var47 = ptr0[i];
592     /* 8: convubw */
593     var48.x4[0] = (orc_uint8) var47.x4[0];
594     var48.x4[1] = (orc_uint8) var47.x4[1];
595     var48.x4[2] = (orc_uint8) var47.x4[2];
596     var48.x4[3] = (orc_uint8) var47.x4[3];
597     /* 9: subw */
598     var49.x4[0] = var46.x4[0] - var48.x4[0];
599     var49.x4[1] = var46.x4[1] - var48.x4[1];
600     var49.x4[2] = var46.x4[2] - var48.x4[2];
601     var49.x4[3] = var46.x4[3] - var48.x4[3];
602     /* 10: mullw */
603     var50.x4[0] = (var49.x4[0] * var45.x4[0]) & 0xffff;
604     var50.x4[1] = (var49.x4[1] * var45.x4[1]) & 0xffff;
605     var50.x4[2] = (var49.x4[2] * var45.x4[2]) & 0xffff;
606     var50.x4[3] = (var49.x4[3] * var45.x4[3]) & 0xffff;
607     /* 11: div255w */
608     var51.x4[0] =
609         ((orc_uint16) (((orc_uint16) (var50.x4[0] + 128)) +
610             (((orc_uint16) (var50.x4[0] + 128)) >> 8))) >> 8;
611     var51.x4[1] =
612         ((orc_uint16) (((orc_uint16) (var50.x4[1] + 128)) +
613             (((orc_uint16) (var50.x4[1] + 128)) >> 8))) >> 8;
614     var51.x4[2] =
615         ((orc_uint16) (((orc_uint16) (var50.x4[2] + 128)) +
616             (((orc_uint16) (var50.x4[2] + 128)) >> 8))) >> 8;
617     var51.x4[3] =
618         ((orc_uint16) (((orc_uint16) (var50.x4[3] + 128)) +
619             (((orc_uint16) (var50.x4[3] + 128)) >> 8))) >> 8;
620     /* 12: addw */
621     var52.x4[0] = var48.x4[0] + var51.x4[0];
622     var52.x4[1] = var48.x4[1] + var51.x4[1];
623     var52.x4[2] = var48.x4[2] + var51.x4[2];
624     var52.x4[3] = var48.x4[3] + var51.x4[3];
625     /* 13: convwb */
626     var53.x4[0] = var52.x4[0];
627     var53.x4[1] = var52.x4[1];
628     var53.x4[2] = var52.x4[2];
629     var53.x4[3] = var52.x4[3];
630     /* 15: orl */
631     var54.i = var53.i | var39.i;
632     /* 16: storel */
633     ptr0[i] = var54;
634   }
635 
636 }
637 
638 #else
639 static void
_backup_video_orc_blend_little(OrcExecutor * ORC_RESTRICT ex)640 _backup_video_orc_blend_little (OrcExecutor * ORC_RESTRICT ex)
641 {
642   int i;
643   int n = ex->n;
644   orc_union32 *ORC_RESTRICT ptr0;
645   const orc_union32 *ORC_RESTRICT ptr4;
646 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
647   volatile orc_union32 var39;
648 #else
649   orc_union32 var39;
650 #endif
651   orc_union32 var40;
652   orc_union16 var41;
653   orc_int8 var42;
654   orc_union32 var43;
655   orc_union64 var44;
656   orc_union64 var45;
657   orc_union64 var46;
658   orc_union32 var47;
659   orc_union64 var48;
660   orc_union64 var49;
661   orc_union64 var50;
662   orc_union64 var51;
663   orc_union64 var52;
664   orc_union32 var53;
665   orc_union32 var54;
666 
667   ptr0 = (orc_union32 *) ex->arrays[0];
668   ptr4 = (orc_union32 *) ex->arrays[4];
669 
670   /* 14: loadpl */
671   var39.i = 0x000000ff;         /* 255 or 1.25987e-321f */
672 
673   for (i = 0; i < n; i++) {
674     /* 0: loadl */
675     var40 = ptr4[i];
676     /* 1: convlw */
677     var41.i = var40.i;
678     /* 2: convwb */
679     var42 = var41.i;
680     /* 3: splatbl */
681     var43.i =
682         ((((orc_uint32) var42) & 0xff) << 24) | ((((orc_uint32) var42) & 0xff)
683         << 16) | ((((orc_uint32) var42) & 0xff) << 8) | (((orc_uint32) var42) &
684         0xff);
685     /* 4: convubw */
686     var44.x4[0] = (orc_uint8) var43.x4[0];
687     var44.x4[1] = (orc_uint8) var43.x4[1];
688     var44.x4[2] = (orc_uint8) var43.x4[2];
689     var44.x4[3] = (orc_uint8) var43.x4[3];
690     /* 5: shruw */
691     var45.x4[0] = ((orc_uint16) var44.x4[0]) >> 8;
692     var45.x4[1] = ((orc_uint16) var44.x4[1]) >> 8;
693     var45.x4[2] = ((orc_uint16) var44.x4[2]) >> 8;
694     var45.x4[3] = ((orc_uint16) var44.x4[3]) >> 8;
695     /* 6: convubw */
696     var46.x4[0] = (orc_uint8) var40.x4[0];
697     var46.x4[1] = (orc_uint8) var40.x4[1];
698     var46.x4[2] = (orc_uint8) var40.x4[2];
699     var46.x4[3] = (orc_uint8) var40.x4[3];
700     /* 7: loadl */
701     var47 = ptr0[i];
702     /* 8: convubw */
703     var48.x4[0] = (orc_uint8) var47.x4[0];
704     var48.x4[1] = (orc_uint8) var47.x4[1];
705     var48.x4[2] = (orc_uint8) var47.x4[2];
706     var48.x4[3] = (orc_uint8) var47.x4[3];
707     /* 9: subw */
708     var49.x4[0] = var46.x4[0] - var48.x4[0];
709     var49.x4[1] = var46.x4[1] - var48.x4[1];
710     var49.x4[2] = var46.x4[2] - var48.x4[2];
711     var49.x4[3] = var46.x4[3] - var48.x4[3];
712     /* 10: mullw */
713     var50.x4[0] = (var49.x4[0] * var45.x4[0]) & 0xffff;
714     var50.x4[1] = (var49.x4[1] * var45.x4[1]) & 0xffff;
715     var50.x4[2] = (var49.x4[2] * var45.x4[2]) & 0xffff;
716     var50.x4[3] = (var49.x4[3] * var45.x4[3]) & 0xffff;
717     /* 11: div255w */
718     var51.x4[0] =
719         ((orc_uint16) (((orc_uint16) (var50.x4[0] + 128)) +
720             (((orc_uint16) (var50.x4[0] + 128)) >> 8))) >> 8;
721     var51.x4[1] =
722         ((orc_uint16) (((orc_uint16) (var50.x4[1] + 128)) +
723             (((orc_uint16) (var50.x4[1] + 128)) >> 8))) >> 8;
724     var51.x4[2] =
725         ((orc_uint16) (((orc_uint16) (var50.x4[2] + 128)) +
726             (((orc_uint16) (var50.x4[2] + 128)) >> 8))) >> 8;
727     var51.x4[3] =
728         ((orc_uint16) (((orc_uint16) (var50.x4[3] + 128)) +
729             (((orc_uint16) (var50.x4[3] + 128)) >> 8))) >> 8;
730     /* 12: addw */
731     var52.x4[0] = var48.x4[0] + var51.x4[0];
732     var52.x4[1] = var48.x4[1] + var51.x4[1];
733     var52.x4[2] = var48.x4[2] + var51.x4[2];
734     var52.x4[3] = var48.x4[3] + var51.x4[3];
735     /* 13: convwb */
736     var53.x4[0] = var52.x4[0];
737     var53.x4[1] = var52.x4[1];
738     var53.x4[2] = var52.x4[2];
739     var53.x4[3] = var52.x4[3];
740     /* 15: orl */
741     var54.i = var53.i | var39.i;
742     /* 16: storel */
743     ptr0[i] = var54;
744   }
745 
746 }
747 
748 void
video_orc_blend_little(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)749 video_orc_blend_little (guint8 * ORC_RESTRICT d1,
750     const guint8 * ORC_RESTRICT s1, int n)
751 {
752   OrcExecutor _ex, *ex = &_ex;
753   static volatile int p_inited = 0;
754   static OrcCode *c = 0;
755   void (*func) (OrcExecutor *);
756 
757   if (!p_inited) {
758     orc_once_mutex_lock ();
759     if (!p_inited) {
760       OrcProgram *p;
761 
762 #if 1
763       static const orc_uint8 bc[] = {
764         1, 9, 22, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 98, 108, 101,
765         110, 100, 95, 108, 105, 116, 116, 108, 101, 11, 4, 4, 12, 4, 4, 14,
766         4, 255, 0, 0, 0, 14, 2, 8, 0, 0, 0, 20, 4, 20, 2, 20,
767         1, 20, 4, 20, 8, 20, 8, 20, 8, 113, 32, 4, 163, 33, 32, 157,
768         34, 33, 152, 35, 34, 21, 2, 150, 38, 35, 21, 2, 95, 38, 38, 17,
769         21, 2, 150, 37, 32, 113, 32, 0, 21, 2, 150, 36, 32, 21, 2, 98,
770         37, 37, 36, 21, 2, 89, 37, 37, 38, 21, 2, 80, 37, 37, 21, 2,
771         70, 36, 36, 37, 21, 2, 157, 32, 36, 123, 32, 32, 16, 128, 0, 32,
772         2, 0,
773       };
774       p = orc_program_new_from_static_bytecode (bc);
775       orc_program_set_backup_function (p, _backup_video_orc_blend_little);
776 #else
777       p = orc_program_new ();
778       orc_program_set_name (p, "video_orc_blend_little");
779       orc_program_set_backup_function (p, _backup_video_orc_blend_little);
780       orc_program_add_destination (p, 4, "d1");
781       orc_program_add_source (p, 4, "s1");
782       orc_program_add_constant (p, 4, 0x000000ff, "c1");
783       orc_program_add_constant (p, 2, 0x00000008, "c2");
784       orc_program_add_temporary (p, 4, "t1");
785       orc_program_add_temporary (p, 2, "t2");
786       orc_program_add_temporary (p, 1, "t3");
787       orc_program_add_temporary (p, 4, "t4");
788       orc_program_add_temporary (p, 8, "t5");
789       orc_program_add_temporary (p, 8, "t6");
790       orc_program_add_temporary (p, 8, "t7");
791 
792       orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
793           ORC_VAR_D1);
794       orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1,
795           ORC_VAR_D1);
796       orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1,
797           ORC_VAR_D1);
798       orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1,
799           ORC_VAR_D1);
800       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1,
801           ORC_VAR_D1);
802       orc_program_append_2 (p, "shruw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2,
803           ORC_VAR_D1);
804       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_D1,
805           ORC_VAR_D1);
806       orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1,
807           ORC_VAR_D1);
808       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_D1,
809           ORC_VAR_D1);
810       orc_program_append_2 (p, "subw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T5,
811           ORC_VAR_D1);
812       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T7,
813           ORC_VAR_D1);
814       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1,
815           ORC_VAR_D1);
816       orc_program_append_2 (p, "addw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T6,
817           ORC_VAR_D1);
818       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_D1,
819           ORC_VAR_D1);
820       orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
821           ORC_VAR_D1);
822       orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
823           ORC_VAR_D1);
824 #endif
825 
826       orc_program_compile (p);
827       c = orc_program_take_code (p);
828       orc_program_free (p);
829     }
830     p_inited = TRUE;
831     orc_once_mutex_unlock ();
832   }
833   ex->arrays[ORC_VAR_A2] = c;
834   ex->program = 0;
835 
836   ex->n = n;
837   ex->arrays[ORC_VAR_D1] = d1;
838   ex->arrays[ORC_VAR_S1] = (void *) s1;
839 
840   func = c->exec;
841   func (ex);
842 }
843 #endif
844 
845 
846 /* video_orc_blend_big */
847 #ifdef DISABLE_ORC
848 void
video_orc_blend_big(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)849 video_orc_blend_big (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
850     int n)
851 {
852   int i;
853   orc_union32 *ORC_RESTRICT ptr0;
854   const orc_union32 *ORC_RESTRICT ptr4;
855 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
856   volatile orc_union32 var40;
857 #else
858   orc_union32 var40;
859 #endif
860   orc_union32 var41;
861   orc_union32 var42;
862   orc_union16 var43;
863   orc_int8 var44;
864   orc_union32 var45;
865   orc_union64 var46;
866   orc_union64 var47;
867   orc_union64 var48;
868   orc_union32 var49;
869   orc_union64 var50;
870   orc_union64 var51;
871   orc_union64 var52;
872   orc_union64 var53;
873   orc_union64 var54;
874   orc_union32 var55;
875   orc_union32 var56;
876 
877   ptr0 = (orc_union32 *) d1;
878   ptr4 = (orc_union32 *) s1;
879 
880   /* 15: loadpl */
881   var40.i = 0xff000000;         /* -16777216 or 2.11371e-314f */
882 
883   for (i = 0; i < n; i++) {
884     /* 0: loadl */
885     var41 = ptr4[i];
886     /* 1: shrul */
887     var42.i = ((orc_uint32) var41.i) >> 24;
888     /* 2: convlw */
889     var43.i = var42.i;
890     /* 3: convwb */
891     var44 = var43.i;
892     /* 4: splatbl */
893     var45.i =
894         ((((orc_uint32) var44) & 0xff) << 24) | ((((orc_uint32) var44) & 0xff)
895         << 16) | ((((orc_uint32) var44) & 0xff) << 8) | (((orc_uint32) var44) &
896         0xff);
897     /* 5: convubw */
898     var46.x4[0] = (orc_uint8) var45.x4[0];
899     var46.x4[1] = (orc_uint8) var45.x4[1];
900     var46.x4[2] = (orc_uint8) var45.x4[2];
901     var46.x4[3] = (orc_uint8) var45.x4[3];
902     /* 6: shruw */
903     var47.x4[0] = ((orc_uint16) var46.x4[0]) >> 8;
904     var47.x4[1] = ((orc_uint16) var46.x4[1]) >> 8;
905     var47.x4[2] = ((orc_uint16) var46.x4[2]) >> 8;
906     var47.x4[3] = ((orc_uint16) var46.x4[3]) >> 8;
907     /* 7: convubw */
908     var48.x4[0] = (orc_uint8) var41.x4[0];
909     var48.x4[1] = (orc_uint8) var41.x4[1];
910     var48.x4[2] = (orc_uint8) var41.x4[2];
911     var48.x4[3] = (orc_uint8) var41.x4[3];
912     /* 8: loadl */
913     var49 = ptr0[i];
914     /* 9: convubw */
915     var50.x4[0] = (orc_uint8) var49.x4[0];
916     var50.x4[1] = (orc_uint8) var49.x4[1];
917     var50.x4[2] = (orc_uint8) var49.x4[2];
918     var50.x4[3] = (orc_uint8) var49.x4[3];
919     /* 10: subw */
920     var51.x4[0] = var48.x4[0] - var50.x4[0];
921     var51.x4[1] = var48.x4[1] - var50.x4[1];
922     var51.x4[2] = var48.x4[2] - var50.x4[2];
923     var51.x4[3] = var48.x4[3] - var50.x4[3];
924     /* 11: mullw */
925     var52.x4[0] = (var51.x4[0] * var47.x4[0]) & 0xffff;
926     var52.x4[1] = (var51.x4[1] * var47.x4[1]) & 0xffff;
927     var52.x4[2] = (var51.x4[2] * var47.x4[2]) & 0xffff;
928     var52.x4[3] = (var51.x4[3] * var47.x4[3]) & 0xffff;
929     /* 12: div255w */
930     var53.x4[0] =
931         ((orc_uint16) (((orc_uint16) (var52.x4[0] + 128)) +
932             (((orc_uint16) (var52.x4[0] + 128)) >> 8))) >> 8;
933     var53.x4[1] =
934         ((orc_uint16) (((orc_uint16) (var52.x4[1] + 128)) +
935             (((orc_uint16) (var52.x4[1] + 128)) >> 8))) >> 8;
936     var53.x4[2] =
937         ((orc_uint16) (((orc_uint16) (var52.x4[2] + 128)) +
938             (((orc_uint16) (var52.x4[2] + 128)) >> 8))) >> 8;
939     var53.x4[3] =
940         ((orc_uint16) (((orc_uint16) (var52.x4[3] + 128)) +
941             (((orc_uint16) (var52.x4[3] + 128)) >> 8))) >> 8;
942     /* 13: addw */
943     var54.x4[0] = var50.x4[0] + var53.x4[0];
944     var54.x4[1] = var50.x4[1] + var53.x4[1];
945     var54.x4[2] = var50.x4[2] + var53.x4[2];
946     var54.x4[3] = var50.x4[3] + var53.x4[3];
947     /* 14: convwb */
948     var55.x4[0] = var54.x4[0];
949     var55.x4[1] = var54.x4[1];
950     var55.x4[2] = var54.x4[2];
951     var55.x4[3] = var54.x4[3];
952     /* 16: orl */
953     var56.i = var55.i | var40.i;
954     /* 17: storel */
955     ptr0[i] = var56;
956   }
957 
958 }
959 
960 #else
961 static void
_backup_video_orc_blend_big(OrcExecutor * ORC_RESTRICT ex)962 _backup_video_orc_blend_big (OrcExecutor * ORC_RESTRICT ex)
963 {
964   int i;
965   int n = ex->n;
966   orc_union32 *ORC_RESTRICT ptr0;
967   const orc_union32 *ORC_RESTRICT ptr4;
968 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
969   volatile orc_union32 var40;
970 #else
971   orc_union32 var40;
972 #endif
973   orc_union32 var41;
974   orc_union32 var42;
975   orc_union16 var43;
976   orc_int8 var44;
977   orc_union32 var45;
978   orc_union64 var46;
979   orc_union64 var47;
980   orc_union64 var48;
981   orc_union32 var49;
982   orc_union64 var50;
983   orc_union64 var51;
984   orc_union64 var52;
985   orc_union64 var53;
986   orc_union64 var54;
987   orc_union32 var55;
988   orc_union32 var56;
989 
990   ptr0 = (orc_union32 *) ex->arrays[0];
991   ptr4 = (orc_union32 *) ex->arrays[4];
992 
993   /* 15: loadpl */
994   var40.i = 0xff000000;         /* -16777216 or 2.11371e-314f */
995 
996   for (i = 0; i < n; i++) {
997     /* 0: loadl */
998     var41 = ptr4[i];
999     /* 1: shrul */
1000     var42.i = ((orc_uint32) var41.i) >> 24;
1001     /* 2: convlw */
1002     var43.i = var42.i;
1003     /* 3: convwb */
1004     var44 = var43.i;
1005     /* 4: splatbl */
1006     var45.i =
1007         ((((orc_uint32) var44) & 0xff) << 24) | ((((orc_uint32) var44) & 0xff)
1008         << 16) | ((((orc_uint32) var44) & 0xff) << 8) | (((orc_uint32) var44) &
1009         0xff);
1010     /* 5: convubw */
1011     var46.x4[0] = (orc_uint8) var45.x4[0];
1012     var46.x4[1] = (orc_uint8) var45.x4[1];
1013     var46.x4[2] = (orc_uint8) var45.x4[2];
1014     var46.x4[3] = (orc_uint8) var45.x4[3];
1015     /* 6: shruw */
1016     var47.x4[0] = ((orc_uint16) var46.x4[0]) >> 8;
1017     var47.x4[1] = ((orc_uint16) var46.x4[1]) >> 8;
1018     var47.x4[2] = ((orc_uint16) var46.x4[2]) >> 8;
1019     var47.x4[3] = ((orc_uint16) var46.x4[3]) >> 8;
1020     /* 7: convubw */
1021     var48.x4[0] = (orc_uint8) var41.x4[0];
1022     var48.x4[1] = (orc_uint8) var41.x4[1];
1023     var48.x4[2] = (orc_uint8) var41.x4[2];
1024     var48.x4[3] = (orc_uint8) var41.x4[3];
1025     /* 8: loadl */
1026     var49 = ptr0[i];
1027     /* 9: convubw */
1028     var50.x4[0] = (orc_uint8) var49.x4[0];
1029     var50.x4[1] = (orc_uint8) var49.x4[1];
1030     var50.x4[2] = (orc_uint8) var49.x4[2];
1031     var50.x4[3] = (orc_uint8) var49.x4[3];
1032     /* 10: subw */
1033     var51.x4[0] = var48.x4[0] - var50.x4[0];
1034     var51.x4[1] = var48.x4[1] - var50.x4[1];
1035     var51.x4[2] = var48.x4[2] - var50.x4[2];
1036     var51.x4[3] = var48.x4[3] - var50.x4[3];
1037     /* 11: mullw */
1038     var52.x4[0] = (var51.x4[0] * var47.x4[0]) & 0xffff;
1039     var52.x4[1] = (var51.x4[1] * var47.x4[1]) & 0xffff;
1040     var52.x4[2] = (var51.x4[2] * var47.x4[2]) & 0xffff;
1041     var52.x4[3] = (var51.x4[3] * var47.x4[3]) & 0xffff;
1042     /* 12: div255w */
1043     var53.x4[0] =
1044         ((orc_uint16) (((orc_uint16) (var52.x4[0] + 128)) +
1045             (((orc_uint16) (var52.x4[0] + 128)) >> 8))) >> 8;
1046     var53.x4[1] =
1047         ((orc_uint16) (((orc_uint16) (var52.x4[1] + 128)) +
1048             (((orc_uint16) (var52.x4[1] + 128)) >> 8))) >> 8;
1049     var53.x4[2] =
1050         ((orc_uint16) (((orc_uint16) (var52.x4[2] + 128)) +
1051             (((orc_uint16) (var52.x4[2] + 128)) >> 8))) >> 8;
1052     var53.x4[3] =
1053         ((orc_uint16) (((orc_uint16) (var52.x4[3] + 128)) +
1054             (((orc_uint16) (var52.x4[3] + 128)) >> 8))) >> 8;
1055     /* 13: addw */
1056     var54.x4[0] = var50.x4[0] + var53.x4[0];
1057     var54.x4[1] = var50.x4[1] + var53.x4[1];
1058     var54.x4[2] = var50.x4[2] + var53.x4[2];
1059     var54.x4[3] = var50.x4[3] + var53.x4[3];
1060     /* 14: convwb */
1061     var55.x4[0] = var54.x4[0];
1062     var55.x4[1] = var54.x4[1];
1063     var55.x4[2] = var54.x4[2];
1064     var55.x4[3] = var54.x4[3];
1065     /* 16: orl */
1066     var56.i = var55.i | var40.i;
1067     /* 17: storel */
1068     ptr0[i] = var56;
1069   }
1070 
1071 }
1072 
1073 void
video_orc_blend_big(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)1074 video_orc_blend_big (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
1075     int n)
1076 {
1077   OrcExecutor _ex, *ex = &_ex;
1078   static volatile int p_inited = 0;
1079   static OrcCode *c = 0;
1080   void (*func) (OrcExecutor *);
1081 
1082   if (!p_inited) {
1083     orc_once_mutex_lock ();
1084     if (!p_inited) {
1085       OrcProgram *p;
1086 
1087 #if 1
1088       static const orc_uint8 bc[] = {
1089         1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 98, 108, 101,
1090         110, 100, 95, 98, 105, 103, 11, 4, 4, 12, 4, 4, 14, 4, 0, 0,
1091         0, 255, 14, 4, 24, 0, 0, 0, 14, 2, 8, 0, 0, 0, 20, 4,
1092         20, 4, 20, 2, 20, 1, 20, 4, 20, 8, 20, 8, 20, 8, 113, 32,
1093         4, 126, 33, 32, 17, 163, 34, 33, 157, 35, 34, 152, 36, 35, 21, 2,
1094         150, 39, 36, 21, 2, 95, 39, 39, 18, 21, 2, 150, 38, 32, 113, 32,
1095         0, 21, 2, 150, 37, 32, 21, 2, 98, 38, 38, 37, 21, 2, 89, 38,
1096         38, 39, 21, 2, 80, 38, 38, 21, 2, 70, 37, 37, 38, 21, 2, 157,
1097         32, 37, 123, 32, 32, 16, 128, 0, 32, 2, 0,
1098       };
1099       p = orc_program_new_from_static_bytecode (bc);
1100       orc_program_set_backup_function (p, _backup_video_orc_blend_big);
1101 #else
1102       p = orc_program_new ();
1103       orc_program_set_name (p, "video_orc_blend_big");
1104       orc_program_set_backup_function (p, _backup_video_orc_blend_big);
1105       orc_program_add_destination (p, 4, "d1");
1106       orc_program_add_source (p, 4, "s1");
1107       orc_program_add_constant (p, 4, 0xff000000, "c1");
1108       orc_program_add_constant (p, 4, 0x00000018, "c2");
1109       orc_program_add_constant (p, 2, 0x00000008, "c3");
1110       orc_program_add_temporary (p, 4, "t1");
1111       orc_program_add_temporary (p, 4, "t2");
1112       orc_program_add_temporary (p, 2, "t3");
1113       orc_program_add_temporary (p, 1, "t4");
1114       orc_program_add_temporary (p, 4, "t5");
1115       orc_program_add_temporary (p, 8, "t6");
1116       orc_program_add_temporary (p, 8, "t7");
1117       orc_program_add_temporary (p, 8, "t8");
1118 
1119       orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
1120           ORC_VAR_D1);
1121       orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C2,
1122           ORC_VAR_D1);
1123       orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1,
1124           ORC_VAR_D1);
1125       orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1,
1126           ORC_VAR_D1);
1127       orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1,
1128           ORC_VAR_D1);
1129       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_D1,
1130           ORC_VAR_D1);
1131       orc_program_append_2 (p, "shruw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_C3,
1132           ORC_VAR_D1);
1133       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T1, ORC_VAR_D1,
1134           ORC_VAR_D1);
1135       orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1,
1136           ORC_VAR_D1);
1137       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_D1,
1138           ORC_VAR_D1);
1139       orc_program_append_2 (p, "subw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T6,
1140           ORC_VAR_D1);
1141       orc_program_append_2 (p, "mullw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T8,
1142           ORC_VAR_D1);
1143       orc_program_append_2 (p, "div255w", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_D1,
1144           ORC_VAR_D1);
1145       orc_program_append_2 (p, "addw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T7,
1146           ORC_VAR_D1);
1147       orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T6, ORC_VAR_D1,
1148           ORC_VAR_D1);
1149       orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
1150           ORC_VAR_D1);
1151       orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
1152           ORC_VAR_D1);
1153 #endif
1154 
1155       orc_program_compile (p);
1156       c = orc_program_take_code (p);
1157       orc_program_free (p);
1158     }
1159     p_inited = TRUE;
1160     orc_once_mutex_unlock ();
1161   }
1162   ex->arrays[ORC_VAR_A2] = c;
1163   ex->program = 0;
1164 
1165   ex->n = n;
1166   ex->arrays[ORC_VAR_D1] = d1;
1167   ex->arrays[ORC_VAR_S1] = (void *) s1;
1168 
1169   func = c->exec;
1170   func (ex);
1171 }
1172 #endif
1173 
1174 
1175 /* video_orc_unpack_I420 */
1176 #ifdef DISABLE_ORC
1177 void
video_orc_unpack_I420(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,const guint8 * ORC_RESTRICT s3,int n)1178 video_orc_unpack_I420 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
1179     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n)
1180 {
1181   int i;
1182   orc_union32 *ORC_RESTRICT ptr0;
1183   const orc_int8 *ORC_RESTRICT ptr4;
1184   const orc_int8 *ORC_RESTRICT ptr5;
1185   const orc_int8 *ORC_RESTRICT ptr6;
1186 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
1187   volatile orc_int8 var36;
1188 #else
1189   orc_int8 var36;
1190 #endif
1191   orc_int8 var37;
1192   orc_union32 var38;
1193   orc_int8 var39;
1194   orc_int8 var40;
1195   orc_union16 var41;
1196   orc_union16 var42;
1197 
1198   ptr0 = (orc_union32 *) d1;
1199   ptr4 = (orc_int8 *) s1;
1200   ptr5 = (orc_int8 *) s2;
1201   ptr6 = (orc_int8 *) s3;
1202 
1203   /* 3: loadpb */
1204   var36 = 0x000000ff;           /* 255 or 1.25987e-321f */
1205 
1206   for (i = 0; i < n; i++) {
1207     /* 0: loadupdb */
1208     var39 = ptr5[i >> 1];
1209     /* 1: loadupdb */
1210     var40 = ptr6[i >> 1];
1211     /* 2: mergebw */
1212     {
1213       orc_union16 _dest;
1214       _dest.x2[0] = var39;
1215       _dest.x2[1] = var40;
1216       var41.i = _dest.i;
1217     }
1218     /* 4: loadb */
1219     var37 = ptr4[i];
1220     /* 5: mergebw */
1221     {
1222       orc_union16 _dest;
1223       _dest.x2[0] = var36;
1224       _dest.x2[1] = var37;
1225       var42.i = _dest.i;
1226     }
1227     /* 6: mergewl */
1228     {
1229       orc_union32 _dest;
1230       _dest.x2[0] = var42.i;
1231       _dest.x2[1] = var41.i;
1232       var38.i = _dest.i;
1233     }
1234     /* 7: storel */
1235     ptr0[i] = var38;
1236   }
1237 
1238 }
1239 
1240 #else
1241 static void
_backup_video_orc_unpack_I420(OrcExecutor * ORC_RESTRICT ex)1242 _backup_video_orc_unpack_I420 (OrcExecutor * ORC_RESTRICT ex)
1243 {
1244   int i;
1245   int n = ex->n;
1246   orc_union32 *ORC_RESTRICT ptr0;
1247   const orc_int8 *ORC_RESTRICT ptr4;
1248   const orc_int8 *ORC_RESTRICT ptr5;
1249   const orc_int8 *ORC_RESTRICT ptr6;
1250 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
1251   volatile orc_int8 var36;
1252 #else
1253   orc_int8 var36;
1254 #endif
1255   orc_int8 var37;
1256   orc_union32 var38;
1257   orc_int8 var39;
1258   orc_int8 var40;
1259   orc_union16 var41;
1260   orc_union16 var42;
1261 
1262   ptr0 = (orc_union32 *) ex->arrays[0];
1263   ptr4 = (orc_int8 *) ex->arrays[4];
1264   ptr5 = (orc_int8 *) ex->arrays[5];
1265   ptr6 = (orc_int8 *) ex->arrays[6];
1266 
1267   /* 3: loadpb */
1268   var36 = 0x000000ff;           /* 255 or 1.25987e-321f */
1269 
1270   for (i = 0; i < n; i++) {
1271     /* 0: loadupdb */
1272     var39 = ptr5[i >> 1];
1273     /* 1: loadupdb */
1274     var40 = ptr6[i >> 1];
1275     /* 2: mergebw */
1276     {
1277       orc_union16 _dest;
1278       _dest.x2[0] = var39;
1279       _dest.x2[1] = var40;
1280       var41.i = _dest.i;
1281     }
1282     /* 4: loadb */
1283     var37 = ptr4[i];
1284     /* 5: mergebw */
1285     {
1286       orc_union16 _dest;
1287       _dest.x2[0] = var36;
1288       _dest.x2[1] = var37;
1289       var42.i = _dest.i;
1290     }
1291     /* 6: mergewl */
1292     {
1293       orc_union32 _dest;
1294       _dest.x2[0] = var42.i;
1295       _dest.x2[1] = var41.i;
1296       var38.i = _dest.i;
1297     }
1298     /* 7: storel */
1299     ptr0[i] = var38;
1300   }
1301 
1302 }
1303 
1304 void
video_orc_unpack_I420(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,const guint8 * ORC_RESTRICT s3,int n)1305 video_orc_unpack_I420 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
1306     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n)
1307 {
1308   OrcExecutor _ex, *ex = &_ex;
1309   static volatile int p_inited = 0;
1310   static OrcCode *c = 0;
1311   void (*func) (OrcExecutor *);
1312 
1313   if (!p_inited) {
1314     orc_once_mutex_lock ();
1315     if (!p_inited) {
1316       OrcProgram *p;
1317 
1318 #if 1
1319       static const orc_uint8 bc[] = {
1320         1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
1321         97, 99, 107, 95, 73, 52, 50, 48, 11, 4, 4, 12, 1, 1, 12, 1,
1322         1, 12, 1, 1, 14, 1, 255, 0, 0, 0, 20, 2, 20, 2, 20, 1,
1323         20, 1, 45, 34, 5, 45, 35, 6, 196, 32, 34, 35, 196, 33, 16, 4,
1324         195, 0, 33, 32, 2, 0,
1325       };
1326       p = orc_program_new_from_static_bytecode (bc);
1327       orc_program_set_backup_function (p, _backup_video_orc_unpack_I420);
1328 #else
1329       p = orc_program_new ();
1330       orc_program_set_name (p, "video_orc_unpack_I420");
1331       orc_program_set_backup_function (p, _backup_video_orc_unpack_I420);
1332       orc_program_add_destination (p, 4, "d1");
1333       orc_program_add_source (p, 1, "s1");
1334       orc_program_add_source (p, 1, "s2");
1335       orc_program_add_source (p, 1, "s3");
1336       orc_program_add_constant (p, 1, 0x000000ff, "c1");
1337       orc_program_add_temporary (p, 2, "t1");
1338       orc_program_add_temporary (p, 2, "t2");
1339       orc_program_add_temporary (p, 1, "t3");
1340       orc_program_add_temporary (p, 1, "t4");
1341 
1342       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T3, ORC_VAR_S2,
1343           ORC_VAR_D1, ORC_VAR_D1);
1344       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T4, ORC_VAR_S3,
1345           ORC_VAR_D1, ORC_VAR_D1);
1346       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4,
1347           ORC_VAR_D1);
1348       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1,
1349           ORC_VAR_D1);
1350       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
1351           ORC_VAR_D1);
1352 #endif
1353 
1354       orc_program_compile (p);
1355       c = orc_program_take_code (p);
1356       orc_program_free (p);
1357     }
1358     p_inited = TRUE;
1359     orc_once_mutex_unlock ();
1360   }
1361   ex->arrays[ORC_VAR_A2] = c;
1362   ex->program = 0;
1363 
1364   ex->n = n;
1365   ex->arrays[ORC_VAR_D1] = d1;
1366   ex->arrays[ORC_VAR_S1] = (void *) s1;
1367   ex->arrays[ORC_VAR_S2] = (void *) s2;
1368   ex->arrays[ORC_VAR_S3] = (void *) s3;
1369 
1370   func = c->exec;
1371   func (ex);
1372 }
1373 #endif
1374 
1375 
1376 /* video_orc_pack_I420 */
1377 #ifdef DISABLE_ORC
1378 void
video_orc_pack_I420(guint8 * ORC_RESTRICT d1,guint8 * ORC_RESTRICT d2,guint8 * ORC_RESTRICT d3,const guint8 * ORC_RESTRICT s1,int n)1379 video_orc_pack_I420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
1380     guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n)
1381 {
1382   int i;
1383   orc_union16 *ORC_RESTRICT ptr0;
1384   orc_int8 *ORC_RESTRICT ptr1;
1385   orc_int8 *ORC_RESTRICT ptr2;
1386   const orc_union64 *ORC_RESTRICT ptr4;
1387   orc_union64 var38;
1388   orc_union16 var39;
1389   orc_int8 var40;
1390   orc_int8 var41;
1391   orc_union32 var42;
1392   orc_union32 var43;
1393   orc_union16 var44;
1394   orc_union16 var45;
1395 
1396   ptr0 = (orc_union16 *) d1;
1397   ptr1 = (orc_int8 *) d2;
1398   ptr2 = (orc_int8 *) d3;
1399   ptr4 = (orc_union64 *) s1;
1400 
1401 
1402   for (i = 0; i < n; i++) {
1403     /* 0: loadq */
1404     var38 = ptr4[i];
1405     /* 1: splitlw */
1406     {
1407       orc_union32 _src;
1408       _src.i = var38.x2[0];
1409       var42.x2[0] = _src.x2[1];
1410       var43.x2[0] = _src.x2[0];
1411     }
1412     {
1413       orc_union32 _src;
1414       _src.i = var38.x2[1];
1415       var42.x2[1] = _src.x2[1];
1416       var43.x2[1] = _src.x2[0];
1417     }
1418     /* 2: select1wb */
1419     {
1420       orc_union16 _src;
1421       _src.i = var43.x2[0];
1422       var39.x2[0] = _src.x2[1];
1423     }
1424     {
1425       orc_union16 _src;
1426       _src.i = var43.x2[1];
1427       var39.x2[1] = _src.x2[1];
1428     }
1429     /* 3: storew */
1430     ptr0[i] = var39;
1431     /* 4: splitwb */
1432     {
1433       orc_union16 _src;
1434       _src.i = var42.x2[0];
1435       var44.x2[0] = _src.x2[1];
1436       var45.x2[0] = _src.x2[0];
1437     }
1438     {
1439       orc_union16 _src;
1440       _src.i = var42.x2[1];
1441       var44.x2[1] = _src.x2[1];
1442       var45.x2[1] = _src.x2[0];
1443     }
1444     /* 5: select0wb */
1445     {
1446       orc_union16 _src;
1447       _src.i = var45.i;
1448       var40 = _src.x2[0];
1449     }
1450     /* 6: storeb */
1451     ptr1[i] = var40;
1452     /* 7: select0wb */
1453     {
1454       orc_union16 _src;
1455       _src.i = var44.i;
1456       var41 = _src.x2[0];
1457     }
1458     /* 8: storeb */
1459     ptr2[i] = var41;
1460   }
1461 
1462 }
1463 
1464 #else
1465 static void
_backup_video_orc_pack_I420(OrcExecutor * ORC_RESTRICT ex)1466 _backup_video_orc_pack_I420 (OrcExecutor * ORC_RESTRICT ex)
1467 {
1468   int i;
1469   int n = ex->n;
1470   orc_union16 *ORC_RESTRICT ptr0;
1471   orc_int8 *ORC_RESTRICT ptr1;
1472   orc_int8 *ORC_RESTRICT ptr2;
1473   const orc_union64 *ORC_RESTRICT ptr4;
1474   orc_union64 var38;
1475   orc_union16 var39;
1476   orc_int8 var40;
1477   orc_int8 var41;
1478   orc_union32 var42;
1479   orc_union32 var43;
1480   orc_union16 var44;
1481   orc_union16 var45;
1482 
1483   ptr0 = (orc_union16 *) ex->arrays[0];
1484   ptr1 = (orc_int8 *) ex->arrays[1];
1485   ptr2 = (orc_int8 *) ex->arrays[2];
1486   ptr4 = (orc_union64 *) ex->arrays[4];
1487 
1488 
1489   for (i = 0; i < n; i++) {
1490     /* 0: loadq */
1491     var38 = ptr4[i];
1492     /* 1: splitlw */
1493     {
1494       orc_union32 _src;
1495       _src.i = var38.x2[0];
1496       var42.x2[0] = _src.x2[1];
1497       var43.x2[0] = _src.x2[0];
1498     }
1499     {
1500       orc_union32 _src;
1501       _src.i = var38.x2[1];
1502       var42.x2[1] = _src.x2[1];
1503       var43.x2[1] = _src.x2[0];
1504     }
1505     /* 2: select1wb */
1506     {
1507       orc_union16 _src;
1508       _src.i = var43.x2[0];
1509       var39.x2[0] = _src.x2[1];
1510     }
1511     {
1512       orc_union16 _src;
1513       _src.i = var43.x2[1];
1514       var39.x2[1] = _src.x2[1];
1515     }
1516     /* 3: storew */
1517     ptr0[i] = var39;
1518     /* 4: splitwb */
1519     {
1520       orc_union16 _src;
1521       _src.i = var42.x2[0];
1522       var44.x2[0] = _src.x2[1];
1523       var45.x2[0] = _src.x2[0];
1524     }
1525     {
1526       orc_union16 _src;
1527       _src.i = var42.x2[1];
1528       var44.x2[1] = _src.x2[1];
1529       var45.x2[1] = _src.x2[0];
1530     }
1531     /* 5: select0wb */
1532     {
1533       orc_union16 _src;
1534       _src.i = var45.i;
1535       var40 = _src.x2[0];
1536     }
1537     /* 6: storeb */
1538     ptr1[i] = var40;
1539     /* 7: select0wb */
1540     {
1541       orc_union16 _src;
1542       _src.i = var44.i;
1543       var41 = _src.x2[0];
1544     }
1545     /* 8: storeb */
1546     ptr2[i] = var41;
1547   }
1548 
1549 }
1550 
1551 void
video_orc_pack_I420(guint8 * ORC_RESTRICT d1,guint8 * ORC_RESTRICT d2,guint8 * ORC_RESTRICT d3,const guint8 * ORC_RESTRICT s1,int n)1552 video_orc_pack_I420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
1553     guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n)
1554 {
1555   OrcExecutor _ex, *ex = &_ex;
1556   static volatile int p_inited = 0;
1557   static OrcCode *c = 0;
1558   void (*func) (OrcExecutor *);
1559 
1560   if (!p_inited) {
1561     orc_once_mutex_lock ();
1562     if (!p_inited) {
1563       OrcProgram *p;
1564 
1565 #if 1
1566       static const orc_uint8 bc[] = {
1567         1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
1568         107, 95, 73, 52, 50, 48, 11, 2, 2, 11, 1, 1, 11, 1, 1, 12,
1569         8, 8, 20, 4, 20, 4, 20, 2, 20, 2, 20, 1, 20, 1, 21, 1,
1570         198, 33, 32, 4, 21, 1, 189, 0, 32, 21, 1, 199, 35, 34, 33, 188,
1571         1, 34, 188, 2, 35, 2, 0,
1572       };
1573       p = orc_program_new_from_static_bytecode (bc);
1574       orc_program_set_backup_function (p, _backup_video_orc_pack_I420);
1575 #else
1576       p = orc_program_new ();
1577       orc_program_set_name (p, "video_orc_pack_I420");
1578       orc_program_set_backup_function (p, _backup_video_orc_pack_I420);
1579       orc_program_add_destination (p, 2, "d1");
1580       orc_program_add_destination (p, 1, "d2");
1581       orc_program_add_destination (p, 1, "d3");
1582       orc_program_add_source (p, 8, "s1");
1583       orc_program_add_temporary (p, 4, "t1");
1584       orc_program_add_temporary (p, 4, "t2");
1585       orc_program_add_temporary (p, 2, "t3");
1586       orc_program_add_temporary (p, 2, "t4");
1587       orc_program_add_temporary (p, 1, "t5");
1588       orc_program_add_temporary (p, 1, "t6");
1589 
1590       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
1591           ORC_VAR_D1);
1592       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
1593           ORC_VAR_D1, ORC_VAR_D1);
1594       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T2,
1595           ORC_VAR_D1);
1596       orc_program_append_2 (p, "select0wb", 0, ORC_VAR_D2, ORC_VAR_T3,
1597           ORC_VAR_D1, ORC_VAR_D1);
1598       orc_program_append_2 (p, "select0wb", 0, ORC_VAR_D3, ORC_VAR_T4,
1599           ORC_VAR_D1, ORC_VAR_D1);
1600 #endif
1601 
1602       orc_program_compile (p);
1603       c = orc_program_take_code (p);
1604       orc_program_free (p);
1605     }
1606     p_inited = TRUE;
1607     orc_once_mutex_unlock ();
1608   }
1609   ex->arrays[ORC_VAR_A2] = c;
1610   ex->program = 0;
1611 
1612   ex->n = n;
1613   ex->arrays[ORC_VAR_D1] = d1;
1614   ex->arrays[ORC_VAR_D2] = d2;
1615   ex->arrays[ORC_VAR_D3] = d3;
1616   ex->arrays[ORC_VAR_S1] = (void *) s1;
1617 
1618   func = c->exec;
1619   func (ex);
1620 }
1621 #endif
1622 
1623 
1624 /* video_orc_pack_Y */
1625 #ifdef DISABLE_ORC
1626 void
video_orc_pack_Y(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)1627 video_orc_pack_Y (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
1628     int n)
1629 {
1630   int i;
1631   orc_int8 *ORC_RESTRICT ptr0;
1632   const orc_union32 *ORC_RESTRICT ptr4;
1633   orc_union32 var33;
1634   orc_int8 var34;
1635   orc_union16 var35;
1636 
1637   ptr0 = (orc_int8 *) d1;
1638   ptr4 = (orc_union32 *) s1;
1639 
1640 
1641   for (i = 0; i < n; i++) {
1642     /* 0: loadl */
1643     var33 = ptr4[i];
1644     /* 1: select0lw */
1645     {
1646       orc_union32 _src;
1647       _src.i = var33.i;
1648       var35.i = _src.x2[0];
1649     }
1650     /* 2: select1wb */
1651     {
1652       orc_union16 _src;
1653       _src.i = var35.i;
1654       var34 = _src.x2[1];
1655     }
1656     /* 3: storeb */
1657     ptr0[i] = var34;
1658   }
1659 
1660 }
1661 
1662 #else
1663 static void
_backup_video_orc_pack_Y(OrcExecutor * ORC_RESTRICT ex)1664 _backup_video_orc_pack_Y (OrcExecutor * ORC_RESTRICT ex)
1665 {
1666   int i;
1667   int n = ex->n;
1668   orc_int8 *ORC_RESTRICT ptr0;
1669   const orc_union32 *ORC_RESTRICT ptr4;
1670   orc_union32 var33;
1671   orc_int8 var34;
1672   orc_union16 var35;
1673 
1674   ptr0 = (orc_int8 *) ex->arrays[0];
1675   ptr4 = (orc_union32 *) ex->arrays[4];
1676 
1677 
1678   for (i = 0; i < n; i++) {
1679     /* 0: loadl */
1680     var33 = ptr4[i];
1681     /* 1: select0lw */
1682     {
1683       orc_union32 _src;
1684       _src.i = var33.i;
1685       var35.i = _src.x2[0];
1686     }
1687     /* 2: select1wb */
1688     {
1689       orc_union16 _src;
1690       _src.i = var35.i;
1691       var34 = _src.x2[1];
1692     }
1693     /* 3: storeb */
1694     ptr0[i] = var34;
1695   }
1696 
1697 }
1698 
1699 void
video_orc_pack_Y(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)1700 video_orc_pack_Y (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
1701     int n)
1702 {
1703   OrcExecutor _ex, *ex = &_ex;
1704   static volatile int p_inited = 0;
1705   static OrcCode *c = 0;
1706   void (*func) (OrcExecutor *);
1707 
1708   if (!p_inited) {
1709     orc_once_mutex_lock ();
1710     if (!p_inited) {
1711       OrcProgram *p;
1712 
1713 #if 1
1714       static const orc_uint8 bc[] = {
1715         1, 9, 16, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
1716         107, 95, 89, 11, 1, 1, 12, 4, 4, 20, 2, 190, 32, 4, 189, 0,
1717         32, 2, 0,
1718       };
1719       p = orc_program_new_from_static_bytecode (bc);
1720       orc_program_set_backup_function (p, _backup_video_orc_pack_Y);
1721 #else
1722       p = orc_program_new ();
1723       orc_program_set_name (p, "video_orc_pack_Y");
1724       orc_program_set_backup_function (p, _backup_video_orc_pack_Y);
1725       orc_program_add_destination (p, 1, "d1");
1726       orc_program_add_source (p, 4, "s1");
1727       orc_program_add_temporary (p, 2, "t1");
1728 
1729       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_S1,
1730           ORC_VAR_D1, ORC_VAR_D1);
1731       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1,
1732           ORC_VAR_D1, ORC_VAR_D1);
1733 #endif
1734 
1735       orc_program_compile (p);
1736       c = orc_program_take_code (p);
1737       orc_program_free (p);
1738     }
1739     p_inited = TRUE;
1740     orc_once_mutex_unlock ();
1741   }
1742   ex->arrays[ORC_VAR_A2] = c;
1743   ex->program = 0;
1744 
1745   ex->n = n;
1746   ex->arrays[ORC_VAR_D1] = d1;
1747   ex->arrays[ORC_VAR_S1] = (void *) s1;
1748 
1749   func = c->exec;
1750   func (ex);
1751 }
1752 #endif
1753 
1754 
1755 /* video_orc_unpack_YUY2 */
1756 #ifdef DISABLE_ORC
1757 void
video_orc_unpack_YUY2(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)1758 video_orc_unpack_YUY2 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
1759     int n)
1760 {
1761   int i;
1762   orc_union64 *ORC_RESTRICT ptr0;
1763   const orc_union32 *ORC_RESTRICT ptr4;
1764   orc_union32 var36;
1765 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
1766   volatile orc_union16 var37;
1767 #else
1768   orc_union16 var37;
1769 #endif
1770   orc_union64 var38;
1771   orc_union16 var39;
1772   orc_union16 var40;
1773   orc_union32 var41;
1774   orc_union32 var42;
1775 
1776   ptr0 = (orc_union64 *) d1;
1777   ptr4 = (orc_union32 *) s1;
1778 
1779   /* 2: loadpb */
1780   var37.x2[0] = 0x000000ff;     /* 255 or 1.25987e-321f */
1781   var37.x2[1] = 0x000000ff;     /* 255 or 1.25987e-321f */
1782 
1783   for (i = 0; i < n; i++) {
1784     /* 0: loadl */
1785     var36 = ptr4[i];
1786     /* 1: splitwb */
1787     {
1788       orc_union16 _src;
1789       _src.i = var36.x2[0];
1790       var39.x2[0] = _src.x2[1];
1791       var40.x2[0] = _src.x2[0];
1792     }
1793     {
1794       orc_union16 _src;
1795       _src.i = var36.x2[1];
1796       var39.x2[1] = _src.x2[1];
1797       var40.x2[1] = _src.x2[0];
1798     }
1799     /* 3: mergebw */
1800     {
1801       orc_union16 _dest;
1802       _dest.x2[0] = var37.x2[0];
1803       _dest.x2[1] = var40.x2[0];
1804       var41.x2[0] = _dest.i;
1805     }
1806     {
1807       orc_union16 _dest;
1808       _dest.x2[0] = var37.x2[1];
1809       _dest.x2[1] = var40.x2[1];
1810       var41.x2[1] = _dest.i;
1811     }
1812     /* 4: mergewl */
1813     {
1814       orc_union32 _dest;
1815       _dest.x2[0] = var39.i;
1816       _dest.x2[1] = var39.i;
1817       var42.i = _dest.i;
1818     }
1819     /* 5: mergewl */
1820     {
1821       orc_union32 _dest;
1822       _dest.x2[0] = var41.x2[0];
1823       _dest.x2[1] = var42.x2[0];
1824       var38.x2[0] = _dest.i;
1825     }
1826     {
1827       orc_union32 _dest;
1828       _dest.x2[0] = var41.x2[1];
1829       _dest.x2[1] = var42.x2[1];
1830       var38.x2[1] = _dest.i;
1831     }
1832     /* 6: storeq */
1833     ptr0[i] = var38;
1834   }
1835 
1836 }
1837 
1838 #else
1839 static void
_backup_video_orc_unpack_YUY2(OrcExecutor * ORC_RESTRICT ex)1840 _backup_video_orc_unpack_YUY2 (OrcExecutor * ORC_RESTRICT ex)
1841 {
1842   int i;
1843   int n = ex->n;
1844   orc_union64 *ORC_RESTRICT ptr0;
1845   const orc_union32 *ORC_RESTRICT ptr4;
1846   orc_union32 var36;
1847 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
1848   volatile orc_union16 var37;
1849 #else
1850   orc_union16 var37;
1851 #endif
1852   orc_union64 var38;
1853   orc_union16 var39;
1854   orc_union16 var40;
1855   orc_union32 var41;
1856   orc_union32 var42;
1857 
1858   ptr0 = (orc_union64 *) ex->arrays[0];
1859   ptr4 = (orc_union32 *) ex->arrays[4];
1860 
1861   /* 2: loadpb */
1862   var37.x2[0] = 0x000000ff;     /* 255 or 1.25987e-321f */
1863   var37.x2[1] = 0x000000ff;     /* 255 or 1.25987e-321f */
1864 
1865   for (i = 0; i < n; i++) {
1866     /* 0: loadl */
1867     var36 = ptr4[i];
1868     /* 1: splitwb */
1869     {
1870       orc_union16 _src;
1871       _src.i = var36.x2[0];
1872       var39.x2[0] = _src.x2[1];
1873       var40.x2[0] = _src.x2[0];
1874     }
1875     {
1876       orc_union16 _src;
1877       _src.i = var36.x2[1];
1878       var39.x2[1] = _src.x2[1];
1879       var40.x2[1] = _src.x2[0];
1880     }
1881     /* 3: mergebw */
1882     {
1883       orc_union16 _dest;
1884       _dest.x2[0] = var37.x2[0];
1885       _dest.x2[1] = var40.x2[0];
1886       var41.x2[0] = _dest.i;
1887     }
1888     {
1889       orc_union16 _dest;
1890       _dest.x2[0] = var37.x2[1];
1891       _dest.x2[1] = var40.x2[1];
1892       var41.x2[1] = _dest.i;
1893     }
1894     /* 4: mergewl */
1895     {
1896       orc_union32 _dest;
1897       _dest.x2[0] = var39.i;
1898       _dest.x2[1] = var39.i;
1899       var42.i = _dest.i;
1900     }
1901     /* 5: mergewl */
1902     {
1903       orc_union32 _dest;
1904       _dest.x2[0] = var41.x2[0];
1905       _dest.x2[1] = var42.x2[0];
1906       var38.x2[0] = _dest.i;
1907     }
1908     {
1909       orc_union32 _dest;
1910       _dest.x2[0] = var41.x2[1];
1911       _dest.x2[1] = var42.x2[1];
1912       var38.x2[1] = _dest.i;
1913     }
1914     /* 6: storeq */
1915     ptr0[i] = var38;
1916   }
1917 
1918 }
1919 
1920 void
video_orc_unpack_YUY2(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)1921 video_orc_unpack_YUY2 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
1922     int n)
1923 {
1924   OrcExecutor _ex, *ex = &_ex;
1925   static volatile int p_inited = 0;
1926   static OrcCode *c = 0;
1927   void (*func) (OrcExecutor *);
1928 
1929   if (!p_inited) {
1930     orc_once_mutex_lock ();
1931     if (!p_inited) {
1932       OrcProgram *p;
1933 
1934 #if 1
1935       static const orc_uint8 bc[] = {
1936         1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
1937         97, 99, 107, 95, 89, 85, 89, 50, 11, 8, 8, 12, 4, 4, 14, 2,
1938         255, 0, 0, 0, 20, 2, 20, 2, 20, 4, 20, 4, 21, 1, 199, 33,
1939         32, 4, 21, 1, 196, 34, 16, 32, 195, 35, 33, 33, 21, 1, 195, 0,
1940         34, 35, 2, 0,
1941       };
1942       p = orc_program_new_from_static_bytecode (bc);
1943       orc_program_set_backup_function (p, _backup_video_orc_unpack_YUY2);
1944 #else
1945       p = orc_program_new ();
1946       orc_program_set_name (p, "video_orc_unpack_YUY2");
1947       orc_program_set_backup_function (p, _backup_video_orc_unpack_YUY2);
1948       orc_program_add_destination (p, 8, "d1");
1949       orc_program_add_source (p, 4, "s1");
1950       orc_program_add_constant (p, 2, 0x000000ff, "c1");
1951       orc_program_add_temporary (p, 2, "t1");
1952       orc_program_add_temporary (p, 2, "t2");
1953       orc_program_add_temporary (p, 4, "t3");
1954       orc_program_add_temporary (p, 4, "t4");
1955 
1956       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
1957           ORC_VAR_D1);
1958       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1,
1959           ORC_VAR_D1);
1960       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2,
1961           ORC_VAR_D1);
1962       orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4,
1963           ORC_VAR_D1);
1964 #endif
1965 
1966       orc_program_compile (p);
1967       c = orc_program_take_code (p);
1968       orc_program_free (p);
1969     }
1970     p_inited = TRUE;
1971     orc_once_mutex_unlock ();
1972   }
1973   ex->arrays[ORC_VAR_A2] = c;
1974   ex->program = 0;
1975 
1976   ex->n = n;
1977   ex->arrays[ORC_VAR_D1] = d1;
1978   ex->arrays[ORC_VAR_S1] = (void *) s1;
1979 
1980   func = c->exec;
1981   func (ex);
1982 }
1983 #endif
1984 
1985 
1986 /* video_orc_pack_YUY2 */
1987 #ifdef DISABLE_ORC
1988 void
video_orc_pack_YUY2(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)1989 video_orc_pack_YUY2 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
1990     int n)
1991 {
1992   int i;
1993   orc_union32 *ORC_RESTRICT ptr0;
1994   const orc_union64 *ORC_RESTRICT ptr4;
1995   orc_union64 var36;
1996   orc_union32 var37;
1997   orc_union32 var38;
1998   orc_union32 var39;
1999   orc_union16 var40;
2000   orc_union16 var41;
2001 
2002   ptr0 = (orc_union32 *) d1;
2003   ptr4 = (orc_union64 *) s1;
2004 
2005 
2006   for (i = 0; i < n; i++) {
2007     /* 0: loadq */
2008     var36 = ptr4[i];
2009     /* 1: splitlw */
2010     {
2011       orc_union32 _src;
2012       _src.i = var36.x2[0];
2013       var38.x2[0] = _src.x2[1];
2014       var39.x2[0] = _src.x2[0];
2015     }
2016     {
2017       orc_union32 _src;
2018       _src.i = var36.x2[1];
2019       var38.x2[1] = _src.x2[1];
2020       var39.x2[1] = _src.x2[0];
2021     }
2022     /* 2: select0lw */
2023     {
2024       orc_union32 _src;
2025       _src.i = var38.i;
2026       var40.i = _src.x2[0];
2027     }
2028     /* 3: select1wb */
2029     {
2030       orc_union16 _src;
2031       _src.i = var39.x2[0];
2032       var41.x2[0] = _src.x2[1];
2033     }
2034     {
2035       orc_union16 _src;
2036       _src.i = var39.x2[1];
2037       var41.x2[1] = _src.x2[1];
2038     }
2039     /* 4: mergebw */
2040     {
2041       orc_union16 _dest;
2042       _dest.x2[0] = var41.x2[0];
2043       _dest.x2[1] = var40.x2[0];
2044       var37.x2[0] = _dest.i;
2045     }
2046     {
2047       orc_union16 _dest;
2048       _dest.x2[0] = var41.x2[1];
2049       _dest.x2[1] = var40.x2[1];
2050       var37.x2[1] = _dest.i;
2051     }
2052     /* 5: storel */
2053     ptr0[i] = var37;
2054   }
2055 
2056 }
2057 
2058 #else
2059 static void
_backup_video_orc_pack_YUY2(OrcExecutor * ORC_RESTRICT ex)2060 _backup_video_orc_pack_YUY2 (OrcExecutor * ORC_RESTRICT ex)
2061 {
2062   int i;
2063   int n = ex->n;
2064   orc_union32 *ORC_RESTRICT ptr0;
2065   const orc_union64 *ORC_RESTRICT ptr4;
2066   orc_union64 var36;
2067   orc_union32 var37;
2068   orc_union32 var38;
2069   orc_union32 var39;
2070   orc_union16 var40;
2071   orc_union16 var41;
2072 
2073   ptr0 = (orc_union32 *) ex->arrays[0];
2074   ptr4 = (orc_union64 *) ex->arrays[4];
2075 
2076 
2077   for (i = 0; i < n; i++) {
2078     /* 0: loadq */
2079     var36 = ptr4[i];
2080     /* 1: splitlw */
2081     {
2082       orc_union32 _src;
2083       _src.i = var36.x2[0];
2084       var38.x2[0] = _src.x2[1];
2085       var39.x2[0] = _src.x2[0];
2086     }
2087     {
2088       orc_union32 _src;
2089       _src.i = var36.x2[1];
2090       var38.x2[1] = _src.x2[1];
2091       var39.x2[1] = _src.x2[0];
2092     }
2093     /* 2: select0lw */
2094     {
2095       orc_union32 _src;
2096       _src.i = var38.i;
2097       var40.i = _src.x2[0];
2098     }
2099     /* 3: select1wb */
2100     {
2101       orc_union16 _src;
2102       _src.i = var39.x2[0];
2103       var41.x2[0] = _src.x2[1];
2104     }
2105     {
2106       orc_union16 _src;
2107       _src.i = var39.x2[1];
2108       var41.x2[1] = _src.x2[1];
2109     }
2110     /* 4: mergebw */
2111     {
2112       orc_union16 _dest;
2113       _dest.x2[0] = var41.x2[0];
2114       _dest.x2[1] = var40.x2[0];
2115       var37.x2[0] = _dest.i;
2116     }
2117     {
2118       orc_union16 _dest;
2119       _dest.x2[0] = var41.x2[1];
2120       _dest.x2[1] = var40.x2[1];
2121       var37.x2[1] = _dest.i;
2122     }
2123     /* 5: storel */
2124     ptr0[i] = var37;
2125   }
2126 
2127 }
2128 
2129 void
video_orc_pack_YUY2(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)2130 video_orc_pack_YUY2 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
2131     int n)
2132 {
2133   OrcExecutor _ex, *ex = &_ex;
2134   static volatile int p_inited = 0;
2135   static OrcCode *c = 0;
2136   void (*func) (OrcExecutor *);
2137 
2138   if (!p_inited) {
2139     orc_once_mutex_lock ();
2140     if (!p_inited) {
2141       OrcProgram *p;
2142 
2143 #if 1
2144       static const orc_uint8 bc[] = {
2145         1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
2146         107, 95, 89, 85, 89, 50, 11, 4, 4, 12, 8, 8, 20, 2, 20, 2,
2147         20, 4, 20, 4, 21, 1, 198, 35, 34, 4, 190, 33, 35, 21, 1, 189,
2148         32, 34, 21, 1, 196, 0, 32, 33, 2, 0,
2149       };
2150       p = orc_program_new_from_static_bytecode (bc);
2151       orc_program_set_backup_function (p, _backup_video_orc_pack_YUY2);
2152 #else
2153       p = orc_program_new ();
2154       orc_program_set_name (p, "video_orc_pack_YUY2");
2155       orc_program_set_backup_function (p, _backup_video_orc_pack_YUY2);
2156       orc_program_add_destination (p, 4, "d1");
2157       orc_program_add_source (p, 8, "s1");
2158       orc_program_add_temporary (p, 2, "t1");
2159       orc_program_add_temporary (p, 2, "t2");
2160       orc_program_add_temporary (p, 4, "t3");
2161       orc_program_add_temporary (p, 4, "t4");
2162 
2163       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_S1,
2164           ORC_VAR_D1);
2165       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T2, ORC_VAR_T4,
2166           ORC_VAR_D1, ORC_VAR_D1);
2167       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T3,
2168           ORC_VAR_D1, ORC_VAR_D1);
2169       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
2170           ORC_VAR_D1);
2171 #endif
2172 
2173       orc_program_compile (p);
2174       c = orc_program_take_code (p);
2175       orc_program_free (p);
2176     }
2177     p_inited = TRUE;
2178     orc_once_mutex_unlock ();
2179   }
2180   ex->arrays[ORC_VAR_A2] = c;
2181   ex->program = 0;
2182 
2183   ex->n = n;
2184   ex->arrays[ORC_VAR_D1] = d1;
2185   ex->arrays[ORC_VAR_S1] = (void *) s1;
2186 
2187   func = c->exec;
2188   func (ex);
2189 }
2190 #endif
2191 
2192 
2193 /* video_orc_pack_UYVY */
2194 #ifdef DISABLE_ORC
2195 void
video_orc_pack_UYVY(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)2196 video_orc_pack_UYVY (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
2197     int n)
2198 {
2199   int i;
2200   orc_union32 *ORC_RESTRICT ptr0;
2201   const orc_union64 *ORC_RESTRICT ptr4;
2202   orc_union64 var36;
2203   orc_union32 var37;
2204   orc_union32 var38;
2205   orc_union32 var39;
2206   orc_union16 var40;
2207   orc_union16 var41;
2208 
2209   ptr0 = (orc_union32 *) d1;
2210   ptr4 = (orc_union64 *) s1;
2211 
2212 
2213   for (i = 0; i < n; i++) {
2214     /* 0: loadq */
2215     var36 = ptr4[i];
2216     /* 1: splitlw */
2217     {
2218       orc_union32 _src;
2219       _src.i = var36.x2[0];
2220       var38.x2[0] = _src.x2[1];
2221       var39.x2[0] = _src.x2[0];
2222     }
2223     {
2224       orc_union32 _src;
2225       _src.i = var36.x2[1];
2226       var38.x2[1] = _src.x2[1];
2227       var39.x2[1] = _src.x2[0];
2228     }
2229     /* 2: select0lw */
2230     {
2231       orc_union32 _src;
2232       _src.i = var38.i;
2233       var40.i = _src.x2[0];
2234     }
2235     /* 3: select1wb */
2236     {
2237       orc_union16 _src;
2238       _src.i = var39.x2[0];
2239       var41.x2[0] = _src.x2[1];
2240     }
2241     {
2242       orc_union16 _src;
2243       _src.i = var39.x2[1];
2244       var41.x2[1] = _src.x2[1];
2245     }
2246     /* 4: mergebw */
2247     {
2248       orc_union16 _dest;
2249       _dest.x2[0] = var40.x2[0];
2250       _dest.x2[1] = var41.x2[0];
2251       var37.x2[0] = _dest.i;
2252     }
2253     {
2254       orc_union16 _dest;
2255       _dest.x2[0] = var40.x2[1];
2256       _dest.x2[1] = var41.x2[1];
2257       var37.x2[1] = _dest.i;
2258     }
2259     /* 5: storel */
2260     ptr0[i] = var37;
2261   }
2262 
2263 }
2264 
2265 #else
2266 static void
_backup_video_orc_pack_UYVY(OrcExecutor * ORC_RESTRICT ex)2267 _backup_video_orc_pack_UYVY (OrcExecutor * ORC_RESTRICT ex)
2268 {
2269   int i;
2270   int n = ex->n;
2271   orc_union32 *ORC_RESTRICT ptr0;
2272   const orc_union64 *ORC_RESTRICT ptr4;
2273   orc_union64 var36;
2274   orc_union32 var37;
2275   orc_union32 var38;
2276   orc_union32 var39;
2277   orc_union16 var40;
2278   orc_union16 var41;
2279 
2280   ptr0 = (orc_union32 *) ex->arrays[0];
2281   ptr4 = (orc_union64 *) ex->arrays[4];
2282 
2283 
2284   for (i = 0; i < n; i++) {
2285     /* 0: loadq */
2286     var36 = ptr4[i];
2287     /* 1: splitlw */
2288     {
2289       orc_union32 _src;
2290       _src.i = var36.x2[0];
2291       var38.x2[0] = _src.x2[1];
2292       var39.x2[0] = _src.x2[0];
2293     }
2294     {
2295       orc_union32 _src;
2296       _src.i = var36.x2[1];
2297       var38.x2[1] = _src.x2[1];
2298       var39.x2[1] = _src.x2[0];
2299     }
2300     /* 2: select0lw */
2301     {
2302       orc_union32 _src;
2303       _src.i = var38.i;
2304       var40.i = _src.x2[0];
2305     }
2306     /* 3: select1wb */
2307     {
2308       orc_union16 _src;
2309       _src.i = var39.x2[0];
2310       var41.x2[0] = _src.x2[1];
2311     }
2312     {
2313       orc_union16 _src;
2314       _src.i = var39.x2[1];
2315       var41.x2[1] = _src.x2[1];
2316     }
2317     /* 4: mergebw */
2318     {
2319       orc_union16 _dest;
2320       _dest.x2[0] = var40.x2[0];
2321       _dest.x2[1] = var41.x2[0];
2322       var37.x2[0] = _dest.i;
2323     }
2324     {
2325       orc_union16 _dest;
2326       _dest.x2[0] = var40.x2[1];
2327       _dest.x2[1] = var41.x2[1];
2328       var37.x2[1] = _dest.i;
2329     }
2330     /* 5: storel */
2331     ptr0[i] = var37;
2332   }
2333 
2334 }
2335 
2336 void
video_orc_pack_UYVY(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)2337 video_orc_pack_UYVY (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
2338     int n)
2339 {
2340   OrcExecutor _ex, *ex = &_ex;
2341   static volatile int p_inited = 0;
2342   static OrcCode *c = 0;
2343   void (*func) (OrcExecutor *);
2344 
2345   if (!p_inited) {
2346     orc_once_mutex_lock ();
2347     if (!p_inited) {
2348       OrcProgram *p;
2349 
2350 #if 1
2351       static const orc_uint8 bc[] = {
2352         1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
2353         107, 95, 85, 89, 86, 89, 11, 4, 4, 12, 8, 8, 20, 2, 20, 2,
2354         20, 4, 20, 4, 21, 1, 198, 35, 34, 4, 190, 33, 35, 21, 1, 189,
2355         32, 34, 21, 1, 196, 0, 33, 32, 2, 0,
2356       };
2357       p = orc_program_new_from_static_bytecode (bc);
2358       orc_program_set_backup_function (p, _backup_video_orc_pack_UYVY);
2359 #else
2360       p = orc_program_new ();
2361       orc_program_set_name (p, "video_orc_pack_UYVY");
2362       orc_program_set_backup_function (p, _backup_video_orc_pack_UYVY);
2363       orc_program_add_destination (p, 4, "d1");
2364       orc_program_add_source (p, 8, "s1");
2365       orc_program_add_temporary (p, 2, "t1");
2366       orc_program_add_temporary (p, 2, "t2");
2367       orc_program_add_temporary (p, 4, "t3");
2368       orc_program_add_temporary (p, 4, "t4");
2369 
2370       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_S1,
2371           ORC_VAR_D1);
2372       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T2, ORC_VAR_T4,
2373           ORC_VAR_D1, ORC_VAR_D1);
2374       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T3,
2375           ORC_VAR_D1, ORC_VAR_D1);
2376       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
2377           ORC_VAR_D1);
2378 #endif
2379 
2380       orc_program_compile (p);
2381       c = orc_program_take_code (p);
2382       orc_program_free (p);
2383     }
2384     p_inited = TRUE;
2385     orc_once_mutex_unlock ();
2386   }
2387   ex->arrays[ORC_VAR_A2] = c;
2388   ex->program = 0;
2389 
2390   ex->n = n;
2391   ex->arrays[ORC_VAR_D1] = d1;
2392   ex->arrays[ORC_VAR_S1] = (void *) s1;
2393 
2394   func = c->exec;
2395   func (ex);
2396 }
2397 #endif
2398 
2399 
2400 /* video_orc_unpack_UYVY */
2401 #ifdef DISABLE_ORC
2402 void
video_orc_unpack_UYVY(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)2403 video_orc_unpack_UYVY (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
2404     int n)
2405 {
2406   int i;
2407   orc_union64 *ORC_RESTRICT ptr0;
2408   const orc_union32 *ORC_RESTRICT ptr4;
2409   orc_union32 var36;
2410 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
2411   volatile orc_union16 var37;
2412 #else
2413   orc_union16 var37;
2414 #endif
2415   orc_union64 var38;
2416   orc_union16 var39;
2417   orc_union16 var40;
2418   orc_union32 var41;
2419   orc_union32 var42;
2420 
2421   ptr0 = (orc_union64 *) d1;
2422   ptr4 = (orc_union32 *) s1;
2423 
2424   /* 2: loadpb */
2425   var37.x2[0] = 0x000000ff;     /* 255 or 1.25987e-321f */
2426   var37.x2[1] = 0x000000ff;     /* 255 or 1.25987e-321f */
2427 
2428   for (i = 0; i < n; i++) {
2429     /* 0: loadl */
2430     var36 = ptr4[i];
2431     /* 1: splitwb */
2432     {
2433       orc_union16 _src;
2434       _src.i = var36.x2[0];
2435       var39.x2[0] = _src.x2[1];
2436       var40.x2[0] = _src.x2[0];
2437     }
2438     {
2439       orc_union16 _src;
2440       _src.i = var36.x2[1];
2441       var39.x2[1] = _src.x2[1];
2442       var40.x2[1] = _src.x2[0];
2443     }
2444     /* 3: mergebw */
2445     {
2446       orc_union16 _dest;
2447       _dest.x2[0] = var37.x2[0];
2448       _dest.x2[1] = var39.x2[0];
2449       var41.x2[0] = _dest.i;
2450     }
2451     {
2452       orc_union16 _dest;
2453       _dest.x2[0] = var37.x2[1];
2454       _dest.x2[1] = var39.x2[1];
2455       var41.x2[1] = _dest.i;
2456     }
2457     /* 4: mergewl */
2458     {
2459       orc_union32 _dest;
2460       _dest.x2[0] = var40.i;
2461       _dest.x2[1] = var40.i;
2462       var42.i = _dest.i;
2463     }
2464     /* 5: mergewl */
2465     {
2466       orc_union32 _dest;
2467       _dest.x2[0] = var41.x2[0];
2468       _dest.x2[1] = var42.x2[0];
2469       var38.x2[0] = _dest.i;
2470     }
2471     {
2472       orc_union32 _dest;
2473       _dest.x2[0] = var41.x2[1];
2474       _dest.x2[1] = var42.x2[1];
2475       var38.x2[1] = _dest.i;
2476     }
2477     /* 6: storeq */
2478     ptr0[i] = var38;
2479   }
2480 
2481 }
2482 
2483 #else
2484 static void
_backup_video_orc_unpack_UYVY(OrcExecutor * ORC_RESTRICT ex)2485 _backup_video_orc_unpack_UYVY (OrcExecutor * ORC_RESTRICT ex)
2486 {
2487   int i;
2488   int n = ex->n;
2489   orc_union64 *ORC_RESTRICT ptr0;
2490   const orc_union32 *ORC_RESTRICT ptr4;
2491   orc_union32 var36;
2492 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
2493   volatile orc_union16 var37;
2494 #else
2495   orc_union16 var37;
2496 #endif
2497   orc_union64 var38;
2498   orc_union16 var39;
2499   orc_union16 var40;
2500   orc_union32 var41;
2501   orc_union32 var42;
2502 
2503   ptr0 = (orc_union64 *) ex->arrays[0];
2504   ptr4 = (orc_union32 *) ex->arrays[4];
2505 
2506   /* 2: loadpb */
2507   var37.x2[0] = 0x000000ff;     /* 255 or 1.25987e-321f */
2508   var37.x2[1] = 0x000000ff;     /* 255 or 1.25987e-321f */
2509 
2510   for (i = 0; i < n; i++) {
2511     /* 0: loadl */
2512     var36 = ptr4[i];
2513     /* 1: splitwb */
2514     {
2515       orc_union16 _src;
2516       _src.i = var36.x2[0];
2517       var39.x2[0] = _src.x2[1];
2518       var40.x2[0] = _src.x2[0];
2519     }
2520     {
2521       orc_union16 _src;
2522       _src.i = var36.x2[1];
2523       var39.x2[1] = _src.x2[1];
2524       var40.x2[1] = _src.x2[0];
2525     }
2526     /* 3: mergebw */
2527     {
2528       orc_union16 _dest;
2529       _dest.x2[0] = var37.x2[0];
2530       _dest.x2[1] = var39.x2[0];
2531       var41.x2[0] = _dest.i;
2532     }
2533     {
2534       orc_union16 _dest;
2535       _dest.x2[0] = var37.x2[1];
2536       _dest.x2[1] = var39.x2[1];
2537       var41.x2[1] = _dest.i;
2538     }
2539     /* 4: mergewl */
2540     {
2541       orc_union32 _dest;
2542       _dest.x2[0] = var40.i;
2543       _dest.x2[1] = var40.i;
2544       var42.i = _dest.i;
2545     }
2546     /* 5: mergewl */
2547     {
2548       orc_union32 _dest;
2549       _dest.x2[0] = var41.x2[0];
2550       _dest.x2[1] = var42.x2[0];
2551       var38.x2[0] = _dest.i;
2552     }
2553     {
2554       orc_union32 _dest;
2555       _dest.x2[0] = var41.x2[1];
2556       _dest.x2[1] = var42.x2[1];
2557       var38.x2[1] = _dest.i;
2558     }
2559     /* 6: storeq */
2560     ptr0[i] = var38;
2561   }
2562 
2563 }
2564 
2565 void
video_orc_unpack_UYVY(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)2566 video_orc_unpack_UYVY (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
2567     int n)
2568 {
2569   OrcExecutor _ex, *ex = &_ex;
2570   static volatile int p_inited = 0;
2571   static OrcCode *c = 0;
2572   void (*func) (OrcExecutor *);
2573 
2574   if (!p_inited) {
2575     orc_once_mutex_lock ();
2576     if (!p_inited) {
2577       OrcProgram *p;
2578 
2579 #if 1
2580       static const orc_uint8 bc[] = {
2581         1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
2582         97, 99, 107, 95, 85, 89, 86, 89, 11, 8, 8, 12, 4, 4, 14, 2,
2583         255, 0, 0, 0, 20, 2, 20, 2, 20, 4, 20, 4, 21, 1, 199, 32,
2584         33, 4, 21, 1, 196, 34, 16, 32, 195, 35, 33, 33, 21, 1, 195, 0,
2585         34, 35, 2, 0,
2586       };
2587       p = orc_program_new_from_static_bytecode (bc);
2588       orc_program_set_backup_function (p, _backup_video_orc_unpack_UYVY);
2589 #else
2590       p = orc_program_new ();
2591       orc_program_set_name (p, "video_orc_unpack_UYVY");
2592       orc_program_set_backup_function (p, _backup_video_orc_unpack_UYVY);
2593       orc_program_add_destination (p, 8, "d1");
2594       orc_program_add_source (p, 4, "s1");
2595       orc_program_add_constant (p, 2, 0x000000ff, "c1");
2596       orc_program_add_temporary (p, 2, "t1");
2597       orc_program_add_temporary (p, 2, "t2");
2598       orc_program_add_temporary (p, 4, "t3");
2599       orc_program_add_temporary (p, 4, "t4");
2600 
2601       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1,
2602           ORC_VAR_D1);
2603       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1,
2604           ORC_VAR_D1);
2605       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2,
2606           ORC_VAR_D1);
2607       orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4,
2608           ORC_VAR_D1);
2609 #endif
2610 
2611       orc_program_compile (p);
2612       c = orc_program_take_code (p);
2613       orc_program_free (p);
2614     }
2615     p_inited = TRUE;
2616     orc_once_mutex_unlock ();
2617   }
2618   ex->arrays[ORC_VAR_A2] = c;
2619   ex->program = 0;
2620 
2621   ex->n = n;
2622   ex->arrays[ORC_VAR_D1] = d1;
2623   ex->arrays[ORC_VAR_S1] = (void *) s1;
2624 
2625   func = c->exec;
2626   func (ex);
2627 }
2628 #endif
2629 
2630 
2631 /* video_orc_pack_VYUY */
2632 #ifdef DISABLE_ORC
2633 void
video_orc_pack_VYUY(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)2634 video_orc_pack_VYUY (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
2635     int n)
2636 {
2637   int i;
2638   orc_union32 *ORC_RESTRICT ptr0;
2639   const orc_union64 *ORC_RESTRICT ptr4;
2640   orc_union64 var36;
2641   orc_union32 var37;
2642   orc_union32 var38;
2643   orc_union32 var39;
2644   orc_union16 var40;
2645   orc_union16 var41;
2646   orc_union16 var42;
2647 
2648   ptr0 = (orc_union32 *) d1;
2649   ptr4 = (orc_union64 *) s1;
2650 
2651 
2652   for (i = 0; i < n; i++) {
2653     /* 0: loadq */
2654     var36 = ptr4[i];
2655     /* 1: splitlw */
2656     {
2657       orc_union32 _src;
2658       _src.i = var36.x2[0];
2659       var38.x2[0] = _src.x2[1];
2660       var39.x2[0] = _src.x2[0];
2661     }
2662     {
2663       orc_union32 _src;
2664       _src.i = var36.x2[1];
2665       var38.x2[1] = _src.x2[1];
2666       var39.x2[1] = _src.x2[0];
2667     }
2668     /* 2: select0lw */
2669     {
2670       orc_union32 _src;
2671       _src.i = var38.i;
2672       var40.i = _src.x2[0];
2673     }
2674     /* 3: select1wb */
2675     {
2676       orc_union16 _src;
2677       _src.i = var39.x2[0];
2678       var41.x2[0] = _src.x2[1];
2679     }
2680     {
2681       orc_union16 _src;
2682       _src.i = var39.x2[1];
2683       var41.x2[1] = _src.x2[1];
2684     }
2685     /* 4: swapw */
2686     var42.i = ORC_SWAP_W (var40.i);
2687     /* 5: mergebw */
2688     {
2689       orc_union16 _dest;
2690       _dest.x2[0] = var42.x2[0];
2691       _dest.x2[1] = var41.x2[0];
2692       var37.x2[0] = _dest.i;
2693     }
2694     {
2695       orc_union16 _dest;
2696       _dest.x2[0] = var42.x2[1];
2697       _dest.x2[1] = var41.x2[1];
2698       var37.x2[1] = _dest.i;
2699     }
2700     /* 6: storel */
2701     ptr0[i] = var37;
2702   }
2703 
2704 }
2705 
2706 #else
2707 static void
_backup_video_orc_pack_VYUY(OrcExecutor * ORC_RESTRICT ex)2708 _backup_video_orc_pack_VYUY (OrcExecutor * ORC_RESTRICT ex)
2709 {
2710   int i;
2711   int n = ex->n;
2712   orc_union32 *ORC_RESTRICT ptr0;
2713   const orc_union64 *ORC_RESTRICT ptr4;
2714   orc_union64 var36;
2715   orc_union32 var37;
2716   orc_union32 var38;
2717   orc_union32 var39;
2718   orc_union16 var40;
2719   orc_union16 var41;
2720   orc_union16 var42;
2721 
2722   ptr0 = (orc_union32 *) ex->arrays[0];
2723   ptr4 = (orc_union64 *) ex->arrays[4];
2724 
2725 
2726   for (i = 0; i < n; i++) {
2727     /* 0: loadq */
2728     var36 = ptr4[i];
2729     /* 1: splitlw */
2730     {
2731       orc_union32 _src;
2732       _src.i = var36.x2[0];
2733       var38.x2[0] = _src.x2[1];
2734       var39.x2[0] = _src.x2[0];
2735     }
2736     {
2737       orc_union32 _src;
2738       _src.i = var36.x2[1];
2739       var38.x2[1] = _src.x2[1];
2740       var39.x2[1] = _src.x2[0];
2741     }
2742     /* 2: select0lw */
2743     {
2744       orc_union32 _src;
2745       _src.i = var38.i;
2746       var40.i = _src.x2[0];
2747     }
2748     /* 3: select1wb */
2749     {
2750       orc_union16 _src;
2751       _src.i = var39.x2[0];
2752       var41.x2[0] = _src.x2[1];
2753     }
2754     {
2755       orc_union16 _src;
2756       _src.i = var39.x2[1];
2757       var41.x2[1] = _src.x2[1];
2758     }
2759     /* 4: swapw */
2760     var42.i = ORC_SWAP_W (var40.i);
2761     /* 5: mergebw */
2762     {
2763       orc_union16 _dest;
2764       _dest.x2[0] = var42.x2[0];
2765       _dest.x2[1] = var41.x2[0];
2766       var37.x2[0] = _dest.i;
2767     }
2768     {
2769       orc_union16 _dest;
2770       _dest.x2[0] = var42.x2[1];
2771       _dest.x2[1] = var41.x2[1];
2772       var37.x2[1] = _dest.i;
2773     }
2774     /* 6: storel */
2775     ptr0[i] = var37;
2776   }
2777 
2778 }
2779 
2780 void
video_orc_pack_VYUY(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)2781 video_orc_pack_VYUY (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
2782     int n)
2783 {
2784   OrcExecutor _ex, *ex = &_ex;
2785   static volatile int p_inited = 0;
2786   static OrcCode *c = 0;
2787   void (*func) (OrcExecutor *);
2788 
2789   if (!p_inited) {
2790     orc_once_mutex_lock ();
2791     if (!p_inited) {
2792       OrcProgram *p;
2793 
2794 #if 1
2795       static const orc_uint8 bc[] = {
2796         1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
2797         107, 95, 86, 89, 85, 89, 11, 4, 4, 12, 8, 8, 20, 2, 20, 2,
2798         20, 4, 20, 4, 21, 1, 198, 35, 34, 4, 190, 33, 35, 21, 1, 189,
2799         32, 34, 183, 33, 33, 21, 1, 196, 0, 33, 32, 2, 0,
2800       };
2801       p = orc_program_new_from_static_bytecode (bc);
2802       orc_program_set_backup_function (p, _backup_video_orc_pack_VYUY);
2803 #else
2804       p = orc_program_new ();
2805       orc_program_set_name (p, "video_orc_pack_VYUY");
2806       orc_program_set_backup_function (p, _backup_video_orc_pack_VYUY);
2807       orc_program_add_destination (p, 4, "d1");
2808       orc_program_add_source (p, 8, "s1");
2809       orc_program_add_temporary (p, 2, "t1");
2810       orc_program_add_temporary (p, 2, "t2");
2811       orc_program_add_temporary (p, 4, "t3");
2812       orc_program_add_temporary (p, 4, "t4");
2813 
2814       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_S1,
2815           ORC_VAR_D1);
2816       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T2, ORC_VAR_T4,
2817           ORC_VAR_D1, ORC_VAR_D1);
2818       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T3,
2819           ORC_VAR_D1, ORC_VAR_D1);
2820       orc_program_append_2 (p, "swapw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1,
2821           ORC_VAR_D1);
2822       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
2823           ORC_VAR_D1);
2824 #endif
2825 
2826       orc_program_compile (p);
2827       c = orc_program_take_code (p);
2828       orc_program_free (p);
2829     }
2830     p_inited = TRUE;
2831     orc_once_mutex_unlock ();
2832   }
2833   ex->arrays[ORC_VAR_A2] = c;
2834   ex->program = 0;
2835 
2836   ex->n = n;
2837   ex->arrays[ORC_VAR_D1] = d1;
2838   ex->arrays[ORC_VAR_S1] = (void *) s1;
2839 
2840   func = c->exec;
2841   func (ex);
2842 }
2843 #endif
2844 
2845 
2846 /* video_orc_unpack_VYUY */
2847 #ifdef DISABLE_ORC
2848 void
video_orc_unpack_VYUY(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)2849 video_orc_unpack_VYUY (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
2850     int n)
2851 {
2852   int i;
2853   orc_union64 *ORC_RESTRICT ptr0;
2854   const orc_union32 *ORC_RESTRICT ptr4;
2855   orc_union32 var36;
2856 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
2857   volatile orc_union16 var37;
2858 #else
2859   orc_union16 var37;
2860 #endif
2861   orc_union64 var38;
2862   orc_union16 var39;
2863   orc_union16 var40;
2864   orc_union16 var41;
2865   orc_union32 var42;
2866   orc_union32 var43;
2867 
2868   ptr0 = (orc_union64 *) d1;
2869   ptr4 = (orc_union32 *) s1;
2870 
2871   /* 3: loadpb */
2872   var37.x2[0] = 0x000000ff;     /* 255 or 1.25987e-321f */
2873   var37.x2[1] = 0x000000ff;     /* 255 or 1.25987e-321f */
2874 
2875   for (i = 0; i < n; i++) {
2876     /* 0: loadl */
2877     var36 = ptr4[i];
2878     /* 1: splitwb */
2879     {
2880       orc_union16 _src;
2881       _src.i = var36.x2[0];
2882       var39.x2[0] = _src.x2[1];
2883       var40.x2[0] = _src.x2[0];
2884     }
2885     {
2886       orc_union16 _src;
2887       _src.i = var36.x2[1];
2888       var39.x2[1] = _src.x2[1];
2889       var40.x2[1] = _src.x2[0];
2890     }
2891     /* 2: swapw */
2892     var41.i = ORC_SWAP_W (var40.i);
2893     /* 4: mergebw */
2894     {
2895       orc_union16 _dest;
2896       _dest.x2[0] = var37.x2[0];
2897       _dest.x2[1] = var39.x2[0];
2898       var42.x2[0] = _dest.i;
2899     }
2900     {
2901       orc_union16 _dest;
2902       _dest.x2[0] = var37.x2[1];
2903       _dest.x2[1] = var39.x2[1];
2904       var42.x2[1] = _dest.i;
2905     }
2906     /* 5: mergewl */
2907     {
2908       orc_union32 _dest;
2909       _dest.x2[0] = var41.i;
2910       _dest.x2[1] = var41.i;
2911       var43.i = _dest.i;
2912     }
2913     /* 6: mergewl */
2914     {
2915       orc_union32 _dest;
2916       _dest.x2[0] = var42.x2[0];
2917       _dest.x2[1] = var43.x2[0];
2918       var38.x2[0] = _dest.i;
2919     }
2920     {
2921       orc_union32 _dest;
2922       _dest.x2[0] = var42.x2[1];
2923       _dest.x2[1] = var43.x2[1];
2924       var38.x2[1] = _dest.i;
2925     }
2926     /* 7: storeq */
2927     ptr0[i] = var38;
2928   }
2929 
2930 }
2931 
2932 #else
2933 static void
_backup_video_orc_unpack_VYUY(OrcExecutor * ORC_RESTRICT ex)2934 _backup_video_orc_unpack_VYUY (OrcExecutor * ORC_RESTRICT ex)
2935 {
2936   int i;
2937   int n = ex->n;
2938   orc_union64 *ORC_RESTRICT ptr0;
2939   const orc_union32 *ORC_RESTRICT ptr4;
2940   orc_union32 var36;
2941 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
2942   volatile orc_union16 var37;
2943 #else
2944   orc_union16 var37;
2945 #endif
2946   orc_union64 var38;
2947   orc_union16 var39;
2948   orc_union16 var40;
2949   orc_union16 var41;
2950   orc_union32 var42;
2951   orc_union32 var43;
2952 
2953   ptr0 = (orc_union64 *) ex->arrays[0];
2954   ptr4 = (orc_union32 *) ex->arrays[4];
2955 
2956   /* 3: loadpb */
2957   var37.x2[0] = 0x000000ff;     /* 255 or 1.25987e-321f */
2958   var37.x2[1] = 0x000000ff;     /* 255 or 1.25987e-321f */
2959 
2960   for (i = 0; i < n; i++) {
2961     /* 0: loadl */
2962     var36 = ptr4[i];
2963     /* 1: splitwb */
2964     {
2965       orc_union16 _src;
2966       _src.i = var36.x2[0];
2967       var39.x2[0] = _src.x2[1];
2968       var40.x2[0] = _src.x2[0];
2969     }
2970     {
2971       orc_union16 _src;
2972       _src.i = var36.x2[1];
2973       var39.x2[1] = _src.x2[1];
2974       var40.x2[1] = _src.x2[0];
2975     }
2976     /* 2: swapw */
2977     var41.i = ORC_SWAP_W (var40.i);
2978     /* 4: mergebw */
2979     {
2980       orc_union16 _dest;
2981       _dest.x2[0] = var37.x2[0];
2982       _dest.x2[1] = var39.x2[0];
2983       var42.x2[0] = _dest.i;
2984     }
2985     {
2986       orc_union16 _dest;
2987       _dest.x2[0] = var37.x2[1];
2988       _dest.x2[1] = var39.x2[1];
2989       var42.x2[1] = _dest.i;
2990     }
2991     /* 5: mergewl */
2992     {
2993       orc_union32 _dest;
2994       _dest.x2[0] = var41.i;
2995       _dest.x2[1] = var41.i;
2996       var43.i = _dest.i;
2997     }
2998     /* 6: mergewl */
2999     {
3000       orc_union32 _dest;
3001       _dest.x2[0] = var42.x2[0];
3002       _dest.x2[1] = var43.x2[0];
3003       var38.x2[0] = _dest.i;
3004     }
3005     {
3006       orc_union32 _dest;
3007       _dest.x2[0] = var42.x2[1];
3008       _dest.x2[1] = var43.x2[1];
3009       var38.x2[1] = _dest.i;
3010     }
3011     /* 7: storeq */
3012     ptr0[i] = var38;
3013   }
3014 
3015 }
3016 
3017 void
video_orc_unpack_VYUY(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)3018 video_orc_unpack_VYUY (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
3019     int n)
3020 {
3021   OrcExecutor _ex, *ex = &_ex;
3022   static volatile int p_inited = 0;
3023   static OrcCode *c = 0;
3024   void (*func) (OrcExecutor *);
3025 
3026   if (!p_inited) {
3027     orc_once_mutex_lock ();
3028     if (!p_inited) {
3029       OrcProgram *p;
3030 
3031 #if 1
3032       static const orc_uint8 bc[] = {
3033         1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
3034         97, 99, 107, 95, 86, 89, 85, 89, 11, 8, 8, 12, 4, 4, 14, 2,
3035         255, 0, 0, 0, 20, 2, 20, 2, 20, 4, 20, 4, 21, 1, 199, 32,
3036         33, 4, 183, 33, 33, 21, 1, 196, 34, 16, 32, 195, 35, 33, 33, 21,
3037         1, 195, 0, 34, 35, 2, 0,
3038       };
3039       p = orc_program_new_from_static_bytecode (bc);
3040       orc_program_set_backup_function (p, _backup_video_orc_unpack_VYUY);
3041 #else
3042       p = orc_program_new ();
3043       orc_program_set_name (p, "video_orc_unpack_VYUY");
3044       orc_program_set_backup_function (p, _backup_video_orc_unpack_VYUY);
3045       orc_program_add_destination (p, 8, "d1");
3046       orc_program_add_source (p, 4, "s1");
3047       orc_program_add_constant (p, 2, 0x000000ff, "c1");
3048       orc_program_add_temporary (p, 2, "t1");
3049       orc_program_add_temporary (p, 2, "t2");
3050       orc_program_add_temporary (p, 4, "t3");
3051       orc_program_add_temporary (p, 4, "t4");
3052 
3053       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1,
3054           ORC_VAR_D1);
3055       orc_program_append_2 (p, "swapw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1,
3056           ORC_VAR_D1);
3057       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1,
3058           ORC_VAR_D1);
3059       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2,
3060           ORC_VAR_D1);
3061       orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4,
3062           ORC_VAR_D1);
3063 #endif
3064 
3065       orc_program_compile (p);
3066       c = orc_program_take_code (p);
3067       orc_program_free (p);
3068     }
3069     p_inited = TRUE;
3070     orc_once_mutex_unlock ();
3071   }
3072   ex->arrays[ORC_VAR_A2] = c;
3073   ex->program = 0;
3074 
3075   ex->n = n;
3076   ex->arrays[ORC_VAR_D1] = d1;
3077   ex->arrays[ORC_VAR_S1] = (void *) s1;
3078 
3079   func = c->exec;
3080   func (ex);
3081 }
3082 #endif
3083 
3084 
3085 /* video_orc_unpack_YVYU */
3086 #ifdef DISABLE_ORC
3087 void
video_orc_unpack_YVYU(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)3088 video_orc_unpack_YVYU (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
3089     int n)
3090 {
3091   int i;
3092   orc_union64 *ORC_RESTRICT ptr0;
3093   const orc_union32 *ORC_RESTRICT ptr4;
3094   orc_union32 var36;
3095 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
3096   volatile orc_union16 var37;
3097 #else
3098   orc_union16 var37;
3099 #endif
3100   orc_union64 var38;
3101   orc_union16 var39;
3102   orc_union16 var40;
3103   orc_union16 var41;
3104   orc_union32 var42;
3105   orc_union32 var43;
3106 
3107   ptr0 = (orc_union64 *) d1;
3108   ptr4 = (orc_union32 *) s1;
3109 
3110   /* 3: loadpb */
3111   var37.x2[0] = 0x000000ff;     /* 255 or 1.25987e-321f */
3112   var37.x2[1] = 0x000000ff;     /* 255 or 1.25987e-321f */
3113 
3114   for (i = 0; i < n; i++) {
3115     /* 0: loadl */
3116     var36 = ptr4[i];
3117     /* 1: splitwb */
3118     {
3119       orc_union16 _src;
3120       _src.i = var36.x2[0];
3121       var39.x2[0] = _src.x2[1];
3122       var40.x2[0] = _src.x2[0];
3123     }
3124     {
3125       orc_union16 _src;
3126       _src.i = var36.x2[1];
3127       var39.x2[1] = _src.x2[1];
3128       var40.x2[1] = _src.x2[0];
3129     }
3130     /* 2: swapw */
3131     var41.i = ORC_SWAP_W (var39.i);
3132     /* 4: mergebw */
3133     {
3134       orc_union16 _dest;
3135       _dest.x2[0] = var37.x2[0];
3136       _dest.x2[1] = var40.x2[0];
3137       var42.x2[0] = _dest.i;
3138     }
3139     {
3140       orc_union16 _dest;
3141       _dest.x2[0] = var37.x2[1];
3142       _dest.x2[1] = var40.x2[1];
3143       var42.x2[1] = _dest.i;
3144     }
3145     /* 5: mergewl */
3146     {
3147       orc_union32 _dest;
3148       _dest.x2[0] = var41.i;
3149       _dest.x2[1] = var41.i;
3150       var43.i = _dest.i;
3151     }
3152     /* 6: mergewl */
3153     {
3154       orc_union32 _dest;
3155       _dest.x2[0] = var42.x2[0];
3156       _dest.x2[1] = var43.x2[0];
3157       var38.x2[0] = _dest.i;
3158     }
3159     {
3160       orc_union32 _dest;
3161       _dest.x2[0] = var42.x2[1];
3162       _dest.x2[1] = var43.x2[1];
3163       var38.x2[1] = _dest.i;
3164     }
3165     /* 7: storeq */
3166     ptr0[i] = var38;
3167   }
3168 
3169 }
3170 
3171 #else
3172 static void
_backup_video_orc_unpack_YVYU(OrcExecutor * ORC_RESTRICT ex)3173 _backup_video_orc_unpack_YVYU (OrcExecutor * ORC_RESTRICT ex)
3174 {
3175   int i;
3176   int n = ex->n;
3177   orc_union64 *ORC_RESTRICT ptr0;
3178   const orc_union32 *ORC_RESTRICT ptr4;
3179   orc_union32 var36;
3180 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
3181   volatile orc_union16 var37;
3182 #else
3183   orc_union16 var37;
3184 #endif
3185   orc_union64 var38;
3186   orc_union16 var39;
3187   orc_union16 var40;
3188   orc_union16 var41;
3189   orc_union32 var42;
3190   orc_union32 var43;
3191 
3192   ptr0 = (orc_union64 *) ex->arrays[0];
3193   ptr4 = (orc_union32 *) ex->arrays[4];
3194 
3195   /* 3: loadpb */
3196   var37.x2[0] = 0x000000ff;     /* 255 or 1.25987e-321f */
3197   var37.x2[1] = 0x000000ff;     /* 255 or 1.25987e-321f */
3198 
3199   for (i = 0; i < n; i++) {
3200     /* 0: loadl */
3201     var36 = ptr4[i];
3202     /* 1: splitwb */
3203     {
3204       orc_union16 _src;
3205       _src.i = var36.x2[0];
3206       var39.x2[0] = _src.x2[1];
3207       var40.x2[0] = _src.x2[0];
3208     }
3209     {
3210       orc_union16 _src;
3211       _src.i = var36.x2[1];
3212       var39.x2[1] = _src.x2[1];
3213       var40.x2[1] = _src.x2[0];
3214     }
3215     /* 2: swapw */
3216     var41.i = ORC_SWAP_W (var39.i);
3217     /* 4: mergebw */
3218     {
3219       orc_union16 _dest;
3220       _dest.x2[0] = var37.x2[0];
3221       _dest.x2[1] = var40.x2[0];
3222       var42.x2[0] = _dest.i;
3223     }
3224     {
3225       orc_union16 _dest;
3226       _dest.x2[0] = var37.x2[1];
3227       _dest.x2[1] = var40.x2[1];
3228       var42.x2[1] = _dest.i;
3229     }
3230     /* 5: mergewl */
3231     {
3232       orc_union32 _dest;
3233       _dest.x2[0] = var41.i;
3234       _dest.x2[1] = var41.i;
3235       var43.i = _dest.i;
3236     }
3237     /* 6: mergewl */
3238     {
3239       orc_union32 _dest;
3240       _dest.x2[0] = var42.x2[0];
3241       _dest.x2[1] = var43.x2[0];
3242       var38.x2[0] = _dest.i;
3243     }
3244     {
3245       orc_union32 _dest;
3246       _dest.x2[0] = var42.x2[1];
3247       _dest.x2[1] = var43.x2[1];
3248       var38.x2[1] = _dest.i;
3249     }
3250     /* 7: storeq */
3251     ptr0[i] = var38;
3252   }
3253 
3254 }
3255 
3256 void
video_orc_unpack_YVYU(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)3257 video_orc_unpack_YVYU (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
3258     int n)
3259 {
3260   OrcExecutor _ex, *ex = &_ex;
3261   static volatile int p_inited = 0;
3262   static OrcCode *c = 0;
3263   void (*func) (OrcExecutor *);
3264 
3265   if (!p_inited) {
3266     orc_once_mutex_lock ();
3267     if (!p_inited) {
3268       OrcProgram *p;
3269 
3270 #if 1
3271       static const orc_uint8 bc[] = {
3272         1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
3273         97, 99, 107, 95, 89, 86, 89, 85, 11, 8, 8, 12, 4, 4, 14, 2,
3274         255, 0, 0, 0, 20, 2, 20, 2, 20, 4, 20, 4, 21, 1, 199, 33,
3275         32, 4, 183, 33, 33, 21, 1, 196, 34, 16, 32, 195, 35, 33, 33, 21,
3276         1, 195, 0, 34, 35, 2, 0,
3277       };
3278       p = orc_program_new_from_static_bytecode (bc);
3279       orc_program_set_backup_function (p, _backup_video_orc_unpack_YVYU);
3280 #else
3281       p = orc_program_new ();
3282       orc_program_set_name (p, "video_orc_unpack_YVYU");
3283       orc_program_set_backup_function (p, _backup_video_orc_unpack_YVYU);
3284       orc_program_add_destination (p, 8, "d1");
3285       orc_program_add_source (p, 4, "s1");
3286       orc_program_add_constant (p, 2, 0x000000ff, "c1");
3287       orc_program_add_temporary (p, 2, "t1");
3288       orc_program_add_temporary (p, 2, "t2");
3289       orc_program_add_temporary (p, 4, "t3");
3290       orc_program_add_temporary (p, 4, "t4");
3291 
3292       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
3293           ORC_VAR_D1);
3294       orc_program_append_2 (p, "swapw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1,
3295           ORC_VAR_D1);
3296       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1,
3297           ORC_VAR_D1);
3298       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2,
3299           ORC_VAR_D1);
3300       orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4,
3301           ORC_VAR_D1);
3302 #endif
3303 
3304       orc_program_compile (p);
3305       c = orc_program_take_code (p);
3306       orc_program_free (p);
3307     }
3308     p_inited = TRUE;
3309     orc_once_mutex_unlock ();
3310   }
3311   ex->arrays[ORC_VAR_A2] = c;
3312   ex->program = 0;
3313 
3314   ex->n = n;
3315   ex->arrays[ORC_VAR_D1] = d1;
3316   ex->arrays[ORC_VAR_S1] = (void *) s1;
3317 
3318   func = c->exec;
3319   func (ex);
3320 }
3321 #endif
3322 
3323 
3324 /* video_orc_pack_YVYU */
3325 #ifdef DISABLE_ORC
3326 void
video_orc_pack_YVYU(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)3327 video_orc_pack_YVYU (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
3328     int n)
3329 {
3330   int i;
3331   orc_union32 *ORC_RESTRICT ptr0;
3332   const orc_union64 *ORC_RESTRICT ptr4;
3333   orc_union64 var36;
3334   orc_union32 var37;
3335   orc_union32 var38;
3336   orc_union32 var39;
3337   orc_union16 var40;
3338   orc_union16 var41;
3339   orc_union16 var42;
3340 
3341   ptr0 = (orc_union32 *) d1;
3342   ptr4 = (orc_union64 *) s1;
3343 
3344 
3345   for (i = 0; i < n; i++) {
3346     /* 0: loadq */
3347     var36 = ptr4[i];
3348     /* 1: splitlw */
3349     {
3350       orc_union32 _src;
3351       _src.i = var36.x2[0];
3352       var38.x2[0] = _src.x2[1];
3353       var39.x2[0] = _src.x2[0];
3354     }
3355     {
3356       orc_union32 _src;
3357       _src.i = var36.x2[1];
3358       var38.x2[1] = _src.x2[1];
3359       var39.x2[1] = _src.x2[0];
3360     }
3361     /* 2: select0lw */
3362     {
3363       orc_union32 _src;
3364       _src.i = var38.i;
3365       var40.i = _src.x2[0];
3366     }
3367     /* 3: select1wb */
3368     {
3369       orc_union16 _src;
3370       _src.i = var39.x2[0];
3371       var41.x2[0] = _src.x2[1];
3372     }
3373     {
3374       orc_union16 _src;
3375       _src.i = var39.x2[1];
3376       var41.x2[1] = _src.x2[1];
3377     }
3378     /* 4: swapw */
3379     var42.i = ORC_SWAP_W (var40.i);
3380     /* 5: mergebw */
3381     {
3382       orc_union16 _dest;
3383       _dest.x2[0] = var41.x2[0];
3384       _dest.x2[1] = var42.x2[0];
3385       var37.x2[0] = _dest.i;
3386     }
3387     {
3388       orc_union16 _dest;
3389       _dest.x2[0] = var41.x2[1];
3390       _dest.x2[1] = var42.x2[1];
3391       var37.x2[1] = _dest.i;
3392     }
3393     /* 6: storel */
3394     ptr0[i] = var37;
3395   }
3396 
3397 }
3398 
3399 #else
3400 static void
_backup_video_orc_pack_YVYU(OrcExecutor * ORC_RESTRICT ex)3401 _backup_video_orc_pack_YVYU (OrcExecutor * ORC_RESTRICT ex)
3402 {
3403   int i;
3404   int n = ex->n;
3405   orc_union32 *ORC_RESTRICT ptr0;
3406   const orc_union64 *ORC_RESTRICT ptr4;
3407   orc_union64 var36;
3408   orc_union32 var37;
3409   orc_union32 var38;
3410   orc_union32 var39;
3411   orc_union16 var40;
3412   orc_union16 var41;
3413   orc_union16 var42;
3414 
3415   ptr0 = (orc_union32 *) ex->arrays[0];
3416   ptr4 = (orc_union64 *) ex->arrays[4];
3417 
3418 
3419   for (i = 0; i < n; i++) {
3420     /* 0: loadq */
3421     var36 = ptr4[i];
3422     /* 1: splitlw */
3423     {
3424       orc_union32 _src;
3425       _src.i = var36.x2[0];
3426       var38.x2[0] = _src.x2[1];
3427       var39.x2[0] = _src.x2[0];
3428     }
3429     {
3430       orc_union32 _src;
3431       _src.i = var36.x2[1];
3432       var38.x2[1] = _src.x2[1];
3433       var39.x2[1] = _src.x2[0];
3434     }
3435     /* 2: select0lw */
3436     {
3437       orc_union32 _src;
3438       _src.i = var38.i;
3439       var40.i = _src.x2[0];
3440     }
3441     /* 3: select1wb */
3442     {
3443       orc_union16 _src;
3444       _src.i = var39.x2[0];
3445       var41.x2[0] = _src.x2[1];
3446     }
3447     {
3448       orc_union16 _src;
3449       _src.i = var39.x2[1];
3450       var41.x2[1] = _src.x2[1];
3451     }
3452     /* 4: swapw */
3453     var42.i = ORC_SWAP_W (var40.i);
3454     /* 5: mergebw */
3455     {
3456       orc_union16 _dest;
3457       _dest.x2[0] = var41.x2[0];
3458       _dest.x2[1] = var42.x2[0];
3459       var37.x2[0] = _dest.i;
3460     }
3461     {
3462       orc_union16 _dest;
3463       _dest.x2[0] = var41.x2[1];
3464       _dest.x2[1] = var42.x2[1];
3465       var37.x2[1] = _dest.i;
3466     }
3467     /* 6: storel */
3468     ptr0[i] = var37;
3469   }
3470 
3471 }
3472 
3473 void
video_orc_pack_YVYU(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)3474 video_orc_pack_YVYU (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
3475     int n)
3476 {
3477   OrcExecutor _ex, *ex = &_ex;
3478   static volatile int p_inited = 0;
3479   static OrcCode *c = 0;
3480   void (*func) (OrcExecutor *);
3481 
3482   if (!p_inited) {
3483     orc_once_mutex_lock ();
3484     if (!p_inited) {
3485       OrcProgram *p;
3486 
3487 #if 1
3488       static const orc_uint8 bc[] = {
3489         1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
3490         107, 95, 89, 86, 89, 85, 11, 4, 4, 12, 8, 8, 20, 2, 20, 2,
3491         20, 4, 20, 4, 21, 1, 198, 35, 34, 4, 190, 33, 35, 21, 1, 189,
3492         32, 34, 183, 33, 33, 21, 1, 196, 0, 32, 33, 2, 0,
3493       };
3494       p = orc_program_new_from_static_bytecode (bc);
3495       orc_program_set_backup_function (p, _backup_video_orc_pack_YVYU);
3496 #else
3497       p = orc_program_new ();
3498       orc_program_set_name (p, "video_orc_pack_YVYU");
3499       orc_program_set_backup_function (p, _backup_video_orc_pack_YVYU);
3500       orc_program_add_destination (p, 4, "d1");
3501       orc_program_add_source (p, 8, "s1");
3502       orc_program_add_temporary (p, 2, "t1");
3503       orc_program_add_temporary (p, 2, "t2");
3504       orc_program_add_temporary (p, 4, "t3");
3505       orc_program_add_temporary (p, 4, "t4");
3506 
3507       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_S1,
3508           ORC_VAR_D1);
3509       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T2, ORC_VAR_T4,
3510           ORC_VAR_D1, ORC_VAR_D1);
3511       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T3,
3512           ORC_VAR_D1, ORC_VAR_D1);
3513       orc_program_append_2 (p, "swapw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1,
3514           ORC_VAR_D1);
3515       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
3516           ORC_VAR_D1);
3517 #endif
3518 
3519       orc_program_compile (p);
3520       c = orc_program_take_code (p);
3521       orc_program_free (p);
3522     }
3523     p_inited = TRUE;
3524     orc_once_mutex_unlock ();
3525   }
3526   ex->arrays[ORC_VAR_A2] = c;
3527   ex->program = 0;
3528 
3529   ex->n = n;
3530   ex->arrays[ORC_VAR_D1] = d1;
3531   ex->arrays[ORC_VAR_S1] = (void *) s1;
3532 
3533   func = c->exec;
3534   func (ex);
3535 }
3536 #endif
3537 
3538 
3539 /* video_orc_unpack_YUV9 */
3540 #ifdef DISABLE_ORC
3541 void
video_orc_unpack_YUV9(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,const guint8 * ORC_RESTRICT s3,int n)3542 video_orc_unpack_YUV9 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
3543     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n)
3544 {
3545   int i;
3546   orc_union64 *ORC_RESTRICT ptr0;
3547   const orc_union16 *ORC_RESTRICT ptr4;
3548   const orc_int8 *ORC_RESTRICT ptr5;
3549   const orc_int8 *ORC_RESTRICT ptr6;
3550 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
3551   volatile orc_union16 var37;
3552 #else
3553   orc_union16 var37;
3554 #endif
3555   orc_union16 var38;
3556   orc_union64 var39;
3557   orc_int8 var40;
3558   orc_int8 var41;
3559   orc_union16 var42;
3560   orc_union32 var43;
3561   orc_union32 var44;
3562 
3563   ptr0 = (orc_union64 *) d1;
3564   ptr4 = (orc_union16 *) s1;
3565   ptr5 = (orc_int8 *) s2;
3566   ptr6 = (orc_int8 *) s3;
3567 
3568   /* 4: loadpb */
3569   var37.x2[0] = 0x000000ff;     /* 255 or 1.25987e-321f */
3570   var37.x2[1] = 0x000000ff;     /* 255 or 1.25987e-321f */
3571 
3572   for (i = 0; i < n; i++) {
3573     /* 0: loadupdb */
3574     var40 = ptr5[i >> 1];
3575     /* 1: loadupdb */
3576     var41 = ptr6[i >> 1];
3577     /* 2: mergebw */
3578     {
3579       orc_union16 _dest;
3580       _dest.x2[0] = var40;
3581       _dest.x2[1] = var41;
3582       var42.i = _dest.i;
3583     }
3584     /* 3: mergewl */
3585     {
3586       orc_union32 _dest;
3587       _dest.x2[0] = var42.i;
3588       _dest.x2[1] = var42.i;
3589       var43.i = _dest.i;
3590     }
3591     /* 5: loadw */
3592     var38 = ptr4[i];
3593     /* 6: mergebw */
3594     {
3595       orc_union16 _dest;
3596       _dest.x2[0] = var37.x2[0];
3597       _dest.x2[1] = var38.x2[0];
3598       var44.x2[0] = _dest.i;
3599     }
3600     {
3601       orc_union16 _dest;
3602       _dest.x2[0] = var37.x2[1];
3603       _dest.x2[1] = var38.x2[1];
3604       var44.x2[1] = _dest.i;
3605     }
3606     /* 7: mergewl */
3607     {
3608       orc_union32 _dest;
3609       _dest.x2[0] = var44.x2[0];
3610       _dest.x2[1] = var43.x2[0];
3611       var39.x2[0] = _dest.i;
3612     }
3613     {
3614       orc_union32 _dest;
3615       _dest.x2[0] = var44.x2[1];
3616       _dest.x2[1] = var43.x2[1];
3617       var39.x2[1] = _dest.i;
3618     }
3619     /* 8: storeq */
3620     ptr0[i] = var39;
3621   }
3622 
3623 }
3624 
3625 #else
3626 static void
_backup_video_orc_unpack_YUV9(OrcExecutor * ORC_RESTRICT ex)3627 _backup_video_orc_unpack_YUV9 (OrcExecutor * ORC_RESTRICT ex)
3628 {
3629   int i;
3630   int n = ex->n;
3631   orc_union64 *ORC_RESTRICT ptr0;
3632   const orc_union16 *ORC_RESTRICT ptr4;
3633   const orc_int8 *ORC_RESTRICT ptr5;
3634   const orc_int8 *ORC_RESTRICT ptr6;
3635 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
3636   volatile orc_union16 var37;
3637 #else
3638   orc_union16 var37;
3639 #endif
3640   orc_union16 var38;
3641   orc_union64 var39;
3642   orc_int8 var40;
3643   orc_int8 var41;
3644   orc_union16 var42;
3645   orc_union32 var43;
3646   orc_union32 var44;
3647 
3648   ptr0 = (orc_union64 *) ex->arrays[0];
3649   ptr4 = (orc_union16 *) ex->arrays[4];
3650   ptr5 = (orc_int8 *) ex->arrays[5];
3651   ptr6 = (orc_int8 *) ex->arrays[6];
3652 
3653   /* 4: loadpb */
3654   var37.x2[0] = 0x000000ff;     /* 255 or 1.25987e-321f */
3655   var37.x2[1] = 0x000000ff;     /* 255 or 1.25987e-321f */
3656 
3657   for (i = 0; i < n; i++) {
3658     /* 0: loadupdb */
3659     var40 = ptr5[i >> 1];
3660     /* 1: loadupdb */
3661     var41 = ptr6[i >> 1];
3662     /* 2: mergebw */
3663     {
3664       orc_union16 _dest;
3665       _dest.x2[0] = var40;
3666       _dest.x2[1] = var41;
3667       var42.i = _dest.i;
3668     }
3669     /* 3: mergewl */
3670     {
3671       orc_union32 _dest;
3672       _dest.x2[0] = var42.i;
3673       _dest.x2[1] = var42.i;
3674       var43.i = _dest.i;
3675     }
3676     /* 5: loadw */
3677     var38 = ptr4[i];
3678     /* 6: mergebw */
3679     {
3680       orc_union16 _dest;
3681       _dest.x2[0] = var37.x2[0];
3682       _dest.x2[1] = var38.x2[0];
3683       var44.x2[0] = _dest.i;
3684     }
3685     {
3686       orc_union16 _dest;
3687       _dest.x2[0] = var37.x2[1];
3688       _dest.x2[1] = var38.x2[1];
3689       var44.x2[1] = _dest.i;
3690     }
3691     /* 7: mergewl */
3692     {
3693       orc_union32 _dest;
3694       _dest.x2[0] = var44.x2[0];
3695       _dest.x2[1] = var43.x2[0];
3696       var39.x2[0] = _dest.i;
3697     }
3698     {
3699       orc_union32 _dest;
3700       _dest.x2[0] = var44.x2[1];
3701       _dest.x2[1] = var43.x2[1];
3702       var39.x2[1] = _dest.i;
3703     }
3704     /* 8: storeq */
3705     ptr0[i] = var39;
3706   }
3707 
3708 }
3709 
3710 void
video_orc_unpack_YUV9(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,const guint8 * ORC_RESTRICT s3,int n)3711 video_orc_unpack_YUV9 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
3712     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n)
3713 {
3714   OrcExecutor _ex, *ex = &_ex;
3715   static volatile int p_inited = 0;
3716   static OrcCode *c = 0;
3717   void (*func) (OrcExecutor *);
3718 
3719   if (!p_inited) {
3720     orc_once_mutex_lock ();
3721     if (!p_inited) {
3722       OrcProgram *p;
3723 
3724 #if 1
3725       static const orc_uint8 bc[] = {
3726         1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
3727         97, 99, 107, 95, 89, 85, 86, 57, 11, 8, 8, 12, 2, 2, 12, 1,
3728         1, 12, 1, 1, 14, 1, 255, 0, 0, 0, 20, 2, 20, 4, 20, 4,
3729         20, 1, 20, 1, 45, 35, 5, 45, 36, 6, 196, 32, 35, 36, 195, 34,
3730         32, 32, 21, 1, 196, 33, 16, 4, 21, 1, 195, 0, 33, 34, 2, 0,
3731 
3732       };
3733       p = orc_program_new_from_static_bytecode (bc);
3734       orc_program_set_backup_function (p, _backup_video_orc_unpack_YUV9);
3735 #else
3736       p = orc_program_new ();
3737       orc_program_set_name (p, "video_orc_unpack_YUV9");
3738       orc_program_set_backup_function (p, _backup_video_orc_unpack_YUV9);
3739       orc_program_add_destination (p, 8, "d1");
3740       orc_program_add_source (p, 2, "s1");
3741       orc_program_add_source (p, 1, "s2");
3742       orc_program_add_source (p, 1, "s3");
3743       orc_program_add_constant (p, 1, 0x000000ff, "c1");
3744       orc_program_add_temporary (p, 2, "t1");
3745       orc_program_add_temporary (p, 4, "t2");
3746       orc_program_add_temporary (p, 4, "t3");
3747       orc_program_add_temporary (p, 1, "t4");
3748       orc_program_add_temporary (p, 1, "t5");
3749 
3750       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T4, ORC_VAR_S2,
3751           ORC_VAR_D1, ORC_VAR_D1);
3752       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T5, ORC_VAR_S3,
3753           ORC_VAR_D1, ORC_VAR_D1);
3754       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T4, ORC_VAR_T5,
3755           ORC_VAR_D1);
3756       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1,
3757           ORC_VAR_D1);
3758       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1,
3759           ORC_VAR_D1);
3760       orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T3,
3761           ORC_VAR_D1);
3762 #endif
3763 
3764       orc_program_compile (p);
3765       c = orc_program_take_code (p);
3766       orc_program_free (p);
3767     }
3768     p_inited = TRUE;
3769     orc_once_mutex_unlock ();
3770   }
3771   ex->arrays[ORC_VAR_A2] = c;
3772   ex->program = 0;
3773 
3774   ex->n = n;
3775   ex->arrays[ORC_VAR_D1] = d1;
3776   ex->arrays[ORC_VAR_S1] = (void *) s1;
3777   ex->arrays[ORC_VAR_S2] = (void *) s2;
3778   ex->arrays[ORC_VAR_S3] = (void *) s3;
3779 
3780   func = c->exec;
3781   func (ex);
3782 }
3783 #endif
3784 
3785 
3786 /* video_orc_unpack_Y42B */
3787 #ifdef DISABLE_ORC
3788 void
video_orc_unpack_Y42B(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,const guint8 * ORC_RESTRICT s3,int n)3789 video_orc_unpack_Y42B (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
3790     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n)
3791 {
3792   int i;
3793   orc_union64 *ORC_RESTRICT ptr0;
3794   const orc_union16 *ORC_RESTRICT ptr4;
3795   const orc_int8 *ORC_RESTRICT ptr5;
3796   const orc_int8 *ORC_RESTRICT ptr6;
3797   orc_int8 var36;
3798   orc_int8 var37;
3799 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
3800   volatile orc_union16 var38;
3801 #else
3802   orc_union16 var38;
3803 #endif
3804   orc_union16 var39;
3805   orc_union64 var40;
3806   orc_union16 var41;
3807   orc_union32 var42;
3808   orc_union32 var43;
3809 
3810   ptr0 = (orc_union64 *) d1;
3811   ptr4 = (orc_union16 *) s1;
3812   ptr5 = (orc_int8 *) s2;
3813   ptr6 = (orc_int8 *) s3;
3814 
3815   /* 3: loadpb */
3816   var38.x2[0] = 0x000000ff;     /* 255 or 1.25987e-321f */
3817   var38.x2[1] = 0x000000ff;     /* 255 or 1.25987e-321f */
3818 
3819   for (i = 0; i < n; i++) {
3820     /* 0: loadb */
3821     var36 = ptr5[i];
3822     /* 1: loadb */
3823     var37 = ptr6[i];
3824     /* 2: mergebw */
3825     {
3826       orc_union16 _dest;
3827       _dest.x2[0] = var36;
3828       _dest.x2[1] = var37;
3829       var41.i = _dest.i;
3830     }
3831     /* 4: loadw */
3832     var39 = ptr4[i];
3833     /* 5: mergebw */
3834     {
3835       orc_union16 _dest;
3836       _dest.x2[0] = var38.x2[0];
3837       _dest.x2[1] = var39.x2[0];
3838       var42.x2[0] = _dest.i;
3839     }
3840     {
3841       orc_union16 _dest;
3842       _dest.x2[0] = var38.x2[1];
3843       _dest.x2[1] = var39.x2[1];
3844       var42.x2[1] = _dest.i;
3845     }
3846     /* 6: mergewl */
3847     {
3848       orc_union32 _dest;
3849       _dest.x2[0] = var41.i;
3850       _dest.x2[1] = var41.i;
3851       var43.i = _dest.i;
3852     }
3853     /* 7: mergewl */
3854     {
3855       orc_union32 _dest;
3856       _dest.x2[0] = var42.x2[0];
3857       _dest.x2[1] = var43.x2[0];
3858       var40.x2[0] = _dest.i;
3859     }
3860     {
3861       orc_union32 _dest;
3862       _dest.x2[0] = var42.x2[1];
3863       _dest.x2[1] = var43.x2[1];
3864       var40.x2[1] = _dest.i;
3865     }
3866     /* 8: storeq */
3867     ptr0[i] = var40;
3868   }
3869 
3870 }
3871 
3872 #else
3873 static void
_backup_video_orc_unpack_Y42B(OrcExecutor * ORC_RESTRICT ex)3874 _backup_video_orc_unpack_Y42B (OrcExecutor * ORC_RESTRICT ex)
3875 {
3876   int i;
3877   int n = ex->n;
3878   orc_union64 *ORC_RESTRICT ptr0;
3879   const orc_union16 *ORC_RESTRICT ptr4;
3880   const orc_int8 *ORC_RESTRICT ptr5;
3881   const orc_int8 *ORC_RESTRICT ptr6;
3882   orc_int8 var36;
3883   orc_int8 var37;
3884 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
3885   volatile orc_union16 var38;
3886 #else
3887   orc_union16 var38;
3888 #endif
3889   orc_union16 var39;
3890   orc_union64 var40;
3891   orc_union16 var41;
3892   orc_union32 var42;
3893   orc_union32 var43;
3894 
3895   ptr0 = (orc_union64 *) ex->arrays[0];
3896   ptr4 = (orc_union16 *) ex->arrays[4];
3897   ptr5 = (orc_int8 *) ex->arrays[5];
3898   ptr6 = (orc_int8 *) ex->arrays[6];
3899 
3900   /* 3: loadpb */
3901   var38.x2[0] = 0x000000ff;     /* 255 or 1.25987e-321f */
3902   var38.x2[1] = 0x000000ff;     /* 255 or 1.25987e-321f */
3903 
3904   for (i = 0; i < n; i++) {
3905     /* 0: loadb */
3906     var36 = ptr5[i];
3907     /* 1: loadb */
3908     var37 = ptr6[i];
3909     /* 2: mergebw */
3910     {
3911       orc_union16 _dest;
3912       _dest.x2[0] = var36;
3913       _dest.x2[1] = var37;
3914       var41.i = _dest.i;
3915     }
3916     /* 4: loadw */
3917     var39 = ptr4[i];
3918     /* 5: mergebw */
3919     {
3920       orc_union16 _dest;
3921       _dest.x2[0] = var38.x2[0];
3922       _dest.x2[1] = var39.x2[0];
3923       var42.x2[0] = _dest.i;
3924     }
3925     {
3926       orc_union16 _dest;
3927       _dest.x2[0] = var38.x2[1];
3928       _dest.x2[1] = var39.x2[1];
3929       var42.x2[1] = _dest.i;
3930     }
3931     /* 6: mergewl */
3932     {
3933       orc_union32 _dest;
3934       _dest.x2[0] = var41.i;
3935       _dest.x2[1] = var41.i;
3936       var43.i = _dest.i;
3937     }
3938     /* 7: mergewl */
3939     {
3940       orc_union32 _dest;
3941       _dest.x2[0] = var42.x2[0];
3942       _dest.x2[1] = var43.x2[0];
3943       var40.x2[0] = _dest.i;
3944     }
3945     {
3946       orc_union32 _dest;
3947       _dest.x2[0] = var42.x2[1];
3948       _dest.x2[1] = var43.x2[1];
3949       var40.x2[1] = _dest.i;
3950     }
3951     /* 8: storeq */
3952     ptr0[i] = var40;
3953   }
3954 
3955 }
3956 
3957 void
video_orc_unpack_Y42B(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,const guint8 * ORC_RESTRICT s3,int n)3958 video_orc_unpack_Y42B (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
3959     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n)
3960 {
3961   OrcExecutor _ex, *ex = &_ex;
3962   static volatile int p_inited = 0;
3963   static OrcCode *c = 0;
3964   void (*func) (OrcExecutor *);
3965 
3966   if (!p_inited) {
3967     orc_once_mutex_lock ();
3968     if (!p_inited) {
3969       OrcProgram *p;
3970 
3971 #if 1
3972       static const orc_uint8 bc[] = {
3973         1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
3974         97, 99, 107, 95, 89, 52, 50, 66, 11, 8, 8, 12, 2, 2, 12, 1,
3975         1, 12, 1, 1, 14, 1, 255, 0, 0, 0, 20, 2, 20, 2, 20, 4,
3976         20, 4, 196, 32, 5, 6, 21, 1, 196, 35, 16, 4, 195, 34, 32, 32,
3977         21, 1, 195, 0, 35, 34, 2, 0,
3978       };
3979       p = orc_program_new_from_static_bytecode (bc);
3980       orc_program_set_backup_function (p, _backup_video_orc_unpack_Y42B);
3981 #else
3982       p = orc_program_new ();
3983       orc_program_set_name (p, "video_orc_unpack_Y42B");
3984       orc_program_set_backup_function (p, _backup_video_orc_unpack_Y42B);
3985       orc_program_add_destination (p, 8, "d1");
3986       orc_program_add_source (p, 2, "s1");
3987       orc_program_add_source (p, 1, "s2");
3988       orc_program_add_source (p, 1, "s3");
3989       orc_program_add_constant (p, 1, 0x000000ff, "c1");
3990       orc_program_add_temporary (p, 2, "t1");
3991       orc_program_add_temporary (p, 2, "t2");
3992       orc_program_add_temporary (p, 4, "t3");
3993       orc_program_add_temporary (p, 4, "t4");
3994 
3995       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3,
3996           ORC_VAR_D1);
3997       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T4, ORC_VAR_C1, ORC_VAR_S1,
3998           ORC_VAR_D1);
3999       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1,
4000           ORC_VAR_D1);
4001       orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_T3,
4002           ORC_VAR_D1);
4003 #endif
4004 
4005       orc_program_compile (p);
4006       c = orc_program_take_code (p);
4007       orc_program_free (p);
4008     }
4009     p_inited = TRUE;
4010     orc_once_mutex_unlock ();
4011   }
4012   ex->arrays[ORC_VAR_A2] = c;
4013   ex->program = 0;
4014 
4015   ex->n = n;
4016   ex->arrays[ORC_VAR_D1] = d1;
4017   ex->arrays[ORC_VAR_S1] = (void *) s1;
4018   ex->arrays[ORC_VAR_S2] = (void *) s2;
4019   ex->arrays[ORC_VAR_S3] = (void *) s3;
4020 
4021   func = c->exec;
4022   func (ex);
4023 }
4024 #endif
4025 
4026 
4027 /* video_orc_pack_Y42B */
4028 #ifdef DISABLE_ORC
4029 void
video_orc_pack_Y42B(guint8 * ORC_RESTRICT d1,guint8 * ORC_RESTRICT d2,guint8 * ORC_RESTRICT d3,const guint8 * ORC_RESTRICT s1,int n)4030 video_orc_pack_Y42B (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
4031     guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n)
4032 {
4033   int i;
4034   orc_union16 *ORC_RESTRICT ptr0;
4035   orc_int8 *ORC_RESTRICT ptr1;
4036   orc_int8 *ORC_RESTRICT ptr2;
4037   const orc_union64 *ORC_RESTRICT ptr4;
4038   orc_union64 var35;
4039   orc_int8 var36;
4040   orc_int8 var37;
4041   orc_union16 var38;
4042   orc_union32 var39;
4043   orc_union32 var40;
4044   orc_union16 var41;
4045 
4046   ptr0 = (orc_union16 *) d1;
4047   ptr1 = (orc_int8 *) d2;
4048   ptr2 = (orc_int8 *) d3;
4049   ptr4 = (orc_union64 *) s1;
4050 
4051 
4052   for (i = 0; i < n; i++) {
4053     /* 0: loadq */
4054     var35 = ptr4[i];
4055     /* 1: splitlw */
4056     {
4057       orc_union32 _src;
4058       _src.i = var35.x2[0];
4059       var39.x2[0] = _src.x2[1];
4060       var40.x2[0] = _src.x2[0];
4061     }
4062     {
4063       orc_union32 _src;
4064       _src.i = var35.x2[1];
4065       var39.x2[1] = _src.x2[1];
4066       var40.x2[1] = _src.x2[0];
4067     }
4068     /* 2: select0lw */
4069     {
4070       orc_union32 _src;
4071       _src.i = var39.i;
4072       var41.i = _src.x2[0];
4073     }
4074     /* 3: splitwb */
4075     {
4076       orc_union16 _src;
4077       _src.i = var41.i;
4078       var36 = _src.x2[1];
4079       var37 = _src.x2[0];
4080     }
4081     /* 4: storeb */
4082     ptr2[i] = var36;
4083     /* 5: storeb */
4084     ptr1[i] = var37;
4085     /* 6: select1wb */
4086     {
4087       orc_union16 _src;
4088       _src.i = var40.x2[0];
4089       var38.x2[0] = _src.x2[1];
4090     }
4091     {
4092       orc_union16 _src;
4093       _src.i = var40.x2[1];
4094       var38.x2[1] = _src.x2[1];
4095     }
4096     /* 7: storew */
4097     ptr0[i] = var38;
4098   }
4099 
4100 }
4101 
4102 #else
4103 static void
_backup_video_orc_pack_Y42B(OrcExecutor * ORC_RESTRICT ex)4104 _backup_video_orc_pack_Y42B (OrcExecutor * ORC_RESTRICT ex)
4105 {
4106   int i;
4107   int n = ex->n;
4108   orc_union16 *ORC_RESTRICT ptr0;
4109   orc_int8 *ORC_RESTRICT ptr1;
4110   orc_int8 *ORC_RESTRICT ptr2;
4111   const orc_union64 *ORC_RESTRICT ptr4;
4112   orc_union64 var35;
4113   orc_int8 var36;
4114   orc_int8 var37;
4115   orc_union16 var38;
4116   orc_union32 var39;
4117   orc_union32 var40;
4118   orc_union16 var41;
4119 
4120   ptr0 = (orc_union16 *) ex->arrays[0];
4121   ptr1 = (orc_int8 *) ex->arrays[1];
4122   ptr2 = (orc_int8 *) ex->arrays[2];
4123   ptr4 = (orc_union64 *) ex->arrays[4];
4124 
4125 
4126   for (i = 0; i < n; i++) {
4127     /* 0: loadq */
4128     var35 = ptr4[i];
4129     /* 1: splitlw */
4130     {
4131       orc_union32 _src;
4132       _src.i = var35.x2[0];
4133       var39.x2[0] = _src.x2[1];
4134       var40.x2[0] = _src.x2[0];
4135     }
4136     {
4137       orc_union32 _src;
4138       _src.i = var35.x2[1];
4139       var39.x2[1] = _src.x2[1];
4140       var40.x2[1] = _src.x2[0];
4141     }
4142     /* 2: select0lw */
4143     {
4144       orc_union32 _src;
4145       _src.i = var39.i;
4146       var41.i = _src.x2[0];
4147     }
4148     /* 3: splitwb */
4149     {
4150       orc_union16 _src;
4151       _src.i = var41.i;
4152       var36 = _src.x2[1];
4153       var37 = _src.x2[0];
4154     }
4155     /* 4: storeb */
4156     ptr2[i] = var36;
4157     /* 5: storeb */
4158     ptr1[i] = var37;
4159     /* 6: select1wb */
4160     {
4161       orc_union16 _src;
4162       _src.i = var40.x2[0];
4163       var38.x2[0] = _src.x2[1];
4164     }
4165     {
4166       orc_union16 _src;
4167       _src.i = var40.x2[1];
4168       var38.x2[1] = _src.x2[1];
4169     }
4170     /* 7: storew */
4171     ptr0[i] = var38;
4172   }
4173 
4174 }
4175 
4176 void
video_orc_pack_Y42B(guint8 * ORC_RESTRICT d1,guint8 * ORC_RESTRICT d2,guint8 * ORC_RESTRICT d3,const guint8 * ORC_RESTRICT s1,int n)4177 video_orc_pack_Y42B (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
4178     guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n)
4179 {
4180   OrcExecutor _ex, *ex = &_ex;
4181   static volatile int p_inited = 0;
4182   static OrcCode *c = 0;
4183   void (*func) (OrcExecutor *);
4184 
4185   if (!p_inited) {
4186     orc_once_mutex_lock ();
4187     if (!p_inited) {
4188       OrcProgram *p;
4189 
4190 #if 1
4191       static const orc_uint8 bc[] = {
4192         1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
4193         107, 95, 89, 52, 50, 66, 11, 2, 2, 11, 1, 1, 11, 1, 1, 12,
4194         8, 8, 20, 4, 20, 4, 20, 2, 21, 1, 198, 33, 32, 4, 190, 34,
4195         33, 199, 2, 1, 34, 21, 1, 189, 0, 32, 2, 0,
4196       };
4197       p = orc_program_new_from_static_bytecode (bc);
4198       orc_program_set_backup_function (p, _backup_video_orc_pack_Y42B);
4199 #else
4200       p = orc_program_new ();
4201       orc_program_set_name (p, "video_orc_pack_Y42B");
4202       orc_program_set_backup_function (p, _backup_video_orc_pack_Y42B);
4203       orc_program_add_destination (p, 2, "d1");
4204       orc_program_add_destination (p, 1, "d2");
4205       orc_program_add_destination (p, 1, "d3");
4206       orc_program_add_source (p, 8, "s1");
4207       orc_program_add_temporary (p, 4, "t1");
4208       orc_program_add_temporary (p, 4, "t2");
4209       orc_program_add_temporary (p, 2, "t3");
4210 
4211       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
4212           ORC_VAR_D1);
4213       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T3, ORC_VAR_T2,
4214           ORC_VAR_D1, ORC_VAR_D1);
4215       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T3,
4216           ORC_VAR_D1);
4217       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
4218           ORC_VAR_D1, ORC_VAR_D1);
4219 #endif
4220 
4221       orc_program_compile (p);
4222       c = orc_program_take_code (p);
4223       orc_program_free (p);
4224     }
4225     p_inited = TRUE;
4226     orc_once_mutex_unlock ();
4227   }
4228   ex->arrays[ORC_VAR_A2] = c;
4229   ex->program = 0;
4230 
4231   ex->n = n;
4232   ex->arrays[ORC_VAR_D1] = d1;
4233   ex->arrays[ORC_VAR_D2] = d2;
4234   ex->arrays[ORC_VAR_D3] = d3;
4235   ex->arrays[ORC_VAR_S1] = (void *) s1;
4236 
4237   func = c->exec;
4238   func (ex);
4239 }
4240 #endif
4241 
4242 
4243 /* video_orc_unpack_Y444 */
4244 #ifdef DISABLE_ORC
4245 void
video_orc_unpack_Y444(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,const guint8 * ORC_RESTRICT s3,int n)4246 video_orc_unpack_Y444 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
4247     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n)
4248 {
4249   int i;
4250   orc_union32 *ORC_RESTRICT ptr0;
4251   const orc_int8 *ORC_RESTRICT ptr4;
4252   const orc_int8 *ORC_RESTRICT ptr5;
4253   const orc_int8 *ORC_RESTRICT ptr6;
4254   orc_int8 var34;
4255   orc_int8 var35;
4256 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
4257   volatile orc_int8 var36;
4258 #else
4259   orc_int8 var36;
4260 #endif
4261   orc_int8 var37;
4262   orc_union32 var38;
4263   orc_union16 var39;
4264   orc_union16 var40;
4265 
4266   ptr0 = (orc_union32 *) d1;
4267   ptr4 = (orc_int8 *) s1;
4268   ptr5 = (orc_int8 *) s2;
4269   ptr6 = (orc_int8 *) s3;
4270 
4271   /* 3: loadpb */
4272   var36 = 0x000000ff;           /* 255 or 1.25987e-321f */
4273 
4274   for (i = 0; i < n; i++) {
4275     /* 0: loadb */
4276     var34 = ptr5[i];
4277     /* 1: loadb */
4278     var35 = ptr6[i];
4279     /* 2: mergebw */
4280     {
4281       orc_union16 _dest;
4282       _dest.x2[0] = var34;
4283       _dest.x2[1] = var35;
4284       var39.i = _dest.i;
4285     }
4286     /* 4: loadb */
4287     var37 = ptr4[i];
4288     /* 5: mergebw */
4289     {
4290       orc_union16 _dest;
4291       _dest.x2[0] = var36;
4292       _dest.x2[1] = var37;
4293       var40.i = _dest.i;
4294     }
4295     /* 6: mergewl */
4296     {
4297       orc_union32 _dest;
4298       _dest.x2[0] = var40.i;
4299       _dest.x2[1] = var39.i;
4300       var38.i = _dest.i;
4301     }
4302     /* 7: storel */
4303     ptr0[i] = var38;
4304   }
4305 
4306 }
4307 
4308 #else
4309 static void
_backup_video_orc_unpack_Y444(OrcExecutor * ORC_RESTRICT ex)4310 _backup_video_orc_unpack_Y444 (OrcExecutor * ORC_RESTRICT ex)
4311 {
4312   int i;
4313   int n = ex->n;
4314   orc_union32 *ORC_RESTRICT ptr0;
4315   const orc_int8 *ORC_RESTRICT ptr4;
4316   const orc_int8 *ORC_RESTRICT ptr5;
4317   const orc_int8 *ORC_RESTRICT ptr6;
4318   orc_int8 var34;
4319   orc_int8 var35;
4320 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
4321   volatile orc_int8 var36;
4322 #else
4323   orc_int8 var36;
4324 #endif
4325   orc_int8 var37;
4326   orc_union32 var38;
4327   orc_union16 var39;
4328   orc_union16 var40;
4329 
4330   ptr0 = (orc_union32 *) ex->arrays[0];
4331   ptr4 = (orc_int8 *) ex->arrays[4];
4332   ptr5 = (orc_int8 *) ex->arrays[5];
4333   ptr6 = (orc_int8 *) ex->arrays[6];
4334 
4335   /* 3: loadpb */
4336   var36 = 0x000000ff;           /* 255 or 1.25987e-321f */
4337 
4338   for (i = 0; i < n; i++) {
4339     /* 0: loadb */
4340     var34 = ptr5[i];
4341     /* 1: loadb */
4342     var35 = ptr6[i];
4343     /* 2: mergebw */
4344     {
4345       orc_union16 _dest;
4346       _dest.x2[0] = var34;
4347       _dest.x2[1] = var35;
4348       var39.i = _dest.i;
4349     }
4350     /* 4: loadb */
4351     var37 = ptr4[i];
4352     /* 5: mergebw */
4353     {
4354       orc_union16 _dest;
4355       _dest.x2[0] = var36;
4356       _dest.x2[1] = var37;
4357       var40.i = _dest.i;
4358     }
4359     /* 6: mergewl */
4360     {
4361       orc_union32 _dest;
4362       _dest.x2[0] = var40.i;
4363       _dest.x2[1] = var39.i;
4364       var38.i = _dest.i;
4365     }
4366     /* 7: storel */
4367     ptr0[i] = var38;
4368   }
4369 
4370 }
4371 
4372 void
video_orc_unpack_Y444(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,const guint8 * ORC_RESTRICT s3,int n)4373 video_orc_unpack_Y444 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
4374     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n)
4375 {
4376   OrcExecutor _ex, *ex = &_ex;
4377   static volatile int p_inited = 0;
4378   static OrcCode *c = 0;
4379   void (*func) (OrcExecutor *);
4380 
4381   if (!p_inited) {
4382     orc_once_mutex_lock ();
4383     if (!p_inited) {
4384       OrcProgram *p;
4385 
4386 #if 1
4387       static const orc_uint8 bc[] = {
4388         1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
4389         97, 99, 107, 95, 89, 52, 52, 52, 11, 4, 4, 12, 1, 1, 12, 1,
4390         1, 12, 1, 1, 14, 1, 255, 0, 0, 0, 20, 2, 20, 2, 196, 32,
4391         5, 6, 196, 33, 16, 4, 195, 0, 33, 32, 2, 0,
4392       };
4393       p = orc_program_new_from_static_bytecode (bc);
4394       orc_program_set_backup_function (p, _backup_video_orc_unpack_Y444);
4395 #else
4396       p = orc_program_new ();
4397       orc_program_set_name (p, "video_orc_unpack_Y444");
4398       orc_program_set_backup_function (p, _backup_video_orc_unpack_Y444);
4399       orc_program_add_destination (p, 4, "d1");
4400       orc_program_add_source (p, 1, "s1");
4401       orc_program_add_source (p, 1, "s2");
4402       orc_program_add_source (p, 1, "s3");
4403       orc_program_add_constant (p, 1, 0x000000ff, "c1");
4404       orc_program_add_temporary (p, 2, "t1");
4405       orc_program_add_temporary (p, 2, "t2");
4406 
4407       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3,
4408           ORC_VAR_D1);
4409       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1,
4410           ORC_VAR_D1);
4411       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
4412           ORC_VAR_D1);
4413 #endif
4414 
4415       orc_program_compile (p);
4416       c = orc_program_take_code (p);
4417       orc_program_free (p);
4418     }
4419     p_inited = TRUE;
4420     orc_once_mutex_unlock ();
4421   }
4422   ex->arrays[ORC_VAR_A2] = c;
4423   ex->program = 0;
4424 
4425   ex->n = n;
4426   ex->arrays[ORC_VAR_D1] = d1;
4427   ex->arrays[ORC_VAR_S1] = (void *) s1;
4428   ex->arrays[ORC_VAR_S2] = (void *) s2;
4429   ex->arrays[ORC_VAR_S3] = (void *) s3;
4430 
4431   func = c->exec;
4432   func (ex);
4433 }
4434 #endif
4435 
4436 
4437 /* video_orc_pack_Y444 */
4438 #ifdef DISABLE_ORC
4439 void
video_orc_pack_Y444(guint8 * ORC_RESTRICT d1,guint8 * ORC_RESTRICT d2,guint8 * ORC_RESTRICT d3,const guint8 * ORC_RESTRICT s1,int n)4440 video_orc_pack_Y444 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
4441     guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n)
4442 {
4443   int i;
4444   orc_int8 *ORC_RESTRICT ptr0;
4445   orc_int8 *ORC_RESTRICT ptr1;
4446   orc_int8 *ORC_RESTRICT ptr2;
4447   const orc_union32 *ORC_RESTRICT ptr4;
4448   orc_union32 var34;
4449   orc_int8 var35;
4450   orc_int8 var36;
4451   orc_int8 var37;
4452   orc_union16 var38;
4453   orc_union16 var39;
4454 
4455   ptr0 = (orc_int8 *) d1;
4456   ptr1 = (orc_int8 *) d2;
4457   ptr2 = (orc_int8 *) d3;
4458   ptr4 = (orc_union32 *) s1;
4459 
4460 
4461   for (i = 0; i < n; i++) {
4462     /* 0: loadl */
4463     var34 = ptr4[i];
4464     /* 1: splitlw */
4465     {
4466       orc_union32 _src;
4467       _src.i = var34.i;
4468       var38.i = _src.x2[1];
4469       var39.i = _src.x2[0];
4470     }
4471     /* 2: splitwb */
4472     {
4473       orc_union16 _src;
4474       _src.i = var38.i;
4475       var35 = _src.x2[1];
4476       var36 = _src.x2[0];
4477     }
4478     /* 3: storeb */
4479     ptr2[i] = var35;
4480     /* 4: storeb */
4481     ptr1[i] = var36;
4482     /* 5: select1wb */
4483     {
4484       orc_union16 _src;
4485       _src.i = var39.i;
4486       var37 = _src.x2[1];
4487     }
4488     /* 6: storeb */
4489     ptr0[i] = var37;
4490   }
4491 
4492 }
4493 
4494 #else
4495 static void
_backup_video_orc_pack_Y444(OrcExecutor * ORC_RESTRICT ex)4496 _backup_video_orc_pack_Y444 (OrcExecutor * ORC_RESTRICT ex)
4497 {
4498   int i;
4499   int n = ex->n;
4500   orc_int8 *ORC_RESTRICT ptr0;
4501   orc_int8 *ORC_RESTRICT ptr1;
4502   orc_int8 *ORC_RESTRICT ptr2;
4503   const orc_union32 *ORC_RESTRICT ptr4;
4504   orc_union32 var34;
4505   orc_int8 var35;
4506   orc_int8 var36;
4507   orc_int8 var37;
4508   orc_union16 var38;
4509   orc_union16 var39;
4510 
4511   ptr0 = (orc_int8 *) ex->arrays[0];
4512   ptr1 = (orc_int8 *) ex->arrays[1];
4513   ptr2 = (orc_int8 *) ex->arrays[2];
4514   ptr4 = (orc_union32 *) ex->arrays[4];
4515 
4516 
4517   for (i = 0; i < n; i++) {
4518     /* 0: loadl */
4519     var34 = ptr4[i];
4520     /* 1: splitlw */
4521     {
4522       orc_union32 _src;
4523       _src.i = var34.i;
4524       var38.i = _src.x2[1];
4525       var39.i = _src.x2[0];
4526     }
4527     /* 2: splitwb */
4528     {
4529       orc_union16 _src;
4530       _src.i = var38.i;
4531       var35 = _src.x2[1];
4532       var36 = _src.x2[0];
4533     }
4534     /* 3: storeb */
4535     ptr2[i] = var35;
4536     /* 4: storeb */
4537     ptr1[i] = var36;
4538     /* 5: select1wb */
4539     {
4540       orc_union16 _src;
4541       _src.i = var39.i;
4542       var37 = _src.x2[1];
4543     }
4544     /* 6: storeb */
4545     ptr0[i] = var37;
4546   }
4547 
4548 }
4549 
4550 void
video_orc_pack_Y444(guint8 * ORC_RESTRICT d1,guint8 * ORC_RESTRICT d2,guint8 * ORC_RESTRICT d3,const guint8 * ORC_RESTRICT s1,int n)4551 video_orc_pack_Y444 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
4552     guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n)
4553 {
4554   OrcExecutor _ex, *ex = &_ex;
4555   static volatile int p_inited = 0;
4556   static OrcCode *c = 0;
4557   void (*func) (OrcExecutor *);
4558 
4559   if (!p_inited) {
4560     orc_once_mutex_lock ();
4561     if (!p_inited) {
4562       OrcProgram *p;
4563 
4564 #if 1
4565       static const orc_uint8 bc[] = {
4566         1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
4567         107, 95, 89, 52, 52, 52, 11, 1, 1, 11, 1, 1, 11, 1, 1, 12,
4568         4, 4, 20, 2, 20, 2, 198, 33, 32, 4, 199, 2, 1, 33, 189, 0,
4569         32, 2, 0,
4570       };
4571       p = orc_program_new_from_static_bytecode (bc);
4572       orc_program_set_backup_function (p, _backup_video_orc_pack_Y444);
4573 #else
4574       p = orc_program_new ();
4575       orc_program_set_name (p, "video_orc_pack_Y444");
4576       orc_program_set_backup_function (p, _backup_video_orc_pack_Y444);
4577       orc_program_add_destination (p, 1, "d1");
4578       orc_program_add_destination (p, 1, "d2");
4579       orc_program_add_destination (p, 1, "d3");
4580       orc_program_add_source (p, 4, "s1");
4581       orc_program_add_temporary (p, 2, "t1");
4582       orc_program_add_temporary (p, 2, "t2");
4583 
4584       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
4585           ORC_VAR_D1);
4586       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T2,
4587           ORC_VAR_D1);
4588       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1,
4589           ORC_VAR_D1, ORC_VAR_D1);
4590 #endif
4591 
4592       orc_program_compile (p);
4593       c = orc_program_take_code (p);
4594       orc_program_free (p);
4595     }
4596     p_inited = TRUE;
4597     orc_once_mutex_unlock ();
4598   }
4599   ex->arrays[ORC_VAR_A2] = c;
4600   ex->program = 0;
4601 
4602   ex->n = n;
4603   ex->arrays[ORC_VAR_D1] = d1;
4604   ex->arrays[ORC_VAR_D2] = d2;
4605   ex->arrays[ORC_VAR_D3] = d3;
4606   ex->arrays[ORC_VAR_S1] = (void *) s1;
4607 
4608   func = c->exec;
4609   func (ex);
4610 }
4611 #endif
4612 
4613 
4614 /* video_orc_unpack_GRAY8 */
4615 #ifdef DISABLE_ORC
4616 void
video_orc_unpack_GRAY8(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)4617 video_orc_unpack_GRAY8 (guint8 * ORC_RESTRICT d1,
4618     const guint8 * ORC_RESTRICT s1, int n)
4619 {
4620   int i;
4621   orc_union32 *ORC_RESTRICT ptr0;
4622   const orc_int8 *ORC_RESTRICT ptr4;
4623 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
4624   volatile orc_int8 var33;
4625 #else
4626   orc_int8 var33;
4627 #endif
4628   orc_int8 var34;
4629 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
4630   volatile orc_union16 var35;
4631 #else
4632   orc_union16 var35;
4633 #endif
4634   orc_union32 var36;
4635   orc_union16 var37;
4636 
4637   ptr0 = (orc_union32 *) d1;
4638   ptr4 = (orc_int8 *) s1;
4639 
4640   /* 0: loadpb */
4641   var33 = 0x000000ff;           /* 255 or 1.25987e-321f */
4642   /* 3: loadpw */
4643   var35.i = 0x00008080;         /* 32896 or 1.62528e-319f */
4644 
4645   for (i = 0; i < n; i++) {
4646     /* 1: loadb */
4647     var34 = ptr4[i];
4648     /* 2: mergebw */
4649     {
4650       orc_union16 _dest;
4651       _dest.x2[0] = var33;
4652       _dest.x2[1] = var34;
4653       var37.i = _dest.i;
4654     }
4655     /* 4: mergewl */
4656     {
4657       orc_union32 _dest;
4658       _dest.x2[0] = var37.i;
4659       _dest.x2[1] = var35.i;
4660       var36.i = _dest.i;
4661     }
4662     /* 5: storel */
4663     ptr0[i] = var36;
4664   }
4665 
4666 }
4667 
4668 #else
4669 static void
_backup_video_orc_unpack_GRAY8(OrcExecutor * ORC_RESTRICT ex)4670 _backup_video_orc_unpack_GRAY8 (OrcExecutor * ORC_RESTRICT ex)
4671 {
4672   int i;
4673   int n = ex->n;
4674   orc_union32 *ORC_RESTRICT ptr0;
4675   const orc_int8 *ORC_RESTRICT ptr4;
4676 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
4677   volatile orc_int8 var33;
4678 #else
4679   orc_int8 var33;
4680 #endif
4681   orc_int8 var34;
4682 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
4683   volatile orc_union16 var35;
4684 #else
4685   orc_union16 var35;
4686 #endif
4687   orc_union32 var36;
4688   orc_union16 var37;
4689 
4690   ptr0 = (orc_union32 *) ex->arrays[0];
4691   ptr4 = (orc_int8 *) ex->arrays[4];
4692 
4693   /* 0: loadpb */
4694   var33 = 0x000000ff;           /* 255 or 1.25987e-321f */
4695   /* 3: loadpw */
4696   var35.i = 0x00008080;         /* 32896 or 1.62528e-319f */
4697 
4698   for (i = 0; i < n; i++) {
4699     /* 1: loadb */
4700     var34 = ptr4[i];
4701     /* 2: mergebw */
4702     {
4703       orc_union16 _dest;
4704       _dest.x2[0] = var33;
4705       _dest.x2[1] = var34;
4706       var37.i = _dest.i;
4707     }
4708     /* 4: mergewl */
4709     {
4710       orc_union32 _dest;
4711       _dest.x2[0] = var37.i;
4712       _dest.x2[1] = var35.i;
4713       var36.i = _dest.i;
4714     }
4715     /* 5: storel */
4716     ptr0[i] = var36;
4717   }
4718 
4719 }
4720 
4721 void
video_orc_unpack_GRAY8(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)4722 video_orc_unpack_GRAY8 (guint8 * ORC_RESTRICT d1,
4723     const guint8 * ORC_RESTRICT s1, int n)
4724 {
4725   OrcExecutor _ex, *ex = &_ex;
4726   static volatile int p_inited = 0;
4727   static OrcCode *c = 0;
4728   void (*func) (OrcExecutor *);
4729 
4730   if (!p_inited) {
4731     orc_once_mutex_lock ();
4732     if (!p_inited) {
4733       OrcProgram *p;
4734 
4735 #if 1
4736       static const orc_uint8 bc[] = {
4737         1, 9, 22, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
4738         97, 99, 107, 95, 71, 82, 65, 89, 56, 11, 4, 4, 12, 1, 1, 14,
4739         1, 255, 0, 0, 0, 14, 2, 128, 128, 0, 0, 20, 2, 196, 32, 16,
4740         4, 195, 0, 32, 17, 2, 0,
4741       };
4742       p = orc_program_new_from_static_bytecode (bc);
4743       orc_program_set_backup_function (p, _backup_video_orc_unpack_GRAY8);
4744 #else
4745       p = orc_program_new ();
4746       orc_program_set_name (p, "video_orc_unpack_GRAY8");
4747       orc_program_set_backup_function (p, _backup_video_orc_unpack_GRAY8);
4748       orc_program_add_destination (p, 4, "d1");
4749       orc_program_add_source (p, 1, "s1");
4750       orc_program_add_constant (p, 1, 0x000000ff, "c1");
4751       orc_program_add_constant (p, 2, 0x00008080, "c2");
4752       orc_program_add_temporary (p, 2, "t1");
4753 
4754       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_S1,
4755           ORC_VAR_D1);
4756       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C2,
4757           ORC_VAR_D1);
4758 #endif
4759 
4760       orc_program_compile (p);
4761       c = orc_program_take_code (p);
4762       orc_program_free (p);
4763     }
4764     p_inited = TRUE;
4765     orc_once_mutex_unlock ();
4766   }
4767   ex->arrays[ORC_VAR_A2] = c;
4768   ex->program = 0;
4769 
4770   ex->n = n;
4771   ex->arrays[ORC_VAR_D1] = d1;
4772   ex->arrays[ORC_VAR_S1] = (void *) s1;
4773 
4774   func = c->exec;
4775   func (ex);
4776 }
4777 #endif
4778 
4779 
4780 /* video_orc_pack_GRAY8 */
4781 #ifdef DISABLE_ORC
4782 void
video_orc_pack_GRAY8(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)4783 video_orc_pack_GRAY8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
4784     int n)
4785 {
4786   int i;
4787   orc_int8 *ORC_RESTRICT ptr0;
4788   const orc_union32 *ORC_RESTRICT ptr4;
4789   orc_union32 var33;
4790   orc_int8 var34;
4791   orc_union16 var35;
4792 
4793   ptr0 = (orc_int8 *) d1;
4794   ptr4 = (orc_union32 *) s1;
4795 
4796 
4797   for (i = 0; i < n; i++) {
4798     /* 0: loadl */
4799     var33 = ptr4[i];
4800     /* 1: select0lw */
4801     {
4802       orc_union32 _src;
4803       _src.i = var33.i;
4804       var35.i = _src.x2[0];
4805     }
4806     /* 2: select1wb */
4807     {
4808       orc_union16 _src;
4809       _src.i = var35.i;
4810       var34 = _src.x2[1];
4811     }
4812     /* 3: storeb */
4813     ptr0[i] = var34;
4814   }
4815 
4816 }
4817 
4818 #else
4819 static void
_backup_video_orc_pack_GRAY8(OrcExecutor * ORC_RESTRICT ex)4820 _backup_video_orc_pack_GRAY8 (OrcExecutor * ORC_RESTRICT ex)
4821 {
4822   int i;
4823   int n = ex->n;
4824   orc_int8 *ORC_RESTRICT ptr0;
4825   const orc_union32 *ORC_RESTRICT ptr4;
4826   orc_union32 var33;
4827   orc_int8 var34;
4828   orc_union16 var35;
4829 
4830   ptr0 = (orc_int8 *) ex->arrays[0];
4831   ptr4 = (orc_union32 *) ex->arrays[4];
4832 
4833 
4834   for (i = 0; i < n; i++) {
4835     /* 0: loadl */
4836     var33 = ptr4[i];
4837     /* 1: select0lw */
4838     {
4839       orc_union32 _src;
4840       _src.i = var33.i;
4841       var35.i = _src.x2[0];
4842     }
4843     /* 2: select1wb */
4844     {
4845       orc_union16 _src;
4846       _src.i = var35.i;
4847       var34 = _src.x2[1];
4848     }
4849     /* 3: storeb */
4850     ptr0[i] = var34;
4851   }
4852 
4853 }
4854 
4855 void
video_orc_pack_GRAY8(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)4856 video_orc_pack_GRAY8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
4857     int n)
4858 {
4859   OrcExecutor _ex, *ex = &_ex;
4860   static volatile int p_inited = 0;
4861   static OrcCode *c = 0;
4862   void (*func) (OrcExecutor *);
4863 
4864   if (!p_inited) {
4865     orc_once_mutex_lock ();
4866     if (!p_inited) {
4867       OrcProgram *p;
4868 
4869 #if 1
4870       static const orc_uint8 bc[] = {
4871         1, 9, 20, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
4872         107, 95, 71, 82, 65, 89, 56, 11, 1, 1, 12, 4, 4, 20, 2, 190,
4873         32, 4, 189, 0, 32, 2, 0,
4874       };
4875       p = orc_program_new_from_static_bytecode (bc);
4876       orc_program_set_backup_function (p, _backup_video_orc_pack_GRAY8);
4877 #else
4878       p = orc_program_new ();
4879       orc_program_set_name (p, "video_orc_pack_GRAY8");
4880       orc_program_set_backup_function (p, _backup_video_orc_pack_GRAY8);
4881       orc_program_add_destination (p, 1, "d1");
4882       orc_program_add_source (p, 4, "s1");
4883       orc_program_add_temporary (p, 2, "t1");
4884 
4885       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_S1,
4886           ORC_VAR_D1, ORC_VAR_D1);
4887       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1,
4888           ORC_VAR_D1, ORC_VAR_D1);
4889 #endif
4890 
4891       orc_program_compile (p);
4892       c = orc_program_take_code (p);
4893       orc_program_free (p);
4894     }
4895     p_inited = TRUE;
4896     orc_once_mutex_unlock ();
4897   }
4898   ex->arrays[ORC_VAR_A2] = c;
4899   ex->program = 0;
4900 
4901   ex->n = n;
4902   ex->arrays[ORC_VAR_D1] = d1;
4903   ex->arrays[ORC_VAR_S1] = (void *) s1;
4904 
4905   func = c->exec;
4906   func (ex);
4907 }
4908 #endif
4909 
4910 
4911 /* video_orc_unpack_BGRA */
4912 #ifdef DISABLE_ORC
4913 void
video_orc_unpack_BGRA(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)4914 video_orc_unpack_BGRA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
4915     int n)
4916 {
4917   int i;
4918   orc_union32 *ORC_RESTRICT ptr0;
4919   const orc_union32 *ORC_RESTRICT ptr4;
4920   orc_union32 var32;
4921   orc_union32 var33;
4922 
4923   ptr0 = (orc_union32 *) d1;
4924   ptr4 = (orc_union32 *) s1;
4925 
4926 
4927   for (i = 0; i < n; i++) {
4928     /* 0: loadl */
4929     var32 = ptr4[i];
4930     /* 1: swapl */
4931     var33.i = ORC_SWAP_L (var32.i);
4932     /* 2: storel */
4933     ptr0[i] = var33;
4934   }
4935 
4936 }
4937 
4938 #else
4939 static void
_backup_video_orc_unpack_BGRA(OrcExecutor * ORC_RESTRICT ex)4940 _backup_video_orc_unpack_BGRA (OrcExecutor * ORC_RESTRICT ex)
4941 {
4942   int i;
4943   int n = ex->n;
4944   orc_union32 *ORC_RESTRICT ptr0;
4945   const orc_union32 *ORC_RESTRICT ptr4;
4946   orc_union32 var32;
4947   orc_union32 var33;
4948 
4949   ptr0 = (orc_union32 *) ex->arrays[0];
4950   ptr4 = (orc_union32 *) ex->arrays[4];
4951 
4952 
4953   for (i = 0; i < n; i++) {
4954     /* 0: loadl */
4955     var32 = ptr4[i];
4956     /* 1: swapl */
4957     var33.i = ORC_SWAP_L (var32.i);
4958     /* 2: storel */
4959     ptr0[i] = var33;
4960   }
4961 
4962 }
4963 
4964 void
video_orc_unpack_BGRA(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)4965 video_orc_unpack_BGRA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
4966     int n)
4967 {
4968   OrcExecutor _ex, *ex = &_ex;
4969   static volatile int p_inited = 0;
4970   static OrcCode *c = 0;
4971   void (*func) (OrcExecutor *);
4972 
4973   if (!p_inited) {
4974     orc_once_mutex_lock ();
4975     if (!p_inited) {
4976       OrcProgram *p;
4977 
4978 #if 1
4979       static const orc_uint8 bc[] = {
4980         1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
4981         97, 99, 107, 95, 66, 71, 82, 65, 11, 4, 4, 12, 4, 4, 184, 0,
4982         4, 2, 0,
4983       };
4984       p = orc_program_new_from_static_bytecode (bc);
4985       orc_program_set_backup_function (p, _backup_video_orc_unpack_BGRA);
4986 #else
4987       p = orc_program_new ();
4988       orc_program_set_name (p, "video_orc_unpack_BGRA");
4989       orc_program_set_backup_function (p, _backup_video_orc_unpack_BGRA);
4990       orc_program_add_destination (p, 4, "d1");
4991       orc_program_add_source (p, 4, "s1");
4992 
4993       orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1,
4994           ORC_VAR_D1);
4995 #endif
4996 
4997       orc_program_compile (p);
4998       c = orc_program_take_code (p);
4999       orc_program_free (p);
5000     }
5001     p_inited = TRUE;
5002     orc_once_mutex_unlock ();
5003   }
5004   ex->arrays[ORC_VAR_A2] = c;
5005   ex->program = 0;
5006 
5007   ex->n = n;
5008   ex->arrays[ORC_VAR_D1] = d1;
5009   ex->arrays[ORC_VAR_S1] = (void *) s1;
5010 
5011   func = c->exec;
5012   func (ex);
5013 }
5014 #endif
5015 
5016 
5017 /* video_orc_pack_BGRA */
5018 #ifdef DISABLE_ORC
5019 void
video_orc_pack_BGRA(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)5020 video_orc_pack_BGRA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
5021     int n)
5022 {
5023   int i;
5024   orc_union32 *ORC_RESTRICT ptr0;
5025   const orc_union32 *ORC_RESTRICT ptr4;
5026   orc_union32 var32;
5027   orc_union32 var33;
5028 
5029   ptr0 = (orc_union32 *) d1;
5030   ptr4 = (orc_union32 *) s1;
5031 
5032 
5033   for (i = 0; i < n; i++) {
5034     /* 0: loadl */
5035     var32 = ptr4[i];
5036     /* 1: swapl */
5037     var33.i = ORC_SWAP_L (var32.i);
5038     /* 2: storel */
5039     ptr0[i] = var33;
5040   }
5041 
5042 }
5043 
5044 #else
5045 static void
_backup_video_orc_pack_BGRA(OrcExecutor * ORC_RESTRICT ex)5046 _backup_video_orc_pack_BGRA (OrcExecutor * ORC_RESTRICT ex)
5047 {
5048   int i;
5049   int n = ex->n;
5050   orc_union32 *ORC_RESTRICT ptr0;
5051   const orc_union32 *ORC_RESTRICT ptr4;
5052   orc_union32 var32;
5053   orc_union32 var33;
5054 
5055   ptr0 = (orc_union32 *) ex->arrays[0];
5056   ptr4 = (orc_union32 *) ex->arrays[4];
5057 
5058 
5059   for (i = 0; i < n; i++) {
5060     /* 0: loadl */
5061     var32 = ptr4[i];
5062     /* 1: swapl */
5063     var33.i = ORC_SWAP_L (var32.i);
5064     /* 2: storel */
5065     ptr0[i] = var33;
5066   }
5067 
5068 }
5069 
5070 void
video_orc_pack_BGRA(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)5071 video_orc_pack_BGRA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
5072     int n)
5073 {
5074   OrcExecutor _ex, *ex = &_ex;
5075   static volatile int p_inited = 0;
5076   static OrcCode *c = 0;
5077   void (*func) (OrcExecutor *);
5078 
5079   if (!p_inited) {
5080     orc_once_mutex_lock ();
5081     if (!p_inited) {
5082       OrcProgram *p;
5083 
5084 #if 1
5085       static const orc_uint8 bc[] = {
5086         1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
5087         107, 95, 66, 71, 82, 65, 11, 4, 4, 12, 4, 4, 184, 0, 4, 2,
5088         0,
5089       };
5090       p = orc_program_new_from_static_bytecode (bc);
5091       orc_program_set_backup_function (p, _backup_video_orc_pack_BGRA);
5092 #else
5093       p = orc_program_new ();
5094       orc_program_set_name (p, "video_orc_pack_BGRA");
5095       orc_program_set_backup_function (p, _backup_video_orc_pack_BGRA);
5096       orc_program_add_destination (p, 4, "d1");
5097       orc_program_add_source (p, 4, "s1");
5098 
5099       orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1,
5100           ORC_VAR_D1);
5101 #endif
5102 
5103       orc_program_compile (p);
5104       c = orc_program_take_code (p);
5105       orc_program_free (p);
5106     }
5107     p_inited = TRUE;
5108     orc_once_mutex_unlock ();
5109   }
5110   ex->arrays[ORC_VAR_A2] = c;
5111   ex->program = 0;
5112 
5113   ex->n = n;
5114   ex->arrays[ORC_VAR_D1] = d1;
5115   ex->arrays[ORC_VAR_S1] = (void *) s1;
5116 
5117   func = c->exec;
5118   func (ex);
5119 }
5120 #endif
5121 
5122 
5123 /* video_orc_pack_RGBA_le */
5124 #ifdef DISABLE_ORC
5125 void
video_orc_pack_RGBA_le(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)5126 video_orc_pack_RGBA_le (guint8 * ORC_RESTRICT d1,
5127     const guint8 * ORC_RESTRICT s1, int n)
5128 {
5129   int i;
5130   orc_union32 *ORC_RESTRICT ptr0;
5131   const orc_union32 *ORC_RESTRICT ptr4;
5132   orc_union32 var34;
5133   orc_union32 var35;
5134   orc_union32 var36;
5135   orc_union32 var37;
5136 
5137   ptr0 = (orc_union32 *) d1;
5138   ptr4 = (orc_union32 *) s1;
5139 
5140 
5141   for (i = 0; i < n; i++) {
5142     /* 0: loadl */
5143     var35 = ptr4[i];
5144     /* 1: shrul */
5145     var36.i = ((orc_uint32) var35.i) >> 8;
5146     /* 2: shll */
5147     var37.i = ((orc_uint32) var35.i) << 24;
5148     /* 3: orl */
5149     var34.i = var37.i | var36.i;
5150     /* 4: storel */
5151     ptr0[i] = var34;
5152   }
5153 
5154 }
5155 
5156 #else
5157 static void
_backup_video_orc_pack_RGBA_le(OrcExecutor * ORC_RESTRICT ex)5158 _backup_video_orc_pack_RGBA_le (OrcExecutor * ORC_RESTRICT ex)
5159 {
5160   int i;
5161   int n = ex->n;
5162   orc_union32 *ORC_RESTRICT ptr0;
5163   const orc_union32 *ORC_RESTRICT ptr4;
5164   orc_union32 var34;
5165   orc_union32 var35;
5166   orc_union32 var36;
5167   orc_union32 var37;
5168 
5169   ptr0 = (orc_union32 *) ex->arrays[0];
5170   ptr4 = (orc_union32 *) ex->arrays[4];
5171 
5172 
5173   for (i = 0; i < n; i++) {
5174     /* 0: loadl */
5175     var35 = ptr4[i];
5176     /* 1: shrul */
5177     var36.i = ((orc_uint32) var35.i) >> 8;
5178     /* 2: shll */
5179     var37.i = ((orc_uint32) var35.i) << 24;
5180     /* 3: orl */
5181     var34.i = var37.i | var36.i;
5182     /* 4: storel */
5183     ptr0[i] = var34;
5184   }
5185 
5186 }
5187 
5188 void
video_orc_pack_RGBA_le(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)5189 video_orc_pack_RGBA_le (guint8 * ORC_RESTRICT d1,
5190     const guint8 * ORC_RESTRICT s1, int n)
5191 {
5192   OrcExecutor _ex, *ex = &_ex;
5193   static volatile int p_inited = 0;
5194   static OrcCode *c = 0;
5195   void (*func) (OrcExecutor *);
5196 
5197   if (!p_inited) {
5198     orc_once_mutex_lock ();
5199     if (!p_inited) {
5200       OrcProgram *p;
5201 
5202 #if 1
5203       static const orc_uint8 bc[] = {
5204         1, 9, 22, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
5205         107, 95, 82, 71, 66, 65, 95, 108, 101, 11, 4, 4, 12, 4, 4, 14,
5206         4, 8, 0, 0, 0, 14, 4, 24, 0, 0, 0, 20, 4, 20, 4, 113,
5207         33, 4, 126, 32, 33, 16, 124, 33, 33, 17, 123, 0, 33, 32, 2, 0,
5208 
5209       };
5210       p = orc_program_new_from_static_bytecode (bc);
5211       orc_program_set_backup_function (p, _backup_video_orc_pack_RGBA_le);
5212 #else
5213       p = orc_program_new ();
5214       orc_program_set_name (p, "video_orc_pack_RGBA_le");
5215       orc_program_set_backup_function (p, _backup_video_orc_pack_RGBA_le);
5216       orc_program_add_destination (p, 4, "d1");
5217       orc_program_add_source (p, 4, "s1");
5218       orc_program_add_constant (p, 4, 0x00000008, "c1");
5219       orc_program_add_constant (p, 4, 0x00000018, "c2");
5220       orc_program_add_temporary (p, 4, "t1");
5221       orc_program_add_temporary (p, 4, "t2");
5222 
5223       orc_program_append_2 (p, "loadl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1,
5224           ORC_VAR_D1);
5225       orc_program_append_2 (p, "shrul", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_C1,
5226           ORC_VAR_D1);
5227       orc_program_append_2 (p, "shll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2,
5228           ORC_VAR_D1);
5229       orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
5230           ORC_VAR_D1);
5231 #endif
5232 
5233       orc_program_compile (p);
5234       c = orc_program_take_code (p);
5235       orc_program_free (p);
5236     }
5237     p_inited = TRUE;
5238     orc_once_mutex_unlock ();
5239   }
5240   ex->arrays[ORC_VAR_A2] = c;
5241   ex->program = 0;
5242 
5243   ex->n = n;
5244   ex->arrays[ORC_VAR_D1] = d1;
5245   ex->arrays[ORC_VAR_S1] = (void *) s1;
5246 
5247   func = c->exec;
5248   func (ex);
5249 }
5250 #endif
5251 
5252 
5253 /* video_orc_unpack_RGBA_le */
5254 #ifdef DISABLE_ORC
5255 void
video_orc_unpack_RGBA_le(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)5256 video_orc_unpack_RGBA_le (guint8 * ORC_RESTRICT d1,
5257     const guint8 * ORC_RESTRICT s1, int n)
5258 {
5259   int i;
5260   orc_union32 *ORC_RESTRICT ptr0;
5261   const orc_union32 *ORC_RESTRICT ptr4;
5262   orc_union32 var34;
5263   orc_union32 var35;
5264   orc_union32 var36;
5265   orc_union32 var37;
5266 
5267   ptr0 = (orc_union32 *) d1;
5268   ptr4 = (orc_union32 *) s1;
5269 
5270 
5271   for (i = 0; i < n; i++) {
5272     /* 0: loadl */
5273     var35 = ptr4[i];
5274     /* 1: shll */
5275     var36.i = ((orc_uint32) var35.i) << 8;
5276     /* 2: shrul */
5277     var37.i = ((orc_uint32) var35.i) >> 24;
5278     /* 3: orl */
5279     var34.i = var37.i | var36.i;
5280     /* 4: storel */
5281     ptr0[i] = var34;
5282   }
5283 
5284 }
5285 
5286 #else
5287 static void
_backup_video_orc_unpack_RGBA_le(OrcExecutor * ORC_RESTRICT ex)5288 _backup_video_orc_unpack_RGBA_le (OrcExecutor * ORC_RESTRICT ex)
5289 {
5290   int i;
5291   int n = ex->n;
5292   orc_union32 *ORC_RESTRICT ptr0;
5293   const orc_union32 *ORC_RESTRICT ptr4;
5294   orc_union32 var34;
5295   orc_union32 var35;
5296   orc_union32 var36;
5297   orc_union32 var37;
5298 
5299   ptr0 = (orc_union32 *) ex->arrays[0];
5300   ptr4 = (orc_union32 *) ex->arrays[4];
5301 
5302 
5303   for (i = 0; i < n; i++) {
5304     /* 0: loadl */
5305     var35 = ptr4[i];
5306     /* 1: shll */
5307     var36.i = ((orc_uint32) var35.i) << 8;
5308     /* 2: shrul */
5309     var37.i = ((orc_uint32) var35.i) >> 24;
5310     /* 3: orl */
5311     var34.i = var37.i | var36.i;
5312     /* 4: storel */
5313     ptr0[i] = var34;
5314   }
5315 
5316 }
5317 
5318 void
video_orc_unpack_RGBA_le(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)5319 video_orc_unpack_RGBA_le (guint8 * ORC_RESTRICT d1,
5320     const guint8 * ORC_RESTRICT s1, int n)
5321 {
5322   OrcExecutor _ex, *ex = &_ex;
5323   static volatile int p_inited = 0;
5324   static OrcCode *c = 0;
5325   void (*func) (OrcExecutor *);
5326 
5327   if (!p_inited) {
5328     orc_once_mutex_lock ();
5329     if (!p_inited) {
5330       OrcProgram *p;
5331 
5332 #if 1
5333       static const orc_uint8 bc[] = {
5334         1, 9, 24, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
5335         97, 99, 107, 95, 82, 71, 66, 65, 95, 108, 101, 11, 4, 4, 12, 4,
5336         4, 14, 4, 8, 0, 0, 0, 14, 4, 24, 0, 0, 0, 20, 4, 20,
5337         4, 113, 33, 4, 124, 32, 33, 16, 126, 33, 33, 17, 123, 0, 33, 32,
5338         2, 0,
5339       };
5340       p = orc_program_new_from_static_bytecode (bc);
5341       orc_program_set_backup_function (p, _backup_video_orc_unpack_RGBA_le);
5342 #else
5343       p = orc_program_new ();
5344       orc_program_set_name (p, "video_orc_unpack_RGBA_le");
5345       orc_program_set_backup_function (p, _backup_video_orc_unpack_RGBA_le);
5346       orc_program_add_destination (p, 4, "d1");
5347       orc_program_add_source (p, 4, "s1");
5348       orc_program_add_constant (p, 4, 0x00000008, "c1");
5349       orc_program_add_constant (p, 4, 0x00000018, "c2");
5350       orc_program_add_temporary (p, 4, "t1");
5351       orc_program_add_temporary (p, 4, "t2");
5352 
5353       orc_program_append_2 (p, "loadl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1,
5354           ORC_VAR_D1);
5355       orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_C1,
5356           ORC_VAR_D1);
5357       orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2,
5358           ORC_VAR_D1);
5359       orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
5360           ORC_VAR_D1);
5361 #endif
5362 
5363       orc_program_compile (p);
5364       c = orc_program_take_code (p);
5365       orc_program_free (p);
5366     }
5367     p_inited = TRUE;
5368     orc_once_mutex_unlock ();
5369   }
5370   ex->arrays[ORC_VAR_A2] = c;
5371   ex->program = 0;
5372 
5373   ex->n = n;
5374   ex->arrays[ORC_VAR_D1] = d1;
5375   ex->arrays[ORC_VAR_S1] = (void *) s1;
5376 
5377   func = c->exec;
5378   func (ex);
5379 }
5380 #endif
5381 
5382 
5383 /* video_orc_pack_RGBA_be */
5384 #ifdef DISABLE_ORC
5385 void
video_orc_pack_RGBA_be(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)5386 video_orc_pack_RGBA_be (guint8 * ORC_RESTRICT d1,
5387     const guint8 * ORC_RESTRICT s1, int n)
5388 {
5389   int i;
5390   orc_union32 *ORC_RESTRICT ptr0;
5391   const orc_union32 *ORC_RESTRICT ptr4;
5392   orc_union32 var34;
5393   orc_union32 var35;
5394   orc_union32 var36;
5395   orc_union32 var37;
5396 
5397   ptr0 = (orc_union32 *) d1;
5398   ptr4 = (orc_union32 *) s1;
5399 
5400 
5401   for (i = 0; i < n; i++) {
5402     /* 0: loadl */
5403     var35 = ptr4[i];
5404     /* 1: shrul */
5405     var36.i = ((orc_uint32) var35.i) >> 24;
5406     /* 2: shll */
5407     var37.i = ((orc_uint32) var35.i) << 8;
5408     /* 3: orl */
5409     var34.i = var37.i | var36.i;
5410     /* 4: storel */
5411     ptr0[i] = var34;
5412   }
5413 
5414 }
5415 
5416 #else
5417 static void
_backup_video_orc_pack_RGBA_be(OrcExecutor * ORC_RESTRICT ex)5418 _backup_video_orc_pack_RGBA_be (OrcExecutor * ORC_RESTRICT ex)
5419 {
5420   int i;
5421   int n = ex->n;
5422   orc_union32 *ORC_RESTRICT ptr0;
5423   const orc_union32 *ORC_RESTRICT ptr4;
5424   orc_union32 var34;
5425   orc_union32 var35;
5426   orc_union32 var36;
5427   orc_union32 var37;
5428 
5429   ptr0 = (orc_union32 *) ex->arrays[0];
5430   ptr4 = (orc_union32 *) ex->arrays[4];
5431 
5432 
5433   for (i = 0; i < n; i++) {
5434     /* 0: loadl */
5435     var35 = ptr4[i];
5436     /* 1: shrul */
5437     var36.i = ((orc_uint32) var35.i) >> 24;
5438     /* 2: shll */
5439     var37.i = ((orc_uint32) var35.i) << 8;
5440     /* 3: orl */
5441     var34.i = var37.i | var36.i;
5442     /* 4: storel */
5443     ptr0[i] = var34;
5444   }
5445 
5446 }
5447 
5448 void
video_orc_pack_RGBA_be(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)5449 video_orc_pack_RGBA_be (guint8 * ORC_RESTRICT d1,
5450     const guint8 * ORC_RESTRICT s1, int n)
5451 {
5452   OrcExecutor _ex, *ex = &_ex;
5453   static volatile int p_inited = 0;
5454   static OrcCode *c = 0;
5455   void (*func) (OrcExecutor *);
5456 
5457   if (!p_inited) {
5458     orc_once_mutex_lock ();
5459     if (!p_inited) {
5460       OrcProgram *p;
5461 
5462 #if 1
5463       static const orc_uint8 bc[] = {
5464         1, 9, 22, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
5465         107, 95, 82, 71, 66, 65, 95, 98, 101, 11, 4, 4, 12, 4, 4, 14,
5466         4, 24, 0, 0, 0, 14, 4, 8, 0, 0, 0, 20, 4, 20, 4, 113,
5467         33, 4, 126, 32, 33, 16, 124, 33, 33, 17, 123, 0, 33, 32, 2, 0,
5468 
5469       };
5470       p = orc_program_new_from_static_bytecode (bc);
5471       orc_program_set_backup_function (p, _backup_video_orc_pack_RGBA_be);
5472 #else
5473       p = orc_program_new ();
5474       orc_program_set_name (p, "video_orc_pack_RGBA_be");
5475       orc_program_set_backup_function (p, _backup_video_orc_pack_RGBA_be);
5476       orc_program_add_destination (p, 4, "d1");
5477       orc_program_add_source (p, 4, "s1");
5478       orc_program_add_constant (p, 4, 0x00000018, "c1");
5479       orc_program_add_constant (p, 4, 0x00000008, "c2");
5480       orc_program_add_temporary (p, 4, "t1");
5481       orc_program_add_temporary (p, 4, "t2");
5482 
5483       orc_program_append_2 (p, "loadl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1,
5484           ORC_VAR_D1);
5485       orc_program_append_2 (p, "shrul", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_C1,
5486           ORC_VAR_D1);
5487       orc_program_append_2 (p, "shll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2,
5488           ORC_VAR_D1);
5489       orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
5490           ORC_VAR_D1);
5491 #endif
5492 
5493       orc_program_compile (p);
5494       c = orc_program_take_code (p);
5495       orc_program_free (p);
5496     }
5497     p_inited = TRUE;
5498     orc_once_mutex_unlock ();
5499   }
5500   ex->arrays[ORC_VAR_A2] = c;
5501   ex->program = 0;
5502 
5503   ex->n = n;
5504   ex->arrays[ORC_VAR_D1] = d1;
5505   ex->arrays[ORC_VAR_S1] = (void *) s1;
5506 
5507   func = c->exec;
5508   func (ex);
5509 }
5510 #endif
5511 
5512 
5513 /* video_orc_unpack_RGBA_be */
5514 #ifdef DISABLE_ORC
5515 void
video_orc_unpack_RGBA_be(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)5516 video_orc_unpack_RGBA_be (guint8 * ORC_RESTRICT d1,
5517     const guint8 * ORC_RESTRICT s1, int n)
5518 {
5519   int i;
5520   orc_union32 *ORC_RESTRICT ptr0;
5521   const orc_union32 *ORC_RESTRICT ptr4;
5522   orc_union32 var34;
5523   orc_union32 var35;
5524   orc_union32 var36;
5525   orc_union32 var37;
5526 
5527   ptr0 = (orc_union32 *) d1;
5528   ptr4 = (orc_union32 *) s1;
5529 
5530 
5531   for (i = 0; i < n; i++) {
5532     /* 0: loadl */
5533     var35 = ptr4[i];
5534     /* 1: shll */
5535     var36.i = ((orc_uint32) var35.i) << 24;
5536     /* 2: shrul */
5537     var37.i = ((orc_uint32) var35.i) >> 8;
5538     /* 3: orl */
5539     var34.i = var37.i | var36.i;
5540     /* 4: storel */
5541     ptr0[i] = var34;
5542   }
5543 
5544 }
5545 
5546 #else
5547 static void
_backup_video_orc_unpack_RGBA_be(OrcExecutor * ORC_RESTRICT ex)5548 _backup_video_orc_unpack_RGBA_be (OrcExecutor * ORC_RESTRICT ex)
5549 {
5550   int i;
5551   int n = ex->n;
5552   orc_union32 *ORC_RESTRICT ptr0;
5553   const orc_union32 *ORC_RESTRICT ptr4;
5554   orc_union32 var34;
5555   orc_union32 var35;
5556   orc_union32 var36;
5557   orc_union32 var37;
5558 
5559   ptr0 = (orc_union32 *) ex->arrays[0];
5560   ptr4 = (orc_union32 *) ex->arrays[4];
5561 
5562 
5563   for (i = 0; i < n; i++) {
5564     /* 0: loadl */
5565     var35 = ptr4[i];
5566     /* 1: shll */
5567     var36.i = ((orc_uint32) var35.i) << 24;
5568     /* 2: shrul */
5569     var37.i = ((orc_uint32) var35.i) >> 8;
5570     /* 3: orl */
5571     var34.i = var37.i | var36.i;
5572     /* 4: storel */
5573     ptr0[i] = var34;
5574   }
5575 
5576 }
5577 
5578 void
video_orc_unpack_RGBA_be(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)5579 video_orc_unpack_RGBA_be (guint8 * ORC_RESTRICT d1,
5580     const guint8 * ORC_RESTRICT s1, int n)
5581 {
5582   OrcExecutor _ex, *ex = &_ex;
5583   static volatile int p_inited = 0;
5584   static OrcCode *c = 0;
5585   void (*func) (OrcExecutor *);
5586 
5587   if (!p_inited) {
5588     orc_once_mutex_lock ();
5589     if (!p_inited) {
5590       OrcProgram *p;
5591 
5592 #if 1
5593       static const orc_uint8 bc[] = {
5594         1, 9, 24, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
5595         97, 99, 107, 95, 82, 71, 66, 65, 95, 98, 101, 11, 4, 4, 12, 4,
5596         4, 14, 4, 24, 0, 0, 0, 14, 4, 8, 0, 0, 0, 20, 4, 20,
5597         4, 113, 33, 4, 124, 32, 33, 16, 126, 33, 33, 17, 123, 0, 33, 32,
5598         2, 0,
5599       };
5600       p = orc_program_new_from_static_bytecode (bc);
5601       orc_program_set_backup_function (p, _backup_video_orc_unpack_RGBA_be);
5602 #else
5603       p = orc_program_new ();
5604       orc_program_set_name (p, "video_orc_unpack_RGBA_be");
5605       orc_program_set_backup_function (p, _backup_video_orc_unpack_RGBA_be);
5606       orc_program_add_destination (p, 4, "d1");
5607       orc_program_add_source (p, 4, "s1");
5608       orc_program_add_constant (p, 4, 0x00000018, "c1");
5609       orc_program_add_constant (p, 4, 0x00000008, "c2");
5610       orc_program_add_temporary (p, 4, "t1");
5611       orc_program_add_temporary (p, 4, "t2");
5612 
5613       orc_program_append_2 (p, "loadl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1,
5614           ORC_VAR_D1);
5615       orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_C1,
5616           ORC_VAR_D1);
5617       orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2,
5618           ORC_VAR_D1);
5619       orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
5620           ORC_VAR_D1);
5621 #endif
5622 
5623       orc_program_compile (p);
5624       c = orc_program_take_code (p);
5625       orc_program_free (p);
5626     }
5627     p_inited = TRUE;
5628     orc_once_mutex_unlock ();
5629   }
5630   ex->arrays[ORC_VAR_A2] = c;
5631   ex->program = 0;
5632 
5633   ex->n = n;
5634   ex->arrays[ORC_VAR_D1] = d1;
5635   ex->arrays[ORC_VAR_S1] = (void *) s1;
5636 
5637   func = c->exec;
5638   func (ex);
5639 }
5640 #endif
5641 
5642 
5643 /* video_orc_unpack_ABGR_le */
5644 #ifdef DISABLE_ORC
5645 void
video_orc_unpack_ABGR_le(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)5646 video_orc_unpack_ABGR_le (guint8 * ORC_RESTRICT d1,
5647     const guint8 * ORC_RESTRICT s1, int n)
5648 {
5649   int i;
5650   orc_union32 *ORC_RESTRICT ptr0;
5651   const orc_union32 *ORC_RESTRICT ptr4;
5652   orc_union32 var34;
5653   orc_union32 var35;
5654   orc_union32 var36;
5655   orc_union32 var37;
5656   orc_union32 var38;
5657 
5658   ptr0 = (orc_union32 *) d1;
5659   ptr4 = (orc_union32 *) s1;
5660 
5661 
5662   for (i = 0; i < n; i++) {
5663     /* 0: loadl */
5664     var34 = ptr4[i];
5665     /* 1: swapl */
5666     var36.i = ORC_SWAP_L (var34.i);
5667     /* 2: shll */
5668     var37.i = ((orc_uint32) var36.i) << 8;
5669     /* 3: shrul */
5670     var38.i = ((orc_uint32) var36.i) >> 24;
5671     /* 4: orl */
5672     var35.i = var38.i | var37.i;
5673     /* 5: storel */
5674     ptr0[i] = var35;
5675   }
5676 
5677 }
5678 
5679 #else
5680 static void
_backup_video_orc_unpack_ABGR_le(OrcExecutor * ORC_RESTRICT ex)5681 _backup_video_orc_unpack_ABGR_le (OrcExecutor * ORC_RESTRICT ex)
5682 {
5683   int i;
5684   int n = ex->n;
5685   orc_union32 *ORC_RESTRICT ptr0;
5686   const orc_union32 *ORC_RESTRICT ptr4;
5687   orc_union32 var34;
5688   orc_union32 var35;
5689   orc_union32 var36;
5690   orc_union32 var37;
5691   orc_union32 var38;
5692 
5693   ptr0 = (orc_union32 *) ex->arrays[0];
5694   ptr4 = (orc_union32 *) ex->arrays[4];
5695 
5696 
5697   for (i = 0; i < n; i++) {
5698     /* 0: loadl */
5699     var34 = ptr4[i];
5700     /* 1: swapl */
5701     var36.i = ORC_SWAP_L (var34.i);
5702     /* 2: shll */
5703     var37.i = ((orc_uint32) var36.i) << 8;
5704     /* 3: shrul */
5705     var38.i = ((orc_uint32) var36.i) >> 24;
5706     /* 4: orl */
5707     var35.i = var38.i | var37.i;
5708     /* 5: storel */
5709     ptr0[i] = var35;
5710   }
5711 
5712 }
5713 
5714 void
video_orc_unpack_ABGR_le(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)5715 video_orc_unpack_ABGR_le (guint8 * ORC_RESTRICT d1,
5716     const guint8 * ORC_RESTRICT s1, int n)
5717 {
5718   OrcExecutor _ex, *ex = &_ex;
5719   static volatile int p_inited = 0;
5720   static OrcCode *c = 0;
5721   void (*func) (OrcExecutor *);
5722 
5723   if (!p_inited) {
5724     orc_once_mutex_lock ();
5725     if (!p_inited) {
5726       OrcProgram *p;
5727 
5728 #if 1
5729       static const orc_uint8 bc[] = {
5730         1, 9, 24, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
5731         97, 99, 107, 95, 65, 66, 71, 82, 95, 108, 101, 11, 4, 4, 12, 4,
5732         4, 14, 4, 8, 0, 0, 0, 14, 4, 24, 0, 0, 0, 20, 4, 20,
5733         4, 184, 33, 4, 124, 32, 33, 16, 126, 33, 33, 17, 123, 0, 33, 32,
5734         2, 0,
5735       };
5736       p = orc_program_new_from_static_bytecode (bc);
5737       orc_program_set_backup_function (p, _backup_video_orc_unpack_ABGR_le);
5738 #else
5739       p = orc_program_new ();
5740       orc_program_set_name (p, "video_orc_unpack_ABGR_le");
5741       orc_program_set_backup_function (p, _backup_video_orc_unpack_ABGR_le);
5742       orc_program_add_destination (p, 4, "d1");
5743       orc_program_add_source (p, 4, "s1");
5744       orc_program_add_constant (p, 4, 0x00000008, "c1");
5745       orc_program_add_constant (p, 4, 0x00000018, "c2");
5746       orc_program_add_temporary (p, 4, "t1");
5747       orc_program_add_temporary (p, 4, "t2");
5748 
5749       orc_program_append_2 (p, "swapl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1,
5750           ORC_VAR_D1);
5751       orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_C1,
5752           ORC_VAR_D1);
5753       orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2,
5754           ORC_VAR_D1);
5755       orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
5756           ORC_VAR_D1);
5757 #endif
5758 
5759       orc_program_compile (p);
5760       c = orc_program_take_code (p);
5761       orc_program_free (p);
5762     }
5763     p_inited = TRUE;
5764     orc_once_mutex_unlock ();
5765   }
5766   ex->arrays[ORC_VAR_A2] = c;
5767   ex->program = 0;
5768 
5769   ex->n = n;
5770   ex->arrays[ORC_VAR_D1] = d1;
5771   ex->arrays[ORC_VAR_S1] = (void *) s1;
5772 
5773   func = c->exec;
5774   func (ex);
5775 }
5776 #endif
5777 
5778 
5779 /* video_orc_pack_ABGR_le */
5780 #ifdef DISABLE_ORC
5781 void
video_orc_pack_ABGR_le(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)5782 video_orc_pack_ABGR_le (guint8 * ORC_RESTRICT d1,
5783     const guint8 * ORC_RESTRICT s1, int n)
5784 {
5785   int i;
5786   orc_union32 *ORC_RESTRICT ptr0;
5787   const orc_union32 *ORC_RESTRICT ptr4;
5788   orc_union32 var34;
5789   orc_union32 var35;
5790   orc_union32 var36;
5791   orc_union32 var37;
5792   orc_union32 var38;
5793 
5794   ptr0 = (orc_union32 *) d1;
5795   ptr4 = (orc_union32 *) s1;
5796 
5797 
5798   for (i = 0; i < n; i++) {
5799     /* 0: loadl */
5800     var34 = ptr4[i];
5801     /* 1: swapl */
5802     var36.i = ORC_SWAP_L (var34.i);
5803     /* 2: shll */
5804     var37.i = ((orc_uint32) var36.i) << 8;
5805     /* 3: shrul */
5806     var38.i = ((orc_uint32) var36.i) >> 24;
5807     /* 4: orl */
5808     var35.i = var38.i | var37.i;
5809     /* 5: storel */
5810     ptr0[i] = var35;
5811   }
5812 
5813 }
5814 
5815 #else
5816 static void
_backup_video_orc_pack_ABGR_le(OrcExecutor * ORC_RESTRICT ex)5817 _backup_video_orc_pack_ABGR_le (OrcExecutor * ORC_RESTRICT ex)
5818 {
5819   int i;
5820   int n = ex->n;
5821   orc_union32 *ORC_RESTRICT ptr0;
5822   const orc_union32 *ORC_RESTRICT ptr4;
5823   orc_union32 var34;
5824   orc_union32 var35;
5825   orc_union32 var36;
5826   orc_union32 var37;
5827   orc_union32 var38;
5828 
5829   ptr0 = (orc_union32 *) ex->arrays[0];
5830   ptr4 = (orc_union32 *) ex->arrays[4];
5831 
5832 
5833   for (i = 0; i < n; i++) {
5834     /* 0: loadl */
5835     var34 = ptr4[i];
5836     /* 1: swapl */
5837     var36.i = ORC_SWAP_L (var34.i);
5838     /* 2: shll */
5839     var37.i = ((orc_uint32) var36.i) << 8;
5840     /* 3: shrul */
5841     var38.i = ((orc_uint32) var36.i) >> 24;
5842     /* 4: orl */
5843     var35.i = var38.i | var37.i;
5844     /* 5: storel */
5845     ptr0[i] = var35;
5846   }
5847 
5848 }
5849 
5850 void
video_orc_pack_ABGR_le(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)5851 video_orc_pack_ABGR_le (guint8 * ORC_RESTRICT d1,
5852     const guint8 * ORC_RESTRICT s1, int n)
5853 {
5854   OrcExecutor _ex, *ex = &_ex;
5855   static volatile int p_inited = 0;
5856   static OrcCode *c = 0;
5857   void (*func) (OrcExecutor *);
5858 
5859   if (!p_inited) {
5860     orc_once_mutex_lock ();
5861     if (!p_inited) {
5862       OrcProgram *p;
5863 
5864 #if 1
5865       static const orc_uint8 bc[] = {
5866         1, 9, 22, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
5867         107, 95, 65, 66, 71, 82, 95, 108, 101, 11, 4, 4, 12, 4, 4, 14,
5868         4, 8, 0, 0, 0, 14, 4, 24, 0, 0, 0, 20, 4, 20, 4, 184,
5869         33, 4, 124, 32, 33, 16, 126, 33, 33, 17, 123, 0, 33, 32, 2, 0,
5870 
5871       };
5872       p = orc_program_new_from_static_bytecode (bc);
5873       orc_program_set_backup_function (p, _backup_video_orc_pack_ABGR_le);
5874 #else
5875       p = orc_program_new ();
5876       orc_program_set_name (p, "video_orc_pack_ABGR_le");
5877       orc_program_set_backup_function (p, _backup_video_orc_pack_ABGR_le);
5878       orc_program_add_destination (p, 4, "d1");
5879       orc_program_add_source (p, 4, "s1");
5880       orc_program_add_constant (p, 4, 0x00000008, "c1");
5881       orc_program_add_constant (p, 4, 0x00000018, "c2");
5882       orc_program_add_temporary (p, 4, "t1");
5883       orc_program_add_temporary (p, 4, "t2");
5884 
5885       orc_program_append_2 (p, "swapl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1,
5886           ORC_VAR_D1);
5887       orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_C1,
5888           ORC_VAR_D1);
5889       orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2,
5890           ORC_VAR_D1);
5891       orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
5892           ORC_VAR_D1);
5893 #endif
5894 
5895       orc_program_compile (p);
5896       c = orc_program_take_code (p);
5897       orc_program_free (p);
5898     }
5899     p_inited = TRUE;
5900     orc_once_mutex_unlock ();
5901   }
5902   ex->arrays[ORC_VAR_A2] = c;
5903   ex->program = 0;
5904 
5905   ex->n = n;
5906   ex->arrays[ORC_VAR_D1] = d1;
5907   ex->arrays[ORC_VAR_S1] = (void *) s1;
5908 
5909   func = c->exec;
5910   func (ex);
5911 }
5912 #endif
5913 
5914 
5915 /* video_orc_unpack_ABGR_be */
5916 #ifdef DISABLE_ORC
5917 void
video_orc_unpack_ABGR_be(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)5918 video_orc_unpack_ABGR_be (guint8 * ORC_RESTRICT d1,
5919     const guint8 * ORC_RESTRICT s1, int n)
5920 {
5921   int i;
5922   orc_union32 *ORC_RESTRICT ptr0;
5923   const orc_union32 *ORC_RESTRICT ptr4;
5924   orc_union32 var34;
5925   orc_union32 var35;
5926   orc_union32 var36;
5927   orc_union32 var37;
5928   orc_union32 var38;
5929 
5930   ptr0 = (orc_union32 *) d1;
5931   ptr4 = (orc_union32 *) s1;
5932 
5933 
5934   for (i = 0; i < n; i++) {
5935     /* 0: loadl */
5936     var34 = ptr4[i];
5937     /* 1: swapl */
5938     var36.i = ORC_SWAP_L (var34.i);
5939     /* 2: shll */
5940     var37.i = ((orc_uint32) var36.i) << 24;
5941     /* 3: shrul */
5942     var38.i = ((orc_uint32) var36.i) >> 8;
5943     /* 4: orl */
5944     var35.i = var38.i | var37.i;
5945     /* 5: storel */
5946     ptr0[i] = var35;
5947   }
5948 
5949 }
5950 
5951 #else
5952 static void
_backup_video_orc_unpack_ABGR_be(OrcExecutor * ORC_RESTRICT ex)5953 _backup_video_orc_unpack_ABGR_be (OrcExecutor * ORC_RESTRICT ex)
5954 {
5955   int i;
5956   int n = ex->n;
5957   orc_union32 *ORC_RESTRICT ptr0;
5958   const orc_union32 *ORC_RESTRICT ptr4;
5959   orc_union32 var34;
5960   orc_union32 var35;
5961   orc_union32 var36;
5962   orc_union32 var37;
5963   orc_union32 var38;
5964 
5965   ptr0 = (orc_union32 *) ex->arrays[0];
5966   ptr4 = (orc_union32 *) ex->arrays[4];
5967 
5968 
5969   for (i = 0; i < n; i++) {
5970     /* 0: loadl */
5971     var34 = ptr4[i];
5972     /* 1: swapl */
5973     var36.i = ORC_SWAP_L (var34.i);
5974     /* 2: shll */
5975     var37.i = ((orc_uint32) var36.i) << 24;
5976     /* 3: shrul */
5977     var38.i = ((orc_uint32) var36.i) >> 8;
5978     /* 4: orl */
5979     var35.i = var38.i | var37.i;
5980     /* 5: storel */
5981     ptr0[i] = var35;
5982   }
5983 
5984 }
5985 
5986 void
video_orc_unpack_ABGR_be(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)5987 video_orc_unpack_ABGR_be (guint8 * ORC_RESTRICT d1,
5988     const guint8 * ORC_RESTRICT s1, int n)
5989 {
5990   OrcExecutor _ex, *ex = &_ex;
5991   static volatile int p_inited = 0;
5992   static OrcCode *c = 0;
5993   void (*func) (OrcExecutor *);
5994 
5995   if (!p_inited) {
5996     orc_once_mutex_lock ();
5997     if (!p_inited) {
5998       OrcProgram *p;
5999 
6000 #if 1
6001       static const orc_uint8 bc[] = {
6002         1, 9, 24, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
6003         97, 99, 107, 95, 65, 66, 71, 82, 95, 98, 101, 11, 4, 4, 12, 4,
6004         4, 14, 4, 24, 0, 0, 0, 14, 4, 8, 0, 0, 0, 20, 4, 20,
6005         4, 184, 33, 4, 124, 32, 33, 16, 126, 33, 33, 17, 123, 0, 33, 32,
6006         2, 0,
6007       };
6008       p = orc_program_new_from_static_bytecode (bc);
6009       orc_program_set_backup_function (p, _backup_video_orc_unpack_ABGR_be);
6010 #else
6011       p = orc_program_new ();
6012       orc_program_set_name (p, "video_orc_unpack_ABGR_be");
6013       orc_program_set_backup_function (p, _backup_video_orc_unpack_ABGR_be);
6014       orc_program_add_destination (p, 4, "d1");
6015       orc_program_add_source (p, 4, "s1");
6016       orc_program_add_constant (p, 4, 0x00000018, "c1");
6017       orc_program_add_constant (p, 4, 0x00000008, "c2");
6018       orc_program_add_temporary (p, 4, "t1");
6019       orc_program_add_temporary (p, 4, "t2");
6020 
6021       orc_program_append_2 (p, "swapl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1,
6022           ORC_VAR_D1);
6023       orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_C1,
6024           ORC_VAR_D1);
6025       orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2,
6026           ORC_VAR_D1);
6027       orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
6028           ORC_VAR_D1);
6029 #endif
6030 
6031       orc_program_compile (p);
6032       c = orc_program_take_code (p);
6033       orc_program_free (p);
6034     }
6035     p_inited = TRUE;
6036     orc_once_mutex_unlock ();
6037   }
6038   ex->arrays[ORC_VAR_A2] = c;
6039   ex->program = 0;
6040 
6041   ex->n = n;
6042   ex->arrays[ORC_VAR_D1] = d1;
6043   ex->arrays[ORC_VAR_S1] = (void *) s1;
6044 
6045   func = c->exec;
6046   func (ex);
6047 }
6048 #endif
6049 
6050 
6051 /* video_orc_pack_ABGR_be */
6052 #ifdef DISABLE_ORC
6053 void
video_orc_pack_ABGR_be(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)6054 video_orc_pack_ABGR_be (guint8 * ORC_RESTRICT d1,
6055     const guint8 * ORC_RESTRICT s1, int n)
6056 {
6057   int i;
6058   orc_union32 *ORC_RESTRICT ptr0;
6059   const orc_union32 *ORC_RESTRICT ptr4;
6060   orc_union32 var34;
6061   orc_union32 var35;
6062   orc_union32 var36;
6063   orc_union32 var37;
6064   orc_union32 var38;
6065 
6066   ptr0 = (orc_union32 *) d1;
6067   ptr4 = (orc_union32 *) s1;
6068 
6069 
6070   for (i = 0; i < n; i++) {
6071     /* 0: loadl */
6072     var34 = ptr4[i];
6073     /* 1: swapl */
6074     var36.i = ORC_SWAP_L (var34.i);
6075     /* 2: shll */
6076     var37.i = ((orc_uint32) var36.i) << 24;
6077     /* 3: shrul */
6078     var38.i = ((orc_uint32) var36.i) >> 8;
6079     /* 4: orl */
6080     var35.i = var38.i | var37.i;
6081     /* 5: storel */
6082     ptr0[i] = var35;
6083   }
6084 
6085 }
6086 
6087 #else
6088 static void
_backup_video_orc_pack_ABGR_be(OrcExecutor * ORC_RESTRICT ex)6089 _backup_video_orc_pack_ABGR_be (OrcExecutor * ORC_RESTRICT ex)
6090 {
6091   int i;
6092   int n = ex->n;
6093   orc_union32 *ORC_RESTRICT ptr0;
6094   const orc_union32 *ORC_RESTRICT ptr4;
6095   orc_union32 var34;
6096   orc_union32 var35;
6097   orc_union32 var36;
6098   orc_union32 var37;
6099   orc_union32 var38;
6100 
6101   ptr0 = (orc_union32 *) ex->arrays[0];
6102   ptr4 = (orc_union32 *) ex->arrays[4];
6103 
6104 
6105   for (i = 0; i < n; i++) {
6106     /* 0: loadl */
6107     var34 = ptr4[i];
6108     /* 1: swapl */
6109     var36.i = ORC_SWAP_L (var34.i);
6110     /* 2: shll */
6111     var37.i = ((orc_uint32) var36.i) << 24;
6112     /* 3: shrul */
6113     var38.i = ((orc_uint32) var36.i) >> 8;
6114     /* 4: orl */
6115     var35.i = var38.i | var37.i;
6116     /* 5: storel */
6117     ptr0[i] = var35;
6118   }
6119 
6120 }
6121 
6122 void
video_orc_pack_ABGR_be(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)6123 video_orc_pack_ABGR_be (guint8 * ORC_RESTRICT d1,
6124     const guint8 * ORC_RESTRICT s1, int n)
6125 {
6126   OrcExecutor _ex, *ex = &_ex;
6127   static volatile int p_inited = 0;
6128   static OrcCode *c = 0;
6129   void (*func) (OrcExecutor *);
6130 
6131   if (!p_inited) {
6132     orc_once_mutex_lock ();
6133     if (!p_inited) {
6134       OrcProgram *p;
6135 
6136 #if 1
6137       static const orc_uint8 bc[] = {
6138         1, 9, 22, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
6139         107, 95, 65, 66, 71, 82, 95, 98, 101, 11, 4, 4, 12, 4, 4, 14,
6140         4, 24, 0, 0, 0, 14, 4, 8, 0, 0, 0, 20, 4, 20, 4, 184,
6141         33, 4, 124, 32, 33, 16, 126, 33, 33, 17, 123, 0, 33, 32, 2, 0,
6142 
6143       };
6144       p = orc_program_new_from_static_bytecode (bc);
6145       orc_program_set_backup_function (p, _backup_video_orc_pack_ABGR_be);
6146 #else
6147       p = orc_program_new ();
6148       orc_program_set_name (p, "video_orc_pack_ABGR_be");
6149       orc_program_set_backup_function (p, _backup_video_orc_pack_ABGR_be);
6150       orc_program_add_destination (p, 4, "d1");
6151       orc_program_add_source (p, 4, "s1");
6152       orc_program_add_constant (p, 4, 0x00000018, "c1");
6153       orc_program_add_constant (p, 4, 0x00000008, "c2");
6154       orc_program_add_temporary (p, 4, "t1");
6155       orc_program_add_temporary (p, 4, "t2");
6156 
6157       orc_program_append_2 (p, "swapl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1,
6158           ORC_VAR_D1);
6159       orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_C1,
6160           ORC_VAR_D1);
6161       orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2,
6162           ORC_VAR_D1);
6163       orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
6164           ORC_VAR_D1);
6165 #endif
6166 
6167       orc_program_compile (p);
6168       c = orc_program_take_code (p);
6169       orc_program_free (p);
6170     }
6171     p_inited = TRUE;
6172     orc_once_mutex_unlock ();
6173   }
6174   ex->arrays[ORC_VAR_A2] = c;
6175   ex->program = 0;
6176 
6177   ex->n = n;
6178   ex->arrays[ORC_VAR_D1] = d1;
6179   ex->arrays[ORC_VAR_S1] = (void *) s1;
6180 
6181   func = c->exec;
6182   func (ex);
6183 }
6184 #endif
6185 
6186 
6187 /* video_orc_unpack_NV12 */
6188 #ifdef DISABLE_ORC
6189 void
video_orc_unpack_NV12(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,int n)6190 video_orc_unpack_NV12 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
6191     const guint8 * ORC_RESTRICT s2, int n)
6192 {
6193   int i;
6194   orc_union64 *ORC_RESTRICT ptr0;
6195   const orc_union16 *ORC_RESTRICT ptr4;
6196   const orc_union16 *ORC_RESTRICT ptr5;
6197   orc_union16 var34;
6198   orc_union16 var35;
6199 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
6200   volatile orc_union16 var36;
6201 #else
6202   orc_union16 var36;
6203 #endif
6204   orc_union16 var37;
6205   orc_union64 var38;
6206   orc_union32 var39;
6207   orc_union32 var40;
6208 
6209   ptr0 = (orc_union64 *) d1;
6210   ptr4 = (orc_union16 *) s1;
6211   ptr5 = (orc_union16 *) s2;
6212 
6213   /* 3: loadpb */
6214   var36.x2[0] = 0x000000ff;     /* 255 or 1.25987e-321f */
6215   var36.x2[1] = 0x000000ff;     /* 255 or 1.25987e-321f */
6216 
6217   for (i = 0; i < n; i++) {
6218     /* 0: loadw */
6219     var34 = ptr5[i];
6220     /* 1: loadw */
6221     var35 = ptr5[i];
6222     /* 2: mergewl */
6223     {
6224       orc_union32 _dest;
6225       _dest.x2[0] = var34.i;
6226       _dest.x2[1] = var35.i;
6227       var39.i = _dest.i;
6228     }
6229     /* 4: loadw */
6230     var37 = ptr4[i];
6231     /* 5: mergebw */
6232     {
6233       orc_union16 _dest;
6234       _dest.x2[0] = var36.x2[0];
6235       _dest.x2[1] = var37.x2[0];
6236       var40.x2[0] = _dest.i;
6237     }
6238     {
6239       orc_union16 _dest;
6240       _dest.x2[0] = var36.x2[1];
6241       _dest.x2[1] = var37.x2[1];
6242       var40.x2[1] = _dest.i;
6243     }
6244     /* 6: mergewl */
6245     {
6246       orc_union32 _dest;
6247       _dest.x2[0] = var40.x2[0];
6248       _dest.x2[1] = var39.x2[0];
6249       var38.x2[0] = _dest.i;
6250     }
6251     {
6252       orc_union32 _dest;
6253       _dest.x2[0] = var40.x2[1];
6254       _dest.x2[1] = var39.x2[1];
6255       var38.x2[1] = _dest.i;
6256     }
6257     /* 7: storeq */
6258     ptr0[i] = var38;
6259   }
6260 
6261 }
6262 
6263 #else
6264 static void
_backup_video_orc_unpack_NV12(OrcExecutor * ORC_RESTRICT ex)6265 _backup_video_orc_unpack_NV12 (OrcExecutor * ORC_RESTRICT ex)
6266 {
6267   int i;
6268   int n = ex->n;
6269   orc_union64 *ORC_RESTRICT ptr0;
6270   const orc_union16 *ORC_RESTRICT ptr4;
6271   const orc_union16 *ORC_RESTRICT ptr5;
6272   orc_union16 var34;
6273   orc_union16 var35;
6274 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
6275   volatile orc_union16 var36;
6276 #else
6277   orc_union16 var36;
6278 #endif
6279   orc_union16 var37;
6280   orc_union64 var38;
6281   orc_union32 var39;
6282   orc_union32 var40;
6283 
6284   ptr0 = (orc_union64 *) ex->arrays[0];
6285   ptr4 = (orc_union16 *) ex->arrays[4];
6286   ptr5 = (orc_union16 *) ex->arrays[5];
6287 
6288   /* 3: loadpb */
6289   var36.x2[0] = 0x000000ff;     /* 255 or 1.25987e-321f */
6290   var36.x2[1] = 0x000000ff;     /* 255 or 1.25987e-321f */
6291 
6292   for (i = 0; i < n; i++) {
6293     /* 0: loadw */
6294     var34 = ptr5[i];
6295     /* 1: loadw */
6296     var35 = ptr5[i];
6297     /* 2: mergewl */
6298     {
6299       orc_union32 _dest;
6300       _dest.x2[0] = var34.i;
6301       _dest.x2[1] = var35.i;
6302       var39.i = _dest.i;
6303     }
6304     /* 4: loadw */
6305     var37 = ptr4[i];
6306     /* 5: mergebw */
6307     {
6308       orc_union16 _dest;
6309       _dest.x2[0] = var36.x2[0];
6310       _dest.x2[1] = var37.x2[0];
6311       var40.x2[0] = _dest.i;
6312     }
6313     {
6314       orc_union16 _dest;
6315       _dest.x2[0] = var36.x2[1];
6316       _dest.x2[1] = var37.x2[1];
6317       var40.x2[1] = _dest.i;
6318     }
6319     /* 6: mergewl */
6320     {
6321       orc_union32 _dest;
6322       _dest.x2[0] = var40.x2[0];
6323       _dest.x2[1] = var39.x2[0];
6324       var38.x2[0] = _dest.i;
6325     }
6326     {
6327       orc_union32 _dest;
6328       _dest.x2[0] = var40.x2[1];
6329       _dest.x2[1] = var39.x2[1];
6330       var38.x2[1] = _dest.i;
6331     }
6332     /* 7: storeq */
6333     ptr0[i] = var38;
6334   }
6335 
6336 }
6337 
6338 void
video_orc_unpack_NV12(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,int n)6339 video_orc_unpack_NV12 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
6340     const guint8 * ORC_RESTRICT s2, int n)
6341 {
6342   OrcExecutor _ex, *ex = &_ex;
6343   static volatile int p_inited = 0;
6344   static OrcCode *c = 0;
6345   void (*func) (OrcExecutor *);
6346 
6347   if (!p_inited) {
6348     orc_once_mutex_lock ();
6349     if (!p_inited) {
6350       OrcProgram *p;
6351 
6352 #if 1
6353       static const orc_uint8 bc[] = {
6354         1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
6355         97, 99, 107, 95, 78, 86, 49, 50, 11, 8, 8, 12, 2, 2, 12, 2,
6356         2, 14, 1, 255, 0, 0, 0, 20, 4, 20, 4, 195, 33, 5, 5, 21,
6357         1, 196, 32, 16, 4, 21, 1, 195, 0, 32, 33, 2, 0,
6358       };
6359       p = orc_program_new_from_static_bytecode (bc);
6360       orc_program_set_backup_function (p, _backup_video_orc_unpack_NV12);
6361 #else
6362       p = orc_program_new ();
6363       orc_program_set_name (p, "video_orc_unpack_NV12");
6364       orc_program_set_backup_function (p, _backup_video_orc_unpack_NV12);
6365       orc_program_add_destination (p, 8, "d1");
6366       orc_program_add_source (p, 2, "s1");
6367       orc_program_add_source (p, 2, "s2");
6368       orc_program_add_constant (p, 1, 0x000000ff, "c1");
6369       orc_program_add_temporary (p, 4, "t1");
6370       orc_program_add_temporary (p, 4, "t2");
6371 
6372       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S2,
6373           ORC_VAR_D1);
6374       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_S1,
6375           ORC_VAR_D1);
6376       orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
6377           ORC_VAR_D1);
6378 #endif
6379 
6380       orc_program_compile (p);
6381       c = orc_program_take_code (p);
6382       orc_program_free (p);
6383     }
6384     p_inited = TRUE;
6385     orc_once_mutex_unlock ();
6386   }
6387   ex->arrays[ORC_VAR_A2] = c;
6388   ex->program = 0;
6389 
6390   ex->n = n;
6391   ex->arrays[ORC_VAR_D1] = d1;
6392   ex->arrays[ORC_VAR_S1] = (void *) s1;
6393   ex->arrays[ORC_VAR_S2] = (void *) s2;
6394 
6395   func = c->exec;
6396   func (ex);
6397 }
6398 #endif
6399 
6400 
6401 /* video_orc_pack_NV12 */
6402 #ifdef DISABLE_ORC
6403 void
video_orc_pack_NV12(guint8 * ORC_RESTRICT d1,guint8 * ORC_RESTRICT d2,const guint8 * ORC_RESTRICT s1,int n)6404 video_orc_pack_NV12 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
6405     const guint8 * ORC_RESTRICT s1, int n)
6406 {
6407   int i;
6408   orc_union16 *ORC_RESTRICT ptr0;
6409   orc_union16 *ORC_RESTRICT ptr1;
6410   const orc_union64 *ORC_RESTRICT ptr4;
6411   orc_union64 var34;
6412   orc_union16 var35;
6413   orc_union16 var36;
6414   orc_union32 var37;
6415   orc_union32 var38;
6416 
6417   ptr0 = (orc_union16 *) d1;
6418   ptr1 = (orc_union16 *) d2;
6419   ptr4 = (orc_union64 *) s1;
6420 
6421 
6422   for (i = 0; i < n; i++) {
6423     /* 0: loadq */
6424     var34 = ptr4[i];
6425     /* 1: splitlw */
6426     {
6427       orc_union32 _src;
6428       _src.i = var34.x2[0];
6429       var37.x2[0] = _src.x2[1];
6430       var38.x2[0] = _src.x2[0];
6431     }
6432     {
6433       orc_union32 _src;
6434       _src.i = var34.x2[1];
6435       var37.x2[1] = _src.x2[1];
6436       var38.x2[1] = _src.x2[0];
6437     }
6438     /* 2: select1wb */
6439     {
6440       orc_union16 _src;
6441       _src.i = var38.x2[0];
6442       var35.x2[0] = _src.x2[1];
6443     }
6444     {
6445       orc_union16 _src;
6446       _src.i = var38.x2[1];
6447       var35.x2[1] = _src.x2[1];
6448     }
6449     /* 3: storew */
6450     ptr0[i] = var35;
6451     /* 4: select0lw */
6452     {
6453       orc_union32 _src;
6454       _src.i = var37.i;
6455       var36.i = _src.x2[0];
6456     }
6457     /* 5: storew */
6458     ptr1[i] = var36;
6459   }
6460 
6461 }
6462 
6463 #else
6464 static void
_backup_video_orc_pack_NV12(OrcExecutor * ORC_RESTRICT ex)6465 _backup_video_orc_pack_NV12 (OrcExecutor * ORC_RESTRICT ex)
6466 {
6467   int i;
6468   int n = ex->n;
6469   orc_union16 *ORC_RESTRICT ptr0;
6470   orc_union16 *ORC_RESTRICT ptr1;
6471   const orc_union64 *ORC_RESTRICT ptr4;
6472   orc_union64 var34;
6473   orc_union16 var35;
6474   orc_union16 var36;
6475   orc_union32 var37;
6476   orc_union32 var38;
6477 
6478   ptr0 = (orc_union16 *) ex->arrays[0];
6479   ptr1 = (orc_union16 *) ex->arrays[1];
6480   ptr4 = (orc_union64 *) ex->arrays[4];
6481 
6482 
6483   for (i = 0; i < n; i++) {
6484     /* 0: loadq */
6485     var34 = ptr4[i];
6486     /* 1: splitlw */
6487     {
6488       orc_union32 _src;
6489       _src.i = var34.x2[0];
6490       var37.x2[0] = _src.x2[1];
6491       var38.x2[0] = _src.x2[0];
6492     }
6493     {
6494       orc_union32 _src;
6495       _src.i = var34.x2[1];
6496       var37.x2[1] = _src.x2[1];
6497       var38.x2[1] = _src.x2[0];
6498     }
6499     /* 2: select1wb */
6500     {
6501       orc_union16 _src;
6502       _src.i = var38.x2[0];
6503       var35.x2[0] = _src.x2[1];
6504     }
6505     {
6506       orc_union16 _src;
6507       _src.i = var38.x2[1];
6508       var35.x2[1] = _src.x2[1];
6509     }
6510     /* 3: storew */
6511     ptr0[i] = var35;
6512     /* 4: select0lw */
6513     {
6514       orc_union32 _src;
6515       _src.i = var37.i;
6516       var36.i = _src.x2[0];
6517     }
6518     /* 5: storew */
6519     ptr1[i] = var36;
6520   }
6521 
6522 }
6523 
6524 void
video_orc_pack_NV12(guint8 * ORC_RESTRICT d1,guint8 * ORC_RESTRICT d2,const guint8 * ORC_RESTRICT s1,int n)6525 video_orc_pack_NV12 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
6526     const guint8 * ORC_RESTRICT s1, int n)
6527 {
6528   OrcExecutor _ex, *ex = &_ex;
6529   static volatile int p_inited = 0;
6530   static OrcCode *c = 0;
6531   void (*func) (OrcExecutor *);
6532 
6533   if (!p_inited) {
6534     orc_once_mutex_lock ();
6535     if (!p_inited) {
6536       OrcProgram *p;
6537 
6538 #if 1
6539       static const orc_uint8 bc[] = {
6540         1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
6541         107, 95, 78, 86, 49, 50, 11, 2, 2, 11, 2, 2, 12, 8, 8, 20,
6542         4, 20, 4, 21, 1, 198, 33, 32, 4, 21, 1, 189, 0, 32, 190, 1,
6543         33, 2, 0,
6544       };
6545       p = orc_program_new_from_static_bytecode (bc);
6546       orc_program_set_backup_function (p, _backup_video_orc_pack_NV12);
6547 #else
6548       p = orc_program_new ();
6549       orc_program_set_name (p, "video_orc_pack_NV12");
6550       orc_program_set_backup_function (p, _backup_video_orc_pack_NV12);
6551       orc_program_add_destination (p, 2, "d1");
6552       orc_program_add_destination (p, 2, "d2");
6553       orc_program_add_source (p, 8, "s1");
6554       orc_program_add_temporary (p, 4, "t1");
6555       orc_program_add_temporary (p, 4, "t2");
6556 
6557       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
6558           ORC_VAR_D1);
6559       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
6560           ORC_VAR_D1, ORC_VAR_D1);
6561       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_D2, ORC_VAR_T2,
6562           ORC_VAR_D1, ORC_VAR_D1);
6563 #endif
6564 
6565       orc_program_compile (p);
6566       c = orc_program_take_code (p);
6567       orc_program_free (p);
6568     }
6569     p_inited = TRUE;
6570     orc_once_mutex_unlock ();
6571   }
6572   ex->arrays[ORC_VAR_A2] = c;
6573   ex->program = 0;
6574 
6575   ex->n = n;
6576   ex->arrays[ORC_VAR_D1] = d1;
6577   ex->arrays[ORC_VAR_D2] = d2;
6578   ex->arrays[ORC_VAR_S1] = (void *) s1;
6579 
6580   func = c->exec;
6581   func (ex);
6582 }
6583 #endif
6584 
6585 
6586 /* video_orc_unpack_NV21 */
6587 #ifdef DISABLE_ORC
6588 void
video_orc_unpack_NV21(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,int n)6589 video_orc_unpack_NV21 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
6590     const guint8 * ORC_RESTRICT s2, int n)
6591 {
6592   int i;
6593   orc_union64 *ORC_RESTRICT ptr0;
6594   const orc_union16 *ORC_RESTRICT ptr4;
6595   const orc_union16 *ORC_RESTRICT ptr5;
6596   orc_union16 var35;
6597 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
6598   volatile orc_union16 var36;
6599 #else
6600   orc_union16 var36;
6601 #endif
6602   orc_union16 var37;
6603   orc_union64 var38;
6604   orc_union16 var39;
6605   orc_union32 var40;
6606   orc_union32 var41;
6607 
6608   ptr0 = (orc_union64 *) d1;
6609   ptr4 = (orc_union16 *) s1;
6610   ptr5 = (orc_union16 *) s2;
6611 
6612   /* 3: loadpb */
6613   var36.x2[0] = 0x000000ff;     /* 255 or 1.25987e-321f */
6614   var36.x2[1] = 0x000000ff;     /* 255 or 1.25987e-321f */
6615 
6616   for (i = 0; i < n; i++) {
6617     /* 0: loadw */
6618     var35 = ptr5[i];
6619     /* 1: swapw */
6620     var39.i = ORC_SWAP_W (var35.i);
6621     /* 2: mergewl */
6622     {
6623       orc_union32 _dest;
6624       _dest.x2[0] = var39.i;
6625       _dest.x2[1] = var39.i;
6626       var40.i = _dest.i;
6627     }
6628     /* 4: loadw */
6629     var37 = ptr4[i];
6630     /* 5: mergebw */
6631     {
6632       orc_union16 _dest;
6633       _dest.x2[0] = var36.x2[0];
6634       _dest.x2[1] = var37.x2[0];
6635       var41.x2[0] = _dest.i;
6636     }
6637     {
6638       orc_union16 _dest;
6639       _dest.x2[0] = var36.x2[1];
6640       _dest.x2[1] = var37.x2[1];
6641       var41.x2[1] = _dest.i;
6642     }
6643     /* 6: mergewl */
6644     {
6645       orc_union32 _dest;
6646       _dest.x2[0] = var41.x2[0];
6647       _dest.x2[1] = var40.x2[0];
6648       var38.x2[0] = _dest.i;
6649     }
6650     {
6651       orc_union32 _dest;
6652       _dest.x2[0] = var41.x2[1];
6653       _dest.x2[1] = var40.x2[1];
6654       var38.x2[1] = _dest.i;
6655     }
6656     /* 7: storeq */
6657     ptr0[i] = var38;
6658   }
6659 
6660 }
6661 
6662 #else
6663 static void
_backup_video_orc_unpack_NV21(OrcExecutor * ORC_RESTRICT ex)6664 _backup_video_orc_unpack_NV21 (OrcExecutor * ORC_RESTRICT ex)
6665 {
6666   int i;
6667   int n = ex->n;
6668   orc_union64 *ORC_RESTRICT ptr0;
6669   const orc_union16 *ORC_RESTRICT ptr4;
6670   const orc_union16 *ORC_RESTRICT ptr5;
6671   orc_union16 var35;
6672 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
6673   volatile orc_union16 var36;
6674 #else
6675   orc_union16 var36;
6676 #endif
6677   orc_union16 var37;
6678   orc_union64 var38;
6679   orc_union16 var39;
6680   orc_union32 var40;
6681   orc_union32 var41;
6682 
6683   ptr0 = (orc_union64 *) ex->arrays[0];
6684   ptr4 = (orc_union16 *) ex->arrays[4];
6685   ptr5 = (orc_union16 *) ex->arrays[5];
6686 
6687   /* 3: loadpb */
6688   var36.x2[0] = 0x000000ff;     /* 255 or 1.25987e-321f */
6689   var36.x2[1] = 0x000000ff;     /* 255 or 1.25987e-321f */
6690 
6691   for (i = 0; i < n; i++) {
6692     /* 0: loadw */
6693     var35 = ptr5[i];
6694     /* 1: swapw */
6695     var39.i = ORC_SWAP_W (var35.i);
6696     /* 2: mergewl */
6697     {
6698       orc_union32 _dest;
6699       _dest.x2[0] = var39.i;
6700       _dest.x2[1] = var39.i;
6701       var40.i = _dest.i;
6702     }
6703     /* 4: loadw */
6704     var37 = ptr4[i];
6705     /* 5: mergebw */
6706     {
6707       orc_union16 _dest;
6708       _dest.x2[0] = var36.x2[0];
6709       _dest.x2[1] = var37.x2[0];
6710       var41.x2[0] = _dest.i;
6711     }
6712     {
6713       orc_union16 _dest;
6714       _dest.x2[0] = var36.x2[1];
6715       _dest.x2[1] = var37.x2[1];
6716       var41.x2[1] = _dest.i;
6717     }
6718     /* 6: mergewl */
6719     {
6720       orc_union32 _dest;
6721       _dest.x2[0] = var41.x2[0];
6722       _dest.x2[1] = var40.x2[0];
6723       var38.x2[0] = _dest.i;
6724     }
6725     {
6726       orc_union32 _dest;
6727       _dest.x2[0] = var41.x2[1];
6728       _dest.x2[1] = var40.x2[1];
6729       var38.x2[1] = _dest.i;
6730     }
6731     /* 7: storeq */
6732     ptr0[i] = var38;
6733   }
6734 
6735 }
6736 
6737 void
video_orc_unpack_NV21(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,int n)6738 video_orc_unpack_NV21 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
6739     const guint8 * ORC_RESTRICT s2, int n)
6740 {
6741   OrcExecutor _ex, *ex = &_ex;
6742   static volatile int p_inited = 0;
6743   static OrcCode *c = 0;
6744   void (*func) (OrcExecutor *);
6745 
6746   if (!p_inited) {
6747     orc_once_mutex_lock ();
6748     if (!p_inited) {
6749       OrcProgram *p;
6750 
6751 #if 1
6752       static const orc_uint8 bc[] = {
6753         1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
6754         97, 99, 107, 95, 78, 86, 50, 49, 11, 8, 8, 12, 2, 2, 12, 2,
6755         2, 14, 1, 255, 0, 0, 0, 20, 2, 20, 4, 20, 4, 183, 32, 5,
6756         195, 34, 32, 32, 21, 1, 196, 33, 16, 4, 21, 1, 195, 0, 33, 34,
6757         2, 0,
6758       };
6759       p = orc_program_new_from_static_bytecode (bc);
6760       orc_program_set_backup_function (p, _backup_video_orc_unpack_NV21);
6761 #else
6762       p = orc_program_new ();
6763       orc_program_set_name (p, "video_orc_unpack_NV21");
6764       orc_program_set_backup_function (p, _backup_video_orc_unpack_NV21);
6765       orc_program_add_destination (p, 8, "d1");
6766       orc_program_add_source (p, 2, "s1");
6767       orc_program_add_source (p, 2, "s2");
6768       orc_program_add_constant (p, 1, 0x000000ff, "c1");
6769       orc_program_add_temporary (p, 2, "t1");
6770       orc_program_add_temporary (p, 4, "t2");
6771       orc_program_add_temporary (p, 4, "t3");
6772 
6773       orc_program_append_2 (p, "swapw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_D1,
6774           ORC_VAR_D1);
6775       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1,
6776           ORC_VAR_D1);
6777       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1,
6778           ORC_VAR_D1);
6779       orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T3,
6780           ORC_VAR_D1);
6781 #endif
6782 
6783       orc_program_compile (p);
6784       c = orc_program_take_code (p);
6785       orc_program_free (p);
6786     }
6787     p_inited = TRUE;
6788     orc_once_mutex_unlock ();
6789   }
6790   ex->arrays[ORC_VAR_A2] = c;
6791   ex->program = 0;
6792 
6793   ex->n = n;
6794   ex->arrays[ORC_VAR_D1] = d1;
6795   ex->arrays[ORC_VAR_S1] = (void *) s1;
6796   ex->arrays[ORC_VAR_S2] = (void *) s2;
6797 
6798   func = c->exec;
6799   func (ex);
6800 }
6801 #endif
6802 
6803 
6804 /* video_orc_pack_NV21 */
6805 #ifdef DISABLE_ORC
6806 void
video_orc_pack_NV21(guint8 * ORC_RESTRICT d1,guint8 * ORC_RESTRICT d2,const guint8 * ORC_RESTRICT s1,int n)6807 video_orc_pack_NV21 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
6808     const guint8 * ORC_RESTRICT s1, int n)
6809 {
6810   int i;
6811   orc_union16 *ORC_RESTRICT ptr0;
6812   orc_union16 *ORC_RESTRICT ptr1;
6813   const orc_union64 *ORC_RESTRICT ptr4;
6814   orc_union64 var35;
6815   orc_union16 var36;
6816   orc_union16 var37;
6817   orc_union32 var38;
6818   orc_union32 var39;
6819   orc_union16 var40;
6820 
6821   ptr0 = (orc_union16 *) d1;
6822   ptr1 = (orc_union16 *) d2;
6823   ptr4 = (orc_union64 *) s1;
6824 
6825 
6826   for (i = 0; i < n; i++) {
6827     /* 0: loadq */
6828     var35 = ptr4[i];
6829     /* 1: splitlw */
6830     {
6831       orc_union32 _src;
6832       _src.i = var35.x2[0];
6833       var38.x2[0] = _src.x2[1];
6834       var39.x2[0] = _src.x2[0];
6835     }
6836     {
6837       orc_union32 _src;
6838       _src.i = var35.x2[1];
6839       var38.x2[1] = _src.x2[1];
6840       var39.x2[1] = _src.x2[0];
6841     }
6842     /* 2: select1wb */
6843     {
6844       orc_union16 _src;
6845       _src.i = var39.x2[0];
6846       var36.x2[0] = _src.x2[1];
6847     }
6848     {
6849       orc_union16 _src;
6850       _src.i = var39.x2[1];
6851       var36.x2[1] = _src.x2[1];
6852     }
6853     /* 3: storew */
6854     ptr0[i] = var36;
6855     /* 4: select0lw */
6856     {
6857       orc_union32 _src;
6858       _src.i = var38.i;
6859       var40.i = _src.x2[0];
6860     }
6861     /* 5: swapw */
6862     var37.i = ORC_SWAP_W (var40.i);
6863     /* 6: storew */
6864     ptr1[i] = var37;
6865   }
6866 
6867 }
6868 
6869 #else
6870 static void
_backup_video_orc_pack_NV21(OrcExecutor * ORC_RESTRICT ex)6871 _backup_video_orc_pack_NV21 (OrcExecutor * ORC_RESTRICT ex)
6872 {
6873   int i;
6874   int n = ex->n;
6875   orc_union16 *ORC_RESTRICT ptr0;
6876   orc_union16 *ORC_RESTRICT ptr1;
6877   const orc_union64 *ORC_RESTRICT ptr4;
6878   orc_union64 var35;
6879   orc_union16 var36;
6880   orc_union16 var37;
6881   orc_union32 var38;
6882   orc_union32 var39;
6883   orc_union16 var40;
6884 
6885   ptr0 = (orc_union16 *) ex->arrays[0];
6886   ptr1 = (orc_union16 *) ex->arrays[1];
6887   ptr4 = (orc_union64 *) ex->arrays[4];
6888 
6889 
6890   for (i = 0; i < n; i++) {
6891     /* 0: loadq */
6892     var35 = ptr4[i];
6893     /* 1: splitlw */
6894     {
6895       orc_union32 _src;
6896       _src.i = var35.x2[0];
6897       var38.x2[0] = _src.x2[1];
6898       var39.x2[0] = _src.x2[0];
6899     }
6900     {
6901       orc_union32 _src;
6902       _src.i = var35.x2[1];
6903       var38.x2[1] = _src.x2[1];
6904       var39.x2[1] = _src.x2[0];
6905     }
6906     /* 2: select1wb */
6907     {
6908       orc_union16 _src;
6909       _src.i = var39.x2[0];
6910       var36.x2[0] = _src.x2[1];
6911     }
6912     {
6913       orc_union16 _src;
6914       _src.i = var39.x2[1];
6915       var36.x2[1] = _src.x2[1];
6916     }
6917     /* 3: storew */
6918     ptr0[i] = var36;
6919     /* 4: select0lw */
6920     {
6921       orc_union32 _src;
6922       _src.i = var38.i;
6923       var40.i = _src.x2[0];
6924     }
6925     /* 5: swapw */
6926     var37.i = ORC_SWAP_W (var40.i);
6927     /* 6: storew */
6928     ptr1[i] = var37;
6929   }
6930 
6931 }
6932 
6933 void
video_orc_pack_NV21(guint8 * ORC_RESTRICT d1,guint8 * ORC_RESTRICT d2,const guint8 * ORC_RESTRICT s1,int n)6934 video_orc_pack_NV21 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
6935     const guint8 * ORC_RESTRICT s1, int n)
6936 {
6937   OrcExecutor _ex, *ex = &_ex;
6938   static volatile int p_inited = 0;
6939   static OrcCode *c = 0;
6940   void (*func) (OrcExecutor *);
6941 
6942   if (!p_inited) {
6943     orc_once_mutex_lock ();
6944     if (!p_inited) {
6945       OrcProgram *p;
6946 
6947 #if 1
6948       static const orc_uint8 bc[] = {
6949         1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
6950         107, 95, 78, 86, 50, 49, 11, 2, 2, 11, 2, 2, 12, 8, 8, 20,
6951         4, 20, 4, 20, 2, 21, 1, 198, 33, 32, 4, 21, 1, 189, 0, 32,
6952         190, 34, 33, 183, 1, 34, 2, 0,
6953       };
6954       p = orc_program_new_from_static_bytecode (bc);
6955       orc_program_set_backup_function (p, _backup_video_orc_pack_NV21);
6956 #else
6957       p = orc_program_new ();
6958       orc_program_set_name (p, "video_orc_pack_NV21");
6959       orc_program_set_backup_function (p, _backup_video_orc_pack_NV21);
6960       orc_program_add_destination (p, 2, "d1");
6961       orc_program_add_destination (p, 2, "d2");
6962       orc_program_add_source (p, 8, "s1");
6963       orc_program_add_temporary (p, 4, "t1");
6964       orc_program_add_temporary (p, 4, "t2");
6965       orc_program_add_temporary (p, 2, "t3");
6966 
6967       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
6968           ORC_VAR_D1);
6969       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
6970           ORC_VAR_D1, ORC_VAR_D1);
6971       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T3, ORC_VAR_T2,
6972           ORC_VAR_D1, ORC_VAR_D1);
6973       orc_program_append_2 (p, "swapw", 0, ORC_VAR_D2, ORC_VAR_T3, ORC_VAR_D1,
6974           ORC_VAR_D1);
6975 #endif
6976 
6977       orc_program_compile (p);
6978       c = orc_program_take_code (p);
6979       orc_program_free (p);
6980     }
6981     p_inited = TRUE;
6982     orc_once_mutex_unlock ();
6983   }
6984   ex->arrays[ORC_VAR_A2] = c;
6985   ex->program = 0;
6986 
6987   ex->n = n;
6988   ex->arrays[ORC_VAR_D1] = d1;
6989   ex->arrays[ORC_VAR_D2] = d2;
6990   ex->arrays[ORC_VAR_S1] = (void *) s1;
6991 
6992   func = c->exec;
6993   func (ex);
6994 }
6995 #endif
6996 
6997 
6998 /* video_orc_unpack_NV24 */
6999 #ifdef DISABLE_ORC
7000 void
video_orc_unpack_NV24(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,int n)7001 video_orc_unpack_NV24 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
7002     const guint8 * ORC_RESTRICT s2, int n)
7003 {
7004   int i;
7005   orc_union32 *ORC_RESTRICT ptr0;
7006   const orc_int8 *ORC_RESTRICT ptr4;
7007   const orc_union16 *ORC_RESTRICT ptr5;
7008 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
7009   volatile orc_int8 var33;
7010 #else
7011   orc_int8 var33;
7012 #endif
7013   orc_int8 var34;
7014   orc_union16 var35;
7015   orc_union32 var36;
7016   orc_union16 var37;
7017 
7018   ptr0 = (orc_union32 *) d1;
7019   ptr4 = (orc_int8 *) s1;
7020   ptr5 = (orc_union16 *) s2;
7021 
7022   /* 0: loadpb */
7023   var33 = 0x000000ff;           /* 255 or 1.25987e-321f */
7024 
7025   for (i = 0; i < n; i++) {
7026     /* 1: loadb */
7027     var34 = ptr4[i];
7028     /* 2: mergebw */
7029     {
7030       orc_union16 _dest;
7031       _dest.x2[0] = var33;
7032       _dest.x2[1] = var34;
7033       var37.i = _dest.i;
7034     }
7035     /* 3: loadw */
7036     var35 = ptr5[i];
7037     /* 4: mergewl */
7038     {
7039       orc_union32 _dest;
7040       _dest.x2[0] = var37.i;
7041       _dest.x2[1] = var35.i;
7042       var36.i = _dest.i;
7043     }
7044     /* 5: storel */
7045     ptr0[i] = var36;
7046   }
7047 
7048 }
7049 
7050 #else
7051 static void
_backup_video_orc_unpack_NV24(OrcExecutor * ORC_RESTRICT ex)7052 _backup_video_orc_unpack_NV24 (OrcExecutor * ORC_RESTRICT ex)
7053 {
7054   int i;
7055   int n = ex->n;
7056   orc_union32 *ORC_RESTRICT ptr0;
7057   const orc_int8 *ORC_RESTRICT ptr4;
7058   const orc_union16 *ORC_RESTRICT ptr5;
7059 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
7060   volatile orc_int8 var33;
7061 #else
7062   orc_int8 var33;
7063 #endif
7064   orc_int8 var34;
7065   orc_union16 var35;
7066   orc_union32 var36;
7067   orc_union16 var37;
7068 
7069   ptr0 = (orc_union32 *) ex->arrays[0];
7070   ptr4 = (orc_int8 *) ex->arrays[4];
7071   ptr5 = (orc_union16 *) ex->arrays[5];
7072 
7073   /* 0: loadpb */
7074   var33 = 0x000000ff;           /* 255 or 1.25987e-321f */
7075 
7076   for (i = 0; i < n; i++) {
7077     /* 1: loadb */
7078     var34 = ptr4[i];
7079     /* 2: mergebw */
7080     {
7081       orc_union16 _dest;
7082       _dest.x2[0] = var33;
7083       _dest.x2[1] = var34;
7084       var37.i = _dest.i;
7085     }
7086     /* 3: loadw */
7087     var35 = ptr5[i];
7088     /* 4: mergewl */
7089     {
7090       orc_union32 _dest;
7091       _dest.x2[0] = var37.i;
7092       _dest.x2[1] = var35.i;
7093       var36.i = _dest.i;
7094     }
7095     /* 5: storel */
7096     ptr0[i] = var36;
7097   }
7098 
7099 }
7100 
7101 void
video_orc_unpack_NV24(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,int n)7102 video_orc_unpack_NV24 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
7103     const guint8 * ORC_RESTRICT s2, int n)
7104 {
7105   OrcExecutor _ex, *ex = &_ex;
7106   static volatile int p_inited = 0;
7107   static OrcCode *c = 0;
7108   void (*func) (OrcExecutor *);
7109 
7110   if (!p_inited) {
7111     orc_once_mutex_lock ();
7112     if (!p_inited) {
7113       OrcProgram *p;
7114 
7115 #if 1
7116       static const orc_uint8 bc[] = {
7117         1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
7118         97, 99, 107, 95, 78, 86, 50, 52, 11, 4, 4, 12, 1, 1, 12, 2,
7119         2, 14, 1, 255, 0, 0, 0, 20, 2, 196, 32, 16, 4, 195, 0, 32,
7120         5, 2, 0,
7121       };
7122       p = orc_program_new_from_static_bytecode (bc);
7123       orc_program_set_backup_function (p, _backup_video_orc_unpack_NV24);
7124 #else
7125       p = orc_program_new ();
7126       orc_program_set_name (p, "video_orc_unpack_NV24");
7127       orc_program_set_backup_function (p, _backup_video_orc_unpack_NV24);
7128       orc_program_add_destination (p, 4, "d1");
7129       orc_program_add_source (p, 1, "s1");
7130       orc_program_add_source (p, 2, "s2");
7131       orc_program_add_constant (p, 1, 0x000000ff, "c1");
7132       orc_program_add_temporary (p, 2, "t1");
7133 
7134       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_S1,
7135           ORC_VAR_D1);
7136       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S2,
7137           ORC_VAR_D1);
7138 #endif
7139 
7140       orc_program_compile (p);
7141       c = orc_program_take_code (p);
7142       orc_program_free (p);
7143     }
7144     p_inited = TRUE;
7145     orc_once_mutex_unlock ();
7146   }
7147   ex->arrays[ORC_VAR_A2] = c;
7148   ex->program = 0;
7149 
7150   ex->n = n;
7151   ex->arrays[ORC_VAR_D1] = d1;
7152   ex->arrays[ORC_VAR_S1] = (void *) s1;
7153   ex->arrays[ORC_VAR_S2] = (void *) s2;
7154 
7155   func = c->exec;
7156   func (ex);
7157 }
7158 #endif
7159 
7160 
7161 /* video_orc_pack_NV24 */
7162 #ifdef DISABLE_ORC
7163 void
video_orc_pack_NV24(guint8 * ORC_RESTRICT d1,guint8 * ORC_RESTRICT d2,const guint8 * ORC_RESTRICT s1,int n)7164 video_orc_pack_NV24 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
7165     const guint8 * ORC_RESTRICT s1, int n)
7166 {
7167   int i;
7168   orc_int8 *ORC_RESTRICT ptr0;
7169   orc_union16 *ORC_RESTRICT ptr1;
7170   const orc_union32 *ORC_RESTRICT ptr4;
7171   orc_union32 var33;
7172   orc_union16 var34;
7173   orc_int8 var35;
7174   orc_union16 var36;
7175 
7176   ptr0 = (orc_int8 *) d1;
7177   ptr1 = (orc_union16 *) d2;
7178   ptr4 = (orc_union32 *) s1;
7179 
7180 
7181   for (i = 0; i < n; i++) {
7182     /* 0: loadl */
7183     var33 = ptr4[i];
7184     /* 1: splitlw */
7185     {
7186       orc_union32 _src;
7187       _src.i = var33.i;
7188       var34.i = _src.x2[1];
7189       var36.i = _src.x2[0];
7190     }
7191     /* 2: storew */
7192     ptr1[i] = var34;
7193     /* 3: select1wb */
7194     {
7195       orc_union16 _src;
7196       _src.i = var36.i;
7197       var35 = _src.x2[1];
7198     }
7199     /* 4: storeb */
7200     ptr0[i] = var35;
7201   }
7202 
7203 }
7204 
7205 #else
7206 static void
_backup_video_orc_pack_NV24(OrcExecutor * ORC_RESTRICT ex)7207 _backup_video_orc_pack_NV24 (OrcExecutor * ORC_RESTRICT ex)
7208 {
7209   int i;
7210   int n = ex->n;
7211   orc_int8 *ORC_RESTRICT ptr0;
7212   orc_union16 *ORC_RESTRICT ptr1;
7213   const orc_union32 *ORC_RESTRICT ptr4;
7214   orc_union32 var33;
7215   orc_union16 var34;
7216   orc_int8 var35;
7217   orc_union16 var36;
7218 
7219   ptr0 = (orc_int8 *) ex->arrays[0];
7220   ptr1 = (orc_union16 *) ex->arrays[1];
7221   ptr4 = (orc_union32 *) ex->arrays[4];
7222 
7223 
7224   for (i = 0; i < n; i++) {
7225     /* 0: loadl */
7226     var33 = ptr4[i];
7227     /* 1: splitlw */
7228     {
7229       orc_union32 _src;
7230       _src.i = var33.i;
7231       var34.i = _src.x2[1];
7232       var36.i = _src.x2[0];
7233     }
7234     /* 2: storew */
7235     ptr1[i] = var34;
7236     /* 3: select1wb */
7237     {
7238       orc_union16 _src;
7239       _src.i = var36.i;
7240       var35 = _src.x2[1];
7241     }
7242     /* 4: storeb */
7243     ptr0[i] = var35;
7244   }
7245 
7246 }
7247 
7248 void
video_orc_pack_NV24(guint8 * ORC_RESTRICT d1,guint8 * ORC_RESTRICT d2,const guint8 * ORC_RESTRICT s1,int n)7249 video_orc_pack_NV24 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
7250     const guint8 * ORC_RESTRICT s1, int n)
7251 {
7252   OrcExecutor _ex, *ex = &_ex;
7253   static volatile int p_inited = 0;
7254   static OrcCode *c = 0;
7255   void (*func) (OrcExecutor *);
7256 
7257   if (!p_inited) {
7258     orc_once_mutex_lock ();
7259     if (!p_inited) {
7260       OrcProgram *p;
7261 
7262 #if 1
7263       static const orc_uint8 bc[] = {
7264         1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
7265         107, 95, 78, 86, 50, 52, 11, 1, 1, 11, 2, 2, 12, 4, 4, 20,
7266         2, 198, 1, 32, 4, 189, 0, 32, 2, 0,
7267       };
7268       p = orc_program_new_from_static_bytecode (bc);
7269       orc_program_set_backup_function (p, _backup_video_orc_pack_NV24);
7270 #else
7271       p = orc_program_new ();
7272       orc_program_set_name (p, "video_orc_pack_NV24");
7273       orc_program_set_backup_function (p, _backup_video_orc_pack_NV24);
7274       orc_program_add_destination (p, 1, "d1");
7275       orc_program_add_destination (p, 2, "d2");
7276       orc_program_add_source (p, 4, "s1");
7277       orc_program_add_temporary (p, 2, "t1");
7278 
7279       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_D2, ORC_VAR_T1, ORC_VAR_S1,
7280           ORC_VAR_D1);
7281       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1,
7282           ORC_VAR_D1, ORC_VAR_D1);
7283 #endif
7284 
7285       orc_program_compile (p);
7286       c = orc_program_take_code (p);
7287       orc_program_free (p);
7288     }
7289     p_inited = TRUE;
7290     orc_once_mutex_unlock ();
7291   }
7292   ex->arrays[ORC_VAR_A2] = c;
7293   ex->program = 0;
7294 
7295   ex->n = n;
7296   ex->arrays[ORC_VAR_D1] = d1;
7297   ex->arrays[ORC_VAR_D2] = d2;
7298   ex->arrays[ORC_VAR_S1] = (void *) s1;
7299 
7300   func = c->exec;
7301   func (ex);
7302 }
7303 #endif
7304 
7305 
7306 /* video_orc_unpack_A420 */
7307 #ifdef DISABLE_ORC
7308 void
video_orc_unpack_A420(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,const guint8 * ORC_RESTRICT s3,const guint8 * ORC_RESTRICT s4,int n)7309 video_orc_unpack_A420 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
7310     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3,
7311     const guint8 * ORC_RESTRICT s4, int n)
7312 {
7313   int i;
7314   orc_union32 *ORC_RESTRICT ptr0;
7315   const orc_int8 *ORC_RESTRICT ptr4;
7316   const orc_int8 *ORC_RESTRICT ptr5;
7317   const orc_int8 *ORC_RESTRICT ptr6;
7318   const orc_int8 *ORC_RESTRICT ptr7;
7319   orc_int8 var36;
7320   orc_int8 var37;
7321   orc_union32 var38;
7322   orc_int8 var39;
7323   orc_int8 var40;
7324   orc_union16 var41;
7325   orc_union16 var42;
7326 
7327   ptr0 = (orc_union32 *) d1;
7328   ptr4 = (orc_int8 *) s1;
7329   ptr5 = (orc_int8 *) s2;
7330   ptr6 = (orc_int8 *) s3;
7331   ptr7 = (orc_int8 *) s4;
7332 
7333 
7334   for (i = 0; i < n; i++) {
7335     /* 0: loadupdb */
7336     var39 = ptr5[i >> 1];
7337     /* 1: loadupdb */
7338     var40 = ptr6[i >> 1];
7339     /* 2: mergebw */
7340     {
7341       orc_union16 _dest;
7342       _dest.x2[0] = var39;
7343       _dest.x2[1] = var40;
7344       var41.i = _dest.i;
7345     }
7346     /* 3: loadb */
7347     var36 = ptr7[i];
7348     /* 4: loadb */
7349     var37 = ptr4[i];
7350     /* 5: mergebw */
7351     {
7352       orc_union16 _dest;
7353       _dest.x2[0] = var36;
7354       _dest.x2[1] = var37;
7355       var42.i = _dest.i;
7356     }
7357     /* 6: mergewl */
7358     {
7359       orc_union32 _dest;
7360       _dest.x2[0] = var42.i;
7361       _dest.x2[1] = var41.i;
7362       var38.i = _dest.i;
7363     }
7364     /* 7: storel */
7365     ptr0[i] = var38;
7366   }
7367 
7368 }
7369 
7370 #else
7371 static void
_backup_video_orc_unpack_A420(OrcExecutor * ORC_RESTRICT ex)7372 _backup_video_orc_unpack_A420 (OrcExecutor * ORC_RESTRICT ex)
7373 {
7374   int i;
7375   int n = ex->n;
7376   orc_union32 *ORC_RESTRICT ptr0;
7377   const orc_int8 *ORC_RESTRICT ptr4;
7378   const orc_int8 *ORC_RESTRICT ptr5;
7379   const orc_int8 *ORC_RESTRICT ptr6;
7380   const orc_int8 *ORC_RESTRICT ptr7;
7381   orc_int8 var36;
7382   orc_int8 var37;
7383   orc_union32 var38;
7384   orc_int8 var39;
7385   orc_int8 var40;
7386   orc_union16 var41;
7387   orc_union16 var42;
7388 
7389   ptr0 = (orc_union32 *) ex->arrays[0];
7390   ptr4 = (orc_int8 *) ex->arrays[4];
7391   ptr5 = (orc_int8 *) ex->arrays[5];
7392   ptr6 = (orc_int8 *) ex->arrays[6];
7393   ptr7 = (orc_int8 *) ex->arrays[7];
7394 
7395 
7396   for (i = 0; i < n; i++) {
7397     /* 0: loadupdb */
7398     var39 = ptr5[i >> 1];
7399     /* 1: loadupdb */
7400     var40 = ptr6[i >> 1];
7401     /* 2: mergebw */
7402     {
7403       orc_union16 _dest;
7404       _dest.x2[0] = var39;
7405       _dest.x2[1] = var40;
7406       var41.i = _dest.i;
7407     }
7408     /* 3: loadb */
7409     var36 = ptr7[i];
7410     /* 4: loadb */
7411     var37 = ptr4[i];
7412     /* 5: mergebw */
7413     {
7414       orc_union16 _dest;
7415       _dest.x2[0] = var36;
7416       _dest.x2[1] = var37;
7417       var42.i = _dest.i;
7418     }
7419     /* 6: mergewl */
7420     {
7421       orc_union32 _dest;
7422       _dest.x2[0] = var42.i;
7423       _dest.x2[1] = var41.i;
7424       var38.i = _dest.i;
7425     }
7426     /* 7: storel */
7427     ptr0[i] = var38;
7428   }
7429 
7430 }
7431 
7432 void
video_orc_unpack_A420(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,const guint8 * ORC_RESTRICT s3,const guint8 * ORC_RESTRICT s4,int n)7433 video_orc_unpack_A420 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
7434     const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3,
7435     const guint8 * ORC_RESTRICT s4, int n)
7436 {
7437   OrcExecutor _ex, *ex = &_ex;
7438   static volatile int p_inited = 0;
7439   static OrcCode *c = 0;
7440   void (*func) (OrcExecutor *);
7441 
7442   if (!p_inited) {
7443     orc_once_mutex_lock ();
7444     if (!p_inited) {
7445       OrcProgram *p;
7446 
7447 #if 1
7448       static const orc_uint8 bc[] = {
7449         1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
7450         97, 99, 107, 95, 65, 52, 50, 48, 11, 4, 4, 12, 1, 1, 12, 1,
7451         1, 12, 1, 1, 12, 1, 1, 20, 2, 20, 2, 20, 1, 20, 1, 45,
7452         34, 5, 45, 35, 6, 196, 32, 34, 35, 196, 33, 7, 4, 195, 0, 33,
7453         32, 2, 0,
7454       };
7455       p = orc_program_new_from_static_bytecode (bc);
7456       orc_program_set_backup_function (p, _backup_video_orc_unpack_A420);
7457 #else
7458       p = orc_program_new ();
7459       orc_program_set_name (p, "video_orc_unpack_A420");
7460       orc_program_set_backup_function (p, _backup_video_orc_unpack_A420);
7461       orc_program_add_destination (p, 4, "d1");
7462       orc_program_add_source (p, 1, "s1");
7463       orc_program_add_source (p, 1, "s2");
7464       orc_program_add_source (p, 1, "s3");
7465       orc_program_add_source (p, 1, "s4");
7466       orc_program_add_temporary (p, 2, "t1");
7467       orc_program_add_temporary (p, 2, "t2");
7468       orc_program_add_temporary (p, 1, "t3");
7469       orc_program_add_temporary (p, 1, "t4");
7470 
7471       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T3, ORC_VAR_S2,
7472           ORC_VAR_D1, ORC_VAR_D1);
7473       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T4, ORC_VAR_S3,
7474           ORC_VAR_D1, ORC_VAR_D1);
7475       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4,
7476           ORC_VAR_D1);
7477       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_S4, ORC_VAR_S1,
7478           ORC_VAR_D1);
7479       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
7480           ORC_VAR_D1);
7481 #endif
7482 
7483       orc_program_compile (p);
7484       c = orc_program_take_code (p);
7485       orc_program_free (p);
7486     }
7487     p_inited = TRUE;
7488     orc_once_mutex_unlock ();
7489   }
7490   ex->arrays[ORC_VAR_A2] = c;
7491   ex->program = 0;
7492 
7493   ex->n = n;
7494   ex->arrays[ORC_VAR_D1] = d1;
7495   ex->arrays[ORC_VAR_S1] = (void *) s1;
7496   ex->arrays[ORC_VAR_S2] = (void *) s2;
7497   ex->arrays[ORC_VAR_S3] = (void *) s3;
7498   ex->arrays[ORC_VAR_S4] = (void *) s4;
7499 
7500   func = c->exec;
7501   func (ex);
7502 }
7503 #endif
7504 
7505 
7506 /* video_orc_pack_A420 */
7507 #ifdef DISABLE_ORC
7508 void
video_orc_pack_A420(guint8 * ORC_RESTRICT d1,guint8 * ORC_RESTRICT d2,guint8 * ORC_RESTRICT d3,guint8 * ORC_RESTRICT d4,const guint8 * ORC_RESTRICT s1,int n)7509 video_orc_pack_A420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
7510     guint8 * ORC_RESTRICT d3, guint8 * ORC_RESTRICT d4,
7511     const guint8 * ORC_RESTRICT s1, int n)
7512 {
7513   int i;
7514   orc_union16 *ORC_RESTRICT ptr0;
7515   orc_int8 *ORC_RESTRICT ptr1;
7516   orc_int8 *ORC_RESTRICT ptr2;
7517   orc_union16 *ORC_RESTRICT ptr3;
7518   const orc_union64 *ORC_RESTRICT ptr4;
7519   orc_union64 var36;
7520   orc_union16 var37;
7521   orc_union16 var38;
7522   orc_int8 var39;
7523   orc_int8 var40;
7524   orc_union32 var41;
7525   orc_union32 var42;
7526   orc_union16 var43;
7527   orc_union16 var44;
7528 
7529   ptr0 = (orc_union16 *) d1;
7530   ptr1 = (orc_int8 *) d2;
7531   ptr2 = (orc_int8 *) d3;
7532   ptr3 = (orc_union16 *) d4;
7533   ptr4 = (orc_union64 *) s1;
7534 
7535 
7536   for (i = 0; i < n; i++) {
7537     /* 0: loadq */
7538     var36 = ptr4[i];
7539     /* 1: splitlw */
7540     {
7541       orc_union32 _src;
7542       _src.i = var36.x2[0];
7543       var41.x2[0] = _src.x2[1];
7544       var42.x2[0] = _src.x2[0];
7545     }
7546     {
7547       orc_union32 _src;
7548       _src.i = var36.x2[1];
7549       var41.x2[1] = _src.x2[1];
7550       var42.x2[1] = _src.x2[0];
7551     }
7552     /* 2: select1wb */
7553     {
7554       orc_union16 _src;
7555       _src.i = var42.x2[0];
7556       var37.x2[0] = _src.x2[1];
7557     }
7558     {
7559       orc_union16 _src;
7560       _src.i = var42.x2[1];
7561       var37.x2[1] = _src.x2[1];
7562     }
7563     /* 3: storew */
7564     ptr0[i] = var37;
7565     /* 4: select0wb */
7566     {
7567       orc_union16 _src;
7568       _src.i = var42.x2[0];
7569       var38.x2[0] = _src.x2[0];
7570     }
7571     {
7572       orc_union16 _src;
7573       _src.i = var42.x2[1];
7574       var38.x2[1] = _src.x2[0];
7575     }
7576     /* 5: storew */
7577     ptr3[i] = var38;
7578     /* 6: splitwb */
7579     {
7580       orc_union16 _src;
7581       _src.i = var41.x2[0];
7582       var43.x2[0] = _src.x2[1];
7583       var44.x2[0] = _src.x2[0];
7584     }
7585     {
7586       orc_union16 _src;
7587       _src.i = var41.x2[1];
7588       var43.x2[1] = _src.x2[1];
7589       var44.x2[1] = _src.x2[0];
7590     }
7591     /* 7: select0wb */
7592     {
7593       orc_union16 _src;
7594       _src.i = var44.i;
7595       var39 = _src.x2[0];
7596     }
7597     /* 8: storeb */
7598     ptr1[i] = var39;
7599     /* 9: select0wb */
7600     {
7601       orc_union16 _src;
7602       _src.i = var43.i;
7603       var40 = _src.x2[0];
7604     }
7605     /* 10: storeb */
7606     ptr2[i] = var40;
7607   }
7608 
7609 }
7610 
7611 #else
7612 static void
_backup_video_orc_pack_A420(OrcExecutor * ORC_RESTRICT ex)7613 _backup_video_orc_pack_A420 (OrcExecutor * ORC_RESTRICT ex)
7614 {
7615   int i;
7616   int n = ex->n;
7617   orc_union16 *ORC_RESTRICT ptr0;
7618   orc_int8 *ORC_RESTRICT ptr1;
7619   orc_int8 *ORC_RESTRICT ptr2;
7620   orc_union16 *ORC_RESTRICT ptr3;
7621   const orc_union64 *ORC_RESTRICT ptr4;
7622   orc_union64 var36;
7623   orc_union16 var37;
7624   orc_union16 var38;
7625   orc_int8 var39;
7626   orc_int8 var40;
7627   orc_union32 var41;
7628   orc_union32 var42;
7629   orc_union16 var43;
7630   orc_union16 var44;
7631 
7632   ptr0 = (orc_union16 *) ex->arrays[0];
7633   ptr1 = (orc_int8 *) ex->arrays[1];
7634   ptr2 = (orc_int8 *) ex->arrays[2];
7635   ptr3 = (orc_union16 *) ex->arrays[3];
7636   ptr4 = (orc_union64 *) ex->arrays[4];
7637 
7638 
7639   for (i = 0; i < n; i++) {
7640     /* 0: loadq */
7641     var36 = ptr4[i];
7642     /* 1: splitlw */
7643     {
7644       orc_union32 _src;
7645       _src.i = var36.x2[0];
7646       var41.x2[0] = _src.x2[1];
7647       var42.x2[0] = _src.x2[0];
7648     }
7649     {
7650       orc_union32 _src;
7651       _src.i = var36.x2[1];
7652       var41.x2[1] = _src.x2[1];
7653       var42.x2[1] = _src.x2[0];
7654     }
7655     /* 2: select1wb */
7656     {
7657       orc_union16 _src;
7658       _src.i = var42.x2[0];
7659       var37.x2[0] = _src.x2[1];
7660     }
7661     {
7662       orc_union16 _src;
7663       _src.i = var42.x2[1];
7664       var37.x2[1] = _src.x2[1];
7665     }
7666     /* 3: storew */
7667     ptr0[i] = var37;
7668     /* 4: select0wb */
7669     {
7670       orc_union16 _src;
7671       _src.i = var42.x2[0];
7672       var38.x2[0] = _src.x2[0];
7673     }
7674     {
7675       orc_union16 _src;
7676       _src.i = var42.x2[1];
7677       var38.x2[1] = _src.x2[0];
7678     }
7679     /* 5: storew */
7680     ptr3[i] = var38;
7681     /* 6: splitwb */
7682     {
7683       orc_union16 _src;
7684       _src.i = var41.x2[0];
7685       var43.x2[0] = _src.x2[1];
7686       var44.x2[0] = _src.x2[0];
7687     }
7688     {
7689       orc_union16 _src;
7690       _src.i = var41.x2[1];
7691       var43.x2[1] = _src.x2[1];
7692       var44.x2[1] = _src.x2[0];
7693     }
7694     /* 7: select0wb */
7695     {
7696       orc_union16 _src;
7697       _src.i = var44.i;
7698       var39 = _src.x2[0];
7699     }
7700     /* 8: storeb */
7701     ptr1[i] = var39;
7702     /* 9: select0wb */
7703     {
7704       orc_union16 _src;
7705       _src.i = var43.i;
7706       var40 = _src.x2[0];
7707     }
7708     /* 10: storeb */
7709     ptr2[i] = var40;
7710   }
7711 
7712 }
7713 
7714 void
video_orc_pack_A420(guint8 * ORC_RESTRICT d1,guint8 * ORC_RESTRICT d2,guint8 * ORC_RESTRICT d3,guint8 * ORC_RESTRICT d4,const guint8 * ORC_RESTRICT s1,int n)7715 video_orc_pack_A420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
7716     guint8 * ORC_RESTRICT d3, guint8 * ORC_RESTRICT d4,
7717     const guint8 * ORC_RESTRICT s1, int n)
7718 {
7719   OrcExecutor _ex, *ex = &_ex;
7720   static volatile int p_inited = 0;
7721   static OrcCode *c = 0;
7722   void (*func) (OrcExecutor *);
7723 
7724   if (!p_inited) {
7725     orc_once_mutex_lock ();
7726     if (!p_inited) {
7727       OrcProgram *p;
7728 
7729 #if 1
7730       static const orc_uint8 bc[] = {
7731         1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
7732         107, 95, 65, 52, 50, 48, 11, 2, 2, 11, 1, 1, 11, 1, 1, 11,
7733         2, 2, 12, 8, 8, 20, 4, 20, 4, 20, 2, 20, 2, 21, 1, 198,
7734         33, 32, 4, 21, 1, 189, 0, 32, 21, 1, 188, 3, 32, 21, 1, 199,
7735         35, 34, 33, 188, 1, 34, 188, 2, 35, 2, 0,
7736       };
7737       p = orc_program_new_from_static_bytecode (bc);
7738       orc_program_set_backup_function (p, _backup_video_orc_pack_A420);
7739 #else
7740       p = orc_program_new ();
7741       orc_program_set_name (p, "video_orc_pack_A420");
7742       orc_program_set_backup_function (p, _backup_video_orc_pack_A420);
7743       orc_program_add_destination (p, 2, "d1");
7744       orc_program_add_destination (p, 1, "d2");
7745       orc_program_add_destination (p, 1, "d3");
7746       orc_program_add_destination (p, 2, "d4");
7747       orc_program_add_source (p, 8, "s1");
7748       orc_program_add_temporary (p, 4, "t1");
7749       orc_program_add_temporary (p, 4, "t2");
7750       orc_program_add_temporary (p, 2, "t3");
7751       orc_program_add_temporary (p, 2, "t4");
7752 
7753       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
7754           ORC_VAR_D1);
7755       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
7756           ORC_VAR_D1, ORC_VAR_D1);
7757       orc_program_append_2 (p, "select0wb", 1, ORC_VAR_D4, ORC_VAR_T1,
7758           ORC_VAR_D1, ORC_VAR_D1);
7759       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T2,
7760           ORC_VAR_D1);
7761       orc_program_append_2 (p, "select0wb", 0, ORC_VAR_D2, ORC_VAR_T3,
7762           ORC_VAR_D1, ORC_VAR_D1);
7763       orc_program_append_2 (p, "select0wb", 0, ORC_VAR_D3, ORC_VAR_T4,
7764           ORC_VAR_D1, ORC_VAR_D1);
7765 #endif
7766 
7767       orc_program_compile (p);
7768       c = orc_program_take_code (p);
7769       orc_program_free (p);
7770     }
7771     p_inited = TRUE;
7772     orc_once_mutex_unlock ();
7773   }
7774   ex->arrays[ORC_VAR_A2] = c;
7775   ex->program = 0;
7776 
7777   ex->n = n;
7778   ex->arrays[ORC_VAR_D1] = d1;
7779   ex->arrays[ORC_VAR_D2] = d2;
7780   ex->arrays[ORC_VAR_D3] = d3;
7781   ex->arrays[ORC_VAR_D4] = d4;
7782   ex->arrays[ORC_VAR_S1] = (void *) s1;
7783 
7784   func = c->exec;
7785   func (ex);
7786 }
7787 #endif
7788 
7789 
7790 /* video_orc_pack_AY */
7791 #ifdef DISABLE_ORC
7792 void
video_orc_pack_AY(guint8 * ORC_RESTRICT d1,guint8 * ORC_RESTRICT d2,const guint8 * ORC_RESTRICT s1,int n)7793 video_orc_pack_AY (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
7794     const guint8 * ORC_RESTRICT s1, int n)
7795 {
7796   int i;
7797   orc_int8 *ORC_RESTRICT ptr0;
7798   orc_int8 *ORC_RESTRICT ptr1;
7799   const orc_union32 *ORC_RESTRICT ptr4;
7800   orc_union32 var33;
7801   orc_int8 var34;
7802   orc_int8 var35;
7803   orc_union16 var36;
7804 
7805   ptr0 = (orc_int8 *) d1;
7806   ptr1 = (orc_int8 *) d2;
7807   ptr4 = (orc_union32 *) s1;
7808 
7809 
7810   for (i = 0; i < n; i++) {
7811     /* 0: loadl */
7812     var33 = ptr4[i];
7813     /* 1: select0lw */
7814     {
7815       orc_union32 _src;
7816       _src.i = var33.i;
7817       var36.i = _src.x2[0];
7818     }
7819     /* 2: select1wb */
7820     {
7821       orc_union16 _src;
7822       _src.i = var36.i;
7823       var34 = _src.x2[1];
7824     }
7825     /* 3: storeb */
7826     ptr0[i] = var34;
7827     /* 4: select0wb */
7828     {
7829       orc_union16 _src;
7830       _src.i = var36.i;
7831       var35 = _src.x2[0];
7832     }
7833     /* 5: storeb */
7834     ptr1[i] = var35;
7835   }
7836 
7837 }
7838 
7839 #else
7840 static void
_backup_video_orc_pack_AY(OrcExecutor * ORC_RESTRICT ex)7841 _backup_video_orc_pack_AY (OrcExecutor * ORC_RESTRICT ex)
7842 {
7843   int i;
7844   int n = ex->n;
7845   orc_int8 *ORC_RESTRICT ptr0;
7846   orc_int8 *ORC_RESTRICT ptr1;
7847   const orc_union32 *ORC_RESTRICT ptr4;
7848   orc_union32 var33;
7849   orc_int8 var34;
7850   orc_int8 var35;
7851   orc_union16 var36;
7852 
7853   ptr0 = (orc_int8 *) ex->arrays[0];
7854   ptr1 = (orc_int8 *) ex->arrays[1];
7855   ptr4 = (orc_union32 *) ex->arrays[4];
7856 
7857 
7858   for (i = 0; i < n; i++) {
7859     /* 0: loadl */
7860     var33 = ptr4[i];
7861     /* 1: select0lw */
7862     {
7863       orc_union32 _src;
7864       _src.i = var33.i;
7865       var36.i = _src.x2[0];
7866     }
7867     /* 2: select1wb */
7868     {
7869       orc_union16 _src;
7870       _src.i = var36.i;
7871       var34 = _src.x2[1];
7872     }
7873     /* 3: storeb */
7874     ptr0[i] = var34;
7875     /* 4: select0wb */
7876     {
7877       orc_union16 _src;
7878       _src.i = var36.i;
7879       var35 = _src.x2[0];
7880     }
7881     /* 5: storeb */
7882     ptr1[i] = var35;
7883   }
7884 
7885 }
7886 
7887 void
video_orc_pack_AY(guint8 * ORC_RESTRICT d1,guint8 * ORC_RESTRICT d2,const guint8 * ORC_RESTRICT s1,int n)7888 video_orc_pack_AY (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
7889     const guint8 * ORC_RESTRICT s1, int n)
7890 {
7891   OrcExecutor _ex, *ex = &_ex;
7892   static volatile int p_inited = 0;
7893   static OrcCode *c = 0;
7894   void (*func) (OrcExecutor *);
7895 
7896   if (!p_inited) {
7897     orc_once_mutex_lock ();
7898     if (!p_inited) {
7899       OrcProgram *p;
7900 
7901 #if 1
7902       static const orc_uint8 bc[] = {
7903         1, 9, 17, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
7904         107, 95, 65, 89, 11, 1, 1, 11, 1, 1, 12, 4, 4, 20, 2, 190,
7905         32, 4, 189, 0, 32, 188, 1, 32, 2, 0,
7906       };
7907       p = orc_program_new_from_static_bytecode (bc);
7908       orc_program_set_backup_function (p, _backup_video_orc_pack_AY);
7909 #else
7910       p = orc_program_new ();
7911       orc_program_set_name (p, "video_orc_pack_AY");
7912       orc_program_set_backup_function (p, _backup_video_orc_pack_AY);
7913       orc_program_add_destination (p, 1, "d1");
7914       orc_program_add_destination (p, 1, "d2");
7915       orc_program_add_source (p, 4, "s1");
7916       orc_program_add_temporary (p, 2, "t1");
7917 
7918       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_S1,
7919           ORC_VAR_D1, ORC_VAR_D1);
7920       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1,
7921           ORC_VAR_D1, ORC_VAR_D1);
7922       orc_program_append_2 (p, "select0wb", 0, ORC_VAR_D2, ORC_VAR_T1,
7923           ORC_VAR_D1, ORC_VAR_D1);
7924 #endif
7925 
7926       orc_program_compile (p);
7927       c = orc_program_take_code (p);
7928       orc_program_free (p);
7929     }
7930     p_inited = TRUE;
7931     orc_once_mutex_unlock ();
7932   }
7933   ex->arrays[ORC_VAR_A2] = c;
7934   ex->program = 0;
7935 
7936   ex->n = n;
7937   ex->arrays[ORC_VAR_D1] = d1;
7938   ex->arrays[ORC_VAR_D2] = d2;
7939   ex->arrays[ORC_VAR_S1] = (void *) s1;
7940 
7941   func = c->exec;
7942   func (ex);
7943 }
7944 #endif
7945 
7946 
7947 /* video_orc_unpack_VUYA */
7948 #ifdef DISABLE_ORC
7949 void
video_orc_unpack_VUYA(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)7950 video_orc_unpack_VUYA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
7951     int n)
7952 {
7953   int i;
7954   orc_union32 *ORC_RESTRICT ptr0;
7955   const orc_union32 *ORC_RESTRICT ptr4;
7956   orc_union32 var32;
7957   orc_union32 var33;
7958 
7959   ptr0 = (orc_union32 *) d1;
7960   ptr4 = (orc_union32 *) s1;
7961 
7962 
7963   for (i = 0; i < n; i++) {
7964     /* 0: loadl */
7965     var32 = ptr4[i];
7966     /* 1: swapl */
7967     var33.i = ORC_SWAP_L (var32.i);
7968     /* 2: storel */
7969     ptr0[i] = var33;
7970   }
7971 
7972 }
7973 
7974 #else
7975 static void
_backup_video_orc_unpack_VUYA(OrcExecutor * ORC_RESTRICT ex)7976 _backup_video_orc_unpack_VUYA (OrcExecutor * ORC_RESTRICT ex)
7977 {
7978   int i;
7979   int n = ex->n;
7980   orc_union32 *ORC_RESTRICT ptr0;
7981   const orc_union32 *ORC_RESTRICT ptr4;
7982   orc_union32 var32;
7983   orc_union32 var33;
7984 
7985   ptr0 = (orc_union32 *) ex->arrays[0];
7986   ptr4 = (orc_union32 *) ex->arrays[4];
7987 
7988 
7989   for (i = 0; i < n; i++) {
7990     /* 0: loadl */
7991     var32 = ptr4[i];
7992     /* 1: swapl */
7993     var33.i = ORC_SWAP_L (var32.i);
7994     /* 2: storel */
7995     ptr0[i] = var33;
7996   }
7997 
7998 }
7999 
8000 void
video_orc_unpack_VUYA(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)8001 video_orc_unpack_VUYA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
8002     int n)
8003 {
8004   OrcExecutor _ex, *ex = &_ex;
8005   static volatile int p_inited = 0;
8006   static OrcCode *c = 0;
8007   void (*func) (OrcExecutor *);
8008 
8009   if (!p_inited) {
8010     orc_once_mutex_lock ();
8011     if (!p_inited) {
8012       OrcProgram *p;
8013 
8014 #if 1
8015       static const orc_uint8 bc[] = {
8016         1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
8017         97, 99, 107, 95, 86, 85, 89, 65, 11, 4, 4, 12, 4, 4, 184, 0,
8018         4, 2, 0,
8019       };
8020       p = orc_program_new_from_static_bytecode (bc);
8021       orc_program_set_backup_function (p, _backup_video_orc_unpack_VUYA);
8022 #else
8023       p = orc_program_new ();
8024       orc_program_set_name (p, "video_orc_unpack_VUYA");
8025       orc_program_set_backup_function (p, _backup_video_orc_unpack_VUYA);
8026       orc_program_add_destination (p, 4, "d1");
8027       orc_program_add_source (p, 4, "s1");
8028 
8029       orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1,
8030           ORC_VAR_D1);
8031 #endif
8032 
8033       orc_program_compile (p);
8034       c = orc_program_take_code (p);
8035       orc_program_free (p);
8036     }
8037     p_inited = TRUE;
8038     orc_once_mutex_unlock ();
8039   }
8040   ex->arrays[ORC_VAR_A2] = c;
8041   ex->program = 0;
8042 
8043   ex->n = n;
8044   ex->arrays[ORC_VAR_D1] = d1;
8045   ex->arrays[ORC_VAR_S1] = (void *) s1;
8046 
8047   func = c->exec;
8048   func (ex);
8049 }
8050 #endif
8051 
8052 
8053 /* video_orc_pack_VUYA */
8054 #ifdef DISABLE_ORC
8055 void
video_orc_pack_VUYA(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)8056 video_orc_pack_VUYA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
8057     int n)
8058 {
8059   int i;
8060   orc_union32 *ORC_RESTRICT ptr0;
8061   const orc_union32 *ORC_RESTRICT ptr4;
8062   orc_union32 var32;
8063   orc_union32 var33;
8064 
8065   ptr0 = (orc_union32 *) d1;
8066   ptr4 = (orc_union32 *) s1;
8067 
8068 
8069   for (i = 0; i < n; i++) {
8070     /* 0: loadl */
8071     var32 = ptr4[i];
8072     /* 1: swapl */
8073     var33.i = ORC_SWAP_L (var32.i);
8074     /* 2: storel */
8075     ptr0[i] = var33;
8076   }
8077 
8078 }
8079 
8080 #else
8081 static void
_backup_video_orc_pack_VUYA(OrcExecutor * ORC_RESTRICT ex)8082 _backup_video_orc_pack_VUYA (OrcExecutor * ORC_RESTRICT ex)
8083 {
8084   int i;
8085   int n = ex->n;
8086   orc_union32 *ORC_RESTRICT ptr0;
8087   const orc_union32 *ORC_RESTRICT ptr4;
8088   orc_union32 var32;
8089   orc_union32 var33;
8090 
8091   ptr0 = (orc_union32 *) ex->arrays[0];
8092   ptr4 = (orc_union32 *) ex->arrays[4];
8093 
8094 
8095   for (i = 0; i < n; i++) {
8096     /* 0: loadl */
8097     var32 = ptr4[i];
8098     /* 1: swapl */
8099     var33.i = ORC_SWAP_L (var32.i);
8100     /* 2: storel */
8101     ptr0[i] = var33;
8102   }
8103 
8104 }
8105 
8106 void
video_orc_pack_VUYA(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)8107 video_orc_pack_VUYA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
8108     int n)
8109 {
8110   OrcExecutor _ex, *ex = &_ex;
8111   static volatile int p_inited = 0;
8112   static OrcCode *c = 0;
8113   void (*func) (OrcExecutor *);
8114 
8115   if (!p_inited) {
8116     orc_once_mutex_lock ();
8117     if (!p_inited) {
8118       OrcProgram *p;
8119 
8120 #if 1
8121       static const orc_uint8 bc[] = {
8122         1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
8123         107, 95, 86, 85, 89, 65, 11, 4, 4, 12, 4, 4, 184, 0, 4, 2,
8124         0,
8125       };
8126       p = orc_program_new_from_static_bytecode (bc);
8127       orc_program_set_backup_function (p, _backup_video_orc_pack_VUYA);
8128 #else
8129       p = orc_program_new ();
8130       orc_program_set_name (p, "video_orc_pack_VUYA");
8131       orc_program_set_backup_function (p, _backup_video_orc_pack_VUYA);
8132       orc_program_add_destination (p, 4, "d1");
8133       orc_program_add_source (p, 4, "s1");
8134 
8135       orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1,
8136           ORC_VAR_D1);
8137 #endif
8138 
8139       orc_program_compile (p);
8140       c = orc_program_take_code (p);
8141       orc_program_free (p);
8142     }
8143     p_inited = TRUE;
8144     orc_once_mutex_unlock ();
8145   }
8146   ex->arrays[ORC_VAR_A2] = c;
8147   ex->program = 0;
8148 
8149   ex->n = n;
8150   ex->arrays[ORC_VAR_D1] = d1;
8151   ex->arrays[ORC_VAR_S1] = (void *) s1;
8152 
8153   func = c->exec;
8154   func (ex);
8155 }
8156 #endif
8157 
8158 
8159 /* video_orc_unpack_RGB15_le */
8160 #ifdef DISABLE_ORC
8161 void
video_orc_unpack_RGB15_le(guint32 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,int n)8162 video_orc_unpack_RGB15_le (guint32 * ORC_RESTRICT d1,
8163     const guint16 * ORC_RESTRICT s1, int n)
8164 {
8165   int i;
8166   orc_union32 *ORC_RESTRICT ptr0;
8167   const orc_union16 *ORC_RESTRICT ptr4;
8168 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8169   volatile orc_union16 var38;
8170 #else
8171   orc_union16 var38;
8172 #endif
8173 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8174   volatile orc_union16 var39;
8175 #else
8176   orc_union16 var39;
8177 #endif
8178 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8179   volatile orc_union16 var40;
8180 #else
8181   orc_union16 var40;
8182 #endif
8183 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8184   volatile orc_union16 var41;
8185 #else
8186   orc_union16 var41;
8187 #endif
8188 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8189   volatile orc_union16 var42;
8190 #else
8191   orc_union16 var42;
8192 #endif
8193 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8194   volatile orc_union16 var43;
8195 #else
8196   orc_union16 var43;
8197 #endif
8198   orc_union32 var44;
8199   orc_union16 var45;
8200   orc_union16 var46;
8201   orc_union16 var47;
8202   orc_union16 var48;
8203   orc_union16 var49;
8204   orc_union16 var50;
8205   orc_union16 var51;
8206   orc_union16 var52;
8207   orc_union32 var53;
8208   orc_union32 var54;
8209   orc_union32 var55;
8210 
8211   ptr0 = (orc_union32 *) d1;
8212   ptr4 = (orc_union16 *) s1;
8213 
8214   /* 1: loadpw */
8215   var38.i = 0x00007c00;         /* 31744 or 1.56836e-319f */
8216   /* 3: loadpw */
8217   var39.i = 0x000003e0;         /* 992 or 4.90113e-321f */
8218   /* 5: loadpw */
8219   var40.i = 0x0000001f;         /* 31 or 1.5316e-322f */
8220   /* 8: loadpw */
8221   var41.i = 0x00000210;         /* 528 or 2.60867e-321f */
8222   /* 10: loadpw */
8223   var42.i = 0x00004200;         /* 16896 or 8.34773e-320f */
8224   /* 13: loadpw */
8225   var43.i = 0x000000ff;         /* 255 or 1.25987e-321f */
8226 
8227   for (i = 0; i < n; i++) {
8228     /* 0: loadw */
8229     var45 = ptr4[i];
8230     /* 2: andw */
8231     var46.i = var45.i & var38.i;
8232     /* 4: andw */
8233     var47.i = var45.i & var39.i;
8234     /* 6: andw */
8235     var48.i = var45.i & var40.i;
8236     /* 7: shlw */
8237     var49.i = ((orc_uint16) var48.i) << 5;
8238     /* 9: mulhsw */
8239     var50.i = (var46.i * var41.i) >> 16;
8240     /* 11: mulhsw */
8241     var51.i = (var47.i * var42.i) >> 16;
8242     /* 12: mulhsw */
8243     var52.i = (var49.i * var42.i) >> 16;
8244     /* 14: mergewl */
8245     {
8246       orc_union32 _dest;
8247       _dest.x2[0] = var43.i;
8248       _dest.x2[1] = var51.i;
8249       var53.i = _dest.i;
8250     }
8251     /* 15: mergewl */
8252     {
8253       orc_union32 _dest;
8254       _dest.x2[0] = var50.i;
8255       _dest.x2[1] = var52.i;
8256       var54.i = _dest.i;
8257     }
8258     /* 16: shll */
8259     var55.i = ((orc_uint32) var54.i) << 8;
8260     /* 17: orl */
8261     var44.i = var53.i | var55.i;
8262     /* 18: storel */
8263     ptr0[i] = var44;
8264   }
8265 
8266 }
8267 
8268 #else
8269 static void
_backup_video_orc_unpack_RGB15_le(OrcExecutor * ORC_RESTRICT ex)8270 _backup_video_orc_unpack_RGB15_le (OrcExecutor * ORC_RESTRICT ex)
8271 {
8272   int i;
8273   int n = ex->n;
8274   orc_union32 *ORC_RESTRICT ptr0;
8275   const orc_union16 *ORC_RESTRICT ptr4;
8276 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8277   volatile orc_union16 var38;
8278 #else
8279   orc_union16 var38;
8280 #endif
8281 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8282   volatile orc_union16 var39;
8283 #else
8284   orc_union16 var39;
8285 #endif
8286 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8287   volatile orc_union16 var40;
8288 #else
8289   orc_union16 var40;
8290 #endif
8291 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8292   volatile orc_union16 var41;
8293 #else
8294   orc_union16 var41;
8295 #endif
8296 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8297   volatile orc_union16 var42;
8298 #else
8299   orc_union16 var42;
8300 #endif
8301 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8302   volatile orc_union16 var43;
8303 #else
8304   orc_union16 var43;
8305 #endif
8306   orc_union32 var44;
8307   orc_union16 var45;
8308   orc_union16 var46;
8309   orc_union16 var47;
8310   orc_union16 var48;
8311   orc_union16 var49;
8312   orc_union16 var50;
8313   orc_union16 var51;
8314   orc_union16 var52;
8315   orc_union32 var53;
8316   orc_union32 var54;
8317   orc_union32 var55;
8318 
8319   ptr0 = (orc_union32 *) ex->arrays[0];
8320   ptr4 = (orc_union16 *) ex->arrays[4];
8321 
8322   /* 1: loadpw */
8323   var38.i = 0x00007c00;         /* 31744 or 1.56836e-319f */
8324   /* 3: loadpw */
8325   var39.i = 0x000003e0;         /* 992 or 4.90113e-321f */
8326   /* 5: loadpw */
8327   var40.i = 0x0000001f;         /* 31 or 1.5316e-322f */
8328   /* 8: loadpw */
8329   var41.i = 0x00000210;         /* 528 or 2.60867e-321f */
8330   /* 10: loadpw */
8331   var42.i = 0x00004200;         /* 16896 or 8.34773e-320f */
8332   /* 13: loadpw */
8333   var43.i = 0x000000ff;         /* 255 or 1.25987e-321f */
8334 
8335   for (i = 0; i < n; i++) {
8336     /* 0: loadw */
8337     var45 = ptr4[i];
8338     /* 2: andw */
8339     var46.i = var45.i & var38.i;
8340     /* 4: andw */
8341     var47.i = var45.i & var39.i;
8342     /* 6: andw */
8343     var48.i = var45.i & var40.i;
8344     /* 7: shlw */
8345     var49.i = ((orc_uint16) var48.i) << 5;
8346     /* 9: mulhsw */
8347     var50.i = (var46.i * var41.i) >> 16;
8348     /* 11: mulhsw */
8349     var51.i = (var47.i * var42.i) >> 16;
8350     /* 12: mulhsw */
8351     var52.i = (var49.i * var42.i) >> 16;
8352     /* 14: mergewl */
8353     {
8354       orc_union32 _dest;
8355       _dest.x2[0] = var43.i;
8356       _dest.x2[1] = var51.i;
8357       var53.i = _dest.i;
8358     }
8359     /* 15: mergewl */
8360     {
8361       orc_union32 _dest;
8362       _dest.x2[0] = var50.i;
8363       _dest.x2[1] = var52.i;
8364       var54.i = _dest.i;
8365     }
8366     /* 16: shll */
8367     var55.i = ((orc_uint32) var54.i) << 8;
8368     /* 17: orl */
8369     var44.i = var53.i | var55.i;
8370     /* 18: storel */
8371     ptr0[i] = var44;
8372   }
8373 
8374 }
8375 
8376 void
video_orc_unpack_RGB15_le(guint32 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,int n)8377 video_orc_unpack_RGB15_le (guint32 * ORC_RESTRICT d1,
8378     const guint16 * ORC_RESTRICT s1, int n)
8379 {
8380   OrcExecutor _ex, *ex = &_ex;
8381   static volatile int p_inited = 0;
8382   static OrcCode *c = 0;
8383   void (*func) (OrcExecutor *);
8384 
8385   if (!p_inited) {
8386     orc_once_mutex_lock ();
8387     if (!p_inited) {
8388       OrcProgram *p;
8389 
8390 #if 1
8391       static const orc_uint8 bc[] = {
8392         1, 9, 25, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
8393         97, 99, 107, 95, 82, 71, 66, 49, 53, 95, 108, 101, 11, 4, 4, 12,
8394         2, 2, 14, 2, 0, 124, 0, 0, 14, 2, 224, 3, 0, 0, 14, 2,
8395         31, 0, 0, 0, 14, 2, 5, 0, 0, 0, 14, 2, 16, 2, 0, 0,
8396         14, 2, 0, 66, 0, 0, 14, 2, 255, 0, 0, 0, 14, 4, 8, 0,
8397         0, 0, 20, 2, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, 82, 32,
8398         4, 73, 33, 32, 16, 73, 34, 32, 17, 73, 35, 32, 18, 93, 35, 35,
8399         19, 90, 33, 33, 20, 90, 34, 34, 21, 90, 35, 35, 21, 195, 36, 22,
8400         34, 195, 37, 33, 35, 124, 37, 37, 23, 123, 0, 36, 37, 2, 0,
8401       };
8402       p = orc_program_new_from_static_bytecode (bc);
8403       orc_program_set_backup_function (p, _backup_video_orc_unpack_RGB15_le);
8404 #else
8405       p = orc_program_new ();
8406       orc_program_set_name (p, "video_orc_unpack_RGB15_le");
8407       orc_program_set_backup_function (p, _backup_video_orc_unpack_RGB15_le);
8408       orc_program_add_destination (p, 4, "d1");
8409       orc_program_add_source (p, 2, "s1");
8410       orc_program_add_constant (p, 2, 0x00007c00, "c1");
8411       orc_program_add_constant (p, 2, 0x000003e0, "c2");
8412       orc_program_add_constant (p, 2, 0x0000001f, "c3");
8413       orc_program_add_constant (p, 2, 0x00000005, "c4");
8414       orc_program_add_constant (p, 2, 0x00000210, "c5");
8415       orc_program_add_constant (p, 2, 0x00004200, "c6");
8416       orc_program_add_constant (p, 2, 0x000000ff, "c7");
8417       orc_program_add_constant (p, 4, 0x00000008, "c8");
8418       orc_program_add_temporary (p, 2, "t1");
8419       orc_program_add_temporary (p, 2, "t2");
8420       orc_program_add_temporary (p, 2, "t3");
8421       orc_program_add_temporary (p, 2, "t4");
8422       orc_program_add_temporary (p, 4, "t5");
8423       orc_program_add_temporary (p, 4, "t6");
8424 
8425       orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
8426           ORC_VAR_D1);
8427       orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1,
8428           ORC_VAR_D1);
8429       orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2,
8430           ORC_VAR_D1);
8431       orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3,
8432           ORC_VAR_D1);
8433       orc_program_append_2 (p, "shlw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C4,
8434           ORC_VAR_D1);
8435       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C5,
8436           ORC_VAR_D1);
8437       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C6,
8438           ORC_VAR_D1);
8439       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C6,
8440           ORC_VAR_D1);
8441       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C7, ORC_VAR_T3,
8442           ORC_VAR_D1);
8443       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_T4,
8444           ORC_VAR_D1);
8445       orc_program_append_2 (p, "shll", 0, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_C8,
8446           ORC_VAR_D1);
8447       orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_T6,
8448           ORC_VAR_D1);
8449 #endif
8450 
8451       orc_program_compile (p);
8452       c = orc_program_take_code (p);
8453       orc_program_free (p);
8454     }
8455     p_inited = TRUE;
8456     orc_once_mutex_unlock ();
8457   }
8458   ex->arrays[ORC_VAR_A2] = c;
8459   ex->program = 0;
8460 
8461   ex->n = n;
8462   ex->arrays[ORC_VAR_D1] = d1;
8463   ex->arrays[ORC_VAR_S1] = (void *) s1;
8464 
8465   func = c->exec;
8466   func (ex);
8467 }
8468 #endif
8469 
8470 
8471 /* video_orc_unpack_RGB15_be */
8472 #ifdef DISABLE_ORC
8473 void
video_orc_unpack_RGB15_be(guint32 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,int n)8474 video_orc_unpack_RGB15_be (guint32 * ORC_RESTRICT d1,
8475     const guint16 * ORC_RESTRICT s1, int n)
8476 {
8477   int i;
8478   orc_union32 *ORC_RESTRICT ptr0;
8479   const orc_union16 *ORC_RESTRICT ptr4;
8480 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8481   volatile orc_union16 var38;
8482 #else
8483   orc_union16 var38;
8484 #endif
8485 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8486   volatile orc_union16 var39;
8487 #else
8488   orc_union16 var39;
8489 #endif
8490 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8491   volatile orc_union16 var40;
8492 #else
8493   orc_union16 var40;
8494 #endif
8495 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8496   volatile orc_union16 var41;
8497 #else
8498   orc_union16 var41;
8499 #endif
8500 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8501   volatile orc_union16 var42;
8502 #else
8503   orc_union16 var42;
8504 #endif
8505 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8506   volatile orc_union16 var43;
8507 #else
8508   orc_union16 var43;
8509 #endif
8510   orc_union32 var44;
8511   orc_union16 var45;
8512   orc_union16 var46;
8513   orc_union16 var47;
8514   orc_union16 var48;
8515   orc_union16 var49;
8516   orc_union16 var50;
8517   orc_union16 var51;
8518   orc_union16 var52;
8519   orc_union32 var53;
8520   orc_union32 var54;
8521   orc_union32 var55;
8522 
8523   ptr0 = (orc_union32 *) d1;
8524   ptr4 = (orc_union16 *) s1;
8525 
8526   /* 1: loadpw */
8527   var38.i = 0x00007c00;         /* 31744 or 1.56836e-319f */
8528   /* 3: loadpw */
8529   var39.i = 0x000003e0;         /* 992 or 4.90113e-321f */
8530   /* 5: loadpw */
8531   var40.i = 0x0000001f;         /* 31 or 1.5316e-322f */
8532   /* 8: loadpw */
8533   var41.i = 0x00000210;         /* 528 or 2.60867e-321f */
8534   /* 10: loadpw */
8535   var42.i = 0x00004200;         /* 16896 or 8.34773e-320f */
8536   /* 13: loadpw */
8537   var43.i = 0x000000ff;         /* 255 or 1.25987e-321f */
8538 
8539   for (i = 0; i < n; i++) {
8540     /* 0: loadw */
8541     var45 = ptr4[i];
8542     /* 2: andw */
8543     var46.i = var45.i & var38.i;
8544     /* 4: andw */
8545     var47.i = var45.i & var39.i;
8546     /* 6: andw */
8547     var48.i = var45.i & var40.i;
8548     /* 7: shlw */
8549     var49.i = ((orc_uint16) var48.i) << 5;
8550     /* 9: mulhsw */
8551     var50.i = (var46.i * var41.i) >> 16;
8552     /* 11: mulhsw */
8553     var51.i = (var47.i * var42.i) >> 16;
8554     /* 12: mulhsw */
8555     var52.i = (var49.i * var42.i) >> 16;
8556     /* 14: mergewl */
8557     {
8558       orc_union32 _dest;
8559       _dest.x2[0] = var43.i;
8560       _dest.x2[1] = var51.i;
8561       var53.i = _dest.i;
8562     }
8563     /* 15: mergewl */
8564     {
8565       orc_union32 _dest;
8566       _dest.x2[0] = var50.i;
8567       _dest.x2[1] = var52.i;
8568       var54.i = _dest.i;
8569     }
8570     /* 16: shll */
8571     var55.i = ((orc_uint32) var53.i) << 8;
8572     /* 17: orl */
8573     var44.i = var55.i | var54.i;
8574     /* 18: storel */
8575     ptr0[i] = var44;
8576   }
8577 
8578 }
8579 
8580 #else
8581 static void
_backup_video_orc_unpack_RGB15_be(OrcExecutor * ORC_RESTRICT ex)8582 _backup_video_orc_unpack_RGB15_be (OrcExecutor * ORC_RESTRICT ex)
8583 {
8584   int i;
8585   int n = ex->n;
8586   orc_union32 *ORC_RESTRICT ptr0;
8587   const orc_union16 *ORC_RESTRICT ptr4;
8588 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8589   volatile orc_union16 var38;
8590 #else
8591   orc_union16 var38;
8592 #endif
8593 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8594   volatile orc_union16 var39;
8595 #else
8596   orc_union16 var39;
8597 #endif
8598 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8599   volatile orc_union16 var40;
8600 #else
8601   orc_union16 var40;
8602 #endif
8603 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8604   volatile orc_union16 var41;
8605 #else
8606   orc_union16 var41;
8607 #endif
8608 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8609   volatile orc_union16 var42;
8610 #else
8611   orc_union16 var42;
8612 #endif
8613 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8614   volatile orc_union16 var43;
8615 #else
8616   orc_union16 var43;
8617 #endif
8618   orc_union32 var44;
8619   orc_union16 var45;
8620   orc_union16 var46;
8621   orc_union16 var47;
8622   orc_union16 var48;
8623   orc_union16 var49;
8624   orc_union16 var50;
8625   orc_union16 var51;
8626   orc_union16 var52;
8627   orc_union32 var53;
8628   orc_union32 var54;
8629   orc_union32 var55;
8630 
8631   ptr0 = (orc_union32 *) ex->arrays[0];
8632   ptr4 = (orc_union16 *) ex->arrays[4];
8633 
8634   /* 1: loadpw */
8635   var38.i = 0x00007c00;         /* 31744 or 1.56836e-319f */
8636   /* 3: loadpw */
8637   var39.i = 0x000003e0;         /* 992 or 4.90113e-321f */
8638   /* 5: loadpw */
8639   var40.i = 0x0000001f;         /* 31 or 1.5316e-322f */
8640   /* 8: loadpw */
8641   var41.i = 0x00000210;         /* 528 or 2.60867e-321f */
8642   /* 10: loadpw */
8643   var42.i = 0x00004200;         /* 16896 or 8.34773e-320f */
8644   /* 13: loadpw */
8645   var43.i = 0x000000ff;         /* 255 or 1.25987e-321f */
8646 
8647   for (i = 0; i < n; i++) {
8648     /* 0: loadw */
8649     var45 = ptr4[i];
8650     /* 2: andw */
8651     var46.i = var45.i & var38.i;
8652     /* 4: andw */
8653     var47.i = var45.i & var39.i;
8654     /* 6: andw */
8655     var48.i = var45.i & var40.i;
8656     /* 7: shlw */
8657     var49.i = ((orc_uint16) var48.i) << 5;
8658     /* 9: mulhsw */
8659     var50.i = (var46.i * var41.i) >> 16;
8660     /* 11: mulhsw */
8661     var51.i = (var47.i * var42.i) >> 16;
8662     /* 12: mulhsw */
8663     var52.i = (var49.i * var42.i) >> 16;
8664     /* 14: mergewl */
8665     {
8666       orc_union32 _dest;
8667       _dest.x2[0] = var43.i;
8668       _dest.x2[1] = var51.i;
8669       var53.i = _dest.i;
8670     }
8671     /* 15: mergewl */
8672     {
8673       orc_union32 _dest;
8674       _dest.x2[0] = var50.i;
8675       _dest.x2[1] = var52.i;
8676       var54.i = _dest.i;
8677     }
8678     /* 16: shll */
8679     var55.i = ((orc_uint32) var53.i) << 8;
8680     /* 17: orl */
8681     var44.i = var55.i | var54.i;
8682     /* 18: storel */
8683     ptr0[i] = var44;
8684   }
8685 
8686 }
8687 
8688 void
video_orc_unpack_RGB15_be(guint32 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,int n)8689 video_orc_unpack_RGB15_be (guint32 * ORC_RESTRICT d1,
8690     const guint16 * ORC_RESTRICT s1, int n)
8691 {
8692   OrcExecutor _ex, *ex = &_ex;
8693   static volatile int p_inited = 0;
8694   static OrcCode *c = 0;
8695   void (*func) (OrcExecutor *);
8696 
8697   if (!p_inited) {
8698     orc_once_mutex_lock ();
8699     if (!p_inited) {
8700       OrcProgram *p;
8701 
8702 #if 1
8703       static const orc_uint8 bc[] = {
8704         1, 9, 25, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
8705         97, 99, 107, 95, 82, 71, 66, 49, 53, 95, 98, 101, 11, 4, 4, 12,
8706         2, 2, 14, 2, 0, 124, 0, 0, 14, 2, 224, 3, 0, 0, 14, 2,
8707         31, 0, 0, 0, 14, 2, 5, 0, 0, 0, 14, 2, 16, 2, 0, 0,
8708         14, 2, 0, 66, 0, 0, 14, 2, 255, 0, 0, 0, 14, 4, 8, 0,
8709         0, 0, 20, 2, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, 82, 32,
8710         4, 73, 33, 32, 16, 73, 34, 32, 17, 73, 35, 32, 18, 93, 35, 35,
8711         19, 90, 33, 33, 20, 90, 34, 34, 21, 90, 35, 35, 21, 195, 36, 22,
8712         34, 195, 37, 33, 35, 124, 36, 36, 23, 123, 0, 36, 37, 2, 0,
8713       };
8714       p = orc_program_new_from_static_bytecode (bc);
8715       orc_program_set_backup_function (p, _backup_video_orc_unpack_RGB15_be);
8716 #else
8717       p = orc_program_new ();
8718       orc_program_set_name (p, "video_orc_unpack_RGB15_be");
8719       orc_program_set_backup_function (p, _backup_video_orc_unpack_RGB15_be);
8720       orc_program_add_destination (p, 4, "d1");
8721       orc_program_add_source (p, 2, "s1");
8722       orc_program_add_constant (p, 2, 0x00007c00, "c1");
8723       orc_program_add_constant (p, 2, 0x000003e0, "c2");
8724       orc_program_add_constant (p, 2, 0x0000001f, "c3");
8725       orc_program_add_constant (p, 2, 0x00000005, "c4");
8726       orc_program_add_constant (p, 2, 0x00000210, "c5");
8727       orc_program_add_constant (p, 2, 0x00004200, "c6");
8728       orc_program_add_constant (p, 2, 0x000000ff, "c7");
8729       orc_program_add_constant (p, 4, 0x00000008, "c8");
8730       orc_program_add_temporary (p, 2, "t1");
8731       orc_program_add_temporary (p, 2, "t2");
8732       orc_program_add_temporary (p, 2, "t3");
8733       orc_program_add_temporary (p, 2, "t4");
8734       orc_program_add_temporary (p, 4, "t5");
8735       orc_program_add_temporary (p, 4, "t6");
8736 
8737       orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
8738           ORC_VAR_D1);
8739       orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1,
8740           ORC_VAR_D1);
8741       orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2,
8742           ORC_VAR_D1);
8743       orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3,
8744           ORC_VAR_D1);
8745       orc_program_append_2 (p, "shlw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C4,
8746           ORC_VAR_D1);
8747       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C5,
8748           ORC_VAR_D1);
8749       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C6,
8750           ORC_VAR_D1);
8751       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C6,
8752           ORC_VAR_D1);
8753       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C7, ORC_VAR_T3,
8754           ORC_VAR_D1);
8755       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_T4,
8756           ORC_VAR_D1);
8757       orc_program_append_2 (p, "shll", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C8,
8758           ORC_VAR_D1);
8759       orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_T6,
8760           ORC_VAR_D1);
8761 #endif
8762 
8763       orc_program_compile (p);
8764       c = orc_program_take_code (p);
8765       orc_program_free (p);
8766     }
8767     p_inited = TRUE;
8768     orc_once_mutex_unlock ();
8769   }
8770   ex->arrays[ORC_VAR_A2] = c;
8771   ex->program = 0;
8772 
8773   ex->n = n;
8774   ex->arrays[ORC_VAR_D1] = d1;
8775   ex->arrays[ORC_VAR_S1] = (void *) s1;
8776 
8777   func = c->exec;
8778   func (ex);
8779 }
8780 #endif
8781 
8782 
8783 /* video_orc_unpack_RGB15_le_trunc */
8784 #ifdef DISABLE_ORC
8785 void
video_orc_unpack_RGB15_le_trunc(guint32 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,int n)8786 video_orc_unpack_RGB15_le_trunc (guint32 * ORC_RESTRICT d1,
8787     const guint16 * ORC_RESTRICT s1, int n)
8788 {
8789   int i;
8790   orc_union32 *ORC_RESTRICT ptr0;
8791   const orc_union16 *ORC_RESTRICT ptr4;
8792 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8793   volatile orc_union16 var38;
8794 #else
8795   orc_union16 var38;
8796 #endif
8797 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8798   volatile orc_union16 var39;
8799 #else
8800   orc_union16 var39;
8801 #endif
8802 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8803   volatile orc_union16 var40;
8804 #else
8805   orc_union16 var40;
8806 #endif
8807 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8808   volatile orc_union16 var41;
8809 #else
8810   orc_union16 var41;
8811 #endif
8812   orc_union32 var42;
8813   orc_union16 var43;
8814   orc_union16 var44;
8815   orc_union16 var45;
8816   orc_union16 var46;
8817   orc_union16 var47;
8818   orc_union16 var48;
8819   orc_union16 var49;
8820   orc_union32 var50;
8821   orc_union32 var51;
8822   orc_union32 var52;
8823 
8824   ptr0 = (orc_union32 *) d1;
8825   ptr4 = (orc_union16 *) s1;
8826 
8827   /* 1: loadpw */
8828   var38.i = 0x00007c00;         /* 31744 or 1.56836e-319f */
8829   /* 3: loadpw */
8830   var39.i = 0x000003e0;         /* 992 or 4.90113e-321f */
8831   /* 5: loadpw */
8832   var40.i = 0x0000001f;         /* 31 or 1.5316e-322f */
8833   /* 10: loadpw */
8834   var41.i = 0x000000ff;         /* 255 or 1.25987e-321f */
8835 
8836   for (i = 0; i < n; i++) {
8837     /* 0: loadw */
8838     var43 = ptr4[i];
8839     /* 2: andw */
8840     var44.i = var43.i & var38.i;
8841     /* 4: andw */
8842     var45.i = var43.i & var39.i;
8843     /* 6: andw */
8844     var46.i = var43.i & var40.i;
8845     /* 7: shruw */
8846     var47.i = ((orc_uint16) var44.i) >> 7;
8847     /* 8: shruw */
8848     var48.i = ((orc_uint16) var45.i) >> 2;
8849     /* 9: shlw */
8850     var49.i = ((orc_uint16) var46.i) << 3;
8851     /* 11: mergewl */
8852     {
8853       orc_union32 _dest;
8854       _dest.x2[0] = var41.i;
8855       _dest.x2[1] = var48.i;
8856       var50.i = _dest.i;
8857     }
8858     /* 12: mergewl */
8859     {
8860       orc_union32 _dest;
8861       _dest.x2[0] = var47.i;
8862       _dest.x2[1] = var49.i;
8863       var51.i = _dest.i;
8864     }
8865     /* 13: shll */
8866     var52.i = ((orc_uint32) var51.i) << 8;
8867     /* 14: orl */
8868     var42.i = var50.i | var52.i;
8869     /* 15: storel */
8870     ptr0[i] = var42;
8871   }
8872 
8873 }
8874 
8875 #else
8876 static void
_backup_video_orc_unpack_RGB15_le_trunc(OrcExecutor * ORC_RESTRICT ex)8877 _backup_video_orc_unpack_RGB15_le_trunc (OrcExecutor * ORC_RESTRICT ex)
8878 {
8879   int i;
8880   int n = ex->n;
8881   orc_union32 *ORC_RESTRICT ptr0;
8882   const orc_union16 *ORC_RESTRICT ptr4;
8883 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8884   volatile orc_union16 var38;
8885 #else
8886   orc_union16 var38;
8887 #endif
8888 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8889   volatile orc_union16 var39;
8890 #else
8891   orc_union16 var39;
8892 #endif
8893 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8894   volatile orc_union16 var40;
8895 #else
8896   orc_union16 var40;
8897 #endif
8898 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
8899   volatile orc_union16 var41;
8900 #else
8901   orc_union16 var41;
8902 #endif
8903   orc_union32 var42;
8904   orc_union16 var43;
8905   orc_union16 var44;
8906   orc_union16 var45;
8907   orc_union16 var46;
8908   orc_union16 var47;
8909   orc_union16 var48;
8910   orc_union16 var49;
8911   orc_union32 var50;
8912   orc_union32 var51;
8913   orc_union32 var52;
8914 
8915   ptr0 = (orc_union32 *) ex->arrays[0];
8916   ptr4 = (orc_union16 *) ex->arrays[4];
8917 
8918   /* 1: loadpw */
8919   var38.i = 0x00007c00;         /* 31744 or 1.56836e-319f */
8920   /* 3: loadpw */
8921   var39.i = 0x000003e0;         /* 992 or 4.90113e-321f */
8922   /* 5: loadpw */
8923   var40.i = 0x0000001f;         /* 31 or 1.5316e-322f */
8924   /* 10: loadpw */
8925   var41.i = 0x000000ff;         /* 255 or 1.25987e-321f */
8926 
8927   for (i = 0; i < n; i++) {
8928     /* 0: loadw */
8929     var43 = ptr4[i];
8930     /* 2: andw */
8931     var44.i = var43.i & var38.i;
8932     /* 4: andw */
8933     var45.i = var43.i & var39.i;
8934     /* 6: andw */
8935     var46.i = var43.i & var40.i;
8936     /* 7: shruw */
8937     var47.i = ((orc_uint16) var44.i) >> 7;
8938     /* 8: shruw */
8939     var48.i = ((orc_uint16) var45.i) >> 2;
8940     /* 9: shlw */
8941     var49.i = ((orc_uint16) var46.i) << 3;
8942     /* 11: mergewl */
8943     {
8944       orc_union32 _dest;
8945       _dest.x2[0] = var41.i;
8946       _dest.x2[1] = var48.i;
8947       var50.i = _dest.i;
8948     }
8949     /* 12: mergewl */
8950     {
8951       orc_union32 _dest;
8952       _dest.x2[0] = var47.i;
8953       _dest.x2[1] = var49.i;
8954       var51.i = _dest.i;
8955     }
8956     /* 13: shll */
8957     var52.i = ((orc_uint32) var51.i) << 8;
8958     /* 14: orl */
8959     var42.i = var50.i | var52.i;
8960     /* 15: storel */
8961     ptr0[i] = var42;
8962   }
8963 
8964 }
8965 
8966 void
video_orc_unpack_RGB15_le_trunc(guint32 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,int n)8967 video_orc_unpack_RGB15_le_trunc (guint32 * ORC_RESTRICT d1,
8968     const guint16 * ORC_RESTRICT s1, int n)
8969 {
8970   OrcExecutor _ex, *ex = &_ex;
8971   static volatile int p_inited = 0;
8972   static OrcCode *c = 0;
8973   void (*func) (OrcExecutor *);
8974 
8975   if (!p_inited) {
8976     orc_once_mutex_lock ();
8977     if (!p_inited) {
8978       OrcProgram *p;
8979 
8980 #if 1
8981       static const orc_uint8 bc[] = {
8982         1, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
8983         97, 99, 107, 95, 82, 71, 66, 49, 53, 95, 108, 101, 95, 116, 114, 117,
8984         110, 99, 11, 4, 4, 12, 2, 2, 14, 2, 0, 124, 0, 0, 14, 2,
8985         224, 3, 0, 0, 14, 2, 31, 0, 0, 0, 14, 2, 7, 0, 0, 0,
8986         14, 2, 2, 0, 0, 0, 14, 2, 3, 0, 0, 0, 14, 2, 255, 0,
8987         0, 0, 14, 4, 8, 0, 0, 0, 20, 2, 20, 2, 20, 2, 20, 2,
8988         20, 4, 20, 4, 82, 32, 4, 73, 33, 32, 16, 73, 34, 32, 17, 73,
8989         35, 32, 18, 95, 33, 33, 19, 95, 34, 34, 20, 93, 35, 35, 21, 195,
8990         36, 22, 34, 195, 37, 33, 35, 124, 37, 37, 23, 123, 0, 36, 37, 2,
8991         0,
8992       };
8993       p = orc_program_new_from_static_bytecode (bc);
8994       orc_program_set_backup_function (p,
8995           _backup_video_orc_unpack_RGB15_le_trunc);
8996 #else
8997       p = orc_program_new ();
8998       orc_program_set_name (p, "video_orc_unpack_RGB15_le_trunc");
8999       orc_program_set_backup_function (p,
9000           _backup_video_orc_unpack_RGB15_le_trunc);
9001       orc_program_add_destination (p, 4, "d1");
9002       orc_program_add_source (p, 2, "s1");
9003       orc_program_add_constant (p, 2, 0x00007c00, "c1");
9004       orc_program_add_constant (p, 2, 0x000003e0, "c2");
9005       orc_program_add_constant (p, 2, 0x0000001f, "c3");
9006       orc_program_add_constant (p, 2, 0x00000007, "c4");
9007       orc_program_add_constant (p, 2, 0x00000002, "c5");
9008       orc_program_add_constant (p, 2, 0x00000003, "c6");
9009       orc_program_add_constant (p, 2, 0x000000ff, "c7");
9010       orc_program_add_constant (p, 4, 0x00000008, "c8");
9011       orc_program_add_temporary (p, 2, "t1");
9012       orc_program_add_temporary (p, 2, "t2");
9013       orc_program_add_temporary (p, 2, "t3");
9014       orc_program_add_temporary (p, 2, "t4");
9015       orc_program_add_temporary (p, 4, "t5");
9016       orc_program_add_temporary (p, 4, "t6");
9017 
9018       orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
9019           ORC_VAR_D1);
9020       orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1,
9021           ORC_VAR_D1);
9022       orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2,
9023           ORC_VAR_D1);
9024       orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3,
9025           ORC_VAR_D1);
9026       orc_program_append_2 (p, "shruw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4,
9027           ORC_VAR_D1);
9028       orc_program_append_2 (p, "shruw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5,
9029           ORC_VAR_D1);
9030       orc_program_append_2 (p, "shlw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C6,
9031           ORC_VAR_D1);
9032       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C7, ORC_VAR_T3,
9033           ORC_VAR_D1);
9034       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_T4,
9035           ORC_VAR_D1);
9036       orc_program_append_2 (p, "shll", 0, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_C8,
9037           ORC_VAR_D1);
9038       orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_T6,
9039           ORC_VAR_D1);
9040 #endif
9041 
9042       orc_program_compile (p);
9043       c = orc_program_take_code (p);
9044       orc_program_free (p);
9045     }
9046     p_inited = TRUE;
9047     orc_once_mutex_unlock ();
9048   }
9049   ex->arrays[ORC_VAR_A2] = c;
9050   ex->program = 0;
9051 
9052   ex->n = n;
9053   ex->arrays[ORC_VAR_D1] = d1;
9054   ex->arrays[ORC_VAR_S1] = (void *) s1;
9055 
9056   func = c->exec;
9057   func (ex);
9058 }
9059 #endif
9060 
9061 
9062 /* video_orc_unpack_RGB15_be_trunc */
9063 #ifdef DISABLE_ORC
9064 void
video_orc_unpack_RGB15_be_trunc(guint32 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,int n)9065 video_orc_unpack_RGB15_be_trunc (guint32 * ORC_RESTRICT d1,
9066     const guint16 * ORC_RESTRICT s1, int n)
9067 {
9068   int i;
9069   orc_union32 *ORC_RESTRICT ptr0;
9070   const orc_union16 *ORC_RESTRICT ptr4;
9071 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9072   volatile orc_union16 var38;
9073 #else
9074   orc_union16 var38;
9075 #endif
9076 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9077   volatile orc_union16 var39;
9078 #else
9079   orc_union16 var39;
9080 #endif
9081 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9082   volatile orc_union16 var40;
9083 #else
9084   orc_union16 var40;
9085 #endif
9086 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9087   volatile orc_union16 var41;
9088 #else
9089   orc_union16 var41;
9090 #endif
9091   orc_union32 var42;
9092   orc_union16 var43;
9093   orc_union16 var44;
9094   orc_union16 var45;
9095   orc_union16 var46;
9096   orc_union16 var47;
9097   orc_union16 var48;
9098   orc_union16 var49;
9099   orc_union32 var50;
9100   orc_union32 var51;
9101   orc_union32 var52;
9102 
9103   ptr0 = (orc_union32 *) d1;
9104   ptr4 = (orc_union16 *) s1;
9105 
9106   /* 1: loadpw */
9107   var38.i = 0x00007c00;         /* 31744 or 1.56836e-319f */
9108   /* 3: loadpw */
9109   var39.i = 0x000003e0;         /* 992 or 4.90113e-321f */
9110   /* 5: loadpw */
9111   var40.i = 0x0000001f;         /* 31 or 1.5316e-322f */
9112   /* 10: loadpw */
9113   var41.i = 0x000000ff;         /* 255 or 1.25987e-321f */
9114 
9115   for (i = 0; i < n; i++) {
9116     /* 0: loadw */
9117     var43 = ptr4[i];
9118     /* 2: andw */
9119     var44.i = var43.i & var38.i;
9120     /* 4: andw */
9121     var45.i = var43.i & var39.i;
9122     /* 6: andw */
9123     var46.i = var43.i & var40.i;
9124     /* 7: shruw */
9125     var47.i = ((orc_uint16) var44.i) >> 7;
9126     /* 8: shruw */
9127     var48.i = ((orc_uint16) var45.i) >> 2;
9128     /* 9: shlw */
9129     var49.i = ((orc_uint16) var46.i) << 3;
9130     /* 11: mergewl */
9131     {
9132       orc_union32 _dest;
9133       _dest.x2[0] = var41.i;
9134       _dest.x2[1] = var48.i;
9135       var50.i = _dest.i;
9136     }
9137     /* 12: mergewl */
9138     {
9139       orc_union32 _dest;
9140       _dest.x2[0] = var47.i;
9141       _dest.x2[1] = var49.i;
9142       var51.i = _dest.i;
9143     }
9144     /* 13: shll */
9145     var52.i = ((orc_uint32) var50.i) << 8;
9146     /* 14: orl */
9147     var42.i = var52.i | var51.i;
9148     /* 15: storel */
9149     ptr0[i] = var42;
9150   }
9151 
9152 }
9153 
9154 #else
9155 static void
_backup_video_orc_unpack_RGB15_be_trunc(OrcExecutor * ORC_RESTRICT ex)9156 _backup_video_orc_unpack_RGB15_be_trunc (OrcExecutor * ORC_RESTRICT ex)
9157 {
9158   int i;
9159   int n = ex->n;
9160   orc_union32 *ORC_RESTRICT ptr0;
9161   const orc_union16 *ORC_RESTRICT ptr4;
9162 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9163   volatile orc_union16 var38;
9164 #else
9165   orc_union16 var38;
9166 #endif
9167 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9168   volatile orc_union16 var39;
9169 #else
9170   orc_union16 var39;
9171 #endif
9172 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9173   volatile orc_union16 var40;
9174 #else
9175   orc_union16 var40;
9176 #endif
9177 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9178   volatile orc_union16 var41;
9179 #else
9180   orc_union16 var41;
9181 #endif
9182   orc_union32 var42;
9183   orc_union16 var43;
9184   orc_union16 var44;
9185   orc_union16 var45;
9186   orc_union16 var46;
9187   orc_union16 var47;
9188   orc_union16 var48;
9189   orc_union16 var49;
9190   orc_union32 var50;
9191   orc_union32 var51;
9192   orc_union32 var52;
9193 
9194   ptr0 = (orc_union32 *) ex->arrays[0];
9195   ptr4 = (orc_union16 *) ex->arrays[4];
9196 
9197   /* 1: loadpw */
9198   var38.i = 0x00007c00;         /* 31744 or 1.56836e-319f */
9199   /* 3: loadpw */
9200   var39.i = 0x000003e0;         /* 992 or 4.90113e-321f */
9201   /* 5: loadpw */
9202   var40.i = 0x0000001f;         /* 31 or 1.5316e-322f */
9203   /* 10: loadpw */
9204   var41.i = 0x000000ff;         /* 255 or 1.25987e-321f */
9205 
9206   for (i = 0; i < n; i++) {
9207     /* 0: loadw */
9208     var43 = ptr4[i];
9209     /* 2: andw */
9210     var44.i = var43.i & var38.i;
9211     /* 4: andw */
9212     var45.i = var43.i & var39.i;
9213     /* 6: andw */
9214     var46.i = var43.i & var40.i;
9215     /* 7: shruw */
9216     var47.i = ((orc_uint16) var44.i) >> 7;
9217     /* 8: shruw */
9218     var48.i = ((orc_uint16) var45.i) >> 2;
9219     /* 9: shlw */
9220     var49.i = ((orc_uint16) var46.i) << 3;
9221     /* 11: mergewl */
9222     {
9223       orc_union32 _dest;
9224       _dest.x2[0] = var41.i;
9225       _dest.x2[1] = var48.i;
9226       var50.i = _dest.i;
9227     }
9228     /* 12: mergewl */
9229     {
9230       orc_union32 _dest;
9231       _dest.x2[0] = var47.i;
9232       _dest.x2[1] = var49.i;
9233       var51.i = _dest.i;
9234     }
9235     /* 13: shll */
9236     var52.i = ((orc_uint32) var50.i) << 8;
9237     /* 14: orl */
9238     var42.i = var52.i | var51.i;
9239     /* 15: storel */
9240     ptr0[i] = var42;
9241   }
9242 
9243 }
9244 
9245 void
video_orc_unpack_RGB15_be_trunc(guint32 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,int n)9246 video_orc_unpack_RGB15_be_trunc (guint32 * ORC_RESTRICT d1,
9247     const guint16 * ORC_RESTRICT s1, int n)
9248 {
9249   OrcExecutor _ex, *ex = &_ex;
9250   static volatile int p_inited = 0;
9251   static OrcCode *c = 0;
9252   void (*func) (OrcExecutor *);
9253 
9254   if (!p_inited) {
9255     orc_once_mutex_lock ();
9256     if (!p_inited) {
9257       OrcProgram *p;
9258 
9259 #if 1
9260       static const orc_uint8 bc[] = {
9261         1, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
9262         97, 99, 107, 95, 82, 71, 66, 49, 53, 95, 98, 101, 95, 116, 114, 117,
9263         110, 99, 11, 4, 4, 12, 2, 2, 14, 2, 0, 124, 0, 0, 14, 2,
9264         224, 3, 0, 0, 14, 2, 31, 0, 0, 0, 14, 2, 7, 0, 0, 0,
9265         14, 2, 2, 0, 0, 0, 14, 2, 3, 0, 0, 0, 14, 2, 255, 0,
9266         0, 0, 14, 4, 8, 0, 0, 0, 20, 2, 20, 2, 20, 2, 20, 2,
9267         20, 4, 20, 4, 82, 32, 4, 73, 33, 32, 16, 73, 34, 32, 17, 73,
9268         35, 32, 18, 95, 33, 33, 19, 95, 34, 34, 20, 93, 35, 35, 21, 195,
9269         36, 22, 34, 195, 37, 33, 35, 124, 36, 36, 23, 123, 0, 36, 37, 2,
9270         0,
9271       };
9272       p = orc_program_new_from_static_bytecode (bc);
9273       orc_program_set_backup_function (p,
9274           _backup_video_orc_unpack_RGB15_be_trunc);
9275 #else
9276       p = orc_program_new ();
9277       orc_program_set_name (p, "video_orc_unpack_RGB15_be_trunc");
9278       orc_program_set_backup_function (p,
9279           _backup_video_orc_unpack_RGB15_be_trunc);
9280       orc_program_add_destination (p, 4, "d1");
9281       orc_program_add_source (p, 2, "s1");
9282       orc_program_add_constant (p, 2, 0x00007c00, "c1");
9283       orc_program_add_constant (p, 2, 0x000003e0, "c2");
9284       orc_program_add_constant (p, 2, 0x0000001f, "c3");
9285       orc_program_add_constant (p, 2, 0x00000007, "c4");
9286       orc_program_add_constant (p, 2, 0x00000002, "c5");
9287       orc_program_add_constant (p, 2, 0x00000003, "c6");
9288       orc_program_add_constant (p, 2, 0x000000ff, "c7");
9289       orc_program_add_constant (p, 4, 0x00000008, "c8");
9290       orc_program_add_temporary (p, 2, "t1");
9291       orc_program_add_temporary (p, 2, "t2");
9292       orc_program_add_temporary (p, 2, "t3");
9293       orc_program_add_temporary (p, 2, "t4");
9294       orc_program_add_temporary (p, 4, "t5");
9295       orc_program_add_temporary (p, 4, "t6");
9296 
9297       orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
9298           ORC_VAR_D1);
9299       orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1,
9300           ORC_VAR_D1);
9301       orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2,
9302           ORC_VAR_D1);
9303       orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3,
9304           ORC_VAR_D1);
9305       orc_program_append_2 (p, "shruw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4,
9306           ORC_VAR_D1);
9307       orc_program_append_2 (p, "shruw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5,
9308           ORC_VAR_D1);
9309       orc_program_append_2 (p, "shlw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C6,
9310           ORC_VAR_D1);
9311       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C7, ORC_VAR_T3,
9312           ORC_VAR_D1);
9313       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_T4,
9314           ORC_VAR_D1);
9315       orc_program_append_2 (p, "shll", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C8,
9316           ORC_VAR_D1);
9317       orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_T6,
9318           ORC_VAR_D1);
9319 #endif
9320 
9321       orc_program_compile (p);
9322       c = orc_program_take_code (p);
9323       orc_program_free (p);
9324     }
9325     p_inited = TRUE;
9326     orc_once_mutex_unlock ();
9327   }
9328   ex->arrays[ORC_VAR_A2] = c;
9329   ex->program = 0;
9330 
9331   ex->n = n;
9332   ex->arrays[ORC_VAR_D1] = d1;
9333   ex->arrays[ORC_VAR_S1] = (void *) s1;
9334 
9335   func = c->exec;
9336   func (ex);
9337 }
9338 #endif
9339 
9340 
9341 /* video_orc_pack_RGB15_le */
9342 #ifdef DISABLE_ORC
9343 void
video_orc_pack_RGB15_le(guint16 * ORC_RESTRICT d1,const guint32 * ORC_RESTRICT s1,int n)9344 video_orc_pack_RGB15_le (guint16 * ORC_RESTRICT d1,
9345     const guint32 * ORC_RESTRICT s1, int n)
9346 {
9347   int i;
9348   orc_union16 *ORC_RESTRICT ptr0;
9349   const orc_union32 *ORC_RESTRICT ptr4;
9350 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9351   volatile orc_union32 var37;
9352 #else
9353   orc_union32 var37;
9354 #endif
9355 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9356   volatile orc_union32 var38;
9357 #else
9358   orc_union32 var38;
9359 #endif
9360 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9361   volatile orc_union32 var39;
9362 #else
9363   orc_union32 var39;
9364 #endif
9365   orc_union16 var40;
9366   orc_union32 var41;
9367   orc_union32 var42;
9368   orc_union32 var43;
9369   orc_union32 var44;
9370   orc_union32 var45;
9371   orc_union32 var46;
9372   orc_union32 var47;
9373   orc_union32 var48;
9374   orc_union32 var49;
9375 
9376   ptr0 = (orc_union16 *) d1;
9377   ptr4 = (orc_union32 *) s1;
9378 
9379   /* 1: loadpl */
9380   var37.i = 0x0000f800;         /* 63488 or 3.13672e-319f */
9381   /* 3: loadpl */
9382   var38.i = 0x00f80000;         /* 16252928 or 8.03001e-317f */
9383   /* 5: loadpl */
9384   var39.i = 0xf8000000;         /* -134217728 or 2.05568e-314f */
9385 
9386   for (i = 0; i < n; i++) {
9387     /* 0: loadl */
9388     var41 = ptr4[i];
9389     /* 2: andl */
9390     var42.i = var41.i & var37.i;
9391     /* 4: andl */
9392     var43.i = var41.i & var38.i;
9393     /* 6: andl */
9394     var44.i = var41.i & var39.i;
9395     /* 7: shrul */
9396     var45.i = ((orc_uint32) var42.i) >> 1;
9397     /* 8: shrul */
9398     var46.i = ((orc_uint32) var43.i) >> 14;
9399     /* 9: shrul */
9400     var47.i = ((orc_uint32) var44.i) >> 27;
9401     /* 10: orl */
9402     var48.i = var45.i | var46.i;
9403     /* 11: orl */
9404     var49.i = var48.i | var47.i;
9405     /* 12: select0lw */
9406     {
9407       orc_union32 _src;
9408       _src.i = var49.i;
9409       var40.i = _src.x2[0];
9410     }
9411     /* 13: storew */
9412     ptr0[i] = var40;
9413   }
9414 
9415 }
9416 
9417 #else
9418 static void
_backup_video_orc_pack_RGB15_le(OrcExecutor * ORC_RESTRICT ex)9419 _backup_video_orc_pack_RGB15_le (OrcExecutor * ORC_RESTRICT ex)
9420 {
9421   int i;
9422   int n = ex->n;
9423   orc_union16 *ORC_RESTRICT ptr0;
9424   const orc_union32 *ORC_RESTRICT ptr4;
9425 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9426   volatile orc_union32 var37;
9427 #else
9428   orc_union32 var37;
9429 #endif
9430 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9431   volatile orc_union32 var38;
9432 #else
9433   orc_union32 var38;
9434 #endif
9435 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9436   volatile orc_union32 var39;
9437 #else
9438   orc_union32 var39;
9439 #endif
9440   orc_union16 var40;
9441   orc_union32 var41;
9442   orc_union32 var42;
9443   orc_union32 var43;
9444   orc_union32 var44;
9445   orc_union32 var45;
9446   orc_union32 var46;
9447   orc_union32 var47;
9448   orc_union32 var48;
9449   orc_union32 var49;
9450 
9451   ptr0 = (orc_union16 *) ex->arrays[0];
9452   ptr4 = (orc_union32 *) ex->arrays[4];
9453 
9454   /* 1: loadpl */
9455   var37.i = 0x0000f800;         /* 63488 or 3.13672e-319f */
9456   /* 3: loadpl */
9457   var38.i = 0x00f80000;         /* 16252928 or 8.03001e-317f */
9458   /* 5: loadpl */
9459   var39.i = 0xf8000000;         /* -134217728 or 2.05568e-314f */
9460 
9461   for (i = 0; i < n; i++) {
9462     /* 0: loadl */
9463     var41 = ptr4[i];
9464     /* 2: andl */
9465     var42.i = var41.i & var37.i;
9466     /* 4: andl */
9467     var43.i = var41.i & var38.i;
9468     /* 6: andl */
9469     var44.i = var41.i & var39.i;
9470     /* 7: shrul */
9471     var45.i = ((orc_uint32) var42.i) >> 1;
9472     /* 8: shrul */
9473     var46.i = ((orc_uint32) var43.i) >> 14;
9474     /* 9: shrul */
9475     var47.i = ((orc_uint32) var44.i) >> 27;
9476     /* 10: orl */
9477     var48.i = var45.i | var46.i;
9478     /* 11: orl */
9479     var49.i = var48.i | var47.i;
9480     /* 12: select0lw */
9481     {
9482       orc_union32 _src;
9483       _src.i = var49.i;
9484       var40.i = _src.x2[0];
9485     }
9486     /* 13: storew */
9487     ptr0[i] = var40;
9488   }
9489 
9490 }
9491 
9492 void
video_orc_pack_RGB15_le(guint16 * ORC_RESTRICT d1,const guint32 * ORC_RESTRICT s1,int n)9493 video_orc_pack_RGB15_le (guint16 * ORC_RESTRICT d1,
9494     const guint32 * ORC_RESTRICT s1, int n)
9495 {
9496   OrcExecutor _ex, *ex = &_ex;
9497   static volatile int p_inited = 0;
9498   static OrcCode *c = 0;
9499   void (*func) (OrcExecutor *);
9500 
9501   if (!p_inited) {
9502     orc_once_mutex_lock ();
9503     if (!p_inited) {
9504       OrcProgram *p;
9505 
9506 #if 1
9507       static const orc_uint8 bc[] = {
9508         1, 9, 23, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
9509         107, 95, 82, 71, 66, 49, 53, 95, 108, 101, 11, 2, 2, 12, 4, 4,
9510         14, 4, 0, 248, 0, 0, 14, 4, 0, 0, 248, 0, 14, 4, 0, 0,
9511         0, 248, 14, 4, 1, 0, 0, 0, 14, 4, 14, 0, 0, 0, 14, 4,
9512         27, 0, 0, 0, 20, 4, 20, 4, 20, 4, 20, 4, 20, 4, 113, 32,
9513         4, 106, 33, 32, 16, 106, 34, 32, 17, 106, 35, 32, 18, 126, 33, 33,
9514         19, 126, 34, 34, 20, 126, 35, 35, 21, 123, 36, 33, 34, 123, 36, 36,
9515         35, 190, 0, 36, 2, 0,
9516       };
9517       p = orc_program_new_from_static_bytecode (bc);
9518       orc_program_set_backup_function (p, _backup_video_orc_pack_RGB15_le);
9519 #else
9520       p = orc_program_new ();
9521       orc_program_set_name (p, "video_orc_pack_RGB15_le");
9522       orc_program_set_backup_function (p, _backup_video_orc_pack_RGB15_le);
9523       orc_program_add_destination (p, 2, "d1");
9524       orc_program_add_source (p, 4, "s1");
9525       orc_program_add_constant (p, 4, 0x0000f800, "c1");
9526       orc_program_add_constant (p, 4, 0x00f80000, "c2");
9527       orc_program_add_constant (p, 4, 0xf8000000, "c3");
9528       orc_program_add_constant (p, 4, 0x00000001, "c4");
9529       orc_program_add_constant (p, 4, 0x0000000e, "c5");
9530       orc_program_add_constant (p, 4, 0x0000001b, "c6");
9531       orc_program_add_temporary (p, 4, "t1");
9532       orc_program_add_temporary (p, 4, "t2");
9533       orc_program_add_temporary (p, 4, "t3");
9534       orc_program_add_temporary (p, 4, "t4");
9535       orc_program_add_temporary (p, 4, "t5");
9536 
9537       orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
9538           ORC_VAR_D1);
9539       orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1,
9540           ORC_VAR_D1);
9541       orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2,
9542           ORC_VAR_D1);
9543       orc_program_append_2 (p, "andl", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3,
9544           ORC_VAR_D1);
9545       orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4,
9546           ORC_VAR_D1);
9547       orc_program_append_2 (p, "shrul", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5,
9548           ORC_VAR_D1);
9549       orc_program_append_2 (p, "shrul", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C6,
9550           ORC_VAR_D1);
9551       orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_T3,
9552           ORC_VAR_D1);
9553       orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4,
9554           ORC_VAR_D1);
9555       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_D1, ORC_VAR_T5,
9556           ORC_VAR_D1, ORC_VAR_D1);
9557 #endif
9558 
9559       orc_program_compile (p);
9560       c = orc_program_take_code (p);
9561       orc_program_free (p);
9562     }
9563     p_inited = TRUE;
9564     orc_once_mutex_unlock ();
9565   }
9566   ex->arrays[ORC_VAR_A2] = c;
9567   ex->program = 0;
9568 
9569   ex->n = n;
9570   ex->arrays[ORC_VAR_D1] = d1;
9571   ex->arrays[ORC_VAR_S1] = (void *) s1;
9572 
9573   func = c->exec;
9574   func (ex);
9575 }
9576 #endif
9577 
9578 
9579 /* video_orc_pack_RGB15_be */
9580 #ifdef DISABLE_ORC
9581 void
video_orc_pack_RGB15_be(guint16 * ORC_RESTRICT d1,const guint32 * ORC_RESTRICT s1,int n)9582 video_orc_pack_RGB15_be (guint16 * ORC_RESTRICT d1,
9583     const guint32 * ORC_RESTRICT s1, int n)
9584 {
9585   int i;
9586   orc_union16 *ORC_RESTRICT ptr0;
9587   const orc_union32 *ORC_RESTRICT ptr4;
9588 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9589   volatile orc_union32 var37;
9590 #else
9591   orc_union32 var37;
9592 #endif
9593 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9594   volatile orc_union32 var38;
9595 #else
9596   orc_union32 var38;
9597 #endif
9598 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9599   volatile orc_union32 var39;
9600 #else
9601   orc_union32 var39;
9602 #endif
9603   orc_union16 var40;
9604   orc_union32 var41;
9605   orc_union32 var42;
9606   orc_union32 var43;
9607   orc_union32 var44;
9608   orc_union32 var45;
9609   orc_union32 var46;
9610   orc_union32 var47;
9611   orc_union32 var48;
9612   orc_union32 var49;
9613 
9614   ptr0 = (orc_union16 *) d1;
9615   ptr4 = (orc_union32 *) s1;
9616 
9617   /* 1: loadpl */
9618   var37.i = 0x00f80000;         /* 16252928 or 8.03001e-317f */
9619   /* 3: loadpl */
9620   var38.i = 0x0000f800;         /* 63488 or 3.13672e-319f */
9621   /* 5: loadpl */
9622   var39.i = 0x000000f8;         /* 248 or 1.22528e-321f */
9623 
9624   for (i = 0; i < n; i++) {
9625     /* 0: loadl */
9626     var41 = ptr4[i];
9627     /* 2: andl */
9628     var42.i = var41.i & var37.i;
9629     /* 4: andl */
9630     var43.i = var41.i & var38.i;
9631     /* 6: andl */
9632     var44.i = var41.i & var39.i;
9633     /* 7: shrul */
9634     var45.i = ((orc_uint32) var42.i) >> 9;
9635     /* 8: shrul */
9636     var46.i = ((orc_uint32) var43.i) >> 6;
9637     /* 9: shrul */
9638     var47.i = ((orc_uint32) var44.i) >> 3;
9639     /* 10: orl */
9640     var48.i = var45.i | var46.i;
9641     /* 11: orl */
9642     var49.i = var48.i | var47.i;
9643     /* 12: select1lw */
9644     {
9645       orc_union32 _src;
9646       _src.i = var49.i;
9647       var40.i = _src.x2[1];
9648     }
9649     /* 13: storew */
9650     ptr0[i] = var40;
9651   }
9652 
9653 }
9654 
9655 #else
9656 static void
_backup_video_orc_pack_RGB15_be(OrcExecutor * ORC_RESTRICT ex)9657 _backup_video_orc_pack_RGB15_be (OrcExecutor * ORC_RESTRICT ex)
9658 {
9659   int i;
9660   int n = ex->n;
9661   orc_union16 *ORC_RESTRICT ptr0;
9662   const orc_union32 *ORC_RESTRICT ptr4;
9663 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9664   volatile orc_union32 var37;
9665 #else
9666   orc_union32 var37;
9667 #endif
9668 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9669   volatile orc_union32 var38;
9670 #else
9671   orc_union32 var38;
9672 #endif
9673 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9674   volatile orc_union32 var39;
9675 #else
9676   orc_union32 var39;
9677 #endif
9678   orc_union16 var40;
9679   orc_union32 var41;
9680   orc_union32 var42;
9681   orc_union32 var43;
9682   orc_union32 var44;
9683   orc_union32 var45;
9684   orc_union32 var46;
9685   orc_union32 var47;
9686   orc_union32 var48;
9687   orc_union32 var49;
9688 
9689   ptr0 = (orc_union16 *) ex->arrays[0];
9690   ptr4 = (orc_union32 *) ex->arrays[4];
9691 
9692   /* 1: loadpl */
9693   var37.i = 0x00f80000;         /* 16252928 or 8.03001e-317f */
9694   /* 3: loadpl */
9695   var38.i = 0x0000f800;         /* 63488 or 3.13672e-319f */
9696   /* 5: loadpl */
9697   var39.i = 0x000000f8;         /* 248 or 1.22528e-321f */
9698 
9699   for (i = 0; i < n; i++) {
9700     /* 0: loadl */
9701     var41 = ptr4[i];
9702     /* 2: andl */
9703     var42.i = var41.i & var37.i;
9704     /* 4: andl */
9705     var43.i = var41.i & var38.i;
9706     /* 6: andl */
9707     var44.i = var41.i & var39.i;
9708     /* 7: shrul */
9709     var45.i = ((orc_uint32) var42.i) >> 9;
9710     /* 8: shrul */
9711     var46.i = ((orc_uint32) var43.i) >> 6;
9712     /* 9: shrul */
9713     var47.i = ((orc_uint32) var44.i) >> 3;
9714     /* 10: orl */
9715     var48.i = var45.i | var46.i;
9716     /* 11: orl */
9717     var49.i = var48.i | var47.i;
9718     /* 12: select1lw */
9719     {
9720       orc_union32 _src;
9721       _src.i = var49.i;
9722       var40.i = _src.x2[1];
9723     }
9724     /* 13: storew */
9725     ptr0[i] = var40;
9726   }
9727 
9728 }
9729 
9730 void
video_orc_pack_RGB15_be(guint16 * ORC_RESTRICT d1,const guint32 * ORC_RESTRICT s1,int n)9731 video_orc_pack_RGB15_be (guint16 * ORC_RESTRICT d1,
9732     const guint32 * ORC_RESTRICT s1, int n)
9733 {
9734   OrcExecutor _ex, *ex = &_ex;
9735   static volatile int p_inited = 0;
9736   static OrcCode *c = 0;
9737   void (*func) (OrcExecutor *);
9738 
9739   if (!p_inited) {
9740     orc_once_mutex_lock ();
9741     if (!p_inited) {
9742       OrcProgram *p;
9743 
9744 #if 1
9745       static const orc_uint8 bc[] = {
9746         1, 9, 23, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
9747         107, 95, 82, 71, 66, 49, 53, 95, 98, 101, 11, 2, 2, 12, 4, 4,
9748         14, 4, 0, 0, 248, 0, 14, 4, 0, 248, 0, 0, 14, 4, 248, 0,
9749         0, 0, 14, 4, 9, 0, 0, 0, 14, 4, 6, 0, 0, 0, 14, 4,
9750         3, 0, 0, 0, 20, 4, 20, 4, 20, 4, 20, 4, 20, 4, 113, 32,
9751         4, 106, 33, 32, 16, 106, 34, 32, 17, 106, 35, 32, 18, 126, 33, 33,
9752         19, 126, 34, 34, 20, 126, 35, 35, 21, 123, 36, 33, 34, 123, 36, 36,
9753         35, 191, 0, 36, 2, 0,
9754       };
9755       p = orc_program_new_from_static_bytecode (bc);
9756       orc_program_set_backup_function (p, _backup_video_orc_pack_RGB15_be);
9757 #else
9758       p = orc_program_new ();
9759       orc_program_set_name (p, "video_orc_pack_RGB15_be");
9760       orc_program_set_backup_function (p, _backup_video_orc_pack_RGB15_be);
9761       orc_program_add_destination (p, 2, "d1");
9762       orc_program_add_source (p, 4, "s1");
9763       orc_program_add_constant (p, 4, 0x00f80000, "c1");
9764       orc_program_add_constant (p, 4, 0x0000f800, "c2");
9765       orc_program_add_constant (p, 4, 0x000000f8, "c3");
9766       orc_program_add_constant (p, 4, 0x00000009, "c4");
9767       orc_program_add_constant (p, 4, 0x00000006, "c5");
9768       orc_program_add_constant (p, 4, 0x00000003, "c6");
9769       orc_program_add_temporary (p, 4, "t1");
9770       orc_program_add_temporary (p, 4, "t2");
9771       orc_program_add_temporary (p, 4, "t3");
9772       orc_program_add_temporary (p, 4, "t4");
9773       orc_program_add_temporary (p, 4, "t5");
9774 
9775       orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
9776           ORC_VAR_D1);
9777       orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1,
9778           ORC_VAR_D1);
9779       orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2,
9780           ORC_VAR_D1);
9781       orc_program_append_2 (p, "andl", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3,
9782           ORC_VAR_D1);
9783       orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4,
9784           ORC_VAR_D1);
9785       orc_program_append_2 (p, "shrul", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5,
9786           ORC_VAR_D1);
9787       orc_program_append_2 (p, "shrul", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C6,
9788           ORC_VAR_D1);
9789       orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_T3,
9790           ORC_VAR_D1);
9791       orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4,
9792           ORC_VAR_D1);
9793       orc_program_append_2 (p, "select1lw", 0, ORC_VAR_D1, ORC_VAR_T5,
9794           ORC_VAR_D1, ORC_VAR_D1);
9795 #endif
9796 
9797       orc_program_compile (p);
9798       c = orc_program_take_code (p);
9799       orc_program_free (p);
9800     }
9801     p_inited = TRUE;
9802     orc_once_mutex_unlock ();
9803   }
9804   ex->arrays[ORC_VAR_A2] = c;
9805   ex->program = 0;
9806 
9807   ex->n = n;
9808   ex->arrays[ORC_VAR_D1] = d1;
9809   ex->arrays[ORC_VAR_S1] = (void *) s1;
9810 
9811   func = c->exec;
9812   func (ex);
9813 }
9814 #endif
9815 
9816 
9817 /* video_orc_unpack_BGR15_le */
9818 #ifdef DISABLE_ORC
9819 void
video_orc_unpack_BGR15_le(guint32 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,int n)9820 video_orc_unpack_BGR15_le (guint32 * ORC_RESTRICT d1,
9821     const guint16 * ORC_RESTRICT s1, int n)
9822 {
9823   int i;
9824   orc_union32 *ORC_RESTRICT ptr0;
9825   const orc_union16 *ORC_RESTRICT ptr4;
9826 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9827   volatile orc_union16 var38;
9828 #else
9829   orc_union16 var38;
9830 #endif
9831 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9832   volatile orc_union16 var39;
9833 #else
9834   orc_union16 var39;
9835 #endif
9836 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9837   volatile orc_union16 var40;
9838 #else
9839   orc_union16 var40;
9840 #endif
9841 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9842   volatile orc_union16 var41;
9843 #else
9844   orc_union16 var41;
9845 #endif
9846 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9847   volatile orc_union16 var42;
9848 #else
9849   orc_union16 var42;
9850 #endif
9851 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9852   volatile orc_union16 var43;
9853 #else
9854   orc_union16 var43;
9855 #endif
9856   orc_union32 var44;
9857   orc_union16 var45;
9858   orc_union16 var46;
9859   orc_union16 var47;
9860   orc_union16 var48;
9861   orc_union16 var49;
9862   orc_union16 var50;
9863   orc_union16 var51;
9864   orc_union16 var52;
9865   orc_union32 var53;
9866   orc_union32 var54;
9867   orc_union32 var55;
9868 
9869   ptr0 = (orc_union32 *) d1;
9870   ptr4 = (orc_union16 *) s1;
9871 
9872   /* 1: loadpw */
9873   var38.i = 0x00007c00;         /* 31744 or 1.56836e-319f */
9874   /* 3: loadpw */
9875   var39.i = 0x000003e0;         /* 992 or 4.90113e-321f */
9876   /* 5: loadpw */
9877   var40.i = 0x0000001f;         /* 31 or 1.5316e-322f */
9878   /* 8: loadpw */
9879   var41.i = 0x00000210;         /* 528 or 2.60867e-321f */
9880   /* 10: loadpw */
9881   var42.i = 0x00004200;         /* 16896 or 8.34773e-320f */
9882   /* 13: loadpw */
9883   var43.i = 0x000000ff;         /* 255 or 1.25987e-321f */
9884 
9885   for (i = 0; i < n; i++) {
9886     /* 0: loadw */
9887     var45 = ptr4[i];
9888     /* 2: andw */
9889     var46.i = var45.i & var38.i;
9890     /* 4: andw */
9891     var47.i = var45.i & var39.i;
9892     /* 6: andw */
9893     var48.i = var45.i & var40.i;
9894     /* 7: shlw */
9895     var49.i = ((orc_uint16) var48.i) << 5;
9896     /* 9: mulhsw */
9897     var50.i = (var46.i * var41.i) >> 16;
9898     /* 11: mulhsw */
9899     var51.i = (var47.i * var42.i) >> 16;
9900     /* 12: mulhsw */
9901     var52.i = (var49.i * var42.i) >> 16;
9902     /* 14: mergewl */
9903     {
9904       orc_union32 _dest;
9905       _dest.x2[0] = var43.i;
9906       _dest.x2[1] = var51.i;
9907       var53.i = _dest.i;
9908     }
9909     /* 15: mergewl */
9910     {
9911       orc_union32 _dest;
9912       _dest.x2[0] = var52.i;
9913       _dest.x2[1] = var50.i;
9914       var54.i = _dest.i;
9915     }
9916     /* 16: shll */
9917     var55.i = ((orc_uint32) var54.i) << 8;
9918     /* 17: orl */
9919     var44.i = var53.i | var55.i;
9920     /* 18: storel */
9921     ptr0[i] = var44;
9922   }
9923 
9924 }
9925 
9926 #else
9927 static void
_backup_video_orc_unpack_BGR15_le(OrcExecutor * ORC_RESTRICT ex)9928 _backup_video_orc_unpack_BGR15_le (OrcExecutor * ORC_RESTRICT ex)
9929 {
9930   int i;
9931   int n = ex->n;
9932   orc_union32 *ORC_RESTRICT ptr0;
9933   const orc_union16 *ORC_RESTRICT ptr4;
9934 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9935   volatile orc_union16 var38;
9936 #else
9937   orc_union16 var38;
9938 #endif
9939 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9940   volatile orc_union16 var39;
9941 #else
9942   orc_union16 var39;
9943 #endif
9944 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9945   volatile orc_union16 var40;
9946 #else
9947   orc_union16 var40;
9948 #endif
9949 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9950   volatile orc_union16 var41;
9951 #else
9952   orc_union16 var41;
9953 #endif
9954 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9955   volatile orc_union16 var42;
9956 #else
9957   orc_union16 var42;
9958 #endif
9959 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
9960   volatile orc_union16 var43;
9961 #else
9962   orc_union16 var43;
9963 #endif
9964   orc_union32 var44;
9965   orc_union16 var45;
9966   orc_union16 var46;
9967   orc_union16 var47;
9968   orc_union16 var48;
9969   orc_union16 var49;
9970   orc_union16 var50;
9971   orc_union16 var51;
9972   orc_union16 var52;
9973   orc_union32 var53;
9974   orc_union32 var54;
9975   orc_union32 var55;
9976 
9977   ptr0 = (orc_union32 *) ex->arrays[0];
9978   ptr4 = (orc_union16 *) ex->arrays[4];
9979 
9980   /* 1: loadpw */
9981   var38.i = 0x00007c00;         /* 31744 or 1.56836e-319f */
9982   /* 3: loadpw */
9983   var39.i = 0x000003e0;         /* 992 or 4.90113e-321f */
9984   /* 5: loadpw */
9985   var40.i = 0x0000001f;         /* 31 or 1.5316e-322f */
9986   /* 8: loadpw */
9987   var41.i = 0x00000210;         /* 528 or 2.60867e-321f */
9988   /* 10: loadpw */
9989   var42.i = 0x00004200;         /* 16896 or 8.34773e-320f */
9990   /* 13: loadpw */
9991   var43.i = 0x000000ff;         /* 255 or 1.25987e-321f */
9992 
9993   for (i = 0; i < n; i++) {
9994     /* 0: loadw */
9995     var45 = ptr4[i];
9996     /* 2: andw */
9997     var46.i = var45.i & var38.i;
9998     /* 4: andw */
9999     var47.i = var45.i & var39.i;
10000     /* 6: andw */
10001     var48.i = var45.i & var40.i;
10002     /* 7: shlw */
10003     var49.i = ((orc_uint16) var48.i) << 5;
10004     /* 9: mulhsw */
10005     var50.i = (var46.i * var41.i) >> 16;
10006     /* 11: mulhsw */
10007     var51.i = (var47.i * var42.i) >> 16;
10008     /* 12: mulhsw */
10009     var52.i = (var49.i * var42.i) >> 16;
10010     /* 14: mergewl */
10011     {
10012       orc_union32 _dest;
10013       _dest.x2[0] = var43.i;
10014       _dest.x2[1] = var51.i;
10015       var53.i = _dest.i;
10016     }
10017     /* 15: mergewl */
10018     {
10019       orc_union32 _dest;
10020       _dest.x2[0] = var52.i;
10021       _dest.x2[1] = var50.i;
10022       var54.i = _dest.i;
10023     }
10024     /* 16: shll */
10025     var55.i = ((orc_uint32) var54.i) << 8;
10026     /* 17: orl */
10027     var44.i = var53.i | var55.i;
10028     /* 18: storel */
10029     ptr0[i] = var44;
10030   }
10031 
10032 }
10033 
10034 void
video_orc_unpack_BGR15_le(guint32 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,int n)10035 video_orc_unpack_BGR15_le (guint32 * ORC_RESTRICT d1,
10036     const guint16 * ORC_RESTRICT s1, int n)
10037 {
10038   OrcExecutor _ex, *ex = &_ex;
10039   static volatile int p_inited = 0;
10040   static OrcCode *c = 0;
10041   void (*func) (OrcExecutor *);
10042 
10043   if (!p_inited) {
10044     orc_once_mutex_lock ();
10045     if (!p_inited) {
10046       OrcProgram *p;
10047 
10048 #if 1
10049       static const orc_uint8 bc[] = {
10050         1, 9, 25, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
10051         97, 99, 107, 95, 66, 71, 82, 49, 53, 95, 108, 101, 11, 4, 4, 12,
10052         2, 2, 14, 2, 0, 124, 0, 0, 14, 2, 224, 3, 0, 0, 14, 2,
10053         31, 0, 0, 0, 14, 2, 5, 0, 0, 0, 14, 2, 16, 2, 0, 0,
10054         14, 2, 0, 66, 0, 0, 14, 2, 255, 0, 0, 0, 14, 4, 8, 0,
10055         0, 0, 20, 2, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, 82, 32,
10056         4, 73, 35, 32, 16, 73, 34, 32, 17, 73, 33, 32, 18, 93, 33, 33,
10057         19, 90, 35, 35, 20, 90, 34, 34, 21, 90, 33, 33, 21, 195, 36, 22,
10058         34, 195, 37, 33, 35, 124, 37, 37, 23, 123, 0, 36, 37, 2, 0,
10059       };
10060       p = orc_program_new_from_static_bytecode (bc);
10061       orc_program_set_backup_function (p, _backup_video_orc_unpack_BGR15_le);
10062 #else
10063       p = orc_program_new ();
10064       orc_program_set_name (p, "video_orc_unpack_BGR15_le");
10065       orc_program_set_backup_function (p, _backup_video_orc_unpack_BGR15_le);
10066       orc_program_add_destination (p, 4, "d1");
10067       orc_program_add_source (p, 2, "s1");
10068       orc_program_add_constant (p, 2, 0x00007c00, "c1");
10069       orc_program_add_constant (p, 2, 0x000003e0, "c2");
10070       orc_program_add_constant (p, 2, 0x0000001f, "c3");
10071       orc_program_add_constant (p, 2, 0x00000005, "c4");
10072       orc_program_add_constant (p, 2, 0x00000210, "c5");
10073       orc_program_add_constant (p, 2, 0x00004200, "c6");
10074       orc_program_add_constant (p, 2, 0x000000ff, "c7");
10075       orc_program_add_constant (p, 4, 0x00000008, "c8");
10076       orc_program_add_temporary (p, 2, "t1");
10077       orc_program_add_temporary (p, 2, "t2");
10078       orc_program_add_temporary (p, 2, "t3");
10079       orc_program_add_temporary (p, 2, "t4");
10080       orc_program_add_temporary (p, 4, "t5");
10081       orc_program_add_temporary (p, 4, "t6");
10082 
10083       orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
10084           ORC_VAR_D1);
10085       orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C1,
10086           ORC_VAR_D1);
10087       orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2,
10088           ORC_VAR_D1);
10089       orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C3,
10090           ORC_VAR_D1);
10091       orc_program_append_2 (p, "shlw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4,
10092           ORC_VAR_D1);
10093       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C5,
10094           ORC_VAR_D1);
10095       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C6,
10096           ORC_VAR_D1);
10097       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C6,
10098           ORC_VAR_D1);
10099       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C7, ORC_VAR_T3,
10100           ORC_VAR_D1);
10101       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_T4,
10102           ORC_VAR_D1);
10103       orc_program_append_2 (p, "shll", 0, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_C8,
10104           ORC_VAR_D1);
10105       orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_T6,
10106           ORC_VAR_D1);
10107 #endif
10108 
10109       orc_program_compile (p);
10110       c = orc_program_take_code (p);
10111       orc_program_free (p);
10112     }
10113     p_inited = TRUE;
10114     orc_once_mutex_unlock ();
10115   }
10116   ex->arrays[ORC_VAR_A2] = c;
10117   ex->program = 0;
10118 
10119   ex->n = n;
10120   ex->arrays[ORC_VAR_D1] = d1;
10121   ex->arrays[ORC_VAR_S1] = (void *) s1;
10122 
10123   func = c->exec;
10124   func (ex);
10125 }
10126 #endif
10127 
10128 
10129 /* video_orc_unpack_BGR15_be */
10130 #ifdef DISABLE_ORC
10131 void
video_orc_unpack_BGR15_be(guint32 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,int n)10132 video_orc_unpack_BGR15_be (guint32 * ORC_RESTRICT d1,
10133     const guint16 * ORC_RESTRICT s1, int n)
10134 {
10135   int i;
10136   orc_union32 *ORC_RESTRICT ptr0;
10137   const orc_union16 *ORC_RESTRICT ptr4;
10138 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
10139   volatile orc_union16 var38;
10140 #else
10141   orc_union16 var38;
10142 #endif
10143 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
10144   volatile orc_union16 var39;
10145 #else
10146   orc_union16 var39;
10147 #endif
10148 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
10149   volatile orc_union16 var40;
10150 #else
10151   orc_union16 var40;
10152 #endif
10153 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
10154   volatile orc_union16 var41;
10155 #else
10156   orc_union16 var41;
10157 #endif
10158 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
10159   volatile orc_union16 var42;
10160 #else
10161   orc_union16 var42;
10162 #endif
10163 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
10164   volatile orc_union16 var43;
10165 #else
10166   orc_union16 var43;
10167 #endif
10168   orc_union32 var44;
10169   orc_union16 var45;
10170   orc_union16 var46;
10171   orc_union16 var47;
10172   orc_union16 var48;
10173   orc_union16 var49;
10174   orc_union16 var50;
10175   orc_union16 var51;
10176   orc_union16 var52;
10177   orc_union32 var53;
10178   orc_union32 var54;
10179   orc_union32 var55;
10180 
10181   ptr0 = (orc_union32 *) d1;
10182   ptr4 = (orc_union16 *) s1;
10183 
10184   /* 1: loadpw */
10185   var38.i = 0x00007c00;         /* 31744 or 1.56836e-319f */
10186   /* 3: loadpw */
10187   var39.i = 0x000003e0;         /* 992 or 4.90113e-321f */
10188   /* 5: loadpw */
10189   var40.i = 0x0000001f;         /* 31 or 1.5316e-322f */
10190   /* 8: loadpw */
10191   var41.i = 0x00000210;         /* 528 or 2.60867e-321f */
10192   /* 10: loadpw */
10193   var42.i = 0x00004200;         /* 16896 or 8.34773e-320f */
10194   /* 13: loadpw */
10195   var43.i = 0x000000ff;         /* 255 or 1.25987e-321f */
10196 
10197   for (i = 0; i < n; i++) {
10198     /* 0: loadw */
10199     var45 = ptr4[i];
10200     /* 2: andw */
10201     var46.i = var45.i & var38.i;
10202     /* 4: andw */
10203     var47.i = var45.i & var39.i;
10204     /* 6: andw */
10205     var48.i = var45.i & var40.i;
10206     /* 7: shlw */
10207     var49.i = ((orc_uint16) var48.i) << 5;
10208     /* 9: mulhsw */
10209     var50.i = (var46.i * var41.i) >> 16;
10210     /* 11: mulhsw */
10211     var51.i = (var47.i * var42.i) >> 16;
10212     /* 12: mulhsw */
10213     var52.i = (var49.i * var42.i) >> 16;
10214     /* 14: mergewl */
10215     {
10216       orc_union32 _dest;
10217       _dest.x2[0] = var43.i;
10218       _dest.x2[1] = var51.i;
10219       var53.i = _dest.i;
10220     }
10221     /* 15: mergewl */
10222     {
10223       orc_union32 _dest;
10224       _dest.x2[0] = var52.i;
10225       _dest.x2[1] = var50.i;
10226       var54.i = _dest.i;
10227     }
10228     /* 16: shll */
10229     var55.i = ((orc_uint32) var53.i) << 8;
10230     /* 17: orl */
10231     var44.i = var55.i | var54.i;
10232     /* 18: storel */
10233     ptr0[i] = var44;
10234   }
10235 
10236 }
10237 
10238 #else
10239 static void
_backup_video_orc_unpack_BGR15_be(OrcExecutor * ORC_RESTRICT ex)10240 _backup_video_orc_unpack_BGR15_be (OrcExecutor * ORC_RESTRICT ex)
10241 {
10242   int i;
10243   int n = ex->n;
10244   orc_union32 *ORC_RESTRICT ptr0;
10245   const orc_union16 *ORC_RESTRICT ptr4;
10246 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
10247   volatile orc_union16 var38;
10248 #else
10249   orc_union16 var38;
10250 #endif
10251 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
10252   volatile orc_union16 var39;
10253 #else
10254   orc_union16 var39;
10255 #endif
10256 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
10257   volatile orc_union16 var40;
10258 #else
10259   orc_union16 var40;
10260 #endif
10261 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
10262   volatile orc_union16 var41;
10263 #else
10264   orc_union16 var41;
10265 #endif
10266 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
10267   volatile orc_union16 var42;
10268 #else
10269   orc_union16 var42;
10270 #endif
10271 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
10272   volatile orc_union16 var43;
10273 #else
10274   orc_union16 var43;
10275 #endif
10276   orc_union32 var44;
10277   orc_union16 var45;
10278   orc_union16 var46;
10279   orc_union16 var47;
10280   orc_union16 var48;
10281   orc_union16 var49;
10282   orc_union16 var50;
10283   orc_union16 var51;
10284   orc_union16 var52;
10285   orc_union32 var53;
10286   orc_union32 var54;
10287   orc_union32 var55;
10288 
10289   ptr0 = (orc_union32 *) ex->arrays[0];
10290   ptr4 = (orc_union16 *) ex->arrays[4];
10291 
10292   /* 1: loadpw */
10293   var38.i = 0x00007c00;         /* 31744 or 1.56836e-319f */
10294   /* 3: loadpw */
10295   var39.i = 0x000003e0;         /* 992 or 4.90113e-321f */
10296   /* 5: loadpw */
10297   var40.i = 0x0000001f;         /* 31 or 1.5316e-322f */
10298   /* 8: loadpw */
10299   var41.i = 0x00000210;         /* 528 or 2.60867e-321f */
10300   /* 10: loadpw */
10301   var42.i = 0x00004200;         /* 16896 or 8.34773e-320f */
10302   /* 13: loadpw */
10303   var43.i = 0x000000ff;         /* 255 or 1.25987e-321f */
10304 
10305   for (i = 0; i < n; i++) {
10306     /* 0: loadw */
10307     var45 = ptr4[i];
10308     /* 2: andw */
10309     var46.i = var45.i & var38.i;
10310     /* 4: andw */
10311     var47.i = var45.i & var39.i;
10312     /* 6: andw */
10313     var48.i = var45.i & var40.i;
10314     /* 7: shlw */
10315     var49.i = ((orc_uint16) var48.i) << 5;
10316     /* 9: mulhsw */
10317     var50.i = (var46.i * var41.i) >> 16;
10318     /* 11: mulhsw */
10319     var51.i = (var47.i * var42.i) >> 16;
10320     /* 12: mulhsw */
10321     var52.i = (var49.i * var42.i) >> 16;
10322     /* 14: mergewl */
10323     {
10324       orc_union32 _dest;
10325       _dest.x2[0] = var43.i;
10326       _dest.x2[1] = var51.i;
10327       var53.i = _dest.i;
10328     }
10329     /* 15: mergewl */
10330     {
10331       orc_union32 _dest;
10332       _dest.x2[0] = var52.i;
10333       _dest.x2[1] = var50.i;
10334       var54.i = _dest.i;
10335     }
10336     /* 16: shll */
10337     var55.i = ((orc_uint32) var53.i) << 8;
10338     /* 17: orl */
10339     var44.i = var55.i | var54.i;
10340     /* 18: storel */
10341     ptr0[i] = var44;
10342   }
10343 
10344 }
10345 
10346 void
video_orc_unpack_BGR15_be(guint32 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,int n)10347 video_orc_unpack_BGR15_be (guint32 * ORC_RESTRICT d1,
10348     const guint16 * ORC_RESTRICT s1, int n)
10349 {
10350   OrcExecutor _ex, *ex = &_ex;
10351   static volatile int p_inited = 0;
10352   static OrcCode *c = 0;
10353   void (*func) (OrcExecutor *);
10354 
10355   if (!p_inited) {
10356     orc_once_mutex_lock ();
10357     if (!p_inited) {
10358       OrcProgram *p;
10359 
10360 #if 1
10361       static const orc_uint8 bc[] = {
10362         1, 9, 25, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
10363         97, 99, 107, 95, 66, 71, 82, 49, 53, 95, 98, 101, 11, 4, 4, 12,
10364         2, 2, 14, 2, 0, 124, 0, 0, 14, 2, 224, 3, 0, 0, 14, 2,
10365         31, 0, 0, 0, 14, 2, 5, 0, 0, 0, 14, 2, 16, 2, 0, 0,
10366         14, 2, 0, 66, 0, 0, 14, 2, 255, 0, 0, 0, 14, 4, 8, 0,
10367         0, 0, 20, 2, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, 82, 32,
10368         4, 73, 35, 32, 16, 73, 34, 32, 17, 73, 33, 32, 18, 93, 33, 33,
10369         19, 90, 35, 35, 20, 90, 34, 34, 21, 90, 33, 33, 21, 195, 36, 22,
10370         34, 195, 37, 33, 35, 124, 36, 36, 23, 123, 0, 36, 37, 2, 0,
10371       };
10372       p = orc_program_new_from_static_bytecode (bc);
10373       orc_program_set_backup_function (p, _backup_video_orc_unpack_BGR15_be);
10374 #else
10375       p = orc_program_new ();
10376       orc_program_set_name (p, "video_orc_unpack_BGR15_be");
10377       orc_program_set_backup_function (p, _backup_video_orc_unpack_BGR15_be);
10378       orc_program_add_destination (p, 4, "d1");
10379       orc_program_add_source (p, 2, "s1");
10380       orc_program_add_constant (p, 2, 0x00007c00, "c1");
10381       orc_program_add_constant (p, 2, 0x000003e0, "c2");
10382       orc_program_add_constant (p, 2, 0x0000001f, "c3");
10383       orc_program_add_constant (p, 2, 0x00000005, "c4");
10384       orc_program_add_constant (p, 2, 0x00000210, "c5");
10385       orc_program_add_constant (p, 2, 0x00004200, "c6");
10386       orc_program_add_constant (p, 2, 0x000000ff, "c7");
10387       orc_program_add_constant (p, 4, 0x00000008, "c8");
10388       orc_program_add_temporary (p, 2, "t1");
10389       orc_program_add_temporary (p, 2, "t2");
10390       orc_program_add_temporary (p, 2, "t3");
10391       orc_program_add_temporary (p, 2, "t4");
10392       orc_program_add_temporary (p, 4, "t5");
10393       orc_program_add_temporary (p, 4, "t6");
10394 
10395       orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
10396           ORC_VAR_D1);
10397       orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C1,
10398           ORC_VAR_D1);
10399       orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2,
10400           ORC_VAR_D1);
10401       orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C3,
10402           ORC_VAR_D1);
10403       orc_program_append_2 (p, "shlw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4,
10404           ORC_VAR_D1);
10405       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C5,
10406           ORC_VAR_D1);
10407       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C6,
10408           ORC_VAR_D1);
10409       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C6,
10410           ORC_VAR_D1);
10411       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C7, ORC_VAR_T3,
10412           ORC_VAR_D1);
10413       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_T4,
10414           ORC_VAR_D1);
10415       orc_program_append_2 (p, "shll", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C8,
10416           ORC_VAR_D1);
10417       orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_T6,
10418           ORC_VAR_D1);
10419 #endif
10420 
10421       orc_program_compile (p);
10422       c = orc_program_take_code (p);
10423       orc_program_free (p);
10424     }
10425     p_inited = TRUE;
10426     orc_once_mutex_unlock ();
10427   }
10428   ex->arrays[ORC_VAR_A2] = c;
10429   ex->program = 0;
10430 
10431   ex->n = n;
10432   ex->arrays[ORC_VAR_D1] = d1;
10433   ex->arrays[ORC_VAR_S1] = (void *) s1;
10434 
10435   func = c->exec;
10436   func (ex);
10437 }
10438 #endif
10439 
10440 
10441 /* video_orc_unpack_BGR15_le_trunc */
10442 #ifdef DISABLE_ORC
10443 void
video_orc_unpack_BGR15_le_trunc(guint32 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,int n)10444 video_orc_unpack_BGR15_le_trunc (guint32 * ORC_RESTRICT d1,
10445     const guint16 * ORC_RESTRICT s1, int n)
10446 {
10447   int i;
10448   orc_union32 *ORC_RESTRICT ptr0;
10449   const orc_union16 *ORC_RESTRICT ptr4;
10450 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
10451   volatile orc_union16 var38;
10452 #else
10453   orc_union16 var38;
10454 #endif
10455 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
10456   volatile orc_union16 var39;
10457 #else
10458   orc_union16 var39;
10459 #endif
10460 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
10461   volatile orc_union16 var40;
10462 #else
10463   orc_union16 var40;
10464 #endif
10465 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
10466   volatile orc_union16 var41;
10467 #else
10468   orc_union16 var41;
10469 #endif
10470   orc_union32 var42;
10471   orc_union16 var43;
10472   orc_union16 var44;
10473   orc_union16 var45;
10474   orc_union16 var46;
10475   orc_union16 var47;
10476   orc_union16 var48;
10477   orc_union16 var49;
10478   orc_union32 var50;
10479   orc_union32 var51;
10480   orc_union32 var52;
10481 
10482   ptr0 = (orc_union32 *) d1;
10483   ptr4 = (orc_union16 *) s1;
10484 
10485   /* 1: loadpw */
10486   var38.i = 0x00007c00;         /* 31744 or 1.56836e-319f */
10487   /* 3: loadpw */
10488   var39.i = 0x000003e0;         /* 992 or 4.90113e-321f */
10489   /* 5: loadpw */
10490   var40.i = 0x0000001f;         /* 31 or 1.5316e-322f */
10491   /* 10: loadpw */
10492   var41.i = 0x000000ff;         /* 255 or 1.25987e-321f */
10493 
10494   for (i = 0; i < n; i++) {
10495     /* 0: loadw */
10496     var43 = ptr4[i];
10497     /* 2: andw */
10498     var44.i = var43.i & var38.i;
10499     /* 4: andw */
10500     var45.i = var43.i & var39.i;
10501     /* 6: andw */
10502     var46.i = var43.i & var40.i;
10503     /* 7: shruw */
10504     var47.i = ((orc_uint16) var44.i) >> 7;
10505     /* 8: shruw */
10506     var48.i = ((orc_uint16) var45.i) >> 2;
10507     /* 9: shlw */
10508     var49.i = ((orc_uint16) var46.i) << 3;
10509     /* 11: mergewl */
10510     {
10511       orc_union32 _dest;
10512       _dest.x2[0] = var41.i;
10513       _dest.x2[1] = var48.i;
10514       var50.i = _dest.i;
10515     }
10516     /* 12: mergewl */
10517     {
10518       orc_union32 _dest;
10519       _dest.x2[0] = var49.i;
10520       _dest.x2[1] = var47.i;
10521       var51.i = _dest.i;
10522     }
10523     /* 13: shll */
10524     var52.i = ((orc_uint32) var51.i) << 8;
10525     /* 14: orl */
10526     var42.i = var50.i | var52.i;
10527     /* 15: storel */
10528     ptr0[i] = var42;
10529   }
10530 
10531 }
10532 
10533 #else
10534 static void
_backup_video_orc_unpack_BGR15_le_trunc(OrcExecutor * ORC_RESTRICT ex)10535 _backup_video_orc_unpack_BGR15_le_trunc (OrcExecutor * ORC_RESTRICT ex)
10536 {
10537   int i;
10538   int n = ex->n;
10539   orc_union32 *ORC_RESTRICT ptr0;
10540   const orc_union16 *ORC_RESTRICT ptr4;
10541 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
10542   volatile orc_union16 var38;
10543 #else
10544   orc_union16 var38;
10545 #endif
10546 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
10547   volatile orc_union16 var39;
10548 #else
10549   orc_union16 var39;
10550 #endif
10551 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
10552   volatile orc_union16 var40;
10553 #else
10554   orc_union16 var40;
10555 #endif
10556 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
10557   volatile orc_union16 var41;
10558 #else
10559   orc_union16 var41;
10560 #endif
10561   orc_union32 var42;
10562   orc_union16 var43;
10563   orc_union16 var44;
10564   orc_union16 var45;
10565   orc_union16 var46;
10566   orc_union16 var47;
10567   orc_union16 var48;
10568   orc_union16 var49;
10569   orc_union32 var50;
10570   orc_union32 var51;
10571   orc_union32 var52;
10572 
10573   ptr0 = (orc_union32 *) ex->arrays[0];
10574   ptr4 = (orc_union16 *) ex->arrays[4];
10575 
10576   /* 1: loadpw */
10577   var38.i = 0x00007c00;         /* 31744 or 1.56836e-319f */
10578   /* 3: loadpw */
10579   var39.i = 0x000003e0;         /* 992 or 4.90113e-321f */
10580   /* 5: loadpw */
10581   var40.i = 0x0000001f;         /* 31 or 1.5316e-322f */
10582   /* 10: loadpw */
10583   var41.i = 0x000000ff;         /* 255 or 1.25987e-321f */
10584 
10585   for (i = 0; i < n; i++) {
10586     /* 0: loadw */
10587     var43 = ptr4[i];
10588     /* 2: andw */
10589     var44.i = var43.i & var38.i;
10590     /* 4: andw */
10591     var45.i = var43.i & var39.i;
10592     /* 6: andw */
10593     var46.i = var43.i & var40.i;
10594     /* 7: shruw */
10595     var47.i = ((orc_uint16) var44.i) >> 7;
10596     /* 8: shruw */
10597     var48.i = ((orc_uint16) var45.i) >> 2;
10598     /* 9: shlw */
10599     var49.i = ((orc_uint16) var46.i) << 3;
10600     /* 11: mergewl */
10601     {
10602       orc_union32 _dest;
10603       _dest.x2[0] = var41.i;
10604       _dest.x2[1] = var48.i;
10605       var50.i = _dest.i;
10606     }
10607     /* 12: mergewl */
10608     {
10609       orc_union32 _dest;
10610       _dest.x2[0] = var49.i;
10611       _dest.x2[1] = var47.i;
10612       var51.i = _dest.i;
10613     }
10614     /* 13: shll */
10615     var52.i = ((orc_uint32) var51.i) << 8;
10616     /* 14: orl */
10617     var42.i = var50.i | var52.i;
10618     /* 15: storel */
10619     ptr0[i] = var42;
10620   }
10621 
10622 }
10623 
10624 void
video_orc_unpack_BGR15_le_trunc(guint32 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,int n)10625 video_orc_unpack_BGR15_le_trunc (guint32 * ORC_RESTRICT d1,
10626     const guint16 * ORC_RESTRICT s1, int n)
10627 {
10628   OrcExecutor _ex, *ex = &_ex;
10629   static volatile int p_inited = 0;
10630   static OrcCode *c = 0;
10631   void (*func) (OrcExecutor *);
10632 
10633   if (!p_inited) {
10634     orc_once_mutex_lock ();
10635     if (!p_inited) {
10636       OrcProgram *p;
10637 
10638 #if 1
10639       static const orc_uint8 bc[] = {
10640         1, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
10641         97, 99, 107, 95, 66, 71, 82, 49, 53, 95, 108, 101, 95, 116, 114, 117,
10642         110, 99, 11, 4, 4, 12, 2, 2, 14, 2, 0, 124, 0, 0, 14, 2,
10643         224, 3, 0, 0, 14, 2, 31, 0, 0, 0, 14, 2, 7, 0, 0, 0,
10644         14, 2, 2, 0, 0, 0, 14, 2, 3, 0, 0, 0, 14, 2, 255, 0,
10645         0, 0, 14, 4, 8, 0, 0, 0, 20, 2, 20, 2, 20, 2, 20, 2,
10646         20, 4, 20, 4, 82, 32, 4, 73, 35, 32, 16, 73, 34, 32, 17, 73,
10647         33, 32, 18, 95, 35, 35, 19, 95, 34, 34, 20, 93, 33, 33, 21, 195,
10648         36, 22, 34, 195, 37, 33, 35, 124, 37, 37, 23, 123, 0, 36, 37, 2,
10649         0,
10650       };
10651       p = orc_program_new_from_static_bytecode (bc);
10652       orc_program_set_backup_function (p,
10653           _backup_video_orc_unpack_BGR15_le_trunc);
10654 #else
10655       p = orc_program_new ();
10656       orc_program_set_name (p, "video_orc_unpack_BGR15_le_trunc");
10657       orc_program_set_backup_function (p,
10658           _backup_video_orc_unpack_BGR15_le_trunc);
10659       orc_program_add_destination (p, 4, "d1");
10660       orc_program_add_source (p, 2, "s1");
10661       orc_program_add_constant (p, 2, 0x00007c00, "c1");
10662       orc_program_add_constant (p, 2, 0x000003e0, "c2");
10663       orc_program_add_constant (p, 2, 0x0000001f, "c3");
10664       orc_program_add_constant (p, 2, 0x00000007, "c4");
10665       orc_program_add_constant (p, 2, 0x00000002, "c5");
10666       orc_program_add_constant (p, 2, 0x00000003, "c6");
10667       orc_program_add_constant (p, 2, 0x000000ff, "c7");
10668       orc_program_add_constant (p, 4, 0x00000008, "c8");
10669       orc_program_add_temporary (p, 2, "t1");
10670       orc_program_add_temporary (p, 2, "t2");
10671       orc_program_add_temporary (p, 2, "t3");
10672       orc_program_add_temporary (p, 2, "t4");
10673       orc_program_add_temporary (p, 4, "t5");
10674       orc_program_add_temporary (p, 4, "t6");
10675 
10676       orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
10677           ORC_VAR_D1);
10678       orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C1,
10679           ORC_VAR_D1);
10680       orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2,
10681           ORC_VAR_D1);
10682       orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C3,
10683           ORC_VAR_D1);
10684       orc_program_append_2 (p, "shruw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C4,
10685           ORC_VAR_D1);
10686       orc_program_append_2 (p, "shruw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5,
10687           ORC_VAR_D1);
10688       orc_program_append_2 (p, "shlw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C6,
10689           ORC_VAR_D1);
10690       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C7, ORC_VAR_T3,
10691           ORC_VAR_D1);
10692       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_T4,
10693           ORC_VAR_D1);
10694       orc_program_append_2 (p, "shll", 0, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_C8,
10695           ORC_VAR_D1);
10696       orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_T6,
10697           ORC_VAR_D1);
10698 #endif
10699 
10700       orc_program_compile (p);
10701       c = orc_program_take_code (p);
10702       orc_program_free (p);
10703     }
10704     p_inited = TRUE;
10705     orc_once_mutex_unlock ();
10706   }
10707   ex->arrays[ORC_VAR_A2] = c;
10708   ex->program = 0;
10709 
10710   ex->n = n;
10711   ex->arrays[ORC_VAR_D1] = d1;
10712   ex->arrays[ORC_VAR_S1] = (void *) s1;
10713 
10714   func = c->exec;
10715   func (ex);
10716 }
10717 #endif
10718 
10719 
10720 /* video_orc_unpack_BGR15_be_trunc */
10721 #ifdef DISABLE_ORC
10722 void
video_orc_unpack_BGR15_be_trunc(guint32 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,int n)10723 video_orc_unpack_BGR15_be_trunc (guint32 * ORC_RESTRICT d1,
10724     const guint16 * ORC_RESTRICT s1, int n)
10725 {
10726   int i;
10727   orc_union32 *ORC_RESTRICT ptr0;
10728   const orc_union16 *ORC_RESTRICT ptr4;
10729 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
10730   volatile orc_union16 var38;
10731 #else
10732   orc_union16 var38;
10733 #endif
10734 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
10735   volatile orc_union16 var39;
10736 #else
10737   orc_union16 var39;
10738 #endif
10739 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
10740   volatile orc_union16 var40;
10741 #else
10742   orc_union16 var40;
10743 #endif
10744 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
10745   volatile orc_union16 var41;
10746 #else
10747   orc_union16 var41;
10748 #endif
10749   orc_union32 var42;
10750   orc_union16 var43;
10751   orc_union16 var44;
10752   orc_union16 var45;
10753   orc_union16 var46;
10754   orc_union16 var47;
10755   orc_union16 var48;
10756   orc_union16 var49;
10757   orc_union32 var50;
10758   orc_union32 var51;
10759   orc_union32 var52;
10760 
10761   ptr0 = (orc_union32 *) d1;
10762   ptr4 = (orc_union16 *) s1;
10763 
10764   /* 1: loadpw */
10765   var38.i = 0x00007c00;         /* 31744 or 1.56836e-319f */
10766   /* 3: loadpw */
10767   var39.i = 0x000003e0;         /* 992 or 4.90113e-321f */
10768   /* 5: loadpw */
10769   var40.i = 0x0000001f;         /* 31 or 1.5316e-322f */
10770   /* 10: loadpw */
10771   var41.i = 0x000000ff;         /* 255 or 1.25987e-321f */
10772 
10773   for (i = 0; i < n; i++) {
10774     /* 0: loadw */
10775     var43 = ptr4[i];
10776     /* 2: andw */
10777     var44.i = var43.i & var38.i;
10778     /* 4: andw */
10779     var45.i = var43.i & var39.i;
10780     /* 6: andw */
10781     var46.i = var43.i & var40.i;
10782     /* 7: shruw */
10783     var47.i = ((orc_uint16) var44.i) >> 7;
10784     /* 8: shruw */
10785     var48.i = ((orc_uint16) var45.i) >> 2;
10786     /* 9: shlw */
10787     var49.i = ((orc_uint16) var46.i) << 3;
10788     /* 11: mergewl */
10789     {
10790       orc_union32 _dest;
10791       _dest.x2[0] = var41.i;
10792       _dest.x2[1] = var48.i;
10793       var50.i = _dest.i;
10794     }
10795     /* 12: mergewl */
10796     {
10797       orc_union32 _dest;
10798       _dest.x2[0] = var49.i;
10799       _dest.x2[1] = var47.i;
10800       var51.i = _dest.i;
10801     }
10802     /* 13: shll */
10803     var52.i = ((orc_uint32) var50.i) << 8;
10804     /* 14: orl */
10805     var42.i = var52.i | var51.i;
10806     /* 15: storel */
10807     ptr0[i] = var42;
10808   }
10809 
10810 }
10811 
10812 #else
10813 static void
_backup_video_orc_unpack_BGR15_be_trunc(OrcExecutor * ORC_RESTRICT ex)10814 _backup_video_orc_unpack_BGR15_be_trunc (OrcExecutor * ORC_RESTRICT ex)
10815 {
10816   int i;
10817   int n = ex->n;
10818   orc_union32 *ORC_RESTRICT ptr0;
10819   const orc_union16 *ORC_RESTRICT ptr4;
10820 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
10821   volatile orc_union16 var38;
10822 #else
10823   orc_union16 var38;
10824 #endif
10825 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
10826   volatile orc_union16 var39;
10827 #else
10828   orc_union16 var39;
10829 #endif
10830 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
10831   volatile orc_union16 var40;
10832 #else
10833   orc_union16 var40;
10834 #endif
10835 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
10836   volatile orc_union16 var41;
10837 #else
10838   orc_union16 var41;
10839 #endif
10840   orc_union32 var42;
10841   orc_union16 var43;
10842   orc_union16 var44;
10843   orc_union16 var45;
10844   orc_union16 var46;
10845   orc_union16 var47;
10846   orc_union16 var48;
10847   orc_union16 var49;
10848   orc_union32 var50;
10849   orc_union32 var51;
10850   orc_union32 var52;
10851 
10852   ptr0 = (orc_union32 *) ex->arrays[0];
10853   ptr4 = (orc_union16 *) ex->arrays[4];
10854 
10855   /* 1: loadpw */
10856   var38.i = 0x00007c00;         /* 31744 or 1.56836e-319f */
10857   /* 3: loadpw */
10858   var39.i = 0x000003e0;         /* 992 or 4.90113e-321f */
10859   /* 5: loadpw */
10860   var40.i = 0x0000001f;         /* 31 or 1.5316e-322f */
10861   /* 10: loadpw */
10862   var41.i = 0x000000ff;         /* 255 or 1.25987e-321f */
10863 
10864   for (i = 0; i < n; i++) {
10865     /* 0: loadw */
10866     var43 = ptr4[i];
10867     /* 2: andw */
10868     var44.i = var43.i & var38.i;
10869     /* 4: andw */
10870     var45.i = var43.i & var39.i;
10871     /* 6: andw */
10872     var46.i = var43.i & var40.i;
10873     /* 7: shruw */
10874     var47.i = ((orc_uint16) var44.i) >> 7;
10875     /* 8: shruw */
10876     var48.i = ((orc_uint16) var45.i) >> 2;
10877     /* 9: shlw */
10878     var49.i = ((orc_uint16) var46.i) << 3;
10879     /* 11: mergewl */
10880     {
10881       orc_union32 _dest;
10882       _dest.x2[0] = var41.i;
10883       _dest.x2[1] = var48.i;
10884       var50.i = _dest.i;
10885     }
10886     /* 12: mergewl */
10887     {
10888       orc_union32 _dest;
10889       _dest.x2[0] = var49.i;
10890       _dest.x2[1] = var47.i;
10891       var51.i = _dest.i;
10892     }
10893     /* 13: shll */
10894     var52.i = ((orc_uint32) var50.i) << 8;
10895     /* 14: orl */
10896     var42.i = var52.i | var51.i;
10897     /* 15: storel */
10898     ptr0[i] = var42;
10899   }
10900 
10901 }
10902 
10903 void
video_orc_unpack_BGR15_be_trunc(guint32 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,int n)10904 video_orc_unpack_BGR15_be_trunc (guint32 * ORC_RESTRICT d1,
10905     const guint16 * ORC_RESTRICT s1, int n)
10906 {
10907   OrcExecutor _ex, *ex = &_ex;
10908   static volatile int p_inited = 0;
10909   static OrcCode *c = 0;
10910   void (*func) (OrcExecutor *);
10911 
10912   if (!p_inited) {
10913     orc_once_mutex_lock ();
10914     if (!p_inited) {
10915       OrcProgram *p;
10916 
10917 #if 1
10918       static const orc_uint8 bc[] = {
10919         1, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
10920         97, 99, 107, 95, 66, 71, 82, 49, 53, 95, 98, 101, 95, 116, 114, 117,
10921         110, 99, 11, 4, 4, 12, 2, 2, 14, 2, 0, 124, 0, 0, 14, 2,
10922         224, 3, 0, 0, 14, 2, 31, 0, 0, 0, 14, 2, 7, 0, 0, 0,
10923         14, 2, 2, 0, 0, 0, 14, 2, 3, 0, 0, 0, 14, 2, 255, 0,
10924         0, 0, 14, 4, 8, 0, 0, 0, 20, 2, 20, 2, 20, 2, 20, 2,
10925         20, 4, 20, 4, 82, 32, 4, 73, 35, 32, 16, 73, 34, 32, 17, 73,
10926         33, 32, 18, 95, 35, 35, 19, 95, 34, 34, 20, 93, 33, 33, 21, 195,
10927         36, 22, 34, 195, 37, 33, 35, 124, 36, 36, 23, 123, 0, 36, 37, 2,
10928         0,
10929       };
10930       p = orc_program_new_from_static_bytecode (bc);
10931       orc_program_set_backup_function (p,
10932           _backup_video_orc_unpack_BGR15_be_trunc);
10933 #else
10934       p = orc_program_new ();
10935       orc_program_set_name (p, "video_orc_unpack_BGR15_be_trunc");
10936       orc_program_set_backup_function (p,
10937           _backup_video_orc_unpack_BGR15_be_trunc);
10938       orc_program_add_destination (p, 4, "d1");
10939       orc_program_add_source (p, 2, "s1");
10940       orc_program_add_constant (p, 2, 0x00007c00, "c1");
10941       orc_program_add_constant (p, 2, 0x000003e0, "c2");
10942       orc_program_add_constant (p, 2, 0x0000001f, "c3");
10943       orc_program_add_constant (p, 2, 0x00000007, "c4");
10944       orc_program_add_constant (p, 2, 0x00000002, "c5");
10945       orc_program_add_constant (p, 2, 0x00000003, "c6");
10946       orc_program_add_constant (p, 2, 0x000000ff, "c7");
10947       orc_program_add_constant (p, 4, 0x00000008, "c8");
10948       orc_program_add_temporary (p, 2, "t1");
10949       orc_program_add_temporary (p, 2, "t2");
10950       orc_program_add_temporary (p, 2, "t3");
10951       orc_program_add_temporary (p, 2, "t4");
10952       orc_program_add_temporary (p, 4, "t5");
10953       orc_program_add_temporary (p, 4, "t6");
10954 
10955       orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
10956           ORC_VAR_D1);
10957       orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C1,
10958           ORC_VAR_D1);
10959       orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2,
10960           ORC_VAR_D1);
10961       orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C3,
10962           ORC_VAR_D1);
10963       orc_program_append_2 (p, "shruw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C4,
10964           ORC_VAR_D1);
10965       orc_program_append_2 (p, "shruw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5,
10966           ORC_VAR_D1);
10967       orc_program_append_2 (p, "shlw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C6,
10968           ORC_VAR_D1);
10969       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C7, ORC_VAR_T3,
10970           ORC_VAR_D1);
10971       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_T4,
10972           ORC_VAR_D1);
10973       orc_program_append_2 (p, "shll", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C8,
10974           ORC_VAR_D1);
10975       orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_T6,
10976           ORC_VAR_D1);
10977 #endif
10978 
10979       orc_program_compile (p);
10980       c = orc_program_take_code (p);
10981       orc_program_free (p);
10982     }
10983     p_inited = TRUE;
10984     orc_once_mutex_unlock ();
10985   }
10986   ex->arrays[ORC_VAR_A2] = c;
10987   ex->program = 0;
10988 
10989   ex->n = n;
10990   ex->arrays[ORC_VAR_D1] = d1;
10991   ex->arrays[ORC_VAR_S1] = (void *) s1;
10992 
10993   func = c->exec;
10994   func (ex);
10995 }
10996 #endif
10997 
10998 
10999 /* video_orc_pack_BGR15_le */
11000 #ifdef DISABLE_ORC
11001 void
video_orc_pack_BGR15_le(guint16 * ORC_RESTRICT d1,const guint32 * ORC_RESTRICT s1,int n)11002 video_orc_pack_BGR15_le (guint16 * ORC_RESTRICT d1,
11003     const guint32 * ORC_RESTRICT s1, int n)
11004 {
11005   int i;
11006   orc_union16 *ORC_RESTRICT ptr0;
11007   const orc_union32 *ORC_RESTRICT ptr4;
11008 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11009   volatile orc_union32 var37;
11010 #else
11011   orc_union32 var37;
11012 #endif
11013 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11014   volatile orc_union32 var38;
11015 #else
11016   orc_union32 var38;
11017 #endif
11018 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11019   volatile orc_union32 var39;
11020 #else
11021   orc_union32 var39;
11022 #endif
11023   orc_union16 var40;
11024   orc_union32 var41;
11025   orc_union32 var42;
11026   orc_union32 var43;
11027   orc_union32 var44;
11028   orc_union32 var45;
11029   orc_union32 var46;
11030   orc_union32 var47;
11031   orc_union32 var48;
11032   orc_union32 var49;
11033 
11034   ptr0 = (orc_union16 *) d1;
11035   ptr4 = (orc_union32 *) s1;
11036 
11037   /* 1: loadpl */
11038   var37.i = 0x0000f800;         /* 63488 or 3.13672e-319f */
11039   /* 3: loadpl */
11040   var38.i = 0x00f80000;         /* 16252928 or 8.03001e-317f */
11041   /* 5: loadpl */
11042   var39.i = 0xf8000000;         /* -134217728 or 2.05568e-314f */
11043 
11044   for (i = 0; i < n; i++) {
11045     /* 0: loadl */
11046     var41 = ptr4[i];
11047     /* 2: andl */
11048     var42.i = var41.i & var37.i;
11049     /* 4: andl */
11050     var43.i = var41.i & var38.i;
11051     /* 6: andl */
11052     var44.i = var41.i & var39.i;
11053     /* 7: shrul */
11054     var45.i = ((orc_uint32) var44.i) >> 17;
11055     /* 8: shrul */
11056     var46.i = ((orc_uint32) var43.i) >> 14;
11057     /* 9: shrul */
11058     var47.i = ((orc_uint32) var42.i) >> 11;
11059     /* 10: orl */
11060     var48.i = var47.i | var46.i;
11061     /* 11: orl */
11062     var49.i = var48.i | var45.i;
11063     /* 12: select0lw */
11064     {
11065       orc_union32 _src;
11066       _src.i = var49.i;
11067       var40.i = _src.x2[0];
11068     }
11069     /* 13: storew */
11070     ptr0[i] = var40;
11071   }
11072 
11073 }
11074 
11075 #else
11076 static void
_backup_video_orc_pack_BGR15_le(OrcExecutor * ORC_RESTRICT ex)11077 _backup_video_orc_pack_BGR15_le (OrcExecutor * ORC_RESTRICT ex)
11078 {
11079   int i;
11080   int n = ex->n;
11081   orc_union16 *ORC_RESTRICT ptr0;
11082   const orc_union32 *ORC_RESTRICT ptr4;
11083 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11084   volatile orc_union32 var37;
11085 #else
11086   orc_union32 var37;
11087 #endif
11088 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11089   volatile orc_union32 var38;
11090 #else
11091   orc_union32 var38;
11092 #endif
11093 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11094   volatile orc_union32 var39;
11095 #else
11096   orc_union32 var39;
11097 #endif
11098   orc_union16 var40;
11099   orc_union32 var41;
11100   orc_union32 var42;
11101   orc_union32 var43;
11102   orc_union32 var44;
11103   orc_union32 var45;
11104   orc_union32 var46;
11105   orc_union32 var47;
11106   orc_union32 var48;
11107   orc_union32 var49;
11108 
11109   ptr0 = (orc_union16 *) ex->arrays[0];
11110   ptr4 = (orc_union32 *) ex->arrays[4];
11111 
11112   /* 1: loadpl */
11113   var37.i = 0x0000f800;         /* 63488 or 3.13672e-319f */
11114   /* 3: loadpl */
11115   var38.i = 0x00f80000;         /* 16252928 or 8.03001e-317f */
11116   /* 5: loadpl */
11117   var39.i = 0xf8000000;         /* -134217728 or 2.05568e-314f */
11118 
11119   for (i = 0; i < n; i++) {
11120     /* 0: loadl */
11121     var41 = ptr4[i];
11122     /* 2: andl */
11123     var42.i = var41.i & var37.i;
11124     /* 4: andl */
11125     var43.i = var41.i & var38.i;
11126     /* 6: andl */
11127     var44.i = var41.i & var39.i;
11128     /* 7: shrul */
11129     var45.i = ((orc_uint32) var44.i) >> 17;
11130     /* 8: shrul */
11131     var46.i = ((orc_uint32) var43.i) >> 14;
11132     /* 9: shrul */
11133     var47.i = ((orc_uint32) var42.i) >> 11;
11134     /* 10: orl */
11135     var48.i = var47.i | var46.i;
11136     /* 11: orl */
11137     var49.i = var48.i | var45.i;
11138     /* 12: select0lw */
11139     {
11140       orc_union32 _src;
11141       _src.i = var49.i;
11142       var40.i = _src.x2[0];
11143     }
11144     /* 13: storew */
11145     ptr0[i] = var40;
11146   }
11147 
11148 }
11149 
11150 void
video_orc_pack_BGR15_le(guint16 * ORC_RESTRICT d1,const guint32 * ORC_RESTRICT s1,int n)11151 video_orc_pack_BGR15_le (guint16 * ORC_RESTRICT d1,
11152     const guint32 * ORC_RESTRICT s1, int n)
11153 {
11154   OrcExecutor _ex, *ex = &_ex;
11155   static volatile int p_inited = 0;
11156   static OrcCode *c = 0;
11157   void (*func) (OrcExecutor *);
11158 
11159   if (!p_inited) {
11160     orc_once_mutex_lock ();
11161     if (!p_inited) {
11162       OrcProgram *p;
11163 
11164 #if 1
11165       static const orc_uint8 bc[] = {
11166         1, 9, 23, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
11167         107, 95, 66, 71, 82, 49, 53, 95, 108, 101, 11, 2, 2, 12, 4, 4,
11168         14, 4, 0, 248, 0, 0, 14, 4, 0, 0, 248, 0, 14, 4, 0, 0,
11169         0, 248, 14, 4, 17, 0, 0, 0, 14, 4, 14, 0, 0, 0, 14, 4,
11170         11, 0, 0, 0, 20, 4, 20, 4, 20, 4, 20, 4, 20, 4, 113, 32,
11171         4, 106, 33, 32, 16, 106, 34, 32, 17, 106, 35, 32, 18, 126, 35, 35,
11172         19, 126, 34, 34, 20, 126, 33, 33, 21, 123, 36, 33, 34, 123, 36, 36,
11173         35, 190, 0, 36, 2, 0,
11174       };
11175       p = orc_program_new_from_static_bytecode (bc);
11176       orc_program_set_backup_function (p, _backup_video_orc_pack_BGR15_le);
11177 #else
11178       p = orc_program_new ();
11179       orc_program_set_name (p, "video_orc_pack_BGR15_le");
11180       orc_program_set_backup_function (p, _backup_video_orc_pack_BGR15_le);
11181       orc_program_add_destination (p, 2, "d1");
11182       orc_program_add_source (p, 4, "s1");
11183       orc_program_add_constant (p, 4, 0x0000f800, "c1");
11184       orc_program_add_constant (p, 4, 0x00f80000, "c2");
11185       orc_program_add_constant (p, 4, 0xf8000000, "c3");
11186       orc_program_add_constant (p, 4, 0x00000011, "c4");
11187       orc_program_add_constant (p, 4, 0x0000000e, "c5");
11188       orc_program_add_constant (p, 4, 0x0000000b, "c6");
11189       orc_program_add_temporary (p, 4, "t1");
11190       orc_program_add_temporary (p, 4, "t2");
11191       orc_program_add_temporary (p, 4, "t3");
11192       orc_program_add_temporary (p, 4, "t4");
11193       orc_program_add_temporary (p, 4, "t5");
11194 
11195       orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
11196           ORC_VAR_D1);
11197       orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1,
11198           ORC_VAR_D1);
11199       orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2,
11200           ORC_VAR_D1);
11201       orc_program_append_2 (p, "andl", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3,
11202           ORC_VAR_D1);
11203       orc_program_append_2 (p, "shrul", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C4,
11204           ORC_VAR_D1);
11205       orc_program_append_2 (p, "shrul", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5,
11206           ORC_VAR_D1);
11207       orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C6,
11208           ORC_VAR_D1);
11209       orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_T3,
11210           ORC_VAR_D1);
11211       orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4,
11212           ORC_VAR_D1);
11213       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_D1, ORC_VAR_T5,
11214           ORC_VAR_D1, ORC_VAR_D1);
11215 #endif
11216 
11217       orc_program_compile (p);
11218       c = orc_program_take_code (p);
11219       orc_program_free (p);
11220     }
11221     p_inited = TRUE;
11222     orc_once_mutex_unlock ();
11223   }
11224   ex->arrays[ORC_VAR_A2] = c;
11225   ex->program = 0;
11226 
11227   ex->n = n;
11228   ex->arrays[ORC_VAR_D1] = d1;
11229   ex->arrays[ORC_VAR_S1] = (void *) s1;
11230 
11231   func = c->exec;
11232   func (ex);
11233 }
11234 #endif
11235 
11236 
11237 /* video_orc_pack_BGR15_be */
11238 #ifdef DISABLE_ORC
11239 void
video_orc_pack_BGR15_be(guint16 * ORC_RESTRICT d1,const guint32 * ORC_RESTRICT s1,int n)11240 video_orc_pack_BGR15_be (guint16 * ORC_RESTRICT d1,
11241     const guint32 * ORC_RESTRICT s1, int n)
11242 {
11243   int i;
11244   orc_union16 *ORC_RESTRICT ptr0;
11245   const orc_union32 *ORC_RESTRICT ptr4;
11246 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11247   volatile orc_union32 var37;
11248 #else
11249   orc_union32 var37;
11250 #endif
11251 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11252   volatile orc_union32 var38;
11253 #else
11254   orc_union32 var38;
11255 #endif
11256 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11257   volatile orc_union32 var39;
11258 #else
11259   orc_union32 var39;
11260 #endif
11261   orc_union16 var40;
11262   orc_union32 var41;
11263   orc_union32 var42;
11264   orc_union32 var43;
11265   orc_union32 var44;
11266   orc_union32 var45;
11267   orc_union32 var46;
11268   orc_union32 var47;
11269   orc_union32 var48;
11270   orc_union32 var49;
11271 
11272   ptr0 = (orc_union16 *) d1;
11273   ptr4 = (orc_union32 *) s1;
11274 
11275   /* 1: loadpl */
11276   var37.i = 0x00f80000;         /* 16252928 or 8.03001e-317f */
11277   /* 3: loadpl */
11278   var38.i = 0x0000f800;         /* 63488 or 3.13672e-319f */
11279   /* 5: loadpl */
11280   var39.i = 0x000000f8;         /* 248 or 1.22528e-321f */
11281 
11282   for (i = 0; i < n; i++) {
11283     /* 0: loadl */
11284     var41 = ptr4[i];
11285     /* 2: andl */
11286     var42.i = var41.i & var37.i;
11287     /* 4: andl */
11288     var43.i = var41.i & var38.i;
11289     /* 6: andl */
11290     var44.i = var41.i & var39.i;
11291     /* 7: shll */
11292     var45.i = ((orc_uint32) var44.i) << 7;
11293     /* 8: shrul */
11294     var46.i = ((orc_uint32) var43.i) >> 6;
11295     /* 9: shrul */
11296     var47.i = ((orc_uint32) var42.i) >> 19;
11297     /* 10: orl */
11298     var48.i = var47.i | var46.i;
11299     /* 11: orl */
11300     var49.i = var48.i | var45.i;
11301     /* 12: select1lw */
11302     {
11303       orc_union32 _src;
11304       _src.i = var49.i;
11305       var40.i = _src.x2[1];
11306     }
11307     /* 13: storew */
11308     ptr0[i] = var40;
11309   }
11310 
11311 }
11312 
11313 #else
11314 static void
_backup_video_orc_pack_BGR15_be(OrcExecutor * ORC_RESTRICT ex)11315 _backup_video_orc_pack_BGR15_be (OrcExecutor * ORC_RESTRICT ex)
11316 {
11317   int i;
11318   int n = ex->n;
11319   orc_union16 *ORC_RESTRICT ptr0;
11320   const orc_union32 *ORC_RESTRICT ptr4;
11321 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11322   volatile orc_union32 var37;
11323 #else
11324   orc_union32 var37;
11325 #endif
11326 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11327   volatile orc_union32 var38;
11328 #else
11329   orc_union32 var38;
11330 #endif
11331 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11332   volatile orc_union32 var39;
11333 #else
11334   orc_union32 var39;
11335 #endif
11336   orc_union16 var40;
11337   orc_union32 var41;
11338   orc_union32 var42;
11339   orc_union32 var43;
11340   orc_union32 var44;
11341   orc_union32 var45;
11342   orc_union32 var46;
11343   orc_union32 var47;
11344   orc_union32 var48;
11345   orc_union32 var49;
11346 
11347   ptr0 = (orc_union16 *) ex->arrays[0];
11348   ptr4 = (orc_union32 *) ex->arrays[4];
11349 
11350   /* 1: loadpl */
11351   var37.i = 0x00f80000;         /* 16252928 or 8.03001e-317f */
11352   /* 3: loadpl */
11353   var38.i = 0x0000f800;         /* 63488 or 3.13672e-319f */
11354   /* 5: loadpl */
11355   var39.i = 0x000000f8;         /* 248 or 1.22528e-321f */
11356 
11357   for (i = 0; i < n; i++) {
11358     /* 0: loadl */
11359     var41 = ptr4[i];
11360     /* 2: andl */
11361     var42.i = var41.i & var37.i;
11362     /* 4: andl */
11363     var43.i = var41.i & var38.i;
11364     /* 6: andl */
11365     var44.i = var41.i & var39.i;
11366     /* 7: shll */
11367     var45.i = ((orc_uint32) var44.i) << 7;
11368     /* 8: shrul */
11369     var46.i = ((orc_uint32) var43.i) >> 6;
11370     /* 9: shrul */
11371     var47.i = ((orc_uint32) var42.i) >> 19;
11372     /* 10: orl */
11373     var48.i = var47.i | var46.i;
11374     /* 11: orl */
11375     var49.i = var48.i | var45.i;
11376     /* 12: select1lw */
11377     {
11378       orc_union32 _src;
11379       _src.i = var49.i;
11380       var40.i = _src.x2[1];
11381     }
11382     /* 13: storew */
11383     ptr0[i] = var40;
11384   }
11385 
11386 }
11387 
11388 void
video_orc_pack_BGR15_be(guint16 * ORC_RESTRICT d1,const guint32 * ORC_RESTRICT s1,int n)11389 video_orc_pack_BGR15_be (guint16 * ORC_RESTRICT d1,
11390     const guint32 * ORC_RESTRICT s1, int n)
11391 {
11392   OrcExecutor _ex, *ex = &_ex;
11393   static volatile int p_inited = 0;
11394   static OrcCode *c = 0;
11395   void (*func) (OrcExecutor *);
11396 
11397   if (!p_inited) {
11398     orc_once_mutex_lock ();
11399     if (!p_inited) {
11400       OrcProgram *p;
11401 
11402 #if 1
11403       static const orc_uint8 bc[] = {
11404         1, 9, 23, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
11405         107, 95, 66, 71, 82, 49, 53, 95, 98, 101, 11, 2, 2, 12, 4, 4,
11406         14, 4, 0, 0, 248, 0, 14, 4, 0, 248, 0, 0, 14, 4, 248, 0,
11407         0, 0, 14, 4, 7, 0, 0, 0, 14, 4, 6, 0, 0, 0, 14, 4,
11408         19, 0, 0, 0, 20, 4, 20, 4, 20, 4, 20, 4, 20, 4, 113, 32,
11409         4, 106, 33, 32, 16, 106, 34, 32, 17, 106, 35, 32, 18, 124, 35, 35,
11410         19, 126, 34, 34, 20, 126, 33, 33, 21, 123, 36, 33, 34, 123, 36, 36,
11411         35, 191, 0, 36, 2, 0,
11412       };
11413       p = orc_program_new_from_static_bytecode (bc);
11414       orc_program_set_backup_function (p, _backup_video_orc_pack_BGR15_be);
11415 #else
11416       p = orc_program_new ();
11417       orc_program_set_name (p, "video_orc_pack_BGR15_be");
11418       orc_program_set_backup_function (p, _backup_video_orc_pack_BGR15_be);
11419       orc_program_add_destination (p, 2, "d1");
11420       orc_program_add_source (p, 4, "s1");
11421       orc_program_add_constant (p, 4, 0x00f80000, "c1");
11422       orc_program_add_constant (p, 4, 0x0000f800, "c2");
11423       orc_program_add_constant (p, 4, 0x000000f8, "c3");
11424       orc_program_add_constant (p, 4, 0x00000007, "c4");
11425       orc_program_add_constant (p, 4, 0x00000006, "c5");
11426       orc_program_add_constant (p, 4, 0x00000013, "c6");
11427       orc_program_add_temporary (p, 4, "t1");
11428       orc_program_add_temporary (p, 4, "t2");
11429       orc_program_add_temporary (p, 4, "t3");
11430       orc_program_add_temporary (p, 4, "t4");
11431       orc_program_add_temporary (p, 4, "t5");
11432 
11433       orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
11434           ORC_VAR_D1);
11435       orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1,
11436           ORC_VAR_D1);
11437       orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2,
11438           ORC_VAR_D1);
11439       orc_program_append_2 (p, "andl", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3,
11440           ORC_VAR_D1);
11441       orc_program_append_2 (p, "shll", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C4,
11442           ORC_VAR_D1);
11443       orc_program_append_2 (p, "shrul", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5,
11444           ORC_VAR_D1);
11445       orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C6,
11446           ORC_VAR_D1);
11447       orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_T3,
11448           ORC_VAR_D1);
11449       orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4,
11450           ORC_VAR_D1);
11451       orc_program_append_2 (p, "select1lw", 0, ORC_VAR_D1, ORC_VAR_T5,
11452           ORC_VAR_D1, ORC_VAR_D1);
11453 #endif
11454 
11455       orc_program_compile (p);
11456       c = orc_program_take_code (p);
11457       orc_program_free (p);
11458     }
11459     p_inited = TRUE;
11460     orc_once_mutex_unlock ();
11461   }
11462   ex->arrays[ORC_VAR_A2] = c;
11463   ex->program = 0;
11464 
11465   ex->n = n;
11466   ex->arrays[ORC_VAR_D1] = d1;
11467   ex->arrays[ORC_VAR_S1] = (void *) s1;
11468 
11469   func = c->exec;
11470   func (ex);
11471 }
11472 #endif
11473 
11474 
11475 /* video_orc_unpack_RGB16 */
11476 #ifdef DISABLE_ORC
11477 void
video_orc_unpack_RGB16(guint32 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,int n)11478 video_orc_unpack_RGB16 (guint32 * ORC_RESTRICT d1,
11479     const guint16 * ORC_RESTRICT s1, int n)
11480 {
11481   int i;
11482   orc_union32 *ORC_RESTRICT ptr0;
11483   const orc_union16 *ORC_RESTRICT ptr4;
11484 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11485   volatile orc_union16 var39;
11486 #else
11487   orc_union16 var39;
11488 #endif
11489 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11490   volatile orc_union16 var40;
11491 #else
11492   orc_union16 var40;
11493 #endif
11494 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11495   volatile orc_union16 var41;
11496 #else
11497   orc_union16 var41;
11498 #endif
11499 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11500   volatile orc_union16 var42;
11501 #else
11502   orc_union16 var42;
11503 #endif
11504 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11505   volatile orc_union16 var43;
11506 #else
11507   orc_union16 var43;
11508 #endif
11509 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11510   volatile orc_union16 var44;
11511 #else
11512   orc_union16 var44;
11513 #endif
11514   orc_union32 var45;
11515   orc_union16 var46;
11516   orc_union16 var47;
11517   orc_union16 var48;
11518   orc_union16 var49;
11519   orc_union16 var50;
11520   orc_union16 var51;
11521   orc_union16 var52;
11522   orc_union16 var53;
11523   orc_union16 var54;
11524   orc_union32 var55;
11525   orc_union32 var56;
11526   orc_union64 var57;
11527 
11528   ptr0 = (orc_union32 *) d1;
11529   ptr4 = (orc_union16 *) s1;
11530 
11531   /* 1: loadpw */
11532   var39.i = 0x0000f800;         /* 63488 or 3.13672e-319f */
11533   /* 3: loadpw */
11534   var40.i = 0x000007e0;         /* 2016 or 9.96036e-321f */
11535   /* 5: loadpw */
11536   var41.i = 0x0000001f;         /* 31 or 1.5316e-322f */
11537   /* 9: loadpw */
11538   var42.i = 0x00004200;         /* 16896 or 8.34773e-320f */
11539   /* 11: loadpw */
11540   var43.i = 0x00002080;         /* 8320 or 4.11063e-320f */
11541   /* 14: loadpw */
11542   var44.i = 0x000000ff;         /* 255 or 1.25987e-321f */
11543 
11544   for (i = 0; i < n; i++) {
11545     /* 0: loadw */
11546     var46 = ptr4[i];
11547     /* 2: andw */
11548     var47.i = var46.i & var39.i;
11549     /* 4: andw */
11550     var48.i = var46.i & var40.i;
11551     /* 6: andw */
11552     var49.i = var46.i & var41.i;
11553     /* 7: shruw */
11554     var50.i = ((orc_uint16) var47.i) >> 6;
11555     /* 8: shlw */
11556     var51.i = ((orc_uint16) var49.i) << 5;
11557     /* 10: mulhsw */
11558     var52.i = (var50.i * var42.i) >> 16;
11559     /* 12: mulhsw */
11560     var53.i = (var48.i * var43.i) >> 16;
11561     /* 13: mulhsw */
11562     var54.i = (var51.i * var42.i) >> 16;
11563     /* 15: mergewl */
11564     {
11565       orc_union32 _dest;
11566       _dest.x2[0] = var44.i;
11567       _dest.x2[1] = var52.i;
11568       var55.i = _dest.i;
11569     }
11570     /* 16: mergewl */
11571     {
11572       orc_union32 _dest;
11573       _dest.x2[0] = var53.i;
11574       _dest.x2[1] = var54.i;
11575       var56.i = _dest.i;
11576     }
11577     /* 17: mergelq */
11578     {
11579       orc_union64 _dest;
11580       _dest.x2[0] = var55.i;
11581       _dest.x2[1] = var56.i;
11582       var57.i = _dest.i;
11583     }
11584     /* 18: convsuswb */
11585     var45.x4[0] = ORC_CLAMP_UB (var57.x4[0]);
11586     var45.x4[1] = ORC_CLAMP_UB (var57.x4[1]);
11587     var45.x4[2] = ORC_CLAMP_UB (var57.x4[2]);
11588     var45.x4[3] = ORC_CLAMP_UB (var57.x4[3]);
11589     /* 19: storel */
11590     ptr0[i] = var45;
11591   }
11592 
11593 }
11594 
11595 #else
11596 static void
_backup_video_orc_unpack_RGB16(OrcExecutor * ORC_RESTRICT ex)11597 _backup_video_orc_unpack_RGB16 (OrcExecutor * ORC_RESTRICT ex)
11598 {
11599   int i;
11600   int n = ex->n;
11601   orc_union32 *ORC_RESTRICT ptr0;
11602   const orc_union16 *ORC_RESTRICT ptr4;
11603 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11604   volatile orc_union16 var39;
11605 #else
11606   orc_union16 var39;
11607 #endif
11608 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11609   volatile orc_union16 var40;
11610 #else
11611   orc_union16 var40;
11612 #endif
11613 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11614   volatile orc_union16 var41;
11615 #else
11616   orc_union16 var41;
11617 #endif
11618 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11619   volatile orc_union16 var42;
11620 #else
11621   orc_union16 var42;
11622 #endif
11623 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11624   volatile orc_union16 var43;
11625 #else
11626   orc_union16 var43;
11627 #endif
11628 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11629   volatile orc_union16 var44;
11630 #else
11631   orc_union16 var44;
11632 #endif
11633   orc_union32 var45;
11634   orc_union16 var46;
11635   orc_union16 var47;
11636   orc_union16 var48;
11637   orc_union16 var49;
11638   orc_union16 var50;
11639   orc_union16 var51;
11640   orc_union16 var52;
11641   orc_union16 var53;
11642   orc_union16 var54;
11643   orc_union32 var55;
11644   orc_union32 var56;
11645   orc_union64 var57;
11646 
11647   ptr0 = (orc_union32 *) ex->arrays[0];
11648   ptr4 = (orc_union16 *) ex->arrays[4];
11649 
11650   /* 1: loadpw */
11651   var39.i = 0x0000f800;         /* 63488 or 3.13672e-319f */
11652   /* 3: loadpw */
11653   var40.i = 0x000007e0;         /* 2016 or 9.96036e-321f */
11654   /* 5: loadpw */
11655   var41.i = 0x0000001f;         /* 31 or 1.5316e-322f */
11656   /* 9: loadpw */
11657   var42.i = 0x00004200;         /* 16896 or 8.34773e-320f */
11658   /* 11: loadpw */
11659   var43.i = 0x00002080;         /* 8320 or 4.11063e-320f */
11660   /* 14: loadpw */
11661   var44.i = 0x000000ff;         /* 255 or 1.25987e-321f */
11662 
11663   for (i = 0; i < n; i++) {
11664     /* 0: loadw */
11665     var46 = ptr4[i];
11666     /* 2: andw */
11667     var47.i = var46.i & var39.i;
11668     /* 4: andw */
11669     var48.i = var46.i & var40.i;
11670     /* 6: andw */
11671     var49.i = var46.i & var41.i;
11672     /* 7: shruw */
11673     var50.i = ((orc_uint16) var47.i) >> 6;
11674     /* 8: shlw */
11675     var51.i = ((orc_uint16) var49.i) << 5;
11676     /* 10: mulhsw */
11677     var52.i = (var50.i * var42.i) >> 16;
11678     /* 12: mulhsw */
11679     var53.i = (var48.i * var43.i) >> 16;
11680     /* 13: mulhsw */
11681     var54.i = (var51.i * var42.i) >> 16;
11682     /* 15: mergewl */
11683     {
11684       orc_union32 _dest;
11685       _dest.x2[0] = var44.i;
11686       _dest.x2[1] = var52.i;
11687       var55.i = _dest.i;
11688     }
11689     /* 16: mergewl */
11690     {
11691       orc_union32 _dest;
11692       _dest.x2[0] = var53.i;
11693       _dest.x2[1] = var54.i;
11694       var56.i = _dest.i;
11695     }
11696     /* 17: mergelq */
11697     {
11698       orc_union64 _dest;
11699       _dest.x2[0] = var55.i;
11700       _dest.x2[1] = var56.i;
11701       var57.i = _dest.i;
11702     }
11703     /* 18: convsuswb */
11704     var45.x4[0] = ORC_CLAMP_UB (var57.x4[0]);
11705     var45.x4[1] = ORC_CLAMP_UB (var57.x4[1]);
11706     var45.x4[2] = ORC_CLAMP_UB (var57.x4[2]);
11707     var45.x4[3] = ORC_CLAMP_UB (var57.x4[3]);
11708     /* 19: storel */
11709     ptr0[i] = var45;
11710   }
11711 
11712 }
11713 
11714 void
video_orc_unpack_RGB16(guint32 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,int n)11715 video_orc_unpack_RGB16 (guint32 * ORC_RESTRICT d1,
11716     const guint16 * ORC_RESTRICT s1, int n)
11717 {
11718   OrcExecutor _ex, *ex = &_ex;
11719   static volatile int p_inited = 0;
11720   static OrcCode *c = 0;
11721   void (*func) (OrcExecutor *);
11722 
11723   if (!p_inited) {
11724     orc_once_mutex_lock ();
11725     if (!p_inited) {
11726       OrcProgram *p;
11727 
11728 #if 1
11729       static const orc_uint8 bc[] = {
11730         1, 9, 22, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
11731         97, 99, 107, 95, 82, 71, 66, 49, 54, 11, 4, 4, 12, 2, 2, 14,
11732         2, 0, 248, 0, 0, 14, 2, 224, 7, 0, 0, 14, 2, 31, 0, 0,
11733         0, 14, 2, 6, 0, 0, 0, 14, 2, 5, 0, 0, 0, 14, 2, 0,
11734         66, 0, 0, 14, 2, 128, 32, 0, 0, 14, 2, 255, 0, 0, 0, 20,
11735         2, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, 20, 8, 82, 32, 4,
11736         73, 33, 32, 16, 73, 34, 32, 17, 73, 35, 32, 18, 95, 33, 33, 19,
11737         93, 35, 35, 20, 90, 33, 33, 21, 90, 34, 34, 22, 90, 35, 35, 21,
11738         195, 36, 23, 33, 195, 37, 34, 35, 194, 38, 36, 37, 21, 2, 160, 0,
11739         38, 2, 0,
11740       };
11741       p = orc_program_new_from_static_bytecode (bc);
11742       orc_program_set_backup_function (p, _backup_video_orc_unpack_RGB16);
11743 #else
11744       p = orc_program_new ();
11745       orc_program_set_name (p, "video_orc_unpack_RGB16");
11746       orc_program_set_backup_function (p, _backup_video_orc_unpack_RGB16);
11747       orc_program_add_destination (p, 4, "d1");
11748       orc_program_add_source (p, 2, "s1");
11749       orc_program_add_constant (p, 2, 0x0000f800, "c1");
11750       orc_program_add_constant (p, 2, 0x000007e0, "c2");
11751       orc_program_add_constant (p, 2, 0x0000001f, "c3");
11752       orc_program_add_constant (p, 2, 0x00000006, "c4");
11753       orc_program_add_constant (p, 2, 0x00000005, "c5");
11754       orc_program_add_constant (p, 2, 0x00004200, "c6");
11755       orc_program_add_constant (p, 2, 0x00002080, "c7");
11756       orc_program_add_constant (p, 2, 0x000000ff, "c8");
11757       orc_program_add_temporary (p, 2, "t1");
11758       orc_program_add_temporary (p, 2, "t2");
11759       orc_program_add_temporary (p, 2, "t3");
11760       orc_program_add_temporary (p, 2, "t4");
11761       orc_program_add_temporary (p, 4, "t5");
11762       orc_program_add_temporary (p, 4, "t6");
11763       orc_program_add_temporary (p, 8, "t7");
11764 
11765       orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
11766           ORC_VAR_D1);
11767       orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1,
11768           ORC_VAR_D1);
11769       orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2,
11770           ORC_VAR_D1);
11771       orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3,
11772           ORC_VAR_D1);
11773       orc_program_append_2 (p, "shruw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4,
11774           ORC_VAR_D1);
11775       orc_program_append_2 (p, "shlw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C5,
11776           ORC_VAR_D1);
11777       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C6,
11778           ORC_VAR_D1);
11779       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C7,
11780           ORC_VAR_D1);
11781       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C6,
11782           ORC_VAR_D1);
11783       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C8, ORC_VAR_T2,
11784           ORC_VAR_D1);
11785       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_T4,
11786           ORC_VAR_D1);
11787       orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T7, ORC_VAR_T5, ORC_VAR_T6,
11788           ORC_VAR_D1);
11789       orc_program_append_2 (p, "convsuswb", 2, ORC_VAR_D1, ORC_VAR_T7,
11790           ORC_VAR_D1, ORC_VAR_D1);
11791 #endif
11792 
11793       orc_program_compile (p);
11794       c = orc_program_take_code (p);
11795       orc_program_free (p);
11796     }
11797     p_inited = TRUE;
11798     orc_once_mutex_unlock ();
11799   }
11800   ex->arrays[ORC_VAR_A2] = c;
11801   ex->program = 0;
11802 
11803   ex->n = n;
11804   ex->arrays[ORC_VAR_D1] = d1;
11805   ex->arrays[ORC_VAR_S1] = (void *) s1;
11806 
11807   func = c->exec;
11808   func (ex);
11809 }
11810 #endif
11811 
11812 
11813 /* video_orc_unpack_RGB16_trunc */
11814 #ifdef DISABLE_ORC
11815 void
video_orc_unpack_RGB16_trunc(guint32 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,int n)11816 video_orc_unpack_RGB16_trunc (guint32 * ORC_RESTRICT d1,
11817     const guint16 * ORC_RESTRICT s1, int n)
11818 {
11819   int i;
11820   orc_union32 *ORC_RESTRICT ptr0;
11821   const orc_union16 *ORC_RESTRICT ptr4;
11822 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11823   volatile orc_union16 var39;
11824 #else
11825   orc_union16 var39;
11826 #endif
11827 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11828   volatile orc_union16 var40;
11829 #else
11830   orc_union16 var40;
11831 #endif
11832 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11833   volatile orc_union16 var41;
11834 #else
11835   orc_union16 var41;
11836 #endif
11837 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11838   volatile orc_union16 var42;
11839 #else
11840   orc_union16 var42;
11841 #endif
11842   orc_union32 var43;
11843   orc_union16 var44;
11844   orc_union16 var45;
11845   orc_union16 var46;
11846   orc_union16 var47;
11847   orc_union16 var48;
11848   orc_union16 var49;
11849   orc_union16 var50;
11850   orc_union32 var51;
11851   orc_union32 var52;
11852   orc_union64 var53;
11853 
11854   ptr0 = (orc_union32 *) d1;
11855   ptr4 = (orc_union16 *) s1;
11856 
11857   /* 1: loadpw */
11858   var39.i = 0x0000f800;         /* 63488 or 3.13672e-319f */
11859   /* 3: loadpw */
11860   var40.i = 0x000007e0;         /* 2016 or 9.96036e-321f */
11861   /* 5: loadpw */
11862   var41.i = 0x0000001f;         /* 31 or 1.5316e-322f */
11863   /* 10: loadpw */
11864   var42.i = 0x000000ff;         /* 255 or 1.25987e-321f */
11865 
11866   for (i = 0; i < n; i++) {
11867     /* 0: loadw */
11868     var44 = ptr4[i];
11869     /* 2: andw */
11870     var45.i = var44.i & var39.i;
11871     /* 4: andw */
11872     var46.i = var44.i & var40.i;
11873     /* 6: andw */
11874     var47.i = var44.i & var41.i;
11875     /* 7: shruw */
11876     var48.i = ((orc_uint16) var45.i) >> 8;
11877     /* 8: shruw */
11878     var49.i = ((orc_uint16) var46.i) >> 3;
11879     /* 9: shlw */
11880     var50.i = ((orc_uint16) var47.i) << 3;
11881     /* 11: mergewl */
11882     {
11883       orc_union32 _dest;
11884       _dest.x2[0] = var42.i;
11885       _dest.x2[1] = var48.i;
11886       var51.i = _dest.i;
11887     }
11888     /* 12: mergewl */
11889     {
11890       orc_union32 _dest;
11891       _dest.x2[0] = var49.i;
11892       _dest.x2[1] = var50.i;
11893       var52.i = _dest.i;
11894     }
11895     /* 13: mergelq */
11896     {
11897       orc_union64 _dest;
11898       _dest.x2[0] = var51.i;
11899       _dest.x2[1] = var52.i;
11900       var53.i = _dest.i;
11901     }
11902     /* 14: convsuswb */
11903     var43.x4[0] = ORC_CLAMP_UB (var53.x4[0]);
11904     var43.x4[1] = ORC_CLAMP_UB (var53.x4[1]);
11905     var43.x4[2] = ORC_CLAMP_UB (var53.x4[2]);
11906     var43.x4[3] = ORC_CLAMP_UB (var53.x4[3]);
11907     /* 15: storel */
11908     ptr0[i] = var43;
11909   }
11910 
11911 }
11912 
11913 #else
11914 static void
_backup_video_orc_unpack_RGB16_trunc(OrcExecutor * ORC_RESTRICT ex)11915 _backup_video_orc_unpack_RGB16_trunc (OrcExecutor * ORC_RESTRICT ex)
11916 {
11917   int i;
11918   int n = ex->n;
11919   orc_union32 *ORC_RESTRICT ptr0;
11920   const orc_union16 *ORC_RESTRICT ptr4;
11921 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11922   volatile orc_union16 var39;
11923 #else
11924   orc_union16 var39;
11925 #endif
11926 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11927   volatile orc_union16 var40;
11928 #else
11929   orc_union16 var40;
11930 #endif
11931 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11932   volatile orc_union16 var41;
11933 #else
11934   orc_union16 var41;
11935 #endif
11936 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
11937   volatile orc_union16 var42;
11938 #else
11939   orc_union16 var42;
11940 #endif
11941   orc_union32 var43;
11942   orc_union16 var44;
11943   orc_union16 var45;
11944   orc_union16 var46;
11945   orc_union16 var47;
11946   orc_union16 var48;
11947   orc_union16 var49;
11948   orc_union16 var50;
11949   orc_union32 var51;
11950   orc_union32 var52;
11951   orc_union64 var53;
11952 
11953   ptr0 = (orc_union32 *) ex->arrays[0];
11954   ptr4 = (orc_union16 *) ex->arrays[4];
11955 
11956   /* 1: loadpw */
11957   var39.i = 0x0000f800;         /* 63488 or 3.13672e-319f */
11958   /* 3: loadpw */
11959   var40.i = 0x000007e0;         /* 2016 or 9.96036e-321f */
11960   /* 5: loadpw */
11961   var41.i = 0x0000001f;         /* 31 or 1.5316e-322f */
11962   /* 10: loadpw */
11963   var42.i = 0x000000ff;         /* 255 or 1.25987e-321f */
11964 
11965   for (i = 0; i < n; i++) {
11966     /* 0: loadw */
11967     var44 = ptr4[i];
11968     /* 2: andw */
11969     var45.i = var44.i & var39.i;
11970     /* 4: andw */
11971     var46.i = var44.i & var40.i;
11972     /* 6: andw */
11973     var47.i = var44.i & var41.i;
11974     /* 7: shruw */
11975     var48.i = ((orc_uint16) var45.i) >> 8;
11976     /* 8: shruw */
11977     var49.i = ((orc_uint16) var46.i) >> 3;
11978     /* 9: shlw */
11979     var50.i = ((orc_uint16) var47.i) << 3;
11980     /* 11: mergewl */
11981     {
11982       orc_union32 _dest;
11983       _dest.x2[0] = var42.i;
11984       _dest.x2[1] = var48.i;
11985       var51.i = _dest.i;
11986     }
11987     /* 12: mergewl */
11988     {
11989       orc_union32 _dest;
11990       _dest.x2[0] = var49.i;
11991       _dest.x2[1] = var50.i;
11992       var52.i = _dest.i;
11993     }
11994     /* 13: mergelq */
11995     {
11996       orc_union64 _dest;
11997       _dest.x2[0] = var51.i;
11998       _dest.x2[1] = var52.i;
11999       var53.i = _dest.i;
12000     }
12001     /* 14: convsuswb */
12002     var43.x4[0] = ORC_CLAMP_UB (var53.x4[0]);
12003     var43.x4[1] = ORC_CLAMP_UB (var53.x4[1]);
12004     var43.x4[2] = ORC_CLAMP_UB (var53.x4[2]);
12005     var43.x4[3] = ORC_CLAMP_UB (var53.x4[3]);
12006     /* 15: storel */
12007     ptr0[i] = var43;
12008   }
12009 
12010 }
12011 
12012 void
video_orc_unpack_RGB16_trunc(guint32 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,int n)12013 video_orc_unpack_RGB16_trunc (guint32 * ORC_RESTRICT d1,
12014     const guint16 * ORC_RESTRICT s1, int n)
12015 {
12016   OrcExecutor _ex, *ex = &_ex;
12017   static volatile int p_inited = 0;
12018   static OrcCode *c = 0;
12019   void (*func) (OrcExecutor *);
12020 
12021   if (!p_inited) {
12022     orc_once_mutex_lock ();
12023     if (!p_inited) {
12024       OrcProgram *p;
12025 
12026 #if 1
12027       static const orc_uint8 bc[] = {
12028         1, 9, 28, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
12029         97, 99, 107, 95, 82, 71, 66, 49, 54, 95, 116, 114, 117, 110, 99, 11,
12030         4, 4, 12, 2, 2, 14, 2, 0, 248, 0, 0, 14, 2, 224, 7, 0,
12031         0, 14, 2, 31, 0, 0, 0, 14, 2, 8, 0, 0, 0, 14, 2, 3,
12032         0, 0, 0, 14, 2, 255, 0, 0, 0, 20, 2, 20, 2, 20, 2, 20,
12033         2, 20, 4, 20, 4, 20, 8, 82, 32, 4, 73, 33, 32, 16, 73, 34,
12034         32, 17, 73, 35, 32, 18, 95, 33, 33, 19, 95, 34, 34, 20, 93, 35,
12035         35, 20, 195, 36, 21, 33, 195, 37, 34, 35, 194, 38, 36, 37, 21, 2,
12036         160, 0, 38, 2, 0,
12037       };
12038       p = orc_program_new_from_static_bytecode (bc);
12039       orc_program_set_backup_function (p, _backup_video_orc_unpack_RGB16_trunc);
12040 #else
12041       p = orc_program_new ();
12042       orc_program_set_name (p, "video_orc_unpack_RGB16_trunc");
12043       orc_program_set_backup_function (p, _backup_video_orc_unpack_RGB16_trunc);
12044       orc_program_add_destination (p, 4, "d1");
12045       orc_program_add_source (p, 2, "s1");
12046       orc_program_add_constant (p, 2, 0x0000f800, "c1");
12047       orc_program_add_constant (p, 2, 0x000007e0, "c2");
12048       orc_program_add_constant (p, 2, 0x0000001f, "c3");
12049       orc_program_add_constant (p, 2, 0x00000008, "c4");
12050       orc_program_add_constant (p, 2, 0x00000003, "c5");
12051       orc_program_add_constant (p, 2, 0x000000ff, "c6");
12052       orc_program_add_temporary (p, 2, "t1");
12053       orc_program_add_temporary (p, 2, "t2");
12054       orc_program_add_temporary (p, 2, "t3");
12055       orc_program_add_temporary (p, 2, "t4");
12056       orc_program_add_temporary (p, 4, "t5");
12057       orc_program_add_temporary (p, 4, "t6");
12058       orc_program_add_temporary (p, 8, "t7");
12059 
12060       orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
12061           ORC_VAR_D1);
12062       orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1,
12063           ORC_VAR_D1);
12064       orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2,
12065           ORC_VAR_D1);
12066       orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3,
12067           ORC_VAR_D1);
12068       orc_program_append_2 (p, "shruw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4,
12069           ORC_VAR_D1);
12070       orc_program_append_2 (p, "shruw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5,
12071           ORC_VAR_D1);
12072       orc_program_append_2 (p, "shlw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C5,
12073           ORC_VAR_D1);
12074       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C6, ORC_VAR_T2,
12075           ORC_VAR_D1);
12076       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_T4,
12077           ORC_VAR_D1);
12078       orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T7, ORC_VAR_T5, ORC_VAR_T6,
12079           ORC_VAR_D1);
12080       orc_program_append_2 (p, "convsuswb", 2, ORC_VAR_D1, ORC_VAR_T7,
12081           ORC_VAR_D1, ORC_VAR_D1);
12082 #endif
12083 
12084       orc_program_compile (p);
12085       c = orc_program_take_code (p);
12086       orc_program_free (p);
12087     }
12088     p_inited = TRUE;
12089     orc_once_mutex_unlock ();
12090   }
12091   ex->arrays[ORC_VAR_A2] = c;
12092   ex->program = 0;
12093 
12094   ex->n = n;
12095   ex->arrays[ORC_VAR_D1] = d1;
12096   ex->arrays[ORC_VAR_S1] = (void *) s1;
12097 
12098   func = c->exec;
12099   func (ex);
12100 }
12101 #endif
12102 
12103 
12104 /* video_orc_pack_RGB16_le */
12105 #ifdef DISABLE_ORC
12106 void
video_orc_pack_RGB16_le(guint16 * ORC_RESTRICT d1,const guint32 * ORC_RESTRICT s1,int n)12107 video_orc_pack_RGB16_le (guint16 * ORC_RESTRICT d1,
12108     const guint32 * ORC_RESTRICT s1, int n)
12109 {
12110   int i;
12111   orc_union16 *ORC_RESTRICT ptr0;
12112   const orc_union32 *ORC_RESTRICT ptr4;
12113 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
12114   volatile orc_union32 var37;
12115 #else
12116   orc_union32 var37;
12117 #endif
12118 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
12119   volatile orc_union32 var38;
12120 #else
12121   orc_union32 var38;
12122 #endif
12123 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
12124   volatile orc_union32 var39;
12125 #else
12126   orc_union32 var39;
12127 #endif
12128   orc_union16 var40;
12129   orc_union32 var41;
12130   orc_union32 var42;
12131   orc_union32 var43;
12132   orc_union32 var44;
12133   orc_union32 var45;
12134   orc_union32 var46;
12135   orc_union32 var47;
12136   orc_union32 var48;
12137 
12138   ptr0 = (orc_union16 *) d1;
12139   ptr4 = (orc_union32 *) s1;
12140 
12141   /* 1: loadpl */
12142   var37.i = 0x0000f800;         /* 63488 or 3.13672e-319f */
12143   /* 3: loadpl */
12144   var38.i = 0x00fc0000;         /* 16515072 or 8.15953e-317f */
12145   /* 5: loadpl */
12146   var39.i = 0xf8000000;         /* -134217728 or 2.05568e-314f */
12147 
12148   for (i = 0; i < n; i++) {
12149     /* 0: loadl */
12150     var41 = ptr4[i];
12151     /* 2: andl */
12152     var42.i = var41.i & var37.i;
12153     /* 4: andl */
12154     var43.i = var41.i & var38.i;
12155     /* 6: andl */
12156     var44.i = var41.i & var39.i;
12157     /* 7: shrul */
12158     var45.i = ((orc_uint32) var43.i) >> 13;
12159     /* 8: shrul */
12160     var46.i = ((orc_uint32) var44.i) >> 27;
12161     /* 9: orl */
12162     var47.i = var42.i | var45.i;
12163     /* 10: orl */
12164     var48.i = var47.i | var46.i;
12165     /* 11: select0lw */
12166     {
12167       orc_union32 _src;
12168       _src.i = var48.i;
12169       var40.i = _src.x2[0];
12170     }
12171     /* 12: storew */
12172     ptr0[i] = var40;
12173   }
12174 
12175 }
12176 
12177 #else
12178 static void
_backup_video_orc_pack_RGB16_le(OrcExecutor * ORC_RESTRICT ex)12179 _backup_video_orc_pack_RGB16_le (OrcExecutor * ORC_RESTRICT ex)
12180 {
12181   int i;
12182   int n = ex->n;
12183   orc_union16 *ORC_RESTRICT ptr0;
12184   const orc_union32 *ORC_RESTRICT ptr4;
12185 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
12186   volatile orc_union32 var37;
12187 #else
12188   orc_union32 var37;
12189 #endif
12190 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
12191   volatile orc_union32 var38;
12192 #else
12193   orc_union32 var38;
12194 #endif
12195 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
12196   volatile orc_union32 var39;
12197 #else
12198   orc_union32 var39;
12199 #endif
12200   orc_union16 var40;
12201   orc_union32 var41;
12202   orc_union32 var42;
12203   orc_union32 var43;
12204   orc_union32 var44;
12205   orc_union32 var45;
12206   orc_union32 var46;
12207   orc_union32 var47;
12208   orc_union32 var48;
12209 
12210   ptr0 = (orc_union16 *) ex->arrays[0];
12211   ptr4 = (orc_union32 *) ex->arrays[4];
12212 
12213   /* 1: loadpl */
12214   var37.i = 0x0000f800;         /* 63488 or 3.13672e-319f */
12215   /* 3: loadpl */
12216   var38.i = 0x00fc0000;         /* 16515072 or 8.15953e-317f */
12217   /* 5: loadpl */
12218   var39.i = 0xf8000000;         /* -134217728 or 2.05568e-314f */
12219 
12220   for (i = 0; i < n; i++) {
12221     /* 0: loadl */
12222     var41 = ptr4[i];
12223     /* 2: andl */
12224     var42.i = var41.i & var37.i;
12225     /* 4: andl */
12226     var43.i = var41.i & var38.i;
12227     /* 6: andl */
12228     var44.i = var41.i & var39.i;
12229     /* 7: shrul */
12230     var45.i = ((orc_uint32) var43.i) >> 13;
12231     /* 8: shrul */
12232     var46.i = ((orc_uint32) var44.i) >> 27;
12233     /* 9: orl */
12234     var47.i = var42.i | var45.i;
12235     /* 10: orl */
12236     var48.i = var47.i | var46.i;
12237     /* 11: select0lw */
12238     {
12239       orc_union32 _src;
12240       _src.i = var48.i;
12241       var40.i = _src.x2[0];
12242     }
12243     /* 12: storew */
12244     ptr0[i] = var40;
12245   }
12246 
12247 }
12248 
12249 void
video_orc_pack_RGB16_le(guint16 * ORC_RESTRICT d1,const guint32 * ORC_RESTRICT s1,int n)12250 video_orc_pack_RGB16_le (guint16 * ORC_RESTRICT d1,
12251     const guint32 * ORC_RESTRICT s1, int n)
12252 {
12253   OrcExecutor _ex, *ex = &_ex;
12254   static volatile int p_inited = 0;
12255   static OrcCode *c = 0;
12256   void (*func) (OrcExecutor *);
12257 
12258   if (!p_inited) {
12259     orc_once_mutex_lock ();
12260     if (!p_inited) {
12261       OrcProgram *p;
12262 
12263 #if 1
12264       static const orc_uint8 bc[] = {
12265         1, 9, 23, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
12266         107, 95, 82, 71, 66, 49, 54, 95, 108, 101, 11, 2, 2, 12, 4, 4,
12267         14, 4, 0, 248, 0, 0, 14, 4, 0, 0, 252, 0, 14, 4, 0, 0,
12268         0, 248, 14, 4, 13, 0, 0, 0, 14, 4, 27, 0, 0, 0, 20, 4,
12269         20, 4, 20, 4, 20, 4, 20, 4, 113, 32, 4, 106, 33, 32, 16, 106,
12270         34, 32, 17, 106, 35, 32, 18, 126, 34, 34, 19, 126, 35, 35, 20, 123,
12271         36, 33, 34, 123, 36, 36, 35, 190, 0, 36, 2, 0,
12272       };
12273       p = orc_program_new_from_static_bytecode (bc);
12274       orc_program_set_backup_function (p, _backup_video_orc_pack_RGB16_le);
12275 #else
12276       p = orc_program_new ();
12277       orc_program_set_name (p, "video_orc_pack_RGB16_le");
12278       orc_program_set_backup_function (p, _backup_video_orc_pack_RGB16_le);
12279       orc_program_add_destination (p, 2, "d1");
12280       orc_program_add_source (p, 4, "s1");
12281       orc_program_add_constant (p, 4, 0x0000f800, "c1");
12282       orc_program_add_constant (p, 4, 0x00fc0000, "c2");
12283       orc_program_add_constant (p, 4, 0xf8000000, "c3");
12284       orc_program_add_constant (p, 4, 0x0000000d, "c4");
12285       orc_program_add_constant (p, 4, 0x0000001b, "c5");
12286       orc_program_add_temporary (p, 4, "t1");
12287       orc_program_add_temporary (p, 4, "t2");
12288       orc_program_add_temporary (p, 4, "t3");
12289       orc_program_add_temporary (p, 4, "t4");
12290       orc_program_add_temporary (p, 4, "t5");
12291 
12292       orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
12293           ORC_VAR_D1);
12294       orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1,
12295           ORC_VAR_D1);
12296       orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2,
12297           ORC_VAR_D1);
12298       orc_program_append_2 (p, "andl", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3,
12299           ORC_VAR_D1);
12300       orc_program_append_2 (p, "shrul", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C4,
12301           ORC_VAR_D1);
12302       orc_program_append_2 (p, "shrul", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C5,
12303           ORC_VAR_D1);
12304       orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_T3,
12305           ORC_VAR_D1);
12306       orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4,
12307           ORC_VAR_D1);
12308       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_D1, ORC_VAR_T5,
12309           ORC_VAR_D1, ORC_VAR_D1);
12310 #endif
12311 
12312       orc_program_compile (p);
12313       c = orc_program_take_code (p);
12314       orc_program_free (p);
12315     }
12316     p_inited = TRUE;
12317     orc_once_mutex_unlock ();
12318   }
12319   ex->arrays[ORC_VAR_A2] = c;
12320   ex->program = 0;
12321 
12322   ex->n = n;
12323   ex->arrays[ORC_VAR_D1] = d1;
12324   ex->arrays[ORC_VAR_S1] = (void *) s1;
12325 
12326   func = c->exec;
12327   func (ex);
12328 }
12329 #endif
12330 
12331 
12332 /* video_orc_pack_RGB16_be */
12333 #ifdef DISABLE_ORC
12334 void
video_orc_pack_RGB16_be(guint16 * ORC_RESTRICT d1,const guint32 * ORC_RESTRICT s1,int n)12335 video_orc_pack_RGB16_be (guint16 * ORC_RESTRICT d1,
12336     const guint32 * ORC_RESTRICT s1, int n)
12337 {
12338   int i;
12339   orc_union16 *ORC_RESTRICT ptr0;
12340   const orc_union32 *ORC_RESTRICT ptr4;
12341 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
12342   volatile orc_union32 var37;
12343 #else
12344   orc_union32 var37;
12345 #endif
12346 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
12347   volatile orc_union32 var38;
12348 #else
12349   orc_union32 var38;
12350 #endif
12351 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
12352   volatile orc_union32 var39;
12353 #else
12354   orc_union32 var39;
12355 #endif
12356   orc_union16 var40;
12357   orc_union32 var41;
12358   orc_union32 var42;
12359   orc_union32 var43;
12360   orc_union32 var44;
12361   orc_union32 var45;
12362   orc_union32 var46;
12363   orc_union32 var47;
12364   orc_union32 var48;
12365   orc_union32 var49;
12366 
12367   ptr0 = (orc_union16 *) d1;
12368   ptr4 = (orc_union32 *) s1;
12369 
12370   /* 1: loadpl */
12371   var37.i = 0x00f80000;         /* 16252928 or 8.03001e-317f */
12372   /* 3: loadpl */
12373   var38.i = 0x0000fc00;         /* 64512 or 3.18732e-319f */
12374   /* 5: loadpl */
12375   var39.i = 0x000000f8;         /* 248 or 1.22528e-321f */
12376 
12377   for (i = 0; i < n; i++) {
12378     /* 0: loadl */
12379     var41 = ptr4[i];
12380     /* 2: andl */
12381     var42.i = var41.i & var37.i;
12382     /* 4: andl */
12383     var43.i = var41.i & var38.i;
12384     /* 6: andl */
12385     var44.i = var41.i & var39.i;
12386     /* 7: shrul */
12387     var45.i = ((orc_uint32) var42.i) >> 8;
12388     /* 8: shrul */
12389     var46.i = ((orc_uint32) var43.i) >> 5;
12390     /* 9: shrul */
12391     var47.i = ((orc_uint32) var44.i) >> 3;
12392     /* 10: orl */
12393     var48.i = var45.i | var46.i;
12394     /* 11: orl */
12395     var49.i = var48.i | var47.i;
12396     /* 12: select1lw */
12397     {
12398       orc_union32 _src;
12399       _src.i = var49.i;
12400       var40.i = _src.x2[1];
12401     }
12402     /* 13: storew */
12403     ptr0[i] = var40;
12404   }
12405 
12406 }
12407 
12408 #else
12409 static void
_backup_video_orc_pack_RGB16_be(OrcExecutor * ORC_RESTRICT ex)12410 _backup_video_orc_pack_RGB16_be (OrcExecutor * ORC_RESTRICT ex)
12411 {
12412   int i;
12413   int n = ex->n;
12414   orc_union16 *ORC_RESTRICT ptr0;
12415   const orc_union32 *ORC_RESTRICT ptr4;
12416 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
12417   volatile orc_union32 var37;
12418 #else
12419   orc_union32 var37;
12420 #endif
12421 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
12422   volatile orc_union32 var38;
12423 #else
12424   orc_union32 var38;
12425 #endif
12426 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
12427   volatile orc_union32 var39;
12428 #else
12429   orc_union32 var39;
12430 #endif
12431   orc_union16 var40;
12432   orc_union32 var41;
12433   orc_union32 var42;
12434   orc_union32 var43;
12435   orc_union32 var44;
12436   orc_union32 var45;
12437   orc_union32 var46;
12438   orc_union32 var47;
12439   orc_union32 var48;
12440   orc_union32 var49;
12441 
12442   ptr0 = (orc_union16 *) ex->arrays[0];
12443   ptr4 = (orc_union32 *) ex->arrays[4];
12444 
12445   /* 1: loadpl */
12446   var37.i = 0x00f80000;         /* 16252928 or 8.03001e-317f */
12447   /* 3: loadpl */
12448   var38.i = 0x0000fc00;         /* 64512 or 3.18732e-319f */
12449   /* 5: loadpl */
12450   var39.i = 0x000000f8;         /* 248 or 1.22528e-321f */
12451 
12452   for (i = 0; i < n; i++) {
12453     /* 0: loadl */
12454     var41 = ptr4[i];
12455     /* 2: andl */
12456     var42.i = var41.i & var37.i;
12457     /* 4: andl */
12458     var43.i = var41.i & var38.i;
12459     /* 6: andl */
12460     var44.i = var41.i & var39.i;
12461     /* 7: shrul */
12462     var45.i = ((orc_uint32) var42.i) >> 8;
12463     /* 8: shrul */
12464     var46.i = ((orc_uint32) var43.i) >> 5;
12465     /* 9: shrul */
12466     var47.i = ((orc_uint32) var44.i) >> 3;
12467     /* 10: orl */
12468     var48.i = var45.i | var46.i;
12469     /* 11: orl */
12470     var49.i = var48.i | var47.i;
12471     /* 12: select1lw */
12472     {
12473       orc_union32 _src;
12474       _src.i = var49.i;
12475       var40.i = _src.x2[1];
12476     }
12477     /* 13: storew */
12478     ptr0[i] = var40;
12479   }
12480 
12481 }
12482 
12483 void
video_orc_pack_RGB16_be(guint16 * ORC_RESTRICT d1,const guint32 * ORC_RESTRICT s1,int n)12484 video_orc_pack_RGB16_be (guint16 * ORC_RESTRICT d1,
12485     const guint32 * ORC_RESTRICT s1, int n)
12486 {
12487   OrcExecutor _ex, *ex = &_ex;
12488   static volatile int p_inited = 0;
12489   static OrcCode *c = 0;
12490   void (*func) (OrcExecutor *);
12491 
12492   if (!p_inited) {
12493     orc_once_mutex_lock ();
12494     if (!p_inited) {
12495       OrcProgram *p;
12496 
12497 #if 1
12498       static const orc_uint8 bc[] = {
12499         1, 9, 23, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
12500         107, 95, 82, 71, 66, 49, 54, 95, 98, 101, 11, 2, 2, 12, 4, 4,
12501         14, 4, 0, 0, 248, 0, 14, 4, 0, 252, 0, 0, 14, 4, 248, 0,
12502         0, 0, 14, 4, 8, 0, 0, 0, 14, 4, 5, 0, 0, 0, 14, 4,
12503         3, 0, 0, 0, 20, 4, 20, 4, 20, 4, 20, 4, 20, 4, 113, 32,
12504         4, 106, 33, 32, 16, 106, 34, 32, 17, 106, 35, 32, 18, 126, 33, 33,
12505         19, 126, 34, 34, 20, 126, 35, 35, 21, 123, 36, 33, 34, 123, 36, 36,
12506         35, 191, 0, 36, 2, 0,
12507       };
12508       p = orc_program_new_from_static_bytecode (bc);
12509       orc_program_set_backup_function (p, _backup_video_orc_pack_RGB16_be);
12510 #else
12511       p = orc_program_new ();
12512       orc_program_set_name (p, "video_orc_pack_RGB16_be");
12513       orc_program_set_backup_function (p, _backup_video_orc_pack_RGB16_be);
12514       orc_program_add_destination (p, 2, "d1");
12515       orc_program_add_source (p, 4, "s1");
12516       orc_program_add_constant (p, 4, 0x00f80000, "c1");
12517       orc_program_add_constant (p, 4, 0x0000fc00, "c2");
12518       orc_program_add_constant (p, 4, 0x000000f8, "c3");
12519       orc_program_add_constant (p, 4, 0x00000008, "c4");
12520       orc_program_add_constant (p, 4, 0x00000005, "c5");
12521       orc_program_add_constant (p, 4, 0x00000003, "c6");
12522       orc_program_add_temporary (p, 4, "t1");
12523       orc_program_add_temporary (p, 4, "t2");
12524       orc_program_add_temporary (p, 4, "t3");
12525       orc_program_add_temporary (p, 4, "t4");
12526       orc_program_add_temporary (p, 4, "t5");
12527 
12528       orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
12529           ORC_VAR_D1);
12530       orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1,
12531           ORC_VAR_D1);
12532       orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2,
12533           ORC_VAR_D1);
12534       orc_program_append_2 (p, "andl", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3,
12535           ORC_VAR_D1);
12536       orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4,
12537           ORC_VAR_D1);
12538       orc_program_append_2 (p, "shrul", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5,
12539           ORC_VAR_D1);
12540       orc_program_append_2 (p, "shrul", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C6,
12541           ORC_VAR_D1);
12542       orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_T3,
12543           ORC_VAR_D1);
12544       orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4,
12545           ORC_VAR_D1);
12546       orc_program_append_2 (p, "select1lw", 0, ORC_VAR_D1, ORC_VAR_T5,
12547           ORC_VAR_D1, ORC_VAR_D1);
12548 #endif
12549 
12550       orc_program_compile (p);
12551       c = orc_program_take_code (p);
12552       orc_program_free (p);
12553     }
12554     p_inited = TRUE;
12555     orc_once_mutex_unlock ();
12556   }
12557   ex->arrays[ORC_VAR_A2] = c;
12558   ex->program = 0;
12559 
12560   ex->n = n;
12561   ex->arrays[ORC_VAR_D1] = d1;
12562   ex->arrays[ORC_VAR_S1] = (void *) s1;
12563 
12564   func = c->exec;
12565   func (ex);
12566 }
12567 #endif
12568 
12569 
12570 /* video_orc_unpack_BGR16 */
12571 #ifdef DISABLE_ORC
12572 void
video_orc_unpack_BGR16(guint32 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,int n)12573 video_orc_unpack_BGR16 (guint32 * ORC_RESTRICT d1,
12574     const guint16 * ORC_RESTRICT s1, int n)
12575 {
12576   int i;
12577   orc_union32 *ORC_RESTRICT ptr0;
12578   const orc_union16 *ORC_RESTRICT ptr4;
12579 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
12580   volatile orc_union16 var39;
12581 #else
12582   orc_union16 var39;
12583 #endif
12584 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
12585   volatile orc_union16 var40;
12586 #else
12587   orc_union16 var40;
12588 #endif
12589 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
12590   volatile orc_union16 var41;
12591 #else
12592   orc_union16 var41;
12593 #endif
12594 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
12595   volatile orc_union16 var42;
12596 #else
12597   orc_union16 var42;
12598 #endif
12599 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
12600   volatile orc_union16 var43;
12601 #else
12602   orc_union16 var43;
12603 #endif
12604 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
12605   volatile orc_union16 var44;
12606 #else
12607   orc_union16 var44;
12608 #endif
12609   orc_union32 var45;
12610   orc_union16 var46;
12611   orc_union16 var47;
12612   orc_union16 var48;
12613   orc_union16 var49;
12614   orc_union16 var50;
12615   orc_union16 var51;
12616   orc_union16 var52;
12617   orc_union16 var53;
12618   orc_union16 var54;
12619   orc_union32 var55;
12620   orc_union32 var56;
12621   orc_union64 var57;
12622 
12623   ptr0 = (orc_union32 *) d1;
12624   ptr4 = (orc_union16 *) s1;
12625 
12626   /* 1: loadpw */
12627   var39.i = 0x0000f800;         /* 63488 or 3.13672e-319f */
12628   /* 3: loadpw */
12629   var40.i = 0x000007e0;         /* 2016 or 9.96036e-321f */
12630   /* 5: loadpw */
12631   var41.i = 0x0000001f;         /* 31 or 1.5316e-322f */
12632   /* 9: loadpw */
12633   var42.i = 0x00004200;         /* 16896 or 8.34773e-320f */
12634   /* 11: loadpw */
12635   var43.i = 0x00002080;         /* 8320 or 4.11063e-320f */
12636   /* 14: loadpw */
12637   var44.i = 0x000000ff;         /* 255 or 1.25987e-321f */
12638 
12639   for (i = 0; i < n; i++) {
12640     /* 0: loadw */
12641     var46 = ptr4[i];
12642     /* 2: andw */
12643     var47.i = var46.i & var39.i;
12644     /* 4: andw */
12645     var48.i = var46.i & var40.i;
12646     /* 6: andw */
12647     var49.i = var46.i & var41.i;
12648     /* 7: shruw */
12649     var50.i = ((orc_uint16) var47.i) >> 6;
12650     /* 8: shlw */
12651     var51.i = ((orc_uint16) var49.i) << 5;
12652     /* 10: mulhsw */
12653     var52.i = (var50.i * var42.i) >> 16;
12654     /* 12: mulhsw */
12655     var53.i = (var48.i * var43.i) >> 16;
12656     /* 13: mulhsw */
12657     var54.i = (var51.i * var42.i) >> 16;
12658     /* 15: mergewl */
12659     {
12660       orc_union32 _dest;
12661       _dest.x2[0] = var44.i;
12662       _dest.x2[1] = var54.i;
12663       var55.i = _dest.i;
12664     }
12665     /* 16: mergewl */
12666     {
12667       orc_union32 _dest;
12668       _dest.x2[0] = var53.i;
12669       _dest.x2[1] = var52.i;
12670       var56.i = _dest.i;
12671     }
12672     /* 17: mergelq */
12673     {
12674       orc_union64 _dest;
12675       _dest.x2[0] = var55.i;
12676       _dest.x2[1] = var56.i;
12677       var57.i = _dest.i;
12678     }
12679     /* 18: convsuswb */
12680     var45.x4[0] = ORC_CLAMP_UB (var57.x4[0]);
12681     var45.x4[1] = ORC_CLAMP_UB (var57.x4[1]);
12682     var45.x4[2] = ORC_CLAMP_UB (var57.x4[2]);
12683     var45.x4[3] = ORC_CLAMP_UB (var57.x4[3]);
12684     /* 19: storel */
12685     ptr0[i] = var45;
12686   }
12687 
12688 }
12689 
12690 #else
12691 static void
_backup_video_orc_unpack_BGR16(OrcExecutor * ORC_RESTRICT ex)12692 _backup_video_orc_unpack_BGR16 (OrcExecutor * ORC_RESTRICT ex)
12693 {
12694   int i;
12695   int n = ex->n;
12696   orc_union32 *ORC_RESTRICT ptr0;
12697   const orc_union16 *ORC_RESTRICT ptr4;
12698 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
12699   volatile orc_union16 var39;
12700 #else
12701   orc_union16 var39;
12702 #endif
12703 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
12704   volatile orc_union16 var40;
12705 #else
12706   orc_union16 var40;
12707 #endif
12708 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
12709   volatile orc_union16 var41;
12710 #else
12711   orc_union16 var41;
12712 #endif
12713 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
12714   volatile orc_union16 var42;
12715 #else
12716   orc_union16 var42;
12717 #endif
12718 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
12719   volatile orc_union16 var43;
12720 #else
12721   orc_union16 var43;
12722 #endif
12723 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
12724   volatile orc_union16 var44;
12725 #else
12726   orc_union16 var44;
12727 #endif
12728   orc_union32 var45;
12729   orc_union16 var46;
12730   orc_union16 var47;
12731   orc_union16 var48;
12732   orc_union16 var49;
12733   orc_union16 var50;
12734   orc_union16 var51;
12735   orc_union16 var52;
12736   orc_union16 var53;
12737   orc_union16 var54;
12738   orc_union32 var55;
12739   orc_union32 var56;
12740   orc_union64 var57;
12741 
12742   ptr0 = (orc_union32 *) ex->arrays[0];
12743   ptr4 = (orc_union16 *) ex->arrays[4];
12744 
12745   /* 1: loadpw */
12746   var39.i = 0x0000f800;         /* 63488 or 3.13672e-319f */
12747   /* 3: loadpw */
12748   var40.i = 0x000007e0;         /* 2016 or 9.96036e-321f */
12749   /* 5: loadpw */
12750   var41.i = 0x0000001f;         /* 31 or 1.5316e-322f */
12751   /* 9: loadpw */
12752   var42.i = 0x00004200;         /* 16896 or 8.34773e-320f */
12753   /* 11: loadpw */
12754   var43.i = 0x00002080;         /* 8320 or 4.11063e-320f */
12755   /* 14: loadpw */
12756   var44.i = 0x000000ff;         /* 255 or 1.25987e-321f */
12757 
12758   for (i = 0; i < n; i++) {
12759     /* 0: loadw */
12760     var46 = ptr4[i];
12761     /* 2: andw */
12762     var47.i = var46.i & var39.i;
12763     /* 4: andw */
12764     var48.i = var46.i & var40.i;
12765     /* 6: andw */
12766     var49.i = var46.i & var41.i;
12767     /* 7: shruw */
12768     var50.i = ((orc_uint16) var47.i) >> 6;
12769     /* 8: shlw */
12770     var51.i = ((orc_uint16) var49.i) << 5;
12771     /* 10: mulhsw */
12772     var52.i = (var50.i * var42.i) >> 16;
12773     /* 12: mulhsw */
12774     var53.i = (var48.i * var43.i) >> 16;
12775     /* 13: mulhsw */
12776     var54.i = (var51.i * var42.i) >> 16;
12777     /* 15: mergewl */
12778     {
12779       orc_union32 _dest;
12780       _dest.x2[0] = var44.i;
12781       _dest.x2[1] = var54.i;
12782       var55.i = _dest.i;
12783     }
12784     /* 16: mergewl */
12785     {
12786       orc_union32 _dest;
12787       _dest.x2[0] = var53.i;
12788       _dest.x2[1] = var52.i;
12789       var56.i = _dest.i;
12790     }
12791     /* 17: mergelq */
12792     {
12793       orc_union64 _dest;
12794       _dest.x2[0] = var55.i;
12795       _dest.x2[1] = var56.i;
12796       var57.i = _dest.i;
12797     }
12798     /* 18: convsuswb */
12799     var45.x4[0] = ORC_CLAMP_UB (var57.x4[0]);
12800     var45.x4[1] = ORC_CLAMP_UB (var57.x4[1]);
12801     var45.x4[2] = ORC_CLAMP_UB (var57.x4[2]);
12802     var45.x4[3] = ORC_CLAMP_UB (var57.x4[3]);
12803     /* 19: storel */
12804     ptr0[i] = var45;
12805   }
12806 
12807 }
12808 
12809 void
video_orc_unpack_BGR16(guint32 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,int n)12810 video_orc_unpack_BGR16 (guint32 * ORC_RESTRICT d1,
12811     const guint16 * ORC_RESTRICT s1, int n)
12812 {
12813   OrcExecutor _ex, *ex = &_ex;
12814   static volatile int p_inited = 0;
12815   static OrcCode *c = 0;
12816   void (*func) (OrcExecutor *);
12817 
12818   if (!p_inited) {
12819     orc_once_mutex_lock ();
12820     if (!p_inited) {
12821       OrcProgram *p;
12822 
12823 #if 1
12824       static const orc_uint8 bc[] = {
12825         1, 9, 22, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
12826         97, 99, 107, 95, 66, 71, 82, 49, 54, 11, 4, 4, 12, 2, 2, 14,
12827         2, 0, 248, 0, 0, 14, 2, 224, 7, 0, 0, 14, 2, 31, 0, 0,
12828         0, 14, 2, 6, 0, 0, 0, 14, 2, 5, 0, 0, 0, 14, 2, 0,
12829         66, 0, 0, 14, 2, 128, 32, 0, 0, 14, 2, 255, 0, 0, 0, 20,
12830         2, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, 20, 8, 82, 32, 4,
12831         73, 35, 32, 16, 73, 34, 32, 17, 73, 33, 32, 18, 95, 35, 35, 19,
12832         93, 33, 33, 20, 90, 35, 35, 21, 90, 34, 34, 22, 90, 33, 33, 21,
12833         195, 36, 23, 33, 195, 37, 34, 35, 194, 38, 36, 37, 21, 2, 160, 0,
12834         38, 2, 0,
12835       };
12836       p = orc_program_new_from_static_bytecode (bc);
12837       orc_program_set_backup_function (p, _backup_video_orc_unpack_BGR16);
12838 #else
12839       p = orc_program_new ();
12840       orc_program_set_name (p, "video_orc_unpack_BGR16");
12841       orc_program_set_backup_function (p, _backup_video_orc_unpack_BGR16);
12842       orc_program_add_destination (p, 4, "d1");
12843       orc_program_add_source (p, 2, "s1");
12844       orc_program_add_constant (p, 2, 0x0000f800, "c1");
12845       orc_program_add_constant (p, 2, 0x000007e0, "c2");
12846       orc_program_add_constant (p, 2, 0x0000001f, "c3");
12847       orc_program_add_constant (p, 2, 0x00000006, "c4");
12848       orc_program_add_constant (p, 2, 0x00000005, "c5");
12849       orc_program_add_constant (p, 2, 0x00004200, "c6");
12850       orc_program_add_constant (p, 2, 0x00002080, "c7");
12851       orc_program_add_constant (p, 2, 0x000000ff, "c8");
12852       orc_program_add_temporary (p, 2, "t1");
12853       orc_program_add_temporary (p, 2, "t2");
12854       orc_program_add_temporary (p, 2, "t3");
12855       orc_program_add_temporary (p, 2, "t4");
12856       orc_program_add_temporary (p, 4, "t5");
12857       orc_program_add_temporary (p, 4, "t6");
12858       orc_program_add_temporary (p, 8, "t7");
12859 
12860       orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
12861           ORC_VAR_D1);
12862       orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C1,
12863           ORC_VAR_D1);
12864       orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2,
12865           ORC_VAR_D1);
12866       orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C3,
12867           ORC_VAR_D1);
12868       orc_program_append_2 (p, "shruw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C4,
12869           ORC_VAR_D1);
12870       orc_program_append_2 (p, "shlw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C5,
12871           ORC_VAR_D1);
12872       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C6,
12873           ORC_VAR_D1);
12874       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C7,
12875           ORC_VAR_D1);
12876       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C6,
12877           ORC_VAR_D1);
12878       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C8, ORC_VAR_T2,
12879           ORC_VAR_D1);
12880       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_T4,
12881           ORC_VAR_D1);
12882       orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T7, ORC_VAR_T5, ORC_VAR_T6,
12883           ORC_VAR_D1);
12884       orc_program_append_2 (p, "convsuswb", 2, ORC_VAR_D1, ORC_VAR_T7,
12885           ORC_VAR_D1, ORC_VAR_D1);
12886 #endif
12887 
12888       orc_program_compile (p);
12889       c = orc_program_take_code (p);
12890       orc_program_free (p);
12891     }
12892     p_inited = TRUE;
12893     orc_once_mutex_unlock ();
12894   }
12895   ex->arrays[ORC_VAR_A2] = c;
12896   ex->program = 0;
12897 
12898   ex->n = n;
12899   ex->arrays[ORC_VAR_D1] = d1;
12900   ex->arrays[ORC_VAR_S1] = (void *) s1;
12901 
12902   func = c->exec;
12903   func (ex);
12904 }
12905 #endif
12906 
12907 
12908 /* video_orc_unpack_BGR16_trunc */
12909 #ifdef DISABLE_ORC
12910 void
video_orc_unpack_BGR16_trunc(guint32 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,int n)12911 video_orc_unpack_BGR16_trunc (guint32 * ORC_RESTRICT d1,
12912     const guint16 * ORC_RESTRICT s1, int n)
12913 {
12914   int i;
12915   orc_union32 *ORC_RESTRICT ptr0;
12916   const orc_union16 *ORC_RESTRICT ptr4;
12917 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
12918   volatile orc_union16 var39;
12919 #else
12920   orc_union16 var39;
12921 #endif
12922 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
12923   volatile orc_union16 var40;
12924 #else
12925   orc_union16 var40;
12926 #endif
12927 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
12928   volatile orc_union16 var41;
12929 #else
12930   orc_union16 var41;
12931 #endif
12932 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
12933   volatile orc_union16 var42;
12934 #else
12935   orc_union16 var42;
12936 #endif
12937   orc_union32 var43;
12938   orc_union16 var44;
12939   orc_union16 var45;
12940   orc_union16 var46;
12941   orc_union16 var47;
12942   orc_union16 var48;
12943   orc_union16 var49;
12944   orc_union16 var50;
12945   orc_union32 var51;
12946   orc_union32 var52;
12947   orc_union64 var53;
12948 
12949   ptr0 = (orc_union32 *) d1;
12950   ptr4 = (orc_union16 *) s1;
12951 
12952   /* 1: loadpw */
12953   var39.i = 0x0000f800;         /* 63488 or 3.13672e-319f */
12954   /* 3: loadpw */
12955   var40.i = 0x000007e0;         /* 2016 or 9.96036e-321f */
12956   /* 5: loadpw */
12957   var41.i = 0x0000001f;         /* 31 or 1.5316e-322f */
12958   /* 10: loadpw */
12959   var42.i = 0x000000ff;         /* 255 or 1.25987e-321f */
12960 
12961   for (i = 0; i < n; i++) {
12962     /* 0: loadw */
12963     var44 = ptr4[i];
12964     /* 2: andw */
12965     var45.i = var44.i & var39.i;
12966     /* 4: andw */
12967     var46.i = var44.i & var40.i;
12968     /* 6: andw */
12969     var47.i = var44.i & var41.i;
12970     /* 7: shruw */
12971     var48.i = ((orc_uint16) var45.i) >> 8;
12972     /* 8: shruw */
12973     var49.i = ((orc_uint16) var46.i) >> 3;
12974     /* 9: shlw */
12975     var50.i = ((orc_uint16) var47.i) << 3;
12976     /* 11: mergewl */
12977     {
12978       orc_union32 _dest;
12979       _dest.x2[0] = var42.i;
12980       _dest.x2[1] = var50.i;
12981       var51.i = _dest.i;
12982     }
12983     /* 12: mergewl */
12984     {
12985       orc_union32 _dest;
12986       _dest.x2[0] = var49.i;
12987       _dest.x2[1] = var48.i;
12988       var52.i = _dest.i;
12989     }
12990     /* 13: mergelq */
12991     {
12992       orc_union64 _dest;
12993       _dest.x2[0] = var51.i;
12994       _dest.x2[1] = var52.i;
12995       var53.i = _dest.i;
12996     }
12997     /* 14: convsuswb */
12998     var43.x4[0] = ORC_CLAMP_UB (var53.x4[0]);
12999     var43.x4[1] = ORC_CLAMP_UB (var53.x4[1]);
13000     var43.x4[2] = ORC_CLAMP_UB (var53.x4[2]);
13001     var43.x4[3] = ORC_CLAMP_UB (var53.x4[3]);
13002     /* 15: storel */
13003     ptr0[i] = var43;
13004   }
13005 
13006 }
13007 
13008 #else
13009 static void
_backup_video_orc_unpack_BGR16_trunc(OrcExecutor * ORC_RESTRICT ex)13010 _backup_video_orc_unpack_BGR16_trunc (OrcExecutor * ORC_RESTRICT ex)
13011 {
13012   int i;
13013   int n = ex->n;
13014   orc_union32 *ORC_RESTRICT ptr0;
13015   const orc_union16 *ORC_RESTRICT ptr4;
13016 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
13017   volatile orc_union16 var39;
13018 #else
13019   orc_union16 var39;
13020 #endif
13021 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
13022   volatile orc_union16 var40;
13023 #else
13024   orc_union16 var40;
13025 #endif
13026 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
13027   volatile orc_union16 var41;
13028 #else
13029   orc_union16 var41;
13030 #endif
13031 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
13032   volatile orc_union16 var42;
13033 #else
13034   orc_union16 var42;
13035 #endif
13036   orc_union32 var43;
13037   orc_union16 var44;
13038   orc_union16 var45;
13039   orc_union16 var46;
13040   orc_union16 var47;
13041   orc_union16 var48;
13042   orc_union16 var49;
13043   orc_union16 var50;
13044   orc_union32 var51;
13045   orc_union32 var52;
13046   orc_union64 var53;
13047 
13048   ptr0 = (orc_union32 *) ex->arrays[0];
13049   ptr4 = (orc_union16 *) ex->arrays[4];
13050 
13051   /* 1: loadpw */
13052   var39.i = 0x0000f800;         /* 63488 or 3.13672e-319f */
13053   /* 3: loadpw */
13054   var40.i = 0x000007e0;         /* 2016 or 9.96036e-321f */
13055   /* 5: loadpw */
13056   var41.i = 0x0000001f;         /* 31 or 1.5316e-322f */
13057   /* 10: loadpw */
13058   var42.i = 0x000000ff;         /* 255 or 1.25987e-321f */
13059 
13060   for (i = 0; i < n; i++) {
13061     /* 0: loadw */
13062     var44 = ptr4[i];
13063     /* 2: andw */
13064     var45.i = var44.i & var39.i;
13065     /* 4: andw */
13066     var46.i = var44.i & var40.i;
13067     /* 6: andw */
13068     var47.i = var44.i & var41.i;
13069     /* 7: shruw */
13070     var48.i = ((orc_uint16) var45.i) >> 8;
13071     /* 8: shruw */
13072     var49.i = ((orc_uint16) var46.i) >> 3;
13073     /* 9: shlw */
13074     var50.i = ((orc_uint16) var47.i) << 3;
13075     /* 11: mergewl */
13076     {
13077       orc_union32 _dest;
13078       _dest.x2[0] = var42.i;
13079       _dest.x2[1] = var50.i;
13080       var51.i = _dest.i;
13081     }
13082     /* 12: mergewl */
13083     {
13084       orc_union32 _dest;
13085       _dest.x2[0] = var49.i;
13086       _dest.x2[1] = var48.i;
13087       var52.i = _dest.i;
13088     }
13089     /* 13: mergelq */
13090     {
13091       orc_union64 _dest;
13092       _dest.x2[0] = var51.i;
13093       _dest.x2[1] = var52.i;
13094       var53.i = _dest.i;
13095     }
13096     /* 14: convsuswb */
13097     var43.x4[0] = ORC_CLAMP_UB (var53.x4[0]);
13098     var43.x4[1] = ORC_CLAMP_UB (var53.x4[1]);
13099     var43.x4[2] = ORC_CLAMP_UB (var53.x4[2]);
13100     var43.x4[3] = ORC_CLAMP_UB (var53.x4[3]);
13101     /* 15: storel */
13102     ptr0[i] = var43;
13103   }
13104 
13105 }
13106 
13107 void
video_orc_unpack_BGR16_trunc(guint32 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,int n)13108 video_orc_unpack_BGR16_trunc (guint32 * ORC_RESTRICT d1,
13109     const guint16 * ORC_RESTRICT s1, int n)
13110 {
13111   OrcExecutor _ex, *ex = &_ex;
13112   static volatile int p_inited = 0;
13113   static OrcCode *c = 0;
13114   void (*func) (OrcExecutor *);
13115 
13116   if (!p_inited) {
13117     orc_once_mutex_lock ();
13118     if (!p_inited) {
13119       OrcProgram *p;
13120 
13121 #if 1
13122       static const orc_uint8 bc[] = {
13123         1, 9, 28, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
13124         97, 99, 107, 95, 66, 71, 82, 49, 54, 95, 116, 114, 117, 110, 99, 11,
13125         4, 4, 12, 2, 2, 14, 2, 0, 248, 0, 0, 14, 2, 224, 7, 0,
13126         0, 14, 2, 31, 0, 0, 0, 14, 2, 8, 0, 0, 0, 14, 2, 3,
13127         0, 0, 0, 14, 2, 255, 0, 0, 0, 20, 2, 20, 2, 20, 2, 20,
13128         2, 20, 4, 20, 4, 20, 8, 82, 32, 4, 73, 35, 32, 16, 73, 34,
13129         32, 17, 73, 33, 32, 18, 95, 35, 35, 19, 95, 34, 34, 20, 93, 33,
13130         33, 20, 195, 36, 21, 33, 195, 37, 34, 35, 194, 38, 36, 37, 21, 2,
13131         160, 0, 38, 2, 0,
13132       };
13133       p = orc_program_new_from_static_bytecode (bc);
13134       orc_program_set_backup_function (p, _backup_video_orc_unpack_BGR16_trunc);
13135 #else
13136       p = orc_program_new ();
13137       orc_program_set_name (p, "video_orc_unpack_BGR16_trunc");
13138       orc_program_set_backup_function (p, _backup_video_orc_unpack_BGR16_trunc);
13139       orc_program_add_destination (p, 4, "d1");
13140       orc_program_add_source (p, 2, "s1");
13141       orc_program_add_constant (p, 2, 0x0000f800, "c1");
13142       orc_program_add_constant (p, 2, 0x000007e0, "c2");
13143       orc_program_add_constant (p, 2, 0x0000001f, "c3");
13144       orc_program_add_constant (p, 2, 0x00000008, "c4");
13145       orc_program_add_constant (p, 2, 0x00000003, "c5");
13146       orc_program_add_constant (p, 2, 0x000000ff, "c6");
13147       orc_program_add_temporary (p, 2, "t1");
13148       orc_program_add_temporary (p, 2, "t2");
13149       orc_program_add_temporary (p, 2, "t3");
13150       orc_program_add_temporary (p, 2, "t4");
13151       orc_program_add_temporary (p, 4, "t5");
13152       orc_program_add_temporary (p, 4, "t6");
13153       orc_program_add_temporary (p, 8, "t7");
13154 
13155       orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
13156           ORC_VAR_D1);
13157       orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C1,
13158           ORC_VAR_D1);
13159       orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2,
13160           ORC_VAR_D1);
13161       orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C3,
13162           ORC_VAR_D1);
13163       orc_program_append_2 (p, "shruw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C4,
13164           ORC_VAR_D1);
13165       orc_program_append_2 (p, "shruw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5,
13166           ORC_VAR_D1);
13167       orc_program_append_2 (p, "shlw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C5,
13168           ORC_VAR_D1);
13169       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C6, ORC_VAR_T2,
13170           ORC_VAR_D1);
13171       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_T4,
13172           ORC_VAR_D1);
13173       orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T7, ORC_VAR_T5, ORC_VAR_T6,
13174           ORC_VAR_D1);
13175       orc_program_append_2 (p, "convsuswb", 2, ORC_VAR_D1, ORC_VAR_T7,
13176           ORC_VAR_D1, ORC_VAR_D1);
13177 #endif
13178 
13179       orc_program_compile (p);
13180       c = orc_program_take_code (p);
13181       orc_program_free (p);
13182     }
13183     p_inited = TRUE;
13184     orc_once_mutex_unlock ();
13185   }
13186   ex->arrays[ORC_VAR_A2] = c;
13187   ex->program = 0;
13188 
13189   ex->n = n;
13190   ex->arrays[ORC_VAR_D1] = d1;
13191   ex->arrays[ORC_VAR_S1] = (void *) s1;
13192 
13193   func = c->exec;
13194   func (ex);
13195 }
13196 #endif
13197 
13198 
13199 /* video_orc_pack_BGR16_le */
13200 #ifdef DISABLE_ORC
13201 void
video_orc_pack_BGR16_le(guint16 * ORC_RESTRICT d1,const guint32 * ORC_RESTRICT s1,int n)13202 video_orc_pack_BGR16_le (guint16 * ORC_RESTRICT d1,
13203     const guint32 * ORC_RESTRICT s1, int n)
13204 {
13205   int i;
13206   orc_union16 *ORC_RESTRICT ptr0;
13207   const orc_union32 *ORC_RESTRICT ptr4;
13208 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
13209   volatile orc_union32 var37;
13210 #else
13211   orc_union32 var37;
13212 #endif
13213 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
13214   volatile orc_union32 var38;
13215 #else
13216   orc_union32 var38;
13217 #endif
13218 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
13219   volatile orc_union32 var39;
13220 #else
13221   orc_union32 var39;
13222 #endif
13223   orc_union16 var40;
13224   orc_union32 var41;
13225   orc_union32 var42;
13226   orc_union32 var43;
13227   orc_union32 var44;
13228   orc_union32 var45;
13229   orc_union32 var46;
13230   orc_union32 var47;
13231   orc_union32 var48;
13232   orc_union32 var49;
13233 
13234   ptr0 = (orc_union16 *) d1;
13235   ptr4 = (orc_union32 *) s1;
13236 
13237   /* 1: loadpl */
13238   var37.i = 0x0000f800;         /* 63488 or 3.13672e-319f */
13239   /* 3: loadpl */
13240   var38.i = 0x00fc0000;         /* 16515072 or 8.15953e-317f */
13241   /* 5: loadpl */
13242   var39.i = 0xf8000000;         /* -134217728 or 2.05568e-314f */
13243 
13244   for (i = 0; i < n; i++) {
13245     /* 0: loadl */
13246     var41 = ptr4[i];
13247     /* 2: andl */
13248     var42.i = var41.i & var37.i;
13249     /* 4: andl */
13250     var43.i = var41.i & var38.i;
13251     /* 6: andl */
13252     var44.i = var41.i & var39.i;
13253     /* 7: shrul */
13254     var45.i = ((orc_uint32) var42.i) >> 11;
13255     /* 8: shrul */
13256     var46.i = ((orc_uint32) var43.i) >> 13;
13257     /* 9: shrul */
13258     var47.i = ((orc_uint32) var44.i) >> 16;
13259     /* 10: orl */
13260     var48.i = var45.i | var46.i;
13261     /* 11: orl */
13262     var49.i = var48.i | var47.i;
13263     /* 12: select0lw */
13264     {
13265       orc_union32 _src;
13266       _src.i = var49.i;
13267       var40.i = _src.x2[0];
13268     }
13269     /* 13: storew */
13270     ptr0[i] = var40;
13271   }
13272 
13273 }
13274 
13275 #else
13276 static void
_backup_video_orc_pack_BGR16_le(OrcExecutor * ORC_RESTRICT ex)13277 _backup_video_orc_pack_BGR16_le (OrcExecutor * ORC_RESTRICT ex)
13278 {
13279   int i;
13280   int n = ex->n;
13281   orc_union16 *ORC_RESTRICT ptr0;
13282   const orc_union32 *ORC_RESTRICT ptr4;
13283 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
13284   volatile orc_union32 var37;
13285 #else
13286   orc_union32 var37;
13287 #endif
13288 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
13289   volatile orc_union32 var38;
13290 #else
13291   orc_union32 var38;
13292 #endif
13293 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
13294   volatile orc_union32 var39;
13295 #else
13296   orc_union32 var39;
13297 #endif
13298   orc_union16 var40;
13299   orc_union32 var41;
13300   orc_union32 var42;
13301   orc_union32 var43;
13302   orc_union32 var44;
13303   orc_union32 var45;
13304   orc_union32 var46;
13305   orc_union32 var47;
13306   orc_union32 var48;
13307   orc_union32 var49;
13308 
13309   ptr0 = (orc_union16 *) ex->arrays[0];
13310   ptr4 = (orc_union32 *) ex->arrays[4];
13311 
13312   /* 1: loadpl */
13313   var37.i = 0x0000f800;         /* 63488 or 3.13672e-319f */
13314   /* 3: loadpl */
13315   var38.i = 0x00fc0000;         /* 16515072 or 8.15953e-317f */
13316   /* 5: loadpl */
13317   var39.i = 0xf8000000;         /* -134217728 or 2.05568e-314f */
13318 
13319   for (i = 0; i < n; i++) {
13320     /* 0: loadl */
13321     var41 = ptr4[i];
13322     /* 2: andl */
13323     var42.i = var41.i & var37.i;
13324     /* 4: andl */
13325     var43.i = var41.i & var38.i;
13326     /* 6: andl */
13327     var44.i = var41.i & var39.i;
13328     /* 7: shrul */
13329     var45.i = ((orc_uint32) var42.i) >> 11;
13330     /* 8: shrul */
13331     var46.i = ((orc_uint32) var43.i) >> 13;
13332     /* 9: shrul */
13333     var47.i = ((orc_uint32) var44.i) >> 16;
13334     /* 10: orl */
13335     var48.i = var45.i | var46.i;
13336     /* 11: orl */
13337     var49.i = var48.i | var47.i;
13338     /* 12: select0lw */
13339     {
13340       orc_union32 _src;
13341       _src.i = var49.i;
13342       var40.i = _src.x2[0];
13343     }
13344     /* 13: storew */
13345     ptr0[i] = var40;
13346   }
13347 
13348 }
13349 
13350 void
video_orc_pack_BGR16_le(guint16 * ORC_RESTRICT d1,const guint32 * ORC_RESTRICT s1,int n)13351 video_orc_pack_BGR16_le (guint16 * ORC_RESTRICT d1,
13352     const guint32 * ORC_RESTRICT s1, int n)
13353 {
13354   OrcExecutor _ex, *ex = &_ex;
13355   static volatile int p_inited = 0;
13356   static OrcCode *c = 0;
13357   void (*func) (OrcExecutor *);
13358 
13359   if (!p_inited) {
13360     orc_once_mutex_lock ();
13361     if (!p_inited) {
13362       OrcProgram *p;
13363 
13364 #if 1
13365       static const orc_uint8 bc[] = {
13366         1, 9, 23, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
13367         107, 95, 66, 71, 82, 49, 54, 95, 108, 101, 11, 2, 2, 12, 4, 4,
13368         14, 4, 0, 248, 0, 0, 14, 4, 0, 0, 252, 0, 14, 4, 0, 0,
13369         0, 248, 14, 4, 11, 0, 0, 0, 14, 4, 13, 0, 0, 0, 14, 4,
13370         16, 0, 0, 0, 20, 4, 20, 4, 20, 4, 20, 4, 20, 4, 113, 32,
13371         4, 106, 33, 32, 16, 106, 34, 32, 17, 106, 35, 32, 18, 126, 33, 33,
13372         19, 126, 34, 34, 20, 126, 35, 35, 21, 123, 36, 33, 34, 123, 36, 36,
13373         35, 190, 0, 36, 2, 0,
13374       };
13375       p = orc_program_new_from_static_bytecode (bc);
13376       orc_program_set_backup_function (p, _backup_video_orc_pack_BGR16_le);
13377 #else
13378       p = orc_program_new ();
13379       orc_program_set_name (p, "video_orc_pack_BGR16_le");
13380       orc_program_set_backup_function (p, _backup_video_orc_pack_BGR16_le);
13381       orc_program_add_destination (p, 2, "d1");
13382       orc_program_add_source (p, 4, "s1");
13383       orc_program_add_constant (p, 4, 0x0000f800, "c1");
13384       orc_program_add_constant (p, 4, 0x00fc0000, "c2");
13385       orc_program_add_constant (p, 4, 0xf8000000, "c3");
13386       orc_program_add_constant (p, 4, 0x0000000b, "c4");
13387       orc_program_add_constant (p, 4, 0x0000000d, "c5");
13388       orc_program_add_constant (p, 4, 0x00000010, "c6");
13389       orc_program_add_temporary (p, 4, "t1");
13390       orc_program_add_temporary (p, 4, "t2");
13391       orc_program_add_temporary (p, 4, "t3");
13392       orc_program_add_temporary (p, 4, "t4");
13393       orc_program_add_temporary (p, 4, "t5");
13394 
13395       orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
13396           ORC_VAR_D1);
13397       orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1,
13398           ORC_VAR_D1);
13399       orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2,
13400           ORC_VAR_D1);
13401       orc_program_append_2 (p, "andl", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3,
13402           ORC_VAR_D1);
13403       orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4,
13404           ORC_VAR_D1);
13405       orc_program_append_2 (p, "shrul", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5,
13406           ORC_VAR_D1);
13407       orc_program_append_2 (p, "shrul", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C6,
13408           ORC_VAR_D1);
13409       orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_T3,
13410           ORC_VAR_D1);
13411       orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4,
13412           ORC_VAR_D1);
13413       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_D1, ORC_VAR_T5,
13414           ORC_VAR_D1, ORC_VAR_D1);
13415 #endif
13416 
13417       orc_program_compile (p);
13418       c = orc_program_take_code (p);
13419       orc_program_free (p);
13420     }
13421     p_inited = TRUE;
13422     orc_once_mutex_unlock ();
13423   }
13424   ex->arrays[ORC_VAR_A2] = c;
13425   ex->program = 0;
13426 
13427   ex->n = n;
13428   ex->arrays[ORC_VAR_D1] = d1;
13429   ex->arrays[ORC_VAR_S1] = (void *) s1;
13430 
13431   func = c->exec;
13432   func (ex);
13433 }
13434 #endif
13435 
13436 
13437 /* video_orc_pack_BGR16_be */
13438 #ifdef DISABLE_ORC
13439 void
video_orc_pack_BGR16_be(guint16 * ORC_RESTRICT d1,const guint32 * ORC_RESTRICT s1,int n)13440 video_orc_pack_BGR16_be (guint16 * ORC_RESTRICT d1,
13441     const guint32 * ORC_RESTRICT s1, int n)
13442 {
13443   int i;
13444   orc_union16 *ORC_RESTRICT ptr0;
13445   const orc_union32 *ORC_RESTRICT ptr4;
13446 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
13447   volatile orc_union32 var37;
13448 #else
13449   orc_union32 var37;
13450 #endif
13451 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
13452   volatile orc_union32 var38;
13453 #else
13454   orc_union32 var38;
13455 #endif
13456 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
13457   volatile orc_union32 var39;
13458 #else
13459   orc_union32 var39;
13460 #endif
13461   orc_union16 var40;
13462   orc_union32 var41;
13463   orc_union32 var42;
13464   orc_union32 var43;
13465   orc_union32 var44;
13466   orc_union32 var45;
13467   orc_union32 var46;
13468   orc_union32 var47;
13469   orc_union32 var48;
13470   orc_union32 var49;
13471 
13472   ptr0 = (orc_union16 *) d1;
13473   ptr4 = (orc_union32 *) s1;
13474 
13475   /* 1: loadpl */
13476   var37.i = 0x00f80000;         /* 16252928 or 8.03001e-317f */
13477   /* 3: loadpl */
13478   var38.i = 0x0000fc00;         /* 64512 or 3.18732e-319f */
13479   /* 5: loadpl */
13480   var39.i = 0x000000f8;         /* 248 or 1.22528e-321f */
13481 
13482   for (i = 0; i < n; i++) {
13483     /* 0: loadl */
13484     var41 = ptr4[i];
13485     /* 2: andl */
13486     var42.i = var41.i & var37.i;
13487     /* 4: andl */
13488     var43.i = var41.i & var38.i;
13489     /* 6: andl */
13490     var44.i = var41.i & var39.i;
13491     /* 7: shll */
13492     var45.i = ((orc_uint32) var44.i) << 8;
13493     /* 8: shrul */
13494     var46.i = ((orc_uint32) var43.i) >> 5;
13495     /* 9: shrul */
13496     var47.i = ((orc_uint32) var42.i) >> 19;
13497     /* 10: orl */
13498     var48.i = var47.i | var46.i;
13499     /* 11: orl */
13500     var49.i = var48.i | var45.i;
13501     /* 12: select1lw */
13502     {
13503       orc_union32 _src;
13504       _src.i = var49.i;
13505       var40.i = _src.x2[1];
13506     }
13507     /* 13: storew */
13508     ptr0[i] = var40;
13509   }
13510 
13511 }
13512 
13513 #else
13514 static void
_backup_video_orc_pack_BGR16_be(OrcExecutor * ORC_RESTRICT ex)13515 _backup_video_orc_pack_BGR16_be (OrcExecutor * ORC_RESTRICT ex)
13516 {
13517   int i;
13518   int n = ex->n;
13519   orc_union16 *ORC_RESTRICT ptr0;
13520   const orc_union32 *ORC_RESTRICT ptr4;
13521 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
13522   volatile orc_union32 var37;
13523 #else
13524   orc_union32 var37;
13525 #endif
13526 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
13527   volatile orc_union32 var38;
13528 #else
13529   orc_union32 var38;
13530 #endif
13531 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
13532   volatile orc_union32 var39;
13533 #else
13534   orc_union32 var39;
13535 #endif
13536   orc_union16 var40;
13537   orc_union32 var41;
13538   orc_union32 var42;
13539   orc_union32 var43;
13540   orc_union32 var44;
13541   orc_union32 var45;
13542   orc_union32 var46;
13543   orc_union32 var47;
13544   orc_union32 var48;
13545   orc_union32 var49;
13546 
13547   ptr0 = (orc_union16 *) ex->arrays[0];
13548   ptr4 = (orc_union32 *) ex->arrays[4];
13549 
13550   /* 1: loadpl */
13551   var37.i = 0x00f80000;         /* 16252928 or 8.03001e-317f */
13552   /* 3: loadpl */
13553   var38.i = 0x0000fc00;         /* 64512 or 3.18732e-319f */
13554   /* 5: loadpl */
13555   var39.i = 0x000000f8;         /* 248 or 1.22528e-321f */
13556 
13557   for (i = 0; i < n; i++) {
13558     /* 0: loadl */
13559     var41 = ptr4[i];
13560     /* 2: andl */
13561     var42.i = var41.i & var37.i;
13562     /* 4: andl */
13563     var43.i = var41.i & var38.i;
13564     /* 6: andl */
13565     var44.i = var41.i & var39.i;
13566     /* 7: shll */
13567     var45.i = ((orc_uint32) var44.i) << 8;
13568     /* 8: shrul */
13569     var46.i = ((orc_uint32) var43.i) >> 5;
13570     /* 9: shrul */
13571     var47.i = ((orc_uint32) var42.i) >> 19;
13572     /* 10: orl */
13573     var48.i = var47.i | var46.i;
13574     /* 11: orl */
13575     var49.i = var48.i | var45.i;
13576     /* 12: select1lw */
13577     {
13578       orc_union32 _src;
13579       _src.i = var49.i;
13580       var40.i = _src.x2[1];
13581     }
13582     /* 13: storew */
13583     ptr0[i] = var40;
13584   }
13585 
13586 }
13587 
13588 void
video_orc_pack_BGR16_be(guint16 * ORC_RESTRICT d1,const guint32 * ORC_RESTRICT s1,int n)13589 video_orc_pack_BGR16_be (guint16 * ORC_RESTRICT d1,
13590     const guint32 * ORC_RESTRICT s1, int n)
13591 {
13592   OrcExecutor _ex, *ex = &_ex;
13593   static volatile int p_inited = 0;
13594   static OrcCode *c = 0;
13595   void (*func) (OrcExecutor *);
13596 
13597   if (!p_inited) {
13598     orc_once_mutex_lock ();
13599     if (!p_inited) {
13600       OrcProgram *p;
13601 
13602 #if 1
13603       static const orc_uint8 bc[] = {
13604         1, 9, 23, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
13605         107, 95, 66, 71, 82, 49, 54, 95, 98, 101, 11, 2, 2, 12, 4, 4,
13606         14, 4, 0, 0, 248, 0, 14, 4, 0, 252, 0, 0, 14, 4, 248, 0,
13607         0, 0, 14, 4, 8, 0, 0, 0, 14, 4, 5, 0, 0, 0, 14, 4,
13608         19, 0, 0, 0, 20, 4, 20, 4, 20, 4, 20, 4, 20, 4, 113, 32,
13609         4, 106, 33, 32, 16, 106, 34, 32, 17, 106, 35, 32, 18, 124, 35, 35,
13610         19, 126, 34, 34, 20, 126, 33, 33, 21, 123, 36, 33, 34, 123, 36, 36,
13611         35, 191, 0, 36, 2, 0,
13612       };
13613       p = orc_program_new_from_static_bytecode (bc);
13614       orc_program_set_backup_function (p, _backup_video_orc_pack_BGR16_be);
13615 #else
13616       p = orc_program_new ();
13617       orc_program_set_name (p, "video_orc_pack_BGR16_be");
13618       orc_program_set_backup_function (p, _backup_video_orc_pack_BGR16_be);
13619       orc_program_add_destination (p, 2, "d1");
13620       orc_program_add_source (p, 4, "s1");
13621       orc_program_add_constant (p, 4, 0x00f80000, "c1");
13622       orc_program_add_constant (p, 4, 0x0000fc00, "c2");
13623       orc_program_add_constant (p, 4, 0x000000f8, "c3");
13624       orc_program_add_constant (p, 4, 0x00000008, "c4");
13625       orc_program_add_constant (p, 4, 0x00000005, "c5");
13626       orc_program_add_constant (p, 4, 0x00000013, "c6");
13627       orc_program_add_temporary (p, 4, "t1");
13628       orc_program_add_temporary (p, 4, "t2");
13629       orc_program_add_temporary (p, 4, "t3");
13630       orc_program_add_temporary (p, 4, "t4");
13631       orc_program_add_temporary (p, 4, "t5");
13632 
13633       orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
13634           ORC_VAR_D1);
13635       orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1,
13636           ORC_VAR_D1);
13637       orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2,
13638           ORC_VAR_D1);
13639       orc_program_append_2 (p, "andl", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3,
13640           ORC_VAR_D1);
13641       orc_program_append_2 (p, "shll", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C4,
13642           ORC_VAR_D1);
13643       orc_program_append_2 (p, "shrul", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5,
13644           ORC_VAR_D1);
13645       orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C6,
13646           ORC_VAR_D1);
13647       orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_T3,
13648           ORC_VAR_D1);
13649       orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4,
13650           ORC_VAR_D1);
13651       orc_program_append_2 (p, "select1lw", 0, ORC_VAR_D1, ORC_VAR_T5,
13652           ORC_VAR_D1, ORC_VAR_D1);
13653 #endif
13654 
13655       orc_program_compile (p);
13656       c = orc_program_take_code (p);
13657       orc_program_free (p);
13658     }
13659     p_inited = TRUE;
13660     orc_once_mutex_unlock ();
13661   }
13662   ex->arrays[ORC_VAR_A2] = c;
13663   ex->program = 0;
13664 
13665   ex->n = n;
13666   ex->arrays[ORC_VAR_D1] = d1;
13667   ex->arrays[ORC_VAR_S1] = (void *) s1;
13668 
13669   func = c->exec;
13670   func (ex);
13671 }
13672 #endif
13673 
13674 
13675 /* video_orc_resample_bilinear_u32 */
13676 #ifdef DISABLE_ORC
13677 void
video_orc_resample_bilinear_u32(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int p1,int p2,int n)13678 video_orc_resample_bilinear_u32 (guint8 * ORC_RESTRICT d1,
13679     const guint8 * ORC_RESTRICT s1, int p1, int p2, int n)
13680 {
13681   int i;
13682   orc_union32 *ORC_RESTRICT ptr0;
13683   const orc_union32 *ORC_RESTRICT ptr4;
13684   orc_union32 var32;
13685 
13686   ptr0 = (orc_union32 *) d1;
13687   ptr4 = (orc_union32 *) s1;
13688 
13689 
13690   for (i = 0; i < n; i++) {
13691     /* 0: ldreslinl */
13692     {
13693       int tmp = p1 + i * p2;
13694       orc_union32 a = ptr4[tmp >> 16];
13695       orc_union32 b = ptr4[(tmp >> 16) + 1];
13696       var32.x4[0] =
13697           ((orc_uint8) a.x4[0] * (256 - ((tmp >> 8) & 0xff)) +
13698           (orc_uint8) b.x4[0] * ((tmp >> 8) & 0xff)) >> 8;
13699       var32.x4[1] =
13700           ((orc_uint8) a.x4[1] * (256 - ((tmp >> 8) & 0xff)) +
13701           (orc_uint8) b.x4[1] * ((tmp >> 8) & 0xff)) >> 8;
13702       var32.x4[2] =
13703           ((orc_uint8) a.x4[2] * (256 - ((tmp >> 8) & 0xff)) +
13704           (orc_uint8) b.x4[2] * ((tmp >> 8) & 0xff)) >> 8;
13705       var32.x4[3] =
13706           ((orc_uint8) a.x4[3] * (256 - ((tmp >> 8) & 0xff)) +
13707           (orc_uint8) b.x4[3] * ((tmp >> 8) & 0xff)) >> 8;
13708     }
13709     /* 1: storel */
13710     ptr0[i] = var32;
13711   }
13712 
13713 }
13714 
13715 #else
13716 static void
_backup_video_orc_resample_bilinear_u32(OrcExecutor * ORC_RESTRICT ex)13717 _backup_video_orc_resample_bilinear_u32 (OrcExecutor * ORC_RESTRICT ex)
13718 {
13719   int i;
13720   int n = ex->n;
13721   orc_union32 *ORC_RESTRICT ptr0;
13722   const orc_union32 *ORC_RESTRICT ptr4;
13723   orc_union32 var32;
13724 
13725   ptr0 = (orc_union32 *) ex->arrays[0];
13726   ptr4 = (orc_union32 *) ex->arrays[4];
13727 
13728 
13729   for (i = 0; i < n; i++) {
13730     /* 0: ldreslinl */
13731     {
13732       int tmp = ex->params[24] + i * ex->params[25];
13733       orc_union32 a = ptr4[tmp >> 16];
13734       orc_union32 b = ptr4[(tmp >> 16) + 1];
13735       var32.x4[0] =
13736           ((orc_uint8) a.x4[0] * (256 - ((tmp >> 8) & 0xff)) +
13737           (orc_uint8) b.x4[0] * ((tmp >> 8) & 0xff)) >> 8;
13738       var32.x4[1] =
13739           ((orc_uint8) a.x4[1] * (256 - ((tmp >> 8) & 0xff)) +
13740           (orc_uint8) b.x4[1] * ((tmp >> 8) & 0xff)) >> 8;
13741       var32.x4[2] =
13742           ((orc_uint8) a.x4[2] * (256 - ((tmp >> 8) & 0xff)) +
13743           (orc_uint8) b.x4[2] * ((tmp >> 8) & 0xff)) >> 8;
13744       var32.x4[3] =
13745           ((orc_uint8) a.x4[3] * (256 - ((tmp >> 8) & 0xff)) +
13746           (orc_uint8) b.x4[3] * ((tmp >> 8) & 0xff)) >> 8;
13747     }
13748     /* 1: storel */
13749     ptr0[i] = var32;
13750   }
13751 
13752 }
13753 
13754 void
video_orc_resample_bilinear_u32(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int p1,int p2,int n)13755 video_orc_resample_bilinear_u32 (guint8 * ORC_RESTRICT d1,
13756     const guint8 * ORC_RESTRICT s1, int p1, int p2, int n)
13757 {
13758   OrcExecutor _ex, *ex = &_ex;
13759   static volatile int p_inited = 0;
13760   static OrcCode *c = 0;
13761   void (*func) (OrcExecutor *);
13762 
13763   if (!p_inited) {
13764     orc_once_mutex_lock ();
13765     if (!p_inited) {
13766       OrcProgram *p;
13767 
13768 #if 1
13769       static const orc_uint8 bc[] = {
13770         1, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
13771         97, 109, 112, 108, 101, 95, 98, 105, 108, 105, 110, 101, 97, 114, 95,
13772             117,
13773         51, 50, 11, 4, 4, 12, 4, 4, 16, 4, 16, 4, 51, 0, 4, 24,
13774         25, 2, 0,
13775       };
13776       p = orc_program_new_from_static_bytecode (bc);
13777       orc_program_set_backup_function (p,
13778           _backup_video_orc_resample_bilinear_u32);
13779 #else
13780       p = orc_program_new ();
13781       orc_program_set_name (p, "video_orc_resample_bilinear_u32");
13782       orc_program_set_backup_function (p,
13783           _backup_video_orc_resample_bilinear_u32);
13784       orc_program_add_destination (p, 4, "d1");
13785       orc_program_add_source (p, 4, "s1");
13786       orc_program_add_parameter (p, 4, "p1");
13787       orc_program_add_parameter (p, 4, "p2");
13788 
13789       orc_program_append_2 (p, "ldreslinl", 0, ORC_VAR_D1, ORC_VAR_S1,
13790           ORC_VAR_P1, ORC_VAR_P2);
13791 #endif
13792 
13793       orc_program_compile (p);
13794       c = orc_program_take_code (p);
13795       orc_program_free (p);
13796     }
13797     p_inited = TRUE;
13798     orc_once_mutex_unlock ();
13799   }
13800   ex->arrays[ORC_VAR_A2] = c;
13801   ex->program = 0;
13802 
13803   ex->n = n;
13804   ex->arrays[ORC_VAR_D1] = d1;
13805   ex->arrays[ORC_VAR_S1] = (void *) s1;
13806   ex->params[ORC_VAR_P1] = p1;
13807   ex->params[ORC_VAR_P2] = p2;
13808 
13809   func = c->exec;
13810   func (ex);
13811 }
13812 #endif
13813 
13814 
13815 /* video_orc_merge_linear_u8 */
13816 #ifdef DISABLE_ORC
13817 void
video_orc_merge_linear_u8(orc_uint8 * ORC_RESTRICT d1,const orc_uint8 * ORC_RESTRICT s1,const orc_uint8 * ORC_RESTRICT s2,int p1,int n)13818 video_orc_merge_linear_u8 (orc_uint8 * ORC_RESTRICT d1,
13819     const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
13820     int p1, int n)
13821 {
13822   int i;
13823   orc_int8 *ORC_RESTRICT ptr0;
13824   const orc_int8 *ORC_RESTRICT ptr4;
13825   const orc_int8 *ORC_RESTRICT ptr5;
13826   orc_int8 var36;
13827   orc_int8 var37;
13828   orc_union16 var38;
13829 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
13830   volatile orc_union16 var39;
13831 #else
13832   orc_union16 var39;
13833 #endif
13834   orc_int8 var40;
13835   orc_int8 var41;
13836   orc_union16 var42;
13837   orc_union16 var43;
13838   orc_union16 var44;
13839   orc_union16 var45;
13840   orc_union16 var46;
13841   orc_int8 var47;
13842 
13843   ptr0 = (orc_int8 *) d1;
13844   ptr4 = (orc_int8 *) s1;
13845   ptr5 = (orc_int8 *) s2;
13846 
13847   /* 6: loadpw */
13848   var38.i = p1;
13849   /* 8: loadpw */
13850   var39.i = 0x00000080;         /* 128 or 6.32404e-322f */
13851 
13852   for (i = 0; i < n; i++) {
13853     /* 0: loadb */
13854     var41 = ptr4[i];
13855     /* 1: loadb */
13856     var36 = ptr4[i];
13857     /* 2: convubw */
13858     var42.i = (orc_uint8) var36;
13859     /* 3: loadb */
13860     var37 = ptr5[i];
13861     /* 4: convubw */
13862     var43.i = (orc_uint8) var37;
13863     /* 5: subw */
13864     var44.i = var43.i - var42.i;
13865     /* 7: mullw */
13866     var45.i = (var44.i * var38.i) & 0xffff;
13867     /* 9: addw */
13868     var46.i = var45.i + var39.i;
13869     /* 10: convhwb */
13870     var47 = ((orc_uint16) var46.i) >> 8;
13871     /* 11: addb */
13872     var40 = var47 + var41;
13873     /* 12: storeb */
13874     ptr0[i] = var40;
13875   }
13876 
13877 }
13878 
13879 #else
13880 static void
_backup_video_orc_merge_linear_u8(OrcExecutor * ORC_RESTRICT ex)13881 _backup_video_orc_merge_linear_u8 (OrcExecutor * ORC_RESTRICT ex)
13882 {
13883   int i;
13884   int n = ex->n;
13885   orc_int8 *ORC_RESTRICT ptr0;
13886   const orc_int8 *ORC_RESTRICT ptr4;
13887   const orc_int8 *ORC_RESTRICT ptr5;
13888   orc_int8 var36;
13889   orc_int8 var37;
13890   orc_union16 var38;
13891 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
13892   volatile orc_union16 var39;
13893 #else
13894   orc_union16 var39;
13895 #endif
13896   orc_int8 var40;
13897   orc_int8 var41;
13898   orc_union16 var42;
13899   orc_union16 var43;
13900   orc_union16 var44;
13901   orc_union16 var45;
13902   orc_union16 var46;
13903   orc_int8 var47;
13904 
13905   ptr0 = (orc_int8 *) ex->arrays[0];
13906   ptr4 = (orc_int8 *) ex->arrays[4];
13907   ptr5 = (orc_int8 *) ex->arrays[5];
13908 
13909   /* 6: loadpw */
13910   var38.i = ex->params[24];
13911   /* 8: loadpw */
13912   var39.i = 0x00000080;         /* 128 or 6.32404e-322f */
13913 
13914   for (i = 0; i < n; i++) {
13915     /* 0: loadb */
13916     var41 = ptr4[i];
13917     /* 1: loadb */
13918     var36 = ptr4[i];
13919     /* 2: convubw */
13920     var42.i = (orc_uint8) var36;
13921     /* 3: loadb */
13922     var37 = ptr5[i];
13923     /* 4: convubw */
13924     var43.i = (orc_uint8) var37;
13925     /* 5: subw */
13926     var44.i = var43.i - var42.i;
13927     /* 7: mullw */
13928     var45.i = (var44.i * var38.i) & 0xffff;
13929     /* 9: addw */
13930     var46.i = var45.i + var39.i;
13931     /* 10: convhwb */
13932     var47 = ((orc_uint16) var46.i) >> 8;
13933     /* 11: addb */
13934     var40 = var47 + var41;
13935     /* 12: storeb */
13936     ptr0[i] = var40;
13937   }
13938 
13939 }
13940 
13941 void
video_orc_merge_linear_u8(orc_uint8 * ORC_RESTRICT d1,const orc_uint8 * ORC_RESTRICT s1,const orc_uint8 * ORC_RESTRICT s2,int p1,int n)13942 video_orc_merge_linear_u8 (orc_uint8 * ORC_RESTRICT d1,
13943     const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
13944     int p1, int n)
13945 {
13946   OrcExecutor _ex, *ex = &_ex;
13947   static volatile int p_inited = 0;
13948   static OrcCode *c = 0;
13949   void (*func) (OrcExecutor *);
13950 
13951   if (!p_inited) {
13952     orc_once_mutex_lock ();
13953     if (!p_inited) {
13954       OrcProgram *p;
13955 
13956 #if 1
13957       static const orc_uint8 bc[] = {
13958         1, 9, 25, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 109, 101, 114,
13959         103, 101, 95, 108, 105, 110, 101, 97, 114, 95, 117, 56, 11, 1, 1, 12,
13960         1, 1, 12, 1, 1, 14, 2, 128, 0, 0, 0, 16, 1, 20, 2, 20,
13961         2, 20, 1, 20, 1, 43, 34, 4, 150, 32, 4, 150, 33, 5, 98, 33,
13962         33, 32, 89, 33, 33, 24, 70, 33, 33, 16, 158, 35, 33, 33, 0, 35,
13963         34, 2, 0,
13964       };
13965       p = orc_program_new_from_static_bytecode (bc);
13966       orc_program_set_backup_function (p, _backup_video_orc_merge_linear_u8);
13967 #else
13968       p = orc_program_new ();
13969       orc_program_set_name (p, "video_orc_merge_linear_u8");
13970       orc_program_set_backup_function (p, _backup_video_orc_merge_linear_u8);
13971       orc_program_add_destination (p, 1, "d1");
13972       orc_program_add_source (p, 1, "s1");
13973       orc_program_add_source (p, 1, "s2");
13974       orc_program_add_constant (p, 2, 0x00000080, "c1");
13975       orc_program_add_parameter (p, 1, "p1");
13976       orc_program_add_temporary (p, 2, "t1");
13977       orc_program_add_temporary (p, 2, "t2");
13978       orc_program_add_temporary (p, 1, "t3");
13979       orc_program_add_temporary (p, 1, "t4");
13980 
13981       orc_program_append_2 (p, "loadb", 0, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_D1,
13982           ORC_VAR_D1);
13983       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
13984           ORC_VAR_D1);
13985       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
13986           ORC_VAR_D1);
13987       orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1,
13988           ORC_VAR_D1);
13989       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1,
13990           ORC_VAR_D1);
13991       orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1,
13992           ORC_VAR_D1);
13993       orc_program_append_2 (p, "convhwb", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_D1,
13994           ORC_VAR_D1);
13995       orc_program_append_2 (p, "addb", 0, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_T3,
13996           ORC_VAR_D1);
13997 #endif
13998 
13999       orc_program_compile (p);
14000       c = orc_program_take_code (p);
14001       orc_program_free (p);
14002     }
14003     p_inited = TRUE;
14004     orc_once_mutex_unlock ();
14005   }
14006   ex->arrays[ORC_VAR_A2] = c;
14007   ex->program = 0;
14008 
14009   ex->n = n;
14010   ex->arrays[ORC_VAR_D1] = d1;
14011   ex->arrays[ORC_VAR_S1] = (void *) s1;
14012   ex->arrays[ORC_VAR_S2] = (void *) s2;
14013   ex->params[ORC_VAR_P1] = p1;
14014 
14015   func = c->exec;
14016   func (ex);
14017 }
14018 #endif
14019 
14020 
14021 /* video_orc_memset_2d */
14022 #ifdef DISABLE_ORC
14023 void
video_orc_memset_2d(guint8 * ORC_RESTRICT d1,int d1_stride,int p1,int n,int m)14024 video_orc_memset_2d (guint8 * ORC_RESTRICT d1, int d1_stride, int p1, int n,
14025     int m)
14026 {
14027   int i;
14028   int j;
14029   orc_int8 *ORC_RESTRICT ptr0;
14030   orc_int8 var32;
14031 
14032   for (j = 0; j < m; j++) {
14033     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
14034 
14035     /* 0: loadpb */
14036     var32 = p1;
14037 
14038     for (i = 0; i < n; i++) {
14039       /* 1: storeb */
14040       ptr0[i] = var32;
14041     }
14042   }
14043 
14044 }
14045 
14046 #else
14047 static void
_backup_video_orc_memset_2d(OrcExecutor * ORC_RESTRICT ex)14048 _backup_video_orc_memset_2d (OrcExecutor * ORC_RESTRICT ex)
14049 {
14050   int i;
14051   int j;
14052   int n = ex->n;
14053   int m = ex->params[ORC_VAR_A1];
14054   orc_int8 *ORC_RESTRICT ptr0;
14055   orc_int8 var32;
14056 
14057   for (j = 0; j < m; j++) {
14058     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
14059 
14060     /* 0: loadpb */
14061     var32 = ex->params[24];
14062 
14063     for (i = 0; i < n; i++) {
14064       /* 1: storeb */
14065       ptr0[i] = var32;
14066     }
14067   }
14068 
14069 }
14070 
14071 void
video_orc_memset_2d(guint8 * ORC_RESTRICT d1,int d1_stride,int p1,int n,int m)14072 video_orc_memset_2d (guint8 * ORC_RESTRICT d1, int d1_stride, int p1, int n,
14073     int m)
14074 {
14075   OrcExecutor _ex, *ex = &_ex;
14076   static volatile int p_inited = 0;
14077   static OrcCode *c = 0;
14078   void (*func) (OrcExecutor *);
14079 
14080   if (!p_inited) {
14081     orc_once_mutex_lock ();
14082     if (!p_inited) {
14083       OrcProgram *p;
14084 
14085 #if 1
14086       static const orc_uint8 bc[] = {
14087         1, 7, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 109, 101,
14088         109, 115, 101, 116, 95, 50, 100, 11, 1, 1, 16, 1, 64, 0, 24, 2,
14089         0,
14090       };
14091       p = orc_program_new_from_static_bytecode (bc);
14092       orc_program_set_backup_function (p, _backup_video_orc_memset_2d);
14093 #else
14094       p = orc_program_new ();
14095       orc_program_set_2d (p);
14096       orc_program_set_name (p, "video_orc_memset_2d");
14097       orc_program_set_backup_function (p, _backup_video_orc_memset_2d);
14098       orc_program_add_destination (p, 1, "d1");
14099       orc_program_add_parameter (p, 1, "p1");
14100 
14101       orc_program_append_2 (p, "storeb", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1,
14102           ORC_VAR_D1);
14103 #endif
14104 
14105       orc_program_compile (p);
14106       c = orc_program_take_code (p);
14107       orc_program_free (p);
14108     }
14109     p_inited = TRUE;
14110     orc_once_mutex_unlock ();
14111   }
14112   ex->arrays[ORC_VAR_A2] = c;
14113   ex->program = 0;
14114 
14115   ex->n = n;
14116   ORC_EXECUTOR_M (ex) = m;
14117   ex->arrays[ORC_VAR_D1] = d1;
14118   ex->params[ORC_VAR_D1] = d1_stride;
14119   ex->params[ORC_VAR_P1] = p1;
14120 
14121   func = c->exec;
14122   func (ex);
14123 }
14124 #endif
14125 
14126 
14127 /* video_orc_memcpy_2d */
14128 #ifdef DISABLE_ORC
14129 void
video_orc_memcpy_2d(guint8 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,int n,int m)14130 video_orc_memcpy_2d (guint8 * ORC_RESTRICT d1, int d1_stride,
14131     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
14132 {
14133   int i;
14134   int j;
14135   orc_int8 *ORC_RESTRICT ptr0;
14136   const orc_int8 *ORC_RESTRICT ptr4;
14137   orc_int8 var32;
14138   orc_int8 var33;
14139 
14140   for (j = 0; j < m; j++) {
14141     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
14142     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
14143 
14144 
14145     for (i = 0; i < n; i++) {
14146       /* 0: loadb */
14147       var32 = ptr4[i];
14148       /* 1: copyb */
14149       var33 = var32;
14150       /* 2: storeb */
14151       ptr0[i] = var33;
14152     }
14153   }
14154 
14155 }
14156 
14157 #else
14158 static void
_backup_video_orc_memcpy_2d(OrcExecutor * ORC_RESTRICT ex)14159 _backup_video_orc_memcpy_2d (OrcExecutor * ORC_RESTRICT ex)
14160 {
14161   int i;
14162   int j;
14163   int n = ex->n;
14164   int m = ex->params[ORC_VAR_A1];
14165   orc_int8 *ORC_RESTRICT ptr0;
14166   const orc_int8 *ORC_RESTRICT ptr4;
14167   orc_int8 var32;
14168   orc_int8 var33;
14169 
14170   for (j = 0; j < m; j++) {
14171     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
14172     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
14173 
14174 
14175     for (i = 0; i < n; i++) {
14176       /* 0: loadb */
14177       var32 = ptr4[i];
14178       /* 1: copyb */
14179       var33 = var32;
14180       /* 2: storeb */
14181       ptr0[i] = var33;
14182     }
14183   }
14184 
14185 }
14186 
14187 void
video_orc_memcpy_2d(guint8 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,int n,int m)14188 video_orc_memcpy_2d (guint8 * ORC_RESTRICT d1, int d1_stride,
14189     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
14190 {
14191   OrcExecutor _ex, *ex = &_ex;
14192   static volatile int p_inited = 0;
14193   static OrcCode *c = 0;
14194   void (*func) (OrcExecutor *);
14195 
14196   if (!p_inited) {
14197     orc_once_mutex_lock ();
14198     if (!p_inited) {
14199       OrcProgram *p;
14200 
14201 #if 1
14202       static const orc_uint8 bc[] = {
14203         1, 7, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 109, 101,
14204         109, 99, 112, 121, 95, 50, 100, 11, 1, 1, 12, 1, 1, 42, 0, 4,
14205         2, 0,
14206       };
14207       p = orc_program_new_from_static_bytecode (bc);
14208       orc_program_set_backup_function (p, _backup_video_orc_memcpy_2d);
14209 #else
14210       p = orc_program_new ();
14211       orc_program_set_2d (p);
14212       orc_program_set_name (p, "video_orc_memcpy_2d");
14213       orc_program_set_backup_function (p, _backup_video_orc_memcpy_2d);
14214       orc_program_add_destination (p, 1, "d1");
14215       orc_program_add_source (p, 1, "s1");
14216 
14217       orc_program_append_2 (p, "copyb", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1,
14218           ORC_VAR_D1);
14219 #endif
14220 
14221       orc_program_compile (p);
14222       c = orc_program_take_code (p);
14223       orc_program_free (p);
14224     }
14225     p_inited = TRUE;
14226     orc_once_mutex_unlock ();
14227   }
14228   ex->arrays[ORC_VAR_A2] = c;
14229   ex->program = 0;
14230 
14231   ex->n = n;
14232   ORC_EXECUTOR_M (ex) = m;
14233   ex->arrays[ORC_VAR_D1] = d1;
14234   ex->params[ORC_VAR_D1] = d1_stride;
14235   ex->arrays[ORC_VAR_S1] = (void *) s1;
14236   ex->params[ORC_VAR_S1] = s1_stride;
14237 
14238   func = c->exec;
14239   func (ex);
14240 }
14241 #endif
14242 
14243 
14244 /* video_orc_convert_u16_to_u8 */
14245 #ifdef DISABLE_ORC
14246 void
video_orc_convert_u16_to_u8(guint8 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,int n)14247 video_orc_convert_u16_to_u8 (guint8 * ORC_RESTRICT d1,
14248     const guint16 * ORC_RESTRICT s1, int n)
14249 {
14250   int i;
14251   orc_int8 *ORC_RESTRICT ptr0;
14252   const orc_union16 *ORC_RESTRICT ptr4;
14253   orc_union16 var32;
14254   orc_int8 var33;
14255 
14256   ptr0 = (orc_int8 *) d1;
14257   ptr4 = (orc_union16 *) s1;
14258 
14259 
14260   for (i = 0; i < n; i++) {
14261     /* 0: loadw */
14262     var32 = ptr4[i];
14263     /* 1: convhwb */
14264     var33 = ((orc_uint16) var32.i) >> 8;
14265     /* 2: storeb */
14266     ptr0[i] = var33;
14267   }
14268 
14269 }
14270 
14271 #else
14272 static void
_backup_video_orc_convert_u16_to_u8(OrcExecutor * ORC_RESTRICT ex)14273 _backup_video_orc_convert_u16_to_u8 (OrcExecutor * ORC_RESTRICT ex)
14274 {
14275   int i;
14276   int n = ex->n;
14277   orc_int8 *ORC_RESTRICT ptr0;
14278   const orc_union16 *ORC_RESTRICT ptr4;
14279   orc_union16 var32;
14280   orc_int8 var33;
14281 
14282   ptr0 = (orc_int8 *) ex->arrays[0];
14283   ptr4 = (orc_union16 *) ex->arrays[4];
14284 
14285 
14286   for (i = 0; i < n; i++) {
14287     /* 0: loadw */
14288     var32 = ptr4[i];
14289     /* 1: convhwb */
14290     var33 = ((orc_uint16) var32.i) >> 8;
14291     /* 2: storeb */
14292     ptr0[i] = var33;
14293   }
14294 
14295 }
14296 
14297 void
video_orc_convert_u16_to_u8(guint8 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,int n)14298 video_orc_convert_u16_to_u8 (guint8 * ORC_RESTRICT d1,
14299     const guint16 * ORC_RESTRICT s1, int n)
14300 {
14301   OrcExecutor _ex, *ex = &_ex;
14302   static volatile int p_inited = 0;
14303   static OrcCode *c = 0;
14304   void (*func) (OrcExecutor *);
14305 
14306   if (!p_inited) {
14307     orc_once_mutex_lock ();
14308     if (!p_inited) {
14309       OrcProgram *p;
14310 
14311 #if 1
14312       static const orc_uint8 bc[] = {
14313         1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, 110,
14314         118, 101, 114, 116, 95, 117, 49, 54, 95, 116, 111, 95, 117, 56, 11, 1,
14315         1, 12, 2, 2, 158, 0, 4, 2, 0,
14316       };
14317       p = orc_program_new_from_static_bytecode (bc);
14318       orc_program_set_backup_function (p, _backup_video_orc_convert_u16_to_u8);
14319 #else
14320       p = orc_program_new ();
14321       orc_program_set_name (p, "video_orc_convert_u16_to_u8");
14322       orc_program_set_backup_function (p, _backup_video_orc_convert_u16_to_u8);
14323       orc_program_add_destination (p, 1, "d1");
14324       orc_program_add_source (p, 2, "s1");
14325 
14326       orc_program_append_2 (p, "convhwb", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1,
14327           ORC_VAR_D1);
14328 #endif
14329 
14330       orc_program_compile (p);
14331       c = orc_program_take_code (p);
14332       orc_program_free (p);
14333     }
14334     p_inited = TRUE;
14335     orc_once_mutex_unlock ();
14336   }
14337   ex->arrays[ORC_VAR_A2] = c;
14338   ex->program = 0;
14339 
14340   ex->n = n;
14341   ex->arrays[ORC_VAR_D1] = d1;
14342   ex->arrays[ORC_VAR_S1] = (void *) s1;
14343 
14344   func = c->exec;
14345   func (ex);
14346 }
14347 #endif
14348 
14349 
14350 /* video_orc_convert_u8_to_u16 */
14351 #ifdef DISABLE_ORC
14352 void
video_orc_convert_u8_to_u16(guint16 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)14353 video_orc_convert_u8_to_u16 (guint16 * ORC_RESTRICT d1,
14354     const guint8 * ORC_RESTRICT s1, int n)
14355 {
14356   int i;
14357   orc_union16 *ORC_RESTRICT ptr0;
14358   const orc_int8 *ORC_RESTRICT ptr4;
14359   orc_int8 var32;
14360   orc_int8 var33;
14361   orc_union16 var34;
14362 
14363   ptr0 = (orc_union16 *) d1;
14364   ptr4 = (orc_int8 *) s1;
14365 
14366 
14367   for (i = 0; i < n; i++) {
14368     /* 0: loadb */
14369     var32 = ptr4[i];
14370     /* 1: loadb */
14371     var33 = ptr4[i];
14372     /* 2: mergebw */
14373     {
14374       orc_union16 _dest;
14375       _dest.x2[0] = var32;
14376       _dest.x2[1] = var33;
14377       var34.i = _dest.i;
14378     }
14379     /* 3: storew */
14380     ptr0[i] = var34;
14381   }
14382 
14383 }
14384 
14385 #else
14386 static void
_backup_video_orc_convert_u8_to_u16(OrcExecutor * ORC_RESTRICT ex)14387 _backup_video_orc_convert_u8_to_u16 (OrcExecutor * ORC_RESTRICT ex)
14388 {
14389   int i;
14390   int n = ex->n;
14391   orc_union16 *ORC_RESTRICT ptr0;
14392   const orc_int8 *ORC_RESTRICT ptr4;
14393   orc_int8 var32;
14394   orc_int8 var33;
14395   orc_union16 var34;
14396 
14397   ptr0 = (orc_union16 *) ex->arrays[0];
14398   ptr4 = (orc_int8 *) ex->arrays[4];
14399 
14400 
14401   for (i = 0; i < n; i++) {
14402     /* 0: loadb */
14403     var32 = ptr4[i];
14404     /* 1: loadb */
14405     var33 = ptr4[i];
14406     /* 2: mergebw */
14407     {
14408       orc_union16 _dest;
14409       _dest.x2[0] = var32;
14410       _dest.x2[1] = var33;
14411       var34.i = _dest.i;
14412     }
14413     /* 3: storew */
14414     ptr0[i] = var34;
14415   }
14416 
14417 }
14418 
14419 void
video_orc_convert_u8_to_u16(guint16 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)14420 video_orc_convert_u8_to_u16 (guint16 * ORC_RESTRICT d1,
14421     const guint8 * ORC_RESTRICT s1, int n)
14422 {
14423   OrcExecutor _ex, *ex = &_ex;
14424   static volatile int p_inited = 0;
14425   static OrcCode *c = 0;
14426   void (*func) (OrcExecutor *);
14427 
14428   if (!p_inited) {
14429     orc_once_mutex_lock ();
14430     if (!p_inited) {
14431       OrcProgram *p;
14432 
14433 #if 1
14434       static const orc_uint8 bc[] = {
14435         1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, 110,
14436         118, 101, 114, 116, 95, 117, 56, 95, 116, 111, 95, 117, 49, 54, 11, 2,
14437         2, 12, 1, 1, 196, 0, 4, 4, 2, 0,
14438       };
14439       p = orc_program_new_from_static_bytecode (bc);
14440       orc_program_set_backup_function (p, _backup_video_orc_convert_u8_to_u16);
14441 #else
14442       p = orc_program_new ();
14443       orc_program_set_name (p, "video_orc_convert_u8_to_u16");
14444       orc_program_set_backup_function (p, _backup_video_orc_convert_u8_to_u16);
14445       orc_program_add_destination (p, 2, "d1");
14446       orc_program_add_source (p, 1, "s1");
14447 
14448       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S1,
14449           ORC_VAR_D1);
14450 #endif
14451 
14452       orc_program_compile (p);
14453       c = orc_program_take_code (p);
14454       orc_program_free (p);
14455     }
14456     p_inited = TRUE;
14457     orc_once_mutex_unlock ();
14458   }
14459   ex->arrays[ORC_VAR_A2] = c;
14460   ex->program = 0;
14461 
14462   ex->n = n;
14463   ex->arrays[ORC_VAR_D1] = d1;
14464   ex->arrays[ORC_VAR_S1] = (void *) s1;
14465 
14466   func = c->exec;
14467   func (ex);
14468 }
14469 #endif
14470 
14471 
14472 /* video_orc_splat_u16 */
14473 #ifdef DISABLE_ORC
14474 void
video_orc_splat_u16(guint8 * ORC_RESTRICT d1,int p1,int n)14475 video_orc_splat_u16 (guint8 * ORC_RESTRICT d1, int p1, int n)
14476 {
14477   int i;
14478   orc_union16 *ORC_RESTRICT ptr0;
14479   orc_union16 var32;
14480 
14481   ptr0 = (orc_union16 *) d1;
14482 
14483   /* 0: loadpw */
14484   var32.i = p1;
14485 
14486   for (i = 0; i < n; i++) {
14487     /* 1: storew */
14488     ptr0[i] = var32;
14489   }
14490 
14491 }
14492 
14493 #else
14494 static void
_backup_video_orc_splat_u16(OrcExecutor * ORC_RESTRICT ex)14495 _backup_video_orc_splat_u16 (OrcExecutor * ORC_RESTRICT ex)
14496 {
14497   int i;
14498   int n = ex->n;
14499   orc_union16 *ORC_RESTRICT ptr0;
14500   orc_union16 var32;
14501 
14502   ptr0 = (orc_union16 *) ex->arrays[0];
14503 
14504   /* 0: loadpw */
14505   var32.i = ex->params[24];
14506 
14507   for (i = 0; i < n; i++) {
14508     /* 1: storew */
14509     ptr0[i] = var32;
14510   }
14511 
14512 }
14513 
14514 void
video_orc_splat_u16(guint8 * ORC_RESTRICT d1,int p1,int n)14515 video_orc_splat_u16 (guint8 * ORC_RESTRICT d1, int p1, int n)
14516 {
14517   OrcExecutor _ex, *ex = &_ex;
14518   static volatile int p_inited = 0;
14519   static OrcCode *c = 0;
14520   void (*func) (OrcExecutor *);
14521 
14522   if (!p_inited) {
14523     orc_once_mutex_lock ();
14524     if (!p_inited) {
14525       OrcProgram *p;
14526 
14527 #if 1
14528       static const orc_uint8 bc[] = {
14529         1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 115, 112, 108,
14530         97, 116, 95, 117, 49, 54, 11, 2, 2, 16, 2, 97, 0, 24, 2, 0,
14531 
14532       };
14533       p = orc_program_new_from_static_bytecode (bc);
14534       orc_program_set_backup_function (p, _backup_video_orc_splat_u16);
14535 #else
14536       p = orc_program_new ();
14537       orc_program_set_name (p, "video_orc_splat_u16");
14538       orc_program_set_backup_function (p, _backup_video_orc_splat_u16);
14539       orc_program_add_destination (p, 2, "d1");
14540       orc_program_add_parameter (p, 2, "p1");
14541 
14542       orc_program_append_2 (p, "storew", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1,
14543           ORC_VAR_D1);
14544 #endif
14545 
14546       orc_program_compile (p);
14547       c = orc_program_take_code (p);
14548       orc_program_free (p);
14549     }
14550     p_inited = TRUE;
14551     orc_once_mutex_unlock ();
14552   }
14553   ex->arrays[ORC_VAR_A2] = c;
14554   ex->program = 0;
14555 
14556   ex->n = n;
14557   ex->arrays[ORC_VAR_D1] = d1;
14558   ex->params[ORC_VAR_P1] = p1;
14559 
14560   func = c->exec;
14561   func (ex);
14562 }
14563 #endif
14564 
14565 
14566 /* video_orc_splat_u32 */
14567 #ifdef DISABLE_ORC
14568 void
video_orc_splat_u32(guint8 * ORC_RESTRICT d1,int p1,int n)14569 video_orc_splat_u32 (guint8 * ORC_RESTRICT d1, int p1, int n)
14570 {
14571   int i;
14572   orc_union32 *ORC_RESTRICT ptr0;
14573   orc_union32 var32;
14574 
14575   ptr0 = (orc_union32 *) d1;
14576 
14577   /* 0: loadpl */
14578   var32.i = p1;
14579 
14580   for (i = 0; i < n; i++) {
14581     /* 1: storel */
14582     ptr0[i] = var32;
14583   }
14584 
14585 }
14586 
14587 #else
14588 static void
_backup_video_orc_splat_u32(OrcExecutor * ORC_RESTRICT ex)14589 _backup_video_orc_splat_u32 (OrcExecutor * ORC_RESTRICT ex)
14590 {
14591   int i;
14592   int n = ex->n;
14593   orc_union32 *ORC_RESTRICT ptr0;
14594   orc_union32 var32;
14595 
14596   ptr0 = (orc_union32 *) ex->arrays[0];
14597 
14598   /* 0: loadpl */
14599   var32.i = ex->params[24];
14600 
14601   for (i = 0; i < n; i++) {
14602     /* 1: storel */
14603     ptr0[i] = var32;
14604   }
14605 
14606 }
14607 
14608 void
video_orc_splat_u32(guint8 * ORC_RESTRICT d1,int p1,int n)14609 video_orc_splat_u32 (guint8 * ORC_RESTRICT d1, int p1, int n)
14610 {
14611   OrcExecutor _ex, *ex = &_ex;
14612   static volatile int p_inited = 0;
14613   static OrcCode *c = 0;
14614   void (*func) (OrcExecutor *);
14615 
14616   if (!p_inited) {
14617     orc_once_mutex_lock ();
14618     if (!p_inited) {
14619       OrcProgram *p;
14620 
14621 #if 1
14622       static const orc_uint8 bc[] = {
14623         1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 115, 112, 108,
14624         97, 116, 95, 117, 51, 50, 11, 4, 4, 16, 4, 128, 0, 24, 2, 0,
14625 
14626       };
14627       p = orc_program_new_from_static_bytecode (bc);
14628       orc_program_set_backup_function (p, _backup_video_orc_splat_u32);
14629 #else
14630       p = orc_program_new ();
14631       orc_program_set_name (p, "video_orc_splat_u32");
14632       orc_program_set_backup_function (p, _backup_video_orc_splat_u32);
14633       orc_program_add_destination (p, 4, "d1");
14634       orc_program_add_parameter (p, 4, "p1");
14635 
14636       orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1,
14637           ORC_VAR_D1);
14638 #endif
14639 
14640       orc_program_compile (p);
14641       c = orc_program_take_code (p);
14642       orc_program_free (p);
14643     }
14644     p_inited = TRUE;
14645     orc_once_mutex_unlock ();
14646   }
14647   ex->arrays[ORC_VAR_A2] = c;
14648   ex->program = 0;
14649 
14650   ex->n = n;
14651   ex->arrays[ORC_VAR_D1] = d1;
14652   ex->params[ORC_VAR_P1] = p1;
14653 
14654   func = c->exec;
14655   func (ex);
14656 }
14657 #endif
14658 
14659 
14660 /* video_orc_splat_u64 */
14661 #ifdef DISABLE_ORC
14662 void
video_orc_splat_u64(guint8 * ORC_RESTRICT d1,orc_int64 p1,int n)14663 video_orc_splat_u64 (guint8 * ORC_RESTRICT d1, orc_int64 p1, int n)
14664 {
14665   int i;
14666   orc_union64 *ORC_RESTRICT ptr0;
14667   orc_union64 var32;
14668 
14669   ptr0 = (orc_union64 *) d1;
14670 
14671   /* 0: loadpq */
14672   var32.i = p1;
14673 
14674   for (i = 0; i < n; i++) {
14675     /* 1: storeq */
14676     ptr0[i] = var32;
14677   }
14678 
14679 }
14680 
14681 #else
14682 static void
_backup_video_orc_splat_u64(OrcExecutor * ORC_RESTRICT ex)14683 _backup_video_orc_splat_u64 (OrcExecutor * ORC_RESTRICT ex)
14684 {
14685   int i;
14686   int n = ex->n;
14687   orc_union64 *ORC_RESTRICT ptr0;
14688   orc_union64 var32;
14689 
14690   ptr0 = (orc_union64 *) ex->arrays[0];
14691 
14692   /* 0: loadpq */
14693   var32.i =
14694       (ex->params[24] & 0xffffffff) | ((orc_uint64) (ex->params[24 +
14695               (ORC_VAR_T1 - ORC_VAR_P1)]) << 32);
14696 
14697   for (i = 0; i < n; i++) {
14698     /* 1: storeq */
14699     ptr0[i] = var32;
14700   }
14701 
14702 }
14703 
14704 void
video_orc_splat_u64(guint8 * ORC_RESTRICT d1,orc_int64 p1,int n)14705 video_orc_splat_u64 (guint8 * ORC_RESTRICT d1, orc_int64 p1, int n)
14706 {
14707   OrcExecutor _ex, *ex = &_ex;
14708   static volatile int p_inited = 0;
14709   static OrcCode *c = 0;
14710   void (*func) (OrcExecutor *);
14711 
14712   if (!p_inited) {
14713     orc_once_mutex_lock ();
14714     if (!p_inited) {
14715       OrcProgram *p;
14716 
14717 #if 1
14718       static const orc_uint8 bc[] = {
14719         1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 115, 112, 108,
14720         97, 116, 95, 117, 54, 52, 11, 8, 8, 18, 8, 135, 0, 24, 2, 0,
14721 
14722       };
14723       p = orc_program_new_from_static_bytecode (bc);
14724       orc_program_set_backup_function (p, _backup_video_orc_splat_u64);
14725 #else
14726       p = orc_program_new ();
14727       orc_program_set_name (p, "video_orc_splat_u64");
14728       orc_program_set_backup_function (p, _backup_video_orc_splat_u64);
14729       orc_program_add_destination (p, 8, "d1");
14730       orc_program_add_parameter_int64 (p, 8, "p1");
14731 
14732       orc_program_append_2 (p, "storeq", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1,
14733           ORC_VAR_D1);
14734 #endif
14735 
14736       orc_program_compile (p);
14737       c = orc_program_take_code (p);
14738       orc_program_free (p);
14739     }
14740     p_inited = TRUE;
14741     orc_once_mutex_unlock ();
14742   }
14743   ex->arrays[ORC_VAR_A2] = c;
14744   ex->program = 0;
14745 
14746   ex->n = n;
14747   ex->arrays[ORC_VAR_D1] = d1;
14748   {
14749     orc_union64 tmp;
14750     tmp.i = p1;
14751     ex->params[ORC_VAR_P1] = ((orc_uint64) tmp.i) & 0xffffffff;
14752     ex->params[ORC_VAR_T1] = ((orc_uint64) tmp.i) >> 32;
14753   }
14754 
14755   func = c->exec;
14756   func (ex);
14757 }
14758 #endif
14759 
14760 
14761 /* video_orc_splat2_u64 */
14762 #ifdef DISABLE_ORC
14763 void
video_orc_splat2_u64(guint8 * ORC_RESTRICT d1,int p1,int n)14764 video_orc_splat2_u64 (guint8 * ORC_RESTRICT d1, int p1, int n)
14765 {
14766   int i;
14767   orc_union64 *ORC_RESTRICT ptr0;
14768   orc_union64 var33;
14769   orc_union32 var34;
14770 
14771   ptr0 = (orc_union64 *) d1;
14772 
14773   /* 0: loadpl */
14774   var34.i = p1;
14775 
14776   for (i = 0; i < n; i++) {
14777     /* 1: mergebw */
14778     {
14779       orc_union16 _dest;
14780       _dest.x2[0] = var34.x4[0];
14781       _dest.x2[1] = var34.x4[0];
14782       var33.x4[0] = _dest.i;
14783     }
14784     {
14785       orc_union16 _dest;
14786       _dest.x2[0] = var34.x4[1];
14787       _dest.x2[1] = var34.x4[1];
14788       var33.x4[1] = _dest.i;
14789     }
14790     {
14791       orc_union16 _dest;
14792       _dest.x2[0] = var34.x4[2];
14793       _dest.x2[1] = var34.x4[2];
14794       var33.x4[2] = _dest.i;
14795     }
14796     {
14797       orc_union16 _dest;
14798       _dest.x2[0] = var34.x4[3];
14799       _dest.x2[1] = var34.x4[3];
14800       var33.x4[3] = _dest.i;
14801     }
14802     /* 2: storeq */
14803     ptr0[i] = var33;
14804   }
14805 
14806 }
14807 
14808 #else
14809 static void
_backup_video_orc_splat2_u64(OrcExecutor * ORC_RESTRICT ex)14810 _backup_video_orc_splat2_u64 (OrcExecutor * ORC_RESTRICT ex)
14811 {
14812   int i;
14813   int n = ex->n;
14814   orc_union64 *ORC_RESTRICT ptr0;
14815   orc_union64 var33;
14816   orc_union32 var34;
14817 
14818   ptr0 = (orc_union64 *) ex->arrays[0];
14819 
14820   /* 0: loadpl */
14821   var34.i = ex->params[24];
14822 
14823   for (i = 0; i < n; i++) {
14824     /* 1: mergebw */
14825     {
14826       orc_union16 _dest;
14827       _dest.x2[0] = var34.x4[0];
14828       _dest.x2[1] = var34.x4[0];
14829       var33.x4[0] = _dest.i;
14830     }
14831     {
14832       orc_union16 _dest;
14833       _dest.x2[0] = var34.x4[1];
14834       _dest.x2[1] = var34.x4[1];
14835       var33.x4[1] = _dest.i;
14836     }
14837     {
14838       orc_union16 _dest;
14839       _dest.x2[0] = var34.x4[2];
14840       _dest.x2[1] = var34.x4[2];
14841       var33.x4[2] = _dest.i;
14842     }
14843     {
14844       orc_union16 _dest;
14845       _dest.x2[0] = var34.x4[3];
14846       _dest.x2[1] = var34.x4[3];
14847       var33.x4[3] = _dest.i;
14848     }
14849     /* 2: storeq */
14850     ptr0[i] = var33;
14851   }
14852 
14853 }
14854 
14855 void
video_orc_splat2_u64(guint8 * ORC_RESTRICT d1,int p1,int n)14856 video_orc_splat2_u64 (guint8 * ORC_RESTRICT d1, int p1, int n)
14857 {
14858   OrcExecutor _ex, *ex = &_ex;
14859   static volatile int p_inited = 0;
14860   static OrcCode *c = 0;
14861   void (*func) (OrcExecutor *);
14862 
14863   if (!p_inited) {
14864     orc_once_mutex_lock ();
14865     if (!p_inited) {
14866       OrcProgram *p;
14867 
14868 #if 1
14869       static const orc_uint8 bc[] = {
14870         1, 9, 20, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 115, 112, 108,
14871         97, 116, 50, 95, 117, 54, 52, 11, 8, 8, 16, 4, 20, 4, 115, 32,
14872         24, 21, 2, 196, 0, 32, 32, 2, 0,
14873       };
14874       p = orc_program_new_from_static_bytecode (bc);
14875       orc_program_set_backup_function (p, _backup_video_orc_splat2_u64);
14876 #else
14877       p = orc_program_new ();
14878       orc_program_set_name (p, "video_orc_splat2_u64");
14879       orc_program_set_backup_function (p, _backup_video_orc_splat2_u64);
14880       orc_program_add_destination (p, 8, "d1");
14881       orc_program_add_parameter (p, 4, "p1");
14882       orc_program_add_temporary (p, 4, "t1");
14883 
14884       orc_program_append_2 (p, "loadpl", 0, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1,
14885           ORC_VAR_D1);
14886       orc_program_append_2 (p, "mergebw", 2, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T1,
14887           ORC_VAR_D1);
14888 #endif
14889 
14890       orc_program_compile (p);
14891       c = orc_program_take_code (p);
14892       orc_program_free (p);
14893     }
14894     p_inited = TRUE;
14895     orc_once_mutex_unlock ();
14896   }
14897   ex->arrays[ORC_VAR_A2] = c;
14898   ex->program = 0;
14899 
14900   ex->n = n;
14901   ex->arrays[ORC_VAR_D1] = d1;
14902   ex->params[ORC_VAR_P1] = p1;
14903 
14904   func = c->exec;
14905   func (ex);
14906 }
14907 #endif
14908 
14909 
14910 /* video_orc_convert_I420_UYVY */
14911 #ifdef DISABLE_ORC
14912 void
video_orc_convert_I420_UYVY(guint8 * ORC_RESTRICT d1,guint8 * ORC_RESTRICT d2,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,const guint8 * ORC_RESTRICT s3,const guint8 * ORC_RESTRICT s4,int n)14913 video_orc_convert_I420_UYVY (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
14914     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
14915     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n)
14916 {
14917   int i;
14918   orc_union32 *ORC_RESTRICT ptr0;
14919   orc_union32 *ORC_RESTRICT ptr1;
14920   const orc_union16 *ORC_RESTRICT ptr4;
14921   const orc_union16 *ORC_RESTRICT ptr5;
14922   const orc_int8 *ORC_RESTRICT ptr6;
14923   const orc_int8 *ORC_RESTRICT ptr7;
14924   orc_int8 var33;
14925   orc_int8 var34;
14926   orc_union16 var35;
14927   orc_union32 var36;
14928   orc_union16 var37;
14929   orc_union32 var38;
14930   orc_union16 var39;
14931 
14932   ptr0 = (orc_union32 *) d1;
14933   ptr1 = (orc_union32 *) d2;
14934   ptr4 = (orc_union16 *) s1;
14935   ptr5 = (orc_union16 *) s2;
14936   ptr6 = (orc_int8 *) s3;
14937   ptr7 = (orc_int8 *) s4;
14938 
14939 
14940   for (i = 0; i < n; i++) {
14941     /* 0: loadb */
14942     var33 = ptr6[i];
14943     /* 1: loadb */
14944     var34 = ptr7[i];
14945     /* 2: mergebw */
14946     {
14947       orc_union16 _dest;
14948       _dest.x2[0] = var33;
14949       _dest.x2[1] = var34;
14950       var39.i = _dest.i;
14951     }
14952     /* 3: loadw */
14953     var35 = ptr4[i];
14954     /* 4: mergebw */
14955     {
14956       orc_union16 _dest;
14957       _dest.x2[0] = var39.x2[0];
14958       _dest.x2[1] = var35.x2[0];
14959       var36.x2[0] = _dest.i;
14960     }
14961     {
14962       orc_union16 _dest;
14963       _dest.x2[0] = var39.x2[1];
14964       _dest.x2[1] = var35.x2[1];
14965       var36.x2[1] = _dest.i;
14966     }
14967     /* 5: storel */
14968     ptr0[i] = var36;
14969     /* 6: loadw */
14970     var37 = ptr5[i];
14971     /* 7: mergebw */
14972     {
14973       orc_union16 _dest;
14974       _dest.x2[0] = var39.x2[0];
14975       _dest.x2[1] = var37.x2[0];
14976       var38.x2[0] = _dest.i;
14977     }
14978     {
14979       orc_union16 _dest;
14980       _dest.x2[0] = var39.x2[1];
14981       _dest.x2[1] = var37.x2[1];
14982       var38.x2[1] = _dest.i;
14983     }
14984     /* 8: storel */
14985     ptr1[i] = var38;
14986   }
14987 
14988 }
14989 
14990 #else
14991 static void
_backup_video_orc_convert_I420_UYVY(OrcExecutor * ORC_RESTRICT ex)14992 _backup_video_orc_convert_I420_UYVY (OrcExecutor * ORC_RESTRICT ex)
14993 {
14994   int i;
14995   int n = ex->n;
14996   orc_union32 *ORC_RESTRICT ptr0;
14997   orc_union32 *ORC_RESTRICT ptr1;
14998   const orc_union16 *ORC_RESTRICT ptr4;
14999   const orc_union16 *ORC_RESTRICT ptr5;
15000   const orc_int8 *ORC_RESTRICT ptr6;
15001   const orc_int8 *ORC_RESTRICT ptr7;
15002   orc_int8 var33;
15003   orc_int8 var34;
15004   orc_union16 var35;
15005   orc_union32 var36;
15006   orc_union16 var37;
15007   orc_union32 var38;
15008   orc_union16 var39;
15009 
15010   ptr0 = (orc_union32 *) ex->arrays[0];
15011   ptr1 = (orc_union32 *) ex->arrays[1];
15012   ptr4 = (orc_union16 *) ex->arrays[4];
15013   ptr5 = (orc_union16 *) ex->arrays[5];
15014   ptr6 = (orc_int8 *) ex->arrays[6];
15015   ptr7 = (orc_int8 *) ex->arrays[7];
15016 
15017 
15018   for (i = 0; i < n; i++) {
15019     /* 0: loadb */
15020     var33 = ptr6[i];
15021     /* 1: loadb */
15022     var34 = ptr7[i];
15023     /* 2: mergebw */
15024     {
15025       orc_union16 _dest;
15026       _dest.x2[0] = var33;
15027       _dest.x2[1] = var34;
15028       var39.i = _dest.i;
15029     }
15030     /* 3: loadw */
15031     var35 = ptr4[i];
15032     /* 4: mergebw */
15033     {
15034       orc_union16 _dest;
15035       _dest.x2[0] = var39.x2[0];
15036       _dest.x2[1] = var35.x2[0];
15037       var36.x2[0] = _dest.i;
15038     }
15039     {
15040       orc_union16 _dest;
15041       _dest.x2[0] = var39.x2[1];
15042       _dest.x2[1] = var35.x2[1];
15043       var36.x2[1] = _dest.i;
15044     }
15045     /* 5: storel */
15046     ptr0[i] = var36;
15047     /* 6: loadw */
15048     var37 = ptr5[i];
15049     /* 7: mergebw */
15050     {
15051       orc_union16 _dest;
15052       _dest.x2[0] = var39.x2[0];
15053       _dest.x2[1] = var37.x2[0];
15054       var38.x2[0] = _dest.i;
15055     }
15056     {
15057       orc_union16 _dest;
15058       _dest.x2[0] = var39.x2[1];
15059       _dest.x2[1] = var37.x2[1];
15060       var38.x2[1] = _dest.i;
15061     }
15062     /* 8: storel */
15063     ptr1[i] = var38;
15064   }
15065 
15066 }
15067 
15068 void
video_orc_convert_I420_UYVY(guint8 * ORC_RESTRICT d1,guint8 * ORC_RESTRICT d2,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,const guint8 * ORC_RESTRICT s3,const guint8 * ORC_RESTRICT s4,int n)15069 video_orc_convert_I420_UYVY (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
15070     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
15071     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n)
15072 {
15073   OrcExecutor _ex, *ex = &_ex;
15074   static volatile int p_inited = 0;
15075   static OrcCode *c = 0;
15076   void (*func) (OrcExecutor *);
15077 
15078   if (!p_inited) {
15079     orc_once_mutex_lock ();
15080     if (!p_inited) {
15081       OrcProgram *p;
15082 
15083 #if 1
15084       static const orc_uint8 bc[] = {
15085         1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, 110,
15086         118, 101, 114, 116, 95, 73, 52, 50, 48, 95, 85, 89, 86, 89, 11, 4,
15087         4, 11, 4, 4, 12, 2, 2, 12, 2, 2, 12, 1, 1, 12, 1, 1,
15088         20, 2, 196, 32, 6, 7, 21, 1, 196, 0, 32, 4, 21, 1, 196, 1,
15089         32, 5, 2, 0,
15090       };
15091       p = orc_program_new_from_static_bytecode (bc);
15092       orc_program_set_backup_function (p, _backup_video_orc_convert_I420_UYVY);
15093 #else
15094       p = orc_program_new ();
15095       orc_program_set_name (p, "video_orc_convert_I420_UYVY");
15096       orc_program_set_backup_function (p, _backup_video_orc_convert_I420_UYVY);
15097       orc_program_add_destination (p, 4, "d1");
15098       orc_program_add_destination (p, 4, "d2");
15099       orc_program_add_source (p, 2, "s1");
15100       orc_program_add_source (p, 2, "s2");
15101       orc_program_add_source (p, 1, "s3");
15102       orc_program_add_source (p, 1, "s4");
15103       orc_program_add_temporary (p, 2, "t1");
15104 
15105       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S3, ORC_VAR_S4,
15106           ORC_VAR_D1);
15107       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1,
15108           ORC_VAR_D1);
15109       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D2, ORC_VAR_T1, ORC_VAR_S2,
15110           ORC_VAR_D1);
15111 #endif
15112 
15113       orc_program_compile (p);
15114       c = orc_program_take_code (p);
15115       orc_program_free (p);
15116     }
15117     p_inited = TRUE;
15118     orc_once_mutex_unlock ();
15119   }
15120   ex->arrays[ORC_VAR_A2] = c;
15121   ex->program = 0;
15122 
15123   ex->n = n;
15124   ex->arrays[ORC_VAR_D1] = d1;
15125   ex->arrays[ORC_VAR_D2] = d2;
15126   ex->arrays[ORC_VAR_S1] = (void *) s1;
15127   ex->arrays[ORC_VAR_S2] = (void *) s2;
15128   ex->arrays[ORC_VAR_S3] = (void *) s3;
15129   ex->arrays[ORC_VAR_S4] = (void *) s4;
15130 
15131   func = c->exec;
15132   func (ex);
15133 }
15134 #endif
15135 
15136 
15137 /* video_orc_convert_I420_YUY2 */
15138 #ifdef DISABLE_ORC
15139 void
video_orc_convert_I420_YUY2(guint8 * ORC_RESTRICT d1,guint8 * ORC_RESTRICT d2,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,const guint8 * ORC_RESTRICT s3,const guint8 * ORC_RESTRICT s4,int n)15140 video_orc_convert_I420_YUY2 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
15141     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
15142     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n)
15143 {
15144   int i;
15145   orc_union32 *ORC_RESTRICT ptr0;
15146   orc_union32 *ORC_RESTRICT ptr1;
15147   const orc_union16 *ORC_RESTRICT ptr4;
15148   const orc_union16 *ORC_RESTRICT ptr5;
15149   const orc_int8 *ORC_RESTRICT ptr6;
15150   const orc_int8 *ORC_RESTRICT ptr7;
15151   orc_int8 var33;
15152   orc_int8 var34;
15153   orc_union16 var35;
15154   orc_union32 var36;
15155   orc_union16 var37;
15156   orc_union32 var38;
15157   orc_union16 var39;
15158 
15159   ptr0 = (orc_union32 *) d1;
15160   ptr1 = (orc_union32 *) d2;
15161   ptr4 = (orc_union16 *) s1;
15162   ptr5 = (orc_union16 *) s2;
15163   ptr6 = (orc_int8 *) s3;
15164   ptr7 = (orc_int8 *) s4;
15165 
15166 
15167   for (i = 0; i < n; i++) {
15168     /* 0: loadb */
15169     var33 = ptr6[i];
15170     /* 1: loadb */
15171     var34 = ptr7[i];
15172     /* 2: mergebw */
15173     {
15174       orc_union16 _dest;
15175       _dest.x2[0] = var33;
15176       _dest.x2[1] = var34;
15177       var39.i = _dest.i;
15178     }
15179     /* 3: loadw */
15180     var35 = ptr4[i];
15181     /* 4: mergebw */
15182     {
15183       orc_union16 _dest;
15184       _dest.x2[0] = var35.x2[0];
15185       _dest.x2[1] = var39.x2[0];
15186       var36.x2[0] = _dest.i;
15187     }
15188     {
15189       orc_union16 _dest;
15190       _dest.x2[0] = var35.x2[1];
15191       _dest.x2[1] = var39.x2[1];
15192       var36.x2[1] = _dest.i;
15193     }
15194     /* 5: storel */
15195     ptr0[i] = var36;
15196     /* 6: loadw */
15197     var37 = ptr5[i];
15198     /* 7: mergebw */
15199     {
15200       orc_union16 _dest;
15201       _dest.x2[0] = var37.x2[0];
15202       _dest.x2[1] = var39.x2[0];
15203       var38.x2[0] = _dest.i;
15204     }
15205     {
15206       orc_union16 _dest;
15207       _dest.x2[0] = var37.x2[1];
15208       _dest.x2[1] = var39.x2[1];
15209       var38.x2[1] = _dest.i;
15210     }
15211     /* 8: storel */
15212     ptr1[i] = var38;
15213   }
15214 
15215 }
15216 
15217 #else
15218 static void
_backup_video_orc_convert_I420_YUY2(OrcExecutor * ORC_RESTRICT ex)15219 _backup_video_orc_convert_I420_YUY2 (OrcExecutor * ORC_RESTRICT ex)
15220 {
15221   int i;
15222   int n = ex->n;
15223   orc_union32 *ORC_RESTRICT ptr0;
15224   orc_union32 *ORC_RESTRICT ptr1;
15225   const orc_union16 *ORC_RESTRICT ptr4;
15226   const orc_union16 *ORC_RESTRICT ptr5;
15227   const orc_int8 *ORC_RESTRICT ptr6;
15228   const orc_int8 *ORC_RESTRICT ptr7;
15229   orc_int8 var33;
15230   orc_int8 var34;
15231   orc_union16 var35;
15232   orc_union32 var36;
15233   orc_union16 var37;
15234   orc_union32 var38;
15235   orc_union16 var39;
15236 
15237   ptr0 = (orc_union32 *) ex->arrays[0];
15238   ptr1 = (orc_union32 *) ex->arrays[1];
15239   ptr4 = (orc_union16 *) ex->arrays[4];
15240   ptr5 = (orc_union16 *) ex->arrays[5];
15241   ptr6 = (orc_int8 *) ex->arrays[6];
15242   ptr7 = (orc_int8 *) ex->arrays[7];
15243 
15244 
15245   for (i = 0; i < n; i++) {
15246     /* 0: loadb */
15247     var33 = ptr6[i];
15248     /* 1: loadb */
15249     var34 = ptr7[i];
15250     /* 2: mergebw */
15251     {
15252       orc_union16 _dest;
15253       _dest.x2[0] = var33;
15254       _dest.x2[1] = var34;
15255       var39.i = _dest.i;
15256     }
15257     /* 3: loadw */
15258     var35 = ptr4[i];
15259     /* 4: mergebw */
15260     {
15261       orc_union16 _dest;
15262       _dest.x2[0] = var35.x2[0];
15263       _dest.x2[1] = var39.x2[0];
15264       var36.x2[0] = _dest.i;
15265     }
15266     {
15267       orc_union16 _dest;
15268       _dest.x2[0] = var35.x2[1];
15269       _dest.x2[1] = var39.x2[1];
15270       var36.x2[1] = _dest.i;
15271     }
15272     /* 5: storel */
15273     ptr0[i] = var36;
15274     /* 6: loadw */
15275     var37 = ptr5[i];
15276     /* 7: mergebw */
15277     {
15278       orc_union16 _dest;
15279       _dest.x2[0] = var37.x2[0];
15280       _dest.x2[1] = var39.x2[0];
15281       var38.x2[0] = _dest.i;
15282     }
15283     {
15284       orc_union16 _dest;
15285       _dest.x2[0] = var37.x2[1];
15286       _dest.x2[1] = var39.x2[1];
15287       var38.x2[1] = _dest.i;
15288     }
15289     /* 8: storel */
15290     ptr1[i] = var38;
15291   }
15292 
15293 }
15294 
15295 void
video_orc_convert_I420_YUY2(guint8 * ORC_RESTRICT d1,guint8 * ORC_RESTRICT d2,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,const guint8 * ORC_RESTRICT s3,const guint8 * ORC_RESTRICT s4,int n)15296 video_orc_convert_I420_YUY2 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
15297     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
15298     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n)
15299 {
15300   OrcExecutor _ex, *ex = &_ex;
15301   static volatile int p_inited = 0;
15302   static OrcCode *c = 0;
15303   void (*func) (OrcExecutor *);
15304 
15305   if (!p_inited) {
15306     orc_once_mutex_lock ();
15307     if (!p_inited) {
15308       OrcProgram *p;
15309 
15310 #if 1
15311       static const orc_uint8 bc[] = {
15312         1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, 110,
15313         118, 101, 114, 116, 95, 73, 52, 50, 48, 95, 89, 85, 89, 50, 11, 4,
15314         4, 11, 4, 4, 12, 2, 2, 12, 2, 2, 12, 1, 1, 12, 1, 1,
15315         20, 2, 196, 32, 6, 7, 21, 1, 196, 0, 4, 32, 21, 1, 196, 1,
15316         5, 32, 2, 0,
15317       };
15318       p = orc_program_new_from_static_bytecode (bc);
15319       orc_program_set_backup_function (p, _backup_video_orc_convert_I420_YUY2);
15320 #else
15321       p = orc_program_new ();
15322       orc_program_set_name (p, "video_orc_convert_I420_YUY2");
15323       orc_program_set_backup_function (p, _backup_video_orc_convert_I420_YUY2);
15324       orc_program_add_destination (p, 4, "d1");
15325       orc_program_add_destination (p, 4, "d2");
15326       orc_program_add_source (p, 2, "s1");
15327       orc_program_add_source (p, 2, "s2");
15328       orc_program_add_source (p, 1, "s3");
15329       orc_program_add_source (p, 1, "s4");
15330       orc_program_add_temporary (p, 2, "t1");
15331 
15332       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S3, ORC_VAR_S4,
15333           ORC_VAR_D1);
15334       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1,
15335           ORC_VAR_D1);
15336       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D2, ORC_VAR_S2, ORC_VAR_T1,
15337           ORC_VAR_D1);
15338 #endif
15339 
15340       orc_program_compile (p);
15341       c = orc_program_take_code (p);
15342       orc_program_free (p);
15343     }
15344     p_inited = TRUE;
15345     orc_once_mutex_unlock ();
15346   }
15347   ex->arrays[ORC_VAR_A2] = c;
15348   ex->program = 0;
15349 
15350   ex->n = n;
15351   ex->arrays[ORC_VAR_D1] = d1;
15352   ex->arrays[ORC_VAR_D2] = d2;
15353   ex->arrays[ORC_VAR_S1] = (void *) s1;
15354   ex->arrays[ORC_VAR_S2] = (void *) s2;
15355   ex->arrays[ORC_VAR_S3] = (void *) s3;
15356   ex->arrays[ORC_VAR_S4] = (void *) s4;
15357 
15358   func = c->exec;
15359   func (ex);
15360 }
15361 #endif
15362 
15363 
15364 /* video_orc_convert_I420_AYUV */
15365 #ifdef DISABLE_ORC
15366 void
video_orc_convert_I420_AYUV(guint8 * ORC_RESTRICT d1,guint8 * ORC_RESTRICT d2,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,const guint8 * ORC_RESTRICT s3,const guint8 * ORC_RESTRICT s4,int p1,int n)15367 video_orc_convert_I420_AYUV (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
15368     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
15369     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int p1,
15370     int n)
15371 {
15372   int i;
15373   orc_union32 *ORC_RESTRICT ptr0;
15374   orc_union32 *ORC_RESTRICT ptr1;
15375   const orc_int8 *ORC_RESTRICT ptr4;
15376   const orc_int8 *ORC_RESTRICT ptr5;
15377   const orc_int8 *ORC_RESTRICT ptr6;
15378   const orc_int8 *ORC_RESTRICT ptr7;
15379   orc_int8 var36;
15380   orc_int8 var37;
15381   orc_union32 var38;
15382   orc_int8 var39;
15383   orc_union32 var40;
15384   orc_int8 var41;
15385   orc_int8 var42;
15386   orc_union16 var43;
15387   orc_union16 var44;
15388   orc_union16 var45;
15389 
15390   ptr0 = (orc_union32 *) d1;
15391   ptr1 = (orc_union32 *) d2;
15392   ptr4 = (orc_int8 *) s1;
15393   ptr5 = (orc_int8 *) s2;
15394   ptr6 = (orc_int8 *) s3;
15395   ptr7 = (orc_int8 *) s4;
15396 
15397   /* 3: loadpb */
15398   var36 = p1;
15399 
15400   for (i = 0; i < n; i++) {
15401     /* 0: loadupdb */
15402     var41 = ptr6[i >> 1];
15403     /* 1: loadupdb */
15404     var42 = ptr7[i >> 1];
15405     /* 2: mergebw */
15406     {
15407       orc_union16 _dest;
15408       _dest.x2[0] = var41;
15409       _dest.x2[1] = var42;
15410       var43.i = _dest.i;
15411     }
15412     /* 4: loadb */
15413     var37 = ptr4[i];
15414     /* 5: mergebw */
15415     {
15416       orc_union16 _dest;
15417       _dest.x2[0] = var36;
15418       _dest.x2[1] = var37;
15419       var44.i = _dest.i;
15420     }
15421     /* 6: mergewl */
15422     {
15423       orc_union32 _dest;
15424       _dest.x2[0] = var44.i;
15425       _dest.x2[1] = var43.i;
15426       var38.i = _dest.i;
15427     }
15428     /* 7: storel */
15429     ptr0[i] = var38;
15430     /* 8: loadb */
15431     var39 = ptr5[i];
15432     /* 9: mergebw */
15433     {
15434       orc_union16 _dest;
15435       _dest.x2[0] = var36;
15436       _dest.x2[1] = var39;
15437       var45.i = _dest.i;
15438     }
15439     /* 10: mergewl */
15440     {
15441       orc_union32 _dest;
15442       _dest.x2[0] = var45.i;
15443       _dest.x2[1] = var43.i;
15444       var40.i = _dest.i;
15445     }
15446     /* 11: storel */
15447     ptr1[i] = var40;
15448   }
15449 
15450 }
15451 
15452 #else
15453 static void
_backup_video_orc_convert_I420_AYUV(OrcExecutor * ORC_RESTRICT ex)15454 _backup_video_orc_convert_I420_AYUV (OrcExecutor * ORC_RESTRICT ex)
15455 {
15456   int i;
15457   int n = ex->n;
15458   orc_union32 *ORC_RESTRICT ptr0;
15459   orc_union32 *ORC_RESTRICT ptr1;
15460   const orc_int8 *ORC_RESTRICT ptr4;
15461   const orc_int8 *ORC_RESTRICT ptr5;
15462   const orc_int8 *ORC_RESTRICT ptr6;
15463   const orc_int8 *ORC_RESTRICT ptr7;
15464   orc_int8 var36;
15465   orc_int8 var37;
15466   orc_union32 var38;
15467   orc_int8 var39;
15468   orc_union32 var40;
15469   orc_int8 var41;
15470   orc_int8 var42;
15471   orc_union16 var43;
15472   orc_union16 var44;
15473   orc_union16 var45;
15474 
15475   ptr0 = (orc_union32 *) ex->arrays[0];
15476   ptr1 = (orc_union32 *) ex->arrays[1];
15477   ptr4 = (orc_int8 *) ex->arrays[4];
15478   ptr5 = (orc_int8 *) ex->arrays[5];
15479   ptr6 = (orc_int8 *) ex->arrays[6];
15480   ptr7 = (orc_int8 *) ex->arrays[7];
15481 
15482   /* 3: loadpb */
15483   var36 = ex->params[24];
15484 
15485   for (i = 0; i < n; i++) {
15486     /* 0: loadupdb */
15487     var41 = ptr6[i >> 1];
15488     /* 1: loadupdb */
15489     var42 = ptr7[i >> 1];
15490     /* 2: mergebw */
15491     {
15492       orc_union16 _dest;
15493       _dest.x2[0] = var41;
15494       _dest.x2[1] = var42;
15495       var43.i = _dest.i;
15496     }
15497     /* 4: loadb */
15498     var37 = ptr4[i];
15499     /* 5: mergebw */
15500     {
15501       orc_union16 _dest;
15502       _dest.x2[0] = var36;
15503       _dest.x2[1] = var37;
15504       var44.i = _dest.i;
15505     }
15506     /* 6: mergewl */
15507     {
15508       orc_union32 _dest;
15509       _dest.x2[0] = var44.i;
15510       _dest.x2[1] = var43.i;
15511       var38.i = _dest.i;
15512     }
15513     /* 7: storel */
15514     ptr0[i] = var38;
15515     /* 8: loadb */
15516     var39 = ptr5[i];
15517     /* 9: mergebw */
15518     {
15519       orc_union16 _dest;
15520       _dest.x2[0] = var36;
15521       _dest.x2[1] = var39;
15522       var45.i = _dest.i;
15523     }
15524     /* 10: mergewl */
15525     {
15526       orc_union32 _dest;
15527       _dest.x2[0] = var45.i;
15528       _dest.x2[1] = var43.i;
15529       var40.i = _dest.i;
15530     }
15531     /* 11: storel */
15532     ptr1[i] = var40;
15533   }
15534 
15535 }
15536 
15537 void
video_orc_convert_I420_AYUV(guint8 * ORC_RESTRICT d1,guint8 * ORC_RESTRICT d2,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,const guint8 * ORC_RESTRICT s3,const guint8 * ORC_RESTRICT s4,int p1,int n)15538 video_orc_convert_I420_AYUV (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
15539     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
15540     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int p1,
15541     int n)
15542 {
15543   OrcExecutor _ex, *ex = &_ex;
15544   static volatile int p_inited = 0;
15545   static OrcCode *c = 0;
15546   void (*func) (OrcExecutor *);
15547 
15548   if (!p_inited) {
15549     orc_once_mutex_lock ();
15550     if (!p_inited) {
15551       OrcProgram *p;
15552 
15553 #if 1
15554       static const orc_uint8 bc[] = {
15555         1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, 110,
15556         118, 101, 114, 116, 95, 73, 52, 50, 48, 95, 65, 89, 85, 86, 11, 4,
15557         4, 11, 4, 4, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1,
15558         16, 1, 20, 2, 20, 2, 20, 1, 20, 1, 45, 34, 6, 45, 35, 7,
15559         196, 32, 34, 35, 196, 33, 24, 4, 195, 0, 33, 32, 196, 33, 24, 5,
15560         195, 1, 33, 32, 2, 0,
15561       };
15562       p = orc_program_new_from_static_bytecode (bc);
15563       orc_program_set_backup_function (p, _backup_video_orc_convert_I420_AYUV);
15564 #else
15565       p = orc_program_new ();
15566       orc_program_set_name (p, "video_orc_convert_I420_AYUV");
15567       orc_program_set_backup_function (p, _backup_video_orc_convert_I420_AYUV);
15568       orc_program_add_destination (p, 4, "d1");
15569       orc_program_add_destination (p, 4, "d2");
15570       orc_program_add_source (p, 1, "s1");
15571       orc_program_add_source (p, 1, "s2");
15572       orc_program_add_source (p, 1, "s3");
15573       orc_program_add_source (p, 1, "s4");
15574       orc_program_add_parameter (p, 1, "p1");
15575       orc_program_add_temporary (p, 2, "t1");
15576       orc_program_add_temporary (p, 2, "t2");
15577       orc_program_add_temporary (p, 1, "t3");
15578       orc_program_add_temporary (p, 1, "t4");
15579 
15580       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T3, ORC_VAR_S3,
15581           ORC_VAR_D1, ORC_VAR_D1);
15582       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T4, ORC_VAR_S4,
15583           ORC_VAR_D1, ORC_VAR_D1);
15584       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4,
15585           ORC_VAR_D1);
15586       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_P1, ORC_VAR_S1,
15587           ORC_VAR_D1);
15588       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
15589           ORC_VAR_D1);
15590       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_P1, ORC_VAR_S2,
15591           ORC_VAR_D1);
15592       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_T1,
15593           ORC_VAR_D1);
15594 #endif
15595 
15596       orc_program_compile (p);
15597       c = orc_program_take_code (p);
15598       orc_program_free (p);
15599     }
15600     p_inited = TRUE;
15601     orc_once_mutex_unlock ();
15602   }
15603   ex->arrays[ORC_VAR_A2] = c;
15604   ex->program = 0;
15605 
15606   ex->n = n;
15607   ex->arrays[ORC_VAR_D1] = d1;
15608   ex->arrays[ORC_VAR_D2] = d2;
15609   ex->arrays[ORC_VAR_S1] = (void *) s1;
15610   ex->arrays[ORC_VAR_S2] = (void *) s2;
15611   ex->arrays[ORC_VAR_S3] = (void *) s3;
15612   ex->arrays[ORC_VAR_S4] = (void *) s4;
15613   ex->params[ORC_VAR_P1] = p1;
15614 
15615   func = c->exec;
15616   func (ex);
15617 }
15618 #endif
15619 
15620 
15621 /* video_orc_convert_YUY2_I420 */
15622 #ifdef DISABLE_ORC
15623 void
video_orc_convert_YUY2_I420(guint8 * ORC_RESTRICT d1,guint8 * ORC_RESTRICT d2,guint8 * ORC_RESTRICT d3,guint8 * ORC_RESTRICT d4,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,int n)15624 video_orc_convert_YUY2_I420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
15625     guint8 * ORC_RESTRICT d3, guint8 * ORC_RESTRICT d4,
15626     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
15627 {
15628   int i;
15629   orc_union16 *ORC_RESTRICT ptr0;
15630   orc_union16 *ORC_RESTRICT ptr1;
15631   orc_int8 *ORC_RESTRICT ptr2;
15632   orc_int8 *ORC_RESTRICT ptr3;
15633   const orc_union32 *ORC_RESTRICT ptr4;
15634   const orc_union32 *ORC_RESTRICT ptr5;
15635   orc_union32 var35;
15636   orc_union32 var36;
15637   orc_int8 var37;
15638   orc_int8 var38;
15639   orc_union16 var39;
15640   orc_union16 var40;
15641   orc_union16 var41;
15642   orc_union16 var42;
15643   orc_union16 var43;
15644 
15645   ptr0 = (orc_union16 *) d1;
15646   ptr1 = (orc_union16 *) d2;
15647   ptr2 = (orc_int8 *) d3;
15648   ptr3 = (orc_int8 *) d4;
15649   ptr4 = (orc_union32 *) s1;
15650   ptr5 = (orc_union32 *) s2;
15651 
15652 
15653   for (i = 0; i < n; i++) {
15654     /* 0: loadl */
15655     var35 = ptr4[i];
15656     /* 1: splitwb */
15657     {
15658       orc_union16 _src;
15659       _src.i = var35.x2[0];
15660       var39.x2[0] = _src.x2[1];
15661       var40.x2[0] = _src.x2[0];
15662     }
15663     {
15664       orc_union16 _src;
15665       _src.i = var35.x2[1];
15666       var39.x2[1] = _src.x2[1];
15667       var40.x2[1] = _src.x2[0];
15668     }
15669     /* 2: storew */
15670     ptr0[i] = var40;
15671     /* 3: loadl */
15672     var36 = ptr5[i];
15673     /* 4: splitwb */
15674     {
15675       orc_union16 _src;
15676       _src.i = var36.x2[0];
15677       var41.x2[0] = _src.x2[1];
15678       var42.x2[0] = _src.x2[0];
15679     }
15680     {
15681       orc_union16 _src;
15682       _src.i = var36.x2[1];
15683       var41.x2[1] = _src.x2[1];
15684       var42.x2[1] = _src.x2[0];
15685     }
15686     /* 5: storew */
15687     ptr1[i] = var42;
15688     /* 6: avgub */
15689     var43.x2[0] = ((orc_uint8) var39.x2[0] + (orc_uint8) var41.x2[0] + 1) >> 1;
15690     var43.x2[1] = ((orc_uint8) var39.x2[1] + (orc_uint8) var41.x2[1] + 1) >> 1;
15691     /* 7: splitwb */
15692     {
15693       orc_union16 _src;
15694       _src.i = var43.i;
15695       var37 = _src.x2[1];
15696       var38 = _src.x2[0];
15697     }
15698     /* 8: storeb */
15699     ptr3[i] = var37;
15700     /* 9: storeb */
15701     ptr2[i] = var38;
15702   }
15703 
15704 }
15705 
15706 #else
15707 static void
_backup_video_orc_convert_YUY2_I420(OrcExecutor * ORC_RESTRICT ex)15708 _backup_video_orc_convert_YUY2_I420 (OrcExecutor * ORC_RESTRICT ex)
15709 {
15710   int i;
15711   int n = ex->n;
15712   orc_union16 *ORC_RESTRICT ptr0;
15713   orc_union16 *ORC_RESTRICT ptr1;
15714   orc_int8 *ORC_RESTRICT ptr2;
15715   orc_int8 *ORC_RESTRICT ptr3;
15716   const orc_union32 *ORC_RESTRICT ptr4;
15717   const orc_union32 *ORC_RESTRICT ptr5;
15718   orc_union32 var35;
15719   orc_union32 var36;
15720   orc_int8 var37;
15721   orc_int8 var38;
15722   orc_union16 var39;
15723   orc_union16 var40;
15724   orc_union16 var41;
15725   orc_union16 var42;
15726   orc_union16 var43;
15727 
15728   ptr0 = (orc_union16 *) ex->arrays[0];
15729   ptr1 = (orc_union16 *) ex->arrays[1];
15730   ptr2 = (orc_int8 *) ex->arrays[2];
15731   ptr3 = (orc_int8 *) ex->arrays[3];
15732   ptr4 = (orc_union32 *) ex->arrays[4];
15733   ptr5 = (orc_union32 *) ex->arrays[5];
15734 
15735 
15736   for (i = 0; i < n; i++) {
15737     /* 0: loadl */
15738     var35 = ptr4[i];
15739     /* 1: splitwb */
15740     {
15741       orc_union16 _src;
15742       _src.i = var35.x2[0];
15743       var39.x2[0] = _src.x2[1];
15744       var40.x2[0] = _src.x2[0];
15745     }
15746     {
15747       orc_union16 _src;
15748       _src.i = var35.x2[1];
15749       var39.x2[1] = _src.x2[1];
15750       var40.x2[1] = _src.x2[0];
15751     }
15752     /* 2: storew */
15753     ptr0[i] = var40;
15754     /* 3: loadl */
15755     var36 = ptr5[i];
15756     /* 4: splitwb */
15757     {
15758       orc_union16 _src;
15759       _src.i = var36.x2[0];
15760       var41.x2[0] = _src.x2[1];
15761       var42.x2[0] = _src.x2[0];
15762     }
15763     {
15764       orc_union16 _src;
15765       _src.i = var36.x2[1];
15766       var41.x2[1] = _src.x2[1];
15767       var42.x2[1] = _src.x2[0];
15768     }
15769     /* 5: storew */
15770     ptr1[i] = var42;
15771     /* 6: avgub */
15772     var43.x2[0] = ((orc_uint8) var39.x2[0] + (orc_uint8) var41.x2[0] + 1) >> 1;
15773     var43.x2[1] = ((orc_uint8) var39.x2[1] + (orc_uint8) var41.x2[1] + 1) >> 1;
15774     /* 7: splitwb */
15775     {
15776       orc_union16 _src;
15777       _src.i = var43.i;
15778       var37 = _src.x2[1];
15779       var38 = _src.x2[0];
15780     }
15781     /* 8: storeb */
15782     ptr3[i] = var37;
15783     /* 9: storeb */
15784     ptr2[i] = var38;
15785   }
15786 
15787 }
15788 
15789 void
video_orc_convert_YUY2_I420(guint8 * ORC_RESTRICT d1,guint8 * ORC_RESTRICT d2,guint8 * ORC_RESTRICT d3,guint8 * ORC_RESTRICT d4,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,int n)15790 video_orc_convert_YUY2_I420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
15791     guint8 * ORC_RESTRICT d3, guint8 * ORC_RESTRICT d4,
15792     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
15793 {
15794   OrcExecutor _ex, *ex = &_ex;
15795   static volatile int p_inited = 0;
15796   static OrcCode *c = 0;
15797   void (*func) (OrcExecutor *);
15798 
15799   if (!p_inited) {
15800     orc_once_mutex_lock ();
15801     if (!p_inited) {
15802       OrcProgram *p;
15803 
15804 #if 1
15805       static const orc_uint8 bc[] = {
15806         1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, 110,
15807         118, 101, 114, 116, 95, 89, 85, 89, 50, 95, 73, 52, 50, 48, 11, 2,
15808         2, 11, 2, 2, 11, 1, 1, 11, 1, 1, 12, 4, 4, 12, 4, 4,
15809         20, 2, 20, 2, 20, 2, 21, 1, 199, 32, 34, 4, 97, 0, 34, 21,
15810         1, 199, 33, 34, 5, 97, 1, 34, 21, 1, 39, 32, 32, 33, 199, 3,
15811         2, 32, 2, 0,
15812       };
15813       p = orc_program_new_from_static_bytecode (bc);
15814       orc_program_set_backup_function (p, _backup_video_orc_convert_YUY2_I420);
15815 #else
15816       p = orc_program_new ();
15817       orc_program_set_name (p, "video_orc_convert_YUY2_I420");
15818       orc_program_set_backup_function (p, _backup_video_orc_convert_YUY2_I420);
15819       orc_program_add_destination (p, 2, "d1");
15820       orc_program_add_destination (p, 2, "d2");
15821       orc_program_add_destination (p, 1, "d3");
15822       orc_program_add_destination (p, 1, "d4");
15823       orc_program_add_source (p, 4, "s1");
15824       orc_program_add_source (p, 4, "s2");
15825       orc_program_add_temporary (p, 2, "t1");
15826       orc_program_add_temporary (p, 2, "t2");
15827       orc_program_add_temporary (p, 2, "t3");
15828 
15829       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_S1,
15830           ORC_VAR_D1);
15831       orc_program_append_2 (p, "storew", 0, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_D1,
15832           ORC_VAR_D1);
15833       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_S2,
15834           ORC_VAR_D1);
15835       orc_program_append_2 (p, "storew", 0, ORC_VAR_D2, ORC_VAR_T3, ORC_VAR_D1,
15836           ORC_VAR_D1);
15837       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
15838           ORC_VAR_D1);
15839       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D4, ORC_VAR_D3, ORC_VAR_T1,
15840           ORC_VAR_D1);
15841 #endif
15842 
15843       orc_program_compile (p);
15844       c = orc_program_take_code (p);
15845       orc_program_free (p);
15846     }
15847     p_inited = TRUE;
15848     orc_once_mutex_unlock ();
15849   }
15850   ex->arrays[ORC_VAR_A2] = c;
15851   ex->program = 0;
15852 
15853   ex->n = n;
15854   ex->arrays[ORC_VAR_D1] = d1;
15855   ex->arrays[ORC_VAR_D2] = d2;
15856   ex->arrays[ORC_VAR_D3] = d3;
15857   ex->arrays[ORC_VAR_D4] = d4;
15858   ex->arrays[ORC_VAR_S1] = (void *) s1;
15859   ex->arrays[ORC_VAR_S2] = (void *) s2;
15860 
15861   func = c->exec;
15862   func (ex);
15863 }
15864 #endif
15865 
15866 
15867 /* video_orc_convert_UYVY_YUY2 */
15868 #ifdef DISABLE_ORC
15869 void
video_orc_convert_UYVY_YUY2(guint8 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,int n,int m)15870 video_orc_convert_UYVY_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
15871     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
15872 {
15873   int i;
15874   int j;
15875   orc_union32 *ORC_RESTRICT ptr0;
15876   const orc_union32 *ORC_RESTRICT ptr4;
15877   orc_union32 var32;
15878   orc_union32 var33;
15879 
15880   for (j = 0; j < m; j++) {
15881     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
15882     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
15883 
15884 
15885     for (i = 0; i < n; i++) {
15886       /* 0: loadl */
15887       var32 = ptr4[i];
15888       /* 1: swapw */
15889       var33.x2[0] = ORC_SWAP_W (var32.x2[0]);
15890       var33.x2[1] = ORC_SWAP_W (var32.x2[1]);
15891       /* 2: storel */
15892       ptr0[i] = var33;
15893     }
15894   }
15895 
15896 }
15897 
15898 #else
15899 static void
_backup_video_orc_convert_UYVY_YUY2(OrcExecutor * ORC_RESTRICT ex)15900 _backup_video_orc_convert_UYVY_YUY2 (OrcExecutor * ORC_RESTRICT ex)
15901 {
15902   int i;
15903   int j;
15904   int n = ex->n;
15905   int m = ex->params[ORC_VAR_A1];
15906   orc_union32 *ORC_RESTRICT ptr0;
15907   const orc_union32 *ORC_RESTRICT ptr4;
15908   orc_union32 var32;
15909   orc_union32 var33;
15910 
15911   for (j = 0; j < m; j++) {
15912     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
15913     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
15914 
15915 
15916     for (i = 0; i < n; i++) {
15917       /* 0: loadl */
15918       var32 = ptr4[i];
15919       /* 1: swapw */
15920       var33.x2[0] = ORC_SWAP_W (var32.x2[0]);
15921       var33.x2[1] = ORC_SWAP_W (var32.x2[1]);
15922       /* 2: storel */
15923       ptr0[i] = var33;
15924     }
15925   }
15926 
15927 }
15928 
15929 void
video_orc_convert_UYVY_YUY2(guint8 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,int n,int m)15930 video_orc_convert_UYVY_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
15931     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
15932 {
15933   OrcExecutor _ex, *ex = &_ex;
15934   static volatile int p_inited = 0;
15935   static OrcCode *c = 0;
15936   void (*func) (OrcExecutor *);
15937 
15938   if (!p_inited) {
15939     orc_once_mutex_lock ();
15940     if (!p_inited) {
15941       OrcProgram *p;
15942 
15943 #if 1
15944       static const orc_uint8 bc[] = {
15945         1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
15946         110, 118, 101, 114, 116, 95, 85, 89, 86, 89, 95, 89, 85, 89, 50, 11,
15947         4, 4, 12, 4, 4, 21, 1, 183, 0, 4, 2, 0,
15948       };
15949       p = orc_program_new_from_static_bytecode (bc);
15950       orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_YUY2);
15951 #else
15952       p = orc_program_new ();
15953       orc_program_set_2d (p);
15954       orc_program_set_name (p, "video_orc_convert_UYVY_YUY2");
15955       orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_YUY2);
15956       orc_program_add_destination (p, 4, "d1");
15957       orc_program_add_source (p, 4, "s1");
15958 
15959       orc_program_append_2 (p, "swapw", 1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1,
15960           ORC_VAR_D1);
15961 #endif
15962 
15963       orc_program_compile (p);
15964       c = orc_program_take_code (p);
15965       orc_program_free (p);
15966     }
15967     p_inited = TRUE;
15968     orc_once_mutex_unlock ();
15969   }
15970   ex->arrays[ORC_VAR_A2] = c;
15971   ex->program = 0;
15972 
15973   ex->n = n;
15974   ORC_EXECUTOR_M (ex) = m;
15975   ex->arrays[ORC_VAR_D1] = d1;
15976   ex->params[ORC_VAR_D1] = d1_stride;
15977   ex->arrays[ORC_VAR_S1] = (void *) s1;
15978   ex->params[ORC_VAR_S1] = s1_stride;
15979 
15980   func = c->exec;
15981   func (ex);
15982 }
15983 #endif
15984 
15985 
15986 /* video_orc_planar_chroma_420_422 */
15987 #ifdef DISABLE_ORC
15988 void
video_orc_planar_chroma_420_422(guint8 * ORC_RESTRICT d1,int d1_stride,guint8 * ORC_RESTRICT d2,int d2_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,int n,int m)15989 video_orc_planar_chroma_420_422 (guint8 * ORC_RESTRICT d1, int d1_stride,
15990     guint8 * ORC_RESTRICT d2, int d2_stride, const guint8 * ORC_RESTRICT s1,
15991     int s1_stride, int n, int m)
15992 {
15993   int i;
15994   int j;
15995   orc_int8 *ORC_RESTRICT ptr0;
15996   orc_int8 *ORC_RESTRICT ptr1;
15997   const orc_int8 *ORC_RESTRICT ptr4;
15998   orc_int8 var32;
15999   orc_int8 var33;
16000   orc_int8 var34;
16001   orc_int8 var35;
16002 
16003   for (j = 0; j < m; j++) {
16004     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
16005     ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
16006     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
16007 
16008 
16009     for (i = 0; i < n; i++) {
16010       /* 0: loadb */
16011       var32 = ptr4[i];
16012       /* 1: copyb */
16013       var33 = var32;
16014       /* 2: storeb */
16015       ptr0[i] = var33;
16016       /* 3: loadb */
16017       var34 = ptr4[i];
16018       /* 4: copyb */
16019       var35 = var34;
16020       /* 5: storeb */
16021       ptr1[i] = var35;
16022     }
16023   }
16024 
16025 }
16026 
16027 #else
16028 static void
_backup_video_orc_planar_chroma_420_422(OrcExecutor * ORC_RESTRICT ex)16029 _backup_video_orc_planar_chroma_420_422 (OrcExecutor * ORC_RESTRICT ex)
16030 {
16031   int i;
16032   int j;
16033   int n = ex->n;
16034   int m = ex->params[ORC_VAR_A1];
16035   orc_int8 *ORC_RESTRICT ptr0;
16036   orc_int8 *ORC_RESTRICT ptr1;
16037   const orc_int8 *ORC_RESTRICT ptr4;
16038   orc_int8 var32;
16039   orc_int8 var33;
16040   orc_int8 var34;
16041   orc_int8 var35;
16042 
16043   for (j = 0; j < m; j++) {
16044     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
16045     ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
16046     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
16047 
16048 
16049     for (i = 0; i < n; i++) {
16050       /* 0: loadb */
16051       var32 = ptr4[i];
16052       /* 1: copyb */
16053       var33 = var32;
16054       /* 2: storeb */
16055       ptr0[i] = var33;
16056       /* 3: loadb */
16057       var34 = ptr4[i];
16058       /* 4: copyb */
16059       var35 = var34;
16060       /* 5: storeb */
16061       ptr1[i] = var35;
16062     }
16063   }
16064 
16065 }
16066 
16067 void
video_orc_planar_chroma_420_422(guint8 * ORC_RESTRICT d1,int d1_stride,guint8 * ORC_RESTRICT d2,int d2_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,int n,int m)16068 video_orc_planar_chroma_420_422 (guint8 * ORC_RESTRICT d1, int d1_stride,
16069     guint8 * ORC_RESTRICT d2, int d2_stride, const guint8 * ORC_RESTRICT s1,
16070     int s1_stride, int n, int m)
16071 {
16072   OrcExecutor _ex, *ex = &_ex;
16073   static volatile int p_inited = 0;
16074   static OrcCode *c = 0;
16075   void (*func) (OrcExecutor *);
16076 
16077   if (!p_inited) {
16078     orc_once_mutex_lock ();
16079     if (!p_inited) {
16080       OrcProgram *p;
16081 
16082 #if 1
16083       static const orc_uint8 bc[] = {
16084         1, 7, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 108,
16085         97, 110, 97, 114, 95, 99, 104, 114, 111, 109, 97, 95, 52, 50, 48, 95,
16086         52, 50, 50, 11, 1, 1, 11, 1, 1, 12, 1, 1, 42, 0, 4, 42,
16087         1, 4, 2, 0,
16088       };
16089       p = orc_program_new_from_static_bytecode (bc);
16090       orc_program_set_backup_function (p,
16091           _backup_video_orc_planar_chroma_420_422);
16092 #else
16093       p = orc_program_new ();
16094       orc_program_set_2d (p);
16095       orc_program_set_name (p, "video_orc_planar_chroma_420_422");
16096       orc_program_set_backup_function (p,
16097           _backup_video_orc_planar_chroma_420_422);
16098       orc_program_add_destination (p, 1, "d1");
16099       orc_program_add_destination (p, 1, "d2");
16100       orc_program_add_source (p, 1, "s1");
16101 
16102       orc_program_append_2 (p, "copyb", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1,
16103           ORC_VAR_D1);
16104       orc_program_append_2 (p, "copyb", 0, ORC_VAR_D2, ORC_VAR_S1, ORC_VAR_D1,
16105           ORC_VAR_D1);
16106 #endif
16107 
16108       orc_program_compile (p);
16109       c = orc_program_take_code (p);
16110       orc_program_free (p);
16111     }
16112     p_inited = TRUE;
16113     orc_once_mutex_unlock ();
16114   }
16115   ex->arrays[ORC_VAR_A2] = c;
16116   ex->program = 0;
16117 
16118   ex->n = n;
16119   ORC_EXECUTOR_M (ex) = m;
16120   ex->arrays[ORC_VAR_D1] = d1;
16121   ex->params[ORC_VAR_D1] = d1_stride;
16122   ex->arrays[ORC_VAR_D2] = d2;
16123   ex->params[ORC_VAR_D2] = d2_stride;
16124   ex->arrays[ORC_VAR_S1] = (void *) s1;
16125   ex->params[ORC_VAR_S1] = s1_stride;
16126 
16127   func = c->exec;
16128   func (ex);
16129 }
16130 #endif
16131 
16132 
16133 /* video_orc_planar_chroma_420_444 */
16134 #ifdef DISABLE_ORC
16135 void
video_orc_planar_chroma_420_444(guint8 * ORC_RESTRICT d1,int d1_stride,guint8 * ORC_RESTRICT d2,int d2_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,int n,int m)16136 video_orc_planar_chroma_420_444 (guint8 * ORC_RESTRICT d1, int d1_stride,
16137     guint8 * ORC_RESTRICT d2, int d2_stride, const guint8 * ORC_RESTRICT s1,
16138     int s1_stride, int n, int m)
16139 {
16140   int i;
16141   int j;
16142   orc_union16 *ORC_RESTRICT ptr0;
16143   orc_union16 *ORC_RESTRICT ptr1;
16144   const orc_int8 *ORC_RESTRICT ptr4;
16145   orc_int8 var33;
16146   orc_union16 var34;
16147 
16148   for (j = 0; j < m; j++) {
16149     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
16150     ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
16151     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
16152 
16153 
16154     for (i = 0; i < n; i++) {
16155       /* 0: loadb */
16156       var33 = ptr4[i];
16157       /* 1: splatbw */
16158       var34.i = ((var33 & 0xff) << 8) | (var33 & 0xff);
16159       /* 2: storew */
16160       ptr0[i] = var34;
16161       /* 3: storew */
16162       ptr1[i] = var34;
16163     }
16164   }
16165 
16166 }
16167 
16168 #else
16169 static void
_backup_video_orc_planar_chroma_420_444(OrcExecutor * ORC_RESTRICT ex)16170 _backup_video_orc_planar_chroma_420_444 (OrcExecutor * ORC_RESTRICT ex)
16171 {
16172   int i;
16173   int j;
16174   int n = ex->n;
16175   int m = ex->params[ORC_VAR_A1];
16176   orc_union16 *ORC_RESTRICT ptr0;
16177   orc_union16 *ORC_RESTRICT ptr1;
16178   const orc_int8 *ORC_RESTRICT ptr4;
16179   orc_int8 var33;
16180   orc_union16 var34;
16181 
16182   for (j = 0; j < m; j++) {
16183     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
16184     ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
16185     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
16186 
16187 
16188     for (i = 0; i < n; i++) {
16189       /* 0: loadb */
16190       var33 = ptr4[i];
16191       /* 1: splatbw */
16192       var34.i = ((var33 & 0xff) << 8) | (var33 & 0xff);
16193       /* 2: storew */
16194       ptr0[i] = var34;
16195       /* 3: storew */
16196       ptr1[i] = var34;
16197     }
16198   }
16199 
16200 }
16201 
16202 void
video_orc_planar_chroma_420_444(guint8 * ORC_RESTRICT d1,int d1_stride,guint8 * ORC_RESTRICT d2,int d2_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,int n,int m)16203 video_orc_planar_chroma_420_444 (guint8 * ORC_RESTRICT d1, int d1_stride,
16204     guint8 * ORC_RESTRICT d2, int d2_stride, const guint8 * ORC_RESTRICT s1,
16205     int s1_stride, int n, int m)
16206 {
16207   OrcExecutor _ex, *ex = &_ex;
16208   static volatile int p_inited = 0;
16209   static OrcCode *c = 0;
16210   void (*func) (OrcExecutor *);
16211 
16212   if (!p_inited) {
16213     orc_once_mutex_lock ();
16214     if (!p_inited) {
16215       OrcProgram *p;
16216 
16217 #if 1
16218       static const orc_uint8 bc[] = {
16219         1, 7, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 108,
16220         97, 110, 97, 114, 95, 99, 104, 114, 111, 109, 97, 95, 52, 50, 48, 95,
16221         52, 52, 52, 11, 2, 2, 11, 2, 2, 12, 1, 1, 20, 2, 151, 32,
16222         4, 97, 0, 32, 97, 1, 32, 2, 0,
16223       };
16224       p = orc_program_new_from_static_bytecode (bc);
16225       orc_program_set_backup_function (p,
16226           _backup_video_orc_planar_chroma_420_444);
16227 #else
16228       p = orc_program_new ();
16229       orc_program_set_2d (p);
16230       orc_program_set_name (p, "video_orc_planar_chroma_420_444");
16231       orc_program_set_backup_function (p,
16232           _backup_video_orc_planar_chroma_420_444);
16233       orc_program_add_destination (p, 2, "d1");
16234       orc_program_add_destination (p, 2, "d2");
16235       orc_program_add_source (p, 1, "s1");
16236       orc_program_add_temporary (p, 2, "t1");
16237 
16238       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
16239           ORC_VAR_D1);
16240       orc_program_append_2 (p, "storew", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
16241           ORC_VAR_D1);
16242       orc_program_append_2 (p, "storew", 0, ORC_VAR_D2, ORC_VAR_T1, ORC_VAR_D1,
16243           ORC_VAR_D1);
16244 #endif
16245 
16246       orc_program_compile (p);
16247       c = orc_program_take_code (p);
16248       orc_program_free (p);
16249     }
16250     p_inited = TRUE;
16251     orc_once_mutex_unlock ();
16252   }
16253   ex->arrays[ORC_VAR_A2] = c;
16254   ex->program = 0;
16255 
16256   ex->n = n;
16257   ORC_EXECUTOR_M (ex) = m;
16258   ex->arrays[ORC_VAR_D1] = d1;
16259   ex->params[ORC_VAR_D1] = d1_stride;
16260   ex->arrays[ORC_VAR_D2] = d2;
16261   ex->params[ORC_VAR_D2] = d2_stride;
16262   ex->arrays[ORC_VAR_S1] = (void *) s1;
16263   ex->params[ORC_VAR_S1] = s1_stride;
16264 
16265   func = c->exec;
16266   func (ex);
16267 }
16268 #endif
16269 
16270 
16271 /* video_orc_planar_chroma_422_444 */
16272 #ifdef DISABLE_ORC
16273 void
video_orc_planar_chroma_422_444(guint8 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,int n,int m)16274 video_orc_planar_chroma_422_444 (guint8 * ORC_RESTRICT d1, int d1_stride,
16275     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
16276 {
16277   int i;
16278   int j;
16279   orc_union16 *ORC_RESTRICT ptr0;
16280   const orc_int8 *ORC_RESTRICT ptr4;
16281   orc_int8 var33;
16282   orc_union16 var34;
16283 
16284   for (j = 0; j < m; j++) {
16285     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
16286     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
16287 
16288 
16289     for (i = 0; i < n; i++) {
16290       /* 0: loadb */
16291       var33 = ptr4[i];
16292       /* 1: splatbw */
16293       var34.i = ((var33 & 0xff) << 8) | (var33 & 0xff);
16294       /* 2: storew */
16295       ptr0[i] = var34;
16296     }
16297   }
16298 
16299 }
16300 
16301 #else
16302 static void
_backup_video_orc_planar_chroma_422_444(OrcExecutor * ORC_RESTRICT ex)16303 _backup_video_orc_planar_chroma_422_444 (OrcExecutor * ORC_RESTRICT ex)
16304 {
16305   int i;
16306   int j;
16307   int n = ex->n;
16308   int m = ex->params[ORC_VAR_A1];
16309   orc_union16 *ORC_RESTRICT ptr0;
16310   const orc_int8 *ORC_RESTRICT ptr4;
16311   orc_int8 var33;
16312   orc_union16 var34;
16313 
16314   for (j = 0; j < m; j++) {
16315     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
16316     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
16317 
16318 
16319     for (i = 0; i < n; i++) {
16320       /* 0: loadb */
16321       var33 = ptr4[i];
16322       /* 1: splatbw */
16323       var34.i = ((var33 & 0xff) << 8) | (var33 & 0xff);
16324       /* 2: storew */
16325       ptr0[i] = var34;
16326     }
16327   }
16328 
16329 }
16330 
16331 void
video_orc_planar_chroma_422_444(guint8 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,int n,int m)16332 video_orc_planar_chroma_422_444 (guint8 * ORC_RESTRICT d1, int d1_stride,
16333     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
16334 {
16335   OrcExecutor _ex, *ex = &_ex;
16336   static volatile int p_inited = 0;
16337   static OrcCode *c = 0;
16338   void (*func) (OrcExecutor *);
16339 
16340   if (!p_inited) {
16341     orc_once_mutex_lock ();
16342     if (!p_inited) {
16343       OrcProgram *p;
16344 
16345 #if 1
16346       static const orc_uint8 bc[] = {
16347         1, 7, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 108,
16348         97, 110, 97, 114, 95, 99, 104, 114, 111, 109, 97, 95, 52, 50, 50, 95,
16349         52, 52, 52, 11, 2, 2, 12, 1, 1, 20, 2, 151, 32, 4, 97, 0,
16350         32, 2, 0,
16351       };
16352       p = orc_program_new_from_static_bytecode (bc);
16353       orc_program_set_backup_function (p,
16354           _backup_video_orc_planar_chroma_422_444);
16355 #else
16356       p = orc_program_new ();
16357       orc_program_set_2d (p);
16358       orc_program_set_name (p, "video_orc_planar_chroma_422_444");
16359       orc_program_set_backup_function (p,
16360           _backup_video_orc_planar_chroma_422_444);
16361       orc_program_add_destination (p, 2, "d1");
16362       orc_program_add_source (p, 1, "s1");
16363       orc_program_add_temporary (p, 2, "t1");
16364 
16365       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
16366           ORC_VAR_D1);
16367       orc_program_append_2 (p, "storew", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
16368           ORC_VAR_D1);
16369 #endif
16370 
16371       orc_program_compile (p);
16372       c = orc_program_take_code (p);
16373       orc_program_free (p);
16374     }
16375     p_inited = TRUE;
16376     orc_once_mutex_unlock ();
16377   }
16378   ex->arrays[ORC_VAR_A2] = c;
16379   ex->program = 0;
16380 
16381   ex->n = n;
16382   ORC_EXECUTOR_M (ex) = m;
16383   ex->arrays[ORC_VAR_D1] = d1;
16384   ex->params[ORC_VAR_D1] = d1_stride;
16385   ex->arrays[ORC_VAR_S1] = (void *) s1;
16386   ex->params[ORC_VAR_S1] = s1_stride;
16387 
16388   func = c->exec;
16389   func (ex);
16390 }
16391 #endif
16392 
16393 
16394 /* video_orc_planar_chroma_444_422 */
16395 #ifdef DISABLE_ORC
16396 void
video_orc_planar_chroma_444_422(guint8 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,int n,int m)16397 video_orc_planar_chroma_444_422 (guint8 * ORC_RESTRICT d1, int d1_stride,
16398     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
16399 {
16400   int i;
16401   int j;
16402   orc_int8 *ORC_RESTRICT ptr0;
16403   const orc_union16 *ORC_RESTRICT ptr4;
16404   orc_union16 var34;
16405   orc_int8 var35;
16406   orc_int8 var36;
16407   orc_int8 var37;
16408 
16409   for (j = 0; j < m; j++) {
16410     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
16411     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
16412 
16413 
16414     for (i = 0; i < n; i++) {
16415       /* 0: loadw */
16416       var34 = ptr4[i];
16417       /* 1: splitwb */
16418       {
16419         orc_union16 _src;
16420         _src.i = var34.i;
16421         var36 = _src.x2[1];
16422         var37 = _src.x2[0];
16423       }
16424       /* 2: avgub */
16425       var35 = ((orc_uint8) var36 + (orc_uint8) var37 + 1) >> 1;
16426       /* 3: storeb */
16427       ptr0[i] = var35;
16428     }
16429   }
16430 
16431 }
16432 
16433 #else
16434 static void
_backup_video_orc_planar_chroma_444_422(OrcExecutor * ORC_RESTRICT ex)16435 _backup_video_orc_planar_chroma_444_422 (OrcExecutor * ORC_RESTRICT ex)
16436 {
16437   int i;
16438   int j;
16439   int n = ex->n;
16440   int m = ex->params[ORC_VAR_A1];
16441   orc_int8 *ORC_RESTRICT ptr0;
16442   const orc_union16 *ORC_RESTRICT ptr4;
16443   orc_union16 var34;
16444   orc_int8 var35;
16445   orc_int8 var36;
16446   orc_int8 var37;
16447 
16448   for (j = 0; j < m; j++) {
16449     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
16450     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
16451 
16452 
16453     for (i = 0; i < n; i++) {
16454       /* 0: loadw */
16455       var34 = ptr4[i];
16456       /* 1: splitwb */
16457       {
16458         orc_union16 _src;
16459         _src.i = var34.i;
16460         var36 = _src.x2[1];
16461         var37 = _src.x2[0];
16462       }
16463       /* 2: avgub */
16464       var35 = ((orc_uint8) var36 + (orc_uint8) var37 + 1) >> 1;
16465       /* 3: storeb */
16466       ptr0[i] = var35;
16467     }
16468   }
16469 
16470 }
16471 
16472 void
video_orc_planar_chroma_444_422(guint8 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,int n,int m)16473 video_orc_planar_chroma_444_422 (guint8 * ORC_RESTRICT d1, int d1_stride,
16474     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
16475 {
16476   OrcExecutor _ex, *ex = &_ex;
16477   static volatile int p_inited = 0;
16478   static OrcCode *c = 0;
16479   void (*func) (OrcExecutor *);
16480 
16481   if (!p_inited) {
16482     orc_once_mutex_lock ();
16483     if (!p_inited) {
16484       OrcProgram *p;
16485 
16486 #if 1
16487       static const orc_uint8 bc[] = {
16488         1, 7, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 108,
16489         97, 110, 97, 114, 95, 99, 104, 114, 111, 109, 97, 95, 52, 52, 52, 95,
16490         52, 50, 50, 11, 1, 1, 12, 2, 2, 20, 1, 20, 1, 199, 32, 33,
16491         4, 39, 0, 32, 33, 2, 0,
16492       };
16493       p = orc_program_new_from_static_bytecode (bc);
16494       orc_program_set_backup_function (p,
16495           _backup_video_orc_planar_chroma_444_422);
16496 #else
16497       p = orc_program_new ();
16498       orc_program_set_2d (p);
16499       orc_program_set_name (p, "video_orc_planar_chroma_444_422");
16500       orc_program_set_backup_function (p,
16501           _backup_video_orc_planar_chroma_444_422);
16502       orc_program_add_destination (p, 1, "d1");
16503       orc_program_add_source (p, 2, "s1");
16504       orc_program_add_temporary (p, 1, "t1");
16505       orc_program_add_temporary (p, 1, "t2");
16506 
16507       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1,
16508           ORC_VAR_D1);
16509       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
16510           ORC_VAR_D1);
16511 #endif
16512 
16513       orc_program_compile (p);
16514       c = orc_program_take_code (p);
16515       orc_program_free (p);
16516     }
16517     p_inited = TRUE;
16518     orc_once_mutex_unlock ();
16519   }
16520   ex->arrays[ORC_VAR_A2] = c;
16521   ex->program = 0;
16522 
16523   ex->n = n;
16524   ORC_EXECUTOR_M (ex) = m;
16525   ex->arrays[ORC_VAR_D1] = d1;
16526   ex->params[ORC_VAR_D1] = d1_stride;
16527   ex->arrays[ORC_VAR_S1] = (void *) s1;
16528   ex->params[ORC_VAR_S1] = s1_stride;
16529 
16530   func = c->exec;
16531   func (ex);
16532 }
16533 #endif
16534 
16535 
16536 /* video_orc_planar_chroma_444_420 */
16537 #ifdef DISABLE_ORC
16538 void
video_orc_planar_chroma_444_420(guint8 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,const guint8 * ORC_RESTRICT s2,int s2_stride,int n,int m)16539 video_orc_planar_chroma_444_420 (guint8 * ORC_RESTRICT d1, int d1_stride,
16540     const guint8 * ORC_RESTRICT s1, int s1_stride,
16541     const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m)
16542 {
16543   int i;
16544   int j;
16545   orc_int8 *ORC_RESTRICT ptr0;
16546   const orc_union16 *ORC_RESTRICT ptr4;
16547   const orc_union16 *ORC_RESTRICT ptr5;
16548   orc_union16 var35;
16549   orc_union16 var36;
16550   orc_int8 var37;
16551   orc_union16 var38;
16552   orc_int8 var39;
16553   orc_int8 var40;
16554 
16555   for (j = 0; j < m; j++) {
16556     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
16557     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
16558     ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
16559 
16560 
16561     for (i = 0; i < n; i++) {
16562       /* 0: loadw */
16563       var35 = ptr4[i];
16564       /* 1: loadw */
16565       var36 = ptr5[i];
16566       /* 2: avgub */
16567       var38.x2[0] =
16568           ((orc_uint8) var35.x2[0] + (orc_uint8) var36.x2[0] + 1) >> 1;
16569       var38.x2[1] =
16570           ((orc_uint8) var35.x2[1] + (orc_uint8) var36.x2[1] + 1) >> 1;
16571       /* 3: splitwb */
16572       {
16573         orc_union16 _src;
16574         _src.i = var38.i;
16575         var39 = _src.x2[1];
16576         var40 = _src.x2[0];
16577       }
16578       /* 4: avgub */
16579       var37 = ((orc_uint8) var39 + (orc_uint8) var40 + 1) >> 1;
16580       /* 5: storeb */
16581       ptr0[i] = var37;
16582     }
16583   }
16584 
16585 }
16586 
16587 #else
16588 static void
_backup_video_orc_planar_chroma_444_420(OrcExecutor * ORC_RESTRICT ex)16589 _backup_video_orc_planar_chroma_444_420 (OrcExecutor * ORC_RESTRICT ex)
16590 {
16591   int i;
16592   int j;
16593   int n = ex->n;
16594   int m = ex->params[ORC_VAR_A1];
16595   orc_int8 *ORC_RESTRICT ptr0;
16596   const orc_union16 *ORC_RESTRICT ptr4;
16597   const orc_union16 *ORC_RESTRICT ptr5;
16598   orc_union16 var35;
16599   orc_union16 var36;
16600   orc_int8 var37;
16601   orc_union16 var38;
16602   orc_int8 var39;
16603   orc_int8 var40;
16604 
16605   for (j = 0; j < m; j++) {
16606     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
16607     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
16608     ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
16609 
16610 
16611     for (i = 0; i < n; i++) {
16612       /* 0: loadw */
16613       var35 = ptr4[i];
16614       /* 1: loadw */
16615       var36 = ptr5[i];
16616       /* 2: avgub */
16617       var38.x2[0] =
16618           ((orc_uint8) var35.x2[0] + (orc_uint8) var36.x2[0] + 1) >> 1;
16619       var38.x2[1] =
16620           ((orc_uint8) var35.x2[1] + (orc_uint8) var36.x2[1] + 1) >> 1;
16621       /* 3: splitwb */
16622       {
16623         orc_union16 _src;
16624         _src.i = var38.i;
16625         var39 = _src.x2[1];
16626         var40 = _src.x2[0];
16627       }
16628       /* 4: avgub */
16629       var37 = ((orc_uint8) var39 + (orc_uint8) var40 + 1) >> 1;
16630       /* 5: storeb */
16631       ptr0[i] = var37;
16632     }
16633   }
16634 
16635 }
16636 
16637 void
video_orc_planar_chroma_444_420(guint8 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,const guint8 * ORC_RESTRICT s2,int s2_stride,int n,int m)16638 video_orc_planar_chroma_444_420 (guint8 * ORC_RESTRICT d1, int d1_stride,
16639     const guint8 * ORC_RESTRICT s1, int s1_stride,
16640     const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m)
16641 {
16642   OrcExecutor _ex, *ex = &_ex;
16643   static volatile int p_inited = 0;
16644   static OrcCode *c = 0;
16645   void (*func) (OrcExecutor *);
16646 
16647   if (!p_inited) {
16648     orc_once_mutex_lock ();
16649     if (!p_inited) {
16650       OrcProgram *p;
16651 
16652 #if 1
16653       static const orc_uint8 bc[] = {
16654         1, 7, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 108,
16655         97, 110, 97, 114, 95, 99, 104, 114, 111, 109, 97, 95, 52, 52, 52, 95,
16656         52, 50, 48, 11, 1, 1, 12, 2, 2, 12, 2, 2, 20, 2, 20, 1,
16657         20, 1, 21, 1, 39, 32, 4, 5, 199, 33, 34, 32, 39, 0, 33, 34,
16658         2, 0,
16659       };
16660       p = orc_program_new_from_static_bytecode (bc);
16661       orc_program_set_backup_function (p,
16662           _backup_video_orc_planar_chroma_444_420);
16663 #else
16664       p = orc_program_new ();
16665       orc_program_set_2d (p);
16666       orc_program_set_name (p, "video_orc_planar_chroma_444_420");
16667       orc_program_set_backup_function (p,
16668           _backup_video_orc_planar_chroma_444_420);
16669       orc_program_add_destination (p, 1, "d1");
16670       orc_program_add_source (p, 2, "s1");
16671       orc_program_add_source (p, 2, "s2");
16672       orc_program_add_temporary (p, 2, "t1");
16673       orc_program_add_temporary (p, 1, "t2");
16674       orc_program_add_temporary (p, 1, "t3");
16675 
16676       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S2,
16677           ORC_VAR_D1);
16678       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T1,
16679           ORC_VAR_D1);
16680       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T3,
16681           ORC_VAR_D1);
16682 #endif
16683 
16684       orc_program_compile (p);
16685       c = orc_program_take_code (p);
16686       orc_program_free (p);
16687     }
16688     p_inited = TRUE;
16689     orc_once_mutex_unlock ();
16690   }
16691   ex->arrays[ORC_VAR_A2] = c;
16692   ex->program = 0;
16693 
16694   ex->n = n;
16695   ORC_EXECUTOR_M (ex) = m;
16696   ex->arrays[ORC_VAR_D1] = d1;
16697   ex->params[ORC_VAR_D1] = d1_stride;
16698   ex->arrays[ORC_VAR_S1] = (void *) s1;
16699   ex->params[ORC_VAR_S1] = s1_stride;
16700   ex->arrays[ORC_VAR_S2] = (void *) s2;
16701   ex->params[ORC_VAR_S2] = s2_stride;
16702 
16703   func = c->exec;
16704   func (ex);
16705 }
16706 #endif
16707 
16708 
16709 /* video_orc_planar_chroma_422_420 */
16710 #ifdef DISABLE_ORC
16711 void
video_orc_planar_chroma_422_420(guint8 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,const guint8 * ORC_RESTRICT s2,int s2_stride,int n,int m)16712 video_orc_planar_chroma_422_420 (guint8 * ORC_RESTRICT d1, int d1_stride,
16713     const guint8 * ORC_RESTRICT s1, int s1_stride,
16714     const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m)
16715 {
16716   int i;
16717   int j;
16718   orc_int8 *ORC_RESTRICT ptr0;
16719   const orc_int8 *ORC_RESTRICT ptr4;
16720   const orc_int8 *ORC_RESTRICT ptr5;
16721   orc_int8 var32;
16722   orc_int8 var33;
16723   orc_int8 var34;
16724 
16725   for (j = 0; j < m; j++) {
16726     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
16727     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
16728     ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
16729 
16730 
16731     for (i = 0; i < n; i++) {
16732       /* 0: loadb */
16733       var32 = ptr4[i];
16734       /* 1: loadb */
16735       var33 = ptr5[i];
16736       /* 2: avgub */
16737       var34 = ((orc_uint8) var32 + (orc_uint8) var33 + 1) >> 1;
16738       /* 3: storeb */
16739       ptr0[i] = var34;
16740     }
16741   }
16742 
16743 }
16744 
16745 #else
16746 static void
_backup_video_orc_planar_chroma_422_420(OrcExecutor * ORC_RESTRICT ex)16747 _backup_video_orc_planar_chroma_422_420 (OrcExecutor * ORC_RESTRICT ex)
16748 {
16749   int i;
16750   int j;
16751   int n = ex->n;
16752   int m = ex->params[ORC_VAR_A1];
16753   orc_int8 *ORC_RESTRICT ptr0;
16754   const orc_int8 *ORC_RESTRICT ptr4;
16755   const orc_int8 *ORC_RESTRICT ptr5;
16756   orc_int8 var32;
16757   orc_int8 var33;
16758   orc_int8 var34;
16759 
16760   for (j = 0; j < m; j++) {
16761     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
16762     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
16763     ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
16764 
16765 
16766     for (i = 0; i < n; i++) {
16767       /* 0: loadb */
16768       var32 = ptr4[i];
16769       /* 1: loadb */
16770       var33 = ptr5[i];
16771       /* 2: avgub */
16772       var34 = ((orc_uint8) var32 + (orc_uint8) var33 + 1) >> 1;
16773       /* 3: storeb */
16774       ptr0[i] = var34;
16775     }
16776   }
16777 
16778 }
16779 
16780 void
video_orc_planar_chroma_422_420(guint8 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,const guint8 * ORC_RESTRICT s2,int s2_stride,int n,int m)16781 video_orc_planar_chroma_422_420 (guint8 * ORC_RESTRICT d1, int d1_stride,
16782     const guint8 * ORC_RESTRICT s1, int s1_stride,
16783     const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m)
16784 {
16785   OrcExecutor _ex, *ex = &_ex;
16786   static volatile int p_inited = 0;
16787   static OrcCode *c = 0;
16788   void (*func) (OrcExecutor *);
16789 
16790   if (!p_inited) {
16791     orc_once_mutex_lock ();
16792     if (!p_inited) {
16793       OrcProgram *p;
16794 
16795 #if 1
16796       static const orc_uint8 bc[] = {
16797         1, 7, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 108,
16798         97, 110, 97, 114, 95, 99, 104, 114, 111, 109, 97, 95, 52, 50, 50, 95,
16799         52, 50, 48, 11, 1, 1, 12, 1, 1, 12, 1, 1, 39, 0, 4, 5,
16800         2, 0,
16801       };
16802       p = orc_program_new_from_static_bytecode (bc);
16803       orc_program_set_backup_function (p,
16804           _backup_video_orc_planar_chroma_422_420);
16805 #else
16806       p = orc_program_new ();
16807       orc_program_set_2d (p);
16808       orc_program_set_name (p, "video_orc_planar_chroma_422_420");
16809       orc_program_set_backup_function (p,
16810           _backup_video_orc_planar_chroma_422_420);
16811       orc_program_add_destination (p, 1, "d1");
16812       orc_program_add_source (p, 1, "s1");
16813       orc_program_add_source (p, 1, "s2");
16814 
16815       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S2,
16816           ORC_VAR_D1);
16817 #endif
16818 
16819       orc_program_compile (p);
16820       c = orc_program_take_code (p);
16821       orc_program_free (p);
16822     }
16823     p_inited = TRUE;
16824     orc_once_mutex_unlock ();
16825   }
16826   ex->arrays[ORC_VAR_A2] = c;
16827   ex->program = 0;
16828 
16829   ex->n = n;
16830   ORC_EXECUTOR_M (ex) = m;
16831   ex->arrays[ORC_VAR_D1] = d1;
16832   ex->params[ORC_VAR_D1] = d1_stride;
16833   ex->arrays[ORC_VAR_S1] = (void *) s1;
16834   ex->params[ORC_VAR_S1] = s1_stride;
16835   ex->arrays[ORC_VAR_S2] = (void *) s2;
16836   ex->params[ORC_VAR_S2] = s2_stride;
16837 
16838   func = c->exec;
16839   func (ex);
16840 }
16841 #endif
16842 
16843 
16844 /* video_orc_convert_YUY2_AYUV */
16845 #ifdef DISABLE_ORC
16846 void
video_orc_convert_YUY2_AYUV(guint8 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,int p1,int n,int m)16847 video_orc_convert_YUY2_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
16848     const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
16849 {
16850   int i;
16851   int j;
16852   orc_union64 *ORC_RESTRICT ptr0;
16853   const orc_union32 *ORC_RESTRICT ptr4;
16854   orc_union32 var36;
16855   orc_union16 var37;
16856   orc_union64 var38;
16857   orc_union16 var39;
16858   orc_union16 var40;
16859   orc_union32 var41;
16860   orc_union32 var42;
16861 
16862   for (j = 0; j < m; j++) {
16863     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
16864     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
16865 
16866     /* 2: loadpb */
16867     var37.x2[0] = p1;
16868     var37.x2[1] = p1;
16869 
16870     for (i = 0; i < n; i++) {
16871       /* 0: loadl */
16872       var36 = ptr4[i];
16873       /* 1: splitwb */
16874       {
16875         orc_union16 _src;
16876         _src.i = var36.x2[0];
16877         var39.x2[0] = _src.x2[1];
16878         var40.x2[0] = _src.x2[0];
16879       }
16880       {
16881         orc_union16 _src;
16882         _src.i = var36.x2[1];
16883         var39.x2[1] = _src.x2[1];
16884         var40.x2[1] = _src.x2[0];
16885       }
16886       /* 3: mergebw */
16887       {
16888         orc_union16 _dest;
16889         _dest.x2[0] = var37.x2[0];
16890         _dest.x2[1] = var40.x2[0];
16891         var41.x2[0] = _dest.i;
16892       }
16893       {
16894         orc_union16 _dest;
16895         _dest.x2[0] = var37.x2[1];
16896         _dest.x2[1] = var40.x2[1];
16897         var41.x2[1] = _dest.i;
16898       }
16899       /* 4: mergewl */
16900       {
16901         orc_union32 _dest;
16902         _dest.x2[0] = var39.i;
16903         _dest.x2[1] = var39.i;
16904         var42.i = _dest.i;
16905       }
16906       /* 5: mergewl */
16907       {
16908         orc_union32 _dest;
16909         _dest.x2[0] = var41.x2[0];
16910         _dest.x2[1] = var42.x2[0];
16911         var38.x2[0] = _dest.i;
16912       }
16913       {
16914         orc_union32 _dest;
16915         _dest.x2[0] = var41.x2[1];
16916         _dest.x2[1] = var42.x2[1];
16917         var38.x2[1] = _dest.i;
16918       }
16919       /* 6: storeq */
16920       ptr0[i] = var38;
16921     }
16922   }
16923 
16924 }
16925 
16926 #else
16927 static void
_backup_video_orc_convert_YUY2_AYUV(OrcExecutor * ORC_RESTRICT ex)16928 _backup_video_orc_convert_YUY2_AYUV (OrcExecutor * ORC_RESTRICT ex)
16929 {
16930   int i;
16931   int j;
16932   int n = ex->n;
16933   int m = ex->params[ORC_VAR_A1];
16934   orc_union64 *ORC_RESTRICT ptr0;
16935   const orc_union32 *ORC_RESTRICT ptr4;
16936   orc_union32 var36;
16937   orc_union16 var37;
16938   orc_union64 var38;
16939   orc_union16 var39;
16940   orc_union16 var40;
16941   orc_union32 var41;
16942   orc_union32 var42;
16943 
16944   for (j = 0; j < m; j++) {
16945     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
16946     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
16947 
16948     /* 2: loadpb */
16949     var37.x2[0] = ex->params[24];
16950     var37.x2[1] = ex->params[24];
16951 
16952     for (i = 0; i < n; i++) {
16953       /* 0: loadl */
16954       var36 = ptr4[i];
16955       /* 1: splitwb */
16956       {
16957         orc_union16 _src;
16958         _src.i = var36.x2[0];
16959         var39.x2[0] = _src.x2[1];
16960         var40.x2[0] = _src.x2[0];
16961       }
16962       {
16963         orc_union16 _src;
16964         _src.i = var36.x2[1];
16965         var39.x2[1] = _src.x2[1];
16966         var40.x2[1] = _src.x2[0];
16967       }
16968       /* 3: mergebw */
16969       {
16970         orc_union16 _dest;
16971         _dest.x2[0] = var37.x2[0];
16972         _dest.x2[1] = var40.x2[0];
16973         var41.x2[0] = _dest.i;
16974       }
16975       {
16976         orc_union16 _dest;
16977         _dest.x2[0] = var37.x2[1];
16978         _dest.x2[1] = var40.x2[1];
16979         var41.x2[1] = _dest.i;
16980       }
16981       /* 4: mergewl */
16982       {
16983         orc_union32 _dest;
16984         _dest.x2[0] = var39.i;
16985         _dest.x2[1] = var39.i;
16986         var42.i = _dest.i;
16987       }
16988       /* 5: mergewl */
16989       {
16990         orc_union32 _dest;
16991         _dest.x2[0] = var41.x2[0];
16992         _dest.x2[1] = var42.x2[0];
16993         var38.x2[0] = _dest.i;
16994       }
16995       {
16996         orc_union32 _dest;
16997         _dest.x2[0] = var41.x2[1];
16998         _dest.x2[1] = var42.x2[1];
16999         var38.x2[1] = _dest.i;
17000       }
17001       /* 6: storeq */
17002       ptr0[i] = var38;
17003     }
17004   }
17005 
17006 }
17007 
17008 void
video_orc_convert_YUY2_AYUV(guint8 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,int p1,int n,int m)17009 video_orc_convert_YUY2_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
17010     const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
17011 {
17012   OrcExecutor _ex, *ex = &_ex;
17013   static volatile int p_inited = 0;
17014   static OrcCode *c = 0;
17015   void (*func) (OrcExecutor *);
17016 
17017   if (!p_inited) {
17018     orc_once_mutex_lock ();
17019     if (!p_inited) {
17020       OrcProgram *p;
17021 
17022 #if 1
17023       static const orc_uint8 bc[] = {
17024         1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
17025         110, 118, 101, 114, 116, 95, 89, 85, 89, 50, 95, 65, 89, 85, 86, 11,
17026         8, 8, 12, 4, 4, 16, 1, 20, 2, 20, 2, 20, 4, 20, 4, 21,
17027         1, 199, 33, 32, 4, 21, 1, 196, 34, 24, 32, 195, 35, 33, 33, 21,
17028         1, 195, 0, 34, 35, 2, 0,
17029       };
17030       p = orc_program_new_from_static_bytecode (bc);
17031       orc_program_set_backup_function (p, _backup_video_orc_convert_YUY2_AYUV);
17032 #else
17033       p = orc_program_new ();
17034       orc_program_set_2d (p);
17035       orc_program_set_name (p, "video_orc_convert_YUY2_AYUV");
17036       orc_program_set_backup_function (p, _backup_video_orc_convert_YUY2_AYUV);
17037       orc_program_add_destination (p, 8, "d1");
17038       orc_program_add_source (p, 4, "s1");
17039       orc_program_add_parameter (p, 1, "p1");
17040       orc_program_add_temporary (p, 2, "t1");
17041       orc_program_add_temporary (p, 2, "t2");
17042       orc_program_add_temporary (p, 4, "t3");
17043       orc_program_add_temporary (p, 4, "t4");
17044 
17045       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
17046           ORC_VAR_D1);
17047       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_P1, ORC_VAR_T1,
17048           ORC_VAR_D1);
17049       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2,
17050           ORC_VAR_D1);
17051       orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4,
17052           ORC_VAR_D1);
17053 #endif
17054 
17055       orc_program_compile (p);
17056       c = orc_program_take_code (p);
17057       orc_program_free (p);
17058     }
17059     p_inited = TRUE;
17060     orc_once_mutex_unlock ();
17061   }
17062   ex->arrays[ORC_VAR_A2] = c;
17063   ex->program = 0;
17064 
17065   ex->n = n;
17066   ORC_EXECUTOR_M (ex) = m;
17067   ex->arrays[ORC_VAR_D1] = d1;
17068   ex->params[ORC_VAR_D1] = d1_stride;
17069   ex->arrays[ORC_VAR_S1] = (void *) s1;
17070   ex->params[ORC_VAR_S1] = s1_stride;
17071   ex->params[ORC_VAR_P1] = p1;
17072 
17073   func = c->exec;
17074   func (ex);
17075 }
17076 #endif
17077 
17078 
17079 /* video_orc_convert_UYVY_AYUV */
17080 #ifdef DISABLE_ORC
17081 void
video_orc_convert_UYVY_AYUV(guint8 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,int p1,int n,int m)17082 video_orc_convert_UYVY_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
17083     const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
17084 {
17085   int i;
17086   int j;
17087   orc_union64 *ORC_RESTRICT ptr0;
17088   const orc_union32 *ORC_RESTRICT ptr4;
17089   orc_union32 var36;
17090   orc_union16 var37;
17091   orc_union64 var38;
17092   orc_union16 var39;
17093   orc_union16 var40;
17094   orc_union32 var41;
17095   orc_union32 var42;
17096 
17097   for (j = 0; j < m; j++) {
17098     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
17099     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
17100 
17101     /* 2: loadpb */
17102     var37.x2[0] = p1;
17103     var37.x2[1] = p1;
17104 
17105     for (i = 0; i < n; i++) {
17106       /* 0: loadl */
17107       var36 = ptr4[i];
17108       /* 1: splitwb */
17109       {
17110         orc_union16 _src;
17111         _src.i = var36.x2[0];
17112         var39.x2[0] = _src.x2[1];
17113         var40.x2[0] = _src.x2[0];
17114       }
17115       {
17116         orc_union16 _src;
17117         _src.i = var36.x2[1];
17118         var39.x2[1] = _src.x2[1];
17119         var40.x2[1] = _src.x2[0];
17120       }
17121       /* 3: mergebw */
17122       {
17123         orc_union16 _dest;
17124         _dest.x2[0] = var37.x2[0];
17125         _dest.x2[1] = var39.x2[0];
17126         var41.x2[0] = _dest.i;
17127       }
17128       {
17129         orc_union16 _dest;
17130         _dest.x2[0] = var37.x2[1];
17131         _dest.x2[1] = var39.x2[1];
17132         var41.x2[1] = _dest.i;
17133       }
17134       /* 4: mergewl */
17135       {
17136         orc_union32 _dest;
17137         _dest.x2[0] = var40.i;
17138         _dest.x2[1] = var40.i;
17139         var42.i = _dest.i;
17140       }
17141       /* 5: mergewl */
17142       {
17143         orc_union32 _dest;
17144         _dest.x2[0] = var41.x2[0];
17145         _dest.x2[1] = var42.x2[0];
17146         var38.x2[0] = _dest.i;
17147       }
17148       {
17149         orc_union32 _dest;
17150         _dest.x2[0] = var41.x2[1];
17151         _dest.x2[1] = var42.x2[1];
17152         var38.x2[1] = _dest.i;
17153       }
17154       /* 6: storeq */
17155       ptr0[i] = var38;
17156     }
17157   }
17158 
17159 }
17160 
17161 #else
17162 static void
_backup_video_orc_convert_UYVY_AYUV(OrcExecutor * ORC_RESTRICT ex)17163 _backup_video_orc_convert_UYVY_AYUV (OrcExecutor * ORC_RESTRICT ex)
17164 {
17165   int i;
17166   int j;
17167   int n = ex->n;
17168   int m = ex->params[ORC_VAR_A1];
17169   orc_union64 *ORC_RESTRICT ptr0;
17170   const orc_union32 *ORC_RESTRICT ptr4;
17171   orc_union32 var36;
17172   orc_union16 var37;
17173   orc_union64 var38;
17174   orc_union16 var39;
17175   orc_union16 var40;
17176   orc_union32 var41;
17177   orc_union32 var42;
17178 
17179   for (j = 0; j < m; j++) {
17180     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
17181     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
17182 
17183     /* 2: loadpb */
17184     var37.x2[0] = ex->params[24];
17185     var37.x2[1] = ex->params[24];
17186 
17187     for (i = 0; i < n; i++) {
17188       /* 0: loadl */
17189       var36 = ptr4[i];
17190       /* 1: splitwb */
17191       {
17192         orc_union16 _src;
17193         _src.i = var36.x2[0];
17194         var39.x2[0] = _src.x2[1];
17195         var40.x2[0] = _src.x2[0];
17196       }
17197       {
17198         orc_union16 _src;
17199         _src.i = var36.x2[1];
17200         var39.x2[1] = _src.x2[1];
17201         var40.x2[1] = _src.x2[0];
17202       }
17203       /* 3: mergebw */
17204       {
17205         orc_union16 _dest;
17206         _dest.x2[0] = var37.x2[0];
17207         _dest.x2[1] = var39.x2[0];
17208         var41.x2[0] = _dest.i;
17209       }
17210       {
17211         orc_union16 _dest;
17212         _dest.x2[0] = var37.x2[1];
17213         _dest.x2[1] = var39.x2[1];
17214         var41.x2[1] = _dest.i;
17215       }
17216       /* 4: mergewl */
17217       {
17218         orc_union32 _dest;
17219         _dest.x2[0] = var40.i;
17220         _dest.x2[1] = var40.i;
17221         var42.i = _dest.i;
17222       }
17223       /* 5: mergewl */
17224       {
17225         orc_union32 _dest;
17226         _dest.x2[0] = var41.x2[0];
17227         _dest.x2[1] = var42.x2[0];
17228         var38.x2[0] = _dest.i;
17229       }
17230       {
17231         orc_union32 _dest;
17232         _dest.x2[0] = var41.x2[1];
17233         _dest.x2[1] = var42.x2[1];
17234         var38.x2[1] = _dest.i;
17235       }
17236       /* 6: storeq */
17237       ptr0[i] = var38;
17238     }
17239   }
17240 
17241 }
17242 
17243 void
video_orc_convert_UYVY_AYUV(guint8 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,int p1,int n,int m)17244 video_orc_convert_UYVY_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
17245     const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
17246 {
17247   OrcExecutor _ex, *ex = &_ex;
17248   static volatile int p_inited = 0;
17249   static OrcCode *c = 0;
17250   void (*func) (OrcExecutor *);
17251 
17252   if (!p_inited) {
17253     orc_once_mutex_lock ();
17254     if (!p_inited) {
17255       OrcProgram *p;
17256 
17257 #if 1
17258       static const orc_uint8 bc[] = {
17259         1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
17260         110, 118, 101, 114, 116, 95, 85, 89, 86, 89, 95, 65, 89, 85, 86, 11,
17261         8, 8, 12, 4, 4, 16, 1, 20, 2, 20, 2, 20, 4, 20, 4, 21,
17262         1, 199, 32, 33, 4, 21, 1, 196, 34, 24, 32, 195, 35, 33, 33, 21,
17263         1, 195, 0, 34, 35, 2, 0,
17264       };
17265       p = orc_program_new_from_static_bytecode (bc);
17266       orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_AYUV);
17267 #else
17268       p = orc_program_new ();
17269       orc_program_set_2d (p);
17270       orc_program_set_name (p, "video_orc_convert_UYVY_AYUV");
17271       orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_AYUV);
17272       orc_program_add_destination (p, 8, "d1");
17273       orc_program_add_source (p, 4, "s1");
17274       orc_program_add_parameter (p, 1, "p1");
17275       orc_program_add_temporary (p, 2, "t1");
17276       orc_program_add_temporary (p, 2, "t2");
17277       orc_program_add_temporary (p, 4, "t3");
17278       orc_program_add_temporary (p, 4, "t4");
17279 
17280       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1,
17281           ORC_VAR_D1);
17282       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_P1, ORC_VAR_T1,
17283           ORC_VAR_D1);
17284       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2,
17285           ORC_VAR_D1);
17286       orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4,
17287           ORC_VAR_D1);
17288 #endif
17289 
17290       orc_program_compile (p);
17291       c = orc_program_take_code (p);
17292       orc_program_free (p);
17293     }
17294     p_inited = TRUE;
17295     orc_once_mutex_unlock ();
17296   }
17297   ex->arrays[ORC_VAR_A2] = c;
17298   ex->program = 0;
17299 
17300   ex->n = n;
17301   ORC_EXECUTOR_M (ex) = m;
17302   ex->arrays[ORC_VAR_D1] = d1;
17303   ex->params[ORC_VAR_D1] = d1_stride;
17304   ex->arrays[ORC_VAR_S1] = (void *) s1;
17305   ex->params[ORC_VAR_S1] = s1_stride;
17306   ex->params[ORC_VAR_P1] = p1;
17307 
17308   func = c->exec;
17309   func (ex);
17310 }
17311 #endif
17312 
17313 
17314 /* video_orc_convert_YUY2_Y42B */
17315 #ifdef DISABLE_ORC
17316 void
video_orc_convert_YUY2_Y42B(guint8 * ORC_RESTRICT d1,int d1_stride,guint8 * ORC_RESTRICT d2,int d2_stride,guint8 * ORC_RESTRICT d3,int d3_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,int n,int m)17317 video_orc_convert_YUY2_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride,
17318     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
17319     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
17320 {
17321   int i;
17322   int j;
17323   orc_union16 *ORC_RESTRICT ptr0;
17324   orc_int8 *ORC_RESTRICT ptr1;
17325   orc_int8 *ORC_RESTRICT ptr2;
17326   const orc_union32 *ORC_RESTRICT ptr4;
17327   orc_union32 var33;
17328   orc_union16 var34;
17329   orc_int8 var35;
17330   orc_int8 var36;
17331   orc_union16 var37;
17332 
17333   for (j = 0; j < m; j++) {
17334     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
17335     ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
17336     ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j);
17337     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
17338 
17339 
17340     for (i = 0; i < n; i++) {
17341       /* 0: loadl */
17342       var33 = ptr4[i];
17343       /* 1: splitwb */
17344       {
17345         orc_union16 _src;
17346         _src.i = var33.x2[0];
17347         var37.x2[0] = _src.x2[1];
17348         var34.x2[0] = _src.x2[0];
17349       }
17350       {
17351         orc_union16 _src;
17352         _src.i = var33.x2[1];
17353         var37.x2[1] = _src.x2[1];
17354         var34.x2[1] = _src.x2[0];
17355       }
17356       /* 2: storew */
17357       ptr0[i] = var34;
17358       /* 3: splitwb */
17359       {
17360         orc_union16 _src;
17361         _src.i = var37.i;
17362         var35 = _src.x2[1];
17363         var36 = _src.x2[0];
17364       }
17365       /* 4: storeb */
17366       ptr2[i] = var35;
17367       /* 5: storeb */
17368       ptr1[i] = var36;
17369     }
17370   }
17371 
17372 }
17373 
17374 #else
17375 static void
_backup_video_orc_convert_YUY2_Y42B(OrcExecutor * ORC_RESTRICT ex)17376 _backup_video_orc_convert_YUY2_Y42B (OrcExecutor * ORC_RESTRICT ex)
17377 {
17378   int i;
17379   int j;
17380   int n = ex->n;
17381   int m = ex->params[ORC_VAR_A1];
17382   orc_union16 *ORC_RESTRICT ptr0;
17383   orc_int8 *ORC_RESTRICT ptr1;
17384   orc_int8 *ORC_RESTRICT ptr2;
17385   const orc_union32 *ORC_RESTRICT ptr4;
17386   orc_union32 var33;
17387   orc_union16 var34;
17388   orc_int8 var35;
17389   orc_int8 var36;
17390   orc_union16 var37;
17391 
17392   for (j = 0; j < m; j++) {
17393     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
17394     ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
17395     ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j);
17396     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
17397 
17398 
17399     for (i = 0; i < n; i++) {
17400       /* 0: loadl */
17401       var33 = ptr4[i];
17402       /* 1: splitwb */
17403       {
17404         orc_union16 _src;
17405         _src.i = var33.x2[0];
17406         var37.x2[0] = _src.x2[1];
17407         var34.x2[0] = _src.x2[0];
17408       }
17409       {
17410         orc_union16 _src;
17411         _src.i = var33.x2[1];
17412         var37.x2[1] = _src.x2[1];
17413         var34.x2[1] = _src.x2[0];
17414       }
17415       /* 2: storew */
17416       ptr0[i] = var34;
17417       /* 3: splitwb */
17418       {
17419         orc_union16 _src;
17420         _src.i = var37.i;
17421         var35 = _src.x2[1];
17422         var36 = _src.x2[0];
17423       }
17424       /* 4: storeb */
17425       ptr2[i] = var35;
17426       /* 5: storeb */
17427       ptr1[i] = var36;
17428     }
17429   }
17430 
17431 }
17432 
17433 void
video_orc_convert_YUY2_Y42B(guint8 * ORC_RESTRICT d1,int d1_stride,guint8 * ORC_RESTRICT d2,int d2_stride,guint8 * ORC_RESTRICT d3,int d3_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,int n,int m)17434 video_orc_convert_YUY2_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride,
17435     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
17436     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
17437 {
17438   OrcExecutor _ex, *ex = &_ex;
17439   static volatile int p_inited = 0;
17440   static OrcCode *c = 0;
17441   void (*func) (OrcExecutor *);
17442 
17443   if (!p_inited) {
17444     orc_once_mutex_lock ();
17445     if (!p_inited) {
17446       OrcProgram *p;
17447 
17448 #if 1
17449       static const orc_uint8 bc[] = {
17450         1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
17451         110, 118, 101, 114, 116, 95, 89, 85, 89, 50, 95, 89, 52, 50, 66, 11,
17452         2, 2, 11, 1, 1, 11, 1, 1, 12, 4, 4, 20, 2, 21, 1, 199,
17453         32, 0, 4, 199, 2, 1, 32, 2, 0,
17454       };
17455       p = orc_program_new_from_static_bytecode (bc);
17456       orc_program_set_backup_function (p, _backup_video_orc_convert_YUY2_Y42B);
17457 #else
17458       p = orc_program_new ();
17459       orc_program_set_2d (p);
17460       orc_program_set_name (p, "video_orc_convert_YUY2_Y42B");
17461       orc_program_set_backup_function (p, _backup_video_orc_convert_YUY2_Y42B);
17462       orc_program_add_destination (p, 2, "d1");
17463       orc_program_add_destination (p, 1, "d2");
17464       orc_program_add_destination (p, 1, "d3");
17465       orc_program_add_source (p, 4, "s1");
17466       orc_program_add_temporary (p, 2, "t1");
17467 
17468       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_S1,
17469           ORC_VAR_D1);
17470       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T1,
17471           ORC_VAR_D1);
17472 #endif
17473 
17474       orc_program_compile (p);
17475       c = orc_program_take_code (p);
17476       orc_program_free (p);
17477     }
17478     p_inited = TRUE;
17479     orc_once_mutex_unlock ();
17480   }
17481   ex->arrays[ORC_VAR_A2] = c;
17482   ex->program = 0;
17483 
17484   ex->n = n;
17485   ORC_EXECUTOR_M (ex) = m;
17486   ex->arrays[ORC_VAR_D1] = d1;
17487   ex->params[ORC_VAR_D1] = d1_stride;
17488   ex->arrays[ORC_VAR_D2] = d2;
17489   ex->params[ORC_VAR_D2] = d2_stride;
17490   ex->arrays[ORC_VAR_D3] = d3;
17491   ex->params[ORC_VAR_D3] = d3_stride;
17492   ex->arrays[ORC_VAR_S1] = (void *) s1;
17493   ex->params[ORC_VAR_S1] = s1_stride;
17494 
17495   func = c->exec;
17496   func (ex);
17497 }
17498 #endif
17499 
17500 
17501 /* video_orc_convert_UYVY_Y42B */
17502 #ifdef DISABLE_ORC
17503 void
video_orc_convert_UYVY_Y42B(guint8 * ORC_RESTRICT d1,int d1_stride,guint8 * ORC_RESTRICT d2,int d2_stride,guint8 * ORC_RESTRICT d3,int d3_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,int n,int m)17504 video_orc_convert_UYVY_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride,
17505     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
17506     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
17507 {
17508   int i;
17509   int j;
17510   orc_union16 *ORC_RESTRICT ptr0;
17511   orc_int8 *ORC_RESTRICT ptr1;
17512   orc_int8 *ORC_RESTRICT ptr2;
17513   const orc_union32 *ORC_RESTRICT ptr4;
17514   orc_union32 var33;
17515   orc_union16 var34;
17516   orc_int8 var35;
17517   orc_int8 var36;
17518   orc_union16 var37;
17519 
17520   for (j = 0; j < m; j++) {
17521     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
17522     ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
17523     ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j);
17524     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
17525 
17526 
17527     for (i = 0; i < n; i++) {
17528       /* 0: loadl */
17529       var33 = ptr4[i];
17530       /* 1: splitwb */
17531       {
17532         orc_union16 _src;
17533         _src.i = var33.x2[0];
17534         var34.x2[0] = _src.x2[1];
17535         var37.x2[0] = _src.x2[0];
17536       }
17537       {
17538         orc_union16 _src;
17539         _src.i = var33.x2[1];
17540         var34.x2[1] = _src.x2[1];
17541         var37.x2[1] = _src.x2[0];
17542       }
17543       /* 2: storew */
17544       ptr0[i] = var34;
17545       /* 3: splitwb */
17546       {
17547         orc_union16 _src;
17548         _src.i = var37.i;
17549         var35 = _src.x2[1];
17550         var36 = _src.x2[0];
17551       }
17552       /* 4: storeb */
17553       ptr2[i] = var35;
17554       /* 5: storeb */
17555       ptr1[i] = var36;
17556     }
17557   }
17558 
17559 }
17560 
17561 #else
17562 static void
_backup_video_orc_convert_UYVY_Y42B(OrcExecutor * ORC_RESTRICT ex)17563 _backup_video_orc_convert_UYVY_Y42B (OrcExecutor * ORC_RESTRICT ex)
17564 {
17565   int i;
17566   int j;
17567   int n = ex->n;
17568   int m = ex->params[ORC_VAR_A1];
17569   orc_union16 *ORC_RESTRICT ptr0;
17570   orc_int8 *ORC_RESTRICT ptr1;
17571   orc_int8 *ORC_RESTRICT ptr2;
17572   const orc_union32 *ORC_RESTRICT ptr4;
17573   orc_union32 var33;
17574   orc_union16 var34;
17575   orc_int8 var35;
17576   orc_int8 var36;
17577   orc_union16 var37;
17578 
17579   for (j = 0; j < m; j++) {
17580     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
17581     ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
17582     ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j);
17583     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
17584 
17585 
17586     for (i = 0; i < n; i++) {
17587       /* 0: loadl */
17588       var33 = ptr4[i];
17589       /* 1: splitwb */
17590       {
17591         orc_union16 _src;
17592         _src.i = var33.x2[0];
17593         var34.x2[0] = _src.x2[1];
17594         var37.x2[0] = _src.x2[0];
17595       }
17596       {
17597         orc_union16 _src;
17598         _src.i = var33.x2[1];
17599         var34.x2[1] = _src.x2[1];
17600         var37.x2[1] = _src.x2[0];
17601       }
17602       /* 2: storew */
17603       ptr0[i] = var34;
17604       /* 3: splitwb */
17605       {
17606         orc_union16 _src;
17607         _src.i = var37.i;
17608         var35 = _src.x2[1];
17609         var36 = _src.x2[0];
17610       }
17611       /* 4: storeb */
17612       ptr2[i] = var35;
17613       /* 5: storeb */
17614       ptr1[i] = var36;
17615     }
17616   }
17617 
17618 }
17619 
17620 void
video_orc_convert_UYVY_Y42B(guint8 * ORC_RESTRICT d1,int d1_stride,guint8 * ORC_RESTRICT d2,int d2_stride,guint8 * ORC_RESTRICT d3,int d3_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,int n,int m)17621 video_orc_convert_UYVY_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride,
17622     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
17623     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
17624 {
17625   OrcExecutor _ex, *ex = &_ex;
17626   static volatile int p_inited = 0;
17627   static OrcCode *c = 0;
17628   void (*func) (OrcExecutor *);
17629 
17630   if (!p_inited) {
17631     orc_once_mutex_lock ();
17632     if (!p_inited) {
17633       OrcProgram *p;
17634 
17635 #if 1
17636       static const orc_uint8 bc[] = {
17637         1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
17638         110, 118, 101, 114, 116, 95, 85, 89, 86, 89, 95, 89, 52, 50, 66, 11,
17639         2, 2, 11, 1, 1, 11, 1, 1, 12, 4, 4, 20, 2, 21, 1, 199,
17640         0, 32, 4, 199, 2, 1, 32, 2, 0,
17641       };
17642       p = orc_program_new_from_static_bytecode (bc);
17643       orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_Y42B);
17644 #else
17645       p = orc_program_new ();
17646       orc_program_set_2d (p);
17647       orc_program_set_name (p, "video_orc_convert_UYVY_Y42B");
17648       orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_Y42B);
17649       orc_program_add_destination (p, 2, "d1");
17650       orc_program_add_destination (p, 1, "d2");
17651       orc_program_add_destination (p, 1, "d3");
17652       orc_program_add_source (p, 4, "s1");
17653       orc_program_add_temporary (p, 2, "t1");
17654 
17655       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1,
17656           ORC_VAR_D1);
17657       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T1,
17658           ORC_VAR_D1);
17659 #endif
17660 
17661       orc_program_compile (p);
17662       c = orc_program_take_code (p);
17663       orc_program_free (p);
17664     }
17665     p_inited = TRUE;
17666     orc_once_mutex_unlock ();
17667   }
17668   ex->arrays[ORC_VAR_A2] = c;
17669   ex->program = 0;
17670 
17671   ex->n = n;
17672   ORC_EXECUTOR_M (ex) = m;
17673   ex->arrays[ORC_VAR_D1] = d1;
17674   ex->params[ORC_VAR_D1] = d1_stride;
17675   ex->arrays[ORC_VAR_D2] = d2;
17676   ex->params[ORC_VAR_D2] = d2_stride;
17677   ex->arrays[ORC_VAR_D3] = d3;
17678   ex->params[ORC_VAR_D3] = d3_stride;
17679   ex->arrays[ORC_VAR_S1] = (void *) s1;
17680   ex->params[ORC_VAR_S1] = s1_stride;
17681 
17682   func = c->exec;
17683   func (ex);
17684 }
17685 #endif
17686 
17687 
17688 /* video_orc_convert_YUY2_Y444 */
17689 #ifdef DISABLE_ORC
17690 void
video_orc_convert_YUY2_Y444(guint8 * ORC_RESTRICT d1,int d1_stride,guint8 * ORC_RESTRICT d2,int d2_stride,guint8 * ORC_RESTRICT d3,int d3_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,int n,int m)17691 video_orc_convert_YUY2_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride,
17692     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
17693     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
17694 {
17695   int i;
17696   int j;
17697   orc_union16 *ORC_RESTRICT ptr0;
17698   orc_union16 *ORC_RESTRICT ptr1;
17699   orc_union16 *ORC_RESTRICT ptr2;
17700   const orc_union32 *ORC_RESTRICT ptr4;
17701   orc_union32 var35;
17702   orc_union16 var36;
17703   orc_union16 var37;
17704   orc_union16 var38;
17705   orc_union16 var39;
17706   orc_int8 var40;
17707   orc_int8 var41;
17708 
17709   for (j = 0; j < m; j++) {
17710     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
17711     ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
17712     ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j);
17713     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
17714 
17715 
17716     for (i = 0; i < n; i++) {
17717       /* 0: loadl */
17718       var35 = ptr4[i];
17719       /* 1: splitwb */
17720       {
17721         orc_union16 _src;
17722         _src.i = var35.x2[0];
17723         var39.x2[0] = _src.x2[1];
17724         var36.x2[0] = _src.x2[0];
17725       }
17726       {
17727         orc_union16 _src;
17728         _src.i = var35.x2[1];
17729         var39.x2[1] = _src.x2[1];
17730         var36.x2[1] = _src.x2[0];
17731       }
17732       /* 2: storew */
17733       ptr0[i] = var36;
17734       /* 3: splitwb */
17735       {
17736         orc_union16 _src;
17737         _src.i = var39.i;
17738         var40 = _src.x2[1];
17739         var41 = _src.x2[0];
17740       }
17741       /* 4: splatbw */
17742       var37.i = ((var41 & 0xff) << 8) | (var41 & 0xff);
17743       /* 5: storew */
17744       ptr1[i] = var37;
17745       /* 6: splatbw */
17746       var38.i = ((var40 & 0xff) << 8) | (var40 & 0xff);
17747       /* 7: storew */
17748       ptr2[i] = var38;
17749     }
17750   }
17751 
17752 }
17753 
17754 #else
17755 static void
_backup_video_orc_convert_YUY2_Y444(OrcExecutor * ORC_RESTRICT ex)17756 _backup_video_orc_convert_YUY2_Y444 (OrcExecutor * ORC_RESTRICT ex)
17757 {
17758   int i;
17759   int j;
17760   int n = ex->n;
17761   int m = ex->params[ORC_VAR_A1];
17762   orc_union16 *ORC_RESTRICT ptr0;
17763   orc_union16 *ORC_RESTRICT ptr1;
17764   orc_union16 *ORC_RESTRICT ptr2;
17765   const orc_union32 *ORC_RESTRICT ptr4;
17766   orc_union32 var35;
17767   orc_union16 var36;
17768   orc_union16 var37;
17769   orc_union16 var38;
17770   orc_union16 var39;
17771   orc_int8 var40;
17772   orc_int8 var41;
17773 
17774   for (j = 0; j < m; j++) {
17775     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
17776     ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
17777     ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j);
17778     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
17779 
17780 
17781     for (i = 0; i < n; i++) {
17782       /* 0: loadl */
17783       var35 = ptr4[i];
17784       /* 1: splitwb */
17785       {
17786         orc_union16 _src;
17787         _src.i = var35.x2[0];
17788         var39.x2[0] = _src.x2[1];
17789         var36.x2[0] = _src.x2[0];
17790       }
17791       {
17792         orc_union16 _src;
17793         _src.i = var35.x2[1];
17794         var39.x2[1] = _src.x2[1];
17795         var36.x2[1] = _src.x2[0];
17796       }
17797       /* 2: storew */
17798       ptr0[i] = var36;
17799       /* 3: splitwb */
17800       {
17801         orc_union16 _src;
17802         _src.i = var39.i;
17803         var40 = _src.x2[1];
17804         var41 = _src.x2[0];
17805       }
17806       /* 4: splatbw */
17807       var37.i = ((var41 & 0xff) << 8) | (var41 & 0xff);
17808       /* 5: storew */
17809       ptr1[i] = var37;
17810       /* 6: splatbw */
17811       var38.i = ((var40 & 0xff) << 8) | (var40 & 0xff);
17812       /* 7: storew */
17813       ptr2[i] = var38;
17814     }
17815   }
17816 
17817 }
17818 
17819 void
video_orc_convert_YUY2_Y444(guint8 * ORC_RESTRICT d1,int d1_stride,guint8 * ORC_RESTRICT d2,int d2_stride,guint8 * ORC_RESTRICT d3,int d3_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,int n,int m)17820 video_orc_convert_YUY2_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride,
17821     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
17822     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
17823 {
17824   OrcExecutor _ex, *ex = &_ex;
17825   static volatile int p_inited = 0;
17826   static OrcCode *c = 0;
17827   void (*func) (OrcExecutor *);
17828 
17829   if (!p_inited) {
17830     orc_once_mutex_lock ();
17831     if (!p_inited) {
17832       OrcProgram *p;
17833 
17834 #if 1
17835       static const orc_uint8 bc[] = {
17836         1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
17837         110, 118, 101, 114, 116, 95, 89, 85, 89, 50, 95, 89, 52, 52, 52, 11,
17838         2, 2, 11, 2, 2, 11, 2, 2, 12, 4, 4, 20, 2, 20, 1, 20,
17839         1, 21, 1, 199, 32, 0, 4, 199, 34, 33, 32, 151, 1, 33, 151, 2,
17840         34, 2, 0,
17841       };
17842       p = orc_program_new_from_static_bytecode (bc);
17843       orc_program_set_backup_function (p, _backup_video_orc_convert_YUY2_Y444);
17844 #else
17845       p = orc_program_new ();
17846       orc_program_set_2d (p);
17847       orc_program_set_name (p, "video_orc_convert_YUY2_Y444");
17848       orc_program_set_backup_function (p, _backup_video_orc_convert_YUY2_Y444);
17849       orc_program_add_destination (p, 2, "d1");
17850       orc_program_add_destination (p, 2, "d2");
17851       orc_program_add_destination (p, 2, "d3");
17852       orc_program_add_source (p, 4, "s1");
17853       orc_program_add_temporary (p, 2, "t1");
17854       orc_program_add_temporary (p, 1, "t2");
17855       orc_program_add_temporary (p, 1, "t3");
17856 
17857       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_S1,
17858           ORC_VAR_D1);
17859       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_T1,
17860           ORC_VAR_D1);
17861       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_D1,
17862           ORC_VAR_D1);
17863       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_D3, ORC_VAR_T3, ORC_VAR_D1,
17864           ORC_VAR_D1);
17865 #endif
17866 
17867       orc_program_compile (p);
17868       c = orc_program_take_code (p);
17869       orc_program_free (p);
17870     }
17871     p_inited = TRUE;
17872     orc_once_mutex_unlock ();
17873   }
17874   ex->arrays[ORC_VAR_A2] = c;
17875   ex->program = 0;
17876 
17877   ex->n = n;
17878   ORC_EXECUTOR_M (ex) = m;
17879   ex->arrays[ORC_VAR_D1] = d1;
17880   ex->params[ORC_VAR_D1] = d1_stride;
17881   ex->arrays[ORC_VAR_D2] = d2;
17882   ex->params[ORC_VAR_D2] = d2_stride;
17883   ex->arrays[ORC_VAR_D3] = d3;
17884   ex->params[ORC_VAR_D3] = d3_stride;
17885   ex->arrays[ORC_VAR_S1] = (void *) s1;
17886   ex->params[ORC_VAR_S1] = s1_stride;
17887 
17888   func = c->exec;
17889   func (ex);
17890 }
17891 #endif
17892 
17893 
17894 /* video_orc_convert_UYVY_Y444 */
17895 #ifdef DISABLE_ORC
17896 void
video_orc_convert_UYVY_Y444(guint8 * ORC_RESTRICT d1,int d1_stride,guint8 * ORC_RESTRICT d2,int d2_stride,guint8 * ORC_RESTRICT d3,int d3_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,int n,int m)17897 video_orc_convert_UYVY_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride,
17898     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
17899     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
17900 {
17901   int i;
17902   int j;
17903   orc_union16 *ORC_RESTRICT ptr0;
17904   orc_union16 *ORC_RESTRICT ptr1;
17905   orc_union16 *ORC_RESTRICT ptr2;
17906   const orc_union32 *ORC_RESTRICT ptr4;
17907   orc_union32 var35;
17908   orc_union16 var36;
17909   orc_union16 var37;
17910   orc_union16 var38;
17911   orc_union16 var39;
17912   orc_int8 var40;
17913   orc_int8 var41;
17914 
17915   for (j = 0; j < m; j++) {
17916     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
17917     ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
17918     ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j);
17919     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
17920 
17921 
17922     for (i = 0; i < n; i++) {
17923       /* 0: loadl */
17924       var35 = ptr4[i];
17925       /* 1: splitwb */
17926       {
17927         orc_union16 _src;
17928         _src.i = var35.x2[0];
17929         var36.x2[0] = _src.x2[1];
17930         var39.x2[0] = _src.x2[0];
17931       }
17932       {
17933         orc_union16 _src;
17934         _src.i = var35.x2[1];
17935         var36.x2[1] = _src.x2[1];
17936         var39.x2[1] = _src.x2[0];
17937       }
17938       /* 2: storew */
17939       ptr0[i] = var36;
17940       /* 3: splitwb */
17941       {
17942         orc_union16 _src;
17943         _src.i = var39.i;
17944         var40 = _src.x2[1];
17945         var41 = _src.x2[0];
17946       }
17947       /* 4: splatbw */
17948       var37.i = ((var41 & 0xff) << 8) | (var41 & 0xff);
17949       /* 5: storew */
17950       ptr1[i] = var37;
17951       /* 6: splatbw */
17952       var38.i = ((var40 & 0xff) << 8) | (var40 & 0xff);
17953       /* 7: storew */
17954       ptr2[i] = var38;
17955     }
17956   }
17957 
17958 }
17959 
17960 #else
17961 static void
_backup_video_orc_convert_UYVY_Y444(OrcExecutor * ORC_RESTRICT ex)17962 _backup_video_orc_convert_UYVY_Y444 (OrcExecutor * ORC_RESTRICT ex)
17963 {
17964   int i;
17965   int j;
17966   int n = ex->n;
17967   int m = ex->params[ORC_VAR_A1];
17968   orc_union16 *ORC_RESTRICT ptr0;
17969   orc_union16 *ORC_RESTRICT ptr1;
17970   orc_union16 *ORC_RESTRICT ptr2;
17971   const orc_union32 *ORC_RESTRICT ptr4;
17972   orc_union32 var35;
17973   orc_union16 var36;
17974   orc_union16 var37;
17975   orc_union16 var38;
17976   orc_union16 var39;
17977   orc_int8 var40;
17978   orc_int8 var41;
17979 
17980   for (j = 0; j < m; j++) {
17981     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
17982     ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
17983     ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j);
17984     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
17985 
17986 
17987     for (i = 0; i < n; i++) {
17988       /* 0: loadl */
17989       var35 = ptr4[i];
17990       /* 1: splitwb */
17991       {
17992         orc_union16 _src;
17993         _src.i = var35.x2[0];
17994         var36.x2[0] = _src.x2[1];
17995         var39.x2[0] = _src.x2[0];
17996       }
17997       {
17998         orc_union16 _src;
17999         _src.i = var35.x2[1];
18000         var36.x2[1] = _src.x2[1];
18001         var39.x2[1] = _src.x2[0];
18002       }
18003       /* 2: storew */
18004       ptr0[i] = var36;
18005       /* 3: splitwb */
18006       {
18007         orc_union16 _src;
18008         _src.i = var39.i;
18009         var40 = _src.x2[1];
18010         var41 = _src.x2[0];
18011       }
18012       /* 4: splatbw */
18013       var37.i = ((var41 & 0xff) << 8) | (var41 & 0xff);
18014       /* 5: storew */
18015       ptr1[i] = var37;
18016       /* 6: splatbw */
18017       var38.i = ((var40 & 0xff) << 8) | (var40 & 0xff);
18018       /* 7: storew */
18019       ptr2[i] = var38;
18020     }
18021   }
18022 
18023 }
18024 
18025 void
video_orc_convert_UYVY_Y444(guint8 * ORC_RESTRICT d1,int d1_stride,guint8 * ORC_RESTRICT d2,int d2_stride,guint8 * ORC_RESTRICT d3,int d3_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,int n,int m)18026 video_orc_convert_UYVY_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride,
18027     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
18028     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
18029 {
18030   OrcExecutor _ex, *ex = &_ex;
18031   static volatile int p_inited = 0;
18032   static OrcCode *c = 0;
18033   void (*func) (OrcExecutor *);
18034 
18035   if (!p_inited) {
18036     orc_once_mutex_lock ();
18037     if (!p_inited) {
18038       OrcProgram *p;
18039 
18040 #if 1
18041       static const orc_uint8 bc[] = {
18042         1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
18043         110, 118, 101, 114, 116, 95, 85, 89, 86, 89, 95, 89, 52, 52, 52, 11,
18044         2, 2, 11, 2, 2, 11, 2, 2, 12, 4, 4, 20, 2, 20, 1, 20,
18045         1, 21, 1, 199, 0, 32, 4, 199, 34, 33, 32, 151, 1, 33, 151, 2,
18046         34, 2, 0,
18047       };
18048       p = orc_program_new_from_static_bytecode (bc);
18049       orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_Y444);
18050 #else
18051       p = orc_program_new ();
18052       orc_program_set_2d (p);
18053       orc_program_set_name (p, "video_orc_convert_UYVY_Y444");
18054       orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_Y444);
18055       orc_program_add_destination (p, 2, "d1");
18056       orc_program_add_destination (p, 2, "d2");
18057       orc_program_add_destination (p, 2, "d3");
18058       orc_program_add_source (p, 4, "s1");
18059       orc_program_add_temporary (p, 2, "t1");
18060       orc_program_add_temporary (p, 1, "t2");
18061       orc_program_add_temporary (p, 1, "t3");
18062 
18063       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1,
18064           ORC_VAR_D1);
18065       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_T1,
18066           ORC_VAR_D1);
18067       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_D1,
18068           ORC_VAR_D1);
18069       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_D3, ORC_VAR_T3, ORC_VAR_D1,
18070           ORC_VAR_D1);
18071 #endif
18072 
18073       orc_program_compile (p);
18074       c = orc_program_take_code (p);
18075       orc_program_free (p);
18076     }
18077     p_inited = TRUE;
18078     orc_once_mutex_unlock ();
18079   }
18080   ex->arrays[ORC_VAR_A2] = c;
18081   ex->program = 0;
18082 
18083   ex->n = n;
18084   ORC_EXECUTOR_M (ex) = m;
18085   ex->arrays[ORC_VAR_D1] = d1;
18086   ex->params[ORC_VAR_D1] = d1_stride;
18087   ex->arrays[ORC_VAR_D2] = d2;
18088   ex->params[ORC_VAR_D2] = d2_stride;
18089   ex->arrays[ORC_VAR_D3] = d3;
18090   ex->params[ORC_VAR_D3] = d3_stride;
18091   ex->arrays[ORC_VAR_S1] = (void *) s1;
18092   ex->params[ORC_VAR_S1] = s1_stride;
18093 
18094   func = c->exec;
18095   func (ex);
18096 }
18097 #endif
18098 
18099 
18100 /* video_orc_convert_UYVY_I420 */
18101 #ifdef DISABLE_ORC
18102 void
video_orc_convert_UYVY_I420(guint8 * ORC_RESTRICT d1,guint8 * ORC_RESTRICT d2,guint8 * ORC_RESTRICT d3,guint8 * ORC_RESTRICT d4,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,int n)18103 video_orc_convert_UYVY_I420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
18104     guint8 * ORC_RESTRICT d3, guint8 * ORC_RESTRICT d4,
18105     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
18106 {
18107   int i;
18108   orc_union16 *ORC_RESTRICT ptr0;
18109   orc_union16 *ORC_RESTRICT ptr1;
18110   orc_int8 *ORC_RESTRICT ptr2;
18111   orc_int8 *ORC_RESTRICT ptr3;
18112   const orc_union32 *ORC_RESTRICT ptr4;
18113   const orc_union32 *ORC_RESTRICT ptr5;
18114   orc_union32 var35;
18115   orc_union32 var36;
18116   orc_int8 var37;
18117   orc_int8 var38;
18118   orc_union16 var39;
18119   orc_union16 var40;
18120   orc_union16 var41;
18121   orc_union16 var42;
18122   orc_union16 var43;
18123 
18124   ptr0 = (orc_union16 *) d1;
18125   ptr1 = (orc_union16 *) d2;
18126   ptr2 = (orc_int8 *) d3;
18127   ptr3 = (orc_int8 *) d4;
18128   ptr4 = (orc_union32 *) s1;
18129   ptr5 = (orc_union32 *) s2;
18130 
18131 
18132   for (i = 0; i < n; i++) {
18133     /* 0: loadl */
18134     var35 = ptr4[i];
18135     /* 1: splitwb */
18136     {
18137       orc_union16 _src;
18138       _src.i = var35.x2[0];
18139       var39.x2[0] = _src.x2[1];
18140       var40.x2[0] = _src.x2[0];
18141     }
18142     {
18143       orc_union16 _src;
18144       _src.i = var35.x2[1];
18145       var39.x2[1] = _src.x2[1];
18146       var40.x2[1] = _src.x2[0];
18147     }
18148     /* 2: storew */
18149     ptr0[i] = var39;
18150     /* 3: loadl */
18151     var36 = ptr5[i];
18152     /* 4: splitwb */
18153     {
18154       orc_union16 _src;
18155       _src.i = var36.x2[0];
18156       var41.x2[0] = _src.x2[1];
18157       var42.x2[0] = _src.x2[0];
18158     }
18159     {
18160       orc_union16 _src;
18161       _src.i = var36.x2[1];
18162       var41.x2[1] = _src.x2[1];
18163       var42.x2[1] = _src.x2[0];
18164     }
18165     /* 5: storew */
18166     ptr1[i] = var41;
18167     /* 6: avgub */
18168     var43.x2[0] = ((orc_uint8) var40.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
18169     var43.x2[1] = ((orc_uint8) var40.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
18170     /* 7: splitwb */
18171     {
18172       orc_union16 _src;
18173       _src.i = var43.i;
18174       var37 = _src.x2[1];
18175       var38 = _src.x2[0];
18176     }
18177     /* 8: storeb */
18178     ptr3[i] = var37;
18179     /* 9: storeb */
18180     ptr2[i] = var38;
18181   }
18182 
18183 }
18184 
18185 #else
18186 static void
_backup_video_orc_convert_UYVY_I420(OrcExecutor * ORC_RESTRICT ex)18187 _backup_video_orc_convert_UYVY_I420 (OrcExecutor * ORC_RESTRICT ex)
18188 {
18189   int i;
18190   int n = ex->n;
18191   orc_union16 *ORC_RESTRICT ptr0;
18192   orc_union16 *ORC_RESTRICT ptr1;
18193   orc_int8 *ORC_RESTRICT ptr2;
18194   orc_int8 *ORC_RESTRICT ptr3;
18195   const orc_union32 *ORC_RESTRICT ptr4;
18196   const orc_union32 *ORC_RESTRICT ptr5;
18197   orc_union32 var35;
18198   orc_union32 var36;
18199   orc_int8 var37;
18200   orc_int8 var38;
18201   orc_union16 var39;
18202   orc_union16 var40;
18203   orc_union16 var41;
18204   orc_union16 var42;
18205   orc_union16 var43;
18206 
18207   ptr0 = (orc_union16 *) ex->arrays[0];
18208   ptr1 = (orc_union16 *) ex->arrays[1];
18209   ptr2 = (orc_int8 *) ex->arrays[2];
18210   ptr3 = (orc_int8 *) ex->arrays[3];
18211   ptr4 = (orc_union32 *) ex->arrays[4];
18212   ptr5 = (orc_union32 *) ex->arrays[5];
18213 
18214 
18215   for (i = 0; i < n; i++) {
18216     /* 0: loadl */
18217     var35 = ptr4[i];
18218     /* 1: splitwb */
18219     {
18220       orc_union16 _src;
18221       _src.i = var35.x2[0];
18222       var39.x2[0] = _src.x2[1];
18223       var40.x2[0] = _src.x2[0];
18224     }
18225     {
18226       orc_union16 _src;
18227       _src.i = var35.x2[1];
18228       var39.x2[1] = _src.x2[1];
18229       var40.x2[1] = _src.x2[0];
18230     }
18231     /* 2: storew */
18232     ptr0[i] = var39;
18233     /* 3: loadl */
18234     var36 = ptr5[i];
18235     /* 4: splitwb */
18236     {
18237       orc_union16 _src;
18238       _src.i = var36.x2[0];
18239       var41.x2[0] = _src.x2[1];
18240       var42.x2[0] = _src.x2[0];
18241     }
18242     {
18243       orc_union16 _src;
18244       _src.i = var36.x2[1];
18245       var41.x2[1] = _src.x2[1];
18246       var42.x2[1] = _src.x2[0];
18247     }
18248     /* 5: storew */
18249     ptr1[i] = var41;
18250     /* 6: avgub */
18251     var43.x2[0] = ((orc_uint8) var40.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
18252     var43.x2[1] = ((orc_uint8) var40.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
18253     /* 7: splitwb */
18254     {
18255       orc_union16 _src;
18256       _src.i = var43.i;
18257       var37 = _src.x2[1];
18258       var38 = _src.x2[0];
18259     }
18260     /* 8: storeb */
18261     ptr3[i] = var37;
18262     /* 9: storeb */
18263     ptr2[i] = var38;
18264   }
18265 
18266 }
18267 
18268 void
video_orc_convert_UYVY_I420(guint8 * ORC_RESTRICT d1,guint8 * ORC_RESTRICT d2,guint8 * ORC_RESTRICT d3,guint8 * ORC_RESTRICT d4,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,int n)18269 video_orc_convert_UYVY_I420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
18270     guint8 * ORC_RESTRICT d3, guint8 * ORC_RESTRICT d4,
18271     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
18272 {
18273   OrcExecutor _ex, *ex = &_ex;
18274   static volatile int p_inited = 0;
18275   static OrcCode *c = 0;
18276   void (*func) (OrcExecutor *);
18277 
18278   if (!p_inited) {
18279     orc_once_mutex_lock ();
18280     if (!p_inited) {
18281       OrcProgram *p;
18282 
18283 #if 1
18284       static const orc_uint8 bc[] = {
18285         1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, 110,
18286         118, 101, 114, 116, 95, 85, 89, 86, 89, 95, 73, 52, 50, 48, 11, 2,
18287         2, 11, 2, 2, 11, 1, 1, 11, 1, 1, 12, 4, 4, 12, 4, 4,
18288         20, 2, 20, 2, 20, 2, 21, 1, 199, 34, 32, 4, 97, 0, 34, 21,
18289         1, 199, 34, 33, 5, 97, 1, 34, 21, 1, 39, 32, 32, 33, 199, 3,
18290         2, 32, 2, 0,
18291       };
18292       p = orc_program_new_from_static_bytecode (bc);
18293       orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_I420);
18294 #else
18295       p = orc_program_new ();
18296       orc_program_set_name (p, "video_orc_convert_UYVY_I420");
18297       orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_I420);
18298       orc_program_add_destination (p, 2, "d1");
18299       orc_program_add_destination (p, 2, "d2");
18300       orc_program_add_destination (p, 1, "d3");
18301       orc_program_add_destination (p, 1, "d4");
18302       orc_program_add_source (p, 4, "s1");
18303       orc_program_add_source (p, 4, "s2");
18304       orc_program_add_temporary (p, 2, "t1");
18305       orc_program_add_temporary (p, 2, "t2");
18306       orc_program_add_temporary (p, 2, "t3");
18307 
18308       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_S1,
18309           ORC_VAR_D1);
18310       orc_program_append_2 (p, "storew", 0, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_D1,
18311           ORC_VAR_D1);
18312       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_S2,
18313           ORC_VAR_D1);
18314       orc_program_append_2 (p, "storew", 0, ORC_VAR_D2, ORC_VAR_T3, ORC_VAR_D1,
18315           ORC_VAR_D1);
18316       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
18317           ORC_VAR_D1);
18318       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D4, ORC_VAR_D3, ORC_VAR_T1,
18319           ORC_VAR_D1);
18320 #endif
18321 
18322       orc_program_compile (p);
18323       c = orc_program_take_code (p);
18324       orc_program_free (p);
18325     }
18326     p_inited = TRUE;
18327     orc_once_mutex_unlock ();
18328   }
18329   ex->arrays[ORC_VAR_A2] = c;
18330   ex->program = 0;
18331 
18332   ex->n = n;
18333   ex->arrays[ORC_VAR_D1] = d1;
18334   ex->arrays[ORC_VAR_D2] = d2;
18335   ex->arrays[ORC_VAR_D3] = d3;
18336   ex->arrays[ORC_VAR_D4] = d4;
18337   ex->arrays[ORC_VAR_S1] = (void *) s1;
18338   ex->arrays[ORC_VAR_S2] = (void *) s2;
18339 
18340   func = c->exec;
18341   func (ex);
18342 }
18343 #endif
18344 
18345 
18346 /* video_orc_convert_AYUV_I420 */
18347 #ifdef DISABLE_ORC
18348 void
video_orc_convert_AYUV_I420(guint8 * ORC_RESTRICT d1,int d1_stride,guint8 * ORC_RESTRICT d2,int d2_stride,guint8 * ORC_RESTRICT d3,int d3_stride,guint8 * ORC_RESTRICT d4,int d4_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,const guint8 * ORC_RESTRICT s2,int s2_stride,int n,int m)18349 video_orc_convert_AYUV_I420 (guint8 * ORC_RESTRICT d1, int d1_stride,
18350     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
18351     int d3_stride, guint8 * ORC_RESTRICT d4, int d4_stride,
18352     const guint8 * ORC_RESTRICT s1, int s1_stride,
18353     const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m)
18354 {
18355   int i;
18356   int j;
18357   orc_union16 *ORC_RESTRICT ptr0;
18358   orc_union16 *ORC_RESTRICT ptr1;
18359   orc_int8 *ORC_RESTRICT ptr2;
18360   orc_int8 *ORC_RESTRICT ptr3;
18361   const orc_union64 *ORC_RESTRICT ptr4;
18362   const orc_union64 *ORC_RESTRICT ptr5;
18363   orc_union64 var40;
18364   orc_union16 var41;
18365   orc_union64 var42;
18366   orc_union16 var43;
18367   orc_int8 var44;
18368   orc_int8 var45;
18369   orc_union32 var46;
18370   orc_union32 var47;
18371   orc_union32 var48;
18372   orc_union32 var49;
18373   orc_union32 var50;
18374   orc_union16 var51;
18375   orc_union16 var52;
18376   orc_int8 var53;
18377   orc_int8 var54;
18378   orc_int8 var55;
18379   orc_int8 var56;
18380 
18381   for (j = 0; j < m; j++) {
18382     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
18383     ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
18384     ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j);
18385     ptr3 = ORC_PTR_OFFSET (d4, d4_stride * j);
18386     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
18387     ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
18388 
18389 
18390     for (i = 0; i < n; i++) {
18391       /* 0: loadq */
18392       var40 = ptr4[i];
18393       /* 1: splitlw */
18394       {
18395         orc_union32 _src;
18396         _src.i = var40.x2[0];
18397         var46.x2[0] = _src.x2[1];
18398         var47.x2[0] = _src.x2[0];
18399       }
18400       {
18401         orc_union32 _src;
18402         _src.i = var40.x2[1];
18403         var46.x2[1] = _src.x2[1];
18404         var47.x2[1] = _src.x2[0];
18405       }
18406       /* 2: select1wb */
18407       {
18408         orc_union16 _src;
18409         _src.i = var47.x2[0];
18410         var41.x2[0] = _src.x2[1];
18411       }
18412       {
18413         orc_union16 _src;
18414         _src.i = var47.x2[1];
18415         var41.x2[1] = _src.x2[1];
18416       }
18417       /* 3: storew */
18418       ptr0[i] = var41;
18419       /* 4: loadq */
18420       var42 = ptr5[i];
18421       /* 5: splitlw */
18422       {
18423         orc_union32 _src;
18424         _src.i = var42.x2[0];
18425         var48.x2[0] = _src.x2[1];
18426         var49.x2[0] = _src.x2[0];
18427       }
18428       {
18429         orc_union32 _src;
18430         _src.i = var42.x2[1];
18431         var48.x2[1] = _src.x2[1];
18432         var49.x2[1] = _src.x2[0];
18433       }
18434       /* 6: select1wb */
18435       {
18436         orc_union16 _src;
18437         _src.i = var49.x2[0];
18438         var43.x2[0] = _src.x2[1];
18439       }
18440       {
18441         orc_union16 _src;
18442         _src.i = var49.x2[1];
18443         var43.x2[1] = _src.x2[1];
18444       }
18445       /* 7: storew */
18446       ptr1[i] = var43;
18447       /* 8: avgub */
18448       var50.x4[0] =
18449           ((orc_uint8) var46.x4[0] + (orc_uint8) var48.x4[0] + 1) >> 1;
18450       var50.x4[1] =
18451           ((orc_uint8) var46.x4[1] + (orc_uint8) var48.x4[1] + 1) >> 1;
18452       var50.x4[2] =
18453           ((orc_uint8) var46.x4[2] + (orc_uint8) var48.x4[2] + 1) >> 1;
18454       var50.x4[3] =
18455           ((orc_uint8) var46.x4[3] + (orc_uint8) var48.x4[3] + 1) >> 1;
18456       /* 9: splitwb */
18457       {
18458         orc_union16 _src;
18459         _src.i = var50.x2[0];
18460         var51.x2[0] = _src.x2[1];
18461         var52.x2[0] = _src.x2[0];
18462       }
18463       {
18464         orc_union16 _src;
18465         _src.i = var50.x2[1];
18466         var51.x2[1] = _src.x2[1];
18467         var52.x2[1] = _src.x2[0];
18468       }
18469       /* 10: splitwb */
18470       {
18471         orc_union16 _src;
18472         _src.i = var52.i;
18473         var53 = _src.x2[1];
18474         var54 = _src.x2[0];
18475       }
18476       /* 11: avgub */
18477       var44 = ((orc_uint8) var53 + (orc_uint8) var54 + 1) >> 1;
18478       /* 12: storeb */
18479       ptr2[i] = var44;
18480       /* 13: splitwb */
18481       {
18482         orc_union16 _src;
18483         _src.i = var51.i;
18484         var55 = _src.x2[1];
18485         var56 = _src.x2[0];
18486       }
18487       /* 14: avgub */
18488       var45 = ((orc_uint8) var55 + (orc_uint8) var56 + 1) >> 1;
18489       /* 15: storeb */
18490       ptr3[i] = var45;
18491     }
18492   }
18493 
18494 }
18495 
18496 #else
18497 static void
_backup_video_orc_convert_AYUV_I420(OrcExecutor * ORC_RESTRICT ex)18498 _backup_video_orc_convert_AYUV_I420 (OrcExecutor * ORC_RESTRICT ex)
18499 {
18500   int i;
18501   int j;
18502   int n = ex->n;
18503   int m = ex->params[ORC_VAR_A1];
18504   orc_union16 *ORC_RESTRICT ptr0;
18505   orc_union16 *ORC_RESTRICT ptr1;
18506   orc_int8 *ORC_RESTRICT ptr2;
18507   orc_int8 *ORC_RESTRICT ptr3;
18508   const orc_union64 *ORC_RESTRICT ptr4;
18509   const orc_union64 *ORC_RESTRICT ptr5;
18510   orc_union64 var40;
18511   orc_union16 var41;
18512   orc_union64 var42;
18513   orc_union16 var43;
18514   orc_int8 var44;
18515   orc_int8 var45;
18516   orc_union32 var46;
18517   orc_union32 var47;
18518   orc_union32 var48;
18519   orc_union32 var49;
18520   orc_union32 var50;
18521   orc_union16 var51;
18522   orc_union16 var52;
18523   orc_int8 var53;
18524   orc_int8 var54;
18525   orc_int8 var55;
18526   orc_int8 var56;
18527 
18528   for (j = 0; j < m; j++) {
18529     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
18530     ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
18531     ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j);
18532     ptr3 = ORC_PTR_OFFSET (ex->arrays[3], ex->params[3] * j);
18533     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
18534     ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
18535 
18536 
18537     for (i = 0; i < n; i++) {
18538       /* 0: loadq */
18539       var40 = ptr4[i];
18540       /* 1: splitlw */
18541       {
18542         orc_union32 _src;
18543         _src.i = var40.x2[0];
18544         var46.x2[0] = _src.x2[1];
18545         var47.x2[0] = _src.x2[0];
18546       }
18547       {
18548         orc_union32 _src;
18549         _src.i = var40.x2[1];
18550         var46.x2[1] = _src.x2[1];
18551         var47.x2[1] = _src.x2[0];
18552       }
18553       /* 2: select1wb */
18554       {
18555         orc_union16 _src;
18556         _src.i = var47.x2[0];
18557         var41.x2[0] = _src.x2[1];
18558       }
18559       {
18560         orc_union16 _src;
18561         _src.i = var47.x2[1];
18562         var41.x2[1] = _src.x2[1];
18563       }
18564       /* 3: storew */
18565       ptr0[i] = var41;
18566       /* 4: loadq */
18567       var42 = ptr5[i];
18568       /* 5: splitlw */
18569       {
18570         orc_union32 _src;
18571         _src.i = var42.x2[0];
18572         var48.x2[0] = _src.x2[1];
18573         var49.x2[0] = _src.x2[0];
18574       }
18575       {
18576         orc_union32 _src;
18577         _src.i = var42.x2[1];
18578         var48.x2[1] = _src.x2[1];
18579         var49.x2[1] = _src.x2[0];
18580       }
18581       /* 6: select1wb */
18582       {
18583         orc_union16 _src;
18584         _src.i = var49.x2[0];
18585         var43.x2[0] = _src.x2[1];
18586       }
18587       {
18588         orc_union16 _src;
18589         _src.i = var49.x2[1];
18590         var43.x2[1] = _src.x2[1];
18591       }
18592       /* 7: storew */
18593       ptr1[i] = var43;
18594       /* 8: avgub */
18595       var50.x4[0] =
18596           ((orc_uint8) var46.x4[0] + (orc_uint8) var48.x4[0] + 1) >> 1;
18597       var50.x4[1] =
18598           ((orc_uint8) var46.x4[1] + (orc_uint8) var48.x4[1] + 1) >> 1;
18599       var50.x4[2] =
18600           ((orc_uint8) var46.x4[2] + (orc_uint8) var48.x4[2] + 1) >> 1;
18601       var50.x4[3] =
18602           ((orc_uint8) var46.x4[3] + (orc_uint8) var48.x4[3] + 1) >> 1;
18603       /* 9: splitwb */
18604       {
18605         orc_union16 _src;
18606         _src.i = var50.x2[0];
18607         var51.x2[0] = _src.x2[1];
18608         var52.x2[0] = _src.x2[0];
18609       }
18610       {
18611         orc_union16 _src;
18612         _src.i = var50.x2[1];
18613         var51.x2[1] = _src.x2[1];
18614         var52.x2[1] = _src.x2[0];
18615       }
18616       /* 10: splitwb */
18617       {
18618         orc_union16 _src;
18619         _src.i = var52.i;
18620         var53 = _src.x2[1];
18621         var54 = _src.x2[0];
18622       }
18623       /* 11: avgub */
18624       var44 = ((orc_uint8) var53 + (orc_uint8) var54 + 1) >> 1;
18625       /* 12: storeb */
18626       ptr2[i] = var44;
18627       /* 13: splitwb */
18628       {
18629         orc_union16 _src;
18630         _src.i = var51.i;
18631         var55 = _src.x2[1];
18632         var56 = _src.x2[0];
18633       }
18634       /* 14: avgub */
18635       var45 = ((orc_uint8) var55 + (orc_uint8) var56 + 1) >> 1;
18636       /* 15: storeb */
18637       ptr3[i] = var45;
18638     }
18639   }
18640 
18641 }
18642 
18643 void
video_orc_convert_AYUV_I420(guint8 * ORC_RESTRICT d1,int d1_stride,guint8 * ORC_RESTRICT d2,int d2_stride,guint8 * ORC_RESTRICT d3,int d3_stride,guint8 * ORC_RESTRICT d4,int d4_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,const guint8 * ORC_RESTRICT s2,int s2_stride,int n,int m)18644 video_orc_convert_AYUV_I420 (guint8 * ORC_RESTRICT d1, int d1_stride,
18645     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
18646     int d3_stride, guint8 * ORC_RESTRICT d4, int d4_stride,
18647     const guint8 * ORC_RESTRICT s1, int s1_stride,
18648     const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m)
18649 {
18650   OrcExecutor _ex, *ex = &_ex;
18651   static volatile int p_inited = 0;
18652   static OrcCode *c = 0;
18653   void (*func) (OrcExecutor *);
18654 
18655   if (!p_inited) {
18656     orc_once_mutex_lock ();
18657     if (!p_inited) {
18658       OrcProgram *p;
18659 
18660 #if 1
18661       static const orc_uint8 bc[] = {
18662         1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
18663         110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 73, 52, 50, 48, 11,
18664         2, 2, 11, 2, 2, 11, 1, 1, 11, 1, 1, 12, 8, 8, 12, 8,
18665         8, 20, 4, 20, 4, 20, 4, 20, 4, 20, 2, 20, 2, 20, 1, 20,
18666         1, 21, 1, 198, 33, 32, 4, 21, 1, 189, 0, 32, 21, 1, 198, 34,
18667         32, 5, 21, 1, 189, 1, 32, 21, 2, 39, 35, 33, 34, 21, 1, 199,
18668         37, 36, 35, 199, 38, 39, 36, 39, 2, 38, 39, 199, 38, 39, 37, 39,
18669         3, 38, 39, 2, 0,
18670       };
18671       p = orc_program_new_from_static_bytecode (bc);
18672       orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_I420);
18673 #else
18674       p = orc_program_new ();
18675       orc_program_set_2d (p);
18676       orc_program_set_name (p, "video_orc_convert_AYUV_I420");
18677       orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_I420);
18678       orc_program_add_destination (p, 2, "d1");
18679       orc_program_add_destination (p, 2, "d2");
18680       orc_program_add_destination (p, 1, "d3");
18681       orc_program_add_destination (p, 1, "d4");
18682       orc_program_add_source (p, 8, "s1");
18683       orc_program_add_source (p, 8, "s2");
18684       orc_program_add_temporary (p, 4, "t1");
18685       orc_program_add_temporary (p, 4, "t2");
18686       orc_program_add_temporary (p, 4, "t3");
18687       orc_program_add_temporary (p, 4, "t4");
18688       orc_program_add_temporary (p, 2, "t5");
18689       orc_program_add_temporary (p, 2, "t6");
18690       orc_program_add_temporary (p, 1, "t7");
18691       orc_program_add_temporary (p, 1, "t8");
18692 
18693       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
18694           ORC_VAR_D1);
18695       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
18696           ORC_VAR_D1, ORC_VAR_D1);
18697       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_S2,
18698           ORC_VAR_D1);
18699       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D2, ORC_VAR_T1,
18700           ORC_VAR_D1, ORC_VAR_D1);
18701       orc_program_append_2 (p, "avgub", 2, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T3,
18702           ORC_VAR_D1);
18703       orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_T4,
18704           ORC_VAR_D1);
18705       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T7, ORC_VAR_T8, ORC_VAR_T5,
18706           ORC_VAR_D1);
18707       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D3, ORC_VAR_T7, ORC_VAR_T8,
18708           ORC_VAR_D1);
18709       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T7, ORC_VAR_T8, ORC_VAR_T6,
18710           ORC_VAR_D1);
18711       orc_program_append_2 (p, "avgub", 0, ORC_VAR_D4, ORC_VAR_T7, ORC_VAR_T8,
18712           ORC_VAR_D1);
18713 #endif
18714 
18715       orc_program_compile (p);
18716       c = orc_program_take_code (p);
18717       orc_program_free (p);
18718     }
18719     p_inited = TRUE;
18720     orc_once_mutex_unlock ();
18721   }
18722   ex->arrays[ORC_VAR_A2] = c;
18723   ex->program = 0;
18724 
18725   ex->n = n;
18726   ORC_EXECUTOR_M (ex) = m;
18727   ex->arrays[ORC_VAR_D1] = d1;
18728   ex->params[ORC_VAR_D1] = d1_stride;
18729   ex->arrays[ORC_VAR_D2] = d2;
18730   ex->params[ORC_VAR_D2] = d2_stride;
18731   ex->arrays[ORC_VAR_D3] = d3;
18732   ex->params[ORC_VAR_D3] = d3_stride;
18733   ex->arrays[ORC_VAR_D4] = d4;
18734   ex->params[ORC_VAR_D4] = d4_stride;
18735   ex->arrays[ORC_VAR_S1] = (void *) s1;
18736   ex->params[ORC_VAR_S1] = s1_stride;
18737   ex->arrays[ORC_VAR_S2] = (void *) s2;
18738   ex->params[ORC_VAR_S2] = s2_stride;
18739 
18740   func = c->exec;
18741   func (ex);
18742 }
18743 #endif
18744 
18745 
18746 /* video_orc_convert_AYUV_YUY2 */
18747 #ifdef DISABLE_ORC
18748 void
video_orc_convert_AYUV_YUY2(guint8 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,int n,int m)18749 video_orc_convert_AYUV_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
18750     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
18751 {
18752   int i;
18753   int j;
18754   orc_union32 *ORC_RESTRICT ptr0;
18755   const orc_union64 *ORC_RESTRICT ptr4;
18756   orc_union64 var37;
18757   orc_union32 var38;
18758   orc_union32 var39;
18759   orc_union32 var40;
18760   orc_union16 var41;
18761   orc_union16 var42;
18762   orc_union16 var43;
18763   orc_union16 var44;
18764 
18765   for (j = 0; j < m; j++) {
18766     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
18767     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
18768 
18769 
18770     for (i = 0; i < n; i++) {
18771       /* 0: loadq */
18772       var37 = ptr4[i];
18773       /* 1: splitlw */
18774       {
18775         orc_union32 _src;
18776         _src.i = var37.x2[0];
18777         var39.x2[0] = _src.x2[1];
18778         var40.x2[0] = _src.x2[0];
18779       }
18780       {
18781         orc_union32 _src;
18782         _src.i = var37.x2[1];
18783         var39.x2[1] = _src.x2[1];
18784         var40.x2[1] = _src.x2[0];
18785       }
18786       /* 2: splitlw */
18787       {
18788         orc_union32 _src;
18789         _src.i = var39.i;
18790         var41.i = _src.x2[1];
18791         var42.i = _src.x2[0];
18792       }
18793       /* 3: avgub */
18794       var43.x2[0] =
18795           ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
18796       var43.x2[1] =
18797           ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
18798       /* 4: select1wb */
18799       {
18800         orc_union16 _src;
18801         _src.i = var40.x2[0];
18802         var44.x2[0] = _src.x2[1];
18803       }
18804       {
18805         orc_union16 _src;
18806         _src.i = var40.x2[1];
18807         var44.x2[1] = _src.x2[1];
18808       }
18809       /* 5: mergebw */
18810       {
18811         orc_union16 _dest;
18812         _dest.x2[0] = var44.x2[0];
18813         _dest.x2[1] = var43.x2[0];
18814         var38.x2[0] = _dest.i;
18815       }
18816       {
18817         orc_union16 _dest;
18818         _dest.x2[0] = var44.x2[1];
18819         _dest.x2[1] = var43.x2[1];
18820         var38.x2[1] = _dest.i;
18821       }
18822       /* 6: storel */
18823       ptr0[i] = var38;
18824     }
18825   }
18826 
18827 }
18828 
18829 #else
18830 static void
_backup_video_orc_convert_AYUV_YUY2(OrcExecutor * ORC_RESTRICT ex)18831 _backup_video_orc_convert_AYUV_YUY2 (OrcExecutor * ORC_RESTRICT ex)
18832 {
18833   int i;
18834   int j;
18835   int n = ex->n;
18836   int m = ex->params[ORC_VAR_A1];
18837   orc_union32 *ORC_RESTRICT ptr0;
18838   const orc_union64 *ORC_RESTRICT ptr4;
18839   orc_union64 var37;
18840   orc_union32 var38;
18841   orc_union32 var39;
18842   orc_union32 var40;
18843   orc_union16 var41;
18844   orc_union16 var42;
18845   orc_union16 var43;
18846   orc_union16 var44;
18847 
18848   for (j = 0; j < m; j++) {
18849     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
18850     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
18851 
18852 
18853     for (i = 0; i < n; i++) {
18854       /* 0: loadq */
18855       var37 = ptr4[i];
18856       /* 1: splitlw */
18857       {
18858         orc_union32 _src;
18859         _src.i = var37.x2[0];
18860         var39.x2[0] = _src.x2[1];
18861         var40.x2[0] = _src.x2[0];
18862       }
18863       {
18864         orc_union32 _src;
18865         _src.i = var37.x2[1];
18866         var39.x2[1] = _src.x2[1];
18867         var40.x2[1] = _src.x2[0];
18868       }
18869       /* 2: splitlw */
18870       {
18871         orc_union32 _src;
18872         _src.i = var39.i;
18873         var41.i = _src.x2[1];
18874         var42.i = _src.x2[0];
18875       }
18876       /* 3: avgub */
18877       var43.x2[0] =
18878           ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
18879       var43.x2[1] =
18880           ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
18881       /* 4: select1wb */
18882       {
18883         orc_union16 _src;
18884         _src.i = var40.x2[0];
18885         var44.x2[0] = _src.x2[1];
18886       }
18887       {
18888         orc_union16 _src;
18889         _src.i = var40.x2[1];
18890         var44.x2[1] = _src.x2[1];
18891       }
18892       /* 5: mergebw */
18893       {
18894         orc_union16 _dest;
18895         _dest.x2[0] = var44.x2[0];
18896         _dest.x2[1] = var43.x2[0];
18897         var38.x2[0] = _dest.i;
18898       }
18899       {
18900         orc_union16 _dest;
18901         _dest.x2[0] = var44.x2[1];
18902         _dest.x2[1] = var43.x2[1];
18903         var38.x2[1] = _dest.i;
18904       }
18905       /* 6: storel */
18906       ptr0[i] = var38;
18907     }
18908   }
18909 
18910 }
18911 
18912 void
video_orc_convert_AYUV_YUY2(guint8 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,int n,int m)18913 video_orc_convert_AYUV_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
18914     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
18915 {
18916   OrcExecutor _ex, *ex = &_ex;
18917   static volatile int p_inited = 0;
18918   static OrcCode *c = 0;
18919   void (*func) (OrcExecutor *);
18920 
18921   if (!p_inited) {
18922     orc_once_mutex_lock ();
18923     if (!p_inited) {
18924       OrcProgram *p;
18925 
18926 #if 1
18927       static const orc_uint8 bc[] = {
18928         1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
18929         110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 89, 85, 89, 50, 11,
18930         4, 4, 12, 8, 8, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, 21,
18931         1, 198, 36, 35, 4, 198, 33, 34, 36, 21, 1, 39, 33, 33, 34, 21,
18932         1, 189, 32, 35, 21, 1, 196, 0, 32, 33, 2, 0,
18933       };
18934       p = orc_program_new_from_static_bytecode (bc);
18935       orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_YUY2);
18936 #else
18937       p = orc_program_new ();
18938       orc_program_set_2d (p);
18939       orc_program_set_name (p, "video_orc_convert_AYUV_YUY2");
18940       orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_YUY2);
18941       orc_program_add_destination (p, 4, "d1");
18942       orc_program_add_source (p, 8, "s1");
18943       orc_program_add_temporary (p, 2, "t1");
18944       orc_program_add_temporary (p, 2, "t2");
18945       orc_program_add_temporary (p, 2, "t3");
18946       orc_program_add_temporary (p, 4, "t4");
18947       orc_program_add_temporary (p, 4, "t5");
18948 
18949       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_S1,
18950           ORC_VAR_D1);
18951       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T5,
18952           ORC_VAR_D1);
18953       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3,
18954           ORC_VAR_D1);
18955       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T4,
18956           ORC_VAR_D1, ORC_VAR_D1);
18957       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
18958           ORC_VAR_D1);
18959 #endif
18960 
18961       orc_program_compile (p);
18962       c = orc_program_take_code (p);
18963       orc_program_free (p);
18964     }
18965     p_inited = TRUE;
18966     orc_once_mutex_unlock ();
18967   }
18968   ex->arrays[ORC_VAR_A2] = c;
18969   ex->program = 0;
18970 
18971   ex->n = n;
18972   ORC_EXECUTOR_M (ex) = m;
18973   ex->arrays[ORC_VAR_D1] = d1;
18974   ex->params[ORC_VAR_D1] = d1_stride;
18975   ex->arrays[ORC_VAR_S1] = (void *) s1;
18976   ex->params[ORC_VAR_S1] = s1_stride;
18977 
18978   func = c->exec;
18979   func (ex);
18980 }
18981 #endif
18982 
18983 
18984 /* video_orc_convert_AYUV_UYVY */
18985 #ifdef DISABLE_ORC
18986 void
video_orc_convert_AYUV_UYVY(guint8 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,int n,int m)18987 video_orc_convert_AYUV_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
18988     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
18989 {
18990   int i;
18991   int j;
18992   orc_union32 *ORC_RESTRICT ptr0;
18993   const orc_union64 *ORC_RESTRICT ptr4;
18994   orc_union64 var37;
18995   orc_union32 var38;
18996   orc_union32 var39;
18997   orc_union32 var40;
18998   orc_union16 var41;
18999   orc_union16 var42;
19000   orc_union16 var43;
19001   orc_union16 var44;
19002 
19003   for (j = 0; j < m; j++) {
19004     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
19005     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
19006 
19007 
19008     for (i = 0; i < n; i++) {
19009       /* 0: loadq */
19010       var37 = ptr4[i];
19011       /* 1: splitlw */
19012       {
19013         orc_union32 _src;
19014         _src.i = var37.x2[0];
19015         var39.x2[0] = _src.x2[1];
19016         var40.x2[0] = _src.x2[0];
19017       }
19018       {
19019         orc_union32 _src;
19020         _src.i = var37.x2[1];
19021         var39.x2[1] = _src.x2[1];
19022         var40.x2[1] = _src.x2[0];
19023       }
19024       /* 2: splitlw */
19025       {
19026         orc_union32 _src;
19027         _src.i = var39.i;
19028         var41.i = _src.x2[1];
19029         var42.i = _src.x2[0];
19030       }
19031       /* 3: avgub */
19032       var43.x2[0] =
19033           ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
19034       var43.x2[1] =
19035           ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
19036       /* 4: select1wb */
19037       {
19038         orc_union16 _src;
19039         _src.i = var40.x2[0];
19040         var44.x2[0] = _src.x2[1];
19041       }
19042       {
19043         orc_union16 _src;
19044         _src.i = var40.x2[1];
19045         var44.x2[1] = _src.x2[1];
19046       }
19047       /* 5: mergebw */
19048       {
19049         orc_union16 _dest;
19050         _dest.x2[0] = var43.x2[0];
19051         _dest.x2[1] = var44.x2[0];
19052         var38.x2[0] = _dest.i;
19053       }
19054       {
19055         orc_union16 _dest;
19056         _dest.x2[0] = var43.x2[1];
19057         _dest.x2[1] = var44.x2[1];
19058         var38.x2[1] = _dest.i;
19059       }
19060       /* 6: storel */
19061       ptr0[i] = var38;
19062     }
19063   }
19064 
19065 }
19066 
19067 #else
19068 static void
_backup_video_orc_convert_AYUV_UYVY(OrcExecutor * ORC_RESTRICT ex)19069 _backup_video_orc_convert_AYUV_UYVY (OrcExecutor * ORC_RESTRICT ex)
19070 {
19071   int i;
19072   int j;
19073   int n = ex->n;
19074   int m = ex->params[ORC_VAR_A1];
19075   orc_union32 *ORC_RESTRICT ptr0;
19076   const orc_union64 *ORC_RESTRICT ptr4;
19077   orc_union64 var37;
19078   orc_union32 var38;
19079   orc_union32 var39;
19080   orc_union32 var40;
19081   orc_union16 var41;
19082   orc_union16 var42;
19083   orc_union16 var43;
19084   orc_union16 var44;
19085 
19086   for (j = 0; j < m; j++) {
19087     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
19088     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
19089 
19090 
19091     for (i = 0; i < n; i++) {
19092       /* 0: loadq */
19093       var37 = ptr4[i];
19094       /* 1: splitlw */
19095       {
19096         orc_union32 _src;
19097         _src.i = var37.x2[0];
19098         var39.x2[0] = _src.x2[1];
19099         var40.x2[0] = _src.x2[0];
19100       }
19101       {
19102         orc_union32 _src;
19103         _src.i = var37.x2[1];
19104         var39.x2[1] = _src.x2[1];
19105         var40.x2[1] = _src.x2[0];
19106       }
19107       /* 2: splitlw */
19108       {
19109         orc_union32 _src;
19110         _src.i = var39.i;
19111         var41.i = _src.x2[1];
19112         var42.i = _src.x2[0];
19113       }
19114       /* 3: avgub */
19115       var43.x2[0] =
19116           ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
19117       var43.x2[1] =
19118           ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
19119       /* 4: select1wb */
19120       {
19121         orc_union16 _src;
19122         _src.i = var40.x2[0];
19123         var44.x2[0] = _src.x2[1];
19124       }
19125       {
19126         orc_union16 _src;
19127         _src.i = var40.x2[1];
19128         var44.x2[1] = _src.x2[1];
19129       }
19130       /* 5: mergebw */
19131       {
19132         orc_union16 _dest;
19133         _dest.x2[0] = var43.x2[0];
19134         _dest.x2[1] = var44.x2[0];
19135         var38.x2[0] = _dest.i;
19136       }
19137       {
19138         orc_union16 _dest;
19139         _dest.x2[0] = var43.x2[1];
19140         _dest.x2[1] = var44.x2[1];
19141         var38.x2[1] = _dest.i;
19142       }
19143       /* 6: storel */
19144       ptr0[i] = var38;
19145     }
19146   }
19147 
19148 }
19149 
19150 void
video_orc_convert_AYUV_UYVY(guint8 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,int n,int m)19151 video_orc_convert_AYUV_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
19152     const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
19153 {
19154   OrcExecutor _ex, *ex = &_ex;
19155   static volatile int p_inited = 0;
19156   static OrcCode *c = 0;
19157   void (*func) (OrcExecutor *);
19158 
19159   if (!p_inited) {
19160     orc_once_mutex_lock ();
19161     if (!p_inited) {
19162       OrcProgram *p;
19163 
19164 #if 1
19165       static const orc_uint8 bc[] = {
19166         1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
19167         110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 85, 89, 86, 89, 11,
19168         4, 4, 12, 8, 8, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, 21,
19169         1, 198, 36, 35, 4, 198, 33, 34, 36, 21, 1, 39, 33, 33, 34, 21,
19170         1, 189, 32, 35, 21, 1, 196, 0, 33, 32, 2, 0,
19171       };
19172       p = orc_program_new_from_static_bytecode (bc);
19173       orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_UYVY);
19174 #else
19175       p = orc_program_new ();
19176       orc_program_set_2d (p);
19177       orc_program_set_name (p, "video_orc_convert_AYUV_UYVY");
19178       orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_UYVY);
19179       orc_program_add_destination (p, 4, "d1");
19180       orc_program_add_source (p, 8, "s1");
19181       orc_program_add_temporary (p, 2, "t1");
19182       orc_program_add_temporary (p, 2, "t2");
19183       orc_program_add_temporary (p, 2, "t3");
19184       orc_program_add_temporary (p, 4, "t4");
19185       orc_program_add_temporary (p, 4, "t5");
19186 
19187       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_S1,
19188           ORC_VAR_D1);
19189       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T5,
19190           ORC_VAR_D1);
19191       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3,
19192           ORC_VAR_D1);
19193       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T4,
19194           ORC_VAR_D1, ORC_VAR_D1);
19195       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
19196           ORC_VAR_D1);
19197 #endif
19198 
19199       orc_program_compile (p);
19200       c = orc_program_take_code (p);
19201       orc_program_free (p);
19202     }
19203     p_inited = TRUE;
19204     orc_once_mutex_unlock ();
19205   }
19206   ex->arrays[ORC_VAR_A2] = c;
19207   ex->program = 0;
19208 
19209   ex->n = n;
19210   ORC_EXECUTOR_M (ex) = m;
19211   ex->arrays[ORC_VAR_D1] = d1;
19212   ex->params[ORC_VAR_D1] = d1_stride;
19213   ex->arrays[ORC_VAR_S1] = (void *) s1;
19214   ex->params[ORC_VAR_S1] = s1_stride;
19215 
19216   func = c->exec;
19217   func (ex);
19218 }
19219 #endif
19220 
19221 
19222 /* video_orc_convert_AYUV_Y42B */
19223 #ifdef DISABLE_ORC
19224 void
video_orc_convert_AYUV_Y42B(guint8 * ORC_RESTRICT d1,int d1_stride,guint8 * ORC_RESTRICT d2,int d2_stride,guint8 * ORC_RESTRICT d3,int d3_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,int n,int m)19225 video_orc_convert_AYUV_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride,
19226     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
19227     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
19228 {
19229   int i;
19230   int j;
19231   orc_union16 *ORC_RESTRICT ptr0;
19232   orc_int8 *ORC_RESTRICT ptr1;
19233   orc_int8 *ORC_RESTRICT ptr2;
19234   const orc_union64 *ORC_RESTRICT ptr4;
19235   orc_union64 var36;
19236   orc_int8 var37;
19237   orc_int8 var38;
19238   orc_union16 var39;
19239   orc_union32 var40;
19240   orc_union32 var41;
19241   orc_union16 var42;
19242   orc_union16 var43;
19243   orc_union16 var44;
19244 
19245   for (j = 0; j < m; j++) {
19246     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
19247     ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
19248     ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j);
19249     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
19250 
19251 
19252     for (i = 0; i < n; i++) {
19253       /* 0: loadq */
19254       var36 = ptr4[i];
19255       /* 1: splitlw */
19256       {
19257         orc_union32 _src;
19258         _src.i = var36.x2[0];
19259         var40.x2[0] = _src.x2[1];
19260         var41.x2[0] = _src.x2[0];
19261       }
19262       {
19263         orc_union32 _src;
19264         _src.i = var36.x2[1];
19265         var40.x2[1] = _src.x2[1];
19266         var41.x2[1] = _src.x2[0];
19267       }
19268       /* 2: splitlw */
19269       {
19270         orc_union32 _src;
19271         _src.i = var40.i;
19272         var42.i = _src.x2[1];
19273         var43.i = _src.x2[0];
19274       }
19275       /* 3: avgub */
19276       var44.x2[0] =
19277           ((orc_uint8) var42.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1;
19278       var44.x2[1] =
19279           ((orc_uint8) var42.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1;
19280       /* 4: splitwb */
19281       {
19282         orc_union16 _src;
19283         _src.i = var44.i;
19284         var37 = _src.x2[1];
19285         var38 = _src.x2[0];
19286       }
19287       /* 5: storeb */
19288       ptr2[i] = var37;
19289       /* 6: storeb */
19290       ptr1[i] = var38;
19291       /* 7: select1wb */
19292       {
19293         orc_union16 _src;
19294         _src.i = var41.x2[0];
19295         var39.x2[0] = _src.x2[1];
19296       }
19297       {
19298         orc_union16 _src;
19299         _src.i = var41.x2[1];
19300         var39.x2[1] = _src.x2[1];
19301       }
19302       /* 8: storew */
19303       ptr0[i] = var39;
19304     }
19305   }
19306 
19307 }
19308 
19309 #else
19310 static void
_backup_video_orc_convert_AYUV_Y42B(OrcExecutor * ORC_RESTRICT ex)19311 _backup_video_orc_convert_AYUV_Y42B (OrcExecutor * ORC_RESTRICT ex)
19312 {
19313   int i;
19314   int j;
19315   int n = ex->n;
19316   int m = ex->params[ORC_VAR_A1];
19317   orc_union16 *ORC_RESTRICT ptr0;
19318   orc_int8 *ORC_RESTRICT ptr1;
19319   orc_int8 *ORC_RESTRICT ptr2;
19320   const orc_union64 *ORC_RESTRICT ptr4;
19321   orc_union64 var36;
19322   orc_int8 var37;
19323   orc_int8 var38;
19324   orc_union16 var39;
19325   orc_union32 var40;
19326   orc_union32 var41;
19327   orc_union16 var42;
19328   orc_union16 var43;
19329   orc_union16 var44;
19330 
19331   for (j = 0; j < m; j++) {
19332     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
19333     ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
19334     ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j);
19335     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
19336 
19337 
19338     for (i = 0; i < n; i++) {
19339       /* 0: loadq */
19340       var36 = ptr4[i];
19341       /* 1: splitlw */
19342       {
19343         orc_union32 _src;
19344         _src.i = var36.x2[0];
19345         var40.x2[0] = _src.x2[1];
19346         var41.x2[0] = _src.x2[0];
19347       }
19348       {
19349         orc_union32 _src;
19350         _src.i = var36.x2[1];
19351         var40.x2[1] = _src.x2[1];
19352         var41.x2[1] = _src.x2[0];
19353       }
19354       /* 2: splitlw */
19355       {
19356         orc_union32 _src;
19357         _src.i = var40.i;
19358         var42.i = _src.x2[1];
19359         var43.i = _src.x2[0];
19360       }
19361       /* 3: avgub */
19362       var44.x2[0] =
19363           ((orc_uint8) var42.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1;
19364       var44.x2[1] =
19365           ((orc_uint8) var42.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1;
19366       /* 4: splitwb */
19367       {
19368         orc_union16 _src;
19369         _src.i = var44.i;
19370         var37 = _src.x2[1];
19371         var38 = _src.x2[0];
19372       }
19373       /* 5: storeb */
19374       ptr2[i] = var37;
19375       /* 6: storeb */
19376       ptr1[i] = var38;
19377       /* 7: select1wb */
19378       {
19379         orc_union16 _src;
19380         _src.i = var41.x2[0];
19381         var39.x2[0] = _src.x2[1];
19382       }
19383       {
19384         orc_union16 _src;
19385         _src.i = var41.x2[1];
19386         var39.x2[1] = _src.x2[1];
19387       }
19388       /* 8: storew */
19389       ptr0[i] = var39;
19390     }
19391   }
19392 
19393 }
19394 
19395 void
video_orc_convert_AYUV_Y42B(guint8 * ORC_RESTRICT d1,int d1_stride,guint8 * ORC_RESTRICT d2,int d2_stride,guint8 * ORC_RESTRICT d3,int d3_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,int n,int m)19396 video_orc_convert_AYUV_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride,
19397     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
19398     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
19399 {
19400   OrcExecutor _ex, *ex = &_ex;
19401   static volatile int p_inited = 0;
19402   static OrcCode *c = 0;
19403   void (*func) (OrcExecutor *);
19404 
19405   if (!p_inited) {
19406     orc_once_mutex_lock ();
19407     if (!p_inited) {
19408       OrcProgram *p;
19409 
19410 #if 1
19411       static const orc_uint8 bc[] = {
19412         1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
19413         110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 89, 52, 50, 66, 11,
19414         2, 2, 11, 1, 1, 11, 1, 1, 12, 8, 8, 20, 4, 20, 4, 20,
19415         2, 20, 2, 21, 1, 198, 33, 32, 4, 198, 34, 35, 33, 21, 1, 39,
19416         34, 34, 35, 199, 2, 1, 34, 21, 1, 189, 0, 32, 2, 0,
19417       };
19418       p = orc_program_new_from_static_bytecode (bc);
19419       orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_Y42B);
19420 #else
19421       p = orc_program_new ();
19422       orc_program_set_2d (p);
19423       orc_program_set_name (p, "video_orc_convert_AYUV_Y42B");
19424       orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_Y42B);
19425       orc_program_add_destination (p, 2, "d1");
19426       orc_program_add_destination (p, 1, "d2");
19427       orc_program_add_destination (p, 1, "d3");
19428       orc_program_add_source (p, 8, "s1");
19429       orc_program_add_temporary (p, 4, "t1");
19430       orc_program_add_temporary (p, 4, "t2");
19431       orc_program_add_temporary (p, 2, "t3");
19432       orc_program_add_temporary (p, 2, "t4");
19433 
19434       orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
19435           ORC_VAR_D1);
19436       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2,
19437           ORC_VAR_D1);
19438       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4,
19439           ORC_VAR_D1);
19440       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T3,
19441           ORC_VAR_D1);
19442       orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
19443           ORC_VAR_D1, ORC_VAR_D1);
19444 #endif
19445 
19446       orc_program_compile (p);
19447       c = orc_program_take_code (p);
19448       orc_program_free (p);
19449     }
19450     p_inited = TRUE;
19451     orc_once_mutex_unlock ();
19452   }
19453   ex->arrays[ORC_VAR_A2] = c;
19454   ex->program = 0;
19455 
19456   ex->n = n;
19457   ORC_EXECUTOR_M (ex) = m;
19458   ex->arrays[ORC_VAR_D1] = d1;
19459   ex->params[ORC_VAR_D1] = d1_stride;
19460   ex->arrays[ORC_VAR_D2] = d2;
19461   ex->params[ORC_VAR_D2] = d2_stride;
19462   ex->arrays[ORC_VAR_D3] = d3;
19463   ex->params[ORC_VAR_D3] = d3_stride;
19464   ex->arrays[ORC_VAR_S1] = (void *) s1;
19465   ex->params[ORC_VAR_S1] = s1_stride;
19466 
19467   func = c->exec;
19468   func (ex);
19469 }
19470 #endif
19471 
19472 
19473 /* video_orc_convert_AYUV_Y444 */
19474 #ifdef DISABLE_ORC
19475 void
video_orc_convert_AYUV_Y444(guint8 * ORC_RESTRICT d1,int d1_stride,guint8 * ORC_RESTRICT d2,int d2_stride,guint8 * ORC_RESTRICT d3,int d3_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,int n,int m)19476 video_orc_convert_AYUV_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride,
19477     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
19478     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
19479 {
19480   int i;
19481   int j;
19482   orc_int8 *ORC_RESTRICT ptr0;
19483   orc_int8 *ORC_RESTRICT ptr1;
19484   orc_int8 *ORC_RESTRICT ptr2;
19485   const orc_union32 *ORC_RESTRICT ptr4;
19486   orc_union32 var34;
19487   orc_int8 var35;
19488   orc_int8 var36;
19489   orc_int8 var37;
19490   orc_union16 var38;
19491   orc_union16 var39;
19492 
19493   for (j = 0; j < m; j++) {
19494     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
19495     ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
19496     ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j);
19497     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
19498 
19499 
19500     for (i = 0; i < n; i++) {
19501       /* 0: loadl */
19502       var34 = ptr4[i];
19503       /* 1: splitlw */
19504       {
19505         orc_union32 _src;
19506         _src.i = var34.i;
19507         var38.i = _src.x2[1];
19508         var39.i = _src.x2[0];
19509       }
19510       /* 2: splitwb */
19511       {
19512         orc_union16 _src;
19513         _src.i = var38.i;
19514         var35 = _src.x2[1];
19515         var36 = _src.x2[0];
19516       }
19517       /* 3: storeb */
19518       ptr2[i] = var35;
19519       /* 4: storeb */
19520       ptr1[i] = var36;
19521       /* 5: select1wb */
19522       {
19523         orc_union16 _src;
19524         _src.i = var39.i;
19525         var37 = _src.x2[1];
19526       }
19527       /* 6: storeb */
19528       ptr0[i] = var37;
19529     }
19530   }
19531 
19532 }
19533 
19534 #else
19535 static void
_backup_video_orc_convert_AYUV_Y444(OrcExecutor * ORC_RESTRICT ex)19536 _backup_video_orc_convert_AYUV_Y444 (OrcExecutor * ORC_RESTRICT ex)
19537 {
19538   int i;
19539   int j;
19540   int n = ex->n;
19541   int m = ex->params[ORC_VAR_A1];
19542   orc_int8 *ORC_RESTRICT ptr0;
19543   orc_int8 *ORC_RESTRICT ptr1;
19544   orc_int8 *ORC_RESTRICT ptr2;
19545   const orc_union32 *ORC_RESTRICT ptr4;
19546   orc_union32 var34;
19547   orc_int8 var35;
19548   orc_int8 var36;
19549   orc_int8 var37;
19550   orc_union16 var38;
19551   orc_union16 var39;
19552 
19553   for (j = 0; j < m; j++) {
19554     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
19555     ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
19556     ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j);
19557     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
19558 
19559 
19560     for (i = 0; i < n; i++) {
19561       /* 0: loadl */
19562       var34 = ptr4[i];
19563       /* 1: splitlw */
19564       {
19565         orc_union32 _src;
19566         _src.i = var34.i;
19567         var38.i = _src.x2[1];
19568         var39.i = _src.x2[0];
19569       }
19570       /* 2: splitwb */
19571       {
19572         orc_union16 _src;
19573         _src.i = var38.i;
19574         var35 = _src.x2[1];
19575         var36 = _src.x2[0];
19576       }
19577       /* 3: storeb */
19578       ptr2[i] = var35;
19579       /* 4: storeb */
19580       ptr1[i] = var36;
19581       /* 5: select1wb */
19582       {
19583         orc_union16 _src;
19584         _src.i = var39.i;
19585         var37 = _src.x2[1];
19586       }
19587       /* 6: storeb */
19588       ptr0[i] = var37;
19589     }
19590   }
19591 
19592 }
19593 
19594 void
video_orc_convert_AYUV_Y444(guint8 * ORC_RESTRICT d1,int d1_stride,guint8 * ORC_RESTRICT d2,int d2_stride,guint8 * ORC_RESTRICT d3,int d3_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,int n,int m)19595 video_orc_convert_AYUV_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride,
19596     guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
19597     int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
19598 {
19599   OrcExecutor _ex, *ex = &_ex;
19600   static volatile int p_inited = 0;
19601   static OrcCode *c = 0;
19602   void (*func) (OrcExecutor *);
19603 
19604   if (!p_inited) {
19605     orc_once_mutex_lock ();
19606     if (!p_inited) {
19607       OrcProgram *p;
19608 
19609 #if 1
19610       static const orc_uint8 bc[] = {
19611         1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
19612         110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 89, 52, 52, 52, 11,
19613         1, 1, 11, 1, 1, 11, 1, 1, 12, 4, 4, 20, 2, 20, 2, 198,
19614         33, 32, 4, 199, 2, 1, 33, 189, 0, 32, 2, 0,
19615       };
19616       p = orc_program_new_from_static_bytecode (bc);
19617       orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_Y444);
19618 #else
19619       p = orc_program_new ();
19620       orc_program_set_2d (p);
19621       orc_program_set_name (p, "video_orc_convert_AYUV_Y444");
19622       orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_Y444);
19623       orc_program_add_destination (p, 1, "d1");
19624       orc_program_add_destination (p, 1, "d2");
19625       orc_program_add_destination (p, 1, "d3");
19626       orc_program_add_source (p, 4, "s1");
19627       orc_program_add_temporary (p, 2, "t1");
19628       orc_program_add_temporary (p, 2, "t2");
19629 
19630       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
19631           ORC_VAR_D1);
19632       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T2,
19633           ORC_VAR_D1);
19634       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1,
19635           ORC_VAR_D1, ORC_VAR_D1);
19636 #endif
19637 
19638       orc_program_compile (p);
19639       c = orc_program_take_code (p);
19640       orc_program_free (p);
19641     }
19642     p_inited = TRUE;
19643     orc_once_mutex_unlock ();
19644   }
19645   ex->arrays[ORC_VAR_A2] = c;
19646   ex->program = 0;
19647 
19648   ex->n = n;
19649   ORC_EXECUTOR_M (ex) = m;
19650   ex->arrays[ORC_VAR_D1] = d1;
19651   ex->params[ORC_VAR_D1] = d1_stride;
19652   ex->arrays[ORC_VAR_D2] = d2;
19653   ex->params[ORC_VAR_D2] = d2_stride;
19654   ex->arrays[ORC_VAR_D3] = d3;
19655   ex->params[ORC_VAR_D3] = d3_stride;
19656   ex->arrays[ORC_VAR_S1] = (void *) s1;
19657   ex->params[ORC_VAR_S1] = s1_stride;
19658 
19659   func = c->exec;
19660   func (ex);
19661 }
19662 #endif
19663 
19664 
19665 /* video_orc_convert_Y42B_YUY2 */
19666 #ifdef DISABLE_ORC
19667 void
video_orc_convert_Y42B_YUY2(guint8 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,const guint8 * ORC_RESTRICT s2,int s2_stride,const guint8 * ORC_RESTRICT s3,int s3_stride,int n,int m)19668 video_orc_convert_Y42B_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
19669     const guint8 * ORC_RESTRICT s1, int s1_stride,
19670     const guint8 * ORC_RESTRICT s2, int s2_stride,
19671     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
19672 {
19673   int i;
19674   int j;
19675   orc_union32 *ORC_RESTRICT ptr0;
19676   const orc_union16 *ORC_RESTRICT ptr4;
19677   const orc_int8 *ORC_RESTRICT ptr5;
19678   const orc_int8 *ORC_RESTRICT ptr6;
19679   orc_int8 var33;
19680   orc_int8 var34;
19681   orc_union16 var35;
19682   orc_union32 var36;
19683   orc_union16 var37;
19684 
19685   for (j = 0; j < m; j++) {
19686     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
19687     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
19688     ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
19689     ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j);
19690 
19691 
19692     for (i = 0; i < n; i++) {
19693       /* 0: loadb */
19694       var33 = ptr5[i];
19695       /* 1: loadb */
19696       var34 = ptr6[i];
19697       /* 2: mergebw */
19698       {
19699         orc_union16 _dest;
19700         _dest.x2[0] = var33;
19701         _dest.x2[1] = var34;
19702         var37.i = _dest.i;
19703       }
19704       /* 3: loadw */
19705       var35 = ptr4[i];
19706       /* 4: mergebw */
19707       {
19708         orc_union16 _dest;
19709         _dest.x2[0] = var35.x2[0];
19710         _dest.x2[1] = var37.x2[0];
19711         var36.x2[0] = _dest.i;
19712       }
19713       {
19714         orc_union16 _dest;
19715         _dest.x2[0] = var35.x2[1];
19716         _dest.x2[1] = var37.x2[1];
19717         var36.x2[1] = _dest.i;
19718       }
19719       /* 5: storel */
19720       ptr0[i] = var36;
19721     }
19722   }
19723 
19724 }
19725 
19726 #else
19727 static void
_backup_video_orc_convert_Y42B_YUY2(OrcExecutor * ORC_RESTRICT ex)19728 _backup_video_orc_convert_Y42B_YUY2 (OrcExecutor * ORC_RESTRICT ex)
19729 {
19730   int i;
19731   int j;
19732   int n = ex->n;
19733   int m = ex->params[ORC_VAR_A1];
19734   orc_union32 *ORC_RESTRICT ptr0;
19735   const orc_union16 *ORC_RESTRICT ptr4;
19736   const orc_int8 *ORC_RESTRICT ptr5;
19737   const orc_int8 *ORC_RESTRICT ptr6;
19738   orc_int8 var33;
19739   orc_int8 var34;
19740   orc_union16 var35;
19741   orc_union32 var36;
19742   orc_union16 var37;
19743 
19744   for (j = 0; j < m; j++) {
19745     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
19746     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
19747     ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
19748     ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j);
19749 
19750 
19751     for (i = 0; i < n; i++) {
19752       /* 0: loadb */
19753       var33 = ptr5[i];
19754       /* 1: loadb */
19755       var34 = ptr6[i];
19756       /* 2: mergebw */
19757       {
19758         orc_union16 _dest;
19759         _dest.x2[0] = var33;
19760         _dest.x2[1] = var34;
19761         var37.i = _dest.i;
19762       }
19763       /* 3: loadw */
19764       var35 = ptr4[i];
19765       /* 4: mergebw */
19766       {
19767         orc_union16 _dest;
19768         _dest.x2[0] = var35.x2[0];
19769         _dest.x2[1] = var37.x2[0];
19770         var36.x2[0] = _dest.i;
19771       }
19772       {
19773         orc_union16 _dest;
19774         _dest.x2[0] = var35.x2[1];
19775         _dest.x2[1] = var37.x2[1];
19776         var36.x2[1] = _dest.i;
19777       }
19778       /* 5: storel */
19779       ptr0[i] = var36;
19780     }
19781   }
19782 
19783 }
19784 
19785 void
video_orc_convert_Y42B_YUY2(guint8 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,const guint8 * ORC_RESTRICT s2,int s2_stride,const guint8 * ORC_RESTRICT s3,int s3_stride,int n,int m)19786 video_orc_convert_Y42B_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
19787     const guint8 * ORC_RESTRICT s1, int s1_stride,
19788     const guint8 * ORC_RESTRICT s2, int s2_stride,
19789     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
19790 {
19791   OrcExecutor _ex, *ex = &_ex;
19792   static volatile int p_inited = 0;
19793   static OrcCode *c = 0;
19794   void (*func) (OrcExecutor *);
19795 
19796   if (!p_inited) {
19797     orc_once_mutex_lock ();
19798     if (!p_inited) {
19799       OrcProgram *p;
19800 
19801 #if 1
19802       static const orc_uint8 bc[] = {
19803         1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
19804         110, 118, 101, 114, 116, 95, 89, 52, 50, 66, 95, 89, 85, 89, 50, 11,
19805         4, 4, 12, 2, 2, 12, 1, 1, 12, 1, 1, 20, 2, 196, 32, 5,
19806         6, 21, 1, 196, 0, 4, 32, 2, 0,
19807       };
19808       p = orc_program_new_from_static_bytecode (bc);
19809       orc_program_set_backup_function (p, _backup_video_orc_convert_Y42B_YUY2);
19810 #else
19811       p = orc_program_new ();
19812       orc_program_set_2d (p);
19813       orc_program_set_name (p, "video_orc_convert_Y42B_YUY2");
19814       orc_program_set_backup_function (p, _backup_video_orc_convert_Y42B_YUY2);
19815       orc_program_add_destination (p, 4, "d1");
19816       orc_program_add_source (p, 2, "s1");
19817       orc_program_add_source (p, 1, "s2");
19818       orc_program_add_source (p, 1, "s3");
19819       orc_program_add_temporary (p, 2, "t1");
19820 
19821       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3,
19822           ORC_VAR_D1);
19823       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1,
19824           ORC_VAR_D1);
19825 #endif
19826 
19827       orc_program_compile (p);
19828       c = orc_program_take_code (p);
19829       orc_program_free (p);
19830     }
19831     p_inited = TRUE;
19832     orc_once_mutex_unlock ();
19833   }
19834   ex->arrays[ORC_VAR_A2] = c;
19835   ex->program = 0;
19836 
19837   ex->n = n;
19838   ORC_EXECUTOR_M (ex) = m;
19839   ex->arrays[ORC_VAR_D1] = d1;
19840   ex->params[ORC_VAR_D1] = d1_stride;
19841   ex->arrays[ORC_VAR_S1] = (void *) s1;
19842   ex->params[ORC_VAR_S1] = s1_stride;
19843   ex->arrays[ORC_VAR_S2] = (void *) s2;
19844   ex->params[ORC_VAR_S2] = s2_stride;
19845   ex->arrays[ORC_VAR_S3] = (void *) s3;
19846   ex->params[ORC_VAR_S3] = s3_stride;
19847 
19848   func = c->exec;
19849   func (ex);
19850 }
19851 #endif
19852 
19853 
19854 /* video_orc_convert_Y42B_UYVY */
19855 #ifdef DISABLE_ORC
19856 void
video_orc_convert_Y42B_UYVY(guint8 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,const guint8 * ORC_RESTRICT s2,int s2_stride,const guint8 * ORC_RESTRICT s3,int s3_stride,int n,int m)19857 video_orc_convert_Y42B_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
19858     const guint8 * ORC_RESTRICT s1, int s1_stride,
19859     const guint8 * ORC_RESTRICT s2, int s2_stride,
19860     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
19861 {
19862   int i;
19863   int j;
19864   orc_union32 *ORC_RESTRICT ptr0;
19865   const orc_union16 *ORC_RESTRICT ptr4;
19866   const orc_int8 *ORC_RESTRICT ptr5;
19867   const orc_int8 *ORC_RESTRICT ptr6;
19868   orc_int8 var33;
19869   orc_int8 var34;
19870   orc_union16 var35;
19871   orc_union32 var36;
19872   orc_union16 var37;
19873 
19874   for (j = 0; j < m; j++) {
19875     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
19876     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
19877     ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
19878     ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j);
19879 
19880 
19881     for (i = 0; i < n; i++) {
19882       /* 0: loadb */
19883       var33 = ptr5[i];
19884       /* 1: loadb */
19885       var34 = ptr6[i];
19886       /* 2: mergebw */
19887       {
19888         orc_union16 _dest;
19889         _dest.x2[0] = var33;
19890         _dest.x2[1] = var34;
19891         var37.i = _dest.i;
19892       }
19893       /* 3: loadw */
19894       var35 = ptr4[i];
19895       /* 4: mergebw */
19896       {
19897         orc_union16 _dest;
19898         _dest.x2[0] = var37.x2[0];
19899         _dest.x2[1] = var35.x2[0];
19900         var36.x2[0] = _dest.i;
19901       }
19902       {
19903         orc_union16 _dest;
19904         _dest.x2[0] = var37.x2[1];
19905         _dest.x2[1] = var35.x2[1];
19906         var36.x2[1] = _dest.i;
19907       }
19908       /* 5: storel */
19909       ptr0[i] = var36;
19910     }
19911   }
19912 
19913 }
19914 
19915 #else
19916 static void
_backup_video_orc_convert_Y42B_UYVY(OrcExecutor * ORC_RESTRICT ex)19917 _backup_video_orc_convert_Y42B_UYVY (OrcExecutor * ORC_RESTRICT ex)
19918 {
19919   int i;
19920   int j;
19921   int n = ex->n;
19922   int m = ex->params[ORC_VAR_A1];
19923   orc_union32 *ORC_RESTRICT ptr0;
19924   const orc_union16 *ORC_RESTRICT ptr4;
19925   const orc_int8 *ORC_RESTRICT ptr5;
19926   const orc_int8 *ORC_RESTRICT ptr6;
19927   orc_int8 var33;
19928   orc_int8 var34;
19929   orc_union16 var35;
19930   orc_union32 var36;
19931   orc_union16 var37;
19932 
19933   for (j = 0; j < m; j++) {
19934     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
19935     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
19936     ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
19937     ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j);
19938 
19939 
19940     for (i = 0; i < n; i++) {
19941       /* 0: loadb */
19942       var33 = ptr5[i];
19943       /* 1: loadb */
19944       var34 = ptr6[i];
19945       /* 2: mergebw */
19946       {
19947         orc_union16 _dest;
19948         _dest.x2[0] = var33;
19949         _dest.x2[1] = var34;
19950         var37.i = _dest.i;
19951       }
19952       /* 3: loadw */
19953       var35 = ptr4[i];
19954       /* 4: mergebw */
19955       {
19956         orc_union16 _dest;
19957         _dest.x2[0] = var37.x2[0];
19958         _dest.x2[1] = var35.x2[0];
19959         var36.x2[0] = _dest.i;
19960       }
19961       {
19962         orc_union16 _dest;
19963         _dest.x2[0] = var37.x2[1];
19964         _dest.x2[1] = var35.x2[1];
19965         var36.x2[1] = _dest.i;
19966       }
19967       /* 5: storel */
19968       ptr0[i] = var36;
19969     }
19970   }
19971 
19972 }
19973 
19974 void
video_orc_convert_Y42B_UYVY(guint8 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,const guint8 * ORC_RESTRICT s2,int s2_stride,const guint8 * ORC_RESTRICT s3,int s3_stride,int n,int m)19975 video_orc_convert_Y42B_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
19976     const guint8 * ORC_RESTRICT s1, int s1_stride,
19977     const guint8 * ORC_RESTRICT s2, int s2_stride,
19978     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
19979 {
19980   OrcExecutor _ex, *ex = &_ex;
19981   static volatile int p_inited = 0;
19982   static OrcCode *c = 0;
19983   void (*func) (OrcExecutor *);
19984 
19985   if (!p_inited) {
19986     orc_once_mutex_lock ();
19987     if (!p_inited) {
19988       OrcProgram *p;
19989 
19990 #if 1
19991       static const orc_uint8 bc[] = {
19992         1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
19993         110, 118, 101, 114, 116, 95, 89, 52, 50, 66, 95, 85, 89, 86, 89, 11,
19994         4, 4, 12, 2, 2, 12, 1, 1, 12, 1, 1, 20, 2, 196, 32, 5,
19995         6, 21, 1, 196, 0, 32, 4, 2, 0,
19996       };
19997       p = orc_program_new_from_static_bytecode (bc);
19998       orc_program_set_backup_function (p, _backup_video_orc_convert_Y42B_UYVY);
19999 #else
20000       p = orc_program_new ();
20001       orc_program_set_2d (p);
20002       orc_program_set_name (p, "video_orc_convert_Y42B_UYVY");
20003       orc_program_set_backup_function (p, _backup_video_orc_convert_Y42B_UYVY);
20004       orc_program_add_destination (p, 4, "d1");
20005       orc_program_add_source (p, 2, "s1");
20006       orc_program_add_source (p, 1, "s2");
20007       orc_program_add_source (p, 1, "s3");
20008       orc_program_add_temporary (p, 2, "t1");
20009 
20010       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3,
20011           ORC_VAR_D1);
20012       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1,
20013           ORC_VAR_D1);
20014 #endif
20015 
20016       orc_program_compile (p);
20017       c = orc_program_take_code (p);
20018       orc_program_free (p);
20019     }
20020     p_inited = TRUE;
20021     orc_once_mutex_unlock ();
20022   }
20023   ex->arrays[ORC_VAR_A2] = c;
20024   ex->program = 0;
20025 
20026   ex->n = n;
20027   ORC_EXECUTOR_M (ex) = m;
20028   ex->arrays[ORC_VAR_D1] = d1;
20029   ex->params[ORC_VAR_D1] = d1_stride;
20030   ex->arrays[ORC_VAR_S1] = (void *) s1;
20031   ex->params[ORC_VAR_S1] = s1_stride;
20032   ex->arrays[ORC_VAR_S2] = (void *) s2;
20033   ex->params[ORC_VAR_S2] = s2_stride;
20034   ex->arrays[ORC_VAR_S3] = (void *) s3;
20035   ex->params[ORC_VAR_S3] = s3_stride;
20036 
20037   func = c->exec;
20038   func (ex);
20039 }
20040 #endif
20041 
20042 
20043 /* video_orc_convert_Y42B_AYUV */
20044 #ifdef DISABLE_ORC
20045 void
video_orc_convert_Y42B_AYUV(guint8 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,const guint8 * ORC_RESTRICT s2,int s2_stride,const guint8 * ORC_RESTRICT s3,int s3_stride,int p1,int n,int m)20046 video_orc_convert_Y42B_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
20047     const guint8 * ORC_RESTRICT s1, int s1_stride,
20048     const guint8 * ORC_RESTRICT s2, int s2_stride,
20049     const guint8 * ORC_RESTRICT s3, int s3_stride, int p1, int n, int m)
20050 {
20051   int i;
20052   int j;
20053   orc_union64 *ORC_RESTRICT ptr0;
20054   const orc_union16 *ORC_RESTRICT ptr4;
20055   const orc_int8 *ORC_RESTRICT ptr5;
20056   const orc_int8 *ORC_RESTRICT ptr6;
20057   orc_int8 var36;
20058   orc_int8 var37;
20059   orc_union16 var38;
20060   orc_union16 var39;
20061   orc_union64 var40;
20062   orc_union16 var41;
20063   orc_union32 var42;
20064   orc_union32 var43;
20065 
20066   for (j = 0; j < m; j++) {
20067     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
20068     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
20069     ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
20070     ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j);
20071 
20072     /* 3: loadpb */
20073     var38.x2[0] = p1;
20074     var38.x2[1] = p1;
20075 
20076     for (i = 0; i < n; i++) {
20077       /* 0: loadb */
20078       var36 = ptr5[i];
20079       /* 1: loadb */
20080       var37 = ptr6[i];
20081       /* 2: mergebw */
20082       {
20083         orc_union16 _dest;
20084         _dest.x2[0] = var36;
20085         _dest.x2[1] = var37;
20086         var41.i = _dest.i;
20087       }
20088       /* 4: loadw */
20089       var39 = ptr4[i];
20090       /* 5: mergebw */
20091       {
20092         orc_union16 _dest;
20093         _dest.x2[0] = var38.x2[0];
20094         _dest.x2[1] = var39.x2[0];
20095         var42.x2[0] = _dest.i;
20096       }
20097       {
20098         orc_union16 _dest;
20099         _dest.x2[0] = var38.x2[1];
20100         _dest.x2[1] = var39.x2[1];
20101         var42.x2[1] = _dest.i;
20102       }
20103       /* 6: mergewl */
20104       {
20105         orc_union32 _dest;
20106         _dest.x2[0] = var41.i;
20107         _dest.x2[1] = var41.i;
20108         var43.i = _dest.i;
20109       }
20110       /* 7: mergewl */
20111       {
20112         orc_union32 _dest;
20113         _dest.x2[0] = var42.x2[0];
20114         _dest.x2[1] = var43.x2[0];
20115         var40.x2[0] = _dest.i;
20116       }
20117       {
20118         orc_union32 _dest;
20119         _dest.x2[0] = var42.x2[1];
20120         _dest.x2[1] = var43.x2[1];
20121         var40.x2[1] = _dest.i;
20122       }
20123       /* 8: storeq */
20124       ptr0[i] = var40;
20125     }
20126   }
20127 
20128 }
20129 
20130 #else
20131 static void
_backup_video_orc_convert_Y42B_AYUV(OrcExecutor * ORC_RESTRICT ex)20132 _backup_video_orc_convert_Y42B_AYUV (OrcExecutor * ORC_RESTRICT ex)
20133 {
20134   int i;
20135   int j;
20136   int n = ex->n;
20137   int m = ex->params[ORC_VAR_A1];
20138   orc_union64 *ORC_RESTRICT ptr0;
20139   const orc_union16 *ORC_RESTRICT ptr4;
20140   const orc_int8 *ORC_RESTRICT ptr5;
20141   const orc_int8 *ORC_RESTRICT ptr6;
20142   orc_int8 var36;
20143   orc_int8 var37;
20144   orc_union16 var38;
20145   orc_union16 var39;
20146   orc_union64 var40;
20147   orc_union16 var41;
20148   orc_union32 var42;
20149   orc_union32 var43;
20150 
20151   for (j = 0; j < m; j++) {
20152     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
20153     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
20154     ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
20155     ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j);
20156 
20157     /* 3: loadpb */
20158     var38.x2[0] = ex->params[24];
20159     var38.x2[1] = ex->params[24];
20160 
20161     for (i = 0; i < n; i++) {
20162       /* 0: loadb */
20163       var36 = ptr5[i];
20164       /* 1: loadb */
20165       var37 = ptr6[i];
20166       /* 2: mergebw */
20167       {
20168         orc_union16 _dest;
20169         _dest.x2[0] = var36;
20170         _dest.x2[1] = var37;
20171         var41.i = _dest.i;
20172       }
20173       /* 4: loadw */
20174       var39 = ptr4[i];
20175       /* 5: mergebw */
20176       {
20177         orc_union16 _dest;
20178         _dest.x2[0] = var38.x2[0];
20179         _dest.x2[1] = var39.x2[0];
20180         var42.x2[0] = _dest.i;
20181       }
20182       {
20183         orc_union16 _dest;
20184         _dest.x2[0] = var38.x2[1];
20185         _dest.x2[1] = var39.x2[1];
20186         var42.x2[1] = _dest.i;
20187       }
20188       /* 6: mergewl */
20189       {
20190         orc_union32 _dest;
20191         _dest.x2[0] = var41.i;
20192         _dest.x2[1] = var41.i;
20193         var43.i = _dest.i;
20194       }
20195       /* 7: mergewl */
20196       {
20197         orc_union32 _dest;
20198         _dest.x2[0] = var42.x2[0];
20199         _dest.x2[1] = var43.x2[0];
20200         var40.x2[0] = _dest.i;
20201       }
20202       {
20203         orc_union32 _dest;
20204         _dest.x2[0] = var42.x2[1];
20205         _dest.x2[1] = var43.x2[1];
20206         var40.x2[1] = _dest.i;
20207       }
20208       /* 8: storeq */
20209       ptr0[i] = var40;
20210     }
20211   }
20212 
20213 }
20214 
20215 void
video_orc_convert_Y42B_AYUV(guint8 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,const guint8 * ORC_RESTRICT s2,int s2_stride,const guint8 * ORC_RESTRICT s3,int s3_stride,int p1,int n,int m)20216 video_orc_convert_Y42B_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
20217     const guint8 * ORC_RESTRICT s1, int s1_stride,
20218     const guint8 * ORC_RESTRICT s2, int s2_stride,
20219     const guint8 * ORC_RESTRICT s3, int s3_stride, int p1, int n, int m)
20220 {
20221   OrcExecutor _ex, *ex = &_ex;
20222   static volatile int p_inited = 0;
20223   static OrcCode *c = 0;
20224   void (*func) (OrcExecutor *);
20225 
20226   if (!p_inited) {
20227     orc_once_mutex_lock ();
20228     if (!p_inited) {
20229       OrcProgram *p;
20230 
20231 #if 1
20232       static const orc_uint8 bc[] = {
20233         1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
20234         110, 118, 101, 114, 116, 95, 89, 52, 50, 66, 95, 65, 89, 85, 86, 11,
20235         8, 8, 12, 2, 2, 12, 1, 1, 12, 1, 1, 16, 1, 20, 2, 20,
20236         2, 20, 4, 20, 4, 196, 32, 5, 6, 21, 1, 196, 35, 24, 4, 195,
20237         34, 32, 32, 21, 1, 195, 0, 35, 34, 2, 0,
20238       };
20239       p = orc_program_new_from_static_bytecode (bc);
20240       orc_program_set_backup_function (p, _backup_video_orc_convert_Y42B_AYUV);
20241 #else
20242       p = orc_program_new ();
20243       orc_program_set_2d (p);
20244       orc_program_set_name (p, "video_orc_convert_Y42B_AYUV");
20245       orc_program_set_backup_function (p, _backup_video_orc_convert_Y42B_AYUV);
20246       orc_program_add_destination (p, 8, "d1");
20247       orc_program_add_source (p, 2, "s1");
20248       orc_program_add_source (p, 1, "s2");
20249       orc_program_add_source (p, 1, "s3");
20250       orc_program_add_parameter (p, 1, "p1");
20251       orc_program_add_temporary (p, 2, "t1");
20252       orc_program_add_temporary (p, 2, "t2");
20253       orc_program_add_temporary (p, 4, "t3");
20254       orc_program_add_temporary (p, 4, "t4");
20255 
20256       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3,
20257           ORC_VAR_D1);
20258       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T4, ORC_VAR_P1, ORC_VAR_S1,
20259           ORC_VAR_D1);
20260       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1,
20261           ORC_VAR_D1);
20262       orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_T3,
20263           ORC_VAR_D1);
20264 #endif
20265 
20266       orc_program_compile (p);
20267       c = orc_program_take_code (p);
20268       orc_program_free (p);
20269     }
20270     p_inited = TRUE;
20271     orc_once_mutex_unlock ();
20272   }
20273   ex->arrays[ORC_VAR_A2] = c;
20274   ex->program = 0;
20275 
20276   ex->n = n;
20277   ORC_EXECUTOR_M (ex) = m;
20278   ex->arrays[ORC_VAR_D1] = d1;
20279   ex->params[ORC_VAR_D1] = d1_stride;
20280   ex->arrays[ORC_VAR_S1] = (void *) s1;
20281   ex->params[ORC_VAR_S1] = s1_stride;
20282   ex->arrays[ORC_VAR_S2] = (void *) s2;
20283   ex->params[ORC_VAR_S2] = s2_stride;
20284   ex->arrays[ORC_VAR_S3] = (void *) s3;
20285   ex->params[ORC_VAR_S3] = s3_stride;
20286   ex->params[ORC_VAR_P1] = p1;
20287 
20288   func = c->exec;
20289   func (ex);
20290 }
20291 #endif
20292 
20293 
20294 /* video_orc_convert_Y444_YUY2 */
20295 #ifdef DISABLE_ORC
20296 void
video_orc_convert_Y444_YUY2(guint8 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,const guint8 * ORC_RESTRICT s2,int s2_stride,const guint8 * ORC_RESTRICT s3,int s3_stride,int n,int m)20297 video_orc_convert_Y444_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
20298     const guint8 * ORC_RESTRICT s1, int s1_stride,
20299     const guint8 * ORC_RESTRICT s2, int s2_stride,
20300     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
20301 {
20302   int i;
20303   int j;
20304   orc_union32 *ORC_RESTRICT ptr0;
20305   const orc_union16 *ORC_RESTRICT ptr4;
20306   const orc_union16 *ORC_RESTRICT ptr5;
20307   const orc_union16 *ORC_RESTRICT ptr6;
20308   orc_union16 var36;
20309   orc_union16 var37;
20310   orc_union16 var38;
20311   orc_union32 var39;
20312   orc_union32 var40;
20313   orc_union16 var41;
20314   orc_union16 var42;
20315   orc_union16 var43;
20316 
20317   for (j = 0; j < m; j++) {
20318     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
20319     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
20320     ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
20321     ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j);
20322 
20323 
20324     for (i = 0; i < n; i++) {
20325       /* 0: loadw */
20326       var36 = ptr5[i];
20327       /* 1: loadw */
20328       var37 = ptr6[i];
20329       /* 2: mergebw */
20330       {
20331         orc_union16 _dest;
20332         _dest.x2[0] = var36.x2[0];
20333         _dest.x2[1] = var37.x2[0];
20334         var40.x2[0] = _dest.i;
20335       }
20336       {
20337         orc_union16 _dest;
20338         _dest.x2[0] = var36.x2[1];
20339         _dest.x2[1] = var37.x2[1];
20340         var40.x2[1] = _dest.i;
20341       }
20342       /* 3: splitlw */
20343       {
20344         orc_union32 _src;
20345         _src.i = var40.i;
20346         var41.i = _src.x2[1];
20347         var42.i = _src.x2[0];
20348       }
20349       /* 4: avgub */
20350       var43.x2[0] =
20351           ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
20352       var43.x2[1] =
20353           ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
20354       /* 5: loadw */
20355       var38 = ptr4[i];
20356       /* 6: mergebw */
20357       {
20358         orc_union16 _dest;
20359         _dest.x2[0] = var38.x2[0];
20360         _dest.x2[1] = var43.x2[0];
20361         var39.x2[0] = _dest.i;
20362       }
20363       {
20364         orc_union16 _dest;
20365         _dest.x2[0] = var38.x2[1];
20366         _dest.x2[1] = var43.x2[1];
20367         var39.x2[1] = _dest.i;
20368       }
20369       /* 7: storel */
20370       ptr0[i] = var39;
20371     }
20372   }
20373 
20374 }
20375 
20376 #else
20377 static void
_backup_video_orc_convert_Y444_YUY2(OrcExecutor * ORC_RESTRICT ex)20378 _backup_video_orc_convert_Y444_YUY2 (OrcExecutor * ORC_RESTRICT ex)
20379 {
20380   int i;
20381   int j;
20382   int n = ex->n;
20383   int m = ex->params[ORC_VAR_A1];
20384   orc_union32 *ORC_RESTRICT ptr0;
20385   const orc_union16 *ORC_RESTRICT ptr4;
20386   const orc_union16 *ORC_RESTRICT ptr5;
20387   const orc_union16 *ORC_RESTRICT ptr6;
20388   orc_union16 var36;
20389   orc_union16 var37;
20390   orc_union16 var38;
20391   orc_union32 var39;
20392   orc_union32 var40;
20393   orc_union16 var41;
20394   orc_union16 var42;
20395   orc_union16 var43;
20396 
20397   for (j = 0; j < m; j++) {
20398     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
20399     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
20400     ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
20401     ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j);
20402 
20403 
20404     for (i = 0; i < n; i++) {
20405       /* 0: loadw */
20406       var36 = ptr5[i];
20407       /* 1: loadw */
20408       var37 = ptr6[i];
20409       /* 2: mergebw */
20410       {
20411         orc_union16 _dest;
20412         _dest.x2[0] = var36.x2[0];
20413         _dest.x2[1] = var37.x2[0];
20414         var40.x2[0] = _dest.i;
20415       }
20416       {
20417         orc_union16 _dest;
20418         _dest.x2[0] = var36.x2[1];
20419         _dest.x2[1] = var37.x2[1];
20420         var40.x2[1] = _dest.i;
20421       }
20422       /* 3: splitlw */
20423       {
20424         orc_union32 _src;
20425         _src.i = var40.i;
20426         var41.i = _src.x2[1];
20427         var42.i = _src.x2[0];
20428       }
20429       /* 4: avgub */
20430       var43.x2[0] =
20431           ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
20432       var43.x2[1] =
20433           ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
20434       /* 5: loadw */
20435       var38 = ptr4[i];
20436       /* 6: mergebw */
20437       {
20438         orc_union16 _dest;
20439         _dest.x2[0] = var38.x2[0];
20440         _dest.x2[1] = var43.x2[0];
20441         var39.x2[0] = _dest.i;
20442       }
20443       {
20444         orc_union16 _dest;
20445         _dest.x2[0] = var38.x2[1];
20446         _dest.x2[1] = var43.x2[1];
20447         var39.x2[1] = _dest.i;
20448       }
20449       /* 7: storel */
20450       ptr0[i] = var39;
20451     }
20452   }
20453 
20454 }
20455 
20456 void
video_orc_convert_Y444_YUY2(guint8 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,const guint8 * ORC_RESTRICT s2,int s2_stride,const guint8 * ORC_RESTRICT s3,int s3_stride,int n,int m)20457 video_orc_convert_Y444_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
20458     const guint8 * ORC_RESTRICT s1, int s1_stride,
20459     const guint8 * ORC_RESTRICT s2, int s2_stride,
20460     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
20461 {
20462   OrcExecutor _ex, *ex = &_ex;
20463   static volatile int p_inited = 0;
20464   static OrcCode *c = 0;
20465   void (*func) (OrcExecutor *);
20466 
20467   if (!p_inited) {
20468     orc_once_mutex_lock ();
20469     if (!p_inited) {
20470       OrcProgram *p;
20471 
20472 #if 1
20473       static const orc_uint8 bc[] = {
20474         1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
20475         110, 118, 101, 114, 116, 95, 89, 52, 52, 52, 95, 89, 85, 89, 50, 11,
20476         4, 4, 12, 2, 2, 12, 2, 2, 12, 2, 2, 20, 2, 20, 4, 20,
20477         2, 20, 2, 21, 1, 196, 33, 5, 6, 198, 34, 35, 33, 21, 1, 39,
20478         32, 34, 35, 21, 1, 196, 0, 4, 32, 2, 0,
20479       };
20480       p = orc_program_new_from_static_bytecode (bc);
20481       orc_program_set_backup_function (p, _backup_video_orc_convert_Y444_YUY2);
20482 #else
20483       p = orc_program_new ();
20484       orc_program_set_2d (p);
20485       orc_program_set_name (p, "video_orc_convert_Y444_YUY2");
20486       orc_program_set_backup_function (p, _backup_video_orc_convert_Y444_YUY2);
20487       orc_program_add_destination (p, 4, "d1");
20488       orc_program_add_source (p, 2, "s1");
20489       orc_program_add_source (p, 2, "s2");
20490       orc_program_add_source (p, 2, "s3");
20491       orc_program_add_temporary (p, 2, "t1");
20492       orc_program_add_temporary (p, 4, "t2");
20493       orc_program_add_temporary (p, 2, "t3");
20494       orc_program_add_temporary (p, 2, "t4");
20495 
20496       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S3,
20497           ORC_VAR_D1);
20498       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2,
20499           ORC_VAR_D1);
20500       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4,
20501           ORC_VAR_D1);
20502       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1,
20503           ORC_VAR_D1);
20504 #endif
20505 
20506       orc_program_compile (p);
20507       c = orc_program_take_code (p);
20508       orc_program_free (p);
20509     }
20510     p_inited = TRUE;
20511     orc_once_mutex_unlock ();
20512   }
20513   ex->arrays[ORC_VAR_A2] = c;
20514   ex->program = 0;
20515 
20516   ex->n = n;
20517   ORC_EXECUTOR_M (ex) = m;
20518   ex->arrays[ORC_VAR_D1] = d1;
20519   ex->params[ORC_VAR_D1] = d1_stride;
20520   ex->arrays[ORC_VAR_S1] = (void *) s1;
20521   ex->params[ORC_VAR_S1] = s1_stride;
20522   ex->arrays[ORC_VAR_S2] = (void *) s2;
20523   ex->params[ORC_VAR_S2] = s2_stride;
20524   ex->arrays[ORC_VAR_S3] = (void *) s3;
20525   ex->params[ORC_VAR_S3] = s3_stride;
20526 
20527   func = c->exec;
20528   func (ex);
20529 }
20530 #endif
20531 
20532 
20533 /* video_orc_convert_Y444_UYVY */
20534 #ifdef DISABLE_ORC
20535 void
video_orc_convert_Y444_UYVY(guint8 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,const guint8 * ORC_RESTRICT s2,int s2_stride,const guint8 * ORC_RESTRICT s3,int s3_stride,int n,int m)20536 video_orc_convert_Y444_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
20537     const guint8 * ORC_RESTRICT s1, int s1_stride,
20538     const guint8 * ORC_RESTRICT s2, int s2_stride,
20539     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
20540 {
20541   int i;
20542   int j;
20543   orc_union32 *ORC_RESTRICT ptr0;
20544   const orc_union16 *ORC_RESTRICT ptr4;
20545   const orc_union16 *ORC_RESTRICT ptr5;
20546   const orc_union16 *ORC_RESTRICT ptr6;
20547   orc_union16 var36;
20548   orc_union16 var37;
20549   orc_union16 var38;
20550   orc_union32 var39;
20551   orc_union32 var40;
20552   orc_union16 var41;
20553   orc_union16 var42;
20554   orc_union16 var43;
20555 
20556   for (j = 0; j < m; j++) {
20557     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
20558     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
20559     ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
20560     ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j);
20561 
20562 
20563     for (i = 0; i < n; i++) {
20564       /* 0: loadw */
20565       var36 = ptr5[i];
20566       /* 1: loadw */
20567       var37 = ptr6[i];
20568       /* 2: mergebw */
20569       {
20570         orc_union16 _dest;
20571         _dest.x2[0] = var36.x2[0];
20572         _dest.x2[1] = var37.x2[0];
20573         var40.x2[0] = _dest.i;
20574       }
20575       {
20576         orc_union16 _dest;
20577         _dest.x2[0] = var36.x2[1];
20578         _dest.x2[1] = var37.x2[1];
20579         var40.x2[1] = _dest.i;
20580       }
20581       /* 3: splitlw */
20582       {
20583         orc_union32 _src;
20584         _src.i = var40.i;
20585         var41.i = _src.x2[1];
20586         var42.i = _src.x2[0];
20587       }
20588       /* 4: avgub */
20589       var43.x2[0] =
20590           ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
20591       var43.x2[1] =
20592           ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
20593       /* 5: loadw */
20594       var38 = ptr4[i];
20595       /* 6: mergebw */
20596       {
20597         orc_union16 _dest;
20598         _dest.x2[0] = var43.x2[0];
20599         _dest.x2[1] = var38.x2[0];
20600         var39.x2[0] = _dest.i;
20601       }
20602       {
20603         orc_union16 _dest;
20604         _dest.x2[0] = var43.x2[1];
20605         _dest.x2[1] = var38.x2[1];
20606         var39.x2[1] = _dest.i;
20607       }
20608       /* 7: storel */
20609       ptr0[i] = var39;
20610     }
20611   }
20612 
20613 }
20614 
20615 #else
20616 static void
_backup_video_orc_convert_Y444_UYVY(OrcExecutor * ORC_RESTRICT ex)20617 _backup_video_orc_convert_Y444_UYVY (OrcExecutor * ORC_RESTRICT ex)
20618 {
20619   int i;
20620   int j;
20621   int n = ex->n;
20622   int m = ex->params[ORC_VAR_A1];
20623   orc_union32 *ORC_RESTRICT ptr0;
20624   const orc_union16 *ORC_RESTRICT ptr4;
20625   const orc_union16 *ORC_RESTRICT ptr5;
20626   const orc_union16 *ORC_RESTRICT ptr6;
20627   orc_union16 var36;
20628   orc_union16 var37;
20629   orc_union16 var38;
20630   orc_union32 var39;
20631   orc_union32 var40;
20632   orc_union16 var41;
20633   orc_union16 var42;
20634   orc_union16 var43;
20635 
20636   for (j = 0; j < m; j++) {
20637     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
20638     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
20639     ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
20640     ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j);
20641 
20642 
20643     for (i = 0; i < n; i++) {
20644       /* 0: loadw */
20645       var36 = ptr5[i];
20646       /* 1: loadw */
20647       var37 = ptr6[i];
20648       /* 2: mergebw */
20649       {
20650         orc_union16 _dest;
20651         _dest.x2[0] = var36.x2[0];
20652         _dest.x2[1] = var37.x2[0];
20653         var40.x2[0] = _dest.i;
20654       }
20655       {
20656         orc_union16 _dest;
20657         _dest.x2[0] = var36.x2[1];
20658         _dest.x2[1] = var37.x2[1];
20659         var40.x2[1] = _dest.i;
20660       }
20661       /* 3: splitlw */
20662       {
20663         orc_union32 _src;
20664         _src.i = var40.i;
20665         var41.i = _src.x2[1];
20666         var42.i = _src.x2[0];
20667       }
20668       /* 4: avgub */
20669       var43.x2[0] =
20670           ((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
20671       var43.x2[1] =
20672           ((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
20673       /* 5: loadw */
20674       var38 = ptr4[i];
20675       /* 6: mergebw */
20676       {
20677         orc_union16 _dest;
20678         _dest.x2[0] = var43.x2[0];
20679         _dest.x2[1] = var38.x2[0];
20680         var39.x2[0] = _dest.i;
20681       }
20682       {
20683         orc_union16 _dest;
20684         _dest.x2[0] = var43.x2[1];
20685         _dest.x2[1] = var38.x2[1];
20686         var39.x2[1] = _dest.i;
20687       }
20688       /* 7: storel */
20689       ptr0[i] = var39;
20690     }
20691   }
20692 
20693 }
20694 
20695 void
video_orc_convert_Y444_UYVY(guint8 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,const guint8 * ORC_RESTRICT s2,int s2_stride,const guint8 * ORC_RESTRICT s3,int s3_stride,int n,int m)20696 video_orc_convert_Y444_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
20697     const guint8 * ORC_RESTRICT s1, int s1_stride,
20698     const guint8 * ORC_RESTRICT s2, int s2_stride,
20699     const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
20700 {
20701   OrcExecutor _ex, *ex = &_ex;
20702   static volatile int p_inited = 0;
20703   static OrcCode *c = 0;
20704   void (*func) (OrcExecutor *);
20705 
20706   if (!p_inited) {
20707     orc_once_mutex_lock ();
20708     if (!p_inited) {
20709       OrcProgram *p;
20710 
20711 #if 1
20712       static const orc_uint8 bc[] = {
20713         1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
20714         110, 118, 101, 114, 116, 95, 89, 52, 52, 52, 95, 85, 89, 86, 89, 11,
20715         4, 4, 12, 2, 2, 12, 2, 2, 12, 2, 2, 20, 2, 20, 4, 20,
20716         2, 20, 2, 21, 1, 196, 33, 5, 6, 198, 34, 35, 33, 21, 1, 39,
20717         32, 34, 35, 21, 1, 196, 0, 32, 4, 2, 0,
20718       };
20719       p = orc_program_new_from_static_bytecode (bc);
20720       orc_program_set_backup_function (p, _backup_video_orc_convert_Y444_UYVY);
20721 #else
20722       p = orc_program_new ();
20723       orc_program_set_2d (p);
20724       orc_program_set_name (p, "video_orc_convert_Y444_UYVY");
20725       orc_program_set_backup_function (p, _backup_video_orc_convert_Y444_UYVY);
20726       orc_program_add_destination (p, 4, "d1");
20727       orc_program_add_source (p, 2, "s1");
20728       orc_program_add_source (p, 2, "s2");
20729       orc_program_add_source (p, 2, "s3");
20730       orc_program_add_temporary (p, 2, "t1");
20731       orc_program_add_temporary (p, 4, "t2");
20732       orc_program_add_temporary (p, 2, "t3");
20733       orc_program_add_temporary (p, 2, "t4");
20734 
20735       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S3,
20736           ORC_VAR_D1);
20737       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2,
20738           ORC_VAR_D1);
20739       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4,
20740           ORC_VAR_D1);
20741       orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1,
20742           ORC_VAR_D1);
20743 #endif
20744 
20745       orc_program_compile (p);
20746       c = orc_program_take_code (p);
20747       orc_program_free (p);
20748     }
20749     p_inited = TRUE;
20750     orc_once_mutex_unlock ();
20751   }
20752   ex->arrays[ORC_VAR_A2] = c;
20753   ex->program = 0;
20754 
20755   ex->n = n;
20756   ORC_EXECUTOR_M (ex) = m;
20757   ex->arrays[ORC_VAR_D1] = d1;
20758   ex->params[ORC_VAR_D1] = d1_stride;
20759   ex->arrays[ORC_VAR_S1] = (void *) s1;
20760   ex->params[ORC_VAR_S1] = s1_stride;
20761   ex->arrays[ORC_VAR_S2] = (void *) s2;
20762   ex->params[ORC_VAR_S2] = s2_stride;
20763   ex->arrays[ORC_VAR_S3] = (void *) s3;
20764   ex->params[ORC_VAR_S3] = s3_stride;
20765 
20766   func = c->exec;
20767   func (ex);
20768 }
20769 #endif
20770 
20771 
20772 /* video_orc_convert_Y444_AYUV */
20773 #ifdef DISABLE_ORC
20774 void
video_orc_convert_Y444_AYUV(guint8 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,const guint8 * ORC_RESTRICT s2,int s2_stride,const guint8 * ORC_RESTRICT s3,int s3_stride,int p1,int n,int m)20775 video_orc_convert_Y444_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
20776     const guint8 * ORC_RESTRICT s1, int s1_stride,
20777     const guint8 * ORC_RESTRICT s2, int s2_stride,
20778     const guint8 * ORC_RESTRICT s3, int s3_stride, int p1, int n, int m)
20779 {
20780   int i;
20781   int j;
20782   orc_union32 *ORC_RESTRICT ptr0;
20783   const orc_int8 *ORC_RESTRICT ptr4;
20784   const orc_int8 *ORC_RESTRICT ptr5;
20785   const orc_int8 *ORC_RESTRICT ptr6;
20786   orc_int8 var34;
20787   orc_int8 var35;
20788   orc_int8 var36;
20789   orc_int8 var37;
20790   orc_union32 var38;
20791   orc_union16 var39;
20792   orc_union16 var40;
20793 
20794   for (j = 0; j < m; j++) {
20795     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
20796     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
20797     ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
20798     ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j);
20799 
20800     /* 3: loadpb */
20801     var36 = p1;
20802 
20803     for (i = 0; i < n; i++) {
20804       /* 0: loadb */
20805       var34 = ptr5[i];
20806       /* 1: loadb */
20807       var35 = ptr6[i];
20808       /* 2: mergebw */
20809       {
20810         orc_union16 _dest;
20811         _dest.x2[0] = var34;
20812         _dest.x2[1] = var35;
20813         var39.i = _dest.i;
20814       }
20815       /* 4: loadb */
20816       var37 = ptr4[i];
20817       /* 5: mergebw */
20818       {
20819         orc_union16 _dest;
20820         _dest.x2[0] = var36;
20821         _dest.x2[1] = var37;
20822         var40.i = _dest.i;
20823       }
20824       /* 6: mergewl */
20825       {
20826         orc_union32 _dest;
20827         _dest.x2[0] = var40.i;
20828         _dest.x2[1] = var39.i;
20829         var38.i = _dest.i;
20830       }
20831       /* 7: storel */
20832       ptr0[i] = var38;
20833     }
20834   }
20835 
20836 }
20837 
20838 #else
20839 static void
_backup_video_orc_convert_Y444_AYUV(OrcExecutor * ORC_RESTRICT ex)20840 _backup_video_orc_convert_Y444_AYUV (OrcExecutor * ORC_RESTRICT ex)
20841 {
20842   int i;
20843   int j;
20844   int n = ex->n;
20845   int m = ex->params[ORC_VAR_A1];
20846   orc_union32 *ORC_RESTRICT ptr0;
20847   const orc_int8 *ORC_RESTRICT ptr4;
20848   const orc_int8 *ORC_RESTRICT ptr5;
20849   const orc_int8 *ORC_RESTRICT ptr6;
20850   orc_int8 var34;
20851   orc_int8 var35;
20852   orc_int8 var36;
20853   orc_int8 var37;
20854   orc_union32 var38;
20855   orc_union16 var39;
20856   orc_union16 var40;
20857 
20858   for (j = 0; j < m; j++) {
20859     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
20860     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
20861     ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
20862     ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j);
20863 
20864     /* 3: loadpb */
20865     var36 = ex->params[24];
20866 
20867     for (i = 0; i < n; i++) {
20868       /* 0: loadb */
20869       var34 = ptr5[i];
20870       /* 1: loadb */
20871       var35 = ptr6[i];
20872       /* 2: mergebw */
20873       {
20874         orc_union16 _dest;
20875         _dest.x2[0] = var34;
20876         _dest.x2[1] = var35;
20877         var39.i = _dest.i;
20878       }
20879       /* 4: loadb */
20880       var37 = ptr4[i];
20881       /* 5: mergebw */
20882       {
20883         orc_union16 _dest;
20884         _dest.x2[0] = var36;
20885         _dest.x2[1] = var37;
20886         var40.i = _dest.i;
20887       }
20888       /* 6: mergewl */
20889       {
20890         orc_union32 _dest;
20891         _dest.x2[0] = var40.i;
20892         _dest.x2[1] = var39.i;
20893         var38.i = _dest.i;
20894       }
20895       /* 7: storel */
20896       ptr0[i] = var38;
20897     }
20898   }
20899 
20900 }
20901 
20902 void
video_orc_convert_Y444_AYUV(guint8 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,const guint8 * ORC_RESTRICT s2,int s2_stride,const guint8 * ORC_RESTRICT s3,int s3_stride,int p1,int n,int m)20903 video_orc_convert_Y444_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
20904     const guint8 * ORC_RESTRICT s1, int s1_stride,
20905     const guint8 * ORC_RESTRICT s2, int s2_stride,
20906     const guint8 * ORC_RESTRICT s3, int s3_stride, int p1, int n, int m)
20907 {
20908   OrcExecutor _ex, *ex = &_ex;
20909   static volatile int p_inited = 0;
20910   static OrcCode *c = 0;
20911   void (*func) (OrcExecutor *);
20912 
20913   if (!p_inited) {
20914     orc_once_mutex_lock ();
20915     if (!p_inited) {
20916       OrcProgram *p;
20917 
20918 #if 1
20919       static const orc_uint8 bc[] = {
20920         1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
20921         110, 118, 101, 114, 116, 95, 89, 52, 52, 52, 95, 65, 89, 85, 86, 11,
20922         4, 4, 12, 1, 1, 12, 1, 1, 12, 1, 1, 16, 1, 20, 2, 20,
20923         2, 196, 32, 5, 6, 196, 33, 24, 4, 195, 0, 33, 32, 2, 0,
20924       };
20925       p = orc_program_new_from_static_bytecode (bc);
20926       orc_program_set_backup_function (p, _backup_video_orc_convert_Y444_AYUV);
20927 #else
20928       p = orc_program_new ();
20929       orc_program_set_2d (p);
20930       orc_program_set_name (p, "video_orc_convert_Y444_AYUV");
20931       orc_program_set_backup_function (p, _backup_video_orc_convert_Y444_AYUV);
20932       orc_program_add_destination (p, 4, "d1");
20933       orc_program_add_source (p, 1, "s1");
20934       orc_program_add_source (p, 1, "s2");
20935       orc_program_add_source (p, 1, "s3");
20936       orc_program_add_parameter (p, 1, "p1");
20937       orc_program_add_temporary (p, 2, "t1");
20938       orc_program_add_temporary (p, 2, "t2");
20939 
20940       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3,
20941           ORC_VAR_D1);
20942       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_P1, ORC_VAR_S1,
20943           ORC_VAR_D1);
20944       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
20945           ORC_VAR_D1);
20946 #endif
20947 
20948       orc_program_compile (p);
20949       c = orc_program_take_code (p);
20950       orc_program_free (p);
20951     }
20952     p_inited = TRUE;
20953     orc_once_mutex_unlock ();
20954   }
20955   ex->arrays[ORC_VAR_A2] = c;
20956   ex->program = 0;
20957 
20958   ex->n = n;
20959   ORC_EXECUTOR_M (ex) = m;
20960   ex->arrays[ORC_VAR_D1] = d1;
20961   ex->params[ORC_VAR_D1] = d1_stride;
20962   ex->arrays[ORC_VAR_S1] = (void *) s1;
20963   ex->params[ORC_VAR_S1] = s1_stride;
20964   ex->arrays[ORC_VAR_S2] = (void *) s2;
20965   ex->params[ORC_VAR_S2] = s2_stride;
20966   ex->arrays[ORC_VAR_S3] = (void *) s3;
20967   ex->params[ORC_VAR_S3] = s3_stride;
20968   ex->params[ORC_VAR_P1] = p1;
20969 
20970   func = c->exec;
20971   func (ex);
20972 }
20973 #endif
20974 
20975 
20976 /* video_orc_convert_AYUV_ARGB */
20977 #ifdef DISABLE_ORC
20978 void
video_orc_convert_AYUV_ARGB(guint8 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,int p1,int p2,int p3,int p4,int p5,int n,int m)20979 video_orc_convert_AYUV_ARGB (guint8 * ORC_RESTRICT d1, int d1_stride,
20980     const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
20981     int p4, int p5, int n, int m)
20982 {
20983   int i;
20984   int j;
20985   orc_union32 *ORC_RESTRICT ptr0;
20986   const orc_union32 *ORC_RESTRICT ptr4;
20987   orc_union32 var46;
20988 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
20989   volatile orc_union32 var47;
20990 #else
20991   orc_union32 var47;
20992 #endif
20993   orc_union16 var48;
20994   orc_union16 var49;
20995   orc_union16 var50;
20996   orc_union16 var51;
20997   orc_union16 var52;
20998   orc_union32 var53;
20999   orc_union32 var54;
21000   orc_union16 var55;
21001   orc_union16 var56;
21002   orc_int8 var57;
21003   orc_int8 var58;
21004   orc_int8 var59;
21005   orc_int8 var60;
21006   orc_union16 var61;
21007   orc_union16 var62;
21008   orc_union16 var63;
21009   orc_union16 var64;
21010   orc_union16 var65;
21011   orc_union16 var66;
21012   orc_int8 var67;
21013   orc_union16 var68;
21014   orc_union16 var69;
21015   orc_union16 var70;
21016   orc_int8 var71;
21017   orc_union16 var72;
21018   orc_union16 var73;
21019   orc_union16 var74;
21020   orc_union16 var75;
21021   orc_int8 var76;
21022   orc_union16 var77;
21023   orc_union32 var78;
21024 
21025   for (j = 0; j < m; j++) {
21026     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
21027     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
21028 
21029     /* 1: loadpb */
21030     var47.x4[0] = 0x00000080;   /* 128 or 6.32404e-322f */
21031     var47.x4[1] = 0x00000080;   /* 128 or 6.32404e-322f */
21032     var47.x4[2] = 0x00000080;   /* 128 or 6.32404e-322f */
21033     var47.x4[3] = 0x00000080;   /* 128 or 6.32404e-322f */
21034     /* 9: loadpw */
21035     var48.i = p1;
21036     /* 11: loadpw */
21037     var49.i = p2;
21038     /* 16: loadpw */
21039     var50.i = p3;
21040     /* 20: loadpw */
21041     var51.i = p4;
21042     /* 23: loadpw */
21043     var52.i = p5;
21044 
21045     for (i = 0; i < n; i++) {
21046       /* 0: loadl */
21047       var46 = ptr4[i];
21048       /* 2: subb */
21049       var54.x4[0] = var46.x4[0] - var47.x4[0];
21050       var54.x4[1] = var46.x4[1] - var47.x4[1];
21051       var54.x4[2] = var46.x4[2] - var47.x4[2];
21052       var54.x4[3] = var46.x4[3] - var47.x4[3];
21053       /* 3: splitlw */
21054       {
21055         orc_union32 _src;
21056         _src.i = var54.i;
21057         var55.i = _src.x2[1];
21058         var56.i = _src.x2[0];
21059       }
21060       /* 4: splitwb */
21061       {
21062         orc_union16 _src;
21063         _src.i = var56.i;
21064         var57 = _src.x2[1];
21065         var58 = _src.x2[0];
21066       }
21067       /* 5: splitwb */
21068       {
21069         orc_union16 _src;
21070         _src.i = var55.i;
21071         var59 = _src.x2[1];
21072         var60 = _src.x2[0];
21073       }
21074       /* 6: splatbw */
21075       var61.i = ((var57 & 0xff) << 8) | (var57 & 0xff);
21076       /* 7: splatbw */
21077       var62.i = ((var60 & 0xff) << 8) | (var60 & 0xff);
21078       /* 8: splatbw */
21079       var63.i = ((var59 & 0xff) << 8) | (var59 & 0xff);
21080       /* 10: mulhsw */
21081       var64.i = (var61.i * var48.i) >> 16;
21082       /* 12: mulhsw */
21083       var65.i = (var63.i * var49.i) >> 16;
21084       /* 13: addw */
21085       var66.i = var64.i + var65.i;
21086       /* 14: convssswb */
21087       var67 = ORC_CLAMP_SB (var66.i);
21088       /* 15: mergebw */
21089       {
21090         orc_union16 _dest;
21091         _dest.x2[0] = var58;
21092         _dest.x2[1] = var67;
21093         var68.i = _dest.i;
21094       }
21095       /* 17: mulhsw */
21096       var69.i = (var62.i * var50.i) >> 16;
21097       /* 18: addw */
21098       var70.i = var64.i + var69.i;
21099       /* 19: convssswb */
21100       var71 = ORC_CLAMP_SB (var70.i);
21101       /* 21: mulhsw */
21102       var72.i = (var62.i * var51.i) >> 16;
21103       /* 22: addw */
21104       var73.i = var64.i + var72.i;
21105       /* 24: mulhsw */
21106       var74.i = (var63.i * var52.i) >> 16;
21107       /* 25: addw */
21108       var75.i = var73.i + var74.i;
21109       /* 26: convssswb */
21110       var76 = ORC_CLAMP_SB (var75.i);
21111       /* 27: mergebw */
21112       {
21113         orc_union16 _dest;
21114         _dest.x2[0] = var76;
21115         _dest.x2[1] = var71;
21116         var77.i = _dest.i;
21117       }
21118       /* 28: mergewl */
21119       {
21120         orc_union32 _dest;
21121         _dest.x2[0] = var68.i;
21122         _dest.x2[1] = var77.i;
21123         var78.i = _dest.i;
21124       }
21125       /* 29: addb */
21126       var53.x4[0] = var78.x4[0] + var47.x4[0];
21127       var53.x4[1] = var78.x4[1] + var47.x4[1];
21128       var53.x4[2] = var78.x4[2] + var47.x4[2];
21129       var53.x4[3] = var78.x4[3] + var47.x4[3];
21130       /* 30: storel */
21131       ptr0[i] = var53;
21132     }
21133   }
21134 
21135 }
21136 
21137 #else
21138 static void
_backup_video_orc_convert_AYUV_ARGB(OrcExecutor * ORC_RESTRICT ex)21139 _backup_video_orc_convert_AYUV_ARGB (OrcExecutor * ORC_RESTRICT ex)
21140 {
21141   int i;
21142   int j;
21143   int n = ex->n;
21144   int m = ex->params[ORC_VAR_A1];
21145   orc_union32 *ORC_RESTRICT ptr0;
21146   const orc_union32 *ORC_RESTRICT ptr4;
21147   orc_union32 var46;
21148 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
21149   volatile orc_union32 var47;
21150 #else
21151   orc_union32 var47;
21152 #endif
21153   orc_union16 var48;
21154   orc_union16 var49;
21155   orc_union16 var50;
21156   orc_union16 var51;
21157   orc_union16 var52;
21158   orc_union32 var53;
21159   orc_union32 var54;
21160   orc_union16 var55;
21161   orc_union16 var56;
21162   orc_int8 var57;
21163   orc_int8 var58;
21164   orc_int8 var59;
21165   orc_int8 var60;
21166   orc_union16 var61;
21167   orc_union16 var62;
21168   orc_union16 var63;
21169   orc_union16 var64;
21170   orc_union16 var65;
21171   orc_union16 var66;
21172   orc_int8 var67;
21173   orc_union16 var68;
21174   orc_union16 var69;
21175   orc_union16 var70;
21176   orc_int8 var71;
21177   orc_union16 var72;
21178   orc_union16 var73;
21179   orc_union16 var74;
21180   orc_union16 var75;
21181   orc_int8 var76;
21182   orc_union16 var77;
21183   orc_union32 var78;
21184 
21185   for (j = 0; j < m; j++) {
21186     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
21187     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
21188 
21189     /* 1: loadpb */
21190     var47.x4[0] = 0x00000080;   /* 128 or 6.32404e-322f */
21191     var47.x4[1] = 0x00000080;   /* 128 or 6.32404e-322f */
21192     var47.x4[2] = 0x00000080;   /* 128 or 6.32404e-322f */
21193     var47.x4[3] = 0x00000080;   /* 128 or 6.32404e-322f */
21194     /* 9: loadpw */
21195     var48.i = ex->params[24];
21196     /* 11: loadpw */
21197     var49.i = ex->params[25];
21198     /* 16: loadpw */
21199     var50.i = ex->params[26];
21200     /* 20: loadpw */
21201     var51.i = ex->params[27];
21202     /* 23: loadpw */
21203     var52.i = ex->params[28];
21204 
21205     for (i = 0; i < n; i++) {
21206       /* 0: loadl */
21207       var46 = ptr4[i];
21208       /* 2: subb */
21209       var54.x4[0] = var46.x4[0] - var47.x4[0];
21210       var54.x4[1] = var46.x4[1] - var47.x4[1];
21211       var54.x4[2] = var46.x4[2] - var47.x4[2];
21212       var54.x4[3] = var46.x4[3] - var47.x4[3];
21213       /* 3: splitlw */
21214       {
21215         orc_union32 _src;
21216         _src.i = var54.i;
21217         var55.i = _src.x2[1];
21218         var56.i = _src.x2[0];
21219       }
21220       /* 4: splitwb */
21221       {
21222         orc_union16 _src;
21223         _src.i = var56.i;
21224         var57 = _src.x2[1];
21225         var58 = _src.x2[0];
21226       }
21227       /* 5: splitwb */
21228       {
21229         orc_union16 _src;
21230         _src.i = var55.i;
21231         var59 = _src.x2[1];
21232         var60 = _src.x2[0];
21233       }
21234       /* 6: splatbw */
21235       var61.i = ((var57 & 0xff) << 8) | (var57 & 0xff);
21236       /* 7: splatbw */
21237       var62.i = ((var60 & 0xff) << 8) | (var60 & 0xff);
21238       /* 8: splatbw */
21239       var63.i = ((var59 & 0xff) << 8) | (var59 & 0xff);
21240       /* 10: mulhsw */
21241       var64.i = (var61.i * var48.i) >> 16;
21242       /* 12: mulhsw */
21243       var65.i = (var63.i * var49.i) >> 16;
21244       /* 13: addw */
21245       var66.i = var64.i + var65.i;
21246       /* 14: convssswb */
21247       var67 = ORC_CLAMP_SB (var66.i);
21248       /* 15: mergebw */
21249       {
21250         orc_union16 _dest;
21251         _dest.x2[0] = var58;
21252         _dest.x2[1] = var67;
21253         var68.i = _dest.i;
21254       }
21255       /* 17: mulhsw */
21256       var69.i = (var62.i * var50.i) >> 16;
21257       /* 18: addw */
21258       var70.i = var64.i + var69.i;
21259       /* 19: convssswb */
21260       var71 = ORC_CLAMP_SB (var70.i);
21261       /* 21: mulhsw */
21262       var72.i = (var62.i * var51.i) >> 16;
21263       /* 22: addw */
21264       var73.i = var64.i + var72.i;
21265       /* 24: mulhsw */
21266       var74.i = (var63.i * var52.i) >> 16;
21267       /* 25: addw */
21268       var75.i = var73.i + var74.i;
21269       /* 26: convssswb */
21270       var76 = ORC_CLAMP_SB (var75.i);
21271       /* 27: mergebw */
21272       {
21273         orc_union16 _dest;
21274         _dest.x2[0] = var76;
21275         _dest.x2[1] = var71;
21276         var77.i = _dest.i;
21277       }
21278       /* 28: mergewl */
21279       {
21280         orc_union32 _dest;
21281         _dest.x2[0] = var68.i;
21282         _dest.x2[1] = var77.i;
21283         var78.i = _dest.i;
21284       }
21285       /* 29: addb */
21286       var53.x4[0] = var78.x4[0] + var47.x4[0];
21287       var53.x4[1] = var78.x4[1] + var47.x4[1];
21288       var53.x4[2] = var78.x4[2] + var47.x4[2];
21289       var53.x4[3] = var78.x4[3] + var47.x4[3];
21290       /* 30: storel */
21291       ptr0[i] = var53;
21292     }
21293   }
21294 
21295 }
21296 
21297 void
video_orc_convert_AYUV_ARGB(guint8 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,int p1,int p2,int p3,int p4,int p5,int n,int m)21298 video_orc_convert_AYUV_ARGB (guint8 * ORC_RESTRICT d1, int d1_stride,
21299     const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
21300     int p4, int p5, int n, int m)
21301 {
21302   OrcExecutor _ex, *ex = &_ex;
21303   static volatile int p_inited = 0;
21304   static OrcCode *c = 0;
21305   void (*func) (OrcExecutor *);
21306 
21307   if (!p_inited) {
21308     orc_once_mutex_lock ();
21309     if (!p_inited) {
21310       OrcProgram *p;
21311 
21312 #if 1
21313       static const orc_uint8 bc[] = {
21314         1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
21315         110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 65, 82, 71, 66, 11,
21316         4, 4, 12, 4, 4, 14, 1, 128, 0, 0, 0, 16, 2, 16, 2, 16,
21317         2, 16, 2, 16, 2, 20, 1, 20, 1, 20, 1, 20, 1, 20, 2, 20,
21318         2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 1, 20, 1, 20, 1, 20,
21319         4, 21, 2, 65, 45, 4, 16, 198, 38, 36, 45, 199, 33, 32, 36, 199,
21320         35, 34, 38, 151, 36, 33, 151, 37, 34, 151, 38, 35, 90, 36, 36, 24,
21321         90, 39, 38, 25, 70, 39, 36, 39, 159, 42, 39, 196, 39, 32, 42, 90,
21322         41, 37, 26, 70, 41, 36, 41, 159, 44, 41, 90, 40, 37, 27, 70, 40,
21323         36, 40, 90, 36, 38, 28, 70, 40, 40, 36, 159, 43, 40, 196, 41, 43,
21324         44, 195, 45, 39, 41, 21, 2, 33, 0, 45, 16, 2, 0,
21325       };
21326       p = orc_program_new_from_static_bytecode (bc);
21327       orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_ARGB);
21328 #else
21329       p = orc_program_new ();
21330       orc_program_set_2d (p);
21331       orc_program_set_name (p, "video_orc_convert_AYUV_ARGB");
21332       orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_ARGB);
21333       orc_program_add_destination (p, 4, "d1");
21334       orc_program_add_source (p, 4, "s1");
21335       orc_program_add_constant (p, 1, 0x00000080, "c1");
21336       orc_program_add_parameter (p, 2, "p1");
21337       orc_program_add_parameter (p, 2, "p2");
21338       orc_program_add_parameter (p, 2, "p3");
21339       orc_program_add_parameter (p, 2, "p4");
21340       orc_program_add_parameter (p, 2, "p5");
21341       orc_program_add_temporary (p, 1, "t1");
21342       orc_program_add_temporary (p, 1, "t2");
21343       orc_program_add_temporary (p, 1, "t3");
21344       orc_program_add_temporary (p, 1, "t4");
21345       orc_program_add_temporary (p, 2, "t5");
21346       orc_program_add_temporary (p, 2, "t6");
21347       orc_program_add_temporary (p, 2, "t7");
21348       orc_program_add_temporary (p, 2, "t8");
21349       orc_program_add_temporary (p, 2, "t9");
21350       orc_program_add_temporary (p, 2, "t10");
21351       orc_program_add_temporary (p, 1, "t11");
21352       orc_program_add_temporary (p, 1, "t12");
21353       orc_program_add_temporary (p, 1, "t13");
21354       orc_program_add_temporary (p, 4, "t14");
21355 
21356       orc_program_append_2 (p, "subb", 2, ORC_VAR_T14, ORC_VAR_S1, ORC_VAR_C1,
21357           ORC_VAR_D1);
21358       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T7, ORC_VAR_T5,
21359           ORC_VAR_T14, ORC_VAR_D1);
21360       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T5,
21361           ORC_VAR_D1);
21362       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T7,
21363           ORC_VAR_D1);
21364       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_D1,
21365           ORC_VAR_D1);
21366       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_D1,
21367           ORC_VAR_D1);
21368       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1,
21369           ORC_VAR_D1);
21370       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_P1,
21371           ORC_VAR_D1);
21372       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_P2,
21373           ORC_VAR_D1);
21374       orc_program_append_2 (p, "addw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T8,
21375           ORC_VAR_D1);
21376       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T11, ORC_VAR_T8,
21377           ORC_VAR_D1, ORC_VAR_D1);
21378       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T8, ORC_VAR_T1,
21379           ORC_VAR_T11, ORC_VAR_D1);
21380       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T10, ORC_VAR_T6, ORC_VAR_P3,
21381           ORC_VAR_D1);
21382       orc_program_append_2 (p, "addw", 0, ORC_VAR_T10, ORC_VAR_T5, ORC_VAR_T10,
21383           ORC_VAR_D1);
21384       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T13, ORC_VAR_T10,
21385           ORC_VAR_D1, ORC_VAR_D1);
21386       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_P4,
21387           ORC_VAR_D1);
21388       orc_program_append_2 (p, "addw", 0, ORC_VAR_T9, ORC_VAR_T5, ORC_VAR_T9,
21389           ORC_VAR_D1);
21390       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T7, ORC_VAR_P5,
21391           ORC_VAR_D1);
21392       orc_program_append_2 (p, "addw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T5,
21393           ORC_VAR_D1);
21394       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T12, ORC_VAR_T9,
21395           ORC_VAR_D1, ORC_VAR_D1);
21396       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T10, ORC_VAR_T12,
21397           ORC_VAR_T13, ORC_VAR_D1);
21398       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T14, ORC_VAR_T8,
21399           ORC_VAR_T10, ORC_VAR_D1);
21400       orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T14, ORC_VAR_C1,
21401           ORC_VAR_D1);
21402 #endif
21403 
21404       orc_program_compile (p);
21405       c = orc_program_take_code (p);
21406       orc_program_free (p);
21407     }
21408     p_inited = TRUE;
21409     orc_once_mutex_unlock ();
21410   }
21411   ex->arrays[ORC_VAR_A2] = c;
21412   ex->program = 0;
21413 
21414   ex->n = n;
21415   ORC_EXECUTOR_M (ex) = m;
21416   ex->arrays[ORC_VAR_D1] = d1;
21417   ex->params[ORC_VAR_D1] = d1_stride;
21418   ex->arrays[ORC_VAR_S1] = (void *) s1;
21419   ex->params[ORC_VAR_S1] = s1_stride;
21420   ex->params[ORC_VAR_P1] = p1;
21421   ex->params[ORC_VAR_P2] = p2;
21422   ex->params[ORC_VAR_P3] = p3;
21423   ex->params[ORC_VAR_P4] = p4;
21424   ex->params[ORC_VAR_P5] = p5;
21425 
21426   func = c->exec;
21427   func (ex);
21428 }
21429 #endif
21430 
21431 
21432 /* video_orc_convert_AYUV_BGRA */
21433 #ifdef DISABLE_ORC
21434 void
video_orc_convert_AYUV_BGRA(guint8 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,int p1,int p2,int p3,int p4,int p5,int n,int m)21435 video_orc_convert_AYUV_BGRA (guint8 * ORC_RESTRICT d1, int d1_stride,
21436     const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
21437     int p4, int p5, int n, int m)
21438 {
21439   int i;
21440   int j;
21441   orc_union32 *ORC_RESTRICT ptr0;
21442   const orc_union32 *ORC_RESTRICT ptr4;
21443   orc_union32 var46;
21444 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
21445   volatile orc_union32 var47;
21446 #else
21447   orc_union32 var47;
21448 #endif
21449   orc_union16 var48;
21450   orc_union16 var49;
21451   orc_union16 var50;
21452   orc_union16 var51;
21453   orc_union16 var52;
21454   orc_union32 var53;
21455   orc_union32 var54;
21456   orc_union16 var55;
21457   orc_union16 var56;
21458   orc_int8 var57;
21459   orc_int8 var58;
21460   orc_int8 var59;
21461   orc_int8 var60;
21462   orc_union16 var61;
21463   orc_union16 var62;
21464   orc_union16 var63;
21465   orc_union16 var64;
21466   orc_union16 var65;
21467   orc_union16 var66;
21468   orc_int8 var67;
21469   orc_union16 var68;
21470   orc_union16 var69;
21471   orc_union16 var70;
21472   orc_int8 var71;
21473   orc_union16 var72;
21474   orc_union16 var73;
21475   orc_union16 var74;
21476   orc_union16 var75;
21477   orc_int8 var76;
21478   orc_union16 var77;
21479   orc_union32 var78;
21480 
21481   for (j = 0; j < m; j++) {
21482     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
21483     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
21484 
21485     /* 1: loadpb */
21486     var47.x4[0] = 0x00000080;   /* 128 or 6.32404e-322f */
21487     var47.x4[1] = 0x00000080;   /* 128 or 6.32404e-322f */
21488     var47.x4[2] = 0x00000080;   /* 128 or 6.32404e-322f */
21489     var47.x4[3] = 0x00000080;   /* 128 or 6.32404e-322f */
21490     /* 9: loadpw */
21491     var48.i = p1;
21492     /* 11: loadpw */
21493     var49.i = p2;
21494     /* 16: loadpw */
21495     var50.i = p3;
21496     /* 20: loadpw */
21497     var51.i = p4;
21498     /* 23: loadpw */
21499     var52.i = p5;
21500 
21501     for (i = 0; i < n; i++) {
21502       /* 0: loadl */
21503       var46 = ptr4[i];
21504       /* 2: subb */
21505       var54.x4[0] = var46.x4[0] - var47.x4[0];
21506       var54.x4[1] = var46.x4[1] - var47.x4[1];
21507       var54.x4[2] = var46.x4[2] - var47.x4[2];
21508       var54.x4[3] = var46.x4[3] - var47.x4[3];
21509       /* 3: splitlw */
21510       {
21511         orc_union32 _src;
21512         _src.i = var54.i;
21513         var55.i = _src.x2[1];
21514         var56.i = _src.x2[0];
21515       }
21516       /* 4: splitwb */
21517       {
21518         orc_union16 _src;
21519         _src.i = var56.i;
21520         var57 = _src.x2[1];
21521         var58 = _src.x2[0];
21522       }
21523       /* 5: splitwb */
21524       {
21525         orc_union16 _src;
21526         _src.i = var55.i;
21527         var59 = _src.x2[1];
21528         var60 = _src.x2[0];
21529       }
21530       /* 6: splatbw */
21531       var61.i = ((var57 & 0xff) << 8) | (var57 & 0xff);
21532       /* 7: splatbw */
21533       var62.i = ((var60 & 0xff) << 8) | (var60 & 0xff);
21534       /* 8: splatbw */
21535       var63.i = ((var59 & 0xff) << 8) | (var59 & 0xff);
21536       /* 10: mulhsw */
21537       var64.i = (var61.i * var48.i) >> 16;
21538       /* 12: mulhsw */
21539       var65.i = (var63.i * var49.i) >> 16;
21540       /* 13: addw */
21541       var66.i = var64.i + var65.i;
21542       /* 14: convssswb */
21543       var67 = ORC_CLAMP_SB (var66.i);
21544       /* 15: mergebw */
21545       {
21546         orc_union16 _dest;
21547         _dest.x2[0] = var67;
21548         _dest.x2[1] = var58;
21549         var68.i = _dest.i;
21550       }
21551       /* 17: mulhsw */
21552       var69.i = (var62.i * var50.i) >> 16;
21553       /* 18: addw */
21554       var70.i = var64.i + var69.i;
21555       /* 19: convssswb */
21556       var71 = ORC_CLAMP_SB (var70.i);
21557       /* 21: mulhsw */
21558       var72.i = (var62.i * var51.i) >> 16;
21559       /* 22: addw */
21560       var73.i = var64.i + var72.i;
21561       /* 24: mulhsw */
21562       var74.i = (var63.i * var52.i) >> 16;
21563       /* 25: addw */
21564       var75.i = var73.i + var74.i;
21565       /* 26: convssswb */
21566       var76 = ORC_CLAMP_SB (var75.i);
21567       /* 27: mergebw */
21568       {
21569         orc_union16 _dest;
21570         _dest.x2[0] = var71;
21571         _dest.x2[1] = var76;
21572         var77.i = _dest.i;
21573       }
21574       /* 28: mergewl */
21575       {
21576         orc_union32 _dest;
21577         _dest.x2[0] = var77.i;
21578         _dest.x2[1] = var68.i;
21579         var78.i = _dest.i;
21580       }
21581       /* 29: addb */
21582       var53.x4[0] = var78.x4[0] + var47.x4[0];
21583       var53.x4[1] = var78.x4[1] + var47.x4[1];
21584       var53.x4[2] = var78.x4[2] + var47.x4[2];
21585       var53.x4[3] = var78.x4[3] + var47.x4[3];
21586       /* 30: storel */
21587       ptr0[i] = var53;
21588     }
21589   }
21590 
21591 }
21592 
21593 #else
21594 static void
_backup_video_orc_convert_AYUV_BGRA(OrcExecutor * ORC_RESTRICT ex)21595 _backup_video_orc_convert_AYUV_BGRA (OrcExecutor * ORC_RESTRICT ex)
21596 {
21597   int i;
21598   int j;
21599   int n = ex->n;
21600   int m = ex->params[ORC_VAR_A1];
21601   orc_union32 *ORC_RESTRICT ptr0;
21602   const orc_union32 *ORC_RESTRICT ptr4;
21603   orc_union32 var46;
21604 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
21605   volatile orc_union32 var47;
21606 #else
21607   orc_union32 var47;
21608 #endif
21609   orc_union16 var48;
21610   orc_union16 var49;
21611   orc_union16 var50;
21612   orc_union16 var51;
21613   orc_union16 var52;
21614   orc_union32 var53;
21615   orc_union32 var54;
21616   orc_union16 var55;
21617   orc_union16 var56;
21618   orc_int8 var57;
21619   orc_int8 var58;
21620   orc_int8 var59;
21621   orc_int8 var60;
21622   orc_union16 var61;
21623   orc_union16 var62;
21624   orc_union16 var63;
21625   orc_union16 var64;
21626   orc_union16 var65;
21627   orc_union16 var66;
21628   orc_int8 var67;
21629   orc_union16 var68;
21630   orc_union16 var69;
21631   orc_union16 var70;
21632   orc_int8 var71;
21633   orc_union16 var72;
21634   orc_union16 var73;
21635   orc_union16 var74;
21636   orc_union16 var75;
21637   orc_int8 var76;
21638   orc_union16 var77;
21639   orc_union32 var78;
21640 
21641   for (j = 0; j < m; j++) {
21642     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
21643     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
21644 
21645     /* 1: loadpb */
21646     var47.x4[0] = 0x00000080;   /* 128 or 6.32404e-322f */
21647     var47.x4[1] = 0x00000080;   /* 128 or 6.32404e-322f */
21648     var47.x4[2] = 0x00000080;   /* 128 or 6.32404e-322f */
21649     var47.x4[3] = 0x00000080;   /* 128 or 6.32404e-322f */
21650     /* 9: loadpw */
21651     var48.i = ex->params[24];
21652     /* 11: loadpw */
21653     var49.i = ex->params[25];
21654     /* 16: loadpw */
21655     var50.i = ex->params[26];
21656     /* 20: loadpw */
21657     var51.i = ex->params[27];
21658     /* 23: loadpw */
21659     var52.i = ex->params[28];
21660 
21661     for (i = 0; i < n; i++) {
21662       /* 0: loadl */
21663       var46 = ptr4[i];
21664       /* 2: subb */
21665       var54.x4[0] = var46.x4[0] - var47.x4[0];
21666       var54.x4[1] = var46.x4[1] - var47.x4[1];
21667       var54.x4[2] = var46.x4[2] - var47.x4[2];
21668       var54.x4[3] = var46.x4[3] - var47.x4[3];
21669       /* 3: splitlw */
21670       {
21671         orc_union32 _src;
21672         _src.i = var54.i;
21673         var55.i = _src.x2[1];
21674         var56.i = _src.x2[0];
21675       }
21676       /* 4: splitwb */
21677       {
21678         orc_union16 _src;
21679         _src.i = var56.i;
21680         var57 = _src.x2[1];
21681         var58 = _src.x2[0];
21682       }
21683       /* 5: splitwb */
21684       {
21685         orc_union16 _src;
21686         _src.i = var55.i;
21687         var59 = _src.x2[1];
21688         var60 = _src.x2[0];
21689       }
21690       /* 6: splatbw */
21691       var61.i = ((var57 & 0xff) << 8) | (var57 & 0xff);
21692       /* 7: splatbw */
21693       var62.i = ((var60 & 0xff) << 8) | (var60 & 0xff);
21694       /* 8: splatbw */
21695       var63.i = ((var59 & 0xff) << 8) | (var59 & 0xff);
21696       /* 10: mulhsw */
21697       var64.i = (var61.i * var48.i) >> 16;
21698       /* 12: mulhsw */
21699       var65.i = (var63.i * var49.i) >> 16;
21700       /* 13: addw */
21701       var66.i = var64.i + var65.i;
21702       /* 14: convssswb */
21703       var67 = ORC_CLAMP_SB (var66.i);
21704       /* 15: mergebw */
21705       {
21706         orc_union16 _dest;
21707         _dest.x2[0] = var67;
21708         _dest.x2[1] = var58;
21709         var68.i = _dest.i;
21710       }
21711       /* 17: mulhsw */
21712       var69.i = (var62.i * var50.i) >> 16;
21713       /* 18: addw */
21714       var70.i = var64.i + var69.i;
21715       /* 19: convssswb */
21716       var71 = ORC_CLAMP_SB (var70.i);
21717       /* 21: mulhsw */
21718       var72.i = (var62.i * var51.i) >> 16;
21719       /* 22: addw */
21720       var73.i = var64.i + var72.i;
21721       /* 24: mulhsw */
21722       var74.i = (var63.i * var52.i) >> 16;
21723       /* 25: addw */
21724       var75.i = var73.i + var74.i;
21725       /* 26: convssswb */
21726       var76 = ORC_CLAMP_SB (var75.i);
21727       /* 27: mergebw */
21728       {
21729         orc_union16 _dest;
21730         _dest.x2[0] = var71;
21731         _dest.x2[1] = var76;
21732         var77.i = _dest.i;
21733       }
21734       /* 28: mergewl */
21735       {
21736         orc_union32 _dest;
21737         _dest.x2[0] = var77.i;
21738         _dest.x2[1] = var68.i;
21739         var78.i = _dest.i;
21740       }
21741       /* 29: addb */
21742       var53.x4[0] = var78.x4[0] + var47.x4[0];
21743       var53.x4[1] = var78.x4[1] + var47.x4[1];
21744       var53.x4[2] = var78.x4[2] + var47.x4[2];
21745       var53.x4[3] = var78.x4[3] + var47.x4[3];
21746       /* 30: storel */
21747       ptr0[i] = var53;
21748     }
21749   }
21750 
21751 }
21752 
21753 void
video_orc_convert_AYUV_BGRA(guint8 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,int p1,int p2,int p3,int p4,int p5,int n,int m)21754 video_orc_convert_AYUV_BGRA (guint8 * ORC_RESTRICT d1, int d1_stride,
21755     const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
21756     int p4, int p5, int n, int m)
21757 {
21758   OrcExecutor _ex, *ex = &_ex;
21759   static volatile int p_inited = 0;
21760   static OrcCode *c = 0;
21761   void (*func) (OrcExecutor *);
21762 
21763   if (!p_inited) {
21764     orc_once_mutex_lock ();
21765     if (!p_inited) {
21766       OrcProgram *p;
21767 
21768 #if 1
21769       static const orc_uint8 bc[] = {
21770         1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
21771         110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 66, 71, 82, 65, 11,
21772         4, 4, 12, 4, 4, 14, 1, 128, 0, 0, 0, 16, 2, 16, 2, 16,
21773         2, 16, 2, 16, 2, 20, 1, 20, 1, 20, 1, 20, 1, 20, 2, 20,
21774         2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 1, 20, 1, 20, 1, 20,
21775         4, 21, 2, 65, 45, 4, 16, 198, 38, 36, 45, 199, 33, 32, 36, 199,
21776         35, 34, 38, 151, 36, 33, 151, 37, 34, 151, 38, 35, 90, 36, 36, 24,
21777         90, 39, 38, 25, 70, 39, 36, 39, 159, 42, 39, 196, 39, 42, 32, 90,
21778         41, 37, 26, 70, 41, 36, 41, 159, 44, 41, 90, 40, 37, 27, 70, 40,
21779         36, 40, 90, 36, 38, 28, 70, 40, 40, 36, 159, 43, 40, 196, 41, 44,
21780         43, 195, 45, 41, 39, 21, 2, 33, 0, 45, 16, 2, 0,
21781       };
21782       p = orc_program_new_from_static_bytecode (bc);
21783       orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_BGRA);
21784 #else
21785       p = orc_program_new ();
21786       orc_program_set_2d (p);
21787       orc_program_set_name (p, "video_orc_convert_AYUV_BGRA");
21788       orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_BGRA);
21789       orc_program_add_destination (p, 4, "d1");
21790       orc_program_add_source (p, 4, "s1");
21791       orc_program_add_constant (p, 1, 0x00000080, "c1");
21792       orc_program_add_parameter (p, 2, "p1");
21793       orc_program_add_parameter (p, 2, "p2");
21794       orc_program_add_parameter (p, 2, "p3");
21795       orc_program_add_parameter (p, 2, "p4");
21796       orc_program_add_parameter (p, 2, "p5");
21797       orc_program_add_temporary (p, 1, "t1");
21798       orc_program_add_temporary (p, 1, "t2");
21799       orc_program_add_temporary (p, 1, "t3");
21800       orc_program_add_temporary (p, 1, "t4");
21801       orc_program_add_temporary (p, 2, "t5");
21802       orc_program_add_temporary (p, 2, "t6");
21803       orc_program_add_temporary (p, 2, "t7");
21804       orc_program_add_temporary (p, 2, "t8");
21805       orc_program_add_temporary (p, 2, "t9");
21806       orc_program_add_temporary (p, 2, "t10");
21807       orc_program_add_temporary (p, 1, "t11");
21808       orc_program_add_temporary (p, 1, "t12");
21809       orc_program_add_temporary (p, 1, "t13");
21810       orc_program_add_temporary (p, 4, "t14");
21811 
21812       orc_program_append_2 (p, "subb", 2, ORC_VAR_T14, ORC_VAR_S1, ORC_VAR_C1,
21813           ORC_VAR_D1);
21814       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T7, ORC_VAR_T5,
21815           ORC_VAR_T14, ORC_VAR_D1);
21816       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T5,
21817           ORC_VAR_D1);
21818       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T7,
21819           ORC_VAR_D1);
21820       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_D1,
21821           ORC_VAR_D1);
21822       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_D1,
21823           ORC_VAR_D1);
21824       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1,
21825           ORC_VAR_D1);
21826       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_P1,
21827           ORC_VAR_D1);
21828       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_P2,
21829           ORC_VAR_D1);
21830       orc_program_append_2 (p, "addw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T8,
21831           ORC_VAR_D1);
21832       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T11, ORC_VAR_T8,
21833           ORC_VAR_D1, ORC_VAR_D1);
21834       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T8, ORC_VAR_T11,
21835           ORC_VAR_T1, ORC_VAR_D1);
21836       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T10, ORC_VAR_T6, ORC_VAR_P3,
21837           ORC_VAR_D1);
21838       orc_program_append_2 (p, "addw", 0, ORC_VAR_T10, ORC_VAR_T5, ORC_VAR_T10,
21839           ORC_VAR_D1);
21840       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T13, ORC_VAR_T10,
21841           ORC_VAR_D1, ORC_VAR_D1);
21842       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_P4,
21843           ORC_VAR_D1);
21844       orc_program_append_2 (p, "addw", 0, ORC_VAR_T9, ORC_VAR_T5, ORC_VAR_T9,
21845           ORC_VAR_D1);
21846       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T7, ORC_VAR_P5,
21847           ORC_VAR_D1);
21848       orc_program_append_2 (p, "addw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T5,
21849           ORC_VAR_D1);
21850       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T12, ORC_VAR_T9,
21851           ORC_VAR_D1, ORC_VAR_D1);
21852       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T10, ORC_VAR_T13,
21853           ORC_VAR_T12, ORC_VAR_D1);
21854       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T14, ORC_VAR_T10,
21855           ORC_VAR_T8, ORC_VAR_D1);
21856       orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T14, ORC_VAR_C1,
21857           ORC_VAR_D1);
21858 #endif
21859 
21860       orc_program_compile (p);
21861       c = orc_program_take_code (p);
21862       orc_program_free (p);
21863     }
21864     p_inited = TRUE;
21865     orc_once_mutex_unlock ();
21866   }
21867   ex->arrays[ORC_VAR_A2] = c;
21868   ex->program = 0;
21869 
21870   ex->n = n;
21871   ORC_EXECUTOR_M (ex) = m;
21872   ex->arrays[ORC_VAR_D1] = d1;
21873   ex->params[ORC_VAR_D1] = d1_stride;
21874   ex->arrays[ORC_VAR_S1] = (void *) s1;
21875   ex->params[ORC_VAR_S1] = s1_stride;
21876   ex->params[ORC_VAR_P1] = p1;
21877   ex->params[ORC_VAR_P2] = p2;
21878   ex->params[ORC_VAR_P3] = p3;
21879   ex->params[ORC_VAR_P4] = p4;
21880   ex->params[ORC_VAR_P5] = p5;
21881 
21882   func = c->exec;
21883   func (ex);
21884 }
21885 #endif
21886 
21887 
21888 /* video_orc_convert_AYUV_ABGR */
21889 #ifdef DISABLE_ORC
21890 void
video_orc_convert_AYUV_ABGR(guint8 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,int p1,int p2,int p3,int p4,int p5,int n,int m)21891 video_orc_convert_AYUV_ABGR (guint8 * ORC_RESTRICT d1, int d1_stride,
21892     const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
21893     int p4, int p5, int n, int m)
21894 {
21895   int i;
21896   int j;
21897   orc_union32 *ORC_RESTRICT ptr0;
21898   const orc_union32 *ORC_RESTRICT ptr4;
21899   orc_union32 var46;
21900 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
21901   volatile orc_union32 var47;
21902 #else
21903   orc_union32 var47;
21904 #endif
21905   orc_union16 var48;
21906   orc_union16 var49;
21907   orc_union16 var50;
21908   orc_union16 var51;
21909   orc_union16 var52;
21910   orc_union32 var53;
21911   orc_union32 var54;
21912   orc_union16 var55;
21913   orc_union16 var56;
21914   orc_int8 var57;
21915   orc_int8 var58;
21916   orc_int8 var59;
21917   orc_int8 var60;
21918   orc_union16 var61;
21919   orc_union16 var62;
21920   orc_union16 var63;
21921   orc_union16 var64;
21922   orc_union16 var65;
21923   orc_union16 var66;
21924   orc_int8 var67;
21925   orc_union16 var68;
21926   orc_union16 var69;
21927   orc_int8 var70;
21928   orc_union16 var71;
21929   orc_union16 var72;
21930   orc_union16 var73;
21931   orc_union16 var74;
21932   orc_union16 var75;
21933   orc_int8 var76;
21934   orc_union16 var77;
21935   orc_union32 var78;
21936 
21937   for (j = 0; j < m; j++) {
21938     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
21939     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
21940 
21941     /* 1: loadpb */
21942     var47.x4[0] = 0x00000080;   /* 128 or 6.32404e-322f */
21943     var47.x4[1] = 0x00000080;   /* 128 or 6.32404e-322f */
21944     var47.x4[2] = 0x00000080;   /* 128 or 6.32404e-322f */
21945     var47.x4[3] = 0x00000080;   /* 128 or 6.32404e-322f */
21946     /* 9: loadpw */
21947     var48.i = p1;
21948     /* 11: loadpw */
21949     var49.i = p2;
21950     /* 15: loadpw */
21951     var50.i = p3;
21952     /* 20: loadpw */
21953     var51.i = p4;
21954     /* 23: loadpw */
21955     var52.i = p5;
21956 
21957     for (i = 0; i < n; i++) {
21958       /* 0: loadl */
21959       var46 = ptr4[i];
21960       /* 2: subb */
21961       var54.x4[0] = var46.x4[0] - var47.x4[0];
21962       var54.x4[1] = var46.x4[1] - var47.x4[1];
21963       var54.x4[2] = var46.x4[2] - var47.x4[2];
21964       var54.x4[3] = var46.x4[3] - var47.x4[3];
21965       /* 3: splitlw */
21966       {
21967         orc_union32 _src;
21968         _src.i = var54.i;
21969         var55.i = _src.x2[1];
21970         var56.i = _src.x2[0];
21971       }
21972       /* 4: splitwb */
21973       {
21974         orc_union16 _src;
21975         _src.i = var56.i;
21976         var57 = _src.x2[1];
21977         var58 = _src.x2[0];
21978       }
21979       /* 5: splitwb */
21980       {
21981         orc_union16 _src;
21982         _src.i = var55.i;
21983         var59 = _src.x2[1];
21984         var60 = _src.x2[0];
21985       }
21986       /* 6: splatbw */
21987       var61.i = ((var57 & 0xff) << 8) | (var57 & 0xff);
21988       /* 7: splatbw */
21989       var62.i = ((var60 & 0xff) << 8) | (var60 & 0xff);
21990       /* 8: splatbw */
21991       var63.i = ((var59 & 0xff) << 8) | (var59 & 0xff);
21992       /* 10: mulhsw */
21993       var64.i = (var61.i * var48.i) >> 16;
21994       /* 12: mulhsw */
21995       var65.i = (var63.i * var49.i) >> 16;
21996       /* 13: addw */
21997       var66.i = var64.i + var65.i;
21998       /* 14: convssswb */
21999       var67 = ORC_CLAMP_SB (var66.i);
22000       /* 16: mulhsw */
22001       var68.i = (var62.i * var50.i) >> 16;
22002       /* 17: addw */
22003       var69.i = var64.i + var68.i;
22004       /* 18: convssswb */
22005       var70 = ORC_CLAMP_SB (var69.i);
22006       /* 19: mergebw */
22007       {
22008         orc_union16 _dest;
22009         _dest.x2[0] = var58;
22010         _dest.x2[1] = var70;
22011         var71.i = _dest.i;
22012       }
22013       /* 21: mulhsw */
22014       var72.i = (var62.i * var51.i) >> 16;
22015       /* 22: addw */
22016       var73.i = var64.i + var72.i;
22017       /* 24: mulhsw */
22018       var74.i = (var63.i * var52.i) >> 16;
22019       /* 25: addw */
22020       var75.i = var73.i + var74.i;
22021       /* 26: convssswb */
22022       var76 = ORC_CLAMP_SB (var75.i);
22023       /* 27: mergebw */
22024       {
22025         orc_union16 _dest;
22026         _dest.x2[0] = var76;
22027         _dest.x2[1] = var67;
22028         var77.i = _dest.i;
22029       }
22030       /* 28: mergewl */
22031       {
22032         orc_union32 _dest;
22033         _dest.x2[0] = var71.i;
22034         _dest.x2[1] = var77.i;
22035         var78.i = _dest.i;
22036       }
22037       /* 29: addb */
22038       var53.x4[0] = var78.x4[0] + var47.x4[0];
22039       var53.x4[1] = var78.x4[1] + var47.x4[1];
22040       var53.x4[2] = var78.x4[2] + var47.x4[2];
22041       var53.x4[3] = var78.x4[3] + var47.x4[3];
22042       /* 30: storel */
22043       ptr0[i] = var53;
22044     }
22045   }
22046 
22047 }
22048 
22049 #else
22050 static void
_backup_video_orc_convert_AYUV_ABGR(OrcExecutor * ORC_RESTRICT ex)22051 _backup_video_orc_convert_AYUV_ABGR (OrcExecutor * ORC_RESTRICT ex)
22052 {
22053   int i;
22054   int j;
22055   int n = ex->n;
22056   int m = ex->params[ORC_VAR_A1];
22057   orc_union32 *ORC_RESTRICT ptr0;
22058   const orc_union32 *ORC_RESTRICT ptr4;
22059   orc_union32 var46;
22060 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
22061   volatile orc_union32 var47;
22062 #else
22063   orc_union32 var47;
22064 #endif
22065   orc_union16 var48;
22066   orc_union16 var49;
22067   orc_union16 var50;
22068   orc_union16 var51;
22069   orc_union16 var52;
22070   orc_union32 var53;
22071   orc_union32 var54;
22072   orc_union16 var55;
22073   orc_union16 var56;
22074   orc_int8 var57;
22075   orc_int8 var58;
22076   orc_int8 var59;
22077   orc_int8 var60;
22078   orc_union16 var61;
22079   orc_union16 var62;
22080   orc_union16 var63;
22081   orc_union16 var64;
22082   orc_union16 var65;
22083   orc_union16 var66;
22084   orc_int8 var67;
22085   orc_union16 var68;
22086   orc_union16 var69;
22087   orc_int8 var70;
22088   orc_union16 var71;
22089   orc_union16 var72;
22090   orc_union16 var73;
22091   orc_union16 var74;
22092   orc_union16 var75;
22093   orc_int8 var76;
22094   orc_union16 var77;
22095   orc_union32 var78;
22096 
22097   for (j = 0; j < m; j++) {
22098     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
22099     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
22100 
22101     /* 1: loadpb */
22102     var47.x4[0] = 0x00000080;   /* 128 or 6.32404e-322f */
22103     var47.x4[1] = 0x00000080;   /* 128 or 6.32404e-322f */
22104     var47.x4[2] = 0x00000080;   /* 128 or 6.32404e-322f */
22105     var47.x4[3] = 0x00000080;   /* 128 or 6.32404e-322f */
22106     /* 9: loadpw */
22107     var48.i = ex->params[24];
22108     /* 11: loadpw */
22109     var49.i = ex->params[25];
22110     /* 15: loadpw */
22111     var50.i = ex->params[26];
22112     /* 20: loadpw */
22113     var51.i = ex->params[27];
22114     /* 23: loadpw */
22115     var52.i = ex->params[28];
22116 
22117     for (i = 0; i < n; i++) {
22118       /* 0: loadl */
22119       var46 = ptr4[i];
22120       /* 2: subb */
22121       var54.x4[0] = var46.x4[0] - var47.x4[0];
22122       var54.x4[1] = var46.x4[1] - var47.x4[1];
22123       var54.x4[2] = var46.x4[2] - var47.x4[2];
22124       var54.x4[3] = var46.x4[3] - var47.x4[3];
22125       /* 3: splitlw */
22126       {
22127         orc_union32 _src;
22128         _src.i = var54.i;
22129         var55.i = _src.x2[1];
22130         var56.i = _src.x2[0];
22131       }
22132       /* 4: splitwb */
22133       {
22134         orc_union16 _src;
22135         _src.i = var56.i;
22136         var57 = _src.x2[1];
22137         var58 = _src.x2[0];
22138       }
22139       /* 5: splitwb */
22140       {
22141         orc_union16 _src;
22142         _src.i = var55.i;
22143         var59 = _src.x2[1];
22144         var60 = _src.x2[0];
22145       }
22146       /* 6: splatbw */
22147       var61.i = ((var57 & 0xff) << 8) | (var57 & 0xff);
22148       /* 7: splatbw */
22149       var62.i = ((var60 & 0xff) << 8) | (var60 & 0xff);
22150       /* 8: splatbw */
22151       var63.i = ((var59 & 0xff) << 8) | (var59 & 0xff);
22152       /* 10: mulhsw */
22153       var64.i = (var61.i * var48.i) >> 16;
22154       /* 12: mulhsw */
22155       var65.i = (var63.i * var49.i) >> 16;
22156       /* 13: addw */
22157       var66.i = var64.i + var65.i;
22158       /* 14: convssswb */
22159       var67 = ORC_CLAMP_SB (var66.i);
22160       /* 16: mulhsw */
22161       var68.i = (var62.i * var50.i) >> 16;
22162       /* 17: addw */
22163       var69.i = var64.i + var68.i;
22164       /* 18: convssswb */
22165       var70 = ORC_CLAMP_SB (var69.i);
22166       /* 19: mergebw */
22167       {
22168         orc_union16 _dest;
22169         _dest.x2[0] = var58;
22170         _dest.x2[1] = var70;
22171         var71.i = _dest.i;
22172       }
22173       /* 21: mulhsw */
22174       var72.i = (var62.i * var51.i) >> 16;
22175       /* 22: addw */
22176       var73.i = var64.i + var72.i;
22177       /* 24: mulhsw */
22178       var74.i = (var63.i * var52.i) >> 16;
22179       /* 25: addw */
22180       var75.i = var73.i + var74.i;
22181       /* 26: convssswb */
22182       var76 = ORC_CLAMP_SB (var75.i);
22183       /* 27: mergebw */
22184       {
22185         orc_union16 _dest;
22186         _dest.x2[0] = var76;
22187         _dest.x2[1] = var67;
22188         var77.i = _dest.i;
22189       }
22190       /* 28: mergewl */
22191       {
22192         orc_union32 _dest;
22193         _dest.x2[0] = var71.i;
22194         _dest.x2[1] = var77.i;
22195         var78.i = _dest.i;
22196       }
22197       /* 29: addb */
22198       var53.x4[0] = var78.x4[0] + var47.x4[0];
22199       var53.x4[1] = var78.x4[1] + var47.x4[1];
22200       var53.x4[2] = var78.x4[2] + var47.x4[2];
22201       var53.x4[3] = var78.x4[3] + var47.x4[3];
22202       /* 30: storel */
22203       ptr0[i] = var53;
22204     }
22205   }
22206 
22207 }
22208 
22209 void
video_orc_convert_AYUV_ABGR(guint8 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,int p1,int p2,int p3,int p4,int p5,int n,int m)22210 video_orc_convert_AYUV_ABGR (guint8 * ORC_RESTRICT d1, int d1_stride,
22211     const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
22212     int p4, int p5, int n, int m)
22213 {
22214   OrcExecutor _ex, *ex = &_ex;
22215   static volatile int p_inited = 0;
22216   static OrcCode *c = 0;
22217   void (*func) (OrcExecutor *);
22218 
22219   if (!p_inited) {
22220     orc_once_mutex_lock ();
22221     if (!p_inited) {
22222       OrcProgram *p;
22223 
22224 #if 1
22225       static const orc_uint8 bc[] = {
22226         1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
22227         110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 65, 66, 71, 82, 11,
22228         4, 4, 12, 4, 4, 14, 1, 128, 0, 0, 0, 16, 2, 16, 2, 16,
22229         2, 16, 2, 16, 2, 20, 1, 20, 1, 20, 1, 20, 1, 20, 2, 20,
22230         2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 1, 20, 1, 20, 1, 20,
22231         4, 21, 2, 65, 45, 4, 16, 198, 38, 36, 45, 199, 33, 32, 36, 199,
22232         35, 34, 38, 151, 36, 33, 151, 37, 34, 151, 38, 35, 90, 36, 36, 24,
22233         90, 39, 38, 25, 70, 39, 36, 39, 159, 42, 39, 90, 41, 37, 26, 70,
22234         41, 36, 41, 159, 44, 41, 196, 41, 32, 44, 90, 40, 37, 27, 70, 40,
22235         36, 40, 90, 36, 38, 28, 70, 40, 40, 36, 159, 43, 40, 196, 39, 43,
22236         42, 195, 45, 41, 39, 21, 2, 33, 0, 45, 16, 2, 0,
22237       };
22238       p = orc_program_new_from_static_bytecode (bc);
22239       orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_ABGR);
22240 #else
22241       p = orc_program_new ();
22242       orc_program_set_2d (p);
22243       orc_program_set_name (p, "video_orc_convert_AYUV_ABGR");
22244       orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_ABGR);
22245       orc_program_add_destination (p, 4, "d1");
22246       orc_program_add_source (p, 4, "s1");
22247       orc_program_add_constant (p, 1, 0x00000080, "c1");
22248       orc_program_add_parameter (p, 2, "p1");
22249       orc_program_add_parameter (p, 2, "p2");
22250       orc_program_add_parameter (p, 2, "p3");
22251       orc_program_add_parameter (p, 2, "p4");
22252       orc_program_add_parameter (p, 2, "p5");
22253       orc_program_add_temporary (p, 1, "t1");
22254       orc_program_add_temporary (p, 1, "t2");
22255       orc_program_add_temporary (p, 1, "t3");
22256       orc_program_add_temporary (p, 1, "t4");
22257       orc_program_add_temporary (p, 2, "t5");
22258       orc_program_add_temporary (p, 2, "t6");
22259       orc_program_add_temporary (p, 2, "t7");
22260       orc_program_add_temporary (p, 2, "t8");
22261       orc_program_add_temporary (p, 2, "t9");
22262       orc_program_add_temporary (p, 2, "t10");
22263       orc_program_add_temporary (p, 1, "t11");
22264       orc_program_add_temporary (p, 1, "t12");
22265       orc_program_add_temporary (p, 1, "t13");
22266       orc_program_add_temporary (p, 4, "t14");
22267 
22268       orc_program_append_2 (p, "subb", 2, ORC_VAR_T14, ORC_VAR_S1, ORC_VAR_C1,
22269           ORC_VAR_D1);
22270       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T7, ORC_VAR_T5,
22271           ORC_VAR_T14, ORC_VAR_D1);
22272       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T5,
22273           ORC_VAR_D1);
22274       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T7,
22275           ORC_VAR_D1);
22276       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_D1,
22277           ORC_VAR_D1);
22278       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_D1,
22279           ORC_VAR_D1);
22280       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1,
22281           ORC_VAR_D1);
22282       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_P1,
22283           ORC_VAR_D1);
22284       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_P2,
22285           ORC_VAR_D1);
22286       orc_program_append_2 (p, "addw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T8,
22287           ORC_VAR_D1);
22288       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T11, ORC_VAR_T8,
22289           ORC_VAR_D1, ORC_VAR_D1);
22290       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T10, ORC_VAR_T6, ORC_VAR_P3,
22291           ORC_VAR_D1);
22292       orc_program_append_2 (p, "addw", 0, ORC_VAR_T10, ORC_VAR_T5, ORC_VAR_T10,
22293           ORC_VAR_D1);
22294       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T13, ORC_VAR_T10,
22295           ORC_VAR_D1, ORC_VAR_D1);
22296       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T10, ORC_VAR_T1,
22297           ORC_VAR_T13, ORC_VAR_D1);
22298       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_P4,
22299           ORC_VAR_D1);
22300       orc_program_append_2 (p, "addw", 0, ORC_VAR_T9, ORC_VAR_T5, ORC_VAR_T9,
22301           ORC_VAR_D1);
22302       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T7, ORC_VAR_P5,
22303           ORC_VAR_D1);
22304       orc_program_append_2 (p, "addw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T5,
22305           ORC_VAR_D1);
22306       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T12, ORC_VAR_T9,
22307           ORC_VAR_D1, ORC_VAR_D1);
22308       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T8, ORC_VAR_T12,
22309           ORC_VAR_T11, ORC_VAR_D1);
22310       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T14, ORC_VAR_T10,
22311           ORC_VAR_T8, ORC_VAR_D1);
22312       orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T14, ORC_VAR_C1,
22313           ORC_VAR_D1);
22314 #endif
22315 
22316       orc_program_compile (p);
22317       c = orc_program_take_code (p);
22318       orc_program_free (p);
22319     }
22320     p_inited = TRUE;
22321     orc_once_mutex_unlock ();
22322   }
22323   ex->arrays[ORC_VAR_A2] = c;
22324   ex->program = 0;
22325 
22326   ex->n = n;
22327   ORC_EXECUTOR_M (ex) = m;
22328   ex->arrays[ORC_VAR_D1] = d1;
22329   ex->params[ORC_VAR_D1] = d1_stride;
22330   ex->arrays[ORC_VAR_S1] = (void *) s1;
22331   ex->params[ORC_VAR_S1] = s1_stride;
22332   ex->params[ORC_VAR_P1] = p1;
22333   ex->params[ORC_VAR_P2] = p2;
22334   ex->params[ORC_VAR_P3] = p3;
22335   ex->params[ORC_VAR_P4] = p4;
22336   ex->params[ORC_VAR_P5] = p5;
22337 
22338   func = c->exec;
22339   func (ex);
22340 }
22341 #endif
22342 
22343 
22344 /* video_orc_convert_AYUV_RGBA */
22345 #ifdef DISABLE_ORC
22346 void
video_orc_convert_AYUV_RGBA(guint8 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,int p1,int p2,int p3,int p4,int p5,int n,int m)22347 video_orc_convert_AYUV_RGBA (guint8 * ORC_RESTRICT d1, int d1_stride,
22348     const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
22349     int p4, int p5, int n, int m)
22350 {
22351   int i;
22352   int j;
22353   orc_union32 *ORC_RESTRICT ptr0;
22354   const orc_union32 *ORC_RESTRICT ptr4;
22355   orc_union32 var46;
22356 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
22357   volatile orc_union32 var47;
22358 #else
22359   orc_union32 var47;
22360 #endif
22361   orc_union16 var48;
22362   orc_union16 var49;
22363   orc_union16 var50;
22364   orc_union16 var51;
22365   orc_union16 var52;
22366   orc_union32 var53;
22367   orc_union32 var54;
22368   orc_union16 var55;
22369   orc_union16 var56;
22370   orc_int8 var57;
22371   orc_int8 var58;
22372   orc_int8 var59;
22373   orc_int8 var60;
22374   orc_union16 var61;
22375   orc_union16 var62;
22376   orc_union16 var63;
22377   orc_union16 var64;
22378   orc_union16 var65;
22379   orc_union16 var66;
22380   orc_int8 var67;
22381   orc_union16 var68;
22382   orc_union16 var69;
22383   orc_int8 var70;
22384   orc_union16 var71;
22385   orc_union16 var72;
22386   orc_union16 var73;
22387   orc_union16 var74;
22388   orc_union16 var75;
22389   orc_int8 var76;
22390   orc_union16 var77;
22391   orc_union32 var78;
22392 
22393   for (j = 0; j < m; j++) {
22394     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
22395     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
22396 
22397     /* 1: loadpb */
22398     var47.x4[0] = 0x00000080;   /* 128 or 6.32404e-322f */
22399     var47.x4[1] = 0x00000080;   /* 128 or 6.32404e-322f */
22400     var47.x4[2] = 0x00000080;   /* 128 or 6.32404e-322f */
22401     var47.x4[3] = 0x00000080;   /* 128 or 6.32404e-322f */
22402     /* 9: loadpw */
22403     var48.i = p1;
22404     /* 11: loadpw */
22405     var49.i = p2;
22406     /* 15: loadpw */
22407     var50.i = p3;
22408     /* 20: loadpw */
22409     var51.i = p4;
22410     /* 23: loadpw */
22411     var52.i = p5;
22412 
22413     for (i = 0; i < n; i++) {
22414       /* 0: loadl */
22415       var46 = ptr4[i];
22416       /* 2: subb */
22417       var54.x4[0] = var46.x4[0] - var47.x4[0];
22418       var54.x4[1] = var46.x4[1] - var47.x4[1];
22419       var54.x4[2] = var46.x4[2] - var47.x4[2];
22420       var54.x4[3] = var46.x4[3] - var47.x4[3];
22421       /* 3: splitlw */
22422       {
22423         orc_union32 _src;
22424         _src.i = var54.i;
22425         var55.i = _src.x2[1];
22426         var56.i = _src.x2[0];
22427       }
22428       /* 4: splitwb */
22429       {
22430         orc_union16 _src;
22431         _src.i = var56.i;
22432         var57 = _src.x2[1];
22433         var58 = _src.x2[0];
22434       }
22435       /* 5: splitwb */
22436       {
22437         orc_union16 _src;
22438         _src.i = var55.i;
22439         var59 = _src.x2[1];
22440         var60 = _src.x2[0];
22441       }
22442       /* 6: splatbw */
22443       var61.i = ((var57 & 0xff) << 8) | (var57 & 0xff);
22444       /* 7: splatbw */
22445       var62.i = ((var60 & 0xff) << 8) | (var60 & 0xff);
22446       /* 8: splatbw */
22447       var63.i = ((var59 & 0xff) << 8) | (var59 & 0xff);
22448       /* 10: mulhsw */
22449       var64.i = (var61.i * var48.i) >> 16;
22450       /* 12: mulhsw */
22451       var65.i = (var63.i * var49.i) >> 16;
22452       /* 13: addw */
22453       var66.i = var64.i + var65.i;
22454       /* 14: convssswb */
22455       var67 = ORC_CLAMP_SB (var66.i);
22456       /* 16: mulhsw */
22457       var68.i = (var62.i * var50.i) >> 16;
22458       /* 17: addw */
22459       var69.i = var64.i + var68.i;
22460       /* 18: convssswb */
22461       var70 = ORC_CLAMP_SB (var69.i);
22462       /* 19: mergebw */
22463       {
22464         orc_union16 _dest;
22465         _dest.x2[0] = var70;
22466         _dest.x2[1] = var58;
22467         var71.i = _dest.i;
22468       }
22469       /* 21: mulhsw */
22470       var72.i = (var62.i * var51.i) >> 16;
22471       /* 22: addw */
22472       var73.i = var64.i + var72.i;
22473       /* 24: mulhsw */
22474       var74.i = (var63.i * var52.i) >> 16;
22475       /* 25: addw */
22476       var75.i = var73.i + var74.i;
22477       /* 26: convssswb */
22478       var76 = ORC_CLAMP_SB (var75.i);
22479       /* 27: mergebw */
22480       {
22481         orc_union16 _dest;
22482         _dest.x2[0] = var67;
22483         _dest.x2[1] = var76;
22484         var77.i = _dest.i;
22485       }
22486       /* 28: mergewl */
22487       {
22488         orc_union32 _dest;
22489         _dest.x2[0] = var77.i;
22490         _dest.x2[1] = var71.i;
22491         var78.i = _dest.i;
22492       }
22493       /* 29: addb */
22494       var53.x4[0] = var78.x4[0] + var47.x4[0];
22495       var53.x4[1] = var78.x4[1] + var47.x4[1];
22496       var53.x4[2] = var78.x4[2] + var47.x4[2];
22497       var53.x4[3] = var78.x4[3] + var47.x4[3];
22498       /* 30: storel */
22499       ptr0[i] = var53;
22500     }
22501   }
22502 
22503 }
22504 
22505 #else
22506 static void
_backup_video_orc_convert_AYUV_RGBA(OrcExecutor * ORC_RESTRICT ex)22507 _backup_video_orc_convert_AYUV_RGBA (OrcExecutor * ORC_RESTRICT ex)
22508 {
22509   int i;
22510   int j;
22511   int n = ex->n;
22512   int m = ex->params[ORC_VAR_A1];
22513   orc_union32 *ORC_RESTRICT ptr0;
22514   const orc_union32 *ORC_RESTRICT ptr4;
22515   orc_union32 var46;
22516 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
22517   volatile orc_union32 var47;
22518 #else
22519   orc_union32 var47;
22520 #endif
22521   orc_union16 var48;
22522   orc_union16 var49;
22523   orc_union16 var50;
22524   orc_union16 var51;
22525   orc_union16 var52;
22526   orc_union32 var53;
22527   orc_union32 var54;
22528   orc_union16 var55;
22529   orc_union16 var56;
22530   orc_int8 var57;
22531   orc_int8 var58;
22532   orc_int8 var59;
22533   orc_int8 var60;
22534   orc_union16 var61;
22535   orc_union16 var62;
22536   orc_union16 var63;
22537   orc_union16 var64;
22538   orc_union16 var65;
22539   orc_union16 var66;
22540   orc_int8 var67;
22541   orc_union16 var68;
22542   orc_union16 var69;
22543   orc_int8 var70;
22544   orc_union16 var71;
22545   orc_union16 var72;
22546   orc_union16 var73;
22547   orc_union16 var74;
22548   orc_union16 var75;
22549   orc_int8 var76;
22550   orc_union16 var77;
22551   orc_union32 var78;
22552 
22553   for (j = 0; j < m; j++) {
22554     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
22555     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
22556 
22557     /* 1: loadpb */
22558     var47.x4[0] = 0x00000080;   /* 128 or 6.32404e-322f */
22559     var47.x4[1] = 0x00000080;   /* 128 or 6.32404e-322f */
22560     var47.x4[2] = 0x00000080;   /* 128 or 6.32404e-322f */
22561     var47.x4[3] = 0x00000080;   /* 128 or 6.32404e-322f */
22562     /* 9: loadpw */
22563     var48.i = ex->params[24];
22564     /* 11: loadpw */
22565     var49.i = ex->params[25];
22566     /* 15: loadpw */
22567     var50.i = ex->params[26];
22568     /* 20: loadpw */
22569     var51.i = ex->params[27];
22570     /* 23: loadpw */
22571     var52.i = ex->params[28];
22572 
22573     for (i = 0; i < n; i++) {
22574       /* 0: loadl */
22575       var46 = ptr4[i];
22576       /* 2: subb */
22577       var54.x4[0] = var46.x4[0] - var47.x4[0];
22578       var54.x4[1] = var46.x4[1] - var47.x4[1];
22579       var54.x4[2] = var46.x4[2] - var47.x4[2];
22580       var54.x4[3] = var46.x4[3] - var47.x4[3];
22581       /* 3: splitlw */
22582       {
22583         orc_union32 _src;
22584         _src.i = var54.i;
22585         var55.i = _src.x2[1];
22586         var56.i = _src.x2[0];
22587       }
22588       /* 4: splitwb */
22589       {
22590         orc_union16 _src;
22591         _src.i = var56.i;
22592         var57 = _src.x2[1];
22593         var58 = _src.x2[0];
22594       }
22595       /* 5: splitwb */
22596       {
22597         orc_union16 _src;
22598         _src.i = var55.i;
22599         var59 = _src.x2[1];
22600         var60 = _src.x2[0];
22601       }
22602       /* 6: splatbw */
22603       var61.i = ((var57 & 0xff) << 8) | (var57 & 0xff);
22604       /* 7: splatbw */
22605       var62.i = ((var60 & 0xff) << 8) | (var60 & 0xff);
22606       /* 8: splatbw */
22607       var63.i = ((var59 & 0xff) << 8) | (var59 & 0xff);
22608       /* 10: mulhsw */
22609       var64.i = (var61.i * var48.i) >> 16;
22610       /* 12: mulhsw */
22611       var65.i = (var63.i * var49.i) >> 16;
22612       /* 13: addw */
22613       var66.i = var64.i + var65.i;
22614       /* 14: convssswb */
22615       var67 = ORC_CLAMP_SB (var66.i);
22616       /* 16: mulhsw */
22617       var68.i = (var62.i * var50.i) >> 16;
22618       /* 17: addw */
22619       var69.i = var64.i + var68.i;
22620       /* 18: convssswb */
22621       var70 = ORC_CLAMP_SB (var69.i);
22622       /* 19: mergebw */
22623       {
22624         orc_union16 _dest;
22625         _dest.x2[0] = var70;
22626         _dest.x2[1] = var58;
22627         var71.i = _dest.i;
22628       }
22629       /* 21: mulhsw */
22630       var72.i = (var62.i * var51.i) >> 16;
22631       /* 22: addw */
22632       var73.i = var64.i + var72.i;
22633       /* 24: mulhsw */
22634       var74.i = (var63.i * var52.i) >> 16;
22635       /* 25: addw */
22636       var75.i = var73.i + var74.i;
22637       /* 26: convssswb */
22638       var76 = ORC_CLAMP_SB (var75.i);
22639       /* 27: mergebw */
22640       {
22641         orc_union16 _dest;
22642         _dest.x2[0] = var67;
22643         _dest.x2[1] = var76;
22644         var77.i = _dest.i;
22645       }
22646       /* 28: mergewl */
22647       {
22648         orc_union32 _dest;
22649         _dest.x2[0] = var77.i;
22650         _dest.x2[1] = var71.i;
22651         var78.i = _dest.i;
22652       }
22653       /* 29: addb */
22654       var53.x4[0] = var78.x4[0] + var47.x4[0];
22655       var53.x4[1] = var78.x4[1] + var47.x4[1];
22656       var53.x4[2] = var78.x4[2] + var47.x4[2];
22657       var53.x4[3] = var78.x4[3] + var47.x4[3];
22658       /* 30: storel */
22659       ptr0[i] = var53;
22660     }
22661   }
22662 
22663 }
22664 
22665 void
video_orc_convert_AYUV_RGBA(guint8 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,int p1,int p2,int p3,int p4,int p5,int n,int m)22666 video_orc_convert_AYUV_RGBA (guint8 * ORC_RESTRICT d1, int d1_stride,
22667     const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
22668     int p4, int p5, int n, int m)
22669 {
22670   OrcExecutor _ex, *ex = &_ex;
22671   static volatile int p_inited = 0;
22672   static OrcCode *c = 0;
22673   void (*func) (OrcExecutor *);
22674 
22675   if (!p_inited) {
22676     orc_once_mutex_lock ();
22677     if (!p_inited) {
22678       OrcProgram *p;
22679 
22680 #if 1
22681       static const orc_uint8 bc[] = {
22682         1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
22683         110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 82, 71, 66, 65, 11,
22684         4, 4, 12, 4, 4, 14, 1, 128, 0, 0, 0, 16, 2, 16, 2, 16,
22685         2, 16, 2, 16, 2, 20, 1, 20, 1, 20, 1, 20, 1, 20, 2, 20,
22686         2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 1, 20, 1, 20, 1, 20,
22687         4, 21, 2, 65, 45, 4, 16, 198, 38, 36, 45, 199, 33, 32, 36, 199,
22688         35, 34, 38, 151, 36, 33, 151, 37, 34, 151, 38, 35, 90, 36, 36, 24,
22689         90, 39, 38, 25, 70, 39, 36, 39, 159, 42, 39, 90, 41, 37, 26, 70,
22690         41, 36, 41, 159, 44, 41, 196, 41, 44, 32, 90, 40, 37, 27, 70, 40,
22691         36, 40, 90, 36, 38, 28, 70, 40, 40, 36, 159, 43, 40, 196, 39, 42,
22692         43, 195, 45, 39, 41, 21, 2, 33, 0, 45, 16, 2, 0,
22693       };
22694       p = orc_program_new_from_static_bytecode (bc);
22695       orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_RGBA);
22696 #else
22697       p = orc_program_new ();
22698       orc_program_set_2d (p);
22699       orc_program_set_name (p, "video_orc_convert_AYUV_RGBA");
22700       orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_RGBA);
22701       orc_program_add_destination (p, 4, "d1");
22702       orc_program_add_source (p, 4, "s1");
22703       orc_program_add_constant (p, 1, 0x00000080, "c1");
22704       orc_program_add_parameter (p, 2, "p1");
22705       orc_program_add_parameter (p, 2, "p2");
22706       orc_program_add_parameter (p, 2, "p3");
22707       orc_program_add_parameter (p, 2, "p4");
22708       orc_program_add_parameter (p, 2, "p5");
22709       orc_program_add_temporary (p, 1, "t1");
22710       orc_program_add_temporary (p, 1, "t2");
22711       orc_program_add_temporary (p, 1, "t3");
22712       orc_program_add_temporary (p, 1, "t4");
22713       orc_program_add_temporary (p, 2, "t5");
22714       orc_program_add_temporary (p, 2, "t6");
22715       orc_program_add_temporary (p, 2, "t7");
22716       orc_program_add_temporary (p, 2, "t8");
22717       orc_program_add_temporary (p, 2, "t9");
22718       orc_program_add_temporary (p, 2, "t10");
22719       orc_program_add_temporary (p, 1, "t11");
22720       orc_program_add_temporary (p, 1, "t12");
22721       orc_program_add_temporary (p, 1, "t13");
22722       orc_program_add_temporary (p, 4, "t14");
22723 
22724       orc_program_append_2 (p, "subb", 2, ORC_VAR_T14, ORC_VAR_S1, ORC_VAR_C1,
22725           ORC_VAR_D1);
22726       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T7, ORC_VAR_T5,
22727           ORC_VAR_T14, ORC_VAR_D1);
22728       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T5,
22729           ORC_VAR_D1);
22730       orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T7,
22731           ORC_VAR_D1);
22732       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_D1,
22733           ORC_VAR_D1);
22734       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_D1,
22735           ORC_VAR_D1);
22736       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1,
22737           ORC_VAR_D1);
22738       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_P1,
22739           ORC_VAR_D1);
22740       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_P2,
22741           ORC_VAR_D1);
22742       orc_program_append_2 (p, "addw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T8,
22743           ORC_VAR_D1);
22744       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T11, ORC_VAR_T8,
22745           ORC_VAR_D1, ORC_VAR_D1);
22746       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T10, ORC_VAR_T6, ORC_VAR_P3,
22747           ORC_VAR_D1);
22748       orc_program_append_2 (p, "addw", 0, ORC_VAR_T10, ORC_VAR_T5, ORC_VAR_T10,
22749           ORC_VAR_D1);
22750       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T13, ORC_VAR_T10,
22751           ORC_VAR_D1, ORC_VAR_D1);
22752       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T10, ORC_VAR_T13,
22753           ORC_VAR_T1, ORC_VAR_D1);
22754       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_P4,
22755           ORC_VAR_D1);
22756       orc_program_append_2 (p, "addw", 0, ORC_VAR_T9, ORC_VAR_T5, ORC_VAR_T9,
22757           ORC_VAR_D1);
22758       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T7, ORC_VAR_P5,
22759           ORC_VAR_D1);
22760       orc_program_append_2 (p, "addw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T5,
22761           ORC_VAR_D1);
22762       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T12, ORC_VAR_T9,
22763           ORC_VAR_D1, ORC_VAR_D1);
22764       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T8, ORC_VAR_T11,
22765           ORC_VAR_T12, ORC_VAR_D1);
22766       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T14, ORC_VAR_T8,
22767           ORC_VAR_T10, ORC_VAR_D1);
22768       orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T14, ORC_VAR_C1,
22769           ORC_VAR_D1);
22770 #endif
22771 
22772       orc_program_compile (p);
22773       c = orc_program_take_code (p);
22774       orc_program_free (p);
22775     }
22776     p_inited = TRUE;
22777     orc_once_mutex_unlock ();
22778   }
22779   ex->arrays[ORC_VAR_A2] = c;
22780   ex->program = 0;
22781 
22782   ex->n = n;
22783   ORC_EXECUTOR_M (ex) = m;
22784   ex->arrays[ORC_VAR_D1] = d1;
22785   ex->params[ORC_VAR_D1] = d1_stride;
22786   ex->arrays[ORC_VAR_S1] = (void *) s1;
22787   ex->params[ORC_VAR_S1] = s1_stride;
22788   ex->params[ORC_VAR_P1] = p1;
22789   ex->params[ORC_VAR_P2] = p2;
22790   ex->params[ORC_VAR_P3] = p3;
22791   ex->params[ORC_VAR_P4] = p4;
22792   ex->params[ORC_VAR_P5] = p5;
22793 
22794   func = c->exec;
22795   func (ex);
22796 }
22797 #endif
22798 
22799 
22800 /* video_orc_convert_I420_BGRA */
22801 #ifdef DISABLE_ORC
22802 void
video_orc_convert_I420_BGRA(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,const guint8 * ORC_RESTRICT s3,int p1,int p2,int p3,int p4,int p5,int n)22803 video_orc_convert_I420_BGRA (guint8 * ORC_RESTRICT d1,
22804     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
22805     const guint8 * ORC_RESTRICT s3, int p1, int p2, int p3, int p4, int p5,
22806     int n)
22807 {
22808   int i;
22809   orc_union32 *ORC_RESTRICT ptr0;
22810   const orc_int8 *ORC_RESTRICT ptr4;
22811   const orc_int8 *ORC_RESTRICT ptr5;
22812   const orc_int8 *ORC_RESTRICT ptr6;
22813   orc_int8 var42;
22814 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
22815   volatile orc_int8 var43;
22816 #else
22817   orc_int8 var43;
22818 #endif
22819   orc_union16 var44;
22820   orc_union16 var45;
22821 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
22822   volatile orc_int8 var46;
22823 #else
22824   orc_int8 var46;
22825 #endif
22826   orc_union16 var47;
22827   orc_union16 var48;
22828   orc_union16 var49;
22829 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
22830   volatile orc_union32 var50;
22831 #else
22832   orc_union32 var50;
22833 #endif
22834   orc_union32 var51;
22835   orc_int8 var52;
22836   orc_union16 var53;
22837   orc_int8 var54;
22838   orc_int8 var55;
22839   orc_union16 var56;
22840   orc_int8 var57;
22841   orc_int8 var58;
22842   orc_union16 var59;
22843   orc_union16 var60;
22844   orc_union16 var61;
22845   orc_union16 var62;
22846   orc_int8 var63;
22847   orc_union16 var64;
22848   orc_union16 var65;
22849   orc_union16 var66;
22850   orc_int8 var67;
22851   orc_union16 var68;
22852   orc_union16 var69;
22853   orc_union16 var70;
22854   orc_union16 var71;
22855   orc_int8 var72;
22856   orc_union16 var73;
22857   orc_union32 var74;
22858 
22859   ptr0 = (orc_union32 *) d1;
22860   ptr4 = (orc_int8 *) s1;
22861   ptr5 = (orc_int8 *) s2;
22862   ptr6 = (orc_int8 *) s3;
22863 
22864   /* 1: loadpb */
22865   var43 = 0x00000080;           /* 128 or 6.32404e-322f */
22866   /* 10: loadpw */
22867   var44.i = p1;
22868   /* 12: loadpw */
22869   var45.i = p2;
22870   /* 16: loadpb */
22871   var46 = 0x0000007f;           /* 127 or 6.27463e-322f */
22872   /* 18: loadpw */
22873   var47.i = p3;
22874   /* 22: loadpw */
22875   var48.i = p4;
22876   /* 25: loadpw */
22877   var49.i = p5;
22878   /* 31: loadpb */
22879   var50.x4[0] = 0x00000080;     /* 128 or 6.32404e-322f */
22880   var50.x4[1] = 0x00000080;     /* 128 or 6.32404e-322f */
22881   var50.x4[2] = 0x00000080;     /* 128 or 6.32404e-322f */
22882   var50.x4[3] = 0x00000080;     /* 128 or 6.32404e-322f */
22883 
22884   for (i = 0; i < n; i++) {
22885     /* 0: loadb */
22886     var42 = ptr4[i];
22887     /* 2: subb */
22888     var52 = var42 - var43;
22889     /* 3: splatbw */
22890     var53.i = ((var52 & 0xff) << 8) | (var52 & 0xff);
22891     /* 4: loadupdb */
22892     var54 = ptr5[i >> 1];
22893     /* 5: subb */
22894     var55 = var54 - var43;
22895     /* 6: splatbw */
22896     var56.i = ((var55 & 0xff) << 8) | (var55 & 0xff);
22897     /* 7: loadupdb */
22898     var57 = ptr6[i >> 1];
22899     /* 8: subb */
22900     var58 = var57 - var43;
22901     /* 9: splatbw */
22902     var59.i = ((var58 & 0xff) << 8) | (var58 & 0xff);
22903     /* 11: mulhsw */
22904     var60.i = (var53.i * var44.i) >> 16;
22905     /* 13: mulhsw */
22906     var61.i = (var59.i * var45.i) >> 16;
22907     /* 14: addw */
22908     var62.i = var60.i + var61.i;
22909     /* 15: convssswb */
22910     var63 = ORC_CLAMP_SB (var62.i);
22911     /* 17: mergebw */
22912     {
22913       orc_union16 _dest;
22914       _dest.x2[0] = var63;
22915       _dest.x2[1] = var46;
22916       var64.i = _dest.i;
22917     }
22918     /* 19: mulhsw */
22919     var65.i = (var56.i * var47.i) >> 16;
22920     /* 20: addw */
22921     var66.i = var60.i + var65.i;
22922     /* 21: convssswb */
22923     var67 = ORC_CLAMP_SB (var66.i);
22924     /* 23: mulhsw */
22925     var68.i = (var56.i * var48.i) >> 16;
22926     /* 24: addw */
22927     var69.i = var60.i + var68.i;
22928     /* 26: mulhsw */
22929     var70.i = (var59.i * var49.i) >> 16;
22930     /* 27: addw */
22931     var71.i = var69.i + var70.i;
22932     /* 28: convssswb */
22933     var72 = ORC_CLAMP_SB (var71.i);
22934     /* 29: mergebw */
22935     {
22936       orc_union16 _dest;
22937       _dest.x2[0] = var67;
22938       _dest.x2[1] = var72;
22939       var73.i = _dest.i;
22940     }
22941     /* 30: mergewl */
22942     {
22943       orc_union32 _dest;
22944       _dest.x2[0] = var73.i;
22945       _dest.x2[1] = var64.i;
22946       var74.i = _dest.i;
22947     }
22948     /* 32: addb */
22949     var51.x4[0] = var74.x4[0] + var50.x4[0];
22950     var51.x4[1] = var74.x4[1] + var50.x4[1];
22951     var51.x4[2] = var74.x4[2] + var50.x4[2];
22952     var51.x4[3] = var74.x4[3] + var50.x4[3];
22953     /* 33: storel */
22954     ptr0[i] = var51;
22955   }
22956 
22957 }
22958 
22959 #else
22960 static void
_backup_video_orc_convert_I420_BGRA(OrcExecutor * ORC_RESTRICT ex)22961 _backup_video_orc_convert_I420_BGRA (OrcExecutor * ORC_RESTRICT ex)
22962 {
22963   int i;
22964   int n = ex->n;
22965   orc_union32 *ORC_RESTRICT ptr0;
22966   const orc_int8 *ORC_RESTRICT ptr4;
22967   const orc_int8 *ORC_RESTRICT ptr5;
22968   const orc_int8 *ORC_RESTRICT ptr6;
22969   orc_int8 var42;
22970 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
22971   volatile orc_int8 var43;
22972 #else
22973   orc_int8 var43;
22974 #endif
22975   orc_union16 var44;
22976   orc_union16 var45;
22977 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
22978   volatile orc_int8 var46;
22979 #else
22980   orc_int8 var46;
22981 #endif
22982   orc_union16 var47;
22983   orc_union16 var48;
22984   orc_union16 var49;
22985 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
22986   volatile orc_union32 var50;
22987 #else
22988   orc_union32 var50;
22989 #endif
22990   orc_union32 var51;
22991   orc_int8 var52;
22992   orc_union16 var53;
22993   orc_int8 var54;
22994   orc_int8 var55;
22995   orc_union16 var56;
22996   orc_int8 var57;
22997   orc_int8 var58;
22998   orc_union16 var59;
22999   orc_union16 var60;
23000   orc_union16 var61;
23001   orc_union16 var62;
23002   orc_int8 var63;
23003   orc_union16 var64;
23004   orc_union16 var65;
23005   orc_union16 var66;
23006   orc_int8 var67;
23007   orc_union16 var68;
23008   orc_union16 var69;
23009   orc_union16 var70;
23010   orc_union16 var71;
23011   orc_int8 var72;
23012   orc_union16 var73;
23013   orc_union32 var74;
23014 
23015   ptr0 = (orc_union32 *) ex->arrays[0];
23016   ptr4 = (orc_int8 *) ex->arrays[4];
23017   ptr5 = (orc_int8 *) ex->arrays[5];
23018   ptr6 = (orc_int8 *) ex->arrays[6];
23019 
23020   /* 1: loadpb */
23021   var43 = 0x00000080;           /* 128 or 6.32404e-322f */
23022   /* 10: loadpw */
23023   var44.i = ex->params[24];
23024   /* 12: loadpw */
23025   var45.i = ex->params[25];
23026   /* 16: loadpb */
23027   var46 = 0x0000007f;           /* 127 or 6.27463e-322f */
23028   /* 18: loadpw */
23029   var47.i = ex->params[26];
23030   /* 22: loadpw */
23031   var48.i = ex->params[27];
23032   /* 25: loadpw */
23033   var49.i = ex->params[28];
23034   /* 31: loadpb */
23035   var50.x4[0] = 0x00000080;     /* 128 or 6.32404e-322f */
23036   var50.x4[1] = 0x00000080;     /* 128 or 6.32404e-322f */
23037   var50.x4[2] = 0x00000080;     /* 128 or 6.32404e-322f */
23038   var50.x4[3] = 0x00000080;     /* 128 or 6.32404e-322f */
23039 
23040   for (i = 0; i < n; i++) {
23041     /* 0: loadb */
23042     var42 = ptr4[i];
23043     /* 2: subb */
23044     var52 = var42 - var43;
23045     /* 3: splatbw */
23046     var53.i = ((var52 & 0xff) << 8) | (var52 & 0xff);
23047     /* 4: loadupdb */
23048     var54 = ptr5[i >> 1];
23049     /* 5: subb */
23050     var55 = var54 - var43;
23051     /* 6: splatbw */
23052     var56.i = ((var55 & 0xff) << 8) | (var55 & 0xff);
23053     /* 7: loadupdb */
23054     var57 = ptr6[i >> 1];
23055     /* 8: subb */
23056     var58 = var57 - var43;
23057     /* 9: splatbw */
23058     var59.i = ((var58 & 0xff) << 8) | (var58 & 0xff);
23059     /* 11: mulhsw */
23060     var60.i = (var53.i * var44.i) >> 16;
23061     /* 13: mulhsw */
23062     var61.i = (var59.i * var45.i) >> 16;
23063     /* 14: addw */
23064     var62.i = var60.i + var61.i;
23065     /* 15: convssswb */
23066     var63 = ORC_CLAMP_SB (var62.i);
23067     /* 17: mergebw */
23068     {
23069       orc_union16 _dest;
23070       _dest.x2[0] = var63;
23071       _dest.x2[1] = var46;
23072       var64.i = _dest.i;
23073     }
23074     /* 19: mulhsw */
23075     var65.i = (var56.i * var47.i) >> 16;
23076     /* 20: addw */
23077     var66.i = var60.i + var65.i;
23078     /* 21: convssswb */
23079     var67 = ORC_CLAMP_SB (var66.i);
23080     /* 23: mulhsw */
23081     var68.i = (var56.i * var48.i) >> 16;
23082     /* 24: addw */
23083     var69.i = var60.i + var68.i;
23084     /* 26: mulhsw */
23085     var70.i = (var59.i * var49.i) >> 16;
23086     /* 27: addw */
23087     var71.i = var69.i + var70.i;
23088     /* 28: convssswb */
23089     var72 = ORC_CLAMP_SB (var71.i);
23090     /* 29: mergebw */
23091     {
23092       orc_union16 _dest;
23093       _dest.x2[0] = var67;
23094       _dest.x2[1] = var72;
23095       var73.i = _dest.i;
23096     }
23097     /* 30: mergewl */
23098     {
23099       orc_union32 _dest;
23100       _dest.x2[0] = var73.i;
23101       _dest.x2[1] = var64.i;
23102       var74.i = _dest.i;
23103     }
23104     /* 32: addb */
23105     var51.x4[0] = var74.x4[0] + var50.x4[0];
23106     var51.x4[1] = var74.x4[1] + var50.x4[1];
23107     var51.x4[2] = var74.x4[2] + var50.x4[2];
23108     var51.x4[3] = var74.x4[3] + var50.x4[3];
23109     /* 33: storel */
23110     ptr0[i] = var51;
23111   }
23112 
23113 }
23114 
23115 void
video_orc_convert_I420_BGRA(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,const guint8 * ORC_RESTRICT s3,int p1,int p2,int p3,int p4,int p5,int n)23116 video_orc_convert_I420_BGRA (guint8 * ORC_RESTRICT d1,
23117     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
23118     const guint8 * ORC_RESTRICT s3, int p1, int p2, int p3, int p4, int p5,
23119     int n)
23120 {
23121   OrcExecutor _ex, *ex = &_ex;
23122   static volatile int p_inited = 0;
23123   static OrcCode *c = 0;
23124   void (*func) (OrcExecutor *);
23125 
23126   if (!p_inited) {
23127     orc_once_mutex_lock ();
23128     if (!p_inited) {
23129       OrcProgram *p;
23130 
23131 #if 1
23132       static const orc_uint8 bc[] = {
23133         1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, 110,
23134         118, 101, 114, 116, 95, 73, 52, 50, 48, 95, 66, 71, 82, 65, 11, 4,
23135         4, 12, 1, 1, 12, 1, 1, 12, 1, 1, 14, 1, 128, 0, 0, 0,
23136         14, 4, 128, 0, 0, 0, 14, 1, 127, 0, 0, 0, 16, 2, 16, 2,
23137         16, 2, 16, 2, 16, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 2,
23138         20, 2, 20, 1, 20, 1, 20, 1, 20, 4, 65, 38, 4, 16, 151, 32,
23139         38, 45, 38, 5, 65, 38, 38, 16, 151, 33, 38, 45, 38, 6, 65, 38,
23140         38, 16, 151, 34, 38, 90, 32, 32, 24, 90, 35, 34, 25, 70, 35, 32,
23141         35, 159, 38, 35, 196, 35, 38, 18, 90, 37, 33, 26, 70, 37, 32, 37,
23142         159, 40, 37, 90, 36, 33, 27, 70, 36, 32, 36, 90, 32, 34, 28, 70,
23143         36, 36, 32, 159, 39, 36, 196, 37, 40, 39, 195, 41, 37, 35, 21, 2,
23144         33, 0, 41, 17, 2, 0,
23145       };
23146       p = orc_program_new_from_static_bytecode (bc);
23147       orc_program_set_backup_function (p, _backup_video_orc_convert_I420_BGRA);
23148 #else
23149       p = orc_program_new ();
23150       orc_program_set_name (p, "video_orc_convert_I420_BGRA");
23151       orc_program_set_backup_function (p, _backup_video_orc_convert_I420_BGRA);
23152       orc_program_add_destination (p, 4, "d1");
23153       orc_program_add_source (p, 1, "s1");
23154       orc_program_add_source (p, 1, "s2");
23155       orc_program_add_source (p, 1, "s3");
23156       orc_program_add_constant (p, 1, 0x00000080, "c1");
23157       orc_program_add_constant (p, 4, 0x00000080, "c2");
23158       orc_program_add_constant (p, 1, 0x0000007f, "c3");
23159       orc_program_add_parameter (p, 2, "p1");
23160       orc_program_add_parameter (p, 2, "p2");
23161       orc_program_add_parameter (p, 2, "p3");
23162       orc_program_add_parameter (p, 2, "p4");
23163       orc_program_add_parameter (p, 2, "p5");
23164       orc_program_add_temporary (p, 2, "t1");
23165       orc_program_add_temporary (p, 2, "t2");
23166       orc_program_add_temporary (p, 2, "t3");
23167       orc_program_add_temporary (p, 2, "t4");
23168       orc_program_add_temporary (p, 2, "t5");
23169       orc_program_add_temporary (p, 2, "t6");
23170       orc_program_add_temporary (p, 1, "t7");
23171       orc_program_add_temporary (p, 1, "t8");
23172       orc_program_add_temporary (p, 1, "t9");
23173       orc_program_add_temporary (p, 4, "t10");
23174 
23175       orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_S1, ORC_VAR_C1,
23176           ORC_VAR_D1);
23177       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_D1,
23178           ORC_VAR_D1);
23179       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T7, ORC_VAR_S2,
23180           ORC_VAR_D1, ORC_VAR_D1);
23181       orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C1,
23182           ORC_VAR_D1);
23183       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T2, ORC_VAR_T7, ORC_VAR_D1,
23184           ORC_VAR_D1);
23185       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T7, ORC_VAR_S3,
23186           ORC_VAR_D1, ORC_VAR_D1);
23187       orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C1,
23188           ORC_VAR_D1);
23189       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T3, ORC_VAR_T7, ORC_VAR_D1,
23190           ORC_VAR_D1);
23191       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1,
23192           ORC_VAR_D1);
23193       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_P2,
23194           ORC_VAR_D1);
23195       orc_program_append_2 (p, "addw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_T4,
23196           ORC_VAR_D1);
23197       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T7, ORC_VAR_T4,
23198           ORC_VAR_D1, ORC_VAR_D1);
23199       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T4, ORC_VAR_T7, ORC_VAR_C3,
23200           ORC_VAR_D1);
23201       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_P3,
23202           ORC_VAR_D1);
23203       orc_program_append_2 (p, "addw", 0, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_T6,
23204           ORC_VAR_D1);
23205       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T9, ORC_VAR_T6,
23206           ORC_VAR_D1, ORC_VAR_D1);
23207       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_P4,
23208           ORC_VAR_D1);
23209       orc_program_append_2 (p, "addw", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_T5,
23210           ORC_VAR_D1);
23211       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_P5,
23212           ORC_VAR_D1);
23213       orc_program_append_2 (p, "addw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T1,
23214           ORC_VAR_D1);
23215       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T8, ORC_VAR_T5,
23216           ORC_VAR_D1, ORC_VAR_D1);
23217       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T6, ORC_VAR_T9, ORC_VAR_T8,
23218           ORC_VAR_D1);
23219       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T10, ORC_VAR_T6,
23220           ORC_VAR_T4, ORC_VAR_D1);
23221       orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T10, ORC_VAR_C2,
23222           ORC_VAR_D1);
23223 #endif
23224 
23225       orc_program_compile (p);
23226       c = orc_program_take_code (p);
23227       orc_program_free (p);
23228     }
23229     p_inited = TRUE;
23230     orc_once_mutex_unlock ();
23231   }
23232   ex->arrays[ORC_VAR_A2] = c;
23233   ex->program = 0;
23234 
23235   ex->n = n;
23236   ex->arrays[ORC_VAR_D1] = d1;
23237   ex->arrays[ORC_VAR_S1] = (void *) s1;
23238   ex->arrays[ORC_VAR_S2] = (void *) s2;
23239   ex->arrays[ORC_VAR_S3] = (void *) s3;
23240   ex->params[ORC_VAR_P1] = p1;
23241   ex->params[ORC_VAR_P2] = p2;
23242   ex->params[ORC_VAR_P3] = p3;
23243   ex->params[ORC_VAR_P4] = p4;
23244   ex->params[ORC_VAR_P5] = p5;
23245 
23246   func = c->exec;
23247   func (ex);
23248 }
23249 #endif
23250 
23251 
23252 /* video_orc_convert_I420_ARGB */
23253 #ifdef DISABLE_ORC
23254 void
video_orc_convert_I420_ARGB(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,const guint8 * ORC_RESTRICT s3,int p1,int p2,int p3,int p4,int p5,int n)23255 video_orc_convert_I420_ARGB (guint8 * ORC_RESTRICT d1,
23256     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
23257     const guint8 * ORC_RESTRICT s3, int p1, int p2, int p3, int p4, int p5,
23258     int n)
23259 {
23260   int i;
23261   orc_union32 *ORC_RESTRICT ptr0;
23262   const orc_int8 *ORC_RESTRICT ptr4;
23263   const orc_int8 *ORC_RESTRICT ptr5;
23264   const orc_int8 *ORC_RESTRICT ptr6;
23265   orc_int8 var42;
23266 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
23267   volatile orc_int8 var43;
23268 #else
23269   orc_int8 var43;
23270 #endif
23271   orc_union16 var44;
23272   orc_union16 var45;
23273 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
23274   volatile orc_int8 var46;
23275 #else
23276   orc_int8 var46;
23277 #endif
23278   orc_union16 var47;
23279   orc_union16 var48;
23280   orc_union16 var49;
23281 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
23282   volatile orc_union32 var50;
23283 #else
23284   orc_union32 var50;
23285 #endif
23286   orc_union32 var51;
23287   orc_int8 var52;
23288   orc_union16 var53;
23289   orc_int8 var54;
23290   orc_int8 var55;
23291   orc_union16 var56;
23292   orc_int8 var57;
23293   orc_int8 var58;
23294   orc_union16 var59;
23295   orc_union16 var60;
23296   orc_union16 var61;
23297   orc_union16 var62;
23298   orc_int8 var63;
23299   orc_union16 var64;
23300   orc_union16 var65;
23301   orc_union16 var66;
23302   orc_int8 var67;
23303   orc_union16 var68;
23304   orc_union16 var69;
23305   orc_union16 var70;
23306   orc_union16 var71;
23307   orc_int8 var72;
23308   orc_union16 var73;
23309   orc_union32 var74;
23310 
23311   ptr0 = (orc_union32 *) d1;
23312   ptr4 = (orc_int8 *) s1;
23313   ptr5 = (orc_int8 *) s2;
23314   ptr6 = (orc_int8 *) s3;
23315 
23316   /* 1: loadpb */
23317   var43 = 0x00000080;           /* 128 or 6.32404e-322f */
23318   /* 10: loadpw */
23319   var44.i = p1;
23320   /* 12: loadpw */
23321   var45.i = p2;
23322   /* 16: loadpb */
23323   var46 = 0x0000007f;           /* 127 or 6.27463e-322f */
23324   /* 18: loadpw */
23325   var47.i = p3;
23326   /* 22: loadpw */
23327   var48.i = p4;
23328   /* 25: loadpw */
23329   var49.i = p5;
23330   /* 31: loadpb */
23331   var50.x4[0] = 0x00000080;     /* 128 or 6.32404e-322f */
23332   var50.x4[1] = 0x00000080;     /* 128 or 6.32404e-322f */
23333   var50.x4[2] = 0x00000080;     /* 128 or 6.32404e-322f */
23334   var50.x4[3] = 0x00000080;     /* 128 or 6.32404e-322f */
23335 
23336   for (i = 0; i < n; i++) {
23337     /* 0: loadb */
23338     var42 = ptr4[i];
23339     /* 2: subb */
23340     var52 = var42 - var43;
23341     /* 3: splatbw */
23342     var53.i = ((var52 & 0xff) << 8) | (var52 & 0xff);
23343     /* 4: loadupdb */
23344     var54 = ptr5[i >> 1];
23345     /* 5: subb */
23346     var55 = var54 - var43;
23347     /* 6: splatbw */
23348     var56.i = ((var55 & 0xff) << 8) | (var55 & 0xff);
23349     /* 7: loadupdb */
23350     var57 = ptr6[i >> 1];
23351     /* 8: subb */
23352     var58 = var57 - var43;
23353     /* 9: splatbw */
23354     var59.i = ((var58 & 0xff) << 8) | (var58 & 0xff);
23355     /* 11: mulhsw */
23356     var60.i = (var53.i * var44.i) >> 16;
23357     /* 13: mulhsw */
23358     var61.i = (var59.i * var45.i) >> 16;
23359     /* 14: addw */
23360     var62.i = var60.i + var61.i;
23361     /* 15: convssswb */
23362     var63 = ORC_CLAMP_SB (var62.i);
23363     /* 17: mergebw */
23364     {
23365       orc_union16 _dest;
23366       _dest.x2[0] = var46;
23367       _dest.x2[1] = var63;
23368       var64.i = _dest.i;
23369     }
23370     /* 19: mulhsw */
23371     var65.i = (var56.i * var47.i) >> 16;
23372     /* 20: addw */
23373     var66.i = var60.i + var65.i;
23374     /* 21: convssswb */
23375     var67 = ORC_CLAMP_SB (var66.i);
23376     /* 23: mulhsw */
23377     var68.i = (var56.i * var48.i) >> 16;
23378     /* 24: addw */
23379     var69.i = var60.i + var68.i;
23380     /* 26: mulhsw */
23381     var70.i = (var59.i * var49.i) >> 16;
23382     /* 27: addw */
23383     var71.i = var69.i + var70.i;
23384     /* 28: convssswb */
23385     var72 = ORC_CLAMP_SB (var71.i);
23386     /* 29: mergebw */
23387     {
23388       orc_union16 _dest;
23389       _dest.x2[0] = var72;
23390       _dest.x2[1] = var67;
23391       var73.i = _dest.i;
23392     }
23393     /* 30: mergewl */
23394     {
23395       orc_union32 _dest;
23396       _dest.x2[0] = var64.i;
23397       _dest.x2[1] = var73.i;
23398       var74.i = _dest.i;
23399     }
23400     /* 32: addb */
23401     var51.x4[0] = var74.x4[0] + var50.x4[0];
23402     var51.x4[1] = var74.x4[1] + var50.x4[1];
23403     var51.x4[2] = var74.x4[2] + var50.x4[2];
23404     var51.x4[3] = var74.x4[3] + var50.x4[3];
23405     /* 33: storel */
23406     ptr0[i] = var51;
23407   }
23408 
23409 }
23410 
23411 #else
23412 static void
_backup_video_orc_convert_I420_ARGB(OrcExecutor * ORC_RESTRICT ex)23413 _backup_video_orc_convert_I420_ARGB (OrcExecutor * ORC_RESTRICT ex)
23414 {
23415   int i;
23416   int n = ex->n;
23417   orc_union32 *ORC_RESTRICT ptr0;
23418   const orc_int8 *ORC_RESTRICT ptr4;
23419   const orc_int8 *ORC_RESTRICT ptr5;
23420   const orc_int8 *ORC_RESTRICT ptr6;
23421   orc_int8 var42;
23422 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
23423   volatile orc_int8 var43;
23424 #else
23425   orc_int8 var43;
23426 #endif
23427   orc_union16 var44;
23428   orc_union16 var45;
23429 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
23430   volatile orc_int8 var46;
23431 #else
23432   orc_int8 var46;
23433 #endif
23434   orc_union16 var47;
23435   orc_union16 var48;
23436   orc_union16 var49;
23437 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
23438   volatile orc_union32 var50;
23439 #else
23440   orc_union32 var50;
23441 #endif
23442   orc_union32 var51;
23443   orc_int8 var52;
23444   orc_union16 var53;
23445   orc_int8 var54;
23446   orc_int8 var55;
23447   orc_union16 var56;
23448   orc_int8 var57;
23449   orc_int8 var58;
23450   orc_union16 var59;
23451   orc_union16 var60;
23452   orc_union16 var61;
23453   orc_union16 var62;
23454   orc_int8 var63;
23455   orc_union16 var64;
23456   orc_union16 var65;
23457   orc_union16 var66;
23458   orc_int8 var67;
23459   orc_union16 var68;
23460   orc_union16 var69;
23461   orc_union16 var70;
23462   orc_union16 var71;
23463   orc_int8 var72;
23464   orc_union16 var73;
23465   orc_union32 var74;
23466 
23467   ptr0 = (orc_union32 *) ex->arrays[0];
23468   ptr4 = (orc_int8 *) ex->arrays[4];
23469   ptr5 = (orc_int8 *) ex->arrays[5];
23470   ptr6 = (orc_int8 *) ex->arrays[6];
23471 
23472   /* 1: loadpb */
23473   var43 = 0x00000080;           /* 128 or 6.32404e-322f */
23474   /* 10: loadpw */
23475   var44.i = ex->params[24];
23476   /* 12: loadpw */
23477   var45.i = ex->params[25];
23478   /* 16: loadpb */
23479   var46 = 0x0000007f;           /* 127 or 6.27463e-322f */
23480   /* 18: loadpw */
23481   var47.i = ex->params[26];
23482   /* 22: loadpw */
23483   var48.i = ex->params[27];
23484   /* 25: loadpw */
23485   var49.i = ex->params[28];
23486   /* 31: loadpb */
23487   var50.x4[0] = 0x00000080;     /* 128 or 6.32404e-322f */
23488   var50.x4[1] = 0x00000080;     /* 128 or 6.32404e-322f */
23489   var50.x4[2] = 0x00000080;     /* 128 or 6.32404e-322f */
23490   var50.x4[3] = 0x00000080;     /* 128 or 6.32404e-322f */
23491 
23492   for (i = 0; i < n; i++) {
23493     /* 0: loadb */
23494     var42 = ptr4[i];
23495     /* 2: subb */
23496     var52 = var42 - var43;
23497     /* 3: splatbw */
23498     var53.i = ((var52 & 0xff) << 8) | (var52 & 0xff);
23499     /* 4: loadupdb */
23500     var54 = ptr5[i >> 1];
23501     /* 5: subb */
23502     var55 = var54 - var43;
23503     /* 6: splatbw */
23504     var56.i = ((var55 & 0xff) << 8) | (var55 & 0xff);
23505     /* 7: loadupdb */
23506     var57 = ptr6[i >> 1];
23507     /* 8: subb */
23508     var58 = var57 - var43;
23509     /* 9: splatbw */
23510     var59.i = ((var58 & 0xff) << 8) | (var58 & 0xff);
23511     /* 11: mulhsw */
23512     var60.i = (var53.i * var44.i) >> 16;
23513     /* 13: mulhsw */
23514     var61.i = (var59.i * var45.i) >> 16;
23515     /* 14: addw */
23516     var62.i = var60.i + var61.i;
23517     /* 15: convssswb */
23518     var63 = ORC_CLAMP_SB (var62.i);
23519     /* 17: mergebw */
23520     {
23521       orc_union16 _dest;
23522       _dest.x2[0] = var46;
23523       _dest.x2[1] = var63;
23524       var64.i = _dest.i;
23525     }
23526     /* 19: mulhsw */
23527     var65.i = (var56.i * var47.i) >> 16;
23528     /* 20: addw */
23529     var66.i = var60.i + var65.i;
23530     /* 21: convssswb */
23531     var67 = ORC_CLAMP_SB (var66.i);
23532     /* 23: mulhsw */
23533     var68.i = (var56.i * var48.i) >> 16;
23534     /* 24: addw */
23535     var69.i = var60.i + var68.i;
23536     /* 26: mulhsw */
23537     var70.i = (var59.i * var49.i) >> 16;
23538     /* 27: addw */
23539     var71.i = var69.i + var70.i;
23540     /* 28: convssswb */
23541     var72 = ORC_CLAMP_SB (var71.i);
23542     /* 29: mergebw */
23543     {
23544       orc_union16 _dest;
23545       _dest.x2[0] = var72;
23546       _dest.x2[1] = var67;
23547       var73.i = _dest.i;
23548     }
23549     /* 30: mergewl */
23550     {
23551       orc_union32 _dest;
23552       _dest.x2[0] = var64.i;
23553       _dest.x2[1] = var73.i;
23554       var74.i = _dest.i;
23555     }
23556     /* 32: addb */
23557     var51.x4[0] = var74.x4[0] + var50.x4[0];
23558     var51.x4[1] = var74.x4[1] + var50.x4[1];
23559     var51.x4[2] = var74.x4[2] + var50.x4[2];
23560     var51.x4[3] = var74.x4[3] + var50.x4[3];
23561     /* 33: storel */
23562     ptr0[i] = var51;
23563   }
23564 
23565 }
23566 
23567 void
video_orc_convert_I420_ARGB(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,const guint8 * ORC_RESTRICT s3,int p1,int p2,int p3,int p4,int p5,int n)23568 video_orc_convert_I420_ARGB (guint8 * ORC_RESTRICT d1,
23569     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
23570     const guint8 * ORC_RESTRICT s3, int p1, int p2, int p3, int p4, int p5,
23571     int n)
23572 {
23573   OrcExecutor _ex, *ex = &_ex;
23574   static volatile int p_inited = 0;
23575   static OrcCode *c = 0;
23576   void (*func) (OrcExecutor *);
23577 
23578   if (!p_inited) {
23579     orc_once_mutex_lock ();
23580     if (!p_inited) {
23581       OrcProgram *p;
23582 
23583 #if 1
23584       static const orc_uint8 bc[] = {
23585         1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, 110,
23586         118, 101, 114, 116, 95, 73, 52, 50, 48, 95, 65, 82, 71, 66, 11, 4,
23587         4, 12, 1, 1, 12, 1, 1, 12, 1, 1, 14, 1, 128, 0, 0, 0,
23588         14, 4, 128, 0, 0, 0, 14, 1, 127, 0, 0, 0, 16, 2, 16, 2,
23589         16, 2, 16, 2, 16, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 2,
23590         20, 2, 20, 1, 20, 1, 20, 1, 20, 4, 65, 38, 4, 16, 151, 32,
23591         38, 45, 38, 5, 65, 38, 38, 16, 151, 33, 38, 45, 38, 6, 65, 38,
23592         38, 16, 151, 34, 38, 90, 32, 32, 24, 90, 35, 34, 25, 70, 35, 32,
23593         35, 159, 38, 35, 196, 35, 18, 38, 90, 37, 33, 26, 70, 37, 32, 37,
23594         159, 40, 37, 90, 36, 33, 27, 70, 36, 32, 36, 90, 32, 34, 28, 70,
23595         36, 36, 32, 159, 39, 36, 196, 37, 39, 40, 195, 41, 35, 37, 21, 2,
23596         33, 0, 41, 17, 2, 0,
23597       };
23598       p = orc_program_new_from_static_bytecode (bc);
23599       orc_program_set_backup_function (p, _backup_video_orc_convert_I420_ARGB);
23600 #else
23601       p = orc_program_new ();
23602       orc_program_set_name (p, "video_orc_convert_I420_ARGB");
23603       orc_program_set_backup_function (p, _backup_video_orc_convert_I420_ARGB);
23604       orc_program_add_destination (p, 4, "d1");
23605       orc_program_add_source (p, 1, "s1");
23606       orc_program_add_source (p, 1, "s2");
23607       orc_program_add_source (p, 1, "s3");
23608       orc_program_add_constant (p, 1, 0x00000080, "c1");
23609       orc_program_add_constant (p, 4, 0x00000080, "c2");
23610       orc_program_add_constant (p, 1, 0x0000007f, "c3");
23611       orc_program_add_parameter (p, 2, "p1");
23612       orc_program_add_parameter (p, 2, "p2");
23613       orc_program_add_parameter (p, 2, "p3");
23614       orc_program_add_parameter (p, 2, "p4");
23615       orc_program_add_parameter (p, 2, "p5");
23616       orc_program_add_temporary (p, 2, "t1");
23617       orc_program_add_temporary (p, 2, "t2");
23618       orc_program_add_temporary (p, 2, "t3");
23619       orc_program_add_temporary (p, 2, "t4");
23620       orc_program_add_temporary (p, 2, "t5");
23621       orc_program_add_temporary (p, 2, "t6");
23622       orc_program_add_temporary (p, 1, "t7");
23623       orc_program_add_temporary (p, 1, "t8");
23624       orc_program_add_temporary (p, 1, "t9");
23625       orc_program_add_temporary (p, 4, "t10");
23626 
23627       orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_S1, ORC_VAR_C1,
23628           ORC_VAR_D1);
23629       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_D1,
23630           ORC_VAR_D1);
23631       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T7, ORC_VAR_S2,
23632           ORC_VAR_D1, ORC_VAR_D1);
23633       orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C1,
23634           ORC_VAR_D1);
23635       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T2, ORC_VAR_T7, ORC_VAR_D1,
23636           ORC_VAR_D1);
23637       orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T7, ORC_VAR_S3,
23638           ORC_VAR_D1, ORC_VAR_D1);
23639       orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C1,
23640           ORC_VAR_D1);
23641       orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T3, ORC_VAR_T7, ORC_VAR_D1,
23642           ORC_VAR_D1);
23643       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1,
23644           ORC_VAR_D1);
23645       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_P2,
23646           ORC_VAR_D1);
23647       orc_program_append_2 (p, "addw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_T4,
23648           ORC_VAR_D1);
23649       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T7, ORC_VAR_T4,
23650           ORC_VAR_D1, ORC_VAR_D1);
23651       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T4, ORC_VAR_C3, ORC_VAR_T7,
23652           ORC_VAR_D1);
23653       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_P3,
23654           ORC_VAR_D1);
23655       orc_program_append_2 (p, "addw", 0, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_T6,
23656           ORC_VAR_D1);
23657       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T9, ORC_VAR_T6,
23658           ORC_VAR_D1, ORC_VAR_D1);
23659       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_P4,
23660           ORC_VAR_D1);
23661       orc_program_append_2 (p, "addw", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_T5,
23662           ORC_VAR_D1);
23663       orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_P5,
23664           ORC_VAR_D1);
23665       orc_program_append_2 (p, "addw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T1,
23666           ORC_VAR_D1);
23667       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T8, ORC_VAR_T5,
23668           ORC_VAR_D1, ORC_VAR_D1);
23669       orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T6, ORC_VAR_T8, ORC_VAR_T9,
23670           ORC_VAR_D1);
23671       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T10, ORC_VAR_T4,
23672           ORC_VAR_T6, ORC_VAR_D1);
23673       orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T10, ORC_VAR_C2,
23674           ORC_VAR_D1);
23675 #endif
23676 
23677       orc_program_compile (p);
23678       c = orc_program_take_code (p);
23679       orc_program_free (p);
23680     }
23681     p_inited = TRUE;
23682     orc_once_mutex_unlock ();
23683   }
23684   ex->arrays[ORC_VAR_A2] = c;
23685   ex->program = 0;
23686 
23687   ex->n = n;
23688   ex->arrays[ORC_VAR_D1] = d1;
23689   ex->arrays[ORC_VAR_S1] = (void *) s1;
23690   ex->arrays[ORC_VAR_S2] = (void *) s2;
23691   ex->arrays[ORC_VAR_S3] = (void *) s3;
23692   ex->params[ORC_VAR_P1] = p1;
23693   ex->params[ORC_VAR_P2] = p2;
23694   ex->params[ORC_VAR_P3] = p3;
23695   ex->params[ORC_VAR_P4] = p4;
23696   ex->params[ORC_VAR_P5] = p5;
23697 
23698   func = c->exec;
23699   func (ex);
23700 }
23701 #endif
23702 
23703 
23704 /* video_orc_matrix8 */
23705 #ifdef DISABLE_ORC
23706 void
video_orc_matrix8(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,orc_int64 p1,orc_int64 p2,orc_int64 p3,orc_int64 p4,int n)23707 video_orc_matrix8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
23708     orc_int64 p1, orc_int64 p2, orc_int64 p3, orc_int64 p4, int n)
23709 {
23710   _custom_video_orc_matrix8 (d1, s1, p1, p2, p3, p4, n);
23711 }
23712 
23713 #else
23714 static void
_backup_video_orc_matrix8(OrcExecutor * ORC_RESTRICT ex)23715 _backup_video_orc_matrix8 (OrcExecutor * ORC_RESTRICT ex)
23716 {
23717   _custom_video_orc_matrix8 (ex->arrays[ORC_VAR_D1], ex->arrays[ORC_VAR_S1],
23718       (ex->params[ORC_VAR_P1] & 0xffffffff) | ((orc_uint64) (ex->
23719               params[ORC_VAR_T1]) << 32),
23720       (ex->params[ORC_VAR_P2] & 0xffffffff) | ((orc_uint64) (ex->
23721               params[ORC_VAR_T2]) << 32),
23722       (ex->params[ORC_VAR_P3] & 0xffffffff) | ((orc_uint64) (ex->
23723               params[ORC_VAR_T3]) << 32),
23724       (ex->params[ORC_VAR_P4] & 0xffffffff) | ((orc_uint64) (ex->
23725               params[ORC_VAR_T4]) << 32), ex->n);
23726 }
23727 
23728 void
video_orc_matrix8(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,orc_int64 p1,orc_int64 p2,orc_int64 p3,orc_int64 p4,int n)23729 video_orc_matrix8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
23730     orc_int64 p1, orc_int64 p2, orc_int64 p3, orc_int64 p4, int n)
23731 {
23732   OrcExecutor _ex, *ex = &_ex;
23733   static volatile int p_inited = 0;
23734   static OrcCode *c = 0;
23735   void (*func) (OrcExecutor *);
23736 
23737   if (!p_inited) {
23738     orc_once_mutex_lock ();
23739     if (!p_inited) {
23740       OrcProgram *p;
23741 
23742 #if 1
23743       static const orc_uint8 bc[] = {
23744         1, 9, 17, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 109, 97, 116,
23745         114, 105, 120, 56, 11, 4, 4, 12, 4, 4, 14, 1, 128, 0, 0, 0,
23746         18, 8, 18, 8, 18, 8, 18, 8, 20, 2, 20, 2, 20, 1, 20, 1,
23747         20, 4, 20, 4, 20, 8, 20, 8, 20, 8, 20, 8, 20, 8, 134, 40,
23748         24, 134, 41, 25, 134, 42, 26, 21, 2, 65, 36, 4, 16, 190, 32, 36,
23749         191, 33, 36, 188, 34, 32, 189, 35, 32, 150, 32, 34, 154, 36, 32, 21,
23750         2, 196, 38, 36, 36, 152, 36, 35, 194, 39, 36, 36, 21, 2, 90, 39,
23751         39, 40, 21, 2, 70, 38, 38, 39, 188, 34, 33, 152, 36, 34, 194, 39,
23752         36, 36, 21, 2, 90, 39, 39, 41, 21, 2, 70, 38, 38, 39, 189, 35,
23753         33, 152, 36, 35, 194, 39, 36, 36, 21, 2, 90, 39, 39, 42, 21, 2,
23754         70, 38, 38, 39, 21, 2, 159, 37, 38, 21, 2, 33, 0, 37, 16, 2,
23755         0,
23756       };
23757       p = orc_program_new_from_static_bytecode (bc);
23758       orc_program_set_backup_function (p, _backup_video_orc_matrix8);
23759 #else
23760       p = orc_program_new ();
23761       orc_program_set_name (p, "video_orc_matrix8");
23762       orc_program_set_backup_function (p, _backup_video_orc_matrix8);
23763       orc_program_add_destination (p, 4, "d1");
23764       orc_program_add_source (p, 4, "s1");
23765       orc_program_add_constant (p, 1, 0x00000080, "c1");
23766       orc_program_add_parameter_int64 (p, 8, "p1");
23767       orc_program_add_parameter_int64 (p, 8, "p2");
23768       orc_program_add_parameter_int64 (p, 8, "p3");
23769       orc_program_add_parameter_int64 (p, 8, "p4");
23770       orc_program_add_temporary (p, 2, "t1");
23771       orc_program_add_temporary (p, 2, "t2");
23772       orc_program_add_temporary (p, 1, "t3");
23773       orc_program_add_temporary (p, 1, "t4");
23774       orc_program_add_temporary (p, 4, "t5");
23775       orc_program_add_temporary (p, 4, "t6");
23776       orc_program_add_temporary (p, 8, "t7");
23777       orc_program_add_temporary (p, 8, "t8");
23778       orc_program_add_temporary (p, 8, "t9");
23779       orc_program_add_temporary (p, 8, "t10");
23780       orc_program_add_temporary (p, 8, "t11");
23781 
23782       orc_program_append_2 (p, "loadpq", 0, ORC_VAR_T9, ORC_VAR_P1, ORC_VAR_D1,
23783           ORC_VAR_D1);
23784       orc_program_append_2 (p, "loadpq", 0, ORC_VAR_T10, ORC_VAR_P2, ORC_VAR_D1,
23785           ORC_VAR_D1);
23786       orc_program_append_2 (p, "loadpq", 0, ORC_VAR_T11, ORC_VAR_P3, ORC_VAR_D1,
23787           ORC_VAR_D1);
23788       orc_program_append_2 (p, "subb", 2, ORC_VAR_T5, ORC_VAR_S1, ORC_VAR_C1,
23789           ORC_VAR_D1);
23790       orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_T5,
23791           ORC_VAR_D1, ORC_VAR_D1);
23792       orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T2, ORC_VAR_T5,
23793           ORC_VAR_D1, ORC_VAR_D1);
23794       orc_program_append_2 (p, "select0wb", 0, ORC_VAR_T3, ORC_VAR_T1,
23795           ORC_VAR_D1, ORC_VAR_D1);
23796       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T4, ORC_VAR_T1,
23797           ORC_VAR_D1, ORC_VAR_D1);
23798       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_D1,
23799           ORC_VAR_D1);
23800       orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_D1,
23801           ORC_VAR_D1);
23802       orc_program_append_2 (p, "mergebw", 2, ORC_VAR_T7, ORC_VAR_T5, ORC_VAR_T5,
23803           ORC_VAR_D1);
23804       orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1,
23805           ORC_VAR_D1);
23806       orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T5,
23807           ORC_VAR_D1);
23808       orc_program_append_2 (p, "mulhsw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T9,
23809           ORC_VAR_D1);
23810       orc_program_append_2 (p, "addw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T8,
23811           ORC_VAR_D1);
23812       orc_program_append_2 (p, "select0wb", 0, ORC_VAR_T3, ORC_VAR_T2,
23813           ORC_VAR_D1, ORC_VAR_D1);
23814       orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_D1,
23815           ORC_VAR_D1);
23816       orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T5,
23817           ORC_VAR_D1);
23818       orc_program_append_2 (p, "mulhsw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T10,
23819           ORC_VAR_D1);
23820       orc_program_append_2 (p, "addw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T8,
23821           ORC_VAR_D1);
23822       orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T4, ORC_VAR_T2,
23823           ORC_VAR_D1, ORC_VAR_D1);
23824       orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1,
23825           ORC_VAR_D1);
23826       orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T5,
23827           ORC_VAR_D1);
23828       orc_program_append_2 (p, "mulhsw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T11,
23829           ORC_VAR_D1);
23830       orc_program_append_2 (p, "addw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T8,
23831           ORC_VAR_D1);
23832       orc_program_append_2 (p, "convssswb", 2, ORC_VAR_T6, ORC_VAR_T7,
23833           ORC_VAR_D1, ORC_VAR_D1);
23834       orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T6, ORC_VAR_C1,
23835           ORC_VAR_D1);
23836 #endif
23837 
23838       orc_program_compile (p);
23839       c = orc_program_take_code (p);
23840       orc_program_free (p);
23841     }
23842     p_inited = TRUE;
23843     orc_once_mutex_unlock ();
23844   }
23845   ex->arrays[ORC_VAR_A2] = c;
23846   ex->program = 0;
23847 
23848   ex->n = n;
23849   ex->arrays[ORC_VAR_D1] = d1;
23850   ex->arrays[ORC_VAR_S1] = (void *) s1;
23851   {
23852     orc_union64 tmp;
23853     tmp.i = p1;
23854     ex->params[ORC_VAR_P1] = ((orc_uint64) tmp.i) & 0xffffffff;
23855     ex->params[ORC_VAR_T1] = ((orc_uint64) tmp.i) >> 32;
23856   }
23857   {
23858     orc_union64 tmp;
23859     tmp.i = p2;
23860     ex->params[ORC_VAR_P2] = ((orc_uint64) tmp.i) & 0xffffffff;
23861     ex->params[ORC_VAR_T2] = ((orc_uint64) tmp.i) >> 32;
23862   }
23863   {
23864     orc_union64 tmp;
23865     tmp.i = p3;
23866     ex->params[ORC_VAR_P3] = ((orc_uint64) tmp.i) & 0xffffffff;
23867     ex->params[ORC_VAR_T3] = ((orc_uint64) tmp.i) >> 32;
23868   }
23869   {
23870     orc_union64 tmp;
23871     tmp.i = p4;
23872     ex->params[ORC_VAR_P4] = ((orc_uint64) tmp.i) & 0xffffffff;
23873     ex->params[ORC_VAR_T4] = ((orc_uint64) tmp.i) >> 32;
23874   }
23875 
23876   func = c->exec;
23877   func (ex);
23878 }
23879 #endif
23880 
23881 
23882 /* video_orc_resample_h_near_u32_lq */
23883 #ifdef DISABLE_ORC
23884 void
video_orc_resample_h_near_u32_lq(guint32 * ORC_RESTRICT d1,const guint32 * ORC_RESTRICT s1,int p1,int p2,int n)23885 video_orc_resample_h_near_u32_lq (guint32 * ORC_RESTRICT d1,
23886     const guint32 * ORC_RESTRICT s1, int p1, int p2, int n)
23887 {
23888   int i;
23889   orc_union32 *ORC_RESTRICT ptr0;
23890   const orc_union32 *ORC_RESTRICT ptr4;
23891   orc_union32 var32;
23892 
23893   ptr0 = (orc_union32 *) d1;
23894   ptr4 = (orc_union32 *) s1;
23895 
23896 
23897   for (i = 0; i < n; i++) {
23898     /* 0: ldresnearl */
23899     var32 = ptr4[(p1 + i * p2) >> 16];
23900     /* 1: storel */
23901     ptr0[i] = var32;
23902   }
23903 
23904 }
23905 
23906 #else
23907 static void
_backup_video_orc_resample_h_near_u32_lq(OrcExecutor * ORC_RESTRICT ex)23908 _backup_video_orc_resample_h_near_u32_lq (OrcExecutor * ORC_RESTRICT ex)
23909 {
23910   int i;
23911   int n = ex->n;
23912   orc_union32 *ORC_RESTRICT ptr0;
23913   const orc_union32 *ORC_RESTRICT ptr4;
23914   orc_union32 var32;
23915 
23916   ptr0 = (orc_union32 *) ex->arrays[0];
23917   ptr4 = (orc_union32 *) ex->arrays[4];
23918 
23919 
23920   for (i = 0; i < n; i++) {
23921     /* 0: ldresnearl */
23922     var32 = ptr4[(ex->params[24] + i * ex->params[25]) >> 16];
23923     /* 1: storel */
23924     ptr0[i] = var32;
23925   }
23926 
23927 }
23928 
23929 void
video_orc_resample_h_near_u32_lq(guint32 * ORC_RESTRICT d1,const guint32 * ORC_RESTRICT s1,int p1,int p2,int n)23930 video_orc_resample_h_near_u32_lq (guint32 * ORC_RESTRICT d1,
23931     const guint32 * ORC_RESTRICT s1, int p1, int p2, int n)
23932 {
23933   OrcExecutor _ex, *ex = &_ex;
23934   static volatile int p_inited = 0;
23935   static OrcCode *c = 0;
23936   void (*func) (OrcExecutor *);
23937 
23938   if (!p_inited) {
23939     orc_once_mutex_lock ();
23940     if (!p_inited) {
23941       OrcProgram *p;
23942 
23943 #if 1
23944       static const orc_uint8 bc[] = {
23945         1, 9, 32, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
23946         97, 109, 112, 108, 101, 95, 104, 95, 110, 101, 97, 114, 95, 117, 51, 50,
23947         95, 108, 113, 11, 4, 4, 12, 4, 4, 16, 4, 16, 4, 49, 0, 4,
23948         24, 25, 2, 0,
23949       };
23950       p = orc_program_new_from_static_bytecode (bc);
23951       orc_program_set_backup_function (p,
23952           _backup_video_orc_resample_h_near_u32_lq);
23953 #else
23954       p = orc_program_new ();
23955       orc_program_set_name (p, "video_orc_resample_h_near_u32_lq");
23956       orc_program_set_backup_function (p,
23957           _backup_video_orc_resample_h_near_u32_lq);
23958       orc_program_add_destination (p, 4, "d1");
23959       orc_program_add_source (p, 4, "s1");
23960       orc_program_add_parameter (p, 4, "p1");
23961       orc_program_add_parameter (p, 4, "p2");
23962 
23963       orc_program_append_2 (p, "ldresnearl", 0, ORC_VAR_D1, ORC_VAR_S1,
23964           ORC_VAR_P1, ORC_VAR_P2);
23965 #endif
23966 
23967       orc_program_compile (p);
23968       c = orc_program_take_code (p);
23969       orc_program_free (p);
23970     }
23971     p_inited = TRUE;
23972     orc_once_mutex_unlock ();
23973   }
23974   ex->arrays[ORC_VAR_A2] = c;
23975   ex->program = 0;
23976 
23977   ex->n = n;
23978   ex->arrays[ORC_VAR_D1] = d1;
23979   ex->arrays[ORC_VAR_S1] = (void *) s1;
23980   ex->params[ORC_VAR_P1] = p1;
23981   ex->params[ORC_VAR_P2] = p2;
23982 
23983   func = c->exec;
23984   func (ex);
23985 }
23986 #endif
23987 
23988 
23989 /* video_orc_resample_h_2tap_1u8_lq */
23990 #ifdef DISABLE_ORC
23991 void
video_orc_resample_h_2tap_1u8_lq(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int p1,int p2,int n)23992 video_orc_resample_h_2tap_1u8_lq (guint8 * ORC_RESTRICT d1,
23993     const guint8 * ORC_RESTRICT s1, int p1, int p2, int n)
23994 {
23995   int i;
23996   orc_int8 *ORC_RESTRICT ptr0;
23997   const orc_int8 *ORC_RESTRICT ptr4;
23998   orc_int8 var32;
23999 
24000   ptr0 = (orc_int8 *) d1;
24001   ptr4 = (orc_int8 *) s1;
24002 
24003 
24004   for (i = 0; i < n; i++) {
24005     /* 0: ldreslinb */
24006     {
24007       int tmp = p1 + i * p2;
24008       var32 =
24009           ((orc_uint8) ptr4[tmp >> 16] * (256 - ((tmp >> 8) & 0xff)) +
24010           (orc_uint8) ptr4[(tmp >> 16) + 1] * ((tmp >> 8) & 0xff)) >> 8;
24011     }
24012     /* 1: storeb */
24013     ptr0[i] = var32;
24014   }
24015 
24016 }
24017 
24018 #else
24019 static void
_backup_video_orc_resample_h_2tap_1u8_lq(OrcExecutor * ORC_RESTRICT ex)24020 _backup_video_orc_resample_h_2tap_1u8_lq (OrcExecutor * ORC_RESTRICT ex)
24021 {
24022   int i;
24023   int n = ex->n;
24024   orc_int8 *ORC_RESTRICT ptr0;
24025   const orc_int8 *ORC_RESTRICT ptr4;
24026   orc_int8 var32;
24027 
24028   ptr0 = (orc_int8 *) ex->arrays[0];
24029   ptr4 = (orc_int8 *) ex->arrays[4];
24030 
24031 
24032   for (i = 0; i < n; i++) {
24033     /* 0: ldreslinb */
24034     {
24035       int tmp = ex->params[24] + i * ex->params[25];
24036       var32 =
24037           ((orc_uint8) ptr4[tmp >> 16] * (256 - ((tmp >> 8) & 0xff)) +
24038           (orc_uint8) ptr4[(tmp >> 16) + 1] * ((tmp >> 8) & 0xff)) >> 8;
24039     }
24040     /* 1: storeb */
24041     ptr0[i] = var32;
24042   }
24043 
24044 }
24045 
24046 void
video_orc_resample_h_2tap_1u8_lq(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int p1,int p2,int n)24047 video_orc_resample_h_2tap_1u8_lq (guint8 * ORC_RESTRICT d1,
24048     const guint8 * ORC_RESTRICT s1, int p1, int p2, int n)
24049 {
24050   OrcExecutor _ex, *ex = &_ex;
24051   static volatile int p_inited = 0;
24052   static OrcCode *c = 0;
24053   void (*func) (OrcExecutor *);
24054 
24055   if (!p_inited) {
24056     orc_once_mutex_lock ();
24057     if (!p_inited) {
24058       OrcProgram *p;
24059 
24060 #if 1
24061       static const orc_uint8 bc[] = {
24062         1, 9, 32, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
24063         97, 109, 112, 108, 101, 95, 104, 95, 50, 116, 97, 112, 95, 49, 117, 56,
24064         95, 108, 113, 11, 1, 1, 12, 1, 1, 16, 4, 16, 4, 50, 0, 4,
24065         24, 25, 2, 0,
24066       };
24067       p = orc_program_new_from_static_bytecode (bc);
24068       orc_program_set_backup_function (p,
24069           _backup_video_orc_resample_h_2tap_1u8_lq);
24070 #else
24071       p = orc_program_new ();
24072       orc_program_set_name (p, "video_orc_resample_h_2tap_1u8_lq");
24073       orc_program_set_backup_function (p,
24074           _backup_video_orc_resample_h_2tap_1u8_lq);
24075       orc_program_add_destination (p, 1, "d1");
24076       orc_program_add_source (p, 1, "s1");
24077       orc_program_add_parameter (p, 4, "p1");
24078       orc_program_add_parameter (p, 4, "p2");
24079 
24080       orc_program_append_2 (p, "ldreslinb", 0, ORC_VAR_D1, ORC_VAR_S1,
24081           ORC_VAR_P1, ORC_VAR_P2);
24082 #endif
24083 
24084       orc_program_compile (p);
24085       c = orc_program_take_code (p);
24086       orc_program_free (p);
24087     }
24088     p_inited = TRUE;
24089     orc_once_mutex_unlock ();
24090   }
24091   ex->arrays[ORC_VAR_A2] = c;
24092   ex->program = 0;
24093 
24094   ex->n = n;
24095   ex->arrays[ORC_VAR_D1] = d1;
24096   ex->arrays[ORC_VAR_S1] = (void *) s1;
24097   ex->params[ORC_VAR_P1] = p1;
24098   ex->params[ORC_VAR_P2] = p2;
24099 
24100   func = c->exec;
24101   func (ex);
24102 }
24103 #endif
24104 
24105 
24106 /* video_orc_resample_h_2tap_4u8_lq */
24107 #ifdef DISABLE_ORC
24108 void
video_orc_resample_h_2tap_4u8_lq(guint32 * ORC_RESTRICT d1,const guint32 * ORC_RESTRICT s1,int p1,int p2,int n)24109 video_orc_resample_h_2tap_4u8_lq (guint32 * ORC_RESTRICT d1,
24110     const guint32 * ORC_RESTRICT s1, int p1, int p2, int n)
24111 {
24112   int i;
24113   orc_union32 *ORC_RESTRICT ptr0;
24114   const orc_union32 *ORC_RESTRICT ptr4;
24115   orc_union32 var32;
24116 
24117   ptr0 = (orc_union32 *) d1;
24118   ptr4 = (orc_union32 *) s1;
24119 
24120 
24121   for (i = 0; i < n; i++) {
24122     /* 0: ldreslinl */
24123     {
24124       int tmp = p1 + i * p2;
24125       orc_union32 a = ptr4[tmp >> 16];
24126       orc_union32 b = ptr4[(tmp >> 16) + 1];
24127       var32.x4[0] =
24128           ((orc_uint8) a.x4[0] * (256 - ((tmp >> 8) & 0xff)) +
24129           (orc_uint8) b.x4[0] * ((tmp >> 8) & 0xff)) >> 8;
24130       var32.x4[1] =
24131           ((orc_uint8) a.x4[1] * (256 - ((tmp >> 8) & 0xff)) +
24132           (orc_uint8) b.x4[1] * ((tmp >> 8) & 0xff)) >> 8;
24133       var32.x4[2] =
24134           ((orc_uint8) a.x4[2] * (256 - ((tmp >> 8) & 0xff)) +
24135           (orc_uint8) b.x4[2] * ((tmp >> 8) & 0xff)) >> 8;
24136       var32.x4[3] =
24137           ((orc_uint8) a.x4[3] * (256 - ((tmp >> 8) & 0xff)) +
24138           (orc_uint8) b.x4[3] * ((tmp >> 8) & 0xff)) >> 8;
24139     }
24140     /* 1: storel */
24141     ptr0[i] = var32;
24142   }
24143 
24144 }
24145 
24146 #else
24147 static void
_backup_video_orc_resample_h_2tap_4u8_lq(OrcExecutor * ORC_RESTRICT ex)24148 _backup_video_orc_resample_h_2tap_4u8_lq (OrcExecutor * ORC_RESTRICT ex)
24149 {
24150   int i;
24151   int n = ex->n;
24152   orc_union32 *ORC_RESTRICT ptr0;
24153   const orc_union32 *ORC_RESTRICT ptr4;
24154   orc_union32 var32;
24155 
24156   ptr0 = (orc_union32 *) ex->arrays[0];
24157   ptr4 = (orc_union32 *) ex->arrays[4];
24158 
24159 
24160   for (i = 0; i < n; i++) {
24161     /* 0: ldreslinl */
24162     {
24163       int tmp = ex->params[24] + i * ex->params[25];
24164       orc_union32 a = ptr4[tmp >> 16];
24165       orc_union32 b = ptr4[(tmp >> 16) + 1];
24166       var32.x4[0] =
24167           ((orc_uint8) a.x4[0] * (256 - ((tmp >> 8) & 0xff)) +
24168           (orc_uint8) b.x4[0] * ((tmp >> 8) & 0xff)) >> 8;
24169       var32.x4[1] =
24170           ((orc_uint8) a.x4[1] * (256 - ((tmp >> 8) & 0xff)) +
24171           (orc_uint8) b.x4[1] * ((tmp >> 8) & 0xff)) >> 8;
24172       var32.x4[2] =
24173           ((orc_uint8) a.x4[2] * (256 - ((tmp >> 8) & 0xff)) +
24174           (orc_uint8) b.x4[2] * ((tmp >> 8) & 0xff)) >> 8;
24175       var32.x4[3] =
24176           ((orc_uint8) a.x4[3] * (256 - ((tmp >> 8) & 0xff)) +
24177           (orc_uint8) b.x4[3] * ((tmp >> 8) & 0xff)) >> 8;
24178     }
24179     /* 1: storel */
24180     ptr0[i] = var32;
24181   }
24182 
24183 }
24184 
24185 void
video_orc_resample_h_2tap_4u8_lq(guint32 * ORC_RESTRICT d1,const guint32 * ORC_RESTRICT s1,int p1,int p2,int n)24186 video_orc_resample_h_2tap_4u8_lq (guint32 * ORC_RESTRICT d1,
24187     const guint32 * ORC_RESTRICT s1, int p1, int p2, int n)
24188 {
24189   OrcExecutor _ex, *ex = &_ex;
24190   static volatile int p_inited = 0;
24191   static OrcCode *c = 0;
24192   void (*func) (OrcExecutor *);
24193 
24194   if (!p_inited) {
24195     orc_once_mutex_lock ();
24196     if (!p_inited) {
24197       OrcProgram *p;
24198 
24199 #if 1
24200       static const orc_uint8 bc[] = {
24201         1, 9, 32, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
24202         97, 109, 112, 108, 101, 95, 104, 95, 50, 116, 97, 112, 95, 52, 117, 56,
24203         95, 108, 113, 11, 4, 4, 12, 4, 4, 16, 4, 16, 4, 51, 0, 4,
24204         24, 25, 2, 0,
24205       };
24206       p = orc_program_new_from_static_bytecode (bc);
24207       orc_program_set_backup_function (p,
24208           _backup_video_orc_resample_h_2tap_4u8_lq);
24209 #else
24210       p = orc_program_new ();
24211       orc_program_set_name (p, "video_orc_resample_h_2tap_4u8_lq");
24212       orc_program_set_backup_function (p,
24213           _backup_video_orc_resample_h_2tap_4u8_lq);
24214       orc_program_add_destination (p, 4, "d1");
24215       orc_program_add_source (p, 4, "s1");
24216       orc_program_add_parameter (p, 4, "p1");
24217       orc_program_add_parameter (p, 4, "p2");
24218 
24219       orc_program_append_2 (p, "ldreslinl", 0, ORC_VAR_D1, ORC_VAR_S1,
24220           ORC_VAR_P1, ORC_VAR_P2);
24221 #endif
24222 
24223       orc_program_compile (p);
24224       c = orc_program_take_code (p);
24225       orc_program_free (p);
24226     }
24227     p_inited = TRUE;
24228     orc_once_mutex_unlock ();
24229   }
24230   ex->arrays[ORC_VAR_A2] = c;
24231   ex->program = 0;
24232 
24233   ex->n = n;
24234   ex->arrays[ORC_VAR_D1] = d1;
24235   ex->arrays[ORC_VAR_S1] = (void *) s1;
24236   ex->params[ORC_VAR_P1] = p1;
24237   ex->params[ORC_VAR_P2] = p2;
24238 
24239   func = c->exec;
24240   func (ex);
24241 }
24242 #endif
24243 
24244 
24245 /* video_orc_resample_h_2tap_u8_lq */
24246 #ifdef DISABLE_ORC
24247 void
video_orc_resample_h_2tap_u8_lq(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,const gint16 * ORC_RESTRICT s3,const gint16 * ORC_RESTRICT s4,int n)24248 video_orc_resample_h_2tap_u8_lq (guint8 * ORC_RESTRICT d1,
24249     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
24250     const gint16 * ORC_RESTRICT s3, const gint16 * ORC_RESTRICT s4, int n)
24251 {
24252   int i;
24253   orc_int8 *ORC_RESTRICT ptr0;
24254   const orc_int8 *ORC_RESTRICT ptr4;
24255   const orc_int8 *ORC_RESTRICT ptr5;
24256   const orc_union16 *ORC_RESTRICT ptr6;
24257   const orc_union16 *ORC_RESTRICT ptr7;
24258   orc_int8 var34;
24259   orc_union16 var35;
24260   orc_int8 var36;
24261   orc_union16 var37;
24262 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
24263   volatile orc_union16 var38;
24264 #else
24265   orc_union16 var38;
24266 #endif
24267   orc_int8 var39;
24268   orc_union16 var40;
24269   orc_union16 var41;
24270   orc_union16 var42;
24271   orc_union16 var43;
24272   orc_union16 var44;
24273   orc_union16 var45;
24274   orc_union16 var46;
24275 
24276   ptr0 = (orc_int8 *) d1;
24277   ptr4 = (orc_int8 *) s1;
24278   ptr5 = (orc_int8 *) s2;
24279   ptr6 = (orc_union16 *) s3;
24280   ptr7 = (orc_union16 *) s4;
24281 
24282   /* 9: loadpw */
24283   var38.i = 0x00000020;         /* 32 or 1.58101e-322f */
24284 
24285   for (i = 0; i < n; i++) {
24286     /* 0: loadb */
24287     var34 = ptr4[i];
24288     /* 1: convubw */
24289     var40.i = (orc_uint8) var34;
24290     /* 2: loadw */
24291     var35 = ptr6[i];
24292     /* 3: mullw */
24293     var41.i = (var40.i * var35.i) & 0xffff;
24294     /* 4: loadb */
24295     var36 = ptr5[i];
24296     /* 5: convubw */
24297     var42.i = (orc_uint8) var36;
24298     /* 6: loadw */
24299     var37 = ptr7[i];
24300     /* 7: mullw */
24301     var43.i = (var42.i * var37.i) & 0xffff;
24302     /* 8: addw */
24303     var44.i = var41.i + var43.i;
24304     /* 10: addw */
24305     var45.i = var44.i + var38.i;
24306     /* 11: shrsw */
24307     var46.i = var45.i >> 6;
24308     /* 12: convsuswb */
24309     var39 = ORC_CLAMP_UB (var46.i);
24310     /* 13: storeb */
24311     ptr0[i] = var39;
24312   }
24313 
24314 }
24315 
24316 #else
24317 static void
_backup_video_orc_resample_h_2tap_u8_lq(OrcExecutor * ORC_RESTRICT ex)24318 _backup_video_orc_resample_h_2tap_u8_lq (OrcExecutor * ORC_RESTRICT ex)
24319 {
24320   int i;
24321   int n = ex->n;
24322   orc_int8 *ORC_RESTRICT ptr0;
24323   const orc_int8 *ORC_RESTRICT ptr4;
24324   const orc_int8 *ORC_RESTRICT ptr5;
24325   const orc_union16 *ORC_RESTRICT ptr6;
24326   const orc_union16 *ORC_RESTRICT ptr7;
24327   orc_int8 var34;
24328   orc_union16 var35;
24329   orc_int8 var36;
24330   orc_union16 var37;
24331 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
24332   volatile orc_union16 var38;
24333 #else
24334   orc_union16 var38;
24335 #endif
24336   orc_int8 var39;
24337   orc_union16 var40;
24338   orc_union16 var41;
24339   orc_union16 var42;
24340   orc_union16 var43;
24341   orc_union16 var44;
24342   orc_union16 var45;
24343   orc_union16 var46;
24344 
24345   ptr0 = (orc_int8 *) ex->arrays[0];
24346   ptr4 = (orc_int8 *) ex->arrays[4];
24347   ptr5 = (orc_int8 *) ex->arrays[5];
24348   ptr6 = (orc_union16 *) ex->arrays[6];
24349   ptr7 = (orc_union16 *) ex->arrays[7];
24350 
24351   /* 9: loadpw */
24352   var38.i = 0x00000020;         /* 32 or 1.58101e-322f */
24353 
24354   for (i = 0; i < n; i++) {
24355     /* 0: loadb */
24356     var34 = ptr4[i];
24357     /* 1: convubw */
24358     var40.i = (orc_uint8) var34;
24359     /* 2: loadw */
24360     var35 = ptr6[i];
24361     /* 3: mullw */
24362     var41.i = (var40.i * var35.i) & 0xffff;
24363     /* 4: loadb */
24364     var36 = ptr5[i];
24365     /* 5: convubw */
24366     var42.i = (orc_uint8) var36;
24367     /* 6: loadw */
24368     var37 = ptr7[i];
24369     /* 7: mullw */
24370     var43.i = (var42.i * var37.i) & 0xffff;
24371     /* 8: addw */
24372     var44.i = var41.i + var43.i;
24373     /* 10: addw */
24374     var45.i = var44.i + var38.i;
24375     /* 11: shrsw */
24376     var46.i = var45.i >> 6;
24377     /* 12: convsuswb */
24378     var39 = ORC_CLAMP_UB (var46.i);
24379     /* 13: storeb */
24380     ptr0[i] = var39;
24381   }
24382 
24383 }
24384 
24385 void
video_orc_resample_h_2tap_u8_lq(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,const gint16 * ORC_RESTRICT s3,const gint16 * ORC_RESTRICT s4,int n)24386 video_orc_resample_h_2tap_u8_lq (guint8 * ORC_RESTRICT d1,
24387     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
24388     const gint16 * ORC_RESTRICT s3, const gint16 * ORC_RESTRICT s4, int n)
24389 {
24390   OrcExecutor _ex, *ex = &_ex;
24391   static volatile int p_inited = 0;
24392   static OrcCode *c = 0;
24393   void (*func) (OrcExecutor *);
24394 
24395   if (!p_inited) {
24396     orc_once_mutex_lock ();
24397     if (!p_inited) {
24398       OrcProgram *p;
24399 
24400 #if 1
24401       static const orc_uint8 bc[] = {
24402         1, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
24403         97, 109, 112, 108, 101, 95, 104, 95, 50, 116, 97, 112, 95, 117, 56, 95,
24404         108, 113, 11, 1, 1, 12, 1, 1, 12, 1, 1, 12, 2, 2, 12, 2,
24405         2, 14, 2, 32, 0, 0, 0, 14, 2, 6, 0, 0, 0, 20, 2, 20,
24406         2, 150, 32, 4, 89, 32, 32, 6, 150, 33, 5, 89, 33, 33, 7, 70,
24407         32, 32, 33, 70, 32, 32, 16, 94, 32, 32, 17, 160, 0, 32, 2, 0,
24408 
24409       };
24410       p = orc_program_new_from_static_bytecode (bc);
24411       orc_program_set_backup_function (p,
24412           _backup_video_orc_resample_h_2tap_u8_lq);
24413 #else
24414       p = orc_program_new ();
24415       orc_program_set_name (p, "video_orc_resample_h_2tap_u8_lq");
24416       orc_program_set_backup_function (p,
24417           _backup_video_orc_resample_h_2tap_u8_lq);
24418       orc_program_add_destination (p, 1, "d1");
24419       orc_program_add_source (p, 1, "s1");
24420       orc_program_add_source (p, 1, "s2");
24421       orc_program_add_source (p, 2, "s3");
24422       orc_program_add_source (p, 2, "s4");
24423       orc_program_add_constant (p, 2, 0x00000020, "c1");
24424       orc_program_add_constant (p, 2, 0x00000006, "c2");
24425       orc_program_add_temporary (p, 2, "t1");
24426       orc_program_add_temporary (p, 2, "t2");
24427 
24428       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
24429           ORC_VAR_D1);
24430       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S3,
24431           ORC_VAR_D1);
24432       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
24433           ORC_VAR_D1);
24434       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_S4,
24435           ORC_VAR_D1);
24436       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
24437           ORC_VAR_D1);
24438       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
24439           ORC_VAR_D1);
24440       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2,
24441           ORC_VAR_D1);
24442       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1,
24443           ORC_VAR_D1, ORC_VAR_D1);
24444 #endif
24445 
24446       orc_program_compile (p);
24447       c = orc_program_take_code (p);
24448       orc_program_free (p);
24449     }
24450     p_inited = TRUE;
24451     orc_once_mutex_unlock ();
24452   }
24453   ex->arrays[ORC_VAR_A2] = c;
24454   ex->program = 0;
24455 
24456   ex->n = n;
24457   ex->arrays[ORC_VAR_D1] = d1;
24458   ex->arrays[ORC_VAR_S1] = (void *) s1;
24459   ex->arrays[ORC_VAR_S2] = (void *) s2;
24460   ex->arrays[ORC_VAR_S3] = (void *) s3;
24461   ex->arrays[ORC_VAR_S4] = (void *) s4;
24462 
24463   func = c->exec;
24464   func (ex);
24465 }
24466 #endif
24467 
24468 
24469 /* video_orc_resample_h_2tap_u16 */
24470 #ifdef DISABLE_ORC
24471 void
video_orc_resample_h_2tap_u16(guint16 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,const guint16 * ORC_RESTRICT s2,const gint16 * ORC_RESTRICT s3,const gint16 * ORC_RESTRICT s4,int n)24472 video_orc_resample_h_2tap_u16 (guint16 * ORC_RESTRICT d1,
24473     const guint16 * ORC_RESTRICT s1, const guint16 * ORC_RESTRICT s2,
24474     const gint16 * ORC_RESTRICT s3, const gint16 * ORC_RESTRICT s4, int n)
24475 {
24476   int i;
24477   orc_union16 *ORC_RESTRICT ptr0;
24478   const orc_union16 *ORC_RESTRICT ptr4;
24479   const orc_union16 *ORC_RESTRICT ptr5;
24480   const orc_union16 *ORC_RESTRICT ptr6;
24481   const orc_union16 *ORC_RESTRICT ptr7;
24482   orc_union16 var36;
24483   orc_union16 var37;
24484   orc_union16 var38;
24485   orc_union16 var39;
24486 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
24487   volatile orc_union32 var40;
24488 #else
24489   orc_union32 var40;
24490 #endif
24491   orc_union16 var41;
24492   orc_union32 var42;
24493   orc_union32 var43;
24494   orc_union32 var44;
24495   orc_union32 var45;
24496   orc_union32 var46;
24497   orc_union32 var47;
24498   orc_union32 var48;
24499   orc_union32 var49;
24500   orc_union32 var50;
24501 
24502   ptr0 = (orc_union16 *) d1;
24503   ptr4 = (orc_union16 *) s1;
24504   ptr5 = (orc_union16 *) s2;
24505   ptr6 = (orc_union16 *) s3;
24506   ptr7 = (orc_union16 *) s4;
24507 
24508   /* 11: loadpl */
24509   var40.i = 0x00001000;         /* 4096 or 2.02369e-320f */
24510 
24511   for (i = 0; i < n; i++) {
24512     /* 0: loadw */
24513     var36 = ptr4[i];
24514     /* 1: convuwl */
24515     var42.i = (orc_uint16) var36.i;
24516     /* 2: loadw */
24517     var37 = ptr6[i];
24518     /* 3: convswl */
24519     var43.i = var37.i;
24520     /* 4: mulll */
24521     var44.i = (((orc_uint32) var42.i) * ((orc_uint32) var43.i)) & 0xffffffff;
24522     /* 5: loadw */
24523     var38 = ptr5[i];
24524     /* 6: convuwl */
24525     var45.i = (orc_uint16) var38.i;
24526     /* 7: loadw */
24527     var39 = ptr7[i];
24528     /* 8: convswl */
24529     var46.i = var39.i;
24530     /* 9: mulll */
24531     var47.i = (((orc_uint32) var45.i) * ((orc_uint32) var46.i)) & 0xffffffff;
24532     /* 10: addl */
24533     var48.i = ((orc_uint32) var44.i) + ((orc_uint32) var47.i);
24534     /* 12: addl */
24535     var49.i = ((orc_uint32) var48.i) + ((orc_uint32) var40.i);
24536     /* 13: shrsl */
24537     var50.i = var49.i >> 12;
24538     /* 14: convsuslw */
24539     var41.i = ORC_CLAMP_UW (var50.i);
24540     /* 15: storew */
24541     ptr0[i] = var41;
24542   }
24543 
24544 }
24545 
24546 #else
24547 static void
_backup_video_orc_resample_h_2tap_u16(OrcExecutor * ORC_RESTRICT ex)24548 _backup_video_orc_resample_h_2tap_u16 (OrcExecutor * ORC_RESTRICT ex)
24549 {
24550   int i;
24551   int n = ex->n;
24552   orc_union16 *ORC_RESTRICT ptr0;
24553   const orc_union16 *ORC_RESTRICT ptr4;
24554   const orc_union16 *ORC_RESTRICT ptr5;
24555   const orc_union16 *ORC_RESTRICT ptr6;
24556   const orc_union16 *ORC_RESTRICT ptr7;
24557   orc_union16 var36;
24558   orc_union16 var37;
24559   orc_union16 var38;
24560   orc_union16 var39;
24561 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
24562   volatile orc_union32 var40;
24563 #else
24564   orc_union32 var40;
24565 #endif
24566   orc_union16 var41;
24567   orc_union32 var42;
24568   orc_union32 var43;
24569   orc_union32 var44;
24570   orc_union32 var45;
24571   orc_union32 var46;
24572   orc_union32 var47;
24573   orc_union32 var48;
24574   orc_union32 var49;
24575   orc_union32 var50;
24576 
24577   ptr0 = (orc_union16 *) ex->arrays[0];
24578   ptr4 = (orc_union16 *) ex->arrays[4];
24579   ptr5 = (orc_union16 *) ex->arrays[5];
24580   ptr6 = (orc_union16 *) ex->arrays[6];
24581   ptr7 = (orc_union16 *) ex->arrays[7];
24582 
24583   /* 11: loadpl */
24584   var40.i = 0x00001000;         /* 4096 or 2.02369e-320f */
24585 
24586   for (i = 0; i < n; i++) {
24587     /* 0: loadw */
24588     var36 = ptr4[i];
24589     /* 1: convuwl */
24590     var42.i = (orc_uint16) var36.i;
24591     /* 2: loadw */
24592     var37 = ptr6[i];
24593     /* 3: convswl */
24594     var43.i = var37.i;
24595     /* 4: mulll */
24596     var44.i = (((orc_uint32) var42.i) * ((orc_uint32) var43.i)) & 0xffffffff;
24597     /* 5: loadw */
24598     var38 = ptr5[i];
24599     /* 6: convuwl */
24600     var45.i = (orc_uint16) var38.i;
24601     /* 7: loadw */
24602     var39 = ptr7[i];
24603     /* 8: convswl */
24604     var46.i = var39.i;
24605     /* 9: mulll */
24606     var47.i = (((orc_uint32) var45.i) * ((orc_uint32) var46.i)) & 0xffffffff;
24607     /* 10: addl */
24608     var48.i = ((orc_uint32) var44.i) + ((orc_uint32) var47.i);
24609     /* 12: addl */
24610     var49.i = ((orc_uint32) var48.i) + ((orc_uint32) var40.i);
24611     /* 13: shrsl */
24612     var50.i = var49.i >> 12;
24613     /* 14: convsuslw */
24614     var41.i = ORC_CLAMP_UW (var50.i);
24615     /* 15: storew */
24616     ptr0[i] = var41;
24617   }
24618 
24619 }
24620 
24621 void
video_orc_resample_h_2tap_u16(guint16 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,const guint16 * ORC_RESTRICT s2,const gint16 * ORC_RESTRICT s3,const gint16 * ORC_RESTRICT s4,int n)24622 video_orc_resample_h_2tap_u16 (guint16 * ORC_RESTRICT d1,
24623     const guint16 * ORC_RESTRICT s1, const guint16 * ORC_RESTRICT s2,
24624     const gint16 * ORC_RESTRICT s3, const gint16 * ORC_RESTRICT s4, int n)
24625 {
24626   OrcExecutor _ex, *ex = &_ex;
24627   static volatile int p_inited = 0;
24628   static OrcCode *c = 0;
24629   void (*func) (OrcExecutor *);
24630 
24631   if (!p_inited) {
24632     orc_once_mutex_lock ();
24633     if (!p_inited) {
24634       OrcProgram *p;
24635 
24636 #if 1
24637       static const orc_uint8 bc[] = {
24638         1, 9, 29, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
24639         97, 109, 112, 108, 101, 95, 104, 95, 50, 116, 97, 112, 95, 117, 49, 54,
24640         11, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 12, 2, 2, 14,
24641         4, 0, 16, 0, 0, 14, 4, 12, 0, 0, 0, 20, 4, 20, 4, 20,
24642         4, 20, 4, 154, 32, 4, 153, 34, 6, 120, 32, 32, 34, 154, 33, 5,
24643         153, 35, 7, 120, 33, 33, 35, 103, 32, 32, 33, 103, 32, 32, 16, 125,
24644         32, 32, 17, 166, 0, 32, 2, 0,
24645       };
24646       p = orc_program_new_from_static_bytecode (bc);
24647       orc_program_set_backup_function (p,
24648           _backup_video_orc_resample_h_2tap_u16);
24649 #else
24650       p = orc_program_new ();
24651       orc_program_set_name (p, "video_orc_resample_h_2tap_u16");
24652       orc_program_set_backup_function (p,
24653           _backup_video_orc_resample_h_2tap_u16);
24654       orc_program_add_destination (p, 2, "d1");
24655       orc_program_add_source (p, 2, "s1");
24656       orc_program_add_source (p, 2, "s2");
24657       orc_program_add_source (p, 2, "s3");
24658       orc_program_add_source (p, 2, "s4");
24659       orc_program_add_constant (p, 4, 0x00001000, "c1");
24660       orc_program_add_constant (p, 4, 0x0000000c, "c2");
24661       orc_program_add_temporary (p, 4, "t1");
24662       orc_program_add_temporary (p, 4, "t2");
24663       orc_program_add_temporary (p, 4, "t3");
24664       orc_program_add_temporary (p, 4, "t4");
24665 
24666       orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
24667           ORC_VAR_D1);
24668       orc_program_append_2 (p, "convswl", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1,
24669           ORC_VAR_D1);
24670       orc_program_append_2 (p, "mulll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T3,
24671           ORC_VAR_D1);
24672       orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
24673           ORC_VAR_D1);
24674       orc_program_append_2 (p, "convswl", 0, ORC_VAR_T4, ORC_VAR_S4, ORC_VAR_D1,
24675           ORC_VAR_D1);
24676       orc_program_append_2 (p, "mulll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T4,
24677           ORC_VAR_D1);
24678       orc_program_append_2 (p, "addl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
24679           ORC_VAR_D1);
24680       orc_program_append_2 (p, "addl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
24681           ORC_VAR_D1);
24682       orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2,
24683           ORC_VAR_D1);
24684       orc_program_append_2 (p, "convsuslw", 0, ORC_VAR_D1, ORC_VAR_T1,
24685           ORC_VAR_D1, ORC_VAR_D1);
24686 #endif
24687 
24688       orc_program_compile (p);
24689       c = orc_program_take_code (p);
24690       orc_program_free (p);
24691     }
24692     p_inited = TRUE;
24693     orc_once_mutex_unlock ();
24694   }
24695   ex->arrays[ORC_VAR_A2] = c;
24696   ex->program = 0;
24697 
24698   ex->n = n;
24699   ex->arrays[ORC_VAR_D1] = d1;
24700   ex->arrays[ORC_VAR_S1] = (void *) s1;
24701   ex->arrays[ORC_VAR_S2] = (void *) s2;
24702   ex->arrays[ORC_VAR_S3] = (void *) s3;
24703   ex->arrays[ORC_VAR_S4] = (void *) s4;
24704 
24705   func = c->exec;
24706   func (ex);
24707 }
24708 #endif
24709 
24710 
24711 /* video_orc_resample_v_2tap_u8_lq */
24712 #ifdef DISABLE_ORC
24713 void
video_orc_resample_v_2tap_u8_lq(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,int p1,int n)24714 video_orc_resample_v_2tap_u8_lq (guint8 * ORC_RESTRICT d1,
24715     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int p1,
24716     int n)
24717 {
24718   int i;
24719   orc_int8 *ORC_RESTRICT ptr0;
24720   const orc_int8 *ORC_RESTRICT ptr4;
24721   const orc_int8 *ORC_RESTRICT ptr5;
24722   orc_int8 var35;
24723   orc_int8 var36;
24724   orc_union16 var37;
24725 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
24726   volatile orc_union16 var38;
24727 #else
24728   orc_union16 var38;
24729 #endif
24730   orc_int8 var39;
24731   orc_int8 var40;
24732   orc_union16 var41;
24733   orc_union16 var42;
24734   orc_union16 var43;
24735   orc_union16 var44;
24736   orc_union16 var45;
24737   orc_int8 var46;
24738 
24739   ptr0 = (orc_int8 *) d1;
24740   ptr4 = (orc_int8 *) s1;
24741   ptr5 = (orc_int8 *) s2;
24742 
24743   /* 5: loadpw */
24744   var37.i = p1;
24745   /* 7: loadpw */
24746   var38.i = 0x00000080;         /* 128 or 6.32404e-322f */
24747 
24748   for (i = 0; i < n; i++) {
24749     /* 0: loadb */
24750     var35 = ptr4[i];
24751     /* 1: convubw */
24752     var41.i = (orc_uint8) var35;
24753     /* 2: loadb */
24754     var36 = ptr5[i];
24755     /* 3: convubw */
24756     var42.i = (orc_uint8) var36;
24757     /* 4: subw */
24758     var43.i = var42.i - var41.i;
24759     /* 6: mullw */
24760     var44.i = (var43.i * var37.i) & 0xffff;
24761     /* 8: addw */
24762     var45.i = var44.i + var38.i;
24763     /* 9: convhwb */
24764     var46 = ((orc_uint16) var45.i) >> 8;
24765     /* 10: loadb */
24766     var39 = ptr4[i];
24767     /* 11: addb */
24768     var40 = var46 + var39;
24769     /* 12: storeb */
24770     ptr0[i] = var40;
24771   }
24772 
24773 }
24774 
24775 #else
24776 static void
_backup_video_orc_resample_v_2tap_u8_lq(OrcExecutor * ORC_RESTRICT ex)24777 _backup_video_orc_resample_v_2tap_u8_lq (OrcExecutor * ORC_RESTRICT ex)
24778 {
24779   int i;
24780   int n = ex->n;
24781   orc_int8 *ORC_RESTRICT ptr0;
24782   const orc_int8 *ORC_RESTRICT ptr4;
24783   const orc_int8 *ORC_RESTRICT ptr5;
24784   orc_int8 var35;
24785   orc_int8 var36;
24786   orc_union16 var37;
24787 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
24788   volatile orc_union16 var38;
24789 #else
24790   orc_union16 var38;
24791 #endif
24792   orc_int8 var39;
24793   orc_int8 var40;
24794   orc_union16 var41;
24795   orc_union16 var42;
24796   orc_union16 var43;
24797   orc_union16 var44;
24798   orc_union16 var45;
24799   orc_int8 var46;
24800 
24801   ptr0 = (orc_int8 *) ex->arrays[0];
24802   ptr4 = (orc_int8 *) ex->arrays[4];
24803   ptr5 = (orc_int8 *) ex->arrays[5];
24804 
24805   /* 5: loadpw */
24806   var37.i = ex->params[24];
24807   /* 7: loadpw */
24808   var38.i = 0x00000080;         /* 128 or 6.32404e-322f */
24809 
24810   for (i = 0; i < n; i++) {
24811     /* 0: loadb */
24812     var35 = ptr4[i];
24813     /* 1: convubw */
24814     var41.i = (orc_uint8) var35;
24815     /* 2: loadb */
24816     var36 = ptr5[i];
24817     /* 3: convubw */
24818     var42.i = (orc_uint8) var36;
24819     /* 4: subw */
24820     var43.i = var42.i - var41.i;
24821     /* 6: mullw */
24822     var44.i = (var43.i * var37.i) & 0xffff;
24823     /* 8: addw */
24824     var45.i = var44.i + var38.i;
24825     /* 9: convhwb */
24826     var46 = ((orc_uint16) var45.i) >> 8;
24827     /* 10: loadb */
24828     var39 = ptr4[i];
24829     /* 11: addb */
24830     var40 = var46 + var39;
24831     /* 12: storeb */
24832     ptr0[i] = var40;
24833   }
24834 
24835 }
24836 
24837 void
video_orc_resample_v_2tap_u8_lq(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,int p1,int n)24838 video_orc_resample_v_2tap_u8_lq (guint8 * ORC_RESTRICT d1,
24839     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int p1,
24840     int n)
24841 {
24842   OrcExecutor _ex, *ex = &_ex;
24843   static volatile int p_inited = 0;
24844   static OrcCode *c = 0;
24845   void (*func) (OrcExecutor *);
24846 
24847   if (!p_inited) {
24848     orc_once_mutex_lock ();
24849     if (!p_inited) {
24850       OrcProgram *p;
24851 
24852 #if 1
24853       static const orc_uint8 bc[] = {
24854         1, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
24855         97, 109, 112, 108, 101, 95, 118, 95, 50, 116, 97, 112, 95, 117, 56, 95,
24856         108, 113, 11, 1, 1, 12, 1, 1, 12, 1, 1, 14, 2, 128, 0, 0,
24857         0, 16, 2, 20, 1, 20, 2, 20, 2, 150, 33, 4, 150, 34, 5, 98,
24858         34, 34, 33, 89, 34, 34, 24, 70, 34, 34, 16, 158, 32, 34, 33, 0,
24859         32, 4, 2, 0,
24860       };
24861       p = orc_program_new_from_static_bytecode (bc);
24862       orc_program_set_backup_function (p,
24863           _backup_video_orc_resample_v_2tap_u8_lq);
24864 #else
24865       p = orc_program_new ();
24866       orc_program_set_name (p, "video_orc_resample_v_2tap_u8_lq");
24867       orc_program_set_backup_function (p,
24868           _backup_video_orc_resample_v_2tap_u8_lq);
24869       orc_program_add_destination (p, 1, "d1");
24870       orc_program_add_source (p, 1, "s1");
24871       orc_program_add_source (p, 1, "s2");
24872       orc_program_add_constant (p, 2, 0x00000080, "c1");
24873       orc_program_add_parameter (p, 2, "p1");
24874       orc_program_add_temporary (p, 1, "t1");
24875       orc_program_add_temporary (p, 2, "t2");
24876       orc_program_add_temporary (p, 2, "t3");
24877 
24878       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1,
24879           ORC_VAR_D1);
24880       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S2, ORC_VAR_D1,
24881           ORC_VAR_D1);
24882       orc_program_append_2 (p, "subw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T2,
24883           ORC_VAR_D1);
24884       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_P1,
24885           ORC_VAR_D1);
24886       orc_program_append_2 (p, "addw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C1,
24887           ORC_VAR_D1);
24888       orc_program_append_2 (p, "convhwb", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_D1,
24889           ORC_VAR_D1);
24890       orc_program_append_2 (p, "addb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1,
24891           ORC_VAR_D1);
24892 #endif
24893 
24894       orc_program_compile (p);
24895       c = orc_program_take_code (p);
24896       orc_program_free (p);
24897     }
24898     p_inited = TRUE;
24899     orc_once_mutex_unlock ();
24900   }
24901   ex->arrays[ORC_VAR_A2] = c;
24902   ex->program = 0;
24903 
24904   ex->n = n;
24905   ex->arrays[ORC_VAR_D1] = d1;
24906   ex->arrays[ORC_VAR_S1] = (void *) s1;
24907   ex->arrays[ORC_VAR_S2] = (void *) s2;
24908   ex->params[ORC_VAR_P1] = p1;
24909 
24910   func = c->exec;
24911   func (ex);
24912 }
24913 #endif
24914 
24915 
24916 /* video_orc_resample_v_2tap_u16 */
24917 #ifdef DISABLE_ORC
24918 void
video_orc_resample_v_2tap_u16(guint16 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,const guint16 * ORC_RESTRICT s2,int p1,int n)24919 video_orc_resample_v_2tap_u16 (guint16 * ORC_RESTRICT d1,
24920     const guint16 * ORC_RESTRICT s1, const guint16 * ORC_RESTRICT s2, int p1,
24921     int n)
24922 {
24923   int i;
24924   orc_union16 *ORC_RESTRICT ptr0;
24925   const orc_union16 *ORC_RESTRICT ptr4;
24926   const orc_union16 *ORC_RESTRICT ptr5;
24927   orc_union16 var35;
24928   orc_union16 var36;
24929   orc_union16 var37;
24930 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
24931   volatile orc_union32 var38;
24932 #else
24933   orc_union32 var38;
24934 #endif
24935   orc_union16 var39;
24936   orc_union32 var40;
24937   orc_union32 var41;
24938   orc_union32 var42;
24939   orc_union32 var43;
24940   orc_union32 var44;
24941   orc_union32 var45;
24942   orc_union32 var46;
24943   orc_union32 var47;
24944 
24945   ptr0 = (orc_union16 *) d1;
24946   ptr4 = (orc_union16 *) s1;
24947   ptr5 = (orc_union16 *) s2;
24948 
24949   /* 5: loadpw */
24950   var37.i = p1;
24951   /* 8: loadpl */
24952   var38.i = 0x00001000;         /* 4096 or 2.02369e-320f */
24953 
24954   for (i = 0; i < n; i++) {
24955     /* 0: loadw */
24956     var35 = ptr4[i];
24957     /* 1: convuwl */
24958     var40.i = (orc_uint16) var35.i;
24959     /* 2: loadw */
24960     var36 = ptr5[i];
24961     /* 3: convuwl */
24962     var41.i = (orc_uint16) var36.i;
24963     /* 4: subl */
24964     var42.i = ((orc_uint32) var41.i) - ((orc_uint32) var40.i);
24965     /* 6: convuwl */
24966     var43.i = (orc_uint16) var37.i;
24967     /* 7: mulll */
24968     var44.i = (((orc_uint32) var42.i) * ((orc_uint32) var43.i)) & 0xffffffff;
24969     /* 9: addl */
24970     var45.i = ((orc_uint32) var44.i) + ((orc_uint32) var38.i);
24971     /* 10: shrsl */
24972     var46.i = var45.i >> 12;
24973     /* 11: addl */
24974     var47.i = ((orc_uint32) var40.i) + ((orc_uint32) var46.i);
24975     /* 12: convsuslw */
24976     var39.i = ORC_CLAMP_UW (var47.i);
24977     /* 13: storew */
24978     ptr0[i] = var39;
24979   }
24980 
24981 }
24982 
24983 #else
24984 static void
_backup_video_orc_resample_v_2tap_u16(OrcExecutor * ORC_RESTRICT ex)24985 _backup_video_orc_resample_v_2tap_u16 (OrcExecutor * ORC_RESTRICT ex)
24986 {
24987   int i;
24988   int n = ex->n;
24989   orc_union16 *ORC_RESTRICT ptr0;
24990   const orc_union16 *ORC_RESTRICT ptr4;
24991   const orc_union16 *ORC_RESTRICT ptr5;
24992   orc_union16 var35;
24993   orc_union16 var36;
24994   orc_union16 var37;
24995 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
24996   volatile orc_union32 var38;
24997 #else
24998   orc_union32 var38;
24999 #endif
25000   orc_union16 var39;
25001   orc_union32 var40;
25002   orc_union32 var41;
25003   orc_union32 var42;
25004   orc_union32 var43;
25005   orc_union32 var44;
25006   orc_union32 var45;
25007   orc_union32 var46;
25008   orc_union32 var47;
25009 
25010   ptr0 = (orc_union16 *) ex->arrays[0];
25011   ptr4 = (orc_union16 *) ex->arrays[4];
25012   ptr5 = (orc_union16 *) ex->arrays[5];
25013 
25014   /* 5: loadpw */
25015   var37.i = ex->params[24];
25016   /* 8: loadpl */
25017   var38.i = 0x00001000;         /* 4096 or 2.02369e-320f */
25018 
25019   for (i = 0; i < n; i++) {
25020     /* 0: loadw */
25021     var35 = ptr4[i];
25022     /* 1: convuwl */
25023     var40.i = (orc_uint16) var35.i;
25024     /* 2: loadw */
25025     var36 = ptr5[i];
25026     /* 3: convuwl */
25027     var41.i = (orc_uint16) var36.i;
25028     /* 4: subl */
25029     var42.i = ((orc_uint32) var41.i) - ((orc_uint32) var40.i);
25030     /* 6: convuwl */
25031     var43.i = (orc_uint16) var37.i;
25032     /* 7: mulll */
25033     var44.i = (((orc_uint32) var42.i) * ((orc_uint32) var43.i)) & 0xffffffff;
25034     /* 9: addl */
25035     var45.i = ((orc_uint32) var44.i) + ((orc_uint32) var38.i);
25036     /* 10: shrsl */
25037     var46.i = var45.i >> 12;
25038     /* 11: addl */
25039     var47.i = ((orc_uint32) var40.i) + ((orc_uint32) var46.i);
25040     /* 12: convsuslw */
25041     var39.i = ORC_CLAMP_UW (var47.i);
25042     /* 13: storew */
25043     ptr0[i] = var39;
25044   }
25045 
25046 }
25047 
25048 void
video_orc_resample_v_2tap_u16(guint16 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,const guint16 * ORC_RESTRICT s2,int p1,int n)25049 video_orc_resample_v_2tap_u16 (guint16 * ORC_RESTRICT d1,
25050     const guint16 * ORC_RESTRICT s1, const guint16 * ORC_RESTRICT s2, int p1,
25051     int n)
25052 {
25053   OrcExecutor _ex, *ex = &_ex;
25054   static volatile int p_inited = 0;
25055   static OrcCode *c = 0;
25056   void (*func) (OrcExecutor *);
25057 
25058   if (!p_inited) {
25059     orc_once_mutex_lock ();
25060     if (!p_inited) {
25061       OrcProgram *p;
25062 
25063 #if 1
25064       static const orc_uint8 bc[] = {
25065         1, 9, 29, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
25066         97, 109, 112, 108, 101, 95, 118, 95, 50, 116, 97, 112, 95, 117, 49, 54,
25067         11, 2, 2, 12, 2, 2, 12, 2, 2, 14, 4, 0, 16, 0, 0, 14,
25068         4, 12, 0, 0, 0, 16, 2, 20, 4, 20, 4, 20, 4, 154, 32, 4,
25069         154, 33, 5, 129, 33, 33, 32, 154, 34, 24, 120, 33, 33, 34, 103, 33,
25070         33, 16, 125, 33, 33, 17, 103, 32, 32, 33, 166, 0, 32, 2, 0,
25071       };
25072       p = orc_program_new_from_static_bytecode (bc);
25073       orc_program_set_backup_function (p,
25074           _backup_video_orc_resample_v_2tap_u16);
25075 #else
25076       p = orc_program_new ();
25077       orc_program_set_name (p, "video_orc_resample_v_2tap_u16");
25078       orc_program_set_backup_function (p,
25079           _backup_video_orc_resample_v_2tap_u16);
25080       orc_program_add_destination (p, 2, "d1");
25081       orc_program_add_source (p, 2, "s1");
25082       orc_program_add_source (p, 2, "s2");
25083       orc_program_add_constant (p, 4, 0x00001000, "c1");
25084       orc_program_add_constant (p, 4, 0x0000000c, "c2");
25085       orc_program_add_parameter (p, 2, "p1");
25086       orc_program_add_temporary (p, 4, "t1");
25087       orc_program_add_temporary (p, 4, "t2");
25088       orc_program_add_temporary (p, 4, "t3");
25089 
25090       orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
25091           ORC_VAR_D1);
25092       orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
25093           ORC_VAR_D1);
25094       orc_program_append_2 (p, "subl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1,
25095           ORC_VAR_D1);
25096       orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T3, ORC_VAR_P1, ORC_VAR_D1,
25097           ORC_VAR_D1);
25098       orc_program_append_2 (p, "mulll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3,
25099           ORC_VAR_D1);
25100       orc_program_append_2 (p, "addl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1,
25101           ORC_VAR_D1);
25102       orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2,
25103           ORC_VAR_D1);
25104       orc_program_append_2 (p, "addl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
25105           ORC_VAR_D1);
25106       orc_program_append_2 (p, "convsuslw", 0, ORC_VAR_D1, ORC_VAR_T1,
25107           ORC_VAR_D1, ORC_VAR_D1);
25108 #endif
25109 
25110       orc_program_compile (p);
25111       c = orc_program_take_code (p);
25112       orc_program_free (p);
25113     }
25114     p_inited = TRUE;
25115     orc_once_mutex_unlock ();
25116   }
25117   ex->arrays[ORC_VAR_A2] = c;
25118   ex->program = 0;
25119 
25120   ex->n = n;
25121   ex->arrays[ORC_VAR_D1] = d1;
25122   ex->arrays[ORC_VAR_S1] = (void *) s1;
25123   ex->arrays[ORC_VAR_S2] = (void *) s2;
25124   ex->params[ORC_VAR_P1] = p1;
25125 
25126   func = c->exec;
25127   func (ex);
25128 }
25129 #endif
25130 
25131 
25132 /* video_orc_resample_v_2tap_u8 */
25133 #ifdef DISABLE_ORC
25134 void
video_orc_resample_v_2tap_u8(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,int p1,int n)25135 video_orc_resample_v_2tap_u8 (guint8 * ORC_RESTRICT d1,
25136     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int p1,
25137     int n)
25138 {
25139   int i;
25140   orc_int8 *ORC_RESTRICT ptr0;
25141   const orc_int8 *ORC_RESTRICT ptr4;
25142   const orc_int8 *ORC_RESTRICT ptr5;
25143   orc_int8 var37;
25144   orc_int8 var38;
25145   orc_union16 var39;
25146 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
25147   volatile orc_union32 var40;
25148 #else
25149   orc_union32 var40;
25150 #endif
25151   orc_int8 var41;
25152   orc_union16 var42;
25153   orc_union16 var43;
25154   orc_union16 var44;
25155   orc_union32 var45;
25156   orc_union32 var46;
25157   orc_union32 var47;
25158   orc_union16 var48;
25159   orc_union16 var49;
25160 
25161   ptr0 = (orc_int8 *) d1;
25162   ptr4 = (orc_int8 *) s1;
25163   ptr5 = (orc_int8 *) s2;
25164 
25165   /* 5: loadpw */
25166   var39.i = p1;
25167   /* 7: loadpl */
25168   var40.i = 0x00000fff;         /* 4095 or 2.0232e-320f */
25169 
25170   for (i = 0; i < n; i++) {
25171     /* 0: loadb */
25172     var37 = ptr4[i];
25173     /* 1: convubw */
25174     var42.i = (orc_uint8) var37;
25175     /* 2: loadb */
25176     var38 = ptr5[i];
25177     /* 3: convubw */
25178     var43.i = (orc_uint8) var38;
25179     /* 4: subw */
25180     var44.i = var43.i - var42.i;
25181     /* 6: mulswl */
25182     var45.i = var44.i * var39.i;
25183     /* 8: addl */
25184     var46.i = ((orc_uint32) var45.i) + ((orc_uint32) var40.i);
25185     /* 9: shrsl */
25186     var47.i = var46.i >> 12;
25187     /* 10: convlw */
25188     var48.i = var47.i;
25189     /* 11: addw */
25190     var49.i = var48.i + var42.i;
25191     /* 12: convsuswb */
25192     var41 = ORC_CLAMP_UB (var49.i);
25193     /* 13: storeb */
25194     ptr0[i] = var41;
25195   }
25196 
25197 }
25198 
25199 #else
25200 static void
_backup_video_orc_resample_v_2tap_u8(OrcExecutor * ORC_RESTRICT ex)25201 _backup_video_orc_resample_v_2tap_u8 (OrcExecutor * ORC_RESTRICT ex)
25202 {
25203   int i;
25204   int n = ex->n;
25205   orc_int8 *ORC_RESTRICT ptr0;
25206   const orc_int8 *ORC_RESTRICT ptr4;
25207   const orc_int8 *ORC_RESTRICT ptr5;
25208   orc_int8 var37;
25209   orc_int8 var38;
25210   orc_union16 var39;
25211 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
25212   volatile orc_union32 var40;
25213 #else
25214   orc_union32 var40;
25215 #endif
25216   orc_int8 var41;
25217   orc_union16 var42;
25218   orc_union16 var43;
25219   orc_union16 var44;
25220   orc_union32 var45;
25221   orc_union32 var46;
25222   orc_union32 var47;
25223   orc_union16 var48;
25224   orc_union16 var49;
25225 
25226   ptr0 = (orc_int8 *) ex->arrays[0];
25227   ptr4 = (orc_int8 *) ex->arrays[4];
25228   ptr5 = (orc_int8 *) ex->arrays[5];
25229 
25230   /* 5: loadpw */
25231   var39.i = ex->params[24];
25232   /* 7: loadpl */
25233   var40.i = 0x00000fff;         /* 4095 or 2.0232e-320f */
25234 
25235   for (i = 0; i < n; i++) {
25236     /* 0: loadb */
25237     var37 = ptr4[i];
25238     /* 1: convubw */
25239     var42.i = (orc_uint8) var37;
25240     /* 2: loadb */
25241     var38 = ptr5[i];
25242     /* 3: convubw */
25243     var43.i = (orc_uint8) var38;
25244     /* 4: subw */
25245     var44.i = var43.i - var42.i;
25246     /* 6: mulswl */
25247     var45.i = var44.i * var39.i;
25248     /* 8: addl */
25249     var46.i = ((orc_uint32) var45.i) + ((orc_uint32) var40.i);
25250     /* 9: shrsl */
25251     var47.i = var46.i >> 12;
25252     /* 10: convlw */
25253     var48.i = var47.i;
25254     /* 11: addw */
25255     var49.i = var48.i + var42.i;
25256     /* 12: convsuswb */
25257     var41 = ORC_CLAMP_UB (var49.i);
25258     /* 13: storeb */
25259     ptr0[i] = var41;
25260   }
25261 
25262 }
25263 
25264 void
video_orc_resample_v_2tap_u8(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,int p1,int n)25265 video_orc_resample_v_2tap_u8 (guint8 * ORC_RESTRICT d1,
25266     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int p1,
25267     int n)
25268 {
25269   OrcExecutor _ex, *ex = &_ex;
25270   static volatile int p_inited = 0;
25271   static OrcCode *c = 0;
25272   void (*func) (OrcExecutor *);
25273 
25274   if (!p_inited) {
25275     orc_once_mutex_lock ();
25276     if (!p_inited) {
25277       OrcProgram *p;
25278 
25279 #if 1
25280       static const orc_uint8 bc[] = {
25281         1, 9, 28, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
25282         97, 109, 112, 108, 101, 95, 118, 95, 50, 116, 97, 112, 95, 117, 56, 11,
25283         1, 1, 12, 1, 1, 12, 1, 1, 14, 4, 255, 15, 0, 0, 14, 4,
25284         12, 0, 0, 0, 16, 2, 20, 1, 20, 2, 20, 2, 20, 4, 20, 4,
25285         150, 33, 4, 150, 34, 5, 98, 34, 34, 33, 176, 36, 34, 24, 103, 36,
25286         36, 16, 125, 36, 36, 17, 163, 34, 36, 70, 34, 34, 33, 160, 0, 34,
25287         2, 0,
25288       };
25289       p = orc_program_new_from_static_bytecode (bc);
25290       orc_program_set_backup_function (p, _backup_video_orc_resample_v_2tap_u8);
25291 #else
25292       p = orc_program_new ();
25293       orc_program_set_name (p, "video_orc_resample_v_2tap_u8");
25294       orc_program_set_backup_function (p, _backup_video_orc_resample_v_2tap_u8);
25295       orc_program_add_destination (p, 1, "d1");
25296       orc_program_add_source (p, 1, "s1");
25297       orc_program_add_source (p, 1, "s2");
25298       orc_program_add_constant (p, 4, 0x00000fff, "c1");
25299       orc_program_add_constant (p, 4, 0x0000000c, "c2");
25300       orc_program_add_parameter (p, 2, "p1");
25301       orc_program_add_temporary (p, 1, "t1");
25302       orc_program_add_temporary (p, 2, "t2");
25303       orc_program_add_temporary (p, 2, "t3");
25304       orc_program_add_temporary (p, 4, "t4");
25305       orc_program_add_temporary (p, 4, "t5");
25306 
25307       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1,
25308           ORC_VAR_D1);
25309       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S2, ORC_VAR_D1,
25310           ORC_VAR_D1);
25311       orc_program_append_2 (p, "subw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T2,
25312           ORC_VAR_D1);
25313       orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_P1,
25314           ORC_VAR_D1);
25315       orc_program_append_2 (p, "addl", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C1,
25316           ORC_VAR_D1);
25317       orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C2,
25318           ORC_VAR_D1);
25319       orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T5, ORC_VAR_D1,
25320           ORC_VAR_D1);
25321       orc_program_append_2 (p, "addw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T2,
25322           ORC_VAR_D1);
25323       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T3,
25324           ORC_VAR_D1, ORC_VAR_D1);
25325 #endif
25326 
25327       orc_program_compile (p);
25328       c = orc_program_take_code (p);
25329       orc_program_free (p);
25330     }
25331     p_inited = TRUE;
25332     orc_once_mutex_unlock ();
25333   }
25334   ex->arrays[ORC_VAR_A2] = c;
25335   ex->program = 0;
25336 
25337   ex->n = n;
25338   ex->arrays[ORC_VAR_D1] = d1;
25339   ex->arrays[ORC_VAR_S1] = (void *) s1;
25340   ex->arrays[ORC_VAR_S2] = (void *) s2;
25341   ex->params[ORC_VAR_P1] = p1;
25342 
25343   func = c->exec;
25344   func (ex);
25345 }
25346 #endif
25347 
25348 
25349 /* video_orc_resample_v_4tap_u8_lq */
25350 #ifdef DISABLE_ORC
25351 void
video_orc_resample_v_4tap_u8_lq(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,const guint8 * ORC_RESTRICT s3,const guint8 * ORC_RESTRICT s4,int p1,int p2,int p3,int p4,int n)25352 video_orc_resample_v_4tap_u8_lq (guint8 * ORC_RESTRICT d1,
25353     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
25354     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int p1,
25355     int p2, int p3, int p4, int n)
25356 {
25357   int i;
25358   orc_int8 *ORC_RESTRICT ptr0;
25359   const orc_int8 *ORC_RESTRICT ptr4;
25360   const orc_int8 *ORC_RESTRICT ptr5;
25361   const orc_int8 *ORC_RESTRICT ptr6;
25362   const orc_int8 *ORC_RESTRICT ptr7;
25363   orc_int8 var34;
25364   orc_union16 var35;
25365   orc_int8 var36;
25366   orc_union16 var37;
25367   orc_int8 var38;
25368   orc_union16 var39;
25369   orc_int8 var40;
25370   orc_union16 var41;
25371 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
25372   volatile orc_union16 var42;
25373 #else
25374   orc_union16 var42;
25375 #endif
25376   orc_int8 var43;
25377   orc_union16 var44;
25378   orc_union16 var45;
25379   orc_union16 var46;
25380   orc_union16 var47;
25381   orc_union16 var48;
25382   orc_union16 var49;
25383   orc_union16 var50;
25384   orc_union16 var51;
25385   orc_union16 var52;
25386   orc_union16 var53;
25387   orc_union16 var54;
25388   orc_union16 var55;
25389   orc_union16 var56;
25390 
25391   ptr0 = (orc_int8 *) d1;
25392   ptr4 = (orc_int8 *) s1;
25393   ptr5 = (orc_int8 *) s2;
25394   ptr6 = (orc_int8 *) s3;
25395   ptr7 = (orc_int8 *) s4;
25396 
25397   /* 2: loadpw */
25398   var35.i = p1;
25399   /* 6: loadpw */
25400   var37.i = p2;
25401   /* 11: loadpw */
25402   var39.i = p3;
25403   /* 16: loadpw */
25404   var41.i = p4;
25405   /* 19: loadpw */
25406   var42.i = 0x00000020;         /* 32 or 1.58101e-322f */
25407 
25408   for (i = 0; i < n; i++) {
25409     /* 0: loadb */
25410     var34 = ptr4[i];
25411     /* 1: convubw */
25412     var44.i = (orc_uint8) var34;
25413     /* 3: mullw */
25414     var45.i = (var44.i * var35.i) & 0xffff;
25415     /* 4: loadb */
25416     var36 = ptr5[i];
25417     /* 5: convubw */
25418     var46.i = (orc_uint8) var36;
25419     /* 7: mullw */
25420     var47.i = (var46.i * var37.i) & 0xffff;
25421     /* 8: addw */
25422     var48.i = var45.i + var47.i;
25423     /* 9: loadb */
25424     var38 = ptr6[i];
25425     /* 10: convubw */
25426     var49.i = (orc_uint8) var38;
25427     /* 12: mullw */
25428     var50.i = (var49.i * var39.i) & 0xffff;
25429     /* 13: addw */
25430     var51.i = var48.i + var50.i;
25431     /* 14: loadb */
25432     var40 = ptr7[i];
25433     /* 15: convubw */
25434     var52.i = (orc_uint8) var40;
25435     /* 17: mullw */
25436     var53.i = (var52.i * var41.i) & 0xffff;
25437     /* 18: addw */
25438     var54.i = var51.i + var53.i;
25439     /* 20: addw */
25440     var55.i = var54.i + var42.i;
25441     /* 21: shrsw */
25442     var56.i = var55.i >> 6;
25443     /* 22: convsuswb */
25444     var43 = ORC_CLAMP_UB (var56.i);
25445     /* 23: storeb */
25446     ptr0[i] = var43;
25447   }
25448 
25449 }
25450 
25451 #else
25452 static void
_backup_video_orc_resample_v_4tap_u8_lq(OrcExecutor * ORC_RESTRICT ex)25453 _backup_video_orc_resample_v_4tap_u8_lq (OrcExecutor * ORC_RESTRICT ex)
25454 {
25455   int i;
25456   int n = ex->n;
25457   orc_int8 *ORC_RESTRICT ptr0;
25458   const orc_int8 *ORC_RESTRICT ptr4;
25459   const orc_int8 *ORC_RESTRICT ptr5;
25460   const orc_int8 *ORC_RESTRICT ptr6;
25461   const orc_int8 *ORC_RESTRICT ptr7;
25462   orc_int8 var34;
25463   orc_union16 var35;
25464   orc_int8 var36;
25465   orc_union16 var37;
25466   orc_int8 var38;
25467   orc_union16 var39;
25468   orc_int8 var40;
25469   orc_union16 var41;
25470 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
25471   volatile orc_union16 var42;
25472 #else
25473   orc_union16 var42;
25474 #endif
25475   orc_int8 var43;
25476   orc_union16 var44;
25477   orc_union16 var45;
25478   orc_union16 var46;
25479   orc_union16 var47;
25480   orc_union16 var48;
25481   orc_union16 var49;
25482   orc_union16 var50;
25483   orc_union16 var51;
25484   orc_union16 var52;
25485   orc_union16 var53;
25486   orc_union16 var54;
25487   orc_union16 var55;
25488   orc_union16 var56;
25489 
25490   ptr0 = (orc_int8 *) ex->arrays[0];
25491   ptr4 = (orc_int8 *) ex->arrays[4];
25492   ptr5 = (orc_int8 *) ex->arrays[5];
25493   ptr6 = (orc_int8 *) ex->arrays[6];
25494   ptr7 = (orc_int8 *) ex->arrays[7];
25495 
25496   /* 2: loadpw */
25497   var35.i = ex->params[24];
25498   /* 6: loadpw */
25499   var37.i = ex->params[25];
25500   /* 11: loadpw */
25501   var39.i = ex->params[26];
25502   /* 16: loadpw */
25503   var41.i = ex->params[27];
25504   /* 19: loadpw */
25505   var42.i = 0x00000020;         /* 32 or 1.58101e-322f */
25506 
25507   for (i = 0; i < n; i++) {
25508     /* 0: loadb */
25509     var34 = ptr4[i];
25510     /* 1: convubw */
25511     var44.i = (orc_uint8) var34;
25512     /* 3: mullw */
25513     var45.i = (var44.i * var35.i) & 0xffff;
25514     /* 4: loadb */
25515     var36 = ptr5[i];
25516     /* 5: convubw */
25517     var46.i = (orc_uint8) var36;
25518     /* 7: mullw */
25519     var47.i = (var46.i * var37.i) & 0xffff;
25520     /* 8: addw */
25521     var48.i = var45.i + var47.i;
25522     /* 9: loadb */
25523     var38 = ptr6[i];
25524     /* 10: convubw */
25525     var49.i = (orc_uint8) var38;
25526     /* 12: mullw */
25527     var50.i = (var49.i * var39.i) & 0xffff;
25528     /* 13: addw */
25529     var51.i = var48.i + var50.i;
25530     /* 14: loadb */
25531     var40 = ptr7[i];
25532     /* 15: convubw */
25533     var52.i = (orc_uint8) var40;
25534     /* 17: mullw */
25535     var53.i = (var52.i * var41.i) & 0xffff;
25536     /* 18: addw */
25537     var54.i = var51.i + var53.i;
25538     /* 20: addw */
25539     var55.i = var54.i + var42.i;
25540     /* 21: shrsw */
25541     var56.i = var55.i >> 6;
25542     /* 22: convsuswb */
25543     var43 = ORC_CLAMP_UB (var56.i);
25544     /* 23: storeb */
25545     ptr0[i] = var43;
25546   }
25547 
25548 }
25549 
25550 void
video_orc_resample_v_4tap_u8_lq(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,const guint8 * ORC_RESTRICT s3,const guint8 * ORC_RESTRICT s4,int p1,int p2,int p3,int p4,int n)25551 video_orc_resample_v_4tap_u8_lq (guint8 * ORC_RESTRICT d1,
25552     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
25553     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int p1,
25554     int p2, int p3, int p4, int n)
25555 {
25556   OrcExecutor _ex, *ex = &_ex;
25557   static volatile int p_inited = 0;
25558   static OrcCode *c = 0;
25559   void (*func) (OrcExecutor *);
25560 
25561   if (!p_inited) {
25562     orc_once_mutex_lock ();
25563     if (!p_inited) {
25564       OrcProgram *p;
25565 
25566 #if 1
25567       static const orc_uint8 bc[] = {
25568         1, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
25569         97, 109, 112, 108, 101, 95, 118, 95, 52, 116, 97, 112, 95, 117, 56, 95,
25570         108, 113, 11, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1,
25571         1, 14, 2, 32, 0, 0, 0, 14, 2, 6, 0, 0, 0, 16, 2, 16,
25572         2, 16, 2, 16, 2, 20, 2, 20, 2, 150, 32, 4, 89, 32, 32, 24,
25573         150, 33, 5, 89, 33, 33, 25, 70, 32, 32, 33, 150, 33, 6, 89, 33,
25574         33, 26, 70, 32, 32, 33, 150, 33, 7, 89, 33, 33, 27, 70, 32, 32,
25575         33, 70, 32, 32, 16, 94, 32, 32, 17, 160, 0, 32, 2, 0,
25576       };
25577       p = orc_program_new_from_static_bytecode (bc);
25578       orc_program_set_backup_function (p,
25579           _backup_video_orc_resample_v_4tap_u8_lq);
25580 #else
25581       p = orc_program_new ();
25582       orc_program_set_name (p, "video_orc_resample_v_4tap_u8_lq");
25583       orc_program_set_backup_function (p,
25584           _backup_video_orc_resample_v_4tap_u8_lq);
25585       orc_program_add_destination (p, 1, "d1");
25586       orc_program_add_source (p, 1, "s1");
25587       orc_program_add_source (p, 1, "s2");
25588       orc_program_add_source (p, 1, "s3");
25589       orc_program_add_source (p, 1, "s4");
25590       orc_program_add_constant (p, 2, 0x00000020, "c1");
25591       orc_program_add_constant (p, 2, 0x00000006, "c2");
25592       orc_program_add_parameter (p, 2, "p1");
25593       orc_program_add_parameter (p, 2, "p2");
25594       orc_program_add_parameter (p, 2, "p3");
25595       orc_program_add_parameter (p, 2, "p4");
25596       orc_program_add_temporary (p, 2, "t1");
25597       orc_program_add_temporary (p, 2, "t2");
25598 
25599       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
25600           ORC_VAR_D1);
25601       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1,
25602           ORC_VAR_D1);
25603       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
25604           ORC_VAR_D1);
25605       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2,
25606           ORC_VAR_D1);
25607       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
25608           ORC_VAR_D1);
25609       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1,
25610           ORC_VAR_D1);
25611       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P3,
25612           ORC_VAR_D1);
25613       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
25614           ORC_VAR_D1);
25615       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S4, ORC_VAR_D1,
25616           ORC_VAR_D1);
25617       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P4,
25618           ORC_VAR_D1);
25619       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
25620           ORC_VAR_D1);
25621       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
25622           ORC_VAR_D1);
25623       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2,
25624           ORC_VAR_D1);
25625       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1,
25626           ORC_VAR_D1, ORC_VAR_D1);
25627 #endif
25628 
25629       orc_program_compile (p);
25630       c = orc_program_take_code (p);
25631       orc_program_free (p);
25632     }
25633     p_inited = TRUE;
25634     orc_once_mutex_unlock ();
25635   }
25636   ex->arrays[ORC_VAR_A2] = c;
25637   ex->program = 0;
25638 
25639   ex->n = n;
25640   ex->arrays[ORC_VAR_D1] = d1;
25641   ex->arrays[ORC_VAR_S1] = (void *) s1;
25642   ex->arrays[ORC_VAR_S2] = (void *) s2;
25643   ex->arrays[ORC_VAR_S3] = (void *) s3;
25644   ex->arrays[ORC_VAR_S4] = (void *) s4;
25645   ex->params[ORC_VAR_P1] = p1;
25646   ex->params[ORC_VAR_P2] = p2;
25647   ex->params[ORC_VAR_P3] = p3;
25648   ex->params[ORC_VAR_P4] = p4;
25649 
25650   func = c->exec;
25651   func (ex);
25652 }
25653 #endif
25654 
25655 
25656 /* video_orc_resample_v_4tap_u8 */
25657 #ifdef DISABLE_ORC
25658 void
video_orc_resample_v_4tap_u8(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,const guint8 * ORC_RESTRICT s3,const guint8 * ORC_RESTRICT s4,int p1,int p2,int p3,int p4,int n)25659 video_orc_resample_v_4tap_u8 (guint8 * ORC_RESTRICT d1,
25660     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
25661     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int p1,
25662     int p2, int p3, int p4, int n)
25663 {
25664   int i;
25665   orc_int8 *ORC_RESTRICT ptr0;
25666   const orc_int8 *ORC_RESTRICT ptr4;
25667   const orc_int8 *ORC_RESTRICT ptr5;
25668   const orc_int8 *ORC_RESTRICT ptr6;
25669   const orc_int8 *ORC_RESTRICT ptr7;
25670   orc_int8 var36;
25671   orc_union16 var37;
25672   orc_int8 var38;
25673   orc_union16 var39;
25674   orc_int8 var40;
25675   orc_union16 var41;
25676   orc_int8 var42;
25677   orc_union16 var43;
25678 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
25679   volatile orc_union32 var44;
25680 #else
25681   orc_union32 var44;
25682 #endif
25683   orc_int8 var45;
25684   orc_union16 var46;
25685   orc_union32 var47;
25686   orc_union16 var48;
25687   orc_union32 var49;
25688   orc_union32 var50;
25689   orc_union16 var51;
25690   orc_union32 var52;
25691   orc_union32 var53;
25692   orc_union16 var54;
25693   orc_union32 var55;
25694   orc_union32 var56;
25695   orc_union32 var57;
25696   orc_union32 var58;
25697   orc_union16 var59;
25698 
25699   ptr0 = (orc_int8 *) d1;
25700   ptr4 = (orc_int8 *) s1;
25701   ptr5 = (orc_int8 *) s2;
25702   ptr6 = (orc_int8 *) s3;
25703   ptr7 = (orc_int8 *) s4;
25704 
25705   /* 2: loadpw */
25706   var37.i = p1;
25707   /* 6: loadpw */
25708   var39.i = p2;
25709   /* 11: loadpw */
25710   var41.i = p3;
25711   /* 16: loadpw */
25712   var43.i = p4;
25713   /* 19: loadpl */
25714   var44.i = 0x00000fff;         /* 4095 or 2.0232e-320f */
25715 
25716   for (i = 0; i < n; i++) {
25717     /* 0: loadb */
25718     var36 = ptr4[i];
25719     /* 1: convubw */
25720     var46.i = (orc_uint8) var36;
25721     /* 3: mulswl */
25722     var47.i = var46.i * var37.i;
25723     /* 4: loadb */
25724     var38 = ptr5[i];
25725     /* 5: convubw */
25726     var48.i = (orc_uint8) var38;
25727     /* 7: mulswl */
25728     var49.i = var48.i * var39.i;
25729     /* 8: addl */
25730     var50.i = ((orc_uint32) var47.i) + ((orc_uint32) var49.i);
25731     /* 9: loadb */
25732     var40 = ptr6[i];
25733     /* 10: convubw */
25734     var51.i = (orc_uint8) var40;
25735     /* 12: mulswl */
25736     var52.i = var51.i * var41.i;
25737     /* 13: addl */
25738     var53.i = ((orc_uint32) var50.i) + ((orc_uint32) var52.i);
25739     /* 14: loadb */
25740     var42 = ptr7[i];
25741     /* 15: convubw */
25742     var54.i = (orc_uint8) var42;
25743     /* 17: mulswl */
25744     var55.i = var54.i * var43.i;
25745     /* 18: addl */
25746     var56.i = ((orc_uint32) var53.i) + ((orc_uint32) var55.i);
25747     /* 20: addl */
25748     var57.i = ((orc_uint32) var56.i) + ((orc_uint32) var44.i);
25749     /* 21: shrsl */
25750     var58.i = var57.i >> 12;
25751     /* 22: convsuslw */
25752     var59.i = ORC_CLAMP_UW (var58.i);
25753     /* 23: convsuswb */
25754     var45 = ORC_CLAMP_UB (var59.i);
25755     /* 24: storeb */
25756     ptr0[i] = var45;
25757   }
25758 
25759 }
25760 
25761 #else
25762 static void
_backup_video_orc_resample_v_4tap_u8(OrcExecutor * ORC_RESTRICT ex)25763 _backup_video_orc_resample_v_4tap_u8 (OrcExecutor * ORC_RESTRICT ex)
25764 {
25765   int i;
25766   int n = ex->n;
25767   orc_int8 *ORC_RESTRICT ptr0;
25768   const orc_int8 *ORC_RESTRICT ptr4;
25769   const orc_int8 *ORC_RESTRICT ptr5;
25770   const orc_int8 *ORC_RESTRICT ptr6;
25771   const orc_int8 *ORC_RESTRICT ptr7;
25772   orc_int8 var36;
25773   orc_union16 var37;
25774   orc_int8 var38;
25775   orc_union16 var39;
25776   orc_int8 var40;
25777   orc_union16 var41;
25778   orc_int8 var42;
25779   orc_union16 var43;
25780 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
25781   volatile orc_union32 var44;
25782 #else
25783   orc_union32 var44;
25784 #endif
25785   orc_int8 var45;
25786   orc_union16 var46;
25787   orc_union32 var47;
25788   orc_union16 var48;
25789   orc_union32 var49;
25790   orc_union32 var50;
25791   orc_union16 var51;
25792   orc_union32 var52;
25793   orc_union32 var53;
25794   orc_union16 var54;
25795   orc_union32 var55;
25796   orc_union32 var56;
25797   orc_union32 var57;
25798   orc_union32 var58;
25799   orc_union16 var59;
25800 
25801   ptr0 = (orc_int8 *) ex->arrays[0];
25802   ptr4 = (orc_int8 *) ex->arrays[4];
25803   ptr5 = (orc_int8 *) ex->arrays[5];
25804   ptr6 = (orc_int8 *) ex->arrays[6];
25805   ptr7 = (orc_int8 *) ex->arrays[7];
25806 
25807   /* 2: loadpw */
25808   var37.i = ex->params[24];
25809   /* 6: loadpw */
25810   var39.i = ex->params[25];
25811   /* 11: loadpw */
25812   var41.i = ex->params[26];
25813   /* 16: loadpw */
25814   var43.i = ex->params[27];
25815   /* 19: loadpl */
25816   var44.i = 0x00000fff;         /* 4095 or 2.0232e-320f */
25817 
25818   for (i = 0; i < n; i++) {
25819     /* 0: loadb */
25820     var36 = ptr4[i];
25821     /* 1: convubw */
25822     var46.i = (orc_uint8) var36;
25823     /* 3: mulswl */
25824     var47.i = var46.i * var37.i;
25825     /* 4: loadb */
25826     var38 = ptr5[i];
25827     /* 5: convubw */
25828     var48.i = (orc_uint8) var38;
25829     /* 7: mulswl */
25830     var49.i = var48.i * var39.i;
25831     /* 8: addl */
25832     var50.i = ((orc_uint32) var47.i) + ((orc_uint32) var49.i);
25833     /* 9: loadb */
25834     var40 = ptr6[i];
25835     /* 10: convubw */
25836     var51.i = (orc_uint8) var40;
25837     /* 12: mulswl */
25838     var52.i = var51.i * var41.i;
25839     /* 13: addl */
25840     var53.i = ((orc_uint32) var50.i) + ((orc_uint32) var52.i);
25841     /* 14: loadb */
25842     var42 = ptr7[i];
25843     /* 15: convubw */
25844     var54.i = (orc_uint8) var42;
25845     /* 17: mulswl */
25846     var55.i = var54.i * var43.i;
25847     /* 18: addl */
25848     var56.i = ((orc_uint32) var53.i) + ((orc_uint32) var55.i);
25849     /* 20: addl */
25850     var57.i = ((orc_uint32) var56.i) + ((orc_uint32) var44.i);
25851     /* 21: shrsl */
25852     var58.i = var57.i >> 12;
25853     /* 22: convsuslw */
25854     var59.i = ORC_CLAMP_UW (var58.i);
25855     /* 23: convsuswb */
25856     var45 = ORC_CLAMP_UB (var59.i);
25857     /* 24: storeb */
25858     ptr0[i] = var45;
25859   }
25860 
25861 }
25862 
25863 void
video_orc_resample_v_4tap_u8(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,const guint8 * ORC_RESTRICT s3,const guint8 * ORC_RESTRICT s4,int p1,int p2,int p3,int p4,int n)25864 video_orc_resample_v_4tap_u8 (guint8 * ORC_RESTRICT d1,
25865     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
25866     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int p1,
25867     int p2, int p3, int p4, int n)
25868 {
25869   OrcExecutor _ex, *ex = &_ex;
25870   static volatile int p_inited = 0;
25871   static OrcCode *c = 0;
25872   void (*func) (OrcExecutor *);
25873 
25874   if (!p_inited) {
25875     orc_once_mutex_lock ();
25876     if (!p_inited) {
25877       OrcProgram *p;
25878 
25879 #if 1
25880       static const orc_uint8 bc[] = {
25881         1, 9, 28, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
25882         97, 109, 112, 108, 101, 95, 118, 95, 52, 116, 97, 112, 95, 117, 56, 11,
25883         1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 14, 4,
25884         255, 15, 0, 0, 14, 4, 12, 0, 0, 0, 16, 2, 16, 2, 16, 2,
25885         16, 2, 20, 2, 20, 2, 20, 4, 20, 4, 150, 32, 4, 176, 34, 32,
25886         24, 150, 33, 5, 176, 35, 33, 25, 103, 34, 34, 35, 150, 33, 6, 176,
25887         35, 33, 26, 103, 34, 34, 35, 150, 33, 7, 176, 35, 33, 27, 103, 34,
25888         34, 35, 103, 34, 34, 16, 125, 34, 34, 17, 166, 32, 34, 160, 0, 32,
25889         2, 0,
25890       };
25891       p = orc_program_new_from_static_bytecode (bc);
25892       orc_program_set_backup_function (p, _backup_video_orc_resample_v_4tap_u8);
25893 #else
25894       p = orc_program_new ();
25895       orc_program_set_name (p, "video_orc_resample_v_4tap_u8");
25896       orc_program_set_backup_function (p, _backup_video_orc_resample_v_4tap_u8);
25897       orc_program_add_destination (p, 1, "d1");
25898       orc_program_add_source (p, 1, "s1");
25899       orc_program_add_source (p, 1, "s2");
25900       orc_program_add_source (p, 1, "s3");
25901       orc_program_add_source (p, 1, "s4");
25902       orc_program_add_constant (p, 4, 0x00000fff, "c1");
25903       orc_program_add_constant (p, 4, 0x0000000c, "c2");
25904       orc_program_add_parameter (p, 2, "p1");
25905       orc_program_add_parameter (p, 2, "p2");
25906       orc_program_add_parameter (p, 2, "p3");
25907       orc_program_add_parameter (p, 2, "p4");
25908       orc_program_add_temporary (p, 2, "t1");
25909       orc_program_add_temporary (p, 2, "t2");
25910       orc_program_add_temporary (p, 4, "t3");
25911       orc_program_add_temporary (p, 4, "t4");
25912 
25913       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
25914           ORC_VAR_D1);
25915       orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_P1,
25916           ORC_VAR_D1);
25917       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
25918           ORC_VAR_D1);
25919       orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_P2,
25920           ORC_VAR_D1);
25921       orc_program_append_2 (p, "addl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4,
25922           ORC_VAR_D1);
25923       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1,
25924           ORC_VAR_D1);
25925       orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_P3,
25926           ORC_VAR_D1);
25927       orc_program_append_2 (p, "addl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4,
25928           ORC_VAR_D1);
25929       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S4, ORC_VAR_D1,
25930           ORC_VAR_D1);
25931       orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_P4,
25932           ORC_VAR_D1);
25933       orc_program_append_2 (p, "addl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4,
25934           ORC_VAR_D1);
25935       orc_program_append_2 (p, "addl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C1,
25936           ORC_VAR_D1);
25937       orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2,
25938           ORC_VAR_D1);
25939       orc_program_append_2 (p, "convsuslw", 0, ORC_VAR_T1, ORC_VAR_T3,
25940           ORC_VAR_D1, ORC_VAR_D1);
25941       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1,
25942           ORC_VAR_D1, ORC_VAR_D1);
25943 #endif
25944 
25945       orc_program_compile (p);
25946       c = orc_program_take_code (p);
25947       orc_program_free (p);
25948     }
25949     p_inited = TRUE;
25950     orc_once_mutex_unlock ();
25951   }
25952   ex->arrays[ORC_VAR_A2] = c;
25953   ex->program = 0;
25954 
25955   ex->n = n;
25956   ex->arrays[ORC_VAR_D1] = d1;
25957   ex->arrays[ORC_VAR_S1] = (void *) s1;
25958   ex->arrays[ORC_VAR_S2] = (void *) s2;
25959   ex->arrays[ORC_VAR_S3] = (void *) s3;
25960   ex->arrays[ORC_VAR_S4] = (void *) s4;
25961   ex->params[ORC_VAR_P1] = p1;
25962   ex->params[ORC_VAR_P2] = p2;
25963   ex->params[ORC_VAR_P3] = p3;
25964   ex->params[ORC_VAR_P4] = p4;
25965 
25966   func = c->exec;
25967   func (ex);
25968 }
25969 #endif
25970 
25971 
25972 /* video_orc_resample_h_multaps_u8 */
25973 #ifdef DISABLE_ORC
25974 void
video_orc_resample_h_multaps_u8(gint32 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const gint16 * ORC_RESTRICT s2,int n)25975 video_orc_resample_h_multaps_u8 (gint32 * ORC_RESTRICT d1,
25976     const guint8 * ORC_RESTRICT s1, const gint16 * ORC_RESTRICT s2, int n)
25977 {
25978   int i;
25979   orc_union32 *ORC_RESTRICT ptr0;
25980   const orc_int8 *ORC_RESTRICT ptr4;
25981   const orc_union16 *ORC_RESTRICT ptr5;
25982   orc_int8 var33;
25983   orc_union16 var34;
25984   orc_union32 var35;
25985   orc_union16 var36;
25986 
25987   ptr0 = (orc_union32 *) d1;
25988   ptr4 = (orc_int8 *) s1;
25989   ptr5 = (orc_union16 *) s2;
25990 
25991 
25992   for (i = 0; i < n; i++) {
25993     /* 0: loadb */
25994     var33 = ptr4[i];
25995     /* 1: convubw */
25996     var36.i = (orc_uint8) var33;
25997     /* 2: loadw */
25998     var34 = ptr5[i];
25999     /* 3: mulswl */
26000     var35.i = var36.i * var34.i;
26001     /* 4: storel */
26002     ptr0[i] = var35;
26003   }
26004 
26005 }
26006 
26007 #else
26008 static void
_backup_video_orc_resample_h_multaps_u8(OrcExecutor * ORC_RESTRICT ex)26009 _backup_video_orc_resample_h_multaps_u8 (OrcExecutor * ORC_RESTRICT ex)
26010 {
26011   int i;
26012   int n = ex->n;
26013   orc_union32 *ORC_RESTRICT ptr0;
26014   const orc_int8 *ORC_RESTRICT ptr4;
26015   const orc_union16 *ORC_RESTRICT ptr5;
26016   orc_int8 var33;
26017   orc_union16 var34;
26018   orc_union32 var35;
26019   orc_union16 var36;
26020 
26021   ptr0 = (orc_union32 *) ex->arrays[0];
26022   ptr4 = (orc_int8 *) ex->arrays[4];
26023   ptr5 = (orc_union16 *) ex->arrays[5];
26024 
26025 
26026   for (i = 0; i < n; i++) {
26027     /* 0: loadb */
26028     var33 = ptr4[i];
26029     /* 1: convubw */
26030     var36.i = (orc_uint8) var33;
26031     /* 2: loadw */
26032     var34 = ptr5[i];
26033     /* 3: mulswl */
26034     var35.i = var36.i * var34.i;
26035     /* 4: storel */
26036     ptr0[i] = var35;
26037   }
26038 
26039 }
26040 
26041 void
video_orc_resample_h_multaps_u8(gint32 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const gint16 * ORC_RESTRICT s2,int n)26042 video_orc_resample_h_multaps_u8 (gint32 * ORC_RESTRICT d1,
26043     const guint8 * ORC_RESTRICT s1, const gint16 * ORC_RESTRICT s2, int n)
26044 {
26045   OrcExecutor _ex, *ex = &_ex;
26046   static volatile int p_inited = 0;
26047   static OrcCode *c = 0;
26048   void (*func) (OrcExecutor *);
26049 
26050   if (!p_inited) {
26051     orc_once_mutex_lock ();
26052     if (!p_inited) {
26053       OrcProgram *p;
26054 
26055 #if 1
26056       static const orc_uint8 bc[] = {
26057         1, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
26058         97, 109, 112, 108, 101, 95, 104, 95, 109, 117, 108, 116, 97, 112, 115,
26059             95,
26060         117, 56, 11, 4, 4, 12, 1, 1, 12, 2, 2, 20, 2, 150, 32, 4,
26061         176, 0, 32, 5, 2, 0,
26062       };
26063       p = orc_program_new_from_static_bytecode (bc);
26064       orc_program_set_backup_function (p,
26065           _backup_video_orc_resample_h_multaps_u8);
26066 #else
26067       p = orc_program_new ();
26068       orc_program_set_name (p, "video_orc_resample_h_multaps_u8");
26069       orc_program_set_backup_function (p,
26070           _backup_video_orc_resample_h_multaps_u8);
26071       orc_program_add_destination (p, 4, "d1");
26072       orc_program_add_source (p, 1, "s1");
26073       orc_program_add_source (p, 2, "s2");
26074       orc_program_add_temporary (p, 2, "t1");
26075 
26076       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
26077           ORC_VAR_D1);
26078       orc_program_append_2 (p, "mulswl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S2,
26079           ORC_VAR_D1);
26080 #endif
26081 
26082       orc_program_compile (p);
26083       c = orc_program_take_code (p);
26084       orc_program_free (p);
26085     }
26086     p_inited = TRUE;
26087     orc_once_mutex_unlock ();
26088   }
26089   ex->arrays[ORC_VAR_A2] = c;
26090   ex->program = 0;
26091 
26092   ex->n = n;
26093   ex->arrays[ORC_VAR_D1] = d1;
26094   ex->arrays[ORC_VAR_S1] = (void *) s1;
26095   ex->arrays[ORC_VAR_S2] = (void *) s2;
26096 
26097   func = c->exec;
26098   func (ex);
26099 }
26100 #endif
26101 
26102 
26103 /* video_orc_resample_h_muladdtaps_u8 */
26104 #ifdef DISABLE_ORC
26105 void
video_orc_resample_h_muladdtaps_u8(gint32 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,const gint16 * ORC_RESTRICT s2,int s2_stride,int n,int m)26106 video_orc_resample_h_muladdtaps_u8 (gint32 * ORC_RESTRICT d1, int d1_stride,
26107     const guint8 * ORC_RESTRICT s1, int s1_stride,
26108     const gint16 * ORC_RESTRICT s2, int s2_stride, int n, int m)
26109 {
26110   int i;
26111   int j;
26112   orc_union32 *ORC_RESTRICT ptr0;
26113   const orc_int8 *ORC_RESTRICT ptr4;
26114   const orc_union16 *ORC_RESTRICT ptr5;
26115   orc_int8 var34;
26116   orc_union16 var35;
26117   orc_union32 var36;
26118   orc_union32 var37;
26119   orc_union16 var38;
26120   orc_union32 var39;
26121 
26122   for (j = 0; j < m; j++) {
26123     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
26124     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
26125     ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
26126 
26127 
26128     for (i = 0; i < n; i++) {
26129       /* 0: loadb */
26130       var34 = ptr4[i];
26131       /* 1: convubw */
26132       var38.i = (orc_uint8) var34;
26133       /* 2: loadw */
26134       var35 = ptr5[i];
26135       /* 3: mulswl */
26136       var39.i = var38.i * var35.i;
26137       /* 4: loadl */
26138       var36 = ptr0[i];
26139       /* 5: addl */
26140       var37.i = ((orc_uint32) var36.i) + ((orc_uint32) var39.i);
26141       /* 6: storel */
26142       ptr0[i] = var37;
26143     }
26144   }
26145 
26146 }
26147 
26148 #else
26149 static void
_backup_video_orc_resample_h_muladdtaps_u8(OrcExecutor * ORC_RESTRICT ex)26150 _backup_video_orc_resample_h_muladdtaps_u8 (OrcExecutor * ORC_RESTRICT ex)
26151 {
26152   int i;
26153   int j;
26154   int n = ex->n;
26155   int m = ex->params[ORC_VAR_A1];
26156   orc_union32 *ORC_RESTRICT ptr0;
26157   const orc_int8 *ORC_RESTRICT ptr4;
26158   const orc_union16 *ORC_RESTRICT ptr5;
26159   orc_int8 var34;
26160   orc_union16 var35;
26161   orc_union32 var36;
26162   orc_union32 var37;
26163   orc_union16 var38;
26164   orc_union32 var39;
26165 
26166   for (j = 0; j < m; j++) {
26167     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
26168     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
26169     ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
26170 
26171 
26172     for (i = 0; i < n; i++) {
26173       /* 0: loadb */
26174       var34 = ptr4[i];
26175       /* 1: convubw */
26176       var38.i = (orc_uint8) var34;
26177       /* 2: loadw */
26178       var35 = ptr5[i];
26179       /* 3: mulswl */
26180       var39.i = var38.i * var35.i;
26181       /* 4: loadl */
26182       var36 = ptr0[i];
26183       /* 5: addl */
26184       var37.i = ((orc_uint32) var36.i) + ((orc_uint32) var39.i);
26185       /* 6: storel */
26186       ptr0[i] = var37;
26187     }
26188   }
26189 
26190 }
26191 
26192 void
video_orc_resample_h_muladdtaps_u8(gint32 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,const gint16 * ORC_RESTRICT s2,int s2_stride,int n,int m)26193 video_orc_resample_h_muladdtaps_u8 (gint32 * ORC_RESTRICT d1, int d1_stride,
26194     const guint8 * ORC_RESTRICT s1, int s1_stride,
26195     const gint16 * ORC_RESTRICT s2, int s2_stride, int n, int m)
26196 {
26197   OrcExecutor _ex, *ex = &_ex;
26198   static volatile int p_inited = 0;
26199   static OrcCode *c = 0;
26200   void (*func) (OrcExecutor *);
26201 
26202   if (!p_inited) {
26203     orc_once_mutex_lock ();
26204     if (!p_inited) {
26205       OrcProgram *p;
26206 
26207 #if 1
26208       static const orc_uint8 bc[] = {
26209         1, 7, 9, 34, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101,
26210         115, 97, 109, 112, 108, 101, 95, 104, 95, 109, 117, 108, 97, 100, 100,
26211             116,
26212         97, 112, 115, 95, 117, 56, 11, 4, 4, 12, 1, 1, 12, 2, 2, 20,
26213         2, 20, 4, 150, 32, 4, 176, 33, 32, 5, 103, 0, 0, 33, 2, 0,
26214 
26215       };
26216       p = orc_program_new_from_static_bytecode (bc);
26217       orc_program_set_backup_function (p,
26218           _backup_video_orc_resample_h_muladdtaps_u8);
26219 #else
26220       p = orc_program_new ();
26221       orc_program_set_2d (p);
26222       orc_program_set_name (p, "video_orc_resample_h_muladdtaps_u8");
26223       orc_program_set_backup_function (p,
26224           _backup_video_orc_resample_h_muladdtaps_u8);
26225       orc_program_add_destination (p, 4, "d1");
26226       orc_program_add_source (p, 1, "s1");
26227       orc_program_add_source (p, 2, "s2");
26228       orc_program_add_temporary (p, 2, "t1");
26229       orc_program_add_temporary (p, 4, "t2");
26230 
26231       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
26232           ORC_VAR_D1);
26233       orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S2,
26234           ORC_VAR_D1);
26235       orc_program_append_2 (p, "addl", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T2,
26236           ORC_VAR_D1);
26237 #endif
26238 
26239       orc_program_compile (p);
26240       c = orc_program_take_code (p);
26241       orc_program_free (p);
26242     }
26243     p_inited = TRUE;
26244     orc_once_mutex_unlock ();
26245   }
26246   ex->arrays[ORC_VAR_A2] = c;
26247   ex->program = 0;
26248 
26249   ex->n = n;
26250   ORC_EXECUTOR_M (ex) = m;
26251   ex->arrays[ORC_VAR_D1] = d1;
26252   ex->params[ORC_VAR_D1] = d1_stride;
26253   ex->arrays[ORC_VAR_S1] = (void *) s1;
26254   ex->params[ORC_VAR_S1] = s1_stride;
26255   ex->arrays[ORC_VAR_S2] = (void *) s2;
26256   ex->params[ORC_VAR_S2] = s2_stride;
26257 
26258   func = c->exec;
26259   func (ex);
26260 }
26261 #endif
26262 
26263 
26264 /* video_orc_resample_scaletaps_u8 */
26265 #ifdef DISABLE_ORC
26266 void
video_orc_resample_scaletaps_u8(guint8 * ORC_RESTRICT d1,const gint32 * ORC_RESTRICT s1,int n)26267 video_orc_resample_scaletaps_u8 (guint8 * ORC_RESTRICT d1,
26268     const gint32 * ORC_RESTRICT s1, int n)
26269 {
26270   int i;
26271   orc_int8 *ORC_RESTRICT ptr0;
26272   const orc_union32 *ORC_RESTRICT ptr4;
26273   orc_union32 var34;
26274 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
26275   volatile orc_union32 var35;
26276 #else
26277   orc_union32 var35;
26278 #endif
26279   orc_int8 var36;
26280   orc_union32 var37;
26281   orc_union32 var38;
26282   orc_union16 var39;
26283 
26284   ptr0 = (orc_int8 *) d1;
26285   ptr4 = (orc_union32 *) s1;
26286 
26287   /* 1: loadpl */
26288   var35.i = 0x00000fff;         /* 4095 or 2.0232e-320f */
26289 
26290   for (i = 0; i < n; i++) {
26291     /* 0: loadl */
26292     var34 = ptr4[i];
26293     /* 2: addl */
26294     var37.i = ((orc_uint32) var34.i) + ((orc_uint32) var35.i);
26295     /* 3: shrsl */
26296     var38.i = var37.i >> 12;
26297     /* 4: convsuslw */
26298     var39.i = ORC_CLAMP_UW (var38.i);
26299     /* 5: convsuswb */
26300     var36 = ORC_CLAMP_UB (var39.i);
26301     /* 6: storeb */
26302     ptr0[i] = var36;
26303   }
26304 
26305 }
26306 
26307 #else
26308 static void
_backup_video_orc_resample_scaletaps_u8(OrcExecutor * ORC_RESTRICT ex)26309 _backup_video_orc_resample_scaletaps_u8 (OrcExecutor * ORC_RESTRICT ex)
26310 {
26311   int i;
26312   int n = ex->n;
26313   orc_int8 *ORC_RESTRICT ptr0;
26314   const orc_union32 *ORC_RESTRICT ptr4;
26315   orc_union32 var34;
26316 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
26317   volatile orc_union32 var35;
26318 #else
26319   orc_union32 var35;
26320 #endif
26321   orc_int8 var36;
26322   orc_union32 var37;
26323   orc_union32 var38;
26324   orc_union16 var39;
26325 
26326   ptr0 = (orc_int8 *) ex->arrays[0];
26327   ptr4 = (orc_union32 *) ex->arrays[4];
26328 
26329   /* 1: loadpl */
26330   var35.i = 0x00000fff;         /* 4095 or 2.0232e-320f */
26331 
26332   for (i = 0; i < n; i++) {
26333     /* 0: loadl */
26334     var34 = ptr4[i];
26335     /* 2: addl */
26336     var37.i = ((orc_uint32) var34.i) + ((orc_uint32) var35.i);
26337     /* 3: shrsl */
26338     var38.i = var37.i >> 12;
26339     /* 4: convsuslw */
26340     var39.i = ORC_CLAMP_UW (var38.i);
26341     /* 5: convsuswb */
26342     var36 = ORC_CLAMP_UB (var39.i);
26343     /* 6: storeb */
26344     ptr0[i] = var36;
26345   }
26346 
26347 }
26348 
26349 void
video_orc_resample_scaletaps_u8(guint8 * ORC_RESTRICT d1,const gint32 * ORC_RESTRICT s1,int n)26350 video_orc_resample_scaletaps_u8 (guint8 * ORC_RESTRICT d1,
26351     const gint32 * ORC_RESTRICT s1, int n)
26352 {
26353   OrcExecutor _ex, *ex = &_ex;
26354   static volatile int p_inited = 0;
26355   static OrcCode *c = 0;
26356   void (*func) (OrcExecutor *);
26357 
26358   if (!p_inited) {
26359     orc_once_mutex_lock ();
26360     if (!p_inited) {
26361       OrcProgram *p;
26362 
26363 #if 1
26364       static const orc_uint8 bc[] = {
26365         1, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
26366         97, 109, 112, 108, 101, 95, 115, 99, 97, 108, 101, 116, 97, 112, 115,
26367             95,
26368         117, 56, 11, 1, 1, 12, 4, 4, 14, 4, 255, 15, 0, 0, 14, 4,
26369         12, 0, 0, 0, 20, 2, 20, 4, 103, 33, 4, 16, 125, 33, 33, 17,
26370         166, 32, 33, 160, 0, 32, 2, 0,
26371       };
26372       p = orc_program_new_from_static_bytecode (bc);
26373       orc_program_set_backup_function (p,
26374           _backup_video_orc_resample_scaletaps_u8);
26375 #else
26376       p = orc_program_new ();
26377       orc_program_set_name (p, "video_orc_resample_scaletaps_u8");
26378       orc_program_set_backup_function (p,
26379           _backup_video_orc_resample_scaletaps_u8);
26380       orc_program_add_destination (p, 1, "d1");
26381       orc_program_add_source (p, 4, "s1");
26382       orc_program_add_constant (p, 4, 0x00000fff, "c1");
26383       orc_program_add_constant (p, 4, 0x0000000c, "c2");
26384       orc_program_add_temporary (p, 2, "t1");
26385       orc_program_add_temporary (p, 4, "t2");
26386 
26387       orc_program_append_2 (p, "addl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_C1,
26388           ORC_VAR_D1);
26389       orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2,
26390           ORC_VAR_D1);
26391       orc_program_append_2 (p, "convsuslw", 0, ORC_VAR_T1, ORC_VAR_T2,
26392           ORC_VAR_D1, ORC_VAR_D1);
26393       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1,
26394           ORC_VAR_D1, ORC_VAR_D1);
26395 #endif
26396 
26397       orc_program_compile (p);
26398       c = orc_program_take_code (p);
26399       orc_program_free (p);
26400     }
26401     p_inited = TRUE;
26402     orc_once_mutex_unlock ();
26403   }
26404   ex->arrays[ORC_VAR_A2] = c;
26405   ex->program = 0;
26406 
26407   ex->n = n;
26408   ex->arrays[ORC_VAR_D1] = d1;
26409   ex->arrays[ORC_VAR_S1] = (void *) s1;
26410 
26411   func = c->exec;
26412   func (ex);
26413 }
26414 #endif
26415 
26416 
26417 /* video_orc_resample_h_multaps_u8_lq */
26418 #ifdef DISABLE_ORC
26419 void
video_orc_resample_h_multaps_u8_lq(gint16 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const gint16 * ORC_RESTRICT s2,int n)26420 video_orc_resample_h_multaps_u8_lq (gint16 * ORC_RESTRICT d1,
26421     const guint8 * ORC_RESTRICT s1, const gint16 * ORC_RESTRICT s2, int n)
26422 {
26423   int i;
26424   orc_union16 *ORC_RESTRICT ptr0;
26425   const orc_int8 *ORC_RESTRICT ptr4;
26426   const orc_union16 *ORC_RESTRICT ptr5;
26427   orc_int8 var33;
26428   orc_union16 var34;
26429   orc_union16 var35;
26430   orc_union16 var36;
26431 
26432   ptr0 = (orc_union16 *) d1;
26433   ptr4 = (orc_int8 *) s1;
26434   ptr5 = (orc_union16 *) s2;
26435 
26436 
26437   for (i = 0; i < n; i++) {
26438     /* 0: loadb */
26439     var33 = ptr4[i];
26440     /* 1: convubw */
26441     var36.i = (orc_uint8) var33;
26442     /* 2: loadw */
26443     var34 = ptr5[i];
26444     /* 3: mullw */
26445     var35.i = (var36.i * var34.i) & 0xffff;
26446     /* 4: storew */
26447     ptr0[i] = var35;
26448   }
26449 
26450 }
26451 
26452 #else
26453 static void
_backup_video_orc_resample_h_multaps_u8_lq(OrcExecutor * ORC_RESTRICT ex)26454 _backup_video_orc_resample_h_multaps_u8_lq (OrcExecutor * ORC_RESTRICT ex)
26455 {
26456   int i;
26457   int n = ex->n;
26458   orc_union16 *ORC_RESTRICT ptr0;
26459   const orc_int8 *ORC_RESTRICT ptr4;
26460   const orc_union16 *ORC_RESTRICT ptr5;
26461   orc_int8 var33;
26462   orc_union16 var34;
26463   orc_union16 var35;
26464   orc_union16 var36;
26465 
26466   ptr0 = (orc_union16 *) ex->arrays[0];
26467   ptr4 = (orc_int8 *) ex->arrays[4];
26468   ptr5 = (orc_union16 *) ex->arrays[5];
26469 
26470 
26471   for (i = 0; i < n; i++) {
26472     /* 0: loadb */
26473     var33 = ptr4[i];
26474     /* 1: convubw */
26475     var36.i = (orc_uint8) var33;
26476     /* 2: loadw */
26477     var34 = ptr5[i];
26478     /* 3: mullw */
26479     var35.i = (var36.i * var34.i) & 0xffff;
26480     /* 4: storew */
26481     ptr0[i] = var35;
26482   }
26483 
26484 }
26485 
26486 void
video_orc_resample_h_multaps_u8_lq(gint16 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const gint16 * ORC_RESTRICT s2,int n)26487 video_orc_resample_h_multaps_u8_lq (gint16 * ORC_RESTRICT d1,
26488     const guint8 * ORC_RESTRICT s1, const gint16 * ORC_RESTRICT s2, int n)
26489 {
26490   OrcExecutor _ex, *ex = &_ex;
26491   static volatile int p_inited = 0;
26492   static OrcCode *c = 0;
26493   void (*func) (OrcExecutor *);
26494 
26495   if (!p_inited) {
26496     orc_once_mutex_lock ();
26497     if (!p_inited) {
26498       OrcProgram *p;
26499 
26500 #if 1
26501       static const orc_uint8 bc[] = {
26502         1, 9, 34, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
26503         97, 109, 112, 108, 101, 95, 104, 95, 109, 117, 108, 116, 97, 112, 115,
26504             95,
26505         117, 56, 95, 108, 113, 11, 2, 2, 12, 1, 1, 12, 2, 2, 20, 2,
26506         150, 32, 4, 89, 0, 32, 5, 2, 0,
26507       };
26508       p = orc_program_new_from_static_bytecode (bc);
26509       orc_program_set_backup_function (p,
26510           _backup_video_orc_resample_h_multaps_u8_lq);
26511 #else
26512       p = orc_program_new ();
26513       orc_program_set_name (p, "video_orc_resample_h_multaps_u8_lq");
26514       orc_program_set_backup_function (p,
26515           _backup_video_orc_resample_h_multaps_u8_lq);
26516       orc_program_add_destination (p, 2, "d1");
26517       orc_program_add_source (p, 1, "s1");
26518       orc_program_add_source (p, 2, "s2");
26519       orc_program_add_temporary (p, 2, "t1");
26520 
26521       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
26522           ORC_VAR_D1);
26523       orc_program_append_2 (p, "mullw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S2,
26524           ORC_VAR_D1);
26525 #endif
26526 
26527       orc_program_compile (p);
26528       c = orc_program_take_code (p);
26529       orc_program_free (p);
26530     }
26531     p_inited = TRUE;
26532     orc_once_mutex_unlock ();
26533   }
26534   ex->arrays[ORC_VAR_A2] = c;
26535   ex->program = 0;
26536 
26537   ex->n = n;
26538   ex->arrays[ORC_VAR_D1] = d1;
26539   ex->arrays[ORC_VAR_S1] = (void *) s1;
26540   ex->arrays[ORC_VAR_S2] = (void *) s2;
26541 
26542   func = c->exec;
26543   func (ex);
26544 }
26545 #endif
26546 
26547 
26548 /* video_orc_resample_h_muladdtaps_u8_lq */
26549 #ifdef DISABLE_ORC
26550 void
video_orc_resample_h_muladdtaps_u8_lq(gint16 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,const gint16 * ORC_RESTRICT s2,int s2_stride,int n,int m)26551 video_orc_resample_h_muladdtaps_u8_lq (gint16 * ORC_RESTRICT d1, int d1_stride,
26552     const guint8 * ORC_RESTRICT s1, int s1_stride,
26553     const gint16 * ORC_RESTRICT s2, int s2_stride, int n, int m)
26554 {
26555   int i;
26556   int j;
26557   orc_union16 *ORC_RESTRICT ptr0;
26558   const orc_int8 *ORC_RESTRICT ptr4;
26559   const orc_union16 *ORC_RESTRICT ptr5;
26560   orc_int8 var33;
26561   orc_union16 var34;
26562   orc_union16 var35;
26563   orc_union16 var36;
26564   orc_union16 var37;
26565   orc_union16 var38;
26566 
26567   for (j = 0; j < m; j++) {
26568     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
26569     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
26570     ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
26571 
26572 
26573     for (i = 0; i < n; i++) {
26574       /* 0: loadb */
26575       var33 = ptr4[i];
26576       /* 1: convubw */
26577       var37.i = (orc_uint8) var33;
26578       /* 2: loadw */
26579       var34 = ptr5[i];
26580       /* 3: mullw */
26581       var38.i = (var37.i * var34.i) & 0xffff;
26582       /* 4: loadw */
26583       var35 = ptr0[i];
26584       /* 5: addw */
26585       var36.i = var35.i + var38.i;
26586       /* 6: storew */
26587       ptr0[i] = var36;
26588     }
26589   }
26590 
26591 }
26592 
26593 #else
26594 static void
_backup_video_orc_resample_h_muladdtaps_u8_lq(OrcExecutor * ORC_RESTRICT ex)26595 _backup_video_orc_resample_h_muladdtaps_u8_lq (OrcExecutor * ORC_RESTRICT ex)
26596 {
26597   int i;
26598   int j;
26599   int n = ex->n;
26600   int m = ex->params[ORC_VAR_A1];
26601   orc_union16 *ORC_RESTRICT ptr0;
26602   const orc_int8 *ORC_RESTRICT ptr4;
26603   const orc_union16 *ORC_RESTRICT ptr5;
26604   orc_int8 var33;
26605   orc_union16 var34;
26606   orc_union16 var35;
26607   orc_union16 var36;
26608   orc_union16 var37;
26609   orc_union16 var38;
26610 
26611   for (j = 0; j < m; j++) {
26612     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
26613     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
26614     ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
26615 
26616 
26617     for (i = 0; i < n; i++) {
26618       /* 0: loadb */
26619       var33 = ptr4[i];
26620       /* 1: convubw */
26621       var37.i = (orc_uint8) var33;
26622       /* 2: loadw */
26623       var34 = ptr5[i];
26624       /* 3: mullw */
26625       var38.i = (var37.i * var34.i) & 0xffff;
26626       /* 4: loadw */
26627       var35 = ptr0[i];
26628       /* 5: addw */
26629       var36.i = var35.i + var38.i;
26630       /* 6: storew */
26631       ptr0[i] = var36;
26632     }
26633   }
26634 
26635 }
26636 
26637 void
video_orc_resample_h_muladdtaps_u8_lq(gint16 * ORC_RESTRICT d1,int d1_stride,const guint8 * ORC_RESTRICT s1,int s1_stride,const gint16 * ORC_RESTRICT s2,int s2_stride,int n,int m)26638 video_orc_resample_h_muladdtaps_u8_lq (gint16 * ORC_RESTRICT d1, int d1_stride,
26639     const guint8 * ORC_RESTRICT s1, int s1_stride,
26640     const gint16 * ORC_RESTRICT s2, int s2_stride, int n, int m)
26641 {
26642   OrcExecutor _ex, *ex = &_ex;
26643   static volatile int p_inited = 0;
26644   static OrcCode *c = 0;
26645   void (*func) (OrcExecutor *);
26646 
26647   if (!p_inited) {
26648     orc_once_mutex_lock ();
26649     if (!p_inited) {
26650       OrcProgram *p;
26651 
26652 #if 1
26653       static const orc_uint8 bc[] = {
26654         1, 7, 9, 37, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101,
26655         115, 97, 109, 112, 108, 101, 95, 104, 95, 109, 117, 108, 97, 100, 100,
26656             116,
26657         97, 112, 115, 95, 117, 56, 95, 108, 113, 11, 2, 2, 12, 1, 1, 12,
26658         2, 2, 20, 2, 150, 32, 4, 89, 32, 32, 5, 70, 0, 0, 32, 2,
26659         0,
26660       };
26661       p = orc_program_new_from_static_bytecode (bc);
26662       orc_program_set_backup_function (p,
26663           _backup_video_orc_resample_h_muladdtaps_u8_lq);
26664 #else
26665       p = orc_program_new ();
26666       orc_program_set_2d (p);
26667       orc_program_set_name (p, "video_orc_resample_h_muladdtaps_u8_lq");
26668       orc_program_set_backup_function (p,
26669           _backup_video_orc_resample_h_muladdtaps_u8_lq);
26670       orc_program_add_destination (p, 2, "d1");
26671       orc_program_add_source (p, 1, "s1");
26672       orc_program_add_source (p, 2, "s2");
26673       orc_program_add_temporary (p, 2, "t1");
26674 
26675       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
26676           ORC_VAR_D1);
26677       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S2,
26678           ORC_VAR_D1);
26679       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1,
26680           ORC_VAR_D1);
26681 #endif
26682 
26683       orc_program_compile (p);
26684       c = orc_program_take_code (p);
26685       orc_program_free (p);
26686     }
26687     p_inited = TRUE;
26688     orc_once_mutex_unlock ();
26689   }
26690   ex->arrays[ORC_VAR_A2] = c;
26691   ex->program = 0;
26692 
26693   ex->n = n;
26694   ORC_EXECUTOR_M (ex) = m;
26695   ex->arrays[ORC_VAR_D1] = d1;
26696   ex->params[ORC_VAR_D1] = d1_stride;
26697   ex->arrays[ORC_VAR_S1] = (void *) s1;
26698   ex->params[ORC_VAR_S1] = s1_stride;
26699   ex->arrays[ORC_VAR_S2] = (void *) s2;
26700   ex->params[ORC_VAR_S2] = s2_stride;
26701 
26702   func = c->exec;
26703   func (ex);
26704 }
26705 #endif
26706 
26707 
26708 /* video_orc_resample_h_multaps3_u8_lq */
26709 #ifdef DISABLE_ORC
26710 void
video_orc_resample_h_multaps3_u8_lq(gint16 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,const guint8 * ORC_RESTRICT s3,const gint16 * ORC_RESTRICT s4,const gint16 * ORC_RESTRICT s5,const gint16 * ORC_RESTRICT s6,int n)26711 video_orc_resample_h_multaps3_u8_lq (gint16 * ORC_RESTRICT d1,
26712     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
26713     const guint8 * ORC_RESTRICT s3, const gint16 * ORC_RESTRICT s4,
26714     const gint16 * ORC_RESTRICT s5, const gint16 * ORC_RESTRICT s6, int n)
26715 {
26716   int i;
26717   orc_union16 *ORC_RESTRICT ptr0;
26718   const orc_int8 *ORC_RESTRICT ptr4;
26719   const orc_int8 *ORC_RESTRICT ptr5;
26720   const orc_int8 *ORC_RESTRICT ptr6;
26721   const orc_union16 *ORC_RESTRICT ptr7;
26722   const orc_union16 *ORC_RESTRICT ptr8;
26723   const orc_union16 *ORC_RESTRICT ptr9;
26724   orc_int8 var34;
26725   orc_union16 var35;
26726   orc_int8 var36;
26727   orc_union16 var37;
26728   orc_int8 var38;
26729   orc_union16 var39;
26730   orc_union16 var40;
26731   orc_union16 var41;
26732   orc_union16 var42;
26733   orc_union16 var43;
26734   orc_union16 var44;
26735   orc_union16 var45;
26736   orc_union16 var46;
26737   orc_union16 var47;
26738 
26739   ptr0 = (orc_union16 *) d1;
26740   ptr4 = (orc_int8 *) s1;
26741   ptr5 = (orc_int8 *) s2;
26742   ptr6 = (orc_int8 *) s3;
26743   ptr7 = (orc_union16 *) s4;
26744   ptr8 = (orc_union16 *) s5;
26745   ptr9 = (orc_union16 *) s6;
26746 
26747 
26748   for (i = 0; i < n; i++) {
26749     /* 0: loadb */
26750     var34 = ptr4[i];
26751     /* 1: convubw */
26752     var41.i = (orc_uint8) var34;
26753     /* 2: loadw */
26754     var35 = ptr7[i];
26755     /* 3: mullw */
26756     var42.i = (var41.i * var35.i) & 0xffff;
26757     /* 4: loadb */
26758     var36 = ptr5[i];
26759     /* 5: convubw */
26760     var43.i = (orc_uint8) var36;
26761     /* 6: loadw */
26762     var37 = ptr8[i];
26763     /* 7: mullw */
26764     var44.i = (var43.i * var37.i) & 0xffff;
26765     /* 8: addw */
26766     var45.i = var42.i + var44.i;
26767     /* 9: loadb */
26768     var38 = ptr6[i];
26769     /* 10: convubw */
26770     var46.i = (orc_uint8) var38;
26771     /* 11: loadw */
26772     var39 = ptr9[i];
26773     /* 12: mullw */
26774     var47.i = (var46.i * var39.i) & 0xffff;
26775     /* 13: addw */
26776     var40.i = var45.i + var47.i;
26777     /* 14: storew */
26778     ptr0[i] = var40;
26779   }
26780 
26781 }
26782 
26783 #else
26784 static void
_backup_video_orc_resample_h_multaps3_u8_lq(OrcExecutor * ORC_RESTRICT ex)26785 _backup_video_orc_resample_h_multaps3_u8_lq (OrcExecutor * ORC_RESTRICT ex)
26786 {
26787   int i;
26788   int n = ex->n;
26789   orc_union16 *ORC_RESTRICT ptr0;
26790   const orc_int8 *ORC_RESTRICT ptr4;
26791   const orc_int8 *ORC_RESTRICT ptr5;
26792   const orc_int8 *ORC_RESTRICT ptr6;
26793   const orc_union16 *ORC_RESTRICT ptr7;
26794   const orc_union16 *ORC_RESTRICT ptr8;
26795   const orc_union16 *ORC_RESTRICT ptr9;
26796   orc_int8 var34;
26797   orc_union16 var35;
26798   orc_int8 var36;
26799   orc_union16 var37;
26800   orc_int8 var38;
26801   orc_union16 var39;
26802   orc_union16 var40;
26803   orc_union16 var41;
26804   orc_union16 var42;
26805   orc_union16 var43;
26806   orc_union16 var44;
26807   orc_union16 var45;
26808   orc_union16 var46;
26809   orc_union16 var47;
26810 
26811   ptr0 = (orc_union16 *) ex->arrays[0];
26812   ptr4 = (orc_int8 *) ex->arrays[4];
26813   ptr5 = (orc_int8 *) ex->arrays[5];
26814   ptr6 = (orc_int8 *) ex->arrays[6];
26815   ptr7 = (orc_union16 *) ex->arrays[7];
26816   ptr8 = (orc_union16 *) ex->arrays[8];
26817   ptr9 = (orc_union16 *) ex->arrays[9];
26818 
26819 
26820   for (i = 0; i < n; i++) {
26821     /* 0: loadb */
26822     var34 = ptr4[i];
26823     /* 1: convubw */
26824     var41.i = (orc_uint8) var34;
26825     /* 2: loadw */
26826     var35 = ptr7[i];
26827     /* 3: mullw */
26828     var42.i = (var41.i * var35.i) & 0xffff;
26829     /* 4: loadb */
26830     var36 = ptr5[i];
26831     /* 5: convubw */
26832     var43.i = (orc_uint8) var36;
26833     /* 6: loadw */
26834     var37 = ptr8[i];
26835     /* 7: mullw */
26836     var44.i = (var43.i * var37.i) & 0xffff;
26837     /* 8: addw */
26838     var45.i = var42.i + var44.i;
26839     /* 9: loadb */
26840     var38 = ptr6[i];
26841     /* 10: convubw */
26842     var46.i = (orc_uint8) var38;
26843     /* 11: loadw */
26844     var39 = ptr9[i];
26845     /* 12: mullw */
26846     var47.i = (var46.i * var39.i) & 0xffff;
26847     /* 13: addw */
26848     var40.i = var45.i + var47.i;
26849     /* 14: storew */
26850     ptr0[i] = var40;
26851   }
26852 
26853 }
26854 
26855 void
video_orc_resample_h_multaps3_u8_lq(gint16 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,const guint8 * ORC_RESTRICT s3,const gint16 * ORC_RESTRICT s4,const gint16 * ORC_RESTRICT s5,const gint16 * ORC_RESTRICT s6,int n)26856 video_orc_resample_h_multaps3_u8_lq (gint16 * ORC_RESTRICT d1,
26857     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
26858     const guint8 * ORC_RESTRICT s3, const gint16 * ORC_RESTRICT s4,
26859     const gint16 * ORC_RESTRICT s5, const gint16 * ORC_RESTRICT s6, int n)
26860 {
26861   OrcExecutor _ex, *ex = &_ex;
26862   static volatile int p_inited = 0;
26863   static OrcCode *c = 0;
26864   void (*func) (OrcExecutor *);
26865 
26866   if (!p_inited) {
26867     orc_once_mutex_lock ();
26868     if (!p_inited) {
26869       OrcProgram *p;
26870 
26871 #if 1
26872       static const orc_uint8 bc[] = {
26873         1, 9, 35, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
26874         97, 109, 112, 108, 101, 95, 104, 95, 109, 117, 108, 116, 97, 112, 115,
26875             51,
26876         95, 117, 56, 95, 108, 113, 11, 2, 2, 12, 1, 1, 12, 1, 1, 12,
26877         1, 1, 12, 2, 2, 12, 2, 2, 12, 2, 2, 20, 2, 20, 2, 150,
26878         32, 4, 89, 32, 32, 7, 150, 33, 5, 89, 33, 33, 8, 70, 32, 32,
26879         33, 150, 33, 6, 89, 33, 33, 9, 70, 0, 32, 33, 2, 0,
26880       };
26881       p = orc_program_new_from_static_bytecode (bc);
26882       orc_program_set_backup_function (p,
26883           _backup_video_orc_resample_h_multaps3_u8_lq);
26884 #else
26885       p = orc_program_new ();
26886       orc_program_set_name (p, "video_orc_resample_h_multaps3_u8_lq");
26887       orc_program_set_backup_function (p,
26888           _backup_video_orc_resample_h_multaps3_u8_lq);
26889       orc_program_add_destination (p, 2, "d1");
26890       orc_program_add_source (p, 1, "s1");
26891       orc_program_add_source (p, 1, "s2");
26892       orc_program_add_source (p, 1, "s3");
26893       orc_program_add_source (p, 2, "s4");
26894       orc_program_add_source (p, 2, "s5");
26895       orc_program_add_source (p, 2, "s6");
26896       orc_program_add_temporary (p, 2, "t1");
26897       orc_program_add_temporary (p, 2, "t2");
26898 
26899       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
26900           ORC_VAR_D1);
26901       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S4,
26902           ORC_VAR_D1);
26903       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
26904           ORC_VAR_D1);
26905       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_S5,
26906           ORC_VAR_D1);
26907       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
26908           ORC_VAR_D1);
26909       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1,
26910           ORC_VAR_D1);
26911       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_S6,
26912           ORC_VAR_D1);
26913       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
26914           ORC_VAR_D1);
26915 #endif
26916 
26917       orc_program_compile (p);
26918       c = orc_program_take_code (p);
26919       orc_program_free (p);
26920     }
26921     p_inited = TRUE;
26922     orc_once_mutex_unlock ();
26923   }
26924   ex->arrays[ORC_VAR_A2] = c;
26925   ex->program = 0;
26926 
26927   ex->n = n;
26928   ex->arrays[ORC_VAR_D1] = d1;
26929   ex->arrays[ORC_VAR_S1] = (void *) s1;
26930   ex->arrays[ORC_VAR_S2] = (void *) s2;
26931   ex->arrays[ORC_VAR_S3] = (void *) s3;
26932   ex->arrays[ORC_VAR_S4] = (void *) s4;
26933   ex->arrays[ORC_VAR_S5] = (void *) s5;
26934   ex->arrays[ORC_VAR_S6] = (void *) s6;
26935 
26936   func = c->exec;
26937   func (ex);
26938 }
26939 #endif
26940 
26941 
26942 /* video_orc_resample_h_muladdtaps3_u8_lq */
26943 #ifdef DISABLE_ORC
26944 void
video_orc_resample_h_muladdtaps3_u8_lq(gint16 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,const guint8 * ORC_RESTRICT s3,const gint16 * ORC_RESTRICT s4,const gint16 * ORC_RESTRICT s5,const gint16 * ORC_RESTRICT s6,int n)26945 video_orc_resample_h_muladdtaps3_u8_lq (gint16 * ORC_RESTRICT d1,
26946     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
26947     const guint8 * ORC_RESTRICT s3, const gint16 * ORC_RESTRICT s4,
26948     const gint16 * ORC_RESTRICT s5, const gint16 * ORC_RESTRICT s6, int n)
26949 {
26950   int i;
26951   orc_union16 *ORC_RESTRICT ptr0;
26952   const orc_int8 *ORC_RESTRICT ptr4;
26953   const orc_int8 *ORC_RESTRICT ptr5;
26954   const orc_int8 *ORC_RESTRICT ptr6;
26955   const orc_union16 *ORC_RESTRICT ptr7;
26956   const orc_union16 *ORC_RESTRICT ptr8;
26957   const orc_union16 *ORC_RESTRICT ptr9;
26958   orc_int8 var34;
26959   orc_union16 var35;
26960   orc_int8 var36;
26961   orc_union16 var37;
26962   orc_int8 var38;
26963   orc_union16 var39;
26964   orc_union16 var40;
26965   orc_union16 var41;
26966   orc_union16 var42;
26967   orc_union16 var43;
26968   orc_union16 var44;
26969   orc_union16 var45;
26970   orc_union16 var46;
26971   orc_union16 var47;
26972   orc_union16 var48;
26973   orc_union16 var49;
26974 
26975   ptr0 = (orc_union16 *) d1;
26976   ptr4 = (orc_int8 *) s1;
26977   ptr5 = (orc_int8 *) s2;
26978   ptr6 = (orc_int8 *) s3;
26979   ptr7 = (orc_union16 *) s4;
26980   ptr8 = (orc_union16 *) s5;
26981   ptr9 = (orc_union16 *) s6;
26982 
26983 
26984   for (i = 0; i < n; i++) {
26985     /* 0: loadb */
26986     var34 = ptr4[i];
26987     /* 1: convubw */
26988     var42.i = (orc_uint8) var34;
26989     /* 2: loadw */
26990     var35 = ptr7[i];
26991     /* 3: mullw */
26992     var43.i = (var42.i * var35.i) & 0xffff;
26993     /* 4: loadb */
26994     var36 = ptr5[i];
26995     /* 5: convubw */
26996     var44.i = (orc_uint8) var36;
26997     /* 6: loadw */
26998     var37 = ptr8[i];
26999     /* 7: mullw */
27000     var45.i = (var44.i * var37.i) & 0xffff;
27001     /* 8: addw */
27002     var46.i = var43.i + var45.i;
27003     /* 9: loadb */
27004     var38 = ptr6[i];
27005     /* 10: convubw */
27006     var47.i = (orc_uint8) var38;
27007     /* 11: loadw */
27008     var39 = ptr9[i];
27009     /* 12: mullw */
27010     var48.i = (var47.i * var39.i) & 0xffff;
27011     /* 13: addw */
27012     var49.i = var46.i + var48.i;
27013     /* 14: loadw */
27014     var40 = ptr0[i];
27015     /* 15: addw */
27016     var41.i = var40.i + var49.i;
27017     /* 16: storew */
27018     ptr0[i] = var41;
27019   }
27020 
27021 }
27022 
27023 #else
27024 static void
_backup_video_orc_resample_h_muladdtaps3_u8_lq(OrcExecutor * ORC_RESTRICT ex)27025 _backup_video_orc_resample_h_muladdtaps3_u8_lq (OrcExecutor * ORC_RESTRICT ex)
27026 {
27027   int i;
27028   int n = ex->n;
27029   orc_union16 *ORC_RESTRICT ptr0;
27030   const orc_int8 *ORC_RESTRICT ptr4;
27031   const orc_int8 *ORC_RESTRICT ptr5;
27032   const orc_int8 *ORC_RESTRICT ptr6;
27033   const orc_union16 *ORC_RESTRICT ptr7;
27034   const orc_union16 *ORC_RESTRICT ptr8;
27035   const orc_union16 *ORC_RESTRICT ptr9;
27036   orc_int8 var34;
27037   orc_union16 var35;
27038   orc_int8 var36;
27039   orc_union16 var37;
27040   orc_int8 var38;
27041   orc_union16 var39;
27042   orc_union16 var40;
27043   orc_union16 var41;
27044   orc_union16 var42;
27045   orc_union16 var43;
27046   orc_union16 var44;
27047   orc_union16 var45;
27048   orc_union16 var46;
27049   orc_union16 var47;
27050   orc_union16 var48;
27051   orc_union16 var49;
27052 
27053   ptr0 = (orc_union16 *) ex->arrays[0];
27054   ptr4 = (orc_int8 *) ex->arrays[4];
27055   ptr5 = (orc_int8 *) ex->arrays[5];
27056   ptr6 = (orc_int8 *) ex->arrays[6];
27057   ptr7 = (orc_union16 *) ex->arrays[7];
27058   ptr8 = (orc_union16 *) ex->arrays[8];
27059   ptr9 = (orc_union16 *) ex->arrays[9];
27060 
27061 
27062   for (i = 0; i < n; i++) {
27063     /* 0: loadb */
27064     var34 = ptr4[i];
27065     /* 1: convubw */
27066     var42.i = (orc_uint8) var34;
27067     /* 2: loadw */
27068     var35 = ptr7[i];
27069     /* 3: mullw */
27070     var43.i = (var42.i * var35.i) & 0xffff;
27071     /* 4: loadb */
27072     var36 = ptr5[i];
27073     /* 5: convubw */
27074     var44.i = (orc_uint8) var36;
27075     /* 6: loadw */
27076     var37 = ptr8[i];
27077     /* 7: mullw */
27078     var45.i = (var44.i * var37.i) & 0xffff;
27079     /* 8: addw */
27080     var46.i = var43.i + var45.i;
27081     /* 9: loadb */
27082     var38 = ptr6[i];
27083     /* 10: convubw */
27084     var47.i = (orc_uint8) var38;
27085     /* 11: loadw */
27086     var39 = ptr9[i];
27087     /* 12: mullw */
27088     var48.i = (var47.i * var39.i) & 0xffff;
27089     /* 13: addw */
27090     var49.i = var46.i + var48.i;
27091     /* 14: loadw */
27092     var40 = ptr0[i];
27093     /* 15: addw */
27094     var41.i = var40.i + var49.i;
27095     /* 16: storew */
27096     ptr0[i] = var41;
27097   }
27098 
27099 }
27100 
27101 void
video_orc_resample_h_muladdtaps3_u8_lq(gint16 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,const guint8 * ORC_RESTRICT s3,const gint16 * ORC_RESTRICT s4,const gint16 * ORC_RESTRICT s5,const gint16 * ORC_RESTRICT s6,int n)27102 video_orc_resample_h_muladdtaps3_u8_lq (gint16 * ORC_RESTRICT d1,
27103     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
27104     const guint8 * ORC_RESTRICT s3, const gint16 * ORC_RESTRICT s4,
27105     const gint16 * ORC_RESTRICT s5, const gint16 * ORC_RESTRICT s6, int n)
27106 {
27107   OrcExecutor _ex, *ex = &_ex;
27108   static volatile int p_inited = 0;
27109   static OrcCode *c = 0;
27110   void (*func) (OrcExecutor *);
27111 
27112   if (!p_inited) {
27113     orc_once_mutex_lock ();
27114     if (!p_inited) {
27115       OrcProgram *p;
27116 
27117 #if 1
27118       static const orc_uint8 bc[] = {
27119         1, 9, 38, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
27120         97, 109, 112, 108, 101, 95, 104, 95, 109, 117, 108, 97, 100, 100, 116,
27121             97,
27122         112, 115, 51, 95, 117, 56, 95, 108, 113, 11, 2, 2, 12, 1, 1, 12,
27123         1, 1, 12, 1, 1, 12, 2, 2, 12, 2, 2, 12, 2, 2, 20, 2,
27124         20, 2, 150, 32, 4, 89, 32, 32, 7, 150, 33, 5, 89, 33, 33, 8,
27125         70, 32, 32, 33, 150, 33, 6, 89, 33, 33, 9, 70, 32, 32, 33, 70,
27126         0, 0, 32, 2, 0,
27127       };
27128       p = orc_program_new_from_static_bytecode (bc);
27129       orc_program_set_backup_function (p,
27130           _backup_video_orc_resample_h_muladdtaps3_u8_lq);
27131 #else
27132       p = orc_program_new ();
27133       orc_program_set_name (p, "video_orc_resample_h_muladdtaps3_u8_lq");
27134       orc_program_set_backup_function (p,
27135           _backup_video_orc_resample_h_muladdtaps3_u8_lq);
27136       orc_program_add_destination (p, 2, "d1");
27137       orc_program_add_source (p, 1, "s1");
27138       orc_program_add_source (p, 1, "s2");
27139       orc_program_add_source (p, 1, "s3");
27140       orc_program_add_source (p, 2, "s4");
27141       orc_program_add_source (p, 2, "s5");
27142       orc_program_add_source (p, 2, "s6");
27143       orc_program_add_temporary (p, 2, "t1");
27144       orc_program_add_temporary (p, 2, "t2");
27145 
27146       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
27147           ORC_VAR_D1);
27148       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S4,
27149           ORC_VAR_D1);
27150       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
27151           ORC_VAR_D1);
27152       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_S5,
27153           ORC_VAR_D1);
27154       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
27155           ORC_VAR_D1);
27156       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1,
27157           ORC_VAR_D1);
27158       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_S6,
27159           ORC_VAR_D1);
27160       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
27161           ORC_VAR_D1);
27162       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1,
27163           ORC_VAR_D1);
27164 #endif
27165 
27166       orc_program_compile (p);
27167       c = orc_program_take_code (p);
27168       orc_program_free (p);
27169     }
27170     p_inited = TRUE;
27171     orc_once_mutex_unlock ();
27172   }
27173   ex->arrays[ORC_VAR_A2] = c;
27174   ex->program = 0;
27175 
27176   ex->n = n;
27177   ex->arrays[ORC_VAR_D1] = d1;
27178   ex->arrays[ORC_VAR_S1] = (void *) s1;
27179   ex->arrays[ORC_VAR_S2] = (void *) s2;
27180   ex->arrays[ORC_VAR_S3] = (void *) s3;
27181   ex->arrays[ORC_VAR_S4] = (void *) s4;
27182   ex->arrays[ORC_VAR_S5] = (void *) s5;
27183   ex->arrays[ORC_VAR_S6] = (void *) s6;
27184 
27185   func = c->exec;
27186   func (ex);
27187 }
27188 #endif
27189 
27190 
27191 /* video_orc_resample_h_muladdscaletaps3_u8_lq */
27192 #ifdef DISABLE_ORC
27193 void
video_orc_resample_h_muladdscaletaps3_u8_lq(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,const guint8 * ORC_RESTRICT s3,const gint16 * ORC_RESTRICT s4,const gint16 * ORC_RESTRICT s5,const gint16 * ORC_RESTRICT s6,const gint16 * ORC_RESTRICT s7,int n)27194 video_orc_resample_h_muladdscaletaps3_u8_lq (guint8 * ORC_RESTRICT d1,
27195     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
27196     const guint8 * ORC_RESTRICT s3, const gint16 * ORC_RESTRICT s4,
27197     const gint16 * ORC_RESTRICT s5, const gint16 * ORC_RESTRICT s6,
27198     const gint16 * ORC_RESTRICT s7, int n)
27199 {
27200   int i;
27201   orc_int8 *ORC_RESTRICT ptr0;
27202   const orc_int8 *ORC_RESTRICT ptr4;
27203   const orc_int8 *ORC_RESTRICT ptr5;
27204   const orc_int8 *ORC_RESTRICT ptr6;
27205   const orc_union16 *ORC_RESTRICT ptr7;
27206   const orc_union16 *ORC_RESTRICT ptr8;
27207   const orc_union16 *ORC_RESTRICT ptr9;
27208   const orc_union16 *ORC_RESTRICT ptr10;
27209   orc_int8 var34;
27210   orc_union16 var35;
27211   orc_int8 var36;
27212   orc_union16 var37;
27213   orc_int8 var38;
27214   orc_union16 var39;
27215   orc_union16 var40;
27216 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
27217   volatile orc_union16 var41;
27218 #else
27219   orc_union16 var41;
27220 #endif
27221   orc_int8 var42;
27222   orc_union16 var43;
27223   orc_union16 var44;
27224   orc_union16 var45;
27225   orc_union16 var46;
27226   orc_union16 var47;
27227   orc_union16 var48;
27228   orc_union16 var49;
27229   orc_union16 var50;
27230   orc_union16 var51;
27231   orc_union16 var52;
27232   orc_union16 var53;
27233 
27234   ptr0 = (orc_int8 *) d1;
27235   ptr4 = (orc_int8 *) s1;
27236   ptr5 = (orc_int8 *) s2;
27237   ptr6 = (orc_int8 *) s3;
27238   ptr7 = (orc_union16 *) s4;
27239   ptr8 = (orc_union16 *) s5;
27240   ptr9 = (orc_union16 *) s6;
27241   ptr10 = (orc_union16 *) s7;
27242 
27243   /* 16: loadpw */
27244   var41.i = 0x00000020;         /* 32 or 1.58101e-322f */
27245 
27246   for (i = 0; i < n; i++) {
27247     /* 0: loadb */
27248     var34 = ptr4[i];
27249     /* 1: convubw */
27250     var43.i = (orc_uint8) var34;
27251     /* 2: loadw */
27252     var35 = ptr7[i];
27253     /* 3: mullw */
27254     var44.i = (var43.i * var35.i) & 0xffff;
27255     /* 4: loadb */
27256     var36 = ptr5[i];
27257     /* 5: convubw */
27258     var45.i = (orc_uint8) var36;
27259     /* 6: loadw */
27260     var37 = ptr8[i];
27261     /* 7: mullw */
27262     var46.i = (var45.i * var37.i) & 0xffff;
27263     /* 8: addw */
27264     var47.i = var44.i + var46.i;
27265     /* 9: loadb */
27266     var38 = ptr6[i];
27267     /* 10: convubw */
27268     var48.i = (orc_uint8) var38;
27269     /* 11: loadw */
27270     var39 = ptr9[i];
27271     /* 12: mullw */
27272     var49.i = (var48.i * var39.i) & 0xffff;
27273     /* 13: addw */
27274     var50.i = var47.i + var49.i;
27275     /* 14: loadw */
27276     var40 = ptr10[i];
27277     /* 15: addw */
27278     var51.i = var50.i + var40.i;
27279     /* 17: addw */
27280     var52.i = var51.i + var41.i;
27281     /* 18: shrsw */
27282     var53.i = var52.i >> 6;
27283     /* 19: convsuswb */
27284     var42 = ORC_CLAMP_UB (var53.i);
27285     /* 20: storeb */
27286     ptr0[i] = var42;
27287   }
27288 
27289 }
27290 
27291 #else
27292 static void
_backup_video_orc_resample_h_muladdscaletaps3_u8_lq(OrcExecutor * ORC_RESTRICT ex)27293 _backup_video_orc_resample_h_muladdscaletaps3_u8_lq (OrcExecutor *
27294     ORC_RESTRICT ex)
27295 {
27296   int i;
27297   int n = ex->n;
27298   orc_int8 *ORC_RESTRICT ptr0;
27299   const orc_int8 *ORC_RESTRICT ptr4;
27300   const orc_int8 *ORC_RESTRICT ptr5;
27301   const orc_int8 *ORC_RESTRICT ptr6;
27302   const orc_union16 *ORC_RESTRICT ptr7;
27303   const orc_union16 *ORC_RESTRICT ptr8;
27304   const orc_union16 *ORC_RESTRICT ptr9;
27305   const orc_union16 *ORC_RESTRICT ptr10;
27306   orc_int8 var34;
27307   orc_union16 var35;
27308   orc_int8 var36;
27309   orc_union16 var37;
27310   orc_int8 var38;
27311   orc_union16 var39;
27312   orc_union16 var40;
27313 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
27314   volatile orc_union16 var41;
27315 #else
27316   orc_union16 var41;
27317 #endif
27318   orc_int8 var42;
27319   orc_union16 var43;
27320   orc_union16 var44;
27321   orc_union16 var45;
27322   orc_union16 var46;
27323   orc_union16 var47;
27324   orc_union16 var48;
27325   orc_union16 var49;
27326   orc_union16 var50;
27327   orc_union16 var51;
27328   orc_union16 var52;
27329   orc_union16 var53;
27330 
27331   ptr0 = (orc_int8 *) ex->arrays[0];
27332   ptr4 = (orc_int8 *) ex->arrays[4];
27333   ptr5 = (orc_int8 *) ex->arrays[5];
27334   ptr6 = (orc_int8 *) ex->arrays[6];
27335   ptr7 = (orc_union16 *) ex->arrays[7];
27336   ptr8 = (orc_union16 *) ex->arrays[8];
27337   ptr9 = (orc_union16 *) ex->arrays[9];
27338   ptr10 = (orc_union16 *) ex->arrays[10];
27339 
27340   /* 16: loadpw */
27341   var41.i = 0x00000020;         /* 32 or 1.58101e-322f */
27342 
27343   for (i = 0; i < n; i++) {
27344     /* 0: loadb */
27345     var34 = ptr4[i];
27346     /* 1: convubw */
27347     var43.i = (orc_uint8) var34;
27348     /* 2: loadw */
27349     var35 = ptr7[i];
27350     /* 3: mullw */
27351     var44.i = (var43.i * var35.i) & 0xffff;
27352     /* 4: loadb */
27353     var36 = ptr5[i];
27354     /* 5: convubw */
27355     var45.i = (orc_uint8) var36;
27356     /* 6: loadw */
27357     var37 = ptr8[i];
27358     /* 7: mullw */
27359     var46.i = (var45.i * var37.i) & 0xffff;
27360     /* 8: addw */
27361     var47.i = var44.i + var46.i;
27362     /* 9: loadb */
27363     var38 = ptr6[i];
27364     /* 10: convubw */
27365     var48.i = (orc_uint8) var38;
27366     /* 11: loadw */
27367     var39 = ptr9[i];
27368     /* 12: mullw */
27369     var49.i = (var48.i * var39.i) & 0xffff;
27370     /* 13: addw */
27371     var50.i = var47.i + var49.i;
27372     /* 14: loadw */
27373     var40 = ptr10[i];
27374     /* 15: addw */
27375     var51.i = var50.i + var40.i;
27376     /* 17: addw */
27377     var52.i = var51.i + var41.i;
27378     /* 18: shrsw */
27379     var53.i = var52.i >> 6;
27380     /* 19: convsuswb */
27381     var42 = ORC_CLAMP_UB (var53.i);
27382     /* 20: storeb */
27383     ptr0[i] = var42;
27384   }
27385 
27386 }
27387 
27388 void
video_orc_resample_h_muladdscaletaps3_u8_lq(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,const guint8 * ORC_RESTRICT s3,const gint16 * ORC_RESTRICT s4,const gint16 * ORC_RESTRICT s5,const gint16 * ORC_RESTRICT s6,const gint16 * ORC_RESTRICT s7,int n)27389 video_orc_resample_h_muladdscaletaps3_u8_lq (guint8 * ORC_RESTRICT d1,
27390     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
27391     const guint8 * ORC_RESTRICT s3, const gint16 * ORC_RESTRICT s4,
27392     const gint16 * ORC_RESTRICT s5, const gint16 * ORC_RESTRICT s6,
27393     const gint16 * ORC_RESTRICT s7, int n)
27394 {
27395   OrcExecutor _ex, *ex = &_ex;
27396   static volatile int p_inited = 0;
27397   static OrcCode *c = 0;
27398   void (*func) (OrcExecutor *);
27399 
27400   if (!p_inited) {
27401     orc_once_mutex_lock ();
27402     if (!p_inited) {
27403       OrcProgram *p;
27404 
27405 #if 1
27406       static const orc_uint8 bc[] = {
27407         1, 9, 43, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
27408         97, 109, 112, 108, 101, 95, 104, 95, 109, 117, 108, 97, 100, 100, 115,
27409             99,
27410         97, 108, 101, 116, 97, 112, 115, 51, 95, 117, 56, 95, 108, 113, 11, 1,
27411         1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 2, 2, 12, 2, 2,
27412         12, 2, 2, 12, 2, 2, 14, 2, 32, 0, 0, 0, 14, 2, 6, 0,
27413         0, 0, 20, 2, 20, 2, 150, 32, 4, 89, 32, 32, 7, 150, 33, 5,
27414         89, 33, 33, 8, 70, 32, 32, 33, 150, 33, 6, 89, 33, 33, 9, 70,
27415         32, 32, 33, 70, 32, 32, 10, 70, 32, 32, 16, 94, 32, 32, 17, 160,
27416         0, 32, 2, 0,
27417       };
27418       p = orc_program_new_from_static_bytecode (bc);
27419       orc_program_set_backup_function (p,
27420           _backup_video_orc_resample_h_muladdscaletaps3_u8_lq);
27421 #else
27422       p = orc_program_new ();
27423       orc_program_set_name (p, "video_orc_resample_h_muladdscaletaps3_u8_lq");
27424       orc_program_set_backup_function (p,
27425           _backup_video_orc_resample_h_muladdscaletaps3_u8_lq);
27426       orc_program_add_destination (p, 1, "d1");
27427       orc_program_add_source (p, 1, "s1");
27428       orc_program_add_source (p, 1, "s2");
27429       orc_program_add_source (p, 1, "s3");
27430       orc_program_add_source (p, 2, "s4");
27431       orc_program_add_source (p, 2, "s5");
27432       orc_program_add_source (p, 2, "s6");
27433       orc_program_add_source (p, 2, "s7");
27434       orc_program_add_constant (p, 2, 0x00000020, "c1");
27435       orc_program_add_constant (p, 2, 0x00000006, "c2");
27436       orc_program_add_temporary (p, 2, "t1");
27437       orc_program_add_temporary (p, 2, "t2");
27438 
27439       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
27440           ORC_VAR_D1);
27441       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S4,
27442           ORC_VAR_D1);
27443       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
27444           ORC_VAR_D1);
27445       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_S5,
27446           ORC_VAR_D1);
27447       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
27448           ORC_VAR_D1);
27449       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1,
27450           ORC_VAR_D1);
27451       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_S6,
27452           ORC_VAR_D1);
27453       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
27454           ORC_VAR_D1);
27455       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S7,
27456           ORC_VAR_D1);
27457       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
27458           ORC_VAR_D1);
27459       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2,
27460           ORC_VAR_D1);
27461       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1,
27462           ORC_VAR_D1, ORC_VAR_D1);
27463 #endif
27464 
27465       orc_program_compile (p);
27466       c = orc_program_take_code (p);
27467       orc_program_free (p);
27468     }
27469     p_inited = TRUE;
27470     orc_once_mutex_unlock ();
27471   }
27472   ex->arrays[ORC_VAR_A2] = c;
27473   ex->program = 0;
27474 
27475   ex->n = n;
27476   ex->arrays[ORC_VAR_D1] = d1;
27477   ex->arrays[ORC_VAR_S1] = (void *) s1;
27478   ex->arrays[ORC_VAR_S2] = (void *) s2;
27479   ex->arrays[ORC_VAR_S3] = (void *) s3;
27480   ex->arrays[ORC_VAR_S4] = (void *) s4;
27481   ex->arrays[ORC_VAR_S5] = (void *) s5;
27482   ex->arrays[ORC_VAR_S6] = (void *) s6;
27483   ex->arrays[ORC_VAR_S7] = (void *) s7;
27484 
27485   func = c->exec;
27486   func (ex);
27487 }
27488 #endif
27489 
27490 
27491 /* video_orc_resample_scaletaps_u8_lq */
27492 #ifdef DISABLE_ORC
27493 void
video_orc_resample_scaletaps_u8_lq(guint8 * ORC_RESTRICT d1,const gint16 * ORC_RESTRICT s1,int n)27494 video_orc_resample_scaletaps_u8_lq (guint8 * ORC_RESTRICT d1,
27495     const gint16 * ORC_RESTRICT s1, int n)
27496 {
27497   int i;
27498   orc_int8 *ORC_RESTRICT ptr0;
27499   const orc_union16 *ORC_RESTRICT ptr4;
27500   orc_union16 var33;
27501 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
27502   volatile orc_union16 var34;
27503 #else
27504   orc_union16 var34;
27505 #endif
27506   orc_int8 var35;
27507   orc_union16 var36;
27508   orc_union16 var37;
27509 
27510   ptr0 = (orc_int8 *) d1;
27511   ptr4 = (orc_union16 *) s1;
27512 
27513   /* 1: loadpw */
27514   var34.i = 0x00000020;         /* 32 or 1.58101e-322f */
27515 
27516   for (i = 0; i < n; i++) {
27517     /* 0: loadw */
27518     var33 = ptr4[i];
27519     /* 2: addw */
27520     var36.i = var33.i + var34.i;
27521     /* 3: shrsw */
27522     var37.i = var36.i >> 6;
27523     /* 4: convsuswb */
27524     var35 = ORC_CLAMP_UB (var37.i);
27525     /* 5: storeb */
27526     ptr0[i] = var35;
27527   }
27528 
27529 }
27530 
27531 #else
27532 static void
_backup_video_orc_resample_scaletaps_u8_lq(OrcExecutor * ORC_RESTRICT ex)27533 _backup_video_orc_resample_scaletaps_u8_lq (OrcExecutor * ORC_RESTRICT ex)
27534 {
27535   int i;
27536   int n = ex->n;
27537   orc_int8 *ORC_RESTRICT ptr0;
27538   const orc_union16 *ORC_RESTRICT ptr4;
27539   orc_union16 var33;
27540 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
27541   volatile orc_union16 var34;
27542 #else
27543   orc_union16 var34;
27544 #endif
27545   orc_int8 var35;
27546   orc_union16 var36;
27547   orc_union16 var37;
27548 
27549   ptr0 = (orc_int8 *) ex->arrays[0];
27550   ptr4 = (orc_union16 *) ex->arrays[4];
27551 
27552   /* 1: loadpw */
27553   var34.i = 0x00000020;         /* 32 or 1.58101e-322f */
27554 
27555   for (i = 0; i < n; i++) {
27556     /* 0: loadw */
27557     var33 = ptr4[i];
27558     /* 2: addw */
27559     var36.i = var33.i + var34.i;
27560     /* 3: shrsw */
27561     var37.i = var36.i >> 6;
27562     /* 4: convsuswb */
27563     var35 = ORC_CLAMP_UB (var37.i);
27564     /* 5: storeb */
27565     ptr0[i] = var35;
27566   }
27567 
27568 }
27569 
27570 void
video_orc_resample_scaletaps_u8_lq(guint8 * ORC_RESTRICT d1,const gint16 * ORC_RESTRICT s1,int n)27571 video_orc_resample_scaletaps_u8_lq (guint8 * ORC_RESTRICT d1,
27572     const gint16 * ORC_RESTRICT s1, int n)
27573 {
27574   OrcExecutor _ex, *ex = &_ex;
27575   static volatile int p_inited = 0;
27576   static OrcCode *c = 0;
27577   void (*func) (OrcExecutor *);
27578 
27579   if (!p_inited) {
27580     orc_once_mutex_lock ();
27581     if (!p_inited) {
27582       OrcProgram *p;
27583 
27584 #if 1
27585       static const orc_uint8 bc[] = {
27586         1, 9, 34, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
27587         97, 109, 112, 108, 101, 95, 115, 99, 97, 108, 101, 116, 97, 112, 115,
27588             95,
27589         117, 56, 95, 108, 113, 11, 1, 1, 12, 2, 2, 14, 2, 32, 0, 0,
27590         0, 14, 2, 6, 0, 0, 0, 20, 2, 70, 32, 4, 16, 94, 32, 32,
27591         17, 160, 0, 32, 2, 0,
27592       };
27593       p = orc_program_new_from_static_bytecode (bc);
27594       orc_program_set_backup_function (p,
27595           _backup_video_orc_resample_scaletaps_u8_lq);
27596 #else
27597       p = orc_program_new ();
27598       orc_program_set_name (p, "video_orc_resample_scaletaps_u8_lq");
27599       orc_program_set_backup_function (p,
27600           _backup_video_orc_resample_scaletaps_u8_lq);
27601       orc_program_add_destination (p, 1, "d1");
27602       orc_program_add_source (p, 2, "s1");
27603       orc_program_add_constant (p, 2, 0x00000020, "c1");
27604       orc_program_add_constant (p, 2, 0x00000006, "c2");
27605       orc_program_add_temporary (p, 2, "t1");
27606 
27607       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1,
27608           ORC_VAR_D1);
27609       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2,
27610           ORC_VAR_D1);
27611       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1,
27612           ORC_VAR_D1, ORC_VAR_D1);
27613 #endif
27614 
27615       orc_program_compile (p);
27616       c = orc_program_take_code (p);
27617       orc_program_free (p);
27618     }
27619     p_inited = TRUE;
27620     orc_once_mutex_unlock ();
27621   }
27622   ex->arrays[ORC_VAR_A2] = c;
27623   ex->program = 0;
27624 
27625   ex->n = n;
27626   ex->arrays[ORC_VAR_D1] = d1;
27627   ex->arrays[ORC_VAR_S1] = (void *) s1;
27628 
27629   func = c->exec;
27630   func (ex);
27631 }
27632 #endif
27633 
27634 
27635 /* video_orc_resample_h_multaps_u16 */
27636 #ifdef DISABLE_ORC
27637 void
video_orc_resample_h_multaps_u16(gint32 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,const gint16 * ORC_RESTRICT s2,int n)27638 video_orc_resample_h_multaps_u16 (gint32 * ORC_RESTRICT d1,
27639     const guint16 * ORC_RESTRICT s1, const gint16 * ORC_RESTRICT s2, int n)
27640 {
27641   int i;
27642   orc_union32 *ORC_RESTRICT ptr0;
27643   const orc_union16 *ORC_RESTRICT ptr4;
27644   const orc_union16 *ORC_RESTRICT ptr5;
27645   orc_union16 var34;
27646   orc_union16 var35;
27647   orc_union32 var36;
27648   orc_union32 var37;
27649   orc_union32 var38;
27650 
27651   ptr0 = (orc_union32 *) d1;
27652   ptr4 = (orc_union16 *) s1;
27653   ptr5 = (orc_union16 *) s2;
27654 
27655 
27656   for (i = 0; i < n; i++) {
27657     /* 0: loadw */
27658     var34 = ptr4[i];
27659     /* 1: convuwl */
27660     var37.i = (orc_uint16) var34.i;
27661     /* 2: loadw */
27662     var35 = ptr5[i];
27663     /* 3: convswl */
27664     var38.i = var35.i;
27665     /* 4: mulll */
27666     var36.i = (((orc_uint32) var37.i) * ((orc_uint32) var38.i)) & 0xffffffff;
27667     /* 5: storel */
27668     ptr0[i] = var36;
27669   }
27670 
27671 }
27672 
27673 #else
27674 static void
_backup_video_orc_resample_h_multaps_u16(OrcExecutor * ORC_RESTRICT ex)27675 _backup_video_orc_resample_h_multaps_u16 (OrcExecutor * ORC_RESTRICT ex)
27676 {
27677   int i;
27678   int n = ex->n;
27679   orc_union32 *ORC_RESTRICT ptr0;
27680   const orc_union16 *ORC_RESTRICT ptr4;
27681   const orc_union16 *ORC_RESTRICT ptr5;
27682   orc_union16 var34;
27683   orc_union16 var35;
27684   orc_union32 var36;
27685   orc_union32 var37;
27686   orc_union32 var38;
27687 
27688   ptr0 = (orc_union32 *) ex->arrays[0];
27689   ptr4 = (orc_union16 *) ex->arrays[4];
27690   ptr5 = (orc_union16 *) ex->arrays[5];
27691 
27692 
27693   for (i = 0; i < n; i++) {
27694     /* 0: loadw */
27695     var34 = ptr4[i];
27696     /* 1: convuwl */
27697     var37.i = (orc_uint16) var34.i;
27698     /* 2: loadw */
27699     var35 = ptr5[i];
27700     /* 3: convswl */
27701     var38.i = var35.i;
27702     /* 4: mulll */
27703     var36.i = (((orc_uint32) var37.i) * ((orc_uint32) var38.i)) & 0xffffffff;
27704     /* 5: storel */
27705     ptr0[i] = var36;
27706   }
27707 
27708 }
27709 
27710 void
video_orc_resample_h_multaps_u16(gint32 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,const gint16 * ORC_RESTRICT s2,int n)27711 video_orc_resample_h_multaps_u16 (gint32 * ORC_RESTRICT d1,
27712     const guint16 * ORC_RESTRICT s1, const gint16 * ORC_RESTRICT s2, int n)
27713 {
27714   OrcExecutor _ex, *ex = &_ex;
27715   static volatile int p_inited = 0;
27716   static OrcCode *c = 0;
27717   void (*func) (OrcExecutor *);
27718 
27719   if (!p_inited) {
27720     orc_once_mutex_lock ();
27721     if (!p_inited) {
27722       OrcProgram *p;
27723 
27724 #if 1
27725       static const orc_uint8 bc[] = {
27726         1, 9, 32, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
27727         97, 109, 112, 108, 101, 95, 104, 95, 109, 117, 108, 116, 97, 112, 115,
27728             95,
27729         117, 49, 54, 11, 4, 4, 12, 2, 2, 12, 2, 2, 20, 4, 20, 4,
27730         154, 32, 4, 153, 33, 5, 120, 0, 32, 33, 2, 0,
27731       };
27732       p = orc_program_new_from_static_bytecode (bc);
27733       orc_program_set_backup_function (p,
27734           _backup_video_orc_resample_h_multaps_u16);
27735 #else
27736       p = orc_program_new ();
27737       orc_program_set_name (p, "video_orc_resample_h_multaps_u16");
27738       orc_program_set_backup_function (p,
27739           _backup_video_orc_resample_h_multaps_u16);
27740       orc_program_add_destination (p, 4, "d1");
27741       orc_program_add_source (p, 2, "s1");
27742       orc_program_add_source (p, 2, "s2");
27743       orc_program_add_temporary (p, 4, "t1");
27744       orc_program_add_temporary (p, 4, "t2");
27745 
27746       orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
27747           ORC_VAR_D1);
27748       orc_program_append_2 (p, "convswl", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
27749           ORC_VAR_D1);
27750       orc_program_append_2 (p, "mulll", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
27751           ORC_VAR_D1);
27752 #endif
27753 
27754       orc_program_compile (p);
27755       c = orc_program_take_code (p);
27756       orc_program_free (p);
27757     }
27758     p_inited = TRUE;
27759     orc_once_mutex_unlock ();
27760   }
27761   ex->arrays[ORC_VAR_A2] = c;
27762   ex->program = 0;
27763 
27764   ex->n = n;
27765   ex->arrays[ORC_VAR_D1] = d1;
27766   ex->arrays[ORC_VAR_S1] = (void *) s1;
27767   ex->arrays[ORC_VAR_S2] = (void *) s2;
27768 
27769   func = c->exec;
27770   func (ex);
27771 }
27772 #endif
27773 
27774 
27775 /* video_orc_resample_h_muladdtaps_u16 */
27776 #ifdef DISABLE_ORC
27777 void
video_orc_resample_h_muladdtaps_u16(gint32 * ORC_RESTRICT d1,int d1_stride,const guint16 * ORC_RESTRICT s1,int s1_stride,const gint16 * ORC_RESTRICT s2,int s2_stride,int n,int m)27778 video_orc_resample_h_muladdtaps_u16 (gint32 * ORC_RESTRICT d1, int d1_stride,
27779     const guint16 * ORC_RESTRICT s1, int s1_stride,
27780     const gint16 * ORC_RESTRICT s2, int s2_stride, int n, int m)
27781 {
27782   int i;
27783   int j;
27784   orc_union32 *ORC_RESTRICT ptr0;
27785   const orc_union16 *ORC_RESTRICT ptr4;
27786   const orc_union16 *ORC_RESTRICT ptr5;
27787   orc_union16 var34;
27788   orc_union16 var35;
27789   orc_union32 var36;
27790   orc_union32 var37;
27791   orc_union32 var38;
27792   orc_union32 var39;
27793   orc_union32 var40;
27794 
27795   for (j = 0; j < m; j++) {
27796     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
27797     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
27798     ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
27799 
27800 
27801     for (i = 0; i < n; i++) {
27802       /* 0: loadw */
27803       var34 = ptr4[i];
27804       /* 1: convuwl */
27805       var38.i = (orc_uint16) var34.i;
27806       /* 2: loadw */
27807       var35 = ptr5[i];
27808       /* 3: convswl */
27809       var39.i = var35.i;
27810       /* 4: mulll */
27811       var40.i = (((orc_uint32) var38.i) * ((orc_uint32) var39.i)) & 0xffffffff;
27812       /* 5: loadl */
27813       var36 = ptr0[i];
27814       /* 6: addl */
27815       var37.i = ((orc_uint32) var36.i) + ((orc_uint32) var40.i);
27816       /* 7: storel */
27817       ptr0[i] = var37;
27818     }
27819   }
27820 
27821 }
27822 
27823 #else
27824 static void
_backup_video_orc_resample_h_muladdtaps_u16(OrcExecutor * ORC_RESTRICT ex)27825 _backup_video_orc_resample_h_muladdtaps_u16 (OrcExecutor * ORC_RESTRICT ex)
27826 {
27827   int i;
27828   int j;
27829   int n = ex->n;
27830   int m = ex->params[ORC_VAR_A1];
27831   orc_union32 *ORC_RESTRICT ptr0;
27832   const orc_union16 *ORC_RESTRICT ptr4;
27833   const orc_union16 *ORC_RESTRICT ptr5;
27834   orc_union16 var34;
27835   orc_union16 var35;
27836   orc_union32 var36;
27837   orc_union32 var37;
27838   orc_union32 var38;
27839   orc_union32 var39;
27840   orc_union32 var40;
27841 
27842   for (j = 0; j < m; j++) {
27843     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
27844     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
27845     ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
27846 
27847 
27848     for (i = 0; i < n; i++) {
27849       /* 0: loadw */
27850       var34 = ptr4[i];
27851       /* 1: convuwl */
27852       var38.i = (orc_uint16) var34.i;
27853       /* 2: loadw */
27854       var35 = ptr5[i];
27855       /* 3: convswl */
27856       var39.i = var35.i;
27857       /* 4: mulll */
27858       var40.i = (((orc_uint32) var38.i) * ((orc_uint32) var39.i)) & 0xffffffff;
27859       /* 5: loadl */
27860       var36 = ptr0[i];
27861       /* 6: addl */
27862       var37.i = ((orc_uint32) var36.i) + ((orc_uint32) var40.i);
27863       /* 7: storel */
27864       ptr0[i] = var37;
27865     }
27866   }
27867 
27868 }
27869 
27870 void
video_orc_resample_h_muladdtaps_u16(gint32 * ORC_RESTRICT d1,int d1_stride,const guint16 * ORC_RESTRICT s1,int s1_stride,const gint16 * ORC_RESTRICT s2,int s2_stride,int n,int m)27871 video_orc_resample_h_muladdtaps_u16 (gint32 * ORC_RESTRICT d1, int d1_stride,
27872     const guint16 * ORC_RESTRICT s1, int s1_stride,
27873     const gint16 * ORC_RESTRICT s2, int s2_stride, int n, int m)
27874 {
27875   OrcExecutor _ex, *ex = &_ex;
27876   static volatile int p_inited = 0;
27877   static OrcCode *c = 0;
27878   void (*func) (OrcExecutor *);
27879 
27880   if (!p_inited) {
27881     orc_once_mutex_lock ();
27882     if (!p_inited) {
27883       OrcProgram *p;
27884 
27885 #if 1
27886       static const orc_uint8 bc[] = {
27887         1, 7, 9, 35, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101,
27888         115, 97, 109, 112, 108, 101, 95, 104, 95, 109, 117, 108, 97, 100, 100,
27889             116,
27890         97, 112, 115, 95, 117, 49, 54, 11, 4, 4, 12, 2, 2, 12, 2, 2,
27891         20, 4, 20, 4, 154, 32, 4, 153, 33, 5, 120, 32, 32, 33, 103, 0,
27892         0, 32, 2, 0,
27893       };
27894       p = orc_program_new_from_static_bytecode (bc);
27895       orc_program_set_backup_function (p,
27896           _backup_video_orc_resample_h_muladdtaps_u16);
27897 #else
27898       p = orc_program_new ();
27899       orc_program_set_2d (p);
27900       orc_program_set_name (p, "video_orc_resample_h_muladdtaps_u16");
27901       orc_program_set_backup_function (p,
27902           _backup_video_orc_resample_h_muladdtaps_u16);
27903       orc_program_add_destination (p, 4, "d1");
27904       orc_program_add_source (p, 2, "s1");
27905       orc_program_add_source (p, 2, "s2");
27906       orc_program_add_temporary (p, 4, "t1");
27907       orc_program_add_temporary (p, 4, "t2");
27908 
27909       orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
27910           ORC_VAR_D1);
27911       orc_program_append_2 (p, "convswl", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
27912           ORC_VAR_D1);
27913       orc_program_append_2 (p, "mulll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
27914           ORC_VAR_D1);
27915       orc_program_append_2 (p, "addl", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1,
27916           ORC_VAR_D1);
27917 #endif
27918 
27919       orc_program_compile (p);
27920       c = orc_program_take_code (p);
27921       orc_program_free (p);
27922     }
27923     p_inited = TRUE;
27924     orc_once_mutex_unlock ();
27925   }
27926   ex->arrays[ORC_VAR_A2] = c;
27927   ex->program = 0;
27928 
27929   ex->n = n;
27930   ORC_EXECUTOR_M (ex) = m;
27931   ex->arrays[ORC_VAR_D1] = d1;
27932   ex->params[ORC_VAR_D1] = d1_stride;
27933   ex->arrays[ORC_VAR_S1] = (void *) s1;
27934   ex->params[ORC_VAR_S1] = s1_stride;
27935   ex->arrays[ORC_VAR_S2] = (void *) s2;
27936   ex->params[ORC_VAR_S2] = s2_stride;
27937 
27938   func = c->exec;
27939   func (ex);
27940 }
27941 #endif
27942 
27943 
27944 /* video_orc_resample_scaletaps_u16 */
27945 #ifdef DISABLE_ORC
27946 void
video_orc_resample_scaletaps_u16(guint16 * ORC_RESTRICT d1,const gint32 * ORC_RESTRICT s1,int n)27947 video_orc_resample_scaletaps_u16 (guint16 * ORC_RESTRICT d1,
27948     const gint32 * ORC_RESTRICT s1, int n)
27949 {
27950   int i;
27951   orc_union16 *ORC_RESTRICT ptr0;
27952   const orc_union32 *ORC_RESTRICT ptr4;
27953   orc_union32 var33;
27954 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
27955   volatile orc_union32 var34;
27956 #else
27957   orc_union32 var34;
27958 #endif
27959   orc_union16 var35;
27960   orc_union32 var36;
27961   orc_union32 var37;
27962 
27963   ptr0 = (orc_union16 *) d1;
27964   ptr4 = (orc_union32 *) s1;
27965 
27966   /* 1: loadpl */
27967   var34.i = 0x00000fff;         /* 4095 or 2.0232e-320f */
27968 
27969   for (i = 0; i < n; i++) {
27970     /* 0: loadl */
27971     var33 = ptr4[i];
27972     /* 2: addl */
27973     var36.i = ((orc_uint32) var33.i) + ((orc_uint32) var34.i);
27974     /* 3: shrsl */
27975     var37.i = var36.i >> 12;
27976     /* 4: convsuslw */
27977     var35.i = ORC_CLAMP_UW (var37.i);
27978     /* 5: storew */
27979     ptr0[i] = var35;
27980   }
27981 
27982 }
27983 
27984 #else
27985 static void
_backup_video_orc_resample_scaletaps_u16(OrcExecutor * ORC_RESTRICT ex)27986 _backup_video_orc_resample_scaletaps_u16 (OrcExecutor * ORC_RESTRICT ex)
27987 {
27988   int i;
27989   int n = ex->n;
27990   orc_union16 *ORC_RESTRICT ptr0;
27991   const orc_union32 *ORC_RESTRICT ptr4;
27992   orc_union32 var33;
27993 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
27994   volatile orc_union32 var34;
27995 #else
27996   orc_union32 var34;
27997 #endif
27998   orc_union16 var35;
27999   orc_union32 var36;
28000   orc_union32 var37;
28001 
28002   ptr0 = (orc_union16 *) ex->arrays[0];
28003   ptr4 = (orc_union32 *) ex->arrays[4];
28004 
28005   /* 1: loadpl */
28006   var34.i = 0x00000fff;         /* 4095 or 2.0232e-320f */
28007 
28008   for (i = 0; i < n; i++) {
28009     /* 0: loadl */
28010     var33 = ptr4[i];
28011     /* 2: addl */
28012     var36.i = ((orc_uint32) var33.i) + ((orc_uint32) var34.i);
28013     /* 3: shrsl */
28014     var37.i = var36.i >> 12;
28015     /* 4: convsuslw */
28016     var35.i = ORC_CLAMP_UW (var37.i);
28017     /* 5: storew */
28018     ptr0[i] = var35;
28019   }
28020 
28021 }
28022 
28023 void
video_orc_resample_scaletaps_u16(guint16 * ORC_RESTRICT d1,const gint32 * ORC_RESTRICT s1,int n)28024 video_orc_resample_scaletaps_u16 (guint16 * ORC_RESTRICT d1,
28025     const gint32 * ORC_RESTRICT s1, int n)
28026 {
28027   OrcExecutor _ex, *ex = &_ex;
28028   static volatile int p_inited = 0;
28029   static OrcCode *c = 0;
28030   void (*func) (OrcExecutor *);
28031 
28032   if (!p_inited) {
28033     orc_once_mutex_lock ();
28034     if (!p_inited) {
28035       OrcProgram *p;
28036 
28037 #if 1
28038       static const orc_uint8 bc[] = {
28039         1, 9, 32, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
28040         97, 109, 112, 108, 101, 95, 115, 99, 97, 108, 101, 116, 97, 112, 115,
28041             95,
28042         117, 49, 54, 11, 2, 2, 12, 4, 4, 14, 4, 255, 15, 0, 0, 14,
28043         4, 12, 0, 0, 0, 20, 4, 103, 32, 4, 16, 125, 32, 32, 17, 166,
28044         0, 32, 2, 0,
28045       };
28046       p = orc_program_new_from_static_bytecode (bc);
28047       orc_program_set_backup_function (p,
28048           _backup_video_orc_resample_scaletaps_u16);
28049 #else
28050       p = orc_program_new ();
28051       orc_program_set_name (p, "video_orc_resample_scaletaps_u16");
28052       orc_program_set_backup_function (p,
28053           _backup_video_orc_resample_scaletaps_u16);
28054       orc_program_add_destination (p, 2, "d1");
28055       orc_program_add_source (p, 4, "s1");
28056       orc_program_add_constant (p, 4, 0x00000fff, "c1");
28057       orc_program_add_constant (p, 4, 0x0000000c, "c2");
28058       orc_program_add_temporary (p, 4, "t1");
28059 
28060       orc_program_append_2 (p, "addl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1,
28061           ORC_VAR_D1);
28062       orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2,
28063           ORC_VAR_D1);
28064       orc_program_append_2 (p, "convsuslw", 0, ORC_VAR_D1, ORC_VAR_T1,
28065           ORC_VAR_D1, ORC_VAR_D1);
28066 #endif
28067 
28068       orc_program_compile (p);
28069       c = orc_program_take_code (p);
28070       orc_program_free (p);
28071     }
28072     p_inited = TRUE;
28073     orc_once_mutex_unlock ();
28074   }
28075   ex->arrays[ORC_VAR_A2] = c;
28076   ex->program = 0;
28077 
28078   ex->n = n;
28079   ex->arrays[ORC_VAR_D1] = d1;
28080   ex->arrays[ORC_VAR_S1] = (void *) s1;
28081 
28082   func = c->exec;
28083   func (ex);
28084 }
28085 #endif
28086 
28087 
28088 /* video_orc_resample_v_multaps_u8 */
28089 #ifdef DISABLE_ORC
28090 void
video_orc_resample_v_multaps_u8(gint32 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int p1,int n)28091 video_orc_resample_v_multaps_u8 (gint32 * ORC_RESTRICT d1,
28092     const guint8 * ORC_RESTRICT s1, int p1, int n)
28093 {
28094   int i;
28095   orc_union32 *ORC_RESTRICT ptr0;
28096   const orc_int8 *ORC_RESTRICT ptr4;
28097   orc_int8 var33;
28098   orc_union16 var34;
28099   orc_union32 var35;
28100   orc_union16 var36;
28101 
28102   ptr0 = (orc_union32 *) d1;
28103   ptr4 = (orc_int8 *) s1;
28104 
28105   /* 2: loadpw */
28106   var34.i = p1;
28107 
28108   for (i = 0; i < n; i++) {
28109     /* 0: loadb */
28110     var33 = ptr4[i];
28111     /* 1: convubw */
28112     var36.i = (orc_uint8) var33;
28113     /* 3: mulswl */
28114     var35.i = var36.i * var34.i;
28115     /* 4: storel */
28116     ptr0[i] = var35;
28117   }
28118 
28119 }
28120 
28121 #else
28122 static void
_backup_video_orc_resample_v_multaps_u8(OrcExecutor * ORC_RESTRICT ex)28123 _backup_video_orc_resample_v_multaps_u8 (OrcExecutor * ORC_RESTRICT ex)
28124 {
28125   int i;
28126   int n = ex->n;
28127   orc_union32 *ORC_RESTRICT ptr0;
28128   const orc_int8 *ORC_RESTRICT ptr4;
28129   orc_int8 var33;
28130   orc_union16 var34;
28131   orc_union32 var35;
28132   orc_union16 var36;
28133 
28134   ptr0 = (orc_union32 *) ex->arrays[0];
28135   ptr4 = (orc_int8 *) ex->arrays[4];
28136 
28137   /* 2: loadpw */
28138   var34.i = ex->params[24];
28139 
28140   for (i = 0; i < n; i++) {
28141     /* 0: loadb */
28142     var33 = ptr4[i];
28143     /* 1: convubw */
28144     var36.i = (orc_uint8) var33;
28145     /* 3: mulswl */
28146     var35.i = var36.i * var34.i;
28147     /* 4: storel */
28148     ptr0[i] = var35;
28149   }
28150 
28151 }
28152 
28153 void
video_orc_resample_v_multaps_u8(gint32 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int p1,int n)28154 video_orc_resample_v_multaps_u8 (gint32 * ORC_RESTRICT d1,
28155     const guint8 * ORC_RESTRICT s1, int p1, int n)
28156 {
28157   OrcExecutor _ex, *ex = &_ex;
28158   static volatile int p_inited = 0;
28159   static OrcCode *c = 0;
28160   void (*func) (OrcExecutor *);
28161 
28162   if (!p_inited) {
28163     orc_once_mutex_lock ();
28164     if (!p_inited) {
28165       OrcProgram *p;
28166 
28167 #if 1
28168       static const orc_uint8 bc[] = {
28169         1, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
28170         97, 109, 112, 108, 101, 95, 118, 95, 109, 117, 108, 116, 97, 112, 115,
28171             95,
28172         117, 56, 11, 4, 4, 12, 1, 1, 16, 2, 20, 2, 150, 32, 4, 176,
28173         0, 32, 24, 2, 0,
28174       };
28175       p = orc_program_new_from_static_bytecode (bc);
28176       orc_program_set_backup_function (p,
28177           _backup_video_orc_resample_v_multaps_u8);
28178 #else
28179       p = orc_program_new ();
28180       orc_program_set_name (p, "video_orc_resample_v_multaps_u8");
28181       orc_program_set_backup_function (p,
28182           _backup_video_orc_resample_v_multaps_u8);
28183       orc_program_add_destination (p, 4, "d1");
28184       orc_program_add_source (p, 1, "s1");
28185       orc_program_add_parameter (p, 2, "p1");
28186       orc_program_add_temporary (p, 2, "t1");
28187 
28188       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
28189           ORC_VAR_D1);
28190       orc_program_append_2 (p, "mulswl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_P1,
28191           ORC_VAR_D1);
28192 #endif
28193 
28194       orc_program_compile (p);
28195       c = orc_program_take_code (p);
28196       orc_program_free (p);
28197     }
28198     p_inited = TRUE;
28199     orc_once_mutex_unlock ();
28200   }
28201   ex->arrays[ORC_VAR_A2] = c;
28202   ex->program = 0;
28203 
28204   ex->n = n;
28205   ex->arrays[ORC_VAR_D1] = d1;
28206   ex->arrays[ORC_VAR_S1] = (void *) s1;
28207   ex->params[ORC_VAR_P1] = p1;
28208 
28209   func = c->exec;
28210   func (ex);
28211 }
28212 #endif
28213 
28214 
28215 /* video_orc_resample_v_muladdtaps_u8 */
28216 #ifdef DISABLE_ORC
28217 void
video_orc_resample_v_muladdtaps_u8(gint32 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int p1,int n)28218 video_orc_resample_v_muladdtaps_u8 (gint32 * ORC_RESTRICT d1,
28219     const guint8 * ORC_RESTRICT s1, int p1, int n)
28220 {
28221   int i;
28222   orc_union32 *ORC_RESTRICT ptr0;
28223   const orc_int8 *ORC_RESTRICT ptr4;
28224   orc_int8 var34;
28225   orc_union16 var35;
28226   orc_union32 var36;
28227   orc_union32 var37;
28228   orc_union16 var38;
28229   orc_union32 var39;
28230 
28231   ptr0 = (orc_union32 *) d1;
28232   ptr4 = (orc_int8 *) s1;
28233 
28234   /* 2: loadpw */
28235   var35.i = p1;
28236 
28237   for (i = 0; i < n; i++) {
28238     /* 0: loadb */
28239     var34 = ptr4[i];
28240     /* 1: convubw */
28241     var38.i = (orc_uint8) var34;
28242     /* 3: mulswl */
28243     var39.i = var38.i * var35.i;
28244     /* 4: loadl */
28245     var36 = ptr0[i];
28246     /* 5: addl */
28247     var37.i = ((orc_uint32) var36.i) + ((orc_uint32) var39.i);
28248     /* 6: storel */
28249     ptr0[i] = var37;
28250   }
28251 
28252 }
28253 
28254 #else
28255 static void
_backup_video_orc_resample_v_muladdtaps_u8(OrcExecutor * ORC_RESTRICT ex)28256 _backup_video_orc_resample_v_muladdtaps_u8 (OrcExecutor * ORC_RESTRICT ex)
28257 {
28258   int i;
28259   int n = ex->n;
28260   orc_union32 *ORC_RESTRICT ptr0;
28261   const orc_int8 *ORC_RESTRICT ptr4;
28262   orc_int8 var34;
28263   orc_union16 var35;
28264   orc_union32 var36;
28265   orc_union32 var37;
28266   orc_union16 var38;
28267   orc_union32 var39;
28268 
28269   ptr0 = (orc_union32 *) ex->arrays[0];
28270   ptr4 = (orc_int8 *) ex->arrays[4];
28271 
28272   /* 2: loadpw */
28273   var35.i = ex->params[24];
28274 
28275   for (i = 0; i < n; i++) {
28276     /* 0: loadb */
28277     var34 = ptr4[i];
28278     /* 1: convubw */
28279     var38.i = (orc_uint8) var34;
28280     /* 3: mulswl */
28281     var39.i = var38.i * var35.i;
28282     /* 4: loadl */
28283     var36 = ptr0[i];
28284     /* 5: addl */
28285     var37.i = ((orc_uint32) var36.i) + ((orc_uint32) var39.i);
28286     /* 6: storel */
28287     ptr0[i] = var37;
28288   }
28289 
28290 }
28291 
28292 void
video_orc_resample_v_muladdtaps_u8(gint32 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int p1,int n)28293 video_orc_resample_v_muladdtaps_u8 (gint32 * ORC_RESTRICT d1,
28294     const guint8 * ORC_RESTRICT s1, int p1, int n)
28295 {
28296   OrcExecutor _ex, *ex = &_ex;
28297   static volatile int p_inited = 0;
28298   static OrcCode *c = 0;
28299   void (*func) (OrcExecutor *);
28300 
28301   if (!p_inited) {
28302     orc_once_mutex_lock ();
28303     if (!p_inited) {
28304       OrcProgram *p;
28305 
28306 #if 1
28307       static const orc_uint8 bc[] = {
28308         1, 9, 34, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
28309         97, 109, 112, 108, 101, 95, 118, 95, 109, 117, 108, 97, 100, 100, 116,
28310             97,
28311         112, 115, 95, 117, 56, 11, 4, 4, 12, 1, 1, 16, 2, 20, 2, 20,
28312         4, 150, 32, 4, 176, 33, 32, 24, 103, 0, 0, 33, 2, 0,
28313       };
28314       p = orc_program_new_from_static_bytecode (bc);
28315       orc_program_set_backup_function (p,
28316           _backup_video_orc_resample_v_muladdtaps_u8);
28317 #else
28318       p = orc_program_new ();
28319       orc_program_set_name (p, "video_orc_resample_v_muladdtaps_u8");
28320       orc_program_set_backup_function (p,
28321           _backup_video_orc_resample_v_muladdtaps_u8);
28322       orc_program_add_destination (p, 4, "d1");
28323       orc_program_add_source (p, 1, "s1");
28324       orc_program_add_parameter (p, 2, "p1");
28325       orc_program_add_temporary (p, 2, "t1");
28326       orc_program_add_temporary (p, 4, "t2");
28327 
28328       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
28329           ORC_VAR_D1);
28330       orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_P1,
28331           ORC_VAR_D1);
28332       orc_program_append_2 (p, "addl", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T2,
28333           ORC_VAR_D1);
28334 #endif
28335 
28336       orc_program_compile (p);
28337       c = orc_program_take_code (p);
28338       orc_program_free (p);
28339     }
28340     p_inited = TRUE;
28341     orc_once_mutex_unlock ();
28342   }
28343   ex->arrays[ORC_VAR_A2] = c;
28344   ex->program = 0;
28345 
28346   ex->n = n;
28347   ex->arrays[ORC_VAR_D1] = d1;
28348   ex->arrays[ORC_VAR_S1] = (void *) s1;
28349   ex->params[ORC_VAR_P1] = p1;
28350 
28351   func = c->exec;
28352   func (ex);
28353 }
28354 #endif
28355 
28356 
28357 /* video_orc_resample_v_multaps_u16 */
28358 #ifdef DISABLE_ORC
28359 void
video_orc_resample_v_multaps_u16(gint32 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,int p1,int n)28360 video_orc_resample_v_multaps_u16 (gint32 * ORC_RESTRICT d1,
28361     const guint16 * ORC_RESTRICT s1, int p1, int n)
28362 {
28363   int i;
28364   orc_union32 *ORC_RESTRICT ptr0;
28365   const orc_union16 *ORC_RESTRICT ptr4;
28366   orc_union16 var33;
28367   orc_union32 var34;
28368   orc_union32 var35;
28369   orc_union32 var36;
28370 
28371   ptr0 = (orc_union32 *) d1;
28372   ptr4 = (orc_union16 *) s1;
28373 
28374   /* 2: loadpl */
28375   var34.i = p1;
28376 
28377   for (i = 0; i < n; i++) {
28378     /* 0: loadw */
28379     var33 = ptr4[i];
28380     /* 1: convuwl */
28381     var36.i = (orc_uint16) var33.i;
28382     /* 3: mulll */
28383     var35.i = (((orc_uint32) var36.i) * ((orc_uint32) var34.i)) & 0xffffffff;
28384     /* 4: storel */
28385     ptr0[i] = var35;
28386   }
28387 
28388 }
28389 
28390 #else
28391 static void
_backup_video_orc_resample_v_multaps_u16(OrcExecutor * ORC_RESTRICT ex)28392 _backup_video_orc_resample_v_multaps_u16 (OrcExecutor * ORC_RESTRICT ex)
28393 {
28394   int i;
28395   int n = ex->n;
28396   orc_union32 *ORC_RESTRICT ptr0;
28397   const orc_union16 *ORC_RESTRICT ptr4;
28398   orc_union16 var33;
28399   orc_union32 var34;
28400   orc_union32 var35;
28401   orc_union32 var36;
28402 
28403   ptr0 = (orc_union32 *) ex->arrays[0];
28404   ptr4 = (orc_union16 *) ex->arrays[4];
28405 
28406   /* 2: loadpl */
28407   var34.i = ex->params[24];
28408 
28409   for (i = 0; i < n; i++) {
28410     /* 0: loadw */
28411     var33 = ptr4[i];
28412     /* 1: convuwl */
28413     var36.i = (orc_uint16) var33.i;
28414     /* 3: mulll */
28415     var35.i = (((orc_uint32) var36.i) * ((orc_uint32) var34.i)) & 0xffffffff;
28416     /* 4: storel */
28417     ptr0[i] = var35;
28418   }
28419 
28420 }
28421 
28422 void
video_orc_resample_v_multaps_u16(gint32 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,int p1,int n)28423 video_orc_resample_v_multaps_u16 (gint32 * ORC_RESTRICT d1,
28424     const guint16 * ORC_RESTRICT s1, int p1, int n)
28425 {
28426   OrcExecutor _ex, *ex = &_ex;
28427   static volatile int p_inited = 0;
28428   static OrcCode *c = 0;
28429   void (*func) (OrcExecutor *);
28430 
28431   if (!p_inited) {
28432     orc_once_mutex_lock ();
28433     if (!p_inited) {
28434       OrcProgram *p;
28435 
28436 #if 1
28437       static const orc_uint8 bc[] = {
28438         1, 9, 32, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
28439         97, 109, 112, 108, 101, 95, 118, 95, 109, 117, 108, 116, 97, 112, 115,
28440             95,
28441         117, 49, 54, 11, 4, 4, 12, 2, 2, 16, 2, 20, 4, 154, 32, 4,
28442         120, 0, 32, 24, 2, 0,
28443       };
28444       p = orc_program_new_from_static_bytecode (bc);
28445       orc_program_set_backup_function (p,
28446           _backup_video_orc_resample_v_multaps_u16);
28447 #else
28448       p = orc_program_new ();
28449       orc_program_set_name (p, "video_orc_resample_v_multaps_u16");
28450       orc_program_set_backup_function (p,
28451           _backup_video_orc_resample_v_multaps_u16);
28452       orc_program_add_destination (p, 4, "d1");
28453       orc_program_add_source (p, 2, "s1");
28454       orc_program_add_parameter (p, 2, "p1");
28455       orc_program_add_temporary (p, 4, "t1");
28456 
28457       orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
28458           ORC_VAR_D1);
28459       orc_program_append_2 (p, "mulll", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_P1,
28460           ORC_VAR_D1);
28461 #endif
28462 
28463       orc_program_compile (p);
28464       c = orc_program_take_code (p);
28465       orc_program_free (p);
28466     }
28467     p_inited = TRUE;
28468     orc_once_mutex_unlock ();
28469   }
28470   ex->arrays[ORC_VAR_A2] = c;
28471   ex->program = 0;
28472 
28473   ex->n = n;
28474   ex->arrays[ORC_VAR_D1] = d1;
28475   ex->arrays[ORC_VAR_S1] = (void *) s1;
28476   ex->params[ORC_VAR_P1] = p1;
28477 
28478   func = c->exec;
28479   func (ex);
28480 }
28481 #endif
28482 
28483 
28484 /* video_orc_resample_v_muladdtaps_u16 */
28485 #ifdef DISABLE_ORC
28486 void
video_orc_resample_v_muladdtaps_u16(gint32 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,int p1,int n)28487 video_orc_resample_v_muladdtaps_u16 (gint32 * ORC_RESTRICT d1,
28488     const guint16 * ORC_RESTRICT s1, int p1, int n)
28489 {
28490   int i;
28491   orc_union32 *ORC_RESTRICT ptr0;
28492   const orc_union16 *ORC_RESTRICT ptr4;
28493   orc_union16 var34;
28494   orc_union16 var35;
28495   orc_union32 var36;
28496   orc_union32 var37;
28497   orc_union32 var38;
28498   orc_union32 var39;
28499   orc_union32 var40;
28500 
28501   ptr0 = (orc_union32 *) d1;
28502   ptr4 = (orc_union16 *) s1;
28503 
28504   /* 2: loadpw */
28505   var35.i = p1;
28506 
28507   for (i = 0; i < n; i++) {
28508     /* 0: loadw */
28509     var34 = ptr4[i];
28510     /* 1: convuwl */
28511     var38.i = (orc_uint16) var34.i;
28512     /* 3: convswl */
28513     var39.i = var35.i;
28514     /* 4: mulll */
28515     var40.i = (((orc_uint32) var38.i) * ((orc_uint32) var39.i)) & 0xffffffff;
28516     /* 5: loadl */
28517     var36 = ptr0[i];
28518     /* 6: addl */
28519     var37.i = ((orc_uint32) var36.i) + ((orc_uint32) var40.i);
28520     /* 7: storel */
28521     ptr0[i] = var37;
28522   }
28523 
28524 }
28525 
28526 #else
28527 static void
_backup_video_orc_resample_v_muladdtaps_u16(OrcExecutor * ORC_RESTRICT ex)28528 _backup_video_orc_resample_v_muladdtaps_u16 (OrcExecutor * ORC_RESTRICT ex)
28529 {
28530   int i;
28531   int n = ex->n;
28532   orc_union32 *ORC_RESTRICT ptr0;
28533   const orc_union16 *ORC_RESTRICT ptr4;
28534   orc_union16 var34;
28535   orc_union16 var35;
28536   orc_union32 var36;
28537   orc_union32 var37;
28538   orc_union32 var38;
28539   orc_union32 var39;
28540   orc_union32 var40;
28541 
28542   ptr0 = (orc_union32 *) ex->arrays[0];
28543   ptr4 = (orc_union16 *) ex->arrays[4];
28544 
28545   /* 2: loadpw */
28546   var35.i = ex->params[24];
28547 
28548   for (i = 0; i < n; i++) {
28549     /* 0: loadw */
28550     var34 = ptr4[i];
28551     /* 1: convuwl */
28552     var38.i = (orc_uint16) var34.i;
28553     /* 3: convswl */
28554     var39.i = var35.i;
28555     /* 4: mulll */
28556     var40.i = (((orc_uint32) var38.i) * ((orc_uint32) var39.i)) & 0xffffffff;
28557     /* 5: loadl */
28558     var36 = ptr0[i];
28559     /* 6: addl */
28560     var37.i = ((orc_uint32) var36.i) + ((orc_uint32) var40.i);
28561     /* 7: storel */
28562     ptr0[i] = var37;
28563   }
28564 
28565 }
28566 
28567 void
video_orc_resample_v_muladdtaps_u16(gint32 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,int p1,int n)28568 video_orc_resample_v_muladdtaps_u16 (gint32 * ORC_RESTRICT d1,
28569     const guint16 * ORC_RESTRICT s1, int p1, int n)
28570 {
28571   OrcExecutor _ex, *ex = &_ex;
28572   static volatile int p_inited = 0;
28573   static OrcCode *c = 0;
28574   void (*func) (OrcExecutor *);
28575 
28576   if (!p_inited) {
28577     orc_once_mutex_lock ();
28578     if (!p_inited) {
28579       OrcProgram *p;
28580 
28581 #if 1
28582       static const orc_uint8 bc[] = {
28583         1, 9, 35, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
28584         97, 109, 112, 108, 101, 95, 118, 95, 109, 117, 108, 97, 100, 100, 116,
28585             97,
28586         112, 115, 95, 117, 49, 54, 11, 4, 4, 12, 2, 2, 16, 2, 20, 4,
28587         20, 4, 154, 32, 4, 153, 33, 24, 120, 32, 32, 33, 103, 0, 0, 32,
28588         2, 0,
28589       };
28590       p = orc_program_new_from_static_bytecode (bc);
28591       orc_program_set_backup_function (p,
28592           _backup_video_orc_resample_v_muladdtaps_u16);
28593 #else
28594       p = orc_program_new ();
28595       orc_program_set_name (p, "video_orc_resample_v_muladdtaps_u16");
28596       orc_program_set_backup_function (p,
28597           _backup_video_orc_resample_v_muladdtaps_u16);
28598       orc_program_add_destination (p, 4, "d1");
28599       orc_program_add_source (p, 2, "s1");
28600       orc_program_add_parameter (p, 2, "p1");
28601       orc_program_add_temporary (p, 4, "t1");
28602       orc_program_add_temporary (p, 4, "t2");
28603 
28604       orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
28605           ORC_VAR_D1);
28606       orc_program_append_2 (p, "convswl", 0, ORC_VAR_T2, ORC_VAR_P1, ORC_VAR_D1,
28607           ORC_VAR_D1);
28608       orc_program_append_2 (p, "mulll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
28609           ORC_VAR_D1);
28610       orc_program_append_2 (p, "addl", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1,
28611           ORC_VAR_D1);
28612 #endif
28613 
28614       orc_program_compile (p);
28615       c = orc_program_take_code (p);
28616       orc_program_free (p);
28617     }
28618     p_inited = TRUE;
28619     orc_once_mutex_unlock ();
28620   }
28621   ex->arrays[ORC_VAR_A2] = c;
28622   ex->program = 0;
28623 
28624   ex->n = n;
28625   ex->arrays[ORC_VAR_D1] = d1;
28626   ex->arrays[ORC_VAR_S1] = (void *) s1;
28627   ex->params[ORC_VAR_P1] = p1;
28628 
28629   func = c->exec;
28630   func (ex);
28631 }
28632 #endif
28633 
28634 
28635 /* video_orc_resample_v_multaps_u8_lq */
28636 #ifdef DISABLE_ORC
28637 void
video_orc_resample_v_multaps_u8_lq(gint16 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int p1,int n)28638 video_orc_resample_v_multaps_u8_lq (gint16 * ORC_RESTRICT d1,
28639     const guint8 * ORC_RESTRICT s1, int p1, int n)
28640 {
28641   int i;
28642   orc_union16 *ORC_RESTRICT ptr0;
28643   const orc_int8 *ORC_RESTRICT ptr4;
28644   orc_int8 var33;
28645   orc_union16 var34;
28646   orc_union16 var35;
28647   orc_union16 var36;
28648 
28649   ptr0 = (orc_union16 *) d1;
28650   ptr4 = (orc_int8 *) s1;
28651 
28652   /* 2: loadpw */
28653   var34.i = p1;
28654 
28655   for (i = 0; i < n; i++) {
28656     /* 0: loadb */
28657     var33 = ptr4[i];
28658     /* 1: convubw */
28659     var36.i = (orc_uint8) var33;
28660     /* 3: mullw */
28661     var35.i = (var36.i * var34.i) & 0xffff;
28662     /* 4: storew */
28663     ptr0[i] = var35;
28664   }
28665 
28666 }
28667 
28668 #else
28669 static void
_backup_video_orc_resample_v_multaps_u8_lq(OrcExecutor * ORC_RESTRICT ex)28670 _backup_video_orc_resample_v_multaps_u8_lq (OrcExecutor * ORC_RESTRICT ex)
28671 {
28672   int i;
28673   int n = ex->n;
28674   orc_union16 *ORC_RESTRICT ptr0;
28675   const orc_int8 *ORC_RESTRICT ptr4;
28676   orc_int8 var33;
28677   orc_union16 var34;
28678   orc_union16 var35;
28679   orc_union16 var36;
28680 
28681   ptr0 = (orc_union16 *) ex->arrays[0];
28682   ptr4 = (orc_int8 *) ex->arrays[4];
28683 
28684   /* 2: loadpw */
28685   var34.i = ex->params[24];
28686 
28687   for (i = 0; i < n; i++) {
28688     /* 0: loadb */
28689     var33 = ptr4[i];
28690     /* 1: convubw */
28691     var36.i = (orc_uint8) var33;
28692     /* 3: mullw */
28693     var35.i = (var36.i * var34.i) & 0xffff;
28694     /* 4: storew */
28695     ptr0[i] = var35;
28696   }
28697 
28698 }
28699 
28700 void
video_orc_resample_v_multaps_u8_lq(gint16 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int p1,int n)28701 video_orc_resample_v_multaps_u8_lq (gint16 * ORC_RESTRICT d1,
28702     const guint8 * ORC_RESTRICT s1, int p1, int n)
28703 {
28704   OrcExecutor _ex, *ex = &_ex;
28705   static volatile int p_inited = 0;
28706   static OrcCode *c = 0;
28707   void (*func) (OrcExecutor *);
28708 
28709   if (!p_inited) {
28710     orc_once_mutex_lock ();
28711     if (!p_inited) {
28712       OrcProgram *p;
28713 
28714 #if 1
28715       static const orc_uint8 bc[] = {
28716         1, 9, 34, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
28717         97, 109, 112, 108, 101, 95, 118, 95, 109, 117, 108, 116, 97, 112, 115,
28718             95,
28719         117, 56, 95, 108, 113, 11, 2, 2, 12, 1, 1, 16, 2, 20, 2, 150,
28720         32, 4, 89, 0, 32, 24, 2, 0,
28721       };
28722       p = orc_program_new_from_static_bytecode (bc);
28723       orc_program_set_backup_function (p,
28724           _backup_video_orc_resample_v_multaps_u8_lq);
28725 #else
28726       p = orc_program_new ();
28727       orc_program_set_name (p, "video_orc_resample_v_multaps_u8_lq");
28728       orc_program_set_backup_function (p,
28729           _backup_video_orc_resample_v_multaps_u8_lq);
28730       orc_program_add_destination (p, 2, "d1");
28731       orc_program_add_source (p, 1, "s1");
28732       orc_program_add_parameter (p, 2, "p1");
28733       orc_program_add_temporary (p, 2, "t1");
28734 
28735       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
28736           ORC_VAR_D1);
28737       orc_program_append_2 (p, "mullw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_P1,
28738           ORC_VAR_D1);
28739 #endif
28740 
28741       orc_program_compile (p);
28742       c = orc_program_take_code (p);
28743       orc_program_free (p);
28744     }
28745     p_inited = TRUE;
28746     orc_once_mutex_unlock ();
28747   }
28748   ex->arrays[ORC_VAR_A2] = c;
28749   ex->program = 0;
28750 
28751   ex->n = n;
28752   ex->arrays[ORC_VAR_D1] = d1;
28753   ex->arrays[ORC_VAR_S1] = (void *) s1;
28754   ex->params[ORC_VAR_P1] = p1;
28755 
28756   func = c->exec;
28757   func (ex);
28758 }
28759 #endif
28760 
28761 
28762 /* video_orc_resample_v_multaps4_u8_lq */
28763 #ifdef DISABLE_ORC
28764 void
video_orc_resample_v_multaps4_u8_lq(gint16 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,const guint8 * ORC_RESTRICT s3,const guint8 * ORC_RESTRICT s4,int p1,int p2,int p3,int p4,int n)28765 video_orc_resample_v_multaps4_u8_lq (gint16 * ORC_RESTRICT d1,
28766     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
28767     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int p1,
28768     int p2, int p3, int p4, int n)
28769 {
28770   int i;
28771   orc_union16 *ORC_RESTRICT ptr0;
28772   const orc_int8 *ORC_RESTRICT ptr4;
28773   const orc_int8 *ORC_RESTRICT ptr5;
28774   const orc_int8 *ORC_RESTRICT ptr6;
28775   const orc_int8 *ORC_RESTRICT ptr7;
28776   orc_int8 var34;
28777   orc_union16 var35;
28778   orc_int8 var36;
28779   orc_union16 var37;
28780   orc_int8 var38;
28781   orc_union16 var39;
28782   orc_int8 var40;
28783   orc_union16 var41;
28784   orc_union16 var42;
28785   orc_union16 var43;
28786   orc_union16 var44;
28787   orc_union16 var45;
28788   orc_union16 var46;
28789   orc_union16 var47;
28790   orc_union16 var48;
28791   orc_union16 var49;
28792   orc_union16 var50;
28793   orc_union16 var51;
28794   orc_union16 var52;
28795 
28796   ptr0 = (orc_union16 *) d1;
28797   ptr4 = (orc_int8 *) s1;
28798   ptr5 = (orc_int8 *) s2;
28799   ptr6 = (orc_int8 *) s3;
28800   ptr7 = (orc_int8 *) s4;
28801 
28802   /* 2: loadpw */
28803   var35.i = p1;
28804   /* 6: loadpw */
28805   var37.i = p2;
28806   /* 11: loadpw */
28807   var39.i = p3;
28808   /* 16: loadpw */
28809   var41.i = p4;
28810 
28811   for (i = 0; i < n; i++) {
28812     /* 0: loadb */
28813     var34 = ptr4[i];
28814     /* 1: convubw */
28815     var43.i = (orc_uint8) var34;
28816     /* 3: mullw */
28817     var44.i = (var43.i * var35.i) & 0xffff;
28818     /* 4: loadb */
28819     var36 = ptr5[i];
28820     /* 5: convubw */
28821     var45.i = (orc_uint8) var36;
28822     /* 7: mullw */
28823     var46.i = (var45.i * var37.i) & 0xffff;
28824     /* 8: addw */
28825     var47.i = var44.i + var46.i;
28826     /* 9: loadb */
28827     var38 = ptr6[i];
28828     /* 10: convubw */
28829     var48.i = (orc_uint8) var38;
28830     /* 12: mullw */
28831     var49.i = (var48.i * var39.i) & 0xffff;
28832     /* 13: addw */
28833     var50.i = var47.i + var49.i;
28834     /* 14: loadb */
28835     var40 = ptr7[i];
28836     /* 15: convubw */
28837     var51.i = (orc_uint8) var40;
28838     /* 17: mullw */
28839     var52.i = (var51.i * var41.i) & 0xffff;
28840     /* 18: addw */
28841     var42.i = var50.i + var52.i;
28842     /* 19: storew */
28843     ptr0[i] = var42;
28844   }
28845 
28846 }
28847 
28848 #else
28849 static void
_backup_video_orc_resample_v_multaps4_u8_lq(OrcExecutor * ORC_RESTRICT ex)28850 _backup_video_orc_resample_v_multaps4_u8_lq (OrcExecutor * ORC_RESTRICT ex)
28851 {
28852   int i;
28853   int n = ex->n;
28854   orc_union16 *ORC_RESTRICT ptr0;
28855   const orc_int8 *ORC_RESTRICT ptr4;
28856   const orc_int8 *ORC_RESTRICT ptr5;
28857   const orc_int8 *ORC_RESTRICT ptr6;
28858   const orc_int8 *ORC_RESTRICT ptr7;
28859   orc_int8 var34;
28860   orc_union16 var35;
28861   orc_int8 var36;
28862   orc_union16 var37;
28863   orc_int8 var38;
28864   orc_union16 var39;
28865   orc_int8 var40;
28866   orc_union16 var41;
28867   orc_union16 var42;
28868   orc_union16 var43;
28869   orc_union16 var44;
28870   orc_union16 var45;
28871   orc_union16 var46;
28872   orc_union16 var47;
28873   orc_union16 var48;
28874   orc_union16 var49;
28875   orc_union16 var50;
28876   orc_union16 var51;
28877   orc_union16 var52;
28878 
28879   ptr0 = (orc_union16 *) ex->arrays[0];
28880   ptr4 = (orc_int8 *) ex->arrays[4];
28881   ptr5 = (orc_int8 *) ex->arrays[5];
28882   ptr6 = (orc_int8 *) ex->arrays[6];
28883   ptr7 = (orc_int8 *) ex->arrays[7];
28884 
28885   /* 2: loadpw */
28886   var35.i = ex->params[24];
28887   /* 6: loadpw */
28888   var37.i = ex->params[25];
28889   /* 11: loadpw */
28890   var39.i = ex->params[26];
28891   /* 16: loadpw */
28892   var41.i = ex->params[27];
28893 
28894   for (i = 0; i < n; i++) {
28895     /* 0: loadb */
28896     var34 = ptr4[i];
28897     /* 1: convubw */
28898     var43.i = (orc_uint8) var34;
28899     /* 3: mullw */
28900     var44.i = (var43.i * var35.i) & 0xffff;
28901     /* 4: loadb */
28902     var36 = ptr5[i];
28903     /* 5: convubw */
28904     var45.i = (orc_uint8) var36;
28905     /* 7: mullw */
28906     var46.i = (var45.i * var37.i) & 0xffff;
28907     /* 8: addw */
28908     var47.i = var44.i + var46.i;
28909     /* 9: loadb */
28910     var38 = ptr6[i];
28911     /* 10: convubw */
28912     var48.i = (orc_uint8) var38;
28913     /* 12: mullw */
28914     var49.i = (var48.i * var39.i) & 0xffff;
28915     /* 13: addw */
28916     var50.i = var47.i + var49.i;
28917     /* 14: loadb */
28918     var40 = ptr7[i];
28919     /* 15: convubw */
28920     var51.i = (orc_uint8) var40;
28921     /* 17: mullw */
28922     var52.i = (var51.i * var41.i) & 0xffff;
28923     /* 18: addw */
28924     var42.i = var50.i + var52.i;
28925     /* 19: storew */
28926     ptr0[i] = var42;
28927   }
28928 
28929 }
28930 
28931 void
video_orc_resample_v_multaps4_u8_lq(gint16 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,const guint8 * ORC_RESTRICT s3,const guint8 * ORC_RESTRICT s4,int p1,int p2,int p3,int p4,int n)28932 video_orc_resample_v_multaps4_u8_lq (gint16 * ORC_RESTRICT d1,
28933     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
28934     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int p1,
28935     int p2, int p3, int p4, int n)
28936 {
28937   OrcExecutor _ex, *ex = &_ex;
28938   static volatile int p_inited = 0;
28939   static OrcCode *c = 0;
28940   void (*func) (OrcExecutor *);
28941 
28942   if (!p_inited) {
28943     orc_once_mutex_lock ();
28944     if (!p_inited) {
28945       OrcProgram *p;
28946 
28947 #if 1
28948       static const orc_uint8 bc[] = {
28949         1, 9, 35, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
28950         97, 109, 112, 108, 101, 95, 118, 95, 109, 117, 108, 116, 97, 112, 115,
28951             52,
28952         95, 117, 56, 95, 108, 113, 11, 2, 2, 12, 1, 1, 12, 1, 1, 12,
28953         1, 1, 12, 1, 1, 16, 2, 16, 2, 16, 2, 16, 2, 20, 2, 20,
28954         2, 150, 32, 4, 89, 32, 32, 24, 150, 33, 5, 89, 33, 33, 25, 70,
28955         32, 32, 33, 150, 33, 6, 89, 33, 33, 26, 70, 32, 32, 33, 150, 33,
28956         7, 89, 33, 33, 27, 70, 0, 32, 33, 2, 0,
28957       };
28958       p = orc_program_new_from_static_bytecode (bc);
28959       orc_program_set_backup_function (p,
28960           _backup_video_orc_resample_v_multaps4_u8_lq);
28961 #else
28962       p = orc_program_new ();
28963       orc_program_set_name (p, "video_orc_resample_v_multaps4_u8_lq");
28964       orc_program_set_backup_function (p,
28965           _backup_video_orc_resample_v_multaps4_u8_lq);
28966       orc_program_add_destination (p, 2, "d1");
28967       orc_program_add_source (p, 1, "s1");
28968       orc_program_add_source (p, 1, "s2");
28969       orc_program_add_source (p, 1, "s3");
28970       orc_program_add_source (p, 1, "s4");
28971       orc_program_add_parameter (p, 2, "p1");
28972       orc_program_add_parameter (p, 2, "p2");
28973       orc_program_add_parameter (p, 2, "p3");
28974       orc_program_add_parameter (p, 2, "p4");
28975       orc_program_add_temporary (p, 2, "t1");
28976       orc_program_add_temporary (p, 2, "t2");
28977 
28978       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
28979           ORC_VAR_D1);
28980       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1,
28981           ORC_VAR_D1);
28982       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
28983           ORC_VAR_D1);
28984       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2,
28985           ORC_VAR_D1);
28986       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
28987           ORC_VAR_D1);
28988       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1,
28989           ORC_VAR_D1);
28990       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P3,
28991           ORC_VAR_D1);
28992       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
28993           ORC_VAR_D1);
28994       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S4, ORC_VAR_D1,
28995           ORC_VAR_D1);
28996       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P4,
28997           ORC_VAR_D1);
28998       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
28999           ORC_VAR_D1);
29000 #endif
29001 
29002       orc_program_compile (p);
29003       c = orc_program_take_code (p);
29004       orc_program_free (p);
29005     }
29006     p_inited = TRUE;
29007     orc_once_mutex_unlock ();
29008   }
29009   ex->arrays[ORC_VAR_A2] = c;
29010   ex->program = 0;
29011 
29012   ex->n = n;
29013   ex->arrays[ORC_VAR_D1] = d1;
29014   ex->arrays[ORC_VAR_S1] = (void *) s1;
29015   ex->arrays[ORC_VAR_S2] = (void *) s2;
29016   ex->arrays[ORC_VAR_S3] = (void *) s3;
29017   ex->arrays[ORC_VAR_S4] = (void *) s4;
29018   ex->params[ORC_VAR_P1] = p1;
29019   ex->params[ORC_VAR_P2] = p2;
29020   ex->params[ORC_VAR_P3] = p3;
29021   ex->params[ORC_VAR_P4] = p4;
29022 
29023   func = c->exec;
29024   func (ex);
29025 }
29026 #endif
29027 
29028 
29029 /* video_orc_resample_v_muladdtaps_u8_lq */
29030 #ifdef DISABLE_ORC
29031 void
video_orc_resample_v_muladdtaps_u8_lq(gint16 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int p1,int n)29032 video_orc_resample_v_muladdtaps_u8_lq (gint16 * ORC_RESTRICT d1,
29033     const guint8 * ORC_RESTRICT s1, int p1, int n)
29034 {
29035   int i;
29036   orc_union16 *ORC_RESTRICT ptr0;
29037   const orc_int8 *ORC_RESTRICT ptr4;
29038   orc_int8 var33;
29039   orc_union16 var34;
29040   orc_union16 var35;
29041   orc_union16 var36;
29042   orc_union16 var37;
29043   orc_union16 var38;
29044 
29045   ptr0 = (orc_union16 *) d1;
29046   ptr4 = (orc_int8 *) s1;
29047 
29048   /* 2: loadpw */
29049   var34.i = p1;
29050 
29051   for (i = 0; i < n; i++) {
29052     /* 0: loadb */
29053     var33 = ptr4[i];
29054     /* 1: convubw */
29055     var37.i = (orc_uint8) var33;
29056     /* 3: mullw */
29057     var38.i = (var37.i * var34.i) & 0xffff;
29058     /* 4: loadw */
29059     var35 = ptr0[i];
29060     /* 5: addw */
29061     var36.i = var35.i + var38.i;
29062     /* 6: storew */
29063     ptr0[i] = var36;
29064   }
29065 
29066 }
29067 
29068 #else
29069 static void
_backup_video_orc_resample_v_muladdtaps_u8_lq(OrcExecutor * ORC_RESTRICT ex)29070 _backup_video_orc_resample_v_muladdtaps_u8_lq (OrcExecutor * ORC_RESTRICT ex)
29071 {
29072   int i;
29073   int n = ex->n;
29074   orc_union16 *ORC_RESTRICT ptr0;
29075   const orc_int8 *ORC_RESTRICT ptr4;
29076   orc_int8 var33;
29077   orc_union16 var34;
29078   orc_union16 var35;
29079   orc_union16 var36;
29080   orc_union16 var37;
29081   orc_union16 var38;
29082 
29083   ptr0 = (orc_union16 *) ex->arrays[0];
29084   ptr4 = (orc_int8 *) ex->arrays[4];
29085 
29086   /* 2: loadpw */
29087   var34.i = ex->params[24];
29088 
29089   for (i = 0; i < n; i++) {
29090     /* 0: loadb */
29091     var33 = ptr4[i];
29092     /* 1: convubw */
29093     var37.i = (orc_uint8) var33;
29094     /* 3: mullw */
29095     var38.i = (var37.i * var34.i) & 0xffff;
29096     /* 4: loadw */
29097     var35 = ptr0[i];
29098     /* 5: addw */
29099     var36.i = var35.i + var38.i;
29100     /* 6: storew */
29101     ptr0[i] = var36;
29102   }
29103 
29104 }
29105 
29106 void
video_orc_resample_v_muladdtaps_u8_lq(gint16 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int p1,int n)29107 video_orc_resample_v_muladdtaps_u8_lq (gint16 * ORC_RESTRICT d1,
29108     const guint8 * ORC_RESTRICT s1, int p1, int n)
29109 {
29110   OrcExecutor _ex, *ex = &_ex;
29111   static volatile int p_inited = 0;
29112   static OrcCode *c = 0;
29113   void (*func) (OrcExecutor *);
29114 
29115   if (!p_inited) {
29116     orc_once_mutex_lock ();
29117     if (!p_inited) {
29118       OrcProgram *p;
29119 
29120 #if 1
29121       static const orc_uint8 bc[] = {
29122         1, 9, 37, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
29123         97, 109, 112, 108, 101, 95, 118, 95, 109, 117, 108, 97, 100, 100, 116,
29124             97,
29125         112, 115, 95, 117, 56, 95, 108, 113, 11, 2, 2, 12, 1, 1, 16, 2,
29126         20, 2, 150, 32, 4, 89, 32, 32, 24, 70, 0, 0, 32, 2, 0,
29127       };
29128       p = orc_program_new_from_static_bytecode (bc);
29129       orc_program_set_backup_function (p,
29130           _backup_video_orc_resample_v_muladdtaps_u8_lq);
29131 #else
29132       p = orc_program_new ();
29133       orc_program_set_name (p, "video_orc_resample_v_muladdtaps_u8_lq");
29134       orc_program_set_backup_function (p,
29135           _backup_video_orc_resample_v_muladdtaps_u8_lq);
29136       orc_program_add_destination (p, 2, "d1");
29137       orc_program_add_source (p, 1, "s1");
29138       orc_program_add_parameter (p, 2, "p1");
29139       orc_program_add_temporary (p, 2, "t1");
29140 
29141       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
29142           ORC_VAR_D1);
29143       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1,
29144           ORC_VAR_D1);
29145       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1,
29146           ORC_VAR_D1);
29147 #endif
29148 
29149       orc_program_compile (p);
29150       c = orc_program_take_code (p);
29151       orc_program_free (p);
29152     }
29153     p_inited = TRUE;
29154     orc_once_mutex_unlock ();
29155   }
29156   ex->arrays[ORC_VAR_A2] = c;
29157   ex->program = 0;
29158 
29159   ex->n = n;
29160   ex->arrays[ORC_VAR_D1] = d1;
29161   ex->arrays[ORC_VAR_S1] = (void *) s1;
29162   ex->params[ORC_VAR_P1] = p1;
29163 
29164   func = c->exec;
29165   func (ex);
29166 }
29167 #endif
29168 
29169 
29170 /* video_orc_resample_v_muladdtaps4_u8_lq */
29171 #ifdef DISABLE_ORC
29172 void
video_orc_resample_v_muladdtaps4_u8_lq(gint16 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,const guint8 * ORC_RESTRICT s3,const guint8 * ORC_RESTRICT s4,int p1,int p2,int p3,int p4,int n)29173 video_orc_resample_v_muladdtaps4_u8_lq (gint16 * ORC_RESTRICT d1,
29174     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
29175     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int p1,
29176     int p2, int p3, int p4, int n)
29177 {
29178   int i;
29179   orc_union16 *ORC_RESTRICT ptr0;
29180   const orc_int8 *ORC_RESTRICT ptr4;
29181   const orc_int8 *ORC_RESTRICT ptr5;
29182   const orc_int8 *ORC_RESTRICT ptr6;
29183   const orc_int8 *ORC_RESTRICT ptr7;
29184   orc_int8 var34;
29185   orc_union16 var35;
29186   orc_int8 var36;
29187   orc_union16 var37;
29188   orc_int8 var38;
29189   orc_union16 var39;
29190   orc_int8 var40;
29191   orc_union16 var41;
29192   orc_union16 var42;
29193   orc_union16 var43;
29194   orc_union16 var44;
29195   orc_union16 var45;
29196   orc_union16 var46;
29197   orc_union16 var47;
29198   orc_union16 var48;
29199   orc_union16 var49;
29200   orc_union16 var50;
29201   orc_union16 var51;
29202   orc_union16 var52;
29203   orc_union16 var53;
29204   orc_union16 var54;
29205 
29206   ptr0 = (orc_union16 *) d1;
29207   ptr4 = (orc_int8 *) s1;
29208   ptr5 = (orc_int8 *) s2;
29209   ptr6 = (orc_int8 *) s3;
29210   ptr7 = (orc_int8 *) s4;
29211 
29212   /* 2: loadpw */
29213   var35.i = p1;
29214   /* 6: loadpw */
29215   var37.i = p2;
29216   /* 11: loadpw */
29217   var39.i = p3;
29218   /* 16: loadpw */
29219   var41.i = p4;
29220 
29221   for (i = 0; i < n; i++) {
29222     /* 0: loadb */
29223     var34 = ptr4[i];
29224     /* 1: convubw */
29225     var44.i = (orc_uint8) var34;
29226     /* 3: mullw */
29227     var45.i = (var44.i * var35.i) & 0xffff;
29228     /* 4: loadb */
29229     var36 = ptr5[i];
29230     /* 5: convubw */
29231     var46.i = (orc_uint8) var36;
29232     /* 7: mullw */
29233     var47.i = (var46.i * var37.i) & 0xffff;
29234     /* 8: addw */
29235     var48.i = var45.i + var47.i;
29236     /* 9: loadb */
29237     var38 = ptr6[i];
29238     /* 10: convubw */
29239     var49.i = (orc_uint8) var38;
29240     /* 12: mullw */
29241     var50.i = (var49.i * var39.i) & 0xffff;
29242     /* 13: addw */
29243     var51.i = var48.i + var50.i;
29244     /* 14: loadb */
29245     var40 = ptr7[i];
29246     /* 15: convubw */
29247     var52.i = (orc_uint8) var40;
29248     /* 17: mullw */
29249     var53.i = (var52.i * var41.i) & 0xffff;
29250     /* 18: addw */
29251     var54.i = var51.i + var53.i;
29252     /* 19: loadw */
29253     var42 = ptr0[i];
29254     /* 20: addw */
29255     var43.i = var42.i + var54.i;
29256     /* 21: storew */
29257     ptr0[i] = var43;
29258   }
29259 
29260 }
29261 
29262 #else
29263 static void
_backup_video_orc_resample_v_muladdtaps4_u8_lq(OrcExecutor * ORC_RESTRICT ex)29264 _backup_video_orc_resample_v_muladdtaps4_u8_lq (OrcExecutor * ORC_RESTRICT ex)
29265 {
29266   int i;
29267   int n = ex->n;
29268   orc_union16 *ORC_RESTRICT ptr0;
29269   const orc_int8 *ORC_RESTRICT ptr4;
29270   const orc_int8 *ORC_RESTRICT ptr5;
29271   const orc_int8 *ORC_RESTRICT ptr6;
29272   const orc_int8 *ORC_RESTRICT ptr7;
29273   orc_int8 var34;
29274   orc_union16 var35;
29275   orc_int8 var36;
29276   orc_union16 var37;
29277   orc_int8 var38;
29278   orc_union16 var39;
29279   orc_int8 var40;
29280   orc_union16 var41;
29281   orc_union16 var42;
29282   orc_union16 var43;
29283   orc_union16 var44;
29284   orc_union16 var45;
29285   orc_union16 var46;
29286   orc_union16 var47;
29287   orc_union16 var48;
29288   orc_union16 var49;
29289   orc_union16 var50;
29290   orc_union16 var51;
29291   orc_union16 var52;
29292   orc_union16 var53;
29293   orc_union16 var54;
29294 
29295   ptr0 = (orc_union16 *) ex->arrays[0];
29296   ptr4 = (orc_int8 *) ex->arrays[4];
29297   ptr5 = (orc_int8 *) ex->arrays[5];
29298   ptr6 = (orc_int8 *) ex->arrays[6];
29299   ptr7 = (orc_int8 *) ex->arrays[7];
29300 
29301   /* 2: loadpw */
29302   var35.i = ex->params[24];
29303   /* 6: loadpw */
29304   var37.i = ex->params[25];
29305   /* 11: loadpw */
29306   var39.i = ex->params[26];
29307   /* 16: loadpw */
29308   var41.i = ex->params[27];
29309 
29310   for (i = 0; i < n; i++) {
29311     /* 0: loadb */
29312     var34 = ptr4[i];
29313     /* 1: convubw */
29314     var44.i = (orc_uint8) var34;
29315     /* 3: mullw */
29316     var45.i = (var44.i * var35.i) & 0xffff;
29317     /* 4: loadb */
29318     var36 = ptr5[i];
29319     /* 5: convubw */
29320     var46.i = (orc_uint8) var36;
29321     /* 7: mullw */
29322     var47.i = (var46.i * var37.i) & 0xffff;
29323     /* 8: addw */
29324     var48.i = var45.i + var47.i;
29325     /* 9: loadb */
29326     var38 = ptr6[i];
29327     /* 10: convubw */
29328     var49.i = (orc_uint8) var38;
29329     /* 12: mullw */
29330     var50.i = (var49.i * var39.i) & 0xffff;
29331     /* 13: addw */
29332     var51.i = var48.i + var50.i;
29333     /* 14: loadb */
29334     var40 = ptr7[i];
29335     /* 15: convubw */
29336     var52.i = (orc_uint8) var40;
29337     /* 17: mullw */
29338     var53.i = (var52.i * var41.i) & 0xffff;
29339     /* 18: addw */
29340     var54.i = var51.i + var53.i;
29341     /* 19: loadw */
29342     var42 = ptr0[i];
29343     /* 20: addw */
29344     var43.i = var42.i + var54.i;
29345     /* 21: storew */
29346     ptr0[i] = var43;
29347   }
29348 
29349 }
29350 
29351 void
video_orc_resample_v_muladdtaps4_u8_lq(gint16 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,const guint8 * ORC_RESTRICT s3,const guint8 * ORC_RESTRICT s4,int p1,int p2,int p3,int p4,int n)29352 video_orc_resample_v_muladdtaps4_u8_lq (gint16 * ORC_RESTRICT d1,
29353     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
29354     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int p1,
29355     int p2, int p3, int p4, int n)
29356 {
29357   OrcExecutor _ex, *ex = &_ex;
29358   static volatile int p_inited = 0;
29359   static OrcCode *c = 0;
29360   void (*func) (OrcExecutor *);
29361 
29362   if (!p_inited) {
29363     orc_once_mutex_lock ();
29364     if (!p_inited) {
29365       OrcProgram *p;
29366 
29367 #if 1
29368       static const orc_uint8 bc[] = {
29369         1, 9, 38, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
29370         97, 109, 112, 108, 101, 95, 118, 95, 109, 117, 108, 97, 100, 100, 116,
29371             97,
29372         112, 115, 52, 95, 117, 56, 95, 108, 113, 11, 2, 2, 12, 1, 1, 12,
29373         1, 1, 12, 1, 1, 12, 1, 1, 16, 2, 16, 2, 16, 2, 16, 2,
29374         20, 2, 20, 2, 150, 32, 4, 89, 32, 32, 24, 150, 33, 5, 89, 33,
29375         33, 25, 70, 32, 32, 33, 150, 33, 6, 89, 33, 33, 26, 70, 32, 32,
29376         33, 150, 33, 7, 89, 33, 33, 27, 70, 32, 32, 33, 70, 0, 0, 32,
29377         2, 0,
29378       };
29379       p = orc_program_new_from_static_bytecode (bc);
29380       orc_program_set_backup_function (p,
29381           _backup_video_orc_resample_v_muladdtaps4_u8_lq);
29382 #else
29383       p = orc_program_new ();
29384       orc_program_set_name (p, "video_orc_resample_v_muladdtaps4_u8_lq");
29385       orc_program_set_backup_function (p,
29386           _backup_video_orc_resample_v_muladdtaps4_u8_lq);
29387       orc_program_add_destination (p, 2, "d1");
29388       orc_program_add_source (p, 1, "s1");
29389       orc_program_add_source (p, 1, "s2");
29390       orc_program_add_source (p, 1, "s3");
29391       orc_program_add_source (p, 1, "s4");
29392       orc_program_add_parameter (p, 2, "p1");
29393       orc_program_add_parameter (p, 2, "p2");
29394       orc_program_add_parameter (p, 2, "p3");
29395       orc_program_add_parameter (p, 2, "p4");
29396       orc_program_add_temporary (p, 2, "t1");
29397       orc_program_add_temporary (p, 2, "t2");
29398 
29399       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
29400           ORC_VAR_D1);
29401       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1,
29402           ORC_VAR_D1);
29403       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
29404           ORC_VAR_D1);
29405       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2,
29406           ORC_VAR_D1);
29407       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
29408           ORC_VAR_D1);
29409       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1,
29410           ORC_VAR_D1);
29411       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P3,
29412           ORC_VAR_D1);
29413       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
29414           ORC_VAR_D1);
29415       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S4, ORC_VAR_D1,
29416           ORC_VAR_D1);
29417       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P4,
29418           ORC_VAR_D1);
29419       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
29420           ORC_VAR_D1);
29421       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1,
29422           ORC_VAR_D1);
29423 #endif
29424 
29425       orc_program_compile (p);
29426       c = orc_program_take_code (p);
29427       orc_program_free (p);
29428     }
29429     p_inited = TRUE;
29430     orc_once_mutex_unlock ();
29431   }
29432   ex->arrays[ORC_VAR_A2] = c;
29433   ex->program = 0;
29434 
29435   ex->n = n;
29436   ex->arrays[ORC_VAR_D1] = d1;
29437   ex->arrays[ORC_VAR_S1] = (void *) s1;
29438   ex->arrays[ORC_VAR_S2] = (void *) s2;
29439   ex->arrays[ORC_VAR_S3] = (void *) s3;
29440   ex->arrays[ORC_VAR_S4] = (void *) s4;
29441   ex->params[ORC_VAR_P1] = p1;
29442   ex->params[ORC_VAR_P2] = p2;
29443   ex->params[ORC_VAR_P3] = p3;
29444   ex->params[ORC_VAR_P4] = p4;
29445 
29446   func = c->exec;
29447   func (ex);
29448 }
29449 #endif
29450 
29451 
29452 /* video_orc_resample_v_muladdscaletaps4_u8_lq */
29453 #ifdef DISABLE_ORC
29454 void
video_orc_resample_v_muladdscaletaps4_u8_lq(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,const guint8 * ORC_RESTRICT s3,const guint8 * ORC_RESTRICT s4,const gint16 * ORC_RESTRICT s5,int p1,int p2,int p3,int p4,int n)29455 video_orc_resample_v_muladdscaletaps4_u8_lq (guint8 * ORC_RESTRICT d1,
29456     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
29457     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4,
29458     const gint16 * ORC_RESTRICT s5, int p1, int p2, int p3, int p4, int n)
29459 {
29460   int i;
29461   orc_int8 *ORC_RESTRICT ptr0;
29462   const orc_int8 *ORC_RESTRICT ptr4;
29463   const orc_int8 *ORC_RESTRICT ptr5;
29464   const orc_int8 *ORC_RESTRICT ptr6;
29465   const orc_int8 *ORC_RESTRICT ptr7;
29466   const orc_union16 *ORC_RESTRICT ptr8;
29467   orc_int8 var34;
29468   orc_union16 var35;
29469   orc_int8 var36;
29470   orc_union16 var37;
29471   orc_int8 var38;
29472   orc_union16 var39;
29473   orc_int8 var40;
29474   orc_union16 var41;
29475   orc_union16 var42;
29476 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
29477   volatile orc_union16 var43;
29478 #else
29479   orc_union16 var43;
29480 #endif
29481   orc_int8 var44;
29482   orc_union16 var45;
29483   orc_union16 var46;
29484   orc_union16 var47;
29485   orc_union16 var48;
29486   orc_union16 var49;
29487   orc_union16 var50;
29488   orc_union16 var51;
29489   orc_union16 var52;
29490   orc_union16 var53;
29491   orc_union16 var54;
29492   orc_union16 var55;
29493   orc_union16 var56;
29494   orc_union16 var57;
29495   orc_union16 var58;
29496 
29497   ptr0 = (orc_int8 *) d1;
29498   ptr4 = (orc_int8 *) s1;
29499   ptr5 = (orc_int8 *) s2;
29500   ptr6 = (orc_int8 *) s3;
29501   ptr7 = (orc_int8 *) s4;
29502   ptr8 = (orc_union16 *) s5;
29503 
29504   /* 2: loadpw */
29505   var35.i = p1;
29506   /* 6: loadpw */
29507   var37.i = p2;
29508   /* 11: loadpw */
29509   var39.i = p3;
29510   /* 16: loadpw */
29511   var41.i = p4;
29512   /* 21: loadpw */
29513   var43.i = 0x00000020;         /* 32 or 1.58101e-322f */
29514 
29515   for (i = 0; i < n; i++) {
29516     /* 0: loadb */
29517     var34 = ptr4[i];
29518     /* 1: convubw */
29519     var45.i = (orc_uint8) var34;
29520     /* 3: mullw */
29521     var46.i = (var45.i * var35.i) & 0xffff;
29522     /* 4: loadb */
29523     var36 = ptr5[i];
29524     /* 5: convubw */
29525     var47.i = (orc_uint8) var36;
29526     /* 7: mullw */
29527     var48.i = (var47.i * var37.i) & 0xffff;
29528     /* 8: addw */
29529     var49.i = var46.i + var48.i;
29530     /* 9: loadb */
29531     var38 = ptr6[i];
29532     /* 10: convubw */
29533     var50.i = (orc_uint8) var38;
29534     /* 12: mullw */
29535     var51.i = (var50.i * var39.i) & 0xffff;
29536     /* 13: addw */
29537     var52.i = var49.i + var51.i;
29538     /* 14: loadb */
29539     var40 = ptr7[i];
29540     /* 15: convubw */
29541     var53.i = (orc_uint8) var40;
29542     /* 17: mullw */
29543     var54.i = (var53.i * var41.i) & 0xffff;
29544     /* 18: addw */
29545     var55.i = var52.i + var54.i;
29546     /* 19: loadw */
29547     var42 = ptr8[i];
29548     /* 20: addw */
29549     var56.i = var55.i + var42.i;
29550     /* 22: addw */
29551     var57.i = var56.i + var43.i;
29552     /* 23: shrsw */
29553     var58.i = var57.i >> 6;
29554     /* 24: convsuswb */
29555     var44 = ORC_CLAMP_UB (var58.i);
29556     /* 25: storeb */
29557     ptr0[i] = var44;
29558   }
29559 
29560 }
29561 
29562 #else
29563 static void
_backup_video_orc_resample_v_muladdscaletaps4_u8_lq(OrcExecutor * ORC_RESTRICT ex)29564 _backup_video_orc_resample_v_muladdscaletaps4_u8_lq (OrcExecutor *
29565     ORC_RESTRICT ex)
29566 {
29567   int i;
29568   int n = ex->n;
29569   orc_int8 *ORC_RESTRICT ptr0;
29570   const orc_int8 *ORC_RESTRICT ptr4;
29571   const orc_int8 *ORC_RESTRICT ptr5;
29572   const orc_int8 *ORC_RESTRICT ptr6;
29573   const orc_int8 *ORC_RESTRICT ptr7;
29574   const orc_union16 *ORC_RESTRICT ptr8;
29575   orc_int8 var34;
29576   orc_union16 var35;
29577   orc_int8 var36;
29578   orc_union16 var37;
29579   orc_int8 var38;
29580   orc_union16 var39;
29581   orc_int8 var40;
29582   orc_union16 var41;
29583   orc_union16 var42;
29584 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
29585   volatile orc_union16 var43;
29586 #else
29587   orc_union16 var43;
29588 #endif
29589   orc_int8 var44;
29590   orc_union16 var45;
29591   orc_union16 var46;
29592   orc_union16 var47;
29593   orc_union16 var48;
29594   orc_union16 var49;
29595   orc_union16 var50;
29596   orc_union16 var51;
29597   orc_union16 var52;
29598   orc_union16 var53;
29599   orc_union16 var54;
29600   orc_union16 var55;
29601   orc_union16 var56;
29602   orc_union16 var57;
29603   orc_union16 var58;
29604 
29605   ptr0 = (orc_int8 *) ex->arrays[0];
29606   ptr4 = (orc_int8 *) ex->arrays[4];
29607   ptr5 = (orc_int8 *) ex->arrays[5];
29608   ptr6 = (orc_int8 *) ex->arrays[6];
29609   ptr7 = (orc_int8 *) ex->arrays[7];
29610   ptr8 = (orc_union16 *) ex->arrays[8];
29611 
29612   /* 2: loadpw */
29613   var35.i = ex->params[24];
29614   /* 6: loadpw */
29615   var37.i = ex->params[25];
29616   /* 11: loadpw */
29617   var39.i = ex->params[26];
29618   /* 16: loadpw */
29619   var41.i = ex->params[27];
29620   /* 21: loadpw */
29621   var43.i = 0x00000020;         /* 32 or 1.58101e-322f */
29622 
29623   for (i = 0; i < n; i++) {
29624     /* 0: loadb */
29625     var34 = ptr4[i];
29626     /* 1: convubw */
29627     var45.i = (orc_uint8) var34;
29628     /* 3: mullw */
29629     var46.i = (var45.i * var35.i) & 0xffff;
29630     /* 4: loadb */
29631     var36 = ptr5[i];
29632     /* 5: convubw */
29633     var47.i = (orc_uint8) var36;
29634     /* 7: mullw */
29635     var48.i = (var47.i * var37.i) & 0xffff;
29636     /* 8: addw */
29637     var49.i = var46.i + var48.i;
29638     /* 9: loadb */
29639     var38 = ptr6[i];
29640     /* 10: convubw */
29641     var50.i = (orc_uint8) var38;
29642     /* 12: mullw */
29643     var51.i = (var50.i * var39.i) & 0xffff;
29644     /* 13: addw */
29645     var52.i = var49.i + var51.i;
29646     /* 14: loadb */
29647     var40 = ptr7[i];
29648     /* 15: convubw */
29649     var53.i = (orc_uint8) var40;
29650     /* 17: mullw */
29651     var54.i = (var53.i * var41.i) & 0xffff;
29652     /* 18: addw */
29653     var55.i = var52.i + var54.i;
29654     /* 19: loadw */
29655     var42 = ptr8[i];
29656     /* 20: addw */
29657     var56.i = var55.i + var42.i;
29658     /* 22: addw */
29659     var57.i = var56.i + var43.i;
29660     /* 23: shrsw */
29661     var58.i = var57.i >> 6;
29662     /* 24: convsuswb */
29663     var44 = ORC_CLAMP_UB (var58.i);
29664     /* 25: storeb */
29665     ptr0[i] = var44;
29666   }
29667 
29668 }
29669 
29670 void
video_orc_resample_v_muladdscaletaps4_u8_lq(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,const guint8 * ORC_RESTRICT s3,const guint8 * ORC_RESTRICT s4,const gint16 * ORC_RESTRICT s5,int p1,int p2,int p3,int p4,int n)29671 video_orc_resample_v_muladdscaletaps4_u8_lq (guint8 * ORC_RESTRICT d1,
29672     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
29673     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4,
29674     const gint16 * ORC_RESTRICT s5, int p1, int p2, int p3, int p4, int n)
29675 {
29676   OrcExecutor _ex, *ex = &_ex;
29677   static volatile int p_inited = 0;
29678   static OrcCode *c = 0;
29679   void (*func) (OrcExecutor *);
29680 
29681   if (!p_inited) {
29682     orc_once_mutex_lock ();
29683     if (!p_inited) {
29684       OrcProgram *p;
29685 
29686 #if 1
29687       static const orc_uint8 bc[] = {
29688         1, 9, 43, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
29689         97, 109, 112, 108, 101, 95, 118, 95, 109, 117, 108, 97, 100, 100, 115,
29690             99,
29691         97, 108, 101, 116, 97, 112, 115, 52, 95, 117, 56, 95, 108, 113, 11, 1,
29692         1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 2, 2,
29693         14, 2, 32, 0, 0, 0, 14, 2, 6, 0, 0, 0, 16, 2, 16, 2,
29694         16, 2, 16, 2, 20, 2, 20, 2, 150, 32, 4, 89, 32, 32, 24, 150,
29695         33, 5, 89, 33, 33, 25, 70, 32, 32, 33, 150, 33, 6, 89, 33, 33,
29696         26, 70, 32, 32, 33, 150, 33, 7, 89, 33, 33, 27, 70, 32, 32, 33,
29697         70, 32, 32, 8, 70, 32, 32, 16, 94, 32, 32, 17, 160, 0, 32, 2,
29698         0,
29699       };
29700       p = orc_program_new_from_static_bytecode (bc);
29701       orc_program_set_backup_function (p,
29702           _backup_video_orc_resample_v_muladdscaletaps4_u8_lq);
29703 #else
29704       p = orc_program_new ();
29705       orc_program_set_name (p, "video_orc_resample_v_muladdscaletaps4_u8_lq");
29706       orc_program_set_backup_function (p,
29707           _backup_video_orc_resample_v_muladdscaletaps4_u8_lq);
29708       orc_program_add_destination (p, 1, "d1");
29709       orc_program_add_source (p, 1, "s1");
29710       orc_program_add_source (p, 1, "s2");
29711       orc_program_add_source (p, 1, "s3");
29712       orc_program_add_source (p, 1, "s4");
29713       orc_program_add_source (p, 2, "s5");
29714       orc_program_add_constant (p, 2, 0x00000020, "c1");
29715       orc_program_add_constant (p, 2, 0x00000006, "c2");
29716       orc_program_add_parameter (p, 2, "p1");
29717       orc_program_add_parameter (p, 2, "p2");
29718       orc_program_add_parameter (p, 2, "p3");
29719       orc_program_add_parameter (p, 2, "p4");
29720       orc_program_add_temporary (p, 2, "t1");
29721       orc_program_add_temporary (p, 2, "t2");
29722 
29723       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
29724           ORC_VAR_D1);
29725       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1,
29726           ORC_VAR_D1);
29727       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
29728           ORC_VAR_D1);
29729       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2,
29730           ORC_VAR_D1);
29731       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
29732           ORC_VAR_D1);
29733       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1,
29734           ORC_VAR_D1);
29735       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P3,
29736           ORC_VAR_D1);
29737       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
29738           ORC_VAR_D1);
29739       orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S4, ORC_VAR_D1,
29740           ORC_VAR_D1);
29741       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P4,
29742           ORC_VAR_D1);
29743       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
29744           ORC_VAR_D1);
29745       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S5,
29746           ORC_VAR_D1);
29747       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
29748           ORC_VAR_D1);
29749       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2,
29750           ORC_VAR_D1);
29751       orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1,
29752           ORC_VAR_D1, ORC_VAR_D1);
29753 #endif
29754 
29755       orc_program_compile (p);
29756       c = orc_program_take_code (p);
29757       orc_program_free (p);
29758     }
29759     p_inited = TRUE;
29760     orc_once_mutex_unlock ();
29761   }
29762   ex->arrays[ORC_VAR_A2] = c;
29763   ex->program = 0;
29764 
29765   ex->n = n;
29766   ex->arrays[ORC_VAR_D1] = d1;
29767   ex->arrays[ORC_VAR_S1] = (void *) s1;
29768   ex->arrays[ORC_VAR_S2] = (void *) s2;
29769   ex->arrays[ORC_VAR_S3] = (void *) s3;
29770   ex->arrays[ORC_VAR_S4] = (void *) s4;
29771   ex->arrays[ORC_VAR_S5] = (void *) s5;
29772   ex->params[ORC_VAR_P1] = p1;
29773   ex->params[ORC_VAR_P2] = p2;
29774   ex->params[ORC_VAR_P3] = p3;
29775   ex->params[ORC_VAR_P4] = p4;
29776 
29777   func = c->exec;
29778   func (ex);
29779 }
29780 #endif
29781 
29782 
29783 /* video_orc_chroma_down_h2_u8 */
29784 #ifdef DISABLE_ORC
29785 void
video_orc_chroma_down_h2_u8(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)29786 video_orc_chroma_down_h2_u8 (guint8 * ORC_RESTRICT d1,
29787     const guint8 * ORC_RESTRICT s1, int n)
29788 {
29789   int i;
29790   orc_union64 *ORC_RESTRICT ptr0;
29791   const orc_union64 *ORC_RESTRICT ptr4;
29792   orc_union64 var37;
29793   orc_union64 var38;
29794   orc_union32 var39;
29795   orc_union32 var40;
29796   orc_union16 var41;
29797   orc_union16 var42;
29798   orc_union16 var43;
29799   orc_union16 var44;
29800   orc_union32 var45;
29801 
29802   ptr0 = (orc_union64 *) d1;
29803   ptr4 = (orc_union64 *) s1;
29804 
29805 
29806   for (i = 0; i < n; i++) {
29807     /* 0: loadq */
29808     var37 = ptr4[i];
29809     /* 1: splitql */
29810     {
29811       orc_union64 _src;
29812       _src.i = var37.i;
29813       var39.i = _src.x2[1];
29814       var40.i = _src.x2[0];
29815     }
29816     /* 2: splitlw */
29817     {
29818       orc_union32 _src;
29819       _src.i = var40.i;
29820       var41.i = _src.x2[1];
29821       var42.i = _src.x2[0];
29822     }
29823     /* 3: select1lw */
29824     {
29825       orc_union32 _src;
29826       _src.i = var39.i;
29827       var43.i = _src.x2[1];
29828     }
29829     /* 4: avgub */
29830     var44.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1;
29831     var44.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1;
29832     /* 5: mergewl */
29833     {
29834       orc_union32 _dest;
29835       _dest.x2[0] = var42.i;
29836       _dest.x2[1] = var44.i;
29837       var45.i = _dest.i;
29838     }
29839     /* 6: mergelq */
29840     {
29841       orc_union64 _dest;
29842       _dest.x2[0] = var45.i;
29843       _dest.x2[1] = var39.i;
29844       var38.i = _dest.i;
29845     }
29846     /* 7: storeq */
29847     ptr0[i] = var38;
29848   }
29849 
29850 }
29851 
29852 #else
29853 static void
_backup_video_orc_chroma_down_h2_u8(OrcExecutor * ORC_RESTRICT ex)29854 _backup_video_orc_chroma_down_h2_u8 (OrcExecutor * ORC_RESTRICT ex)
29855 {
29856   int i;
29857   int n = ex->n;
29858   orc_union64 *ORC_RESTRICT ptr0;
29859   const orc_union64 *ORC_RESTRICT ptr4;
29860   orc_union64 var37;
29861   orc_union64 var38;
29862   orc_union32 var39;
29863   orc_union32 var40;
29864   orc_union16 var41;
29865   orc_union16 var42;
29866   orc_union16 var43;
29867   orc_union16 var44;
29868   orc_union32 var45;
29869 
29870   ptr0 = (orc_union64 *) ex->arrays[0];
29871   ptr4 = (orc_union64 *) ex->arrays[4];
29872 
29873 
29874   for (i = 0; i < n; i++) {
29875     /* 0: loadq */
29876     var37 = ptr4[i];
29877     /* 1: splitql */
29878     {
29879       orc_union64 _src;
29880       _src.i = var37.i;
29881       var39.i = _src.x2[1];
29882       var40.i = _src.x2[0];
29883     }
29884     /* 2: splitlw */
29885     {
29886       orc_union32 _src;
29887       _src.i = var40.i;
29888       var41.i = _src.x2[1];
29889       var42.i = _src.x2[0];
29890     }
29891     /* 3: select1lw */
29892     {
29893       orc_union32 _src;
29894       _src.i = var39.i;
29895       var43.i = _src.x2[1];
29896     }
29897     /* 4: avgub */
29898     var44.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1;
29899     var44.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1;
29900     /* 5: mergewl */
29901     {
29902       orc_union32 _dest;
29903       _dest.x2[0] = var42.i;
29904       _dest.x2[1] = var44.i;
29905       var45.i = _dest.i;
29906     }
29907     /* 6: mergelq */
29908     {
29909       orc_union64 _dest;
29910       _dest.x2[0] = var45.i;
29911       _dest.x2[1] = var39.i;
29912       var38.i = _dest.i;
29913     }
29914     /* 7: storeq */
29915     ptr0[i] = var38;
29916   }
29917 
29918 }
29919 
29920 void
video_orc_chroma_down_h2_u8(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)29921 video_orc_chroma_down_h2_u8 (guint8 * ORC_RESTRICT d1,
29922     const guint8 * ORC_RESTRICT s1, int n)
29923 {
29924   OrcExecutor _ex, *ex = &_ex;
29925   static volatile int p_inited = 0;
29926   static OrcCode *c = 0;
29927   void (*func) (OrcExecutor *);
29928 
29929   if (!p_inited) {
29930     orc_once_mutex_lock ();
29931     if (!p_inited) {
29932       OrcProgram *p;
29933 
29934 #if 1
29935       static const orc_uint8 bc[] = {
29936         1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 104, 114,
29937         111, 109, 97, 95, 100, 111, 119, 110, 95, 104, 50, 95, 117, 56, 11, 8,
29938         8, 12, 8, 8, 20, 4, 20, 4, 20, 2, 20, 2, 20, 2, 197, 33,
29939         32, 4, 198, 35, 34, 32, 191, 36, 33, 21, 1, 39, 35, 35, 36, 195,
29940         32, 34, 35, 194, 0, 32, 33, 2, 0,
29941       };
29942       p = orc_program_new_from_static_bytecode (bc);
29943       orc_program_set_backup_function (p, _backup_video_orc_chroma_down_h2_u8);
29944 #else
29945       p = orc_program_new ();
29946       orc_program_set_name (p, "video_orc_chroma_down_h2_u8");
29947       orc_program_set_backup_function (p, _backup_video_orc_chroma_down_h2_u8);
29948       orc_program_add_destination (p, 8, "d1");
29949       orc_program_add_source (p, 8, "s1");
29950       orc_program_add_temporary (p, 4, "t1");
29951       orc_program_add_temporary (p, 4, "t2");
29952       orc_program_add_temporary (p, 2, "t3");
29953       orc_program_add_temporary (p, 2, "t4");
29954       orc_program_add_temporary (p, 2, "t5");
29955 
29956       orc_program_append_2 (p, "splitql", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
29957           ORC_VAR_D1);
29958       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T1,
29959           ORC_VAR_D1);
29960       orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T5, ORC_VAR_T2,
29961           ORC_VAR_D1, ORC_VAR_D1);
29962       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5,
29963           ORC_VAR_D1);
29964       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4,
29965           ORC_VAR_D1);
29966       orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
29967           ORC_VAR_D1);
29968 #endif
29969 
29970       orc_program_compile (p);
29971       c = orc_program_take_code (p);
29972       orc_program_free (p);
29973     }
29974     p_inited = TRUE;
29975     orc_once_mutex_unlock ();
29976   }
29977   ex->arrays[ORC_VAR_A2] = c;
29978   ex->program = 0;
29979 
29980   ex->n = n;
29981   ex->arrays[ORC_VAR_D1] = d1;
29982   ex->arrays[ORC_VAR_S1] = (void *) s1;
29983 
29984   func = c->exec;
29985   func (ex);
29986 }
29987 #endif
29988 
29989 
29990 /* video_orc_chroma_down_v2_u8 */
29991 #ifdef DISABLE_ORC
29992 void
video_orc_chroma_down_v2_u8(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,int n)29993 video_orc_chroma_down_v2_u8 (guint8 * ORC_RESTRICT d1,
29994     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
29995 {
29996   int i;
29997   orc_union32 *ORC_RESTRICT ptr0;
29998   const orc_union32 *ORC_RESTRICT ptr4;
29999   const orc_union32 *ORC_RESTRICT ptr5;
30000   orc_union32 var35;
30001   orc_union32 var36;
30002   orc_union32 var37;
30003   orc_union16 var38;
30004   orc_union16 var39;
30005   orc_union16 var40;
30006   orc_union16 var41;
30007 
30008   ptr0 = (orc_union32 *) d1;
30009   ptr4 = (orc_union32 *) s1;
30010   ptr5 = (orc_union32 *) s2;
30011 
30012 
30013   for (i = 0; i < n; i++) {
30014     /* 0: loadl */
30015     var35 = ptr4[i];
30016     /* 1: splitlw */
30017     {
30018       orc_union32 _src;
30019       _src.i = var35.i;
30020       var38.i = _src.x2[1];
30021       var39.i = _src.x2[0];
30022     }
30023     /* 2: loadl */
30024     var36 = ptr5[i];
30025     /* 3: select1lw */
30026     {
30027       orc_union32 _src;
30028       _src.i = var36.i;
30029       var40.i = _src.x2[1];
30030     }
30031     /* 4: avgub */
30032     var41.x2[0] = ((orc_uint8) var38.x2[0] + (orc_uint8) var40.x2[0] + 1) >> 1;
30033     var41.x2[1] = ((orc_uint8) var38.x2[1] + (orc_uint8) var40.x2[1] + 1) >> 1;
30034     /* 5: mergewl */
30035     {
30036       orc_union32 _dest;
30037       _dest.x2[0] = var39.i;
30038       _dest.x2[1] = var41.i;
30039       var37.i = _dest.i;
30040     }
30041     /* 6: storel */
30042     ptr0[i] = var37;
30043   }
30044 
30045 }
30046 
30047 #else
30048 static void
_backup_video_orc_chroma_down_v2_u8(OrcExecutor * ORC_RESTRICT ex)30049 _backup_video_orc_chroma_down_v2_u8 (OrcExecutor * ORC_RESTRICT ex)
30050 {
30051   int i;
30052   int n = ex->n;
30053   orc_union32 *ORC_RESTRICT ptr0;
30054   const orc_union32 *ORC_RESTRICT ptr4;
30055   const orc_union32 *ORC_RESTRICT ptr5;
30056   orc_union32 var35;
30057   orc_union32 var36;
30058   orc_union32 var37;
30059   orc_union16 var38;
30060   orc_union16 var39;
30061   orc_union16 var40;
30062   orc_union16 var41;
30063 
30064   ptr0 = (orc_union32 *) ex->arrays[0];
30065   ptr4 = (orc_union32 *) ex->arrays[4];
30066   ptr5 = (orc_union32 *) ex->arrays[5];
30067 
30068 
30069   for (i = 0; i < n; i++) {
30070     /* 0: loadl */
30071     var35 = ptr4[i];
30072     /* 1: splitlw */
30073     {
30074       orc_union32 _src;
30075       _src.i = var35.i;
30076       var38.i = _src.x2[1];
30077       var39.i = _src.x2[0];
30078     }
30079     /* 2: loadl */
30080     var36 = ptr5[i];
30081     /* 3: select1lw */
30082     {
30083       orc_union32 _src;
30084       _src.i = var36.i;
30085       var40.i = _src.x2[1];
30086     }
30087     /* 4: avgub */
30088     var41.x2[0] = ((orc_uint8) var38.x2[0] + (orc_uint8) var40.x2[0] + 1) >> 1;
30089     var41.x2[1] = ((orc_uint8) var38.x2[1] + (orc_uint8) var40.x2[1] + 1) >> 1;
30090     /* 5: mergewl */
30091     {
30092       orc_union32 _dest;
30093       _dest.x2[0] = var39.i;
30094       _dest.x2[1] = var41.i;
30095       var37.i = _dest.i;
30096     }
30097     /* 6: storel */
30098     ptr0[i] = var37;
30099   }
30100 
30101 }
30102 
30103 void
video_orc_chroma_down_v2_u8(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,int n)30104 video_orc_chroma_down_v2_u8 (guint8 * ORC_RESTRICT d1,
30105     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
30106 {
30107   OrcExecutor _ex, *ex = &_ex;
30108   static volatile int p_inited = 0;
30109   static OrcCode *c = 0;
30110   void (*func) (OrcExecutor *);
30111 
30112   if (!p_inited) {
30113     orc_once_mutex_lock ();
30114     if (!p_inited) {
30115       OrcProgram *p;
30116 
30117 #if 1
30118       static const orc_uint8 bc[] = {
30119         1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 104, 114,
30120         111, 109, 97, 95, 100, 111, 119, 110, 95, 118, 50, 95, 117, 56, 11, 4,
30121         4, 12, 4, 4, 12, 4, 4, 20, 2, 20, 2, 20, 2, 198, 33, 32,
30122         4, 191, 34, 5, 21, 1, 39, 33, 33, 34, 195, 0, 32, 33, 2, 0,
30123 
30124       };
30125       p = orc_program_new_from_static_bytecode (bc);
30126       orc_program_set_backup_function (p, _backup_video_orc_chroma_down_v2_u8);
30127 #else
30128       p = orc_program_new ();
30129       orc_program_set_name (p, "video_orc_chroma_down_v2_u8");
30130       orc_program_set_backup_function (p, _backup_video_orc_chroma_down_v2_u8);
30131       orc_program_add_destination (p, 4, "d1");
30132       orc_program_add_source (p, 4, "s1");
30133       orc_program_add_source (p, 4, "s2");
30134       orc_program_add_temporary (p, 2, "t1");
30135       orc_program_add_temporary (p, 2, "t2");
30136       orc_program_add_temporary (p, 2, "t3");
30137 
30138       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
30139           ORC_VAR_D1);
30140       orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T3, ORC_VAR_S2,
30141           ORC_VAR_D1, ORC_VAR_D1);
30142       orc_program_append_2 (p, "avgub", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3,
30143           ORC_VAR_D1);
30144       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
30145           ORC_VAR_D1);
30146 #endif
30147 
30148       orc_program_compile (p);
30149       c = orc_program_take_code (p);
30150       orc_program_free (p);
30151     }
30152     p_inited = TRUE;
30153     orc_once_mutex_unlock ();
30154   }
30155   ex->arrays[ORC_VAR_A2] = c;
30156   ex->program = 0;
30157 
30158   ex->n = n;
30159   ex->arrays[ORC_VAR_D1] = d1;
30160   ex->arrays[ORC_VAR_S1] = (void *) s1;
30161   ex->arrays[ORC_VAR_S2] = (void *) s2;
30162 
30163   func = c->exec;
30164   func (ex);
30165 }
30166 #endif
30167 
30168 
30169 /* video_orc_chroma_up_v2_u8 */
30170 #ifdef DISABLE_ORC
30171 void
video_orc_chroma_up_v2_u8(guint8 * ORC_RESTRICT d1,guint8 * ORC_RESTRICT d2,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,int n)30172 video_orc_chroma_up_v2_u8 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
30173     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
30174 {
30175   int i;
30176   orc_union32 *ORC_RESTRICT ptr0;
30177   orc_union32 *ORC_RESTRICT ptr1;
30178   const orc_union32 *ORC_RESTRICT ptr4;
30179   const orc_union32 *ORC_RESTRICT ptr5;
30180   orc_union32 var39;
30181   orc_union32 var40;
30182 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
30183   volatile orc_union32 var41;
30184 #else
30185   orc_union32 var41;
30186 #endif
30187 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
30188   volatile orc_union32 var42;
30189 #else
30190   orc_union32 var42;
30191 #endif
30192   orc_union32 var43;
30193   orc_union32 var44;
30194   orc_union16 var45;
30195   orc_union16 var46;
30196   orc_union16 var47;
30197   orc_union16 var48;
30198   orc_union32 var49;
30199   orc_union32 var50;
30200   orc_union32 var51;
30201   orc_union32 var52;
30202   orc_union32 var53;
30203   orc_union32 var54;
30204   orc_union16 var55;
30205   orc_union32 var56;
30206   orc_union32 var57;
30207   orc_union32 var58;
30208   orc_union32 var59;
30209   orc_union16 var60;
30210 
30211   ptr0 = (orc_union32 *) d1;
30212   ptr1 = (orc_union32 *) d2;
30213   ptr4 = (orc_union32 *) s1;
30214   ptr5 = (orc_union32 *) s2;
30215 
30216   /* 6: loadpw */
30217   var41.x2[0] = 0x00000003;     /* 3 or 1.4822e-323f */
30218   var41.x2[1] = 0x00000003;     /* 3 or 1.4822e-323f */
30219   /* 9: loadpw */
30220   var42.x2[0] = 0x00000002;     /* 2 or 9.88131e-324f */
30221   var42.x2[1] = 0x00000002;     /* 2 or 9.88131e-324f */
30222 
30223   for (i = 0; i < n; i++) {
30224     /* 0: loadl */
30225     var39 = ptr4[i];
30226     /* 1: splitlw */
30227     {
30228       orc_union32 _src;
30229       _src.i = var39.i;
30230       var45.i = _src.x2[1];
30231       var46.i = _src.x2[0];
30232     }
30233     /* 2: loadl */
30234     var40 = ptr5[i];
30235     /* 3: splitlw */
30236     {
30237       orc_union32 _src;
30238       _src.i = var40.i;
30239       var47.i = _src.x2[1];
30240       var48.i = _src.x2[0];
30241     }
30242     /* 4: convubw */
30243     var49.x2[0] = (orc_uint8) var45.x2[0];
30244     var49.x2[1] = (orc_uint8) var45.x2[1];
30245     /* 5: convubw */
30246     var50.x2[0] = (orc_uint8) var47.x2[0];
30247     var50.x2[1] = (orc_uint8) var47.x2[1];
30248     /* 7: mullw */
30249     var51.x2[0] = (var49.x2[0] * var41.x2[0]) & 0xffff;
30250     var51.x2[1] = (var49.x2[1] * var41.x2[1]) & 0xffff;
30251     /* 8: addw */
30252     var52.x2[0] = var51.x2[0] + var50.x2[0];
30253     var52.x2[1] = var51.x2[1] + var50.x2[1];
30254     /* 10: addw */
30255     var53.x2[0] = var52.x2[0] + var42.x2[0];
30256     var53.x2[1] = var52.x2[1] + var42.x2[1];
30257     /* 11: shruw */
30258     var54.x2[0] = ((orc_uint16) var53.x2[0]) >> 2;
30259     var54.x2[1] = ((orc_uint16) var53.x2[1]) >> 2;
30260     /* 12: convsuswb */
30261     var55.x2[0] = ORC_CLAMP_UB (var54.x2[0]);
30262     var55.x2[1] = ORC_CLAMP_UB (var54.x2[1]);
30263     /* 13: mergewl */
30264     {
30265       orc_union32 _dest;
30266       _dest.x2[0] = var46.i;
30267       _dest.x2[1] = var55.i;
30268       var43.i = _dest.i;
30269     }
30270     /* 14: storel */
30271     ptr0[i] = var43;
30272     /* 15: mullw */
30273     var56.x2[0] = (var50.x2[0] * var41.x2[0]) & 0xffff;
30274     var56.x2[1] = (var50.x2[1] * var41.x2[1]) & 0xffff;
30275     /* 16: addw */
30276     var57.x2[0] = var56.x2[0] + var49.x2[0];
30277     var57.x2[1] = var56.x2[1] + var49.x2[1];
30278     /* 17: addw */
30279     var58.x2[0] = var57.x2[0] + var42.x2[0];
30280     var58.x2[1] = var57.x2[1] + var42.x2[1];
30281     /* 18: shruw */
30282     var59.x2[0] = ((orc_uint16) var58.x2[0]) >> 2;
30283     var59.x2[1] = ((orc_uint16) var58.x2[1]) >> 2;
30284     /* 19: convsuswb */
30285     var60.x2[0] = ORC_CLAMP_UB (var59.x2[0]);
30286     var60.x2[1] = ORC_CLAMP_UB (var59.x2[1]);
30287     /* 20: mergewl */
30288     {
30289       orc_union32 _dest;
30290       _dest.x2[0] = var48.i;
30291       _dest.x2[1] = var60.i;
30292       var44.i = _dest.i;
30293     }
30294     /* 21: storel */
30295     ptr1[i] = var44;
30296   }
30297 
30298 }
30299 
30300 #else
30301 static void
_backup_video_orc_chroma_up_v2_u8(OrcExecutor * ORC_RESTRICT ex)30302 _backup_video_orc_chroma_up_v2_u8 (OrcExecutor * ORC_RESTRICT ex)
30303 {
30304   int i;
30305   int n = ex->n;
30306   orc_union32 *ORC_RESTRICT ptr0;
30307   orc_union32 *ORC_RESTRICT ptr1;
30308   const orc_union32 *ORC_RESTRICT ptr4;
30309   const orc_union32 *ORC_RESTRICT ptr5;
30310   orc_union32 var39;
30311   orc_union32 var40;
30312 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
30313   volatile orc_union32 var41;
30314 #else
30315   orc_union32 var41;
30316 #endif
30317 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
30318   volatile orc_union32 var42;
30319 #else
30320   orc_union32 var42;
30321 #endif
30322   orc_union32 var43;
30323   orc_union32 var44;
30324   orc_union16 var45;
30325   orc_union16 var46;
30326   orc_union16 var47;
30327   orc_union16 var48;
30328   orc_union32 var49;
30329   orc_union32 var50;
30330   orc_union32 var51;
30331   orc_union32 var52;
30332   orc_union32 var53;
30333   orc_union32 var54;
30334   orc_union16 var55;
30335   orc_union32 var56;
30336   orc_union32 var57;
30337   orc_union32 var58;
30338   orc_union32 var59;
30339   orc_union16 var60;
30340 
30341   ptr0 = (orc_union32 *) ex->arrays[0];
30342   ptr1 = (orc_union32 *) ex->arrays[1];
30343   ptr4 = (orc_union32 *) ex->arrays[4];
30344   ptr5 = (orc_union32 *) ex->arrays[5];
30345 
30346   /* 6: loadpw */
30347   var41.x2[0] = 0x00000003;     /* 3 or 1.4822e-323f */
30348   var41.x2[1] = 0x00000003;     /* 3 or 1.4822e-323f */
30349   /* 9: loadpw */
30350   var42.x2[0] = 0x00000002;     /* 2 or 9.88131e-324f */
30351   var42.x2[1] = 0x00000002;     /* 2 or 9.88131e-324f */
30352 
30353   for (i = 0; i < n; i++) {
30354     /* 0: loadl */
30355     var39 = ptr4[i];
30356     /* 1: splitlw */
30357     {
30358       orc_union32 _src;
30359       _src.i = var39.i;
30360       var45.i = _src.x2[1];
30361       var46.i = _src.x2[0];
30362     }
30363     /* 2: loadl */
30364     var40 = ptr5[i];
30365     /* 3: splitlw */
30366     {
30367       orc_union32 _src;
30368       _src.i = var40.i;
30369       var47.i = _src.x2[1];
30370       var48.i = _src.x2[0];
30371     }
30372     /* 4: convubw */
30373     var49.x2[0] = (orc_uint8) var45.x2[0];
30374     var49.x2[1] = (orc_uint8) var45.x2[1];
30375     /* 5: convubw */
30376     var50.x2[0] = (orc_uint8) var47.x2[0];
30377     var50.x2[1] = (orc_uint8) var47.x2[1];
30378     /* 7: mullw */
30379     var51.x2[0] = (var49.x2[0] * var41.x2[0]) & 0xffff;
30380     var51.x2[1] = (var49.x2[1] * var41.x2[1]) & 0xffff;
30381     /* 8: addw */
30382     var52.x2[0] = var51.x2[0] + var50.x2[0];
30383     var52.x2[1] = var51.x2[1] + var50.x2[1];
30384     /* 10: addw */
30385     var53.x2[0] = var52.x2[0] + var42.x2[0];
30386     var53.x2[1] = var52.x2[1] + var42.x2[1];
30387     /* 11: shruw */
30388     var54.x2[0] = ((orc_uint16) var53.x2[0]) >> 2;
30389     var54.x2[1] = ((orc_uint16) var53.x2[1]) >> 2;
30390     /* 12: convsuswb */
30391     var55.x2[0] = ORC_CLAMP_UB (var54.x2[0]);
30392     var55.x2[1] = ORC_CLAMP_UB (var54.x2[1]);
30393     /* 13: mergewl */
30394     {
30395       orc_union32 _dest;
30396       _dest.x2[0] = var46.i;
30397       _dest.x2[1] = var55.i;
30398       var43.i = _dest.i;
30399     }
30400     /* 14: storel */
30401     ptr0[i] = var43;
30402     /* 15: mullw */
30403     var56.x2[0] = (var50.x2[0] * var41.x2[0]) & 0xffff;
30404     var56.x2[1] = (var50.x2[1] * var41.x2[1]) & 0xffff;
30405     /* 16: addw */
30406     var57.x2[0] = var56.x2[0] + var49.x2[0];
30407     var57.x2[1] = var56.x2[1] + var49.x2[1];
30408     /* 17: addw */
30409     var58.x2[0] = var57.x2[0] + var42.x2[0];
30410     var58.x2[1] = var57.x2[1] + var42.x2[1];
30411     /* 18: shruw */
30412     var59.x2[0] = ((orc_uint16) var58.x2[0]) >> 2;
30413     var59.x2[1] = ((orc_uint16) var58.x2[1]) >> 2;
30414     /* 19: convsuswb */
30415     var60.x2[0] = ORC_CLAMP_UB (var59.x2[0]);
30416     var60.x2[1] = ORC_CLAMP_UB (var59.x2[1]);
30417     /* 20: mergewl */
30418     {
30419       orc_union32 _dest;
30420       _dest.x2[0] = var48.i;
30421       _dest.x2[1] = var60.i;
30422       var44.i = _dest.i;
30423     }
30424     /* 21: storel */
30425     ptr1[i] = var44;
30426   }
30427 
30428 }
30429 
30430 void
video_orc_chroma_up_v2_u8(guint8 * ORC_RESTRICT d1,guint8 * ORC_RESTRICT d2,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,int n)30431 video_orc_chroma_up_v2_u8 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
30432     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
30433 {
30434   OrcExecutor _ex, *ex = &_ex;
30435   static volatile int p_inited = 0;
30436   static OrcCode *c = 0;
30437   void (*func) (OrcExecutor *);
30438 
30439   if (!p_inited) {
30440     orc_once_mutex_lock ();
30441     if (!p_inited) {
30442       OrcProgram *p;
30443 
30444 #if 1
30445       static const orc_uint8 bc[] = {
30446         1, 9, 25, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 104, 114,
30447         111, 109, 97, 95, 117, 112, 95, 118, 50, 95, 117, 56, 11, 4, 4, 11,
30448         4, 4, 12, 4, 4, 12, 4, 4, 14, 2, 3, 0, 0, 0, 14, 2,
30449         2, 0, 0, 0, 20, 2, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4,
30450         20, 4, 198, 34, 32, 4, 198, 35, 33, 5, 21, 1, 150, 36, 34, 21,
30451         1, 150, 37, 35, 21, 1, 89, 38, 36, 16, 21, 1, 70, 38, 38, 37,
30452         21, 1, 70, 38, 38, 17, 21, 1, 95, 38, 38, 17, 21, 1, 160, 34,
30453         38, 195, 0, 32, 34, 21, 1, 89, 38, 37, 16, 21, 1, 70, 38, 38,
30454         36, 21, 1, 70, 38, 38, 17, 21, 1, 95, 38, 38, 17, 21, 1, 160,
30455         35, 38, 195, 1, 33, 35, 2, 0,
30456       };
30457       p = orc_program_new_from_static_bytecode (bc);
30458       orc_program_set_backup_function (p, _backup_video_orc_chroma_up_v2_u8);
30459 #else
30460       p = orc_program_new ();
30461       orc_program_set_name (p, "video_orc_chroma_up_v2_u8");
30462       orc_program_set_backup_function (p, _backup_video_orc_chroma_up_v2_u8);
30463       orc_program_add_destination (p, 4, "d1");
30464       orc_program_add_destination (p, 4, "d2");
30465       orc_program_add_source (p, 4, "s1");
30466       orc_program_add_source (p, 4, "s2");
30467       orc_program_add_constant (p, 2, 0x00000003, "c1");
30468       orc_program_add_constant (p, 2, 0x00000002, "c2");
30469       orc_program_add_temporary (p, 2, "t1");
30470       orc_program_add_temporary (p, 2, "t2");
30471       orc_program_add_temporary (p, 2, "t3");
30472       orc_program_add_temporary (p, 2, "t4");
30473       orc_program_add_temporary (p, 4, "t5");
30474       orc_program_add_temporary (p, 4, "t6");
30475       orc_program_add_temporary (p, 4, "t7");
30476 
30477       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_S1,
30478           ORC_VAR_D1);
30479       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_S2,
30480           ORC_VAR_D1);
30481       orc_program_append_2 (p, "convubw", 1, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_D1,
30482           ORC_VAR_D1);
30483       orc_program_append_2 (p, "convubw", 1, ORC_VAR_T6, ORC_VAR_T4, ORC_VAR_D1,
30484           ORC_VAR_D1);
30485       orc_program_append_2 (p, "mullw", 1, ORC_VAR_T7, ORC_VAR_T5, ORC_VAR_C1,
30486           ORC_VAR_D1);
30487       orc_program_append_2 (p, "addw", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T6,
30488           ORC_VAR_D1);
30489       orc_program_append_2 (p, "addw", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2,
30490           ORC_VAR_D1);
30491       orc_program_append_2 (p, "shruw", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2,
30492           ORC_VAR_D1);
30493       orc_program_append_2 (p, "convsuswb", 1, ORC_VAR_T3, ORC_VAR_T7,
30494           ORC_VAR_D1, ORC_VAR_D1);
30495       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T3,
30496           ORC_VAR_D1);
30497       orc_program_append_2 (p, "mullw", 1, ORC_VAR_T7, ORC_VAR_T6, ORC_VAR_C1,
30498           ORC_VAR_D1);
30499       orc_program_append_2 (p, "addw", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T5,
30500           ORC_VAR_D1);
30501       orc_program_append_2 (p, "addw", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2,
30502           ORC_VAR_D1);
30503       orc_program_append_2 (p, "shruw", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2,
30504           ORC_VAR_D1);
30505       orc_program_append_2 (p, "convsuswb", 1, ORC_VAR_T4, ORC_VAR_T7,
30506           ORC_VAR_D1, ORC_VAR_D1);
30507       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_T4,
30508           ORC_VAR_D1);
30509 #endif
30510 
30511       orc_program_compile (p);
30512       c = orc_program_take_code (p);
30513       orc_program_free (p);
30514     }
30515     p_inited = TRUE;
30516     orc_once_mutex_unlock ();
30517   }
30518   ex->arrays[ORC_VAR_A2] = c;
30519   ex->program = 0;
30520 
30521   ex->n = n;
30522   ex->arrays[ORC_VAR_D1] = d1;
30523   ex->arrays[ORC_VAR_D2] = d2;
30524   ex->arrays[ORC_VAR_S1] = (void *) s1;
30525   ex->arrays[ORC_VAR_S2] = (void *) s2;
30526 
30527   func = c->exec;
30528   func (ex);
30529 }
30530 #endif
30531 
30532 
30533 /* video_orc_chroma_up_v2_u16 */
30534 #ifdef DISABLE_ORC
30535 void
video_orc_chroma_up_v2_u16(guint16 * ORC_RESTRICT d1,guint16 * ORC_RESTRICT d2,const guint16 * ORC_RESTRICT s1,const guint16 * ORC_RESTRICT s2,int n)30536 video_orc_chroma_up_v2_u16 (guint16 * ORC_RESTRICT d1,
30537     guint16 * ORC_RESTRICT d2, const guint16 * ORC_RESTRICT s1,
30538     const guint16 * ORC_RESTRICT s2, int n)
30539 {
30540   int i;
30541   orc_union64 *ORC_RESTRICT ptr0;
30542   orc_union64 *ORC_RESTRICT ptr1;
30543   const orc_union64 *ORC_RESTRICT ptr4;
30544   const orc_union64 *ORC_RESTRICT ptr5;
30545   orc_union64 var39;
30546   orc_union64 var40;
30547 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
30548   volatile orc_union64 var41;
30549 #else
30550   orc_union64 var41;
30551 #endif
30552 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
30553   volatile orc_union64 var42;
30554 #else
30555   orc_union64 var42;
30556 #endif
30557   orc_union64 var43;
30558   orc_union64 var44;
30559   orc_union32 var45;
30560   orc_union32 var46;
30561   orc_union32 var47;
30562   orc_union32 var48;
30563   orc_union64 var49;
30564   orc_union64 var50;
30565   orc_union64 var51;
30566   orc_union64 var52;
30567   orc_union64 var53;
30568   orc_union64 var54;
30569   orc_union32 var55;
30570   orc_union64 var56;
30571   orc_union64 var57;
30572   orc_union64 var58;
30573   orc_union64 var59;
30574   orc_union32 var60;
30575 
30576   ptr0 = (orc_union64 *) d1;
30577   ptr1 = (orc_union64 *) d2;
30578   ptr4 = (orc_union64 *) s1;
30579   ptr5 = (orc_union64 *) s2;
30580 
30581   /* 6: loadpl */
30582   var41.x2[0] = 0x00000003;     /* 3 or 1.4822e-323f */
30583   var41.x2[1] = 0x00000003;     /* 3 or 1.4822e-323f */
30584   /* 9: loadpl */
30585   var42.x2[0] = 0x00000002;     /* 2 or 9.88131e-324f */
30586   var42.x2[1] = 0x00000002;     /* 2 or 9.88131e-324f */
30587 
30588   for (i = 0; i < n; i++) {
30589     /* 0: loadq */
30590     var39 = ptr4[i];
30591     /* 1: splitql */
30592     {
30593       orc_union64 _src;
30594       _src.i = var39.i;
30595       var45.i = _src.x2[1];
30596       var46.i = _src.x2[0];
30597     }
30598     /* 2: loadq */
30599     var40 = ptr5[i];
30600     /* 3: splitql */
30601     {
30602       orc_union64 _src;
30603       _src.i = var40.i;
30604       var47.i = _src.x2[1];
30605       var48.i = _src.x2[0];
30606     }
30607     /* 4: convuwl */
30608     var49.x2[0] = (orc_uint16) var45.x2[0];
30609     var49.x2[1] = (orc_uint16) var45.x2[1];
30610     /* 5: convuwl */
30611     var50.x2[0] = (orc_uint16) var47.x2[0];
30612     var50.x2[1] = (orc_uint16) var47.x2[1];
30613     /* 7: mulll */
30614     var51.x2[0] =
30615         (((orc_uint32) var49.x2[0]) * ((orc_uint32) var41.x2[0])) & 0xffffffff;
30616     var51.x2[1] =
30617         (((orc_uint32) var49.x2[1]) * ((orc_uint32) var41.x2[1])) & 0xffffffff;
30618     /* 8: addl */
30619     var52.x2[0] = ((orc_uint32) var51.x2[0]) + ((orc_uint32) var50.x2[0]);
30620     var52.x2[1] = ((orc_uint32) var51.x2[1]) + ((orc_uint32) var50.x2[1]);
30621     /* 10: addl */
30622     var53.x2[0] = ((orc_uint32) var52.x2[0]) + ((orc_uint32) var42.x2[0]);
30623     var53.x2[1] = ((orc_uint32) var52.x2[1]) + ((orc_uint32) var42.x2[1]);
30624     /* 11: shrul */
30625     var54.x2[0] = ((orc_uint32) var53.x2[0]) >> 2;
30626     var54.x2[1] = ((orc_uint32) var53.x2[1]) >> 2;
30627     /* 12: convsuslw */
30628     var55.x2[0] = ORC_CLAMP_UW (var54.x2[0]);
30629     var55.x2[1] = ORC_CLAMP_UW (var54.x2[1]);
30630     /* 13: mergelq */
30631     {
30632       orc_union64 _dest;
30633       _dest.x2[0] = var46.i;
30634       _dest.x2[1] = var55.i;
30635       var43.i = _dest.i;
30636     }
30637     /* 14: storeq */
30638     ptr0[i] = var43;
30639     /* 15: mulll */
30640     var56.x2[0] =
30641         (((orc_uint32) var50.x2[0]) * ((orc_uint32) var41.x2[0])) & 0xffffffff;
30642     var56.x2[1] =
30643         (((orc_uint32) var50.x2[1]) * ((orc_uint32) var41.x2[1])) & 0xffffffff;
30644     /* 16: addl */
30645     var57.x2[0] = ((orc_uint32) var56.x2[0]) + ((orc_uint32) var49.x2[0]);
30646     var57.x2[1] = ((orc_uint32) var56.x2[1]) + ((orc_uint32) var49.x2[1]);
30647     /* 17: addl */
30648     var58.x2[0] = ((orc_uint32) var57.x2[0]) + ((orc_uint32) var42.x2[0]);
30649     var58.x2[1] = ((orc_uint32) var57.x2[1]) + ((orc_uint32) var42.x2[1]);
30650     /* 18: shrul */
30651     var59.x2[0] = ((orc_uint32) var58.x2[0]) >> 2;
30652     var59.x2[1] = ((orc_uint32) var58.x2[1]) >> 2;
30653     /* 19: convsuslw */
30654     var60.x2[0] = ORC_CLAMP_UW (var59.x2[0]);
30655     var60.x2[1] = ORC_CLAMP_UW (var59.x2[1]);
30656     /* 20: mergelq */
30657     {
30658       orc_union64 _dest;
30659       _dest.x2[0] = var48.i;
30660       _dest.x2[1] = var60.i;
30661       var44.i = _dest.i;
30662     }
30663     /* 21: storeq */
30664     ptr1[i] = var44;
30665   }
30666 
30667 }
30668 
30669 #else
30670 static void
_backup_video_orc_chroma_up_v2_u16(OrcExecutor * ORC_RESTRICT ex)30671 _backup_video_orc_chroma_up_v2_u16 (OrcExecutor * ORC_RESTRICT ex)
30672 {
30673   int i;
30674   int n = ex->n;
30675   orc_union64 *ORC_RESTRICT ptr0;
30676   orc_union64 *ORC_RESTRICT ptr1;
30677   const orc_union64 *ORC_RESTRICT ptr4;
30678   const orc_union64 *ORC_RESTRICT ptr5;
30679   orc_union64 var39;
30680   orc_union64 var40;
30681 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
30682   volatile orc_union64 var41;
30683 #else
30684   orc_union64 var41;
30685 #endif
30686 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
30687   volatile orc_union64 var42;
30688 #else
30689   orc_union64 var42;
30690 #endif
30691   orc_union64 var43;
30692   orc_union64 var44;
30693   orc_union32 var45;
30694   orc_union32 var46;
30695   orc_union32 var47;
30696   orc_union32 var48;
30697   orc_union64 var49;
30698   orc_union64 var50;
30699   orc_union64 var51;
30700   orc_union64 var52;
30701   orc_union64 var53;
30702   orc_union64 var54;
30703   orc_union32 var55;
30704   orc_union64 var56;
30705   orc_union64 var57;
30706   orc_union64 var58;
30707   orc_union64 var59;
30708   orc_union32 var60;
30709 
30710   ptr0 = (orc_union64 *) ex->arrays[0];
30711   ptr1 = (orc_union64 *) ex->arrays[1];
30712   ptr4 = (orc_union64 *) ex->arrays[4];
30713   ptr5 = (orc_union64 *) ex->arrays[5];
30714 
30715   /* 6: loadpl */
30716   var41.x2[0] = 0x00000003;     /* 3 or 1.4822e-323f */
30717   var41.x2[1] = 0x00000003;     /* 3 or 1.4822e-323f */
30718   /* 9: loadpl */
30719   var42.x2[0] = 0x00000002;     /* 2 or 9.88131e-324f */
30720   var42.x2[1] = 0x00000002;     /* 2 or 9.88131e-324f */
30721 
30722   for (i = 0; i < n; i++) {
30723     /* 0: loadq */
30724     var39 = ptr4[i];
30725     /* 1: splitql */
30726     {
30727       orc_union64 _src;
30728       _src.i = var39.i;
30729       var45.i = _src.x2[1];
30730       var46.i = _src.x2[0];
30731     }
30732     /* 2: loadq */
30733     var40 = ptr5[i];
30734     /* 3: splitql */
30735     {
30736       orc_union64 _src;
30737       _src.i = var40.i;
30738       var47.i = _src.x2[1];
30739       var48.i = _src.x2[0];
30740     }
30741     /* 4: convuwl */
30742     var49.x2[0] = (orc_uint16) var45.x2[0];
30743     var49.x2[1] = (orc_uint16) var45.x2[1];
30744     /* 5: convuwl */
30745     var50.x2[0] = (orc_uint16) var47.x2[0];
30746     var50.x2[1] = (orc_uint16) var47.x2[1];
30747     /* 7: mulll */
30748     var51.x2[0] =
30749         (((orc_uint32) var49.x2[0]) * ((orc_uint32) var41.x2[0])) & 0xffffffff;
30750     var51.x2[1] =
30751         (((orc_uint32) var49.x2[1]) * ((orc_uint32) var41.x2[1])) & 0xffffffff;
30752     /* 8: addl */
30753     var52.x2[0] = ((orc_uint32) var51.x2[0]) + ((orc_uint32) var50.x2[0]);
30754     var52.x2[1] = ((orc_uint32) var51.x2[1]) + ((orc_uint32) var50.x2[1]);
30755     /* 10: addl */
30756     var53.x2[0] = ((orc_uint32) var52.x2[0]) + ((orc_uint32) var42.x2[0]);
30757     var53.x2[1] = ((orc_uint32) var52.x2[1]) + ((orc_uint32) var42.x2[1]);
30758     /* 11: shrul */
30759     var54.x2[0] = ((orc_uint32) var53.x2[0]) >> 2;
30760     var54.x2[1] = ((orc_uint32) var53.x2[1]) >> 2;
30761     /* 12: convsuslw */
30762     var55.x2[0] = ORC_CLAMP_UW (var54.x2[0]);
30763     var55.x2[1] = ORC_CLAMP_UW (var54.x2[1]);
30764     /* 13: mergelq */
30765     {
30766       orc_union64 _dest;
30767       _dest.x2[0] = var46.i;
30768       _dest.x2[1] = var55.i;
30769       var43.i = _dest.i;
30770     }
30771     /* 14: storeq */
30772     ptr0[i] = var43;
30773     /* 15: mulll */
30774     var56.x2[0] =
30775         (((orc_uint32) var50.x2[0]) * ((orc_uint32) var41.x2[0])) & 0xffffffff;
30776     var56.x2[1] =
30777         (((orc_uint32) var50.x2[1]) * ((orc_uint32) var41.x2[1])) & 0xffffffff;
30778     /* 16: addl */
30779     var57.x2[0] = ((orc_uint32) var56.x2[0]) + ((orc_uint32) var49.x2[0]);
30780     var57.x2[1] = ((orc_uint32) var56.x2[1]) + ((orc_uint32) var49.x2[1]);
30781     /* 17: addl */
30782     var58.x2[0] = ((orc_uint32) var57.x2[0]) + ((orc_uint32) var42.x2[0]);
30783     var58.x2[1] = ((orc_uint32) var57.x2[1]) + ((orc_uint32) var42.x2[1]);
30784     /* 18: shrul */
30785     var59.x2[0] = ((orc_uint32) var58.x2[0]) >> 2;
30786     var59.x2[1] = ((orc_uint32) var58.x2[1]) >> 2;
30787     /* 19: convsuslw */
30788     var60.x2[0] = ORC_CLAMP_UW (var59.x2[0]);
30789     var60.x2[1] = ORC_CLAMP_UW (var59.x2[1]);
30790     /* 20: mergelq */
30791     {
30792       orc_union64 _dest;
30793       _dest.x2[0] = var48.i;
30794       _dest.x2[1] = var60.i;
30795       var44.i = _dest.i;
30796     }
30797     /* 21: storeq */
30798     ptr1[i] = var44;
30799   }
30800 
30801 }
30802 
30803 void
video_orc_chroma_up_v2_u16(guint16 * ORC_RESTRICT d1,guint16 * ORC_RESTRICT d2,const guint16 * ORC_RESTRICT s1,const guint16 * ORC_RESTRICT s2,int n)30804 video_orc_chroma_up_v2_u16 (guint16 * ORC_RESTRICT d1,
30805     guint16 * ORC_RESTRICT d2, const guint16 * ORC_RESTRICT s1,
30806     const guint16 * ORC_RESTRICT s2, int n)
30807 {
30808   OrcExecutor _ex, *ex = &_ex;
30809   static volatile int p_inited = 0;
30810   static OrcCode *c = 0;
30811   void (*func) (OrcExecutor *);
30812 
30813   if (!p_inited) {
30814     orc_once_mutex_lock ();
30815     if (!p_inited) {
30816       OrcProgram *p;
30817 
30818 #if 1
30819       static const orc_uint8 bc[] = {
30820         1, 9, 26, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 104, 114,
30821         111, 109, 97, 95, 117, 112, 95, 118, 50, 95, 117, 49, 54, 11, 8, 8,
30822         11, 8, 8, 12, 8, 8, 12, 8, 8, 14, 4, 3, 0, 0, 0, 14,
30823         4, 2, 0, 0, 0, 20, 4, 20, 4, 20, 4, 20, 4, 20, 8, 20,
30824         8, 20, 8, 197, 34, 32, 4, 197, 35, 33, 5, 21, 1, 154, 36, 34,
30825         21, 1, 154, 37, 35, 21, 1, 120, 38, 36, 16, 21, 1, 103, 38, 38,
30826         37, 21, 1, 103, 38, 38, 17, 21, 1, 126, 38, 38, 17, 21, 1, 166,
30827         34, 38, 194, 0, 32, 34, 21, 1, 120, 38, 37, 16, 21, 1, 103, 38,
30828         38, 36, 21, 1, 103, 38, 38, 17, 21, 1, 126, 38, 38, 17, 21, 1,
30829         166, 35, 38, 194, 1, 33, 35, 2, 0,
30830       };
30831       p = orc_program_new_from_static_bytecode (bc);
30832       orc_program_set_backup_function (p, _backup_video_orc_chroma_up_v2_u16);
30833 #else
30834       p = orc_program_new ();
30835       orc_program_set_name (p, "video_orc_chroma_up_v2_u16");
30836       orc_program_set_backup_function (p, _backup_video_orc_chroma_up_v2_u16);
30837       orc_program_add_destination (p, 8, "d1");
30838       orc_program_add_destination (p, 8, "d2");
30839       orc_program_add_source (p, 8, "s1");
30840       orc_program_add_source (p, 8, "s2");
30841       orc_program_add_constant (p, 4, 0x00000003, "c1");
30842       orc_program_add_constant (p, 4, 0x00000002, "c2");
30843       orc_program_add_temporary (p, 4, "t1");
30844       orc_program_add_temporary (p, 4, "t2");
30845       orc_program_add_temporary (p, 4, "t3");
30846       orc_program_add_temporary (p, 4, "t4");
30847       orc_program_add_temporary (p, 8, "t5");
30848       orc_program_add_temporary (p, 8, "t6");
30849       orc_program_add_temporary (p, 8, "t7");
30850 
30851       orc_program_append_2 (p, "splitql", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_S1,
30852           ORC_VAR_D1);
30853       orc_program_append_2 (p, "splitql", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_S2,
30854           ORC_VAR_D1);
30855       orc_program_append_2 (p, "convuwl", 1, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_D1,
30856           ORC_VAR_D1);
30857       orc_program_append_2 (p, "convuwl", 1, ORC_VAR_T6, ORC_VAR_T4, ORC_VAR_D1,
30858           ORC_VAR_D1);
30859       orc_program_append_2 (p, "mulll", 1, ORC_VAR_T7, ORC_VAR_T5, ORC_VAR_C1,
30860           ORC_VAR_D1);
30861       orc_program_append_2 (p, "addl", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T6,
30862           ORC_VAR_D1);
30863       orc_program_append_2 (p, "addl", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2,
30864           ORC_VAR_D1);
30865       orc_program_append_2 (p, "shrul", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2,
30866           ORC_VAR_D1);
30867       orc_program_append_2 (p, "convsuslw", 1, ORC_VAR_T3, ORC_VAR_T7,
30868           ORC_VAR_D1, ORC_VAR_D1);
30869       orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T3,
30870           ORC_VAR_D1);
30871       orc_program_append_2 (p, "mulll", 1, ORC_VAR_T7, ORC_VAR_T6, ORC_VAR_C1,
30872           ORC_VAR_D1);
30873       orc_program_append_2 (p, "addl", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T5,
30874           ORC_VAR_D1);
30875       orc_program_append_2 (p, "addl", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2,
30876           ORC_VAR_D1);
30877       orc_program_append_2 (p, "shrul", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2,
30878           ORC_VAR_D1);
30879       orc_program_append_2 (p, "convsuslw", 1, ORC_VAR_T4, ORC_VAR_T7,
30880           ORC_VAR_D1, ORC_VAR_D1);
30881       orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_T4,
30882           ORC_VAR_D1);
30883 #endif
30884 
30885       orc_program_compile (p);
30886       c = orc_program_take_code (p);
30887       orc_program_free (p);
30888     }
30889     p_inited = TRUE;
30890     orc_once_mutex_unlock ();
30891   }
30892   ex->arrays[ORC_VAR_A2] = c;
30893   ex->program = 0;
30894 
30895   ex->n = n;
30896   ex->arrays[ORC_VAR_D1] = d1;
30897   ex->arrays[ORC_VAR_D2] = d2;
30898   ex->arrays[ORC_VAR_S1] = (void *) s1;
30899   ex->arrays[ORC_VAR_S2] = (void *) s2;
30900 
30901   func = c->exec;
30902   func (ex);
30903 }
30904 #endif
30905 
30906 
30907 /* video_orc_chroma_down_v2_u16 */
30908 #ifdef DISABLE_ORC
30909 void
video_orc_chroma_down_v2_u16(guint16 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,const guint16 * ORC_RESTRICT s2,int n)30910 video_orc_chroma_down_v2_u16 (guint16 * ORC_RESTRICT d1,
30911     const guint16 * ORC_RESTRICT s1, const guint16 * ORC_RESTRICT s2, int n)
30912 {
30913   int i;
30914   orc_union64 *ORC_RESTRICT ptr0;
30915   const orc_union64 *ORC_RESTRICT ptr4;
30916   const orc_union64 *ORC_RESTRICT ptr5;
30917   orc_union64 var35;
30918   orc_union64 var36;
30919   orc_union64 var37;
30920   orc_union32 var38;
30921   orc_union32 var39;
30922   orc_union32 var40;
30923   orc_union32 var41;
30924 
30925   ptr0 = (orc_union64 *) d1;
30926   ptr4 = (orc_union64 *) s1;
30927   ptr5 = (orc_union64 *) s2;
30928 
30929 
30930   for (i = 0; i < n; i++) {
30931     /* 0: loadq */
30932     var35 = ptr4[i];
30933     /* 1: splitql */
30934     {
30935       orc_union64 _src;
30936       _src.i = var35.i;
30937       var38.i = _src.x2[1];
30938       var39.i = _src.x2[0];
30939     }
30940     /* 2: loadq */
30941     var36 = ptr5[i];
30942     /* 3: select1ql */
30943     {
30944       orc_union64 _src;
30945       _src.i = var36.i;
30946       var40.i = _src.x2[1];
30947     }
30948     /* 4: avguw */
30949     var41.x2[0] =
30950         ((orc_uint16) var38.x2[0] + (orc_uint16) var40.x2[0] + 1) >> 1;
30951     var41.x2[1] =
30952         ((orc_uint16) var38.x2[1] + (orc_uint16) var40.x2[1] + 1) >> 1;
30953     /* 5: mergelq */
30954     {
30955       orc_union64 _dest;
30956       _dest.x2[0] = var39.i;
30957       _dest.x2[1] = var41.i;
30958       var37.i = _dest.i;
30959     }
30960     /* 6: storeq */
30961     ptr0[i] = var37;
30962   }
30963 
30964 }
30965 
30966 #else
30967 static void
_backup_video_orc_chroma_down_v2_u16(OrcExecutor * ORC_RESTRICT ex)30968 _backup_video_orc_chroma_down_v2_u16 (OrcExecutor * ORC_RESTRICT ex)
30969 {
30970   int i;
30971   int n = ex->n;
30972   orc_union64 *ORC_RESTRICT ptr0;
30973   const orc_union64 *ORC_RESTRICT ptr4;
30974   const orc_union64 *ORC_RESTRICT ptr5;
30975   orc_union64 var35;
30976   orc_union64 var36;
30977   orc_union64 var37;
30978   orc_union32 var38;
30979   orc_union32 var39;
30980   orc_union32 var40;
30981   orc_union32 var41;
30982 
30983   ptr0 = (orc_union64 *) ex->arrays[0];
30984   ptr4 = (orc_union64 *) ex->arrays[4];
30985   ptr5 = (orc_union64 *) ex->arrays[5];
30986 
30987 
30988   for (i = 0; i < n; i++) {
30989     /* 0: loadq */
30990     var35 = ptr4[i];
30991     /* 1: splitql */
30992     {
30993       orc_union64 _src;
30994       _src.i = var35.i;
30995       var38.i = _src.x2[1];
30996       var39.i = _src.x2[0];
30997     }
30998     /* 2: loadq */
30999     var36 = ptr5[i];
31000     /* 3: select1ql */
31001     {
31002       orc_union64 _src;
31003       _src.i = var36.i;
31004       var40.i = _src.x2[1];
31005     }
31006     /* 4: avguw */
31007     var41.x2[0] =
31008         ((orc_uint16) var38.x2[0] + (orc_uint16) var40.x2[0] + 1) >> 1;
31009     var41.x2[1] =
31010         ((orc_uint16) var38.x2[1] + (orc_uint16) var40.x2[1] + 1) >> 1;
31011     /* 5: mergelq */
31012     {
31013       orc_union64 _dest;
31014       _dest.x2[0] = var39.i;
31015       _dest.x2[1] = var41.i;
31016       var37.i = _dest.i;
31017     }
31018     /* 6: storeq */
31019     ptr0[i] = var37;
31020   }
31021 
31022 }
31023 
31024 void
video_orc_chroma_down_v2_u16(guint16 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,const guint16 * ORC_RESTRICT s2,int n)31025 video_orc_chroma_down_v2_u16 (guint16 * ORC_RESTRICT d1,
31026     const guint16 * ORC_RESTRICT s1, const guint16 * ORC_RESTRICT s2, int n)
31027 {
31028   OrcExecutor _ex, *ex = &_ex;
31029   static volatile int p_inited = 0;
31030   static OrcCode *c = 0;
31031   void (*func) (OrcExecutor *);
31032 
31033   if (!p_inited) {
31034     orc_once_mutex_lock ();
31035     if (!p_inited) {
31036       OrcProgram *p;
31037 
31038 #if 1
31039       static const orc_uint8 bc[] = {
31040         1, 9, 28, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 104, 114,
31041         111, 109, 97, 95, 100, 111, 119, 110, 95, 118, 50, 95, 117, 49, 54, 11,
31042         8, 8, 12, 8, 8, 12, 8, 8, 20, 4, 20, 4, 20, 4, 197, 33,
31043         32, 4, 193, 34, 5, 21, 1, 76, 33, 33, 34, 194, 0, 32, 33, 2,
31044         0,
31045       };
31046       p = orc_program_new_from_static_bytecode (bc);
31047       orc_program_set_backup_function (p, _backup_video_orc_chroma_down_v2_u16);
31048 #else
31049       p = orc_program_new ();
31050       orc_program_set_name (p, "video_orc_chroma_down_v2_u16");
31051       orc_program_set_backup_function (p, _backup_video_orc_chroma_down_v2_u16);
31052       orc_program_add_destination (p, 8, "d1");
31053       orc_program_add_source (p, 8, "s1");
31054       orc_program_add_source (p, 8, "s2");
31055       orc_program_add_temporary (p, 4, "t1");
31056       orc_program_add_temporary (p, 4, "t2");
31057       orc_program_add_temporary (p, 4, "t3");
31058 
31059       orc_program_append_2 (p, "splitql", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
31060           ORC_VAR_D1);
31061       orc_program_append_2 (p, "select1ql", 0, ORC_VAR_T3, ORC_VAR_S2,
31062           ORC_VAR_D1, ORC_VAR_D1);
31063       orc_program_append_2 (p, "avguw", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3,
31064           ORC_VAR_D1);
31065       orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
31066           ORC_VAR_D1);
31067 #endif
31068 
31069       orc_program_compile (p);
31070       c = orc_program_take_code (p);
31071       orc_program_free (p);
31072     }
31073     p_inited = TRUE;
31074     orc_once_mutex_unlock ();
31075   }
31076   ex->arrays[ORC_VAR_A2] = c;
31077   ex->program = 0;
31078 
31079   ex->n = n;
31080   ex->arrays[ORC_VAR_D1] = d1;
31081   ex->arrays[ORC_VAR_S1] = (void *) s1;
31082   ex->arrays[ORC_VAR_S2] = (void *) s2;
31083 
31084   func = c->exec;
31085   func (ex);
31086 }
31087 #endif
31088 
31089 
31090 /* video_orc_chroma_down_v4_u8 */
31091 #ifdef DISABLE_ORC
31092 void
video_orc_chroma_down_v4_u8(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,const guint8 * ORC_RESTRICT s3,const guint8 * ORC_RESTRICT s4,int n)31093 video_orc_chroma_down_v4_u8 (guint8 * ORC_RESTRICT d1,
31094     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
31095     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n)
31096 {
31097   int i;
31098   orc_union32 *ORC_RESTRICT ptr0;
31099   const orc_union32 *ORC_RESTRICT ptr4;
31100   const orc_union32 *ORC_RESTRICT ptr5;
31101   const orc_union32 *ORC_RESTRICT ptr6;
31102   const orc_union32 *ORC_RESTRICT ptr7;
31103   orc_union32 var37;
31104   orc_union32 var38;
31105   orc_union32 var39;
31106   orc_union32 var40;
31107 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
31108   volatile orc_union32 var41;
31109 #else
31110   orc_union32 var41;
31111 #endif
31112   orc_union32 var42;
31113   orc_union16 var43;
31114   orc_union16 var44;
31115   orc_union32 var45;
31116   orc_union16 var46;
31117   orc_union32 var47;
31118   orc_union32 var48;
31119   orc_union16 var49;
31120   orc_union32 var50;
31121   orc_union16 var51;
31122   orc_union32 var52;
31123   orc_union32 var53;
31124   orc_union32 var54;
31125   orc_union32 var55;
31126   orc_union32 var56;
31127   orc_union32 var57;
31128   orc_union32 var58;
31129   orc_union16 var59;
31130 
31131   ptr0 = (orc_union32 *) d1;
31132   ptr4 = (orc_union32 *) s1;
31133   ptr5 = (orc_union32 *) s2;
31134   ptr6 = (orc_union32 *) s3;
31135   ptr7 = (orc_union32 *) s4;
31136 
31137   /* 17: loadpw */
31138   var41.x2[0] = 0x00000004;     /* 4 or 1.97626e-323f */
31139   var41.x2[1] = 0x00000004;     /* 4 or 1.97626e-323f */
31140 
31141   for (i = 0; i < n; i++) {
31142     /* 0: loadl */
31143     var37 = ptr4[i];
31144     /* 1: splitlw */
31145     {
31146       orc_union32 _src;
31147       _src.i = var37.i;
31148       var43.i = _src.x2[1];
31149       var44.i = _src.x2[0];
31150     }
31151     /* 2: convubw */
31152     var45.x2[0] = (orc_uint8) var43.x2[0];
31153     var45.x2[1] = (orc_uint8) var43.x2[1];
31154     /* 3: loadl */
31155     var38 = ptr7[i];
31156     /* 4: select1lw */
31157     {
31158       orc_union32 _src;
31159       _src.i = var38.i;
31160       var46.i = _src.x2[1];
31161     }
31162     /* 5: convubw */
31163     var47.x2[0] = (orc_uint8) var46.x2[0];
31164     var47.x2[1] = (orc_uint8) var46.x2[1];
31165     /* 6: addw */
31166     var48.x2[0] = var45.x2[0] + var47.x2[0];
31167     var48.x2[1] = var45.x2[1] + var47.x2[1];
31168     /* 7: loadl */
31169     var39 = ptr5[i];
31170     /* 8: select1lw */
31171     {
31172       orc_union32 _src;
31173       _src.i = var39.i;
31174       var49.i = _src.x2[1];
31175     }
31176     /* 9: convubw */
31177     var50.x2[0] = (orc_uint8) var49.x2[0];
31178     var50.x2[1] = (orc_uint8) var49.x2[1];
31179     /* 10: loadl */
31180     var40 = ptr6[i];
31181     /* 11: select1lw */
31182     {
31183       orc_union32 _src;
31184       _src.i = var40.i;
31185       var51.i = _src.x2[1];
31186     }
31187     /* 12: convubw */
31188     var52.x2[0] = (orc_uint8) var51.x2[0];
31189     var52.x2[1] = (orc_uint8) var51.x2[1];
31190     /* 13: addw */
31191     var53.x2[0] = var50.x2[0] + var52.x2[0];
31192     var53.x2[1] = var50.x2[1] + var52.x2[1];
31193     /* 14: shlw */
31194     var54.x2[0] = ((orc_uint16) var53.x2[0]) << 1;
31195     var54.x2[1] = ((orc_uint16) var53.x2[1]) << 1;
31196     /* 15: addw */
31197     var55.x2[0] = var53.x2[0] + var54.x2[0];
31198     var55.x2[1] = var53.x2[1] + var54.x2[1];
31199     /* 16: addw */
31200     var56.x2[0] = var48.x2[0] + var55.x2[0];
31201     var56.x2[1] = var48.x2[1] + var55.x2[1];
31202     /* 18: addw */
31203     var57.x2[0] = var56.x2[0] + var41.x2[0];
31204     var57.x2[1] = var56.x2[1] + var41.x2[1];
31205     /* 19: shruw */
31206     var58.x2[0] = ((orc_uint16) var57.x2[0]) >> 3;
31207     var58.x2[1] = ((orc_uint16) var57.x2[1]) >> 3;
31208     /* 20: convsuswb */
31209     var59.x2[0] = ORC_CLAMP_UB (var58.x2[0]);
31210     var59.x2[1] = ORC_CLAMP_UB (var58.x2[1]);
31211     /* 21: mergewl */
31212     {
31213       orc_union32 _dest;
31214       _dest.x2[0] = var44.i;
31215       _dest.x2[1] = var59.i;
31216       var42.i = _dest.i;
31217     }
31218     /* 22: storel */
31219     ptr0[i] = var42;
31220   }
31221 
31222 }
31223 
31224 #else
31225 static void
_backup_video_orc_chroma_down_v4_u8(OrcExecutor * ORC_RESTRICT ex)31226 _backup_video_orc_chroma_down_v4_u8 (OrcExecutor * ORC_RESTRICT ex)
31227 {
31228   int i;
31229   int n = ex->n;
31230   orc_union32 *ORC_RESTRICT ptr0;
31231   const orc_union32 *ORC_RESTRICT ptr4;
31232   const orc_union32 *ORC_RESTRICT ptr5;
31233   const orc_union32 *ORC_RESTRICT ptr6;
31234   const orc_union32 *ORC_RESTRICT ptr7;
31235   orc_union32 var37;
31236   orc_union32 var38;
31237   orc_union32 var39;
31238   orc_union32 var40;
31239 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
31240   volatile orc_union32 var41;
31241 #else
31242   orc_union32 var41;
31243 #endif
31244   orc_union32 var42;
31245   orc_union16 var43;
31246   orc_union16 var44;
31247   orc_union32 var45;
31248   orc_union16 var46;
31249   orc_union32 var47;
31250   orc_union32 var48;
31251   orc_union16 var49;
31252   orc_union32 var50;
31253   orc_union16 var51;
31254   orc_union32 var52;
31255   orc_union32 var53;
31256   orc_union32 var54;
31257   orc_union32 var55;
31258   orc_union32 var56;
31259   orc_union32 var57;
31260   orc_union32 var58;
31261   orc_union16 var59;
31262 
31263   ptr0 = (orc_union32 *) ex->arrays[0];
31264   ptr4 = (orc_union32 *) ex->arrays[4];
31265   ptr5 = (orc_union32 *) ex->arrays[5];
31266   ptr6 = (orc_union32 *) ex->arrays[6];
31267   ptr7 = (orc_union32 *) ex->arrays[7];
31268 
31269   /* 17: loadpw */
31270   var41.x2[0] = 0x00000004;     /* 4 or 1.97626e-323f */
31271   var41.x2[1] = 0x00000004;     /* 4 or 1.97626e-323f */
31272 
31273   for (i = 0; i < n; i++) {
31274     /* 0: loadl */
31275     var37 = ptr4[i];
31276     /* 1: splitlw */
31277     {
31278       orc_union32 _src;
31279       _src.i = var37.i;
31280       var43.i = _src.x2[1];
31281       var44.i = _src.x2[0];
31282     }
31283     /* 2: convubw */
31284     var45.x2[0] = (orc_uint8) var43.x2[0];
31285     var45.x2[1] = (orc_uint8) var43.x2[1];
31286     /* 3: loadl */
31287     var38 = ptr7[i];
31288     /* 4: select1lw */
31289     {
31290       orc_union32 _src;
31291       _src.i = var38.i;
31292       var46.i = _src.x2[1];
31293     }
31294     /* 5: convubw */
31295     var47.x2[0] = (orc_uint8) var46.x2[0];
31296     var47.x2[1] = (orc_uint8) var46.x2[1];
31297     /* 6: addw */
31298     var48.x2[0] = var45.x2[0] + var47.x2[0];
31299     var48.x2[1] = var45.x2[1] + var47.x2[1];
31300     /* 7: loadl */
31301     var39 = ptr5[i];
31302     /* 8: select1lw */
31303     {
31304       orc_union32 _src;
31305       _src.i = var39.i;
31306       var49.i = _src.x2[1];
31307     }
31308     /* 9: convubw */
31309     var50.x2[0] = (orc_uint8) var49.x2[0];
31310     var50.x2[1] = (orc_uint8) var49.x2[1];
31311     /* 10: loadl */
31312     var40 = ptr6[i];
31313     /* 11: select1lw */
31314     {
31315       orc_union32 _src;
31316       _src.i = var40.i;
31317       var51.i = _src.x2[1];
31318     }
31319     /* 12: convubw */
31320     var52.x2[0] = (orc_uint8) var51.x2[0];
31321     var52.x2[1] = (orc_uint8) var51.x2[1];
31322     /* 13: addw */
31323     var53.x2[0] = var50.x2[0] + var52.x2[0];
31324     var53.x2[1] = var50.x2[1] + var52.x2[1];
31325     /* 14: shlw */
31326     var54.x2[0] = ((orc_uint16) var53.x2[0]) << 1;
31327     var54.x2[1] = ((orc_uint16) var53.x2[1]) << 1;
31328     /* 15: addw */
31329     var55.x2[0] = var53.x2[0] + var54.x2[0];
31330     var55.x2[1] = var53.x2[1] + var54.x2[1];
31331     /* 16: addw */
31332     var56.x2[0] = var48.x2[0] + var55.x2[0];
31333     var56.x2[1] = var48.x2[1] + var55.x2[1];
31334     /* 18: addw */
31335     var57.x2[0] = var56.x2[0] + var41.x2[0];
31336     var57.x2[1] = var56.x2[1] + var41.x2[1];
31337     /* 19: shruw */
31338     var58.x2[0] = ((orc_uint16) var57.x2[0]) >> 3;
31339     var58.x2[1] = ((orc_uint16) var57.x2[1]) >> 3;
31340     /* 20: convsuswb */
31341     var59.x2[0] = ORC_CLAMP_UB (var58.x2[0]);
31342     var59.x2[1] = ORC_CLAMP_UB (var58.x2[1]);
31343     /* 21: mergewl */
31344     {
31345       orc_union32 _dest;
31346       _dest.x2[0] = var44.i;
31347       _dest.x2[1] = var59.i;
31348       var42.i = _dest.i;
31349     }
31350     /* 22: storel */
31351     ptr0[i] = var42;
31352   }
31353 
31354 }
31355 
31356 void
video_orc_chroma_down_v4_u8(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,const guint8 * ORC_RESTRICT s2,const guint8 * ORC_RESTRICT s3,const guint8 * ORC_RESTRICT s4,int n)31357 video_orc_chroma_down_v4_u8 (guint8 * ORC_RESTRICT d1,
31358     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
31359     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n)
31360 {
31361   OrcExecutor _ex, *ex = &_ex;
31362   static volatile int p_inited = 0;
31363   static OrcCode *c = 0;
31364   void (*func) (OrcExecutor *);
31365 
31366   if (!p_inited) {
31367     orc_once_mutex_lock ();
31368     if (!p_inited) {
31369       OrcProgram *p;
31370 
31371 #if 1
31372       static const orc_uint8 bc[] = {
31373         1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 104, 114,
31374         111, 109, 97, 95, 100, 111, 119, 110, 95, 118, 52, 95, 117, 56, 11, 4,
31375         4, 12, 4, 4, 12, 4, 4, 12, 4, 4, 12, 4, 4, 14, 2, 1,
31376         0, 0, 0, 14, 2, 4, 0, 0, 0, 14, 2, 3, 0, 0, 0, 20,
31377         2, 20, 2, 20, 4, 20, 4, 20, 4, 198, 33, 32, 4, 21, 1, 150,
31378         34, 33, 191, 33, 7, 21, 1, 150, 35, 33, 21, 1, 70, 36, 34, 35,
31379         191, 33, 5, 21, 1, 150, 34, 33, 191, 33, 6, 21, 1, 150, 35, 33,
31380         21, 1, 70, 34, 34, 35, 21, 1, 93, 35, 34, 16, 21, 1, 70, 34,
31381         34, 35, 21, 1, 70, 36, 36, 34, 21, 1, 70, 36, 36, 17, 21, 1,
31382         95, 36, 36, 18, 21, 1, 160, 33, 36, 195, 0, 32, 33, 2, 0,
31383       };
31384       p = orc_program_new_from_static_bytecode (bc);
31385       orc_program_set_backup_function (p, _backup_video_orc_chroma_down_v4_u8);
31386 #else
31387       p = orc_program_new ();
31388       orc_program_set_name (p, "video_orc_chroma_down_v4_u8");
31389       orc_program_set_backup_function (p, _backup_video_orc_chroma_down_v4_u8);
31390       orc_program_add_destination (p, 4, "d1");
31391       orc_program_add_source (p, 4, "s1");
31392       orc_program_add_source (p, 4, "s2");
31393       orc_program_add_source (p, 4, "s3");
31394       orc_program_add_source (p, 4, "s4");
31395       orc_program_add_constant (p, 2, 0x00000001, "c1");
31396       orc_program_add_constant (p, 2, 0x00000004, "c2");
31397       orc_program_add_constant (p, 2, 0x00000003, "c3");
31398       orc_program_add_temporary (p, 2, "t1");
31399       orc_program_add_temporary (p, 2, "t2");
31400       orc_program_add_temporary (p, 4, "t3");
31401       orc_program_add_temporary (p, 4, "t4");
31402       orc_program_add_temporary (p, 4, "t5");
31403 
31404       orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
31405           ORC_VAR_D1);
31406       orc_program_append_2 (p, "convubw", 1, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1,
31407           ORC_VAR_D1);
31408       orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T2, ORC_VAR_S4,
31409           ORC_VAR_D1, ORC_VAR_D1);
31410       orc_program_append_2 (p, "convubw", 1, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_D1,
31411           ORC_VAR_D1);
31412       orc_program_append_2 (p, "addw", 1, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_T4,
31413           ORC_VAR_D1);
31414       orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T2, ORC_VAR_S2,
31415           ORC_VAR_D1, ORC_VAR_D1);
31416       orc_program_append_2 (p, "convubw", 1, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1,
31417           ORC_VAR_D1);
31418       orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T2, ORC_VAR_S3,
31419           ORC_VAR_D1, ORC_VAR_D1);
31420       orc_program_append_2 (p, "convubw", 1, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_D1,
31421           ORC_VAR_D1);
31422       orc_program_append_2 (p, "addw", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4,
31423           ORC_VAR_D1);
31424       orc_program_append_2 (p, "shlw", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_C1,
31425           ORC_VAR_D1);
31426       orc_program_append_2 (p, "addw", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4,
31427           ORC_VAR_D1);
31428       orc_program_append_2 (p, "addw", 1, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T3,
31429           ORC_VAR_D1);
31430       orc_program_append_2 (p, "addw", 1, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C2,
31431           ORC_VAR_D1);
31432       orc_program_append_2 (p, "shruw", 1, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C3,
31433           ORC_VAR_D1);
31434       orc_program_append_2 (p, "convsuswb", 1, ORC_VAR_T2, ORC_VAR_T5,
31435           ORC_VAR_D1, ORC_VAR_D1);
31436       orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
31437           ORC_VAR_D1);
31438 #endif
31439 
31440       orc_program_compile (p);
31441       c = orc_program_take_code (p);
31442       orc_program_free (p);
31443     }
31444     p_inited = TRUE;
31445     orc_once_mutex_unlock ();
31446   }
31447   ex->arrays[ORC_VAR_A2] = c;
31448   ex->program = 0;
31449 
31450   ex->n = n;
31451   ex->arrays[ORC_VAR_D1] = d1;
31452   ex->arrays[ORC_VAR_S1] = (void *) s1;
31453   ex->arrays[ORC_VAR_S2] = (void *) s2;
31454   ex->arrays[ORC_VAR_S3] = (void *) s3;
31455   ex->arrays[ORC_VAR_S4] = (void *) s4;
31456 
31457   func = c->exec;
31458   func (ex);
31459 }
31460 #endif
31461 
31462 
31463 /* video_orc_chroma_down_v4_u16 */
31464 #ifdef DISABLE_ORC
31465 void
video_orc_chroma_down_v4_u16(guint16 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,const guint16 * ORC_RESTRICT s2,const guint16 * ORC_RESTRICT s3,const guint16 * ORC_RESTRICT s4,int n)31466 video_orc_chroma_down_v4_u16 (guint16 * ORC_RESTRICT d1,
31467     const guint16 * ORC_RESTRICT s1, const guint16 * ORC_RESTRICT s2,
31468     const guint16 * ORC_RESTRICT s3, const guint16 * ORC_RESTRICT s4, int n)
31469 {
31470   int i;
31471   orc_union64 *ORC_RESTRICT ptr0;
31472   const orc_union64 *ORC_RESTRICT ptr4;
31473   const orc_union64 *ORC_RESTRICT ptr5;
31474   const orc_union64 *ORC_RESTRICT ptr6;
31475   const orc_union64 *ORC_RESTRICT ptr7;
31476   orc_union64 var37;
31477   orc_union64 var38;
31478   orc_union64 var39;
31479   orc_union64 var40;
31480 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
31481   volatile orc_union64 var41;
31482 #else
31483   orc_union64 var41;
31484 #endif
31485   orc_union64 var42;
31486   orc_union32 var43;
31487   orc_union32 var44;
31488   orc_union64 var45;
31489   orc_union32 var46;
31490   orc_union64 var47;
31491   orc_union64 var48;
31492   orc_union32 var49;
31493   orc_union64 var50;
31494   orc_union32 var51;
31495   orc_union64 var52;
31496   orc_union64 var53;
31497   orc_union64 var54;
31498   orc_union64 var55;
31499   orc_union64 var56;
31500   orc_union64 var57;
31501   orc_union64 var58;
31502   orc_union32 var59;
31503 
31504   ptr0 = (orc_union64 *) d1;
31505   ptr4 = (orc_union64 *) s1;
31506   ptr5 = (orc_union64 *) s2;
31507   ptr6 = (orc_union64 *) s3;
31508   ptr7 = (orc_union64 *) s4;
31509 
31510   /* 17: loadpl */
31511   var41.x2[0] = 0x00000004;     /* 4 or 1.97626e-323f */
31512   var41.x2[1] = 0x00000004;     /* 4 or 1.97626e-323f */
31513 
31514   for (i = 0; i < n; i++) {
31515     /* 0: loadq */
31516     var37 = ptr4[i];
31517     /* 1: splitql */
31518     {
31519       orc_union64 _src;
31520       _src.i = var37.i;
31521       var43.i = _src.x2[1];
31522       var44.i = _src.x2[0];
31523     }
31524     /* 2: convuwl */
31525     var45.x2[0] = (orc_uint16) var43.x2[0];
31526     var45.x2[1] = (orc_uint16) var43.x2[1];
31527     /* 3: loadq */
31528     var38 = ptr7[i];
31529     /* 4: select1ql */
31530     {
31531       orc_union64 _src;
31532       _src.i = var38.i;
31533       var46.i = _src.x2[1];
31534     }
31535     /* 5: convuwl */
31536     var47.x2[0] = (orc_uint16) var46.x2[0];
31537     var47.x2[1] = (orc_uint16) var46.x2[1];
31538     /* 6: addl */
31539     var48.x2[0] = ((orc_uint32) var45.x2[0]) + ((orc_uint32) var47.x2[0]);
31540     var48.x2[1] = ((orc_uint32) var45.x2[1]) + ((orc_uint32) var47.x2[1]);
31541     /* 7: loadq */
31542     var39 = ptr5[i];
31543     /* 8: select1ql */
31544     {
31545       orc_union64 _src;
31546       _src.i = var39.i;
31547       var49.i = _src.x2[1];
31548     }
31549     /* 9: convuwl */
31550     var50.x2[0] = (orc_uint16) var49.x2[0];
31551     var50.x2[1] = (orc_uint16) var49.x2[1];
31552     /* 10: loadq */
31553     var40 = ptr6[i];
31554     /* 11: select1ql */
31555     {
31556       orc_union64 _src;
31557       _src.i = var40.i;
31558       var51.i = _src.x2[1];
31559     }
31560     /* 12: convuwl */
31561     var52.x2[0] = (orc_uint16) var51.x2[0];
31562     var52.x2[1] = (orc_uint16) var51.x2[1];
31563     /* 13: addl */
31564     var53.x2[0] = ((orc_uint32) var50.x2[0]) + ((orc_uint32) var52.x2[0]);
31565     var53.x2[1] = ((orc_uint32) var50.x2[1]) + ((orc_uint32) var52.x2[1]);
31566     /* 14: shll */
31567     var54.x2[0] = ((orc_uint32) var53.x2[0]) << 1;
31568     var54.x2[1] = ((orc_uint32) var53.x2[1]) << 1;
31569     /* 15: addl */
31570     var55.x2[0] = ((orc_uint32) var53.x2[0]) + ((orc_uint32) var54.x2[0]);
31571     var55.x2[1] = ((orc_uint32) var53.x2[1]) + ((orc_uint32) var54.x2[1]);
31572     /* 16: addl */
31573     var56.x2[0] = ((orc_uint32) var48.x2[0]) + ((orc_uint32) var55.x2[0]);
31574     var56.x2[1] = ((orc_uint32) var48.x2[1]) + ((orc_uint32) var55.x2[1]);
31575     /* 18: addl */
31576     var57.x2[0] = ((orc_uint32) var56.x2[0]) + ((orc_uint32) var41.x2[0]);
31577     var57.x2[1] = ((orc_uint32) var56.x2[1]) + ((orc_uint32) var41.x2[1]);
31578     /* 19: shrul */
31579     var58.x2[0] = ((orc_uint32) var57.x2[0]) >> 3;
31580     var58.x2[1] = ((orc_uint32) var57.x2[1]) >> 3;
31581     /* 20: convsuslw */
31582     var59.x2[0] = ORC_CLAMP_UW (var58.x2[0]);
31583     var59.x2[1] = ORC_CLAMP_UW (var58.x2[1]);
31584     /* 21: mergelq */
31585     {
31586       orc_union64 _dest;
31587       _dest.x2[0] = var44.i;
31588       _dest.x2[1] = var59.i;
31589       var42.i = _dest.i;
31590     }
31591     /* 22: storeq */
31592     ptr0[i] = var42;
31593   }
31594 
31595 }
31596 
31597 #else
31598 static void
_backup_video_orc_chroma_down_v4_u16(OrcExecutor * ORC_RESTRICT ex)31599 _backup_video_orc_chroma_down_v4_u16 (OrcExecutor * ORC_RESTRICT ex)
31600 {
31601   int i;
31602   int n = ex->n;
31603   orc_union64 *ORC_RESTRICT ptr0;
31604   const orc_union64 *ORC_RESTRICT ptr4;
31605   const orc_union64 *ORC_RESTRICT ptr5;
31606   const orc_union64 *ORC_RESTRICT ptr6;
31607   const orc_union64 *ORC_RESTRICT ptr7;
31608   orc_union64 var37;
31609   orc_union64 var38;
31610   orc_union64 var39;
31611   orc_union64 var40;
31612 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
31613   volatile orc_union64 var41;
31614 #else
31615   orc_union64 var41;
31616 #endif
31617   orc_union64 var42;
31618   orc_union32 var43;
31619   orc_union32 var44;
31620   orc_union64 var45;
31621   orc_union32 var46;
31622   orc_union64 var47;
31623   orc_union64 var48;
31624   orc_union32 var49;
31625   orc_union64 var50;
31626   orc_union32 var51;
31627   orc_union64 var52;
31628   orc_union64 var53;
31629   orc_union64 var54;
31630   orc_union64 var55;
31631   orc_union64 var56;
31632   orc_union64 var57;
31633   orc_union64 var58;
31634   orc_union32 var59;
31635 
31636   ptr0 = (orc_union64 *) ex->arrays[0];
31637   ptr4 = (orc_union64 *) ex->arrays[4];
31638   ptr5 = (orc_union64 *) ex->arrays[5];
31639   ptr6 = (orc_union64 *) ex->arrays[6];
31640   ptr7 = (orc_union64 *) ex->arrays[7];
31641 
31642   /* 17: loadpl */
31643   var41.x2[0] = 0x00000004;     /* 4 or 1.97626e-323f */
31644   var41.x2[1] = 0x00000004;     /* 4 or 1.97626e-323f */
31645 
31646   for (i = 0; i < n; i++) {
31647     /* 0: loadq */
31648     var37 = ptr4[i];
31649     /* 1: splitql */
31650     {
31651       orc_union64 _src;
31652       _src.i = var37.i;
31653       var43.i = _src.x2[1];
31654       var44.i = _src.x2[0];
31655     }
31656     /* 2: convuwl */
31657     var45.x2[0] = (orc_uint16) var43.x2[0];
31658     var45.x2[1] = (orc_uint16) var43.x2[1];
31659     /* 3: loadq */
31660     var38 = ptr7[i];
31661     /* 4: select1ql */
31662     {
31663       orc_union64 _src;
31664       _src.i = var38.i;
31665       var46.i = _src.x2[1];
31666     }
31667     /* 5: convuwl */
31668     var47.x2[0] = (orc_uint16) var46.x2[0];
31669     var47.x2[1] = (orc_uint16) var46.x2[1];
31670     /* 6: addl */
31671     var48.x2[0] = ((orc_uint32) var45.x2[0]) + ((orc_uint32) var47.x2[0]);
31672     var48.x2[1] = ((orc_uint32) var45.x2[1]) + ((orc_uint32) var47.x2[1]);
31673     /* 7: loadq */
31674     var39 = ptr5[i];
31675     /* 8: select1ql */
31676     {
31677       orc_union64 _src;
31678       _src.i = var39.i;
31679       var49.i = _src.x2[1];
31680     }
31681     /* 9: convuwl */
31682     var50.x2[0] = (orc_uint16) var49.x2[0];
31683     var50.x2[1] = (orc_uint16) var49.x2[1];
31684     /* 10: loadq */
31685     var40 = ptr6[i];
31686     /* 11: select1ql */
31687     {
31688       orc_union64 _src;
31689       _src.i = var40.i;
31690       var51.i = _src.x2[1];
31691     }
31692     /* 12: convuwl */
31693     var52.x2[0] = (orc_uint16) var51.x2[0];
31694     var52.x2[1] = (orc_uint16) var51.x2[1];
31695     /* 13: addl */
31696     var53.x2[0] = ((orc_uint32) var50.x2[0]) + ((orc_uint32) var52.x2[0]);
31697     var53.x2[1] = ((orc_uint32) var50.x2[1]) + ((orc_uint32) var52.x2[1]);
31698     /* 14: shll */
31699     var54.x2[0] = ((orc_uint32) var53.x2[0]) << 1;
31700     var54.x2[1] = ((orc_uint32) var53.x2[1]) << 1;
31701     /* 15: addl */
31702     var55.x2[0] = ((orc_uint32) var53.x2[0]) + ((orc_uint32) var54.x2[0]);
31703     var55.x2[1] = ((orc_uint32) var53.x2[1]) + ((orc_uint32) var54.x2[1]);
31704     /* 16: addl */
31705     var56.x2[0] = ((orc_uint32) var48.x2[0]) + ((orc_uint32) var55.x2[0]);
31706     var56.x2[1] = ((orc_uint32) var48.x2[1]) + ((orc_uint32) var55.x2[1]);
31707     /* 18: addl */
31708     var57.x2[0] = ((orc_uint32) var56.x2[0]) + ((orc_uint32) var41.x2[0]);
31709     var57.x2[1] = ((orc_uint32) var56.x2[1]) + ((orc_uint32) var41.x2[1]);
31710     /* 19: shrul */
31711     var58.x2[0] = ((orc_uint32) var57.x2[0]) >> 3;
31712     var58.x2[1] = ((orc_uint32) var57.x2[1]) >> 3;
31713     /* 20: convsuslw */
31714     var59.x2[0] = ORC_CLAMP_UW (var58.x2[0]);
31715     var59.x2[1] = ORC_CLAMP_UW (var58.x2[1]);
31716     /* 21: mergelq */
31717     {
31718       orc_union64 _dest;
31719       _dest.x2[0] = var44.i;
31720       _dest.x2[1] = var59.i;
31721       var42.i = _dest.i;
31722     }
31723     /* 22: storeq */
31724     ptr0[i] = var42;
31725   }
31726 
31727 }
31728 
31729 void
video_orc_chroma_down_v4_u16(guint16 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,const guint16 * ORC_RESTRICT s2,const guint16 * ORC_RESTRICT s3,const guint16 * ORC_RESTRICT s4,int n)31730 video_orc_chroma_down_v4_u16 (guint16 * ORC_RESTRICT d1,
31731     const guint16 * ORC_RESTRICT s1, const guint16 * ORC_RESTRICT s2,
31732     const guint16 * ORC_RESTRICT s3, const guint16 * ORC_RESTRICT s4, int n)
31733 {
31734   OrcExecutor _ex, *ex = &_ex;
31735   static volatile int p_inited = 0;
31736   static OrcCode *c = 0;
31737   void (*func) (OrcExecutor *);
31738 
31739   if (!p_inited) {
31740     orc_once_mutex_lock ();
31741     if (!p_inited) {
31742       OrcProgram *p;
31743 
31744 #if 1
31745       static const orc_uint8 bc[] = {
31746         1, 9, 28, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 104, 114,
31747         111, 109, 97, 95, 100, 111, 119, 110, 95, 118, 52, 95, 117, 49, 54, 11,
31748         8, 8, 12, 8, 8, 12, 8, 8, 12, 8, 8, 12, 8, 8, 14, 4,
31749         1, 0, 0, 0, 14, 4, 4, 0, 0, 0, 14, 4, 3, 0, 0, 0,
31750         20, 4, 20, 4, 20, 8, 20, 8, 20, 8, 197, 33, 32, 4, 21, 1,
31751         154, 34, 33, 193, 33, 7, 21, 1, 154, 35, 33, 21, 1, 103, 36, 34,
31752         35, 193, 33, 5, 21, 1, 154, 34, 33, 193, 33, 6, 21, 1, 154, 35,
31753         33, 21, 1, 103, 34, 34, 35, 21, 1, 124, 35, 34, 16, 21, 1, 103,
31754         34, 34, 35, 21, 1, 103, 36, 36, 34, 21, 1, 103, 36, 36, 17, 21,
31755         1, 126, 36, 36, 18, 21, 1, 166, 33, 36, 194, 0, 32, 33, 2, 0,
31756 
31757       };
31758       p = orc_program_new_from_static_bytecode (bc);
31759       orc_program_set_backup_function (p, _backup_video_orc_chroma_down_v4_u16);
31760 #else
31761       p = orc_program_new ();
31762       orc_program_set_name (p, "video_orc_chroma_down_v4_u16");
31763       orc_program_set_backup_function (p, _backup_video_orc_chroma_down_v4_u16);
31764       orc_program_add_destination (p, 8, "d1");
31765       orc_program_add_source (p, 8, "s1");
31766       orc_program_add_source (p, 8, "s2");
31767       orc_program_add_source (p, 8, "s3");
31768       orc_program_add_source (p, 8, "s4");
31769       orc_program_add_constant (p, 4, 0x00000001, "c1");
31770       orc_program_add_constant (p, 4, 0x00000004, "c2");
31771       orc_program_add_constant (p, 4, 0x00000003, "c3");
31772       orc_program_add_temporary (p, 4, "t1");
31773       orc_program_add_temporary (p, 4, "t2");
31774       orc_program_add_temporary (p, 8, "t3");
31775       orc_program_add_temporary (p, 8, "t4");
31776       orc_program_add_temporary (p, 8, "t5");
31777 
31778       orc_program_append_2 (p, "splitql", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
31779           ORC_VAR_D1);
31780       orc_program_append_2 (p, "convuwl", 1, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1,
31781           ORC_VAR_D1);
31782       orc_program_append_2 (p, "select1ql", 0, ORC_VAR_T2, ORC_VAR_S4,
31783           ORC_VAR_D1, ORC_VAR_D1);
31784       orc_program_append_2 (p, "convuwl", 1, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_D1,
31785           ORC_VAR_D1);
31786       orc_program_append_2 (p, "addl", 1, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_T4,
31787           ORC_VAR_D1);
31788       orc_program_append_2 (p, "select1ql", 0, ORC_VAR_T2, ORC_VAR_S2,
31789           ORC_VAR_D1, ORC_VAR_D1);
31790       orc_program_append_2 (p, "convuwl", 1, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1,
31791           ORC_VAR_D1);
31792       orc_program_append_2 (p, "select1ql", 0, ORC_VAR_T2, ORC_VAR_S3,
31793           ORC_VAR_D1, ORC_VAR_D1);
31794       orc_program_append_2 (p, "convuwl", 1, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_D1,
31795           ORC_VAR_D1);
31796       orc_program_append_2 (p, "addl", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4,
31797           ORC_VAR_D1);
31798       orc_program_append_2 (p, "shll", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_C1,
31799           ORC_VAR_D1);
31800       orc_program_append_2 (p, "addl", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4,
31801           ORC_VAR_D1);
31802       orc_program_append_2 (p, "addl", 1, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T3,
31803           ORC_VAR_D1);
31804       orc_program_append_2 (p, "addl", 1, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C2,
31805           ORC_VAR_D1);
31806       orc_program_append_2 (p, "shrul", 1, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C3,
31807           ORC_VAR_D1);
31808       orc_program_append_2 (p, "convsuslw", 1, ORC_VAR_T2, ORC_VAR_T5,
31809           ORC_VAR_D1, ORC_VAR_D1);
31810       orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
31811           ORC_VAR_D1);
31812 #endif
31813 
31814       orc_program_compile (p);
31815       c = orc_program_take_code (p);
31816       orc_program_free (p);
31817     }
31818     p_inited = TRUE;
31819     orc_once_mutex_unlock ();
31820   }
31821   ex->arrays[ORC_VAR_A2] = c;
31822   ex->program = 0;
31823 
31824   ex->n = n;
31825   ex->arrays[ORC_VAR_D1] = d1;
31826   ex->arrays[ORC_VAR_S1] = (void *) s1;
31827   ex->arrays[ORC_VAR_S2] = (void *) s2;
31828   ex->arrays[ORC_VAR_S3] = (void *) s3;
31829   ex->arrays[ORC_VAR_S4] = (void *) s4;
31830 
31831   func = c->exec;
31832   func (ex);
31833 }
31834 #endif
31835 
31836 
31837 /* video_orc_dither_none_4u8_mask */
31838 #ifdef DISABLE_ORC
31839 void
video_orc_dither_none_4u8_mask(guint8 * ORC_RESTRICT d1,int p1,int n)31840 video_orc_dither_none_4u8_mask (guint8 * ORC_RESTRICT d1, int p1, int n)
31841 {
31842   int i;
31843   orc_union32 *ORC_RESTRICT ptr0;
31844   orc_union32 var33;
31845   orc_union32 var34;
31846   orc_union32 var35;
31847 
31848   ptr0 = (orc_union32 *) d1;
31849 
31850   /* 0: loadpl */
31851   var35.i = p1;
31852 
31853   for (i = 0; i < n; i++) {
31854     /* 1: loadl */
31855     var33 = ptr0[i];
31856     /* 2: andnb */
31857     var34.x4[0] = (~var35.x4[0]) & var33.x4[0];
31858     var34.x4[1] = (~var35.x4[1]) & var33.x4[1];
31859     var34.x4[2] = (~var35.x4[2]) & var33.x4[2];
31860     var34.x4[3] = (~var35.x4[3]) & var33.x4[3];
31861     /* 3: storel */
31862     ptr0[i] = var34;
31863   }
31864 
31865 }
31866 
31867 #else
31868 static void
_backup_video_orc_dither_none_4u8_mask(OrcExecutor * ORC_RESTRICT ex)31869 _backup_video_orc_dither_none_4u8_mask (OrcExecutor * ORC_RESTRICT ex)
31870 {
31871   int i;
31872   int n = ex->n;
31873   orc_union32 *ORC_RESTRICT ptr0;
31874   orc_union32 var33;
31875   orc_union32 var34;
31876   orc_union32 var35;
31877 
31878   ptr0 = (orc_union32 *) ex->arrays[0];
31879 
31880   /* 0: loadpl */
31881   var35.i = ex->params[24];
31882 
31883   for (i = 0; i < n; i++) {
31884     /* 1: loadl */
31885     var33 = ptr0[i];
31886     /* 2: andnb */
31887     var34.x4[0] = (~var35.x4[0]) & var33.x4[0];
31888     var34.x4[1] = (~var35.x4[1]) & var33.x4[1];
31889     var34.x4[2] = (~var35.x4[2]) & var33.x4[2];
31890     var34.x4[3] = (~var35.x4[3]) & var33.x4[3];
31891     /* 3: storel */
31892     ptr0[i] = var34;
31893   }
31894 
31895 }
31896 
31897 void
video_orc_dither_none_4u8_mask(guint8 * ORC_RESTRICT d1,int p1,int n)31898 video_orc_dither_none_4u8_mask (guint8 * ORC_RESTRICT d1, int p1, int n)
31899 {
31900   OrcExecutor _ex, *ex = &_ex;
31901   static volatile int p_inited = 0;
31902   static OrcCode *c = 0;
31903   void (*func) (OrcExecutor *);
31904 
31905   if (!p_inited) {
31906     orc_once_mutex_lock ();
31907     if (!p_inited) {
31908       OrcProgram *p;
31909 
31910 #if 1
31911       static const orc_uint8 bc[] = {
31912         1, 9, 30, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 100, 105, 116,
31913         104, 101, 114, 95, 110, 111, 110, 101, 95, 52, 117, 56, 95, 109, 97,
31914             115,
31915         107, 11, 4, 4, 16, 4, 20, 4, 115, 32, 24, 21, 2, 37, 0, 32,
31916         0, 2, 0,
31917       };
31918       p = orc_program_new_from_static_bytecode (bc);
31919       orc_program_set_backup_function (p,
31920           _backup_video_orc_dither_none_4u8_mask);
31921 #else
31922       p = orc_program_new ();
31923       orc_program_set_name (p, "video_orc_dither_none_4u8_mask");
31924       orc_program_set_backup_function (p,
31925           _backup_video_orc_dither_none_4u8_mask);
31926       orc_program_add_destination (p, 4, "d1");
31927       orc_program_add_parameter (p, 4, "p1");
31928       orc_program_add_temporary (p, 4, "t1");
31929 
31930       orc_program_append_2 (p, "loadpl", 0, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1,
31931           ORC_VAR_D1);
31932       orc_program_append_2 (p, "andnb", 2, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
31933           ORC_VAR_D1);
31934 #endif
31935 
31936       orc_program_compile (p);
31937       c = orc_program_take_code (p);
31938       orc_program_free (p);
31939     }
31940     p_inited = TRUE;
31941     orc_once_mutex_unlock ();
31942   }
31943   ex->arrays[ORC_VAR_A2] = c;
31944   ex->program = 0;
31945 
31946   ex->n = n;
31947   ex->arrays[ORC_VAR_D1] = d1;
31948   ex->params[ORC_VAR_P1] = p1;
31949 
31950   func = c->exec;
31951   func (ex);
31952 }
31953 #endif
31954 
31955 
31956 /* video_orc_dither_none_4u16_mask */
31957 #ifdef DISABLE_ORC
31958 void
video_orc_dither_none_4u16_mask(guint16 * ORC_RESTRICT d1,orc_int64 p1,int n)31959 video_orc_dither_none_4u16_mask (guint16 * ORC_RESTRICT d1, orc_int64 p1, int n)
31960 {
31961   int i;
31962   orc_union64 *ORC_RESTRICT ptr0;
31963   orc_union64 var33;
31964   orc_union64 var34;
31965   orc_union64 var35;
31966 
31967   ptr0 = (orc_union64 *) d1;
31968 
31969   /* 0: loadpq */
31970   var35.i = p1;
31971 
31972   for (i = 0; i < n; i++) {
31973     /* 1: loadq */
31974     var33 = ptr0[i];
31975     /* 2: andnw */
31976     var34.x4[0] = (~var35.x4[0]) & var33.x4[0];
31977     var34.x4[1] = (~var35.x4[1]) & var33.x4[1];
31978     var34.x4[2] = (~var35.x4[2]) & var33.x4[2];
31979     var34.x4[3] = (~var35.x4[3]) & var33.x4[3];
31980     /* 3: storeq */
31981     ptr0[i] = var34;
31982   }
31983 
31984 }
31985 
31986 #else
31987 static void
_backup_video_orc_dither_none_4u16_mask(OrcExecutor * ORC_RESTRICT ex)31988 _backup_video_orc_dither_none_4u16_mask (OrcExecutor * ORC_RESTRICT ex)
31989 {
31990   int i;
31991   int n = ex->n;
31992   orc_union64 *ORC_RESTRICT ptr0;
31993   orc_union64 var33;
31994   orc_union64 var34;
31995   orc_union64 var35;
31996 
31997   ptr0 = (orc_union64 *) ex->arrays[0];
31998 
31999   /* 0: loadpq */
32000   var35.i =
32001       (ex->params[24] & 0xffffffff) | ((orc_uint64) (ex->params[24 +
32002               (ORC_VAR_T1 - ORC_VAR_P1)]) << 32);
32003 
32004   for (i = 0; i < n; i++) {
32005     /* 1: loadq */
32006     var33 = ptr0[i];
32007     /* 2: andnw */
32008     var34.x4[0] = (~var35.x4[0]) & var33.x4[0];
32009     var34.x4[1] = (~var35.x4[1]) & var33.x4[1];
32010     var34.x4[2] = (~var35.x4[2]) & var33.x4[2];
32011     var34.x4[3] = (~var35.x4[3]) & var33.x4[3];
32012     /* 3: storeq */
32013     ptr0[i] = var34;
32014   }
32015 
32016 }
32017 
32018 void
video_orc_dither_none_4u16_mask(guint16 * ORC_RESTRICT d1,orc_int64 p1,int n)32019 video_orc_dither_none_4u16_mask (guint16 * ORC_RESTRICT d1, orc_int64 p1, int n)
32020 {
32021   OrcExecutor _ex, *ex = &_ex;
32022   static volatile int p_inited = 0;
32023   static OrcCode *c = 0;
32024   void (*func) (OrcExecutor *);
32025 
32026   if (!p_inited) {
32027     orc_once_mutex_lock ();
32028     if (!p_inited) {
32029       OrcProgram *p;
32030 
32031 #if 1
32032       static const orc_uint8 bc[] = {
32033         1, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 100, 105, 116,
32034         104, 101, 114, 95, 110, 111, 110, 101, 95, 52, 117, 49, 54, 95, 109, 97,
32035         115, 107, 11, 8, 8, 18, 8, 20, 8, 134, 32, 24, 21, 2, 74, 0,
32036         32, 0, 2, 0,
32037       };
32038       p = orc_program_new_from_static_bytecode (bc);
32039       orc_program_set_backup_function (p,
32040           _backup_video_orc_dither_none_4u16_mask);
32041 #else
32042       p = orc_program_new ();
32043       orc_program_set_name (p, "video_orc_dither_none_4u16_mask");
32044       orc_program_set_backup_function (p,
32045           _backup_video_orc_dither_none_4u16_mask);
32046       orc_program_add_destination (p, 8, "d1");
32047       orc_program_add_parameter_int64 (p, 8, "p1");
32048       orc_program_add_temporary (p, 8, "t1");
32049 
32050       orc_program_append_2 (p, "loadpq", 0, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1,
32051           ORC_VAR_D1);
32052       orc_program_append_2 (p, "andnw", 2, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
32053           ORC_VAR_D1);
32054 #endif
32055 
32056       orc_program_compile (p);
32057       c = orc_program_take_code (p);
32058       orc_program_free (p);
32059     }
32060     p_inited = TRUE;
32061     orc_once_mutex_unlock ();
32062   }
32063   ex->arrays[ORC_VAR_A2] = c;
32064   ex->program = 0;
32065 
32066   ex->n = n;
32067   ex->arrays[ORC_VAR_D1] = d1;
32068   {
32069     orc_union64 tmp;
32070     tmp.i = p1;
32071     ex->params[ORC_VAR_P1] = ((orc_uint64) tmp.i) & 0xffffffff;
32072     ex->params[ORC_VAR_T1] = ((orc_uint64) tmp.i) >> 32;
32073   }
32074 
32075   func = c->exec;
32076   func (ex);
32077 }
32078 #endif
32079 
32080 
32081 /* video_orc_dither_verterr_4u8_mask */
32082 #ifdef DISABLE_ORC
32083 void
video_orc_dither_verterr_4u8_mask(guint8 * ORC_RESTRICT d1,guint16 * ORC_RESTRICT d2,orc_int64 p1,int n)32084 video_orc_dither_verterr_4u8_mask (guint8 * ORC_RESTRICT d1,
32085     guint16 * ORC_RESTRICT d2, orc_int64 p1, int n)
32086 {
32087   int i;
32088   orc_union32 *ORC_RESTRICT ptr0;
32089   orc_union64 *ORC_RESTRICT ptr1;
32090   orc_union32 var34;
32091   orc_union64 var35;
32092   orc_union64 var36;
32093   orc_union32 var37;
32094   orc_union64 var38;
32095   orc_union64 var39;
32096   orc_union64 var40;
32097   orc_union64 var41;
32098 
32099   ptr0 = (orc_union32 *) d1;
32100   ptr1 = (orc_union64 *) d2;
32101 
32102   /* 0: loadpq */
32103   var38.i = p1;
32104 
32105   for (i = 0; i < n; i++) {
32106     /* 1: loadl */
32107     var34 = ptr0[i];
32108     /* 2: convubw */
32109     var39.x4[0] = (orc_uint8) var34.x4[0];
32110     var39.x4[1] = (orc_uint8) var34.x4[1];
32111     var39.x4[2] = (orc_uint8) var34.x4[2];
32112     var39.x4[3] = (orc_uint8) var34.x4[3];
32113     /* 3: loadq */
32114     var35 = ptr1[i];
32115     /* 4: addw */
32116     var40.x4[0] = var35.x4[0] + var39.x4[0];
32117     var40.x4[1] = var35.x4[1] + var39.x4[1];
32118     var40.x4[2] = var35.x4[2] + var39.x4[2];
32119     var40.x4[3] = var35.x4[3] + var39.x4[3];
32120     /* 5: andw */
32121     var36.x4[0] = var38.x4[0] & var40.x4[0];
32122     var36.x4[1] = var38.x4[1] & var40.x4[1];
32123     var36.x4[2] = var38.x4[2] & var40.x4[2];
32124     var36.x4[3] = var38.x4[3] & var40.x4[3];
32125     /* 6: storeq */
32126     ptr1[i] = var36;
32127     /* 7: andnw */
32128     var41.x4[0] = (~var38.x4[0]) & var40.x4[0];
32129     var41.x4[1] = (~var38.x4[1]) & var40.x4[1];
32130     var41.x4[2] = (~var38.x4[2]) & var40.x4[2];
32131     var41.x4[3] = (~var38.x4[3]) & var40.x4[3];
32132     /* 8: convsuswb */
32133     var37.x4[0] = ORC_CLAMP_UB (var41.x4[0]);
32134     var37.x4[1] = ORC_CLAMP_UB (var41.x4[1]);
32135     var37.x4[2] = ORC_CLAMP_UB (var41.x4[2]);
32136     var37.x4[3] = ORC_CLAMP_UB (var41.x4[3]);
32137     /* 9: storel */
32138     ptr0[i] = var37;
32139   }
32140 
32141 }
32142 
32143 #else
32144 static void
_backup_video_orc_dither_verterr_4u8_mask(OrcExecutor * ORC_RESTRICT ex)32145 _backup_video_orc_dither_verterr_4u8_mask (OrcExecutor * ORC_RESTRICT ex)
32146 {
32147   int i;
32148   int n = ex->n;
32149   orc_union32 *ORC_RESTRICT ptr0;
32150   orc_union64 *ORC_RESTRICT ptr1;
32151   orc_union32 var34;
32152   orc_union64 var35;
32153   orc_union64 var36;
32154   orc_union32 var37;
32155   orc_union64 var38;
32156   orc_union64 var39;
32157   orc_union64 var40;
32158   orc_union64 var41;
32159 
32160   ptr0 = (orc_union32 *) ex->arrays[0];
32161   ptr1 = (orc_union64 *) ex->arrays[1];
32162 
32163   /* 0: loadpq */
32164   var38.i =
32165       (ex->params[24] & 0xffffffff) | ((orc_uint64) (ex->params[24 +
32166               (ORC_VAR_T1 - ORC_VAR_P1)]) << 32);
32167 
32168   for (i = 0; i < n; i++) {
32169     /* 1: loadl */
32170     var34 = ptr0[i];
32171     /* 2: convubw */
32172     var39.x4[0] = (orc_uint8) var34.x4[0];
32173     var39.x4[1] = (orc_uint8) var34.x4[1];
32174     var39.x4[2] = (orc_uint8) var34.x4[2];
32175     var39.x4[3] = (orc_uint8) var34.x4[3];
32176     /* 3: loadq */
32177     var35 = ptr1[i];
32178     /* 4: addw */
32179     var40.x4[0] = var35.x4[0] + var39.x4[0];
32180     var40.x4[1] = var35.x4[1] + var39.x4[1];
32181     var40.x4[2] = var35.x4[2] + var39.x4[2];
32182     var40.x4[3] = var35.x4[3] + var39.x4[3];
32183     /* 5: andw */
32184     var36.x4[0] = var38.x4[0] & var40.x4[0];
32185     var36.x4[1] = var38.x4[1] & var40.x4[1];
32186     var36.x4[2] = var38.x4[2] & var40.x4[2];
32187     var36.x4[3] = var38.x4[3] & var40.x4[3];
32188     /* 6: storeq */
32189     ptr1[i] = var36;
32190     /* 7: andnw */
32191     var41.x4[0] = (~var38.x4[0]) & var40.x4[0];
32192     var41.x4[1] = (~var38.x4[1]) & var40.x4[1];
32193     var41.x4[2] = (~var38.x4[2]) & var40.x4[2];
32194     var41.x4[3] = (~var38.x4[3]) & var40.x4[3];
32195     /* 8: convsuswb */
32196     var37.x4[0] = ORC_CLAMP_UB (var41.x4[0]);
32197     var37.x4[1] = ORC_CLAMP_UB (var41.x4[1]);
32198     var37.x4[2] = ORC_CLAMP_UB (var41.x4[2]);
32199     var37.x4[3] = ORC_CLAMP_UB (var41.x4[3]);
32200     /* 9: storel */
32201     ptr0[i] = var37;
32202   }
32203 
32204 }
32205 
32206 void
video_orc_dither_verterr_4u8_mask(guint8 * ORC_RESTRICT d1,guint16 * ORC_RESTRICT d2,orc_int64 p1,int n)32207 video_orc_dither_verterr_4u8_mask (guint8 * ORC_RESTRICT d1,
32208     guint16 * ORC_RESTRICT d2, orc_int64 p1, int n)
32209 {
32210   OrcExecutor _ex, *ex = &_ex;
32211   static volatile int p_inited = 0;
32212   static OrcCode *c = 0;
32213   void (*func) (OrcExecutor *);
32214 
32215   if (!p_inited) {
32216     orc_once_mutex_lock ();
32217     if (!p_inited) {
32218       OrcProgram *p;
32219 
32220 #if 1
32221       static const orc_uint8 bc[] = {
32222         1, 9, 33, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 100, 105, 116,
32223         104, 101, 114, 95, 118, 101, 114, 116, 101, 114, 114, 95, 52, 117, 56,
32224             95,
32225         109, 97, 115, 107, 11, 4, 4, 11, 8, 8, 18, 8, 20, 8, 20, 8,
32226         134, 32, 24, 21, 2, 150, 33, 0, 21, 2, 70, 33, 1, 33, 21, 2,
32227         73, 1, 32, 33, 21, 2, 74, 33, 32, 33, 21, 2, 160, 0, 33, 2,
32228         0,
32229       };
32230       p = orc_program_new_from_static_bytecode (bc);
32231       orc_program_set_backup_function (p,
32232           _backup_video_orc_dither_verterr_4u8_mask);
32233 #else
32234       p = orc_program_new ();
32235       orc_program_set_name (p, "video_orc_dither_verterr_4u8_mask");
32236       orc_program_set_backup_function (p,
32237           _backup_video_orc_dither_verterr_4u8_mask);
32238       orc_program_add_destination (p, 4, "d1");
32239       orc_program_add_destination (p, 8, "d2");
32240       orc_program_add_parameter_int64 (p, 8, "p1");
32241       orc_program_add_temporary (p, 8, "t1");
32242       orc_program_add_temporary (p, 8, "t2");
32243 
32244       orc_program_append_2 (p, "loadpq", 0, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1,
32245           ORC_VAR_D1);
32246       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1,
32247           ORC_VAR_D1);
32248       orc_program_append_2 (p, "addw", 2, ORC_VAR_T2, ORC_VAR_D2, ORC_VAR_T2,
32249           ORC_VAR_D1);
32250       orc_program_append_2 (p, "andw", 2, ORC_VAR_D2, ORC_VAR_T1, ORC_VAR_T2,
32251           ORC_VAR_D1);
32252       orc_program_append_2 (p, "andnw", 2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T2,
32253           ORC_VAR_D1);
32254       orc_program_append_2 (p, "convsuswb", 2, ORC_VAR_D1, ORC_VAR_T2,
32255           ORC_VAR_D1, ORC_VAR_D1);
32256 #endif
32257 
32258       orc_program_compile (p);
32259       c = orc_program_take_code (p);
32260       orc_program_free (p);
32261     }
32262     p_inited = TRUE;
32263     orc_once_mutex_unlock ();
32264   }
32265   ex->arrays[ORC_VAR_A2] = c;
32266   ex->program = 0;
32267 
32268   ex->n = n;
32269   ex->arrays[ORC_VAR_D1] = d1;
32270   ex->arrays[ORC_VAR_D2] = d2;
32271   {
32272     orc_union64 tmp;
32273     tmp.i = p1;
32274     ex->params[ORC_VAR_P1] = ((orc_uint64) tmp.i) & 0xffffffff;
32275     ex->params[ORC_VAR_T1] = ((orc_uint64) tmp.i) >> 32;
32276   }
32277 
32278   func = c->exec;
32279   func (ex);
32280 }
32281 #endif
32282 
32283 
32284 /* video_orc_dither_fs_muladd_u8 */
32285 #ifdef DISABLE_ORC
32286 void
video_orc_dither_fs_muladd_u8(guint16 * ORC_RESTRICT d1,int n)32287 video_orc_dither_fs_muladd_u8 (guint16 * ORC_RESTRICT d1, int n)
32288 {
32289   int i;
32290   orc_union16 *ORC_RESTRICT ptr0;
32291 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
32292   volatile orc_union16 var34;
32293 #else
32294   orc_union16 var34;
32295 #endif
32296   orc_union16 var35;
32297 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
32298   volatile orc_union16 var36;
32299 #else
32300   orc_union16 var36;
32301 #endif
32302   orc_union16 var37;
32303   orc_union16 var38;
32304   orc_union16 var39;
32305   orc_union16 var40;
32306   orc_union16 var41;
32307   orc_union16 var42;
32308 
32309   ptr0 = (orc_union16 *) d1;
32310 
32311   /* 1: loadpw */
32312   var34.i = 0x00000005;         /* 5 or 2.47033e-323f */
32313   /* 6: loadpw */
32314   var36.i = 0x00000003;         /* 3 or 1.4822e-323f */
32315 
32316   for (i = 0; i < n; i++) {
32317     /* 0: loadoffw */
32318     var38 = ptr0[i + 4];
32319     /* 2: mullw */
32320     var39.i = (var38.i * var34.i) & 0xffff;
32321     /* 3: loadw */
32322     var35 = ptr0[i];
32323     /* 4: addw */
32324     var40.i = var39.i + var35.i;
32325     /* 5: loadoffw */
32326     var41 = ptr0[i + 8];
32327     /* 7: mullw */
32328     var42.i = (var41.i * var36.i) & 0xffff;
32329     /* 8: addw */
32330     var37.i = var40.i + var42.i;
32331     /* 9: storew */
32332     ptr0[i] = var37;
32333   }
32334 
32335 }
32336 
32337 #else
32338 static void
_backup_video_orc_dither_fs_muladd_u8(OrcExecutor * ORC_RESTRICT ex)32339 _backup_video_orc_dither_fs_muladd_u8 (OrcExecutor * ORC_RESTRICT ex)
32340 {
32341   int i;
32342   int n = ex->n;
32343   orc_union16 *ORC_RESTRICT ptr0;
32344 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
32345   volatile orc_union16 var34;
32346 #else
32347   orc_union16 var34;
32348 #endif
32349   orc_union16 var35;
32350 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
32351   volatile orc_union16 var36;
32352 #else
32353   orc_union16 var36;
32354 #endif
32355   orc_union16 var37;
32356   orc_union16 var38;
32357   orc_union16 var39;
32358   orc_union16 var40;
32359   orc_union16 var41;
32360   orc_union16 var42;
32361 
32362   ptr0 = (orc_union16 *) ex->arrays[0];
32363 
32364   /* 1: loadpw */
32365   var34.i = 0x00000005;         /* 5 or 2.47033e-323f */
32366   /* 6: loadpw */
32367   var36.i = 0x00000003;         /* 3 or 1.4822e-323f */
32368 
32369   for (i = 0; i < n; i++) {
32370     /* 0: loadoffw */
32371     var38 = ptr0[i + 4];
32372     /* 2: mullw */
32373     var39.i = (var38.i * var34.i) & 0xffff;
32374     /* 3: loadw */
32375     var35 = ptr0[i];
32376     /* 4: addw */
32377     var40.i = var39.i + var35.i;
32378     /* 5: loadoffw */
32379     var41 = ptr0[i + 8];
32380     /* 7: mullw */
32381     var42.i = (var41.i * var36.i) & 0xffff;
32382     /* 8: addw */
32383     var37.i = var40.i + var42.i;
32384     /* 9: storew */
32385     ptr0[i] = var37;
32386   }
32387 
32388 }
32389 
32390 void
video_orc_dither_fs_muladd_u8(guint16 * ORC_RESTRICT d1,int n)32391 video_orc_dither_fs_muladd_u8 (guint16 * ORC_RESTRICT d1, int n)
32392 {
32393   OrcExecutor _ex, *ex = &_ex;
32394   static volatile int p_inited = 0;
32395   static OrcCode *c = 0;
32396   void (*func) (OrcExecutor *);
32397 
32398   if (!p_inited) {
32399     orc_once_mutex_lock ();
32400     if (!p_inited) {
32401       OrcProgram *p;
32402 
32403 #if 1
32404       static const orc_uint8 bc[] = {
32405         1, 9, 29, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 100, 105, 116,
32406         104, 101, 114, 95, 102, 115, 95, 109, 117, 108, 97, 100, 100, 95, 117,
32407             56,
32408         11, 2, 2, 14, 4, 4, 0, 0, 0, 14, 2, 5, 0, 0, 0, 14,
32409         4, 8, 0, 0, 0, 14, 2, 3, 0, 0, 0, 20, 2, 20, 2, 83,
32410         33, 0, 16, 89, 33, 33, 17, 70, 32, 33, 0, 83, 33, 0, 18, 89,
32411         33, 33, 19, 70, 0, 32, 33, 2, 0,
32412       };
32413       p = orc_program_new_from_static_bytecode (bc);
32414       orc_program_set_backup_function (p,
32415           _backup_video_orc_dither_fs_muladd_u8);
32416 #else
32417       p = orc_program_new ();
32418       orc_program_set_name (p, "video_orc_dither_fs_muladd_u8");
32419       orc_program_set_backup_function (p,
32420           _backup_video_orc_dither_fs_muladd_u8);
32421       orc_program_add_destination (p, 2, "d1");
32422       orc_program_add_constant (p, 4, 0x00000004, "c1");
32423       orc_program_add_constant (p, 2, 0x00000005, "c2");
32424       orc_program_add_constant (p, 4, 0x00000008, "c3");
32425       orc_program_add_constant (p, 2, 0x00000003, "c4");
32426       orc_program_add_temporary (p, 2, "t1");
32427       orc_program_add_temporary (p, 2, "t2");
32428 
32429       orc_program_append_2 (p, "loadoffw", 0, ORC_VAR_T2, ORC_VAR_D1,
32430           ORC_VAR_C1, ORC_VAR_D1);
32431       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2,
32432           ORC_VAR_D1);
32433       orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1,
32434           ORC_VAR_D1);
32435       orc_program_append_2 (p, "loadoffw", 0, ORC_VAR_T2, ORC_VAR_D1,
32436           ORC_VAR_C3, ORC_VAR_D1);
32437       orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4,
32438           ORC_VAR_D1);
32439       orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
32440           ORC_VAR_D1);
32441 #endif
32442 
32443       orc_program_compile (p);
32444       c = orc_program_take_code (p);
32445       orc_program_free (p);
32446     }
32447     p_inited = TRUE;
32448     orc_once_mutex_unlock ();
32449   }
32450   ex->arrays[ORC_VAR_A2] = c;
32451   ex->program = 0;
32452 
32453   ex->n = n;
32454   ex->arrays[ORC_VAR_D1] = d1;
32455 
32456   func = c->exec;
32457   func (ex);
32458 }
32459 #endif
32460 
32461 
32462 /* video_orc_dither_ordered_u8 */
32463 #ifdef DISABLE_ORC
32464 void
video_orc_dither_ordered_u8(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)32465 video_orc_dither_ordered_u8 (guint8 * ORC_RESTRICT d1,
32466     const guint8 * ORC_RESTRICT s1, int n)
32467 {
32468   int i;
32469   orc_int8 *ORC_RESTRICT ptr0;
32470   const orc_int8 *ORC_RESTRICT ptr4;
32471   orc_int8 var32;
32472   orc_int8 var33;
32473   orc_int8 var34;
32474 
32475   ptr0 = (orc_int8 *) d1;
32476   ptr4 = (orc_int8 *) s1;
32477 
32478 
32479   for (i = 0; i < n; i++) {
32480     /* 0: loadb */
32481     var32 = ptr0[i];
32482     /* 1: loadb */
32483     var33 = ptr4[i];
32484     /* 2: addusb */
32485     var34 = ORC_CLAMP_UB ((orc_uint8) var32 + (orc_uint8) var33);
32486     /* 3: storeb */
32487     ptr0[i] = var34;
32488   }
32489 
32490 }
32491 
32492 #else
32493 static void
_backup_video_orc_dither_ordered_u8(OrcExecutor * ORC_RESTRICT ex)32494 _backup_video_orc_dither_ordered_u8 (OrcExecutor * ORC_RESTRICT ex)
32495 {
32496   int i;
32497   int n = ex->n;
32498   orc_int8 *ORC_RESTRICT ptr0;
32499   const orc_int8 *ORC_RESTRICT ptr4;
32500   orc_int8 var32;
32501   orc_int8 var33;
32502   orc_int8 var34;
32503 
32504   ptr0 = (orc_int8 *) ex->arrays[0];
32505   ptr4 = (orc_int8 *) ex->arrays[4];
32506 
32507 
32508   for (i = 0; i < n; i++) {
32509     /* 0: loadb */
32510     var32 = ptr0[i];
32511     /* 1: loadb */
32512     var33 = ptr4[i];
32513     /* 2: addusb */
32514     var34 = ORC_CLAMP_UB ((orc_uint8) var32 + (orc_uint8) var33);
32515     /* 3: storeb */
32516     ptr0[i] = var34;
32517   }
32518 
32519 }
32520 
32521 void
video_orc_dither_ordered_u8(guint8 * ORC_RESTRICT d1,const guint8 * ORC_RESTRICT s1,int n)32522 video_orc_dither_ordered_u8 (guint8 * ORC_RESTRICT d1,
32523     const guint8 * ORC_RESTRICT s1, int n)
32524 {
32525   OrcExecutor _ex, *ex = &_ex;
32526   static volatile int p_inited = 0;
32527   static OrcCode *c = 0;
32528   void (*func) (OrcExecutor *);
32529 
32530   if (!p_inited) {
32531     orc_once_mutex_lock ();
32532     if (!p_inited) {
32533       OrcProgram *p;
32534 
32535 #if 1
32536       static const orc_uint8 bc[] = {
32537         1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 100, 105, 116,
32538         104, 101, 114, 95, 111, 114, 100, 101, 114, 101, 100, 95, 117, 56, 11,
32539             1,
32540         1, 12, 1, 1, 35, 0, 0, 4, 2, 0,
32541       };
32542       p = orc_program_new_from_static_bytecode (bc);
32543       orc_program_set_backup_function (p, _backup_video_orc_dither_ordered_u8);
32544 #else
32545       p = orc_program_new ();
32546       orc_program_set_name (p, "video_orc_dither_ordered_u8");
32547       orc_program_set_backup_function (p, _backup_video_orc_dither_ordered_u8);
32548       orc_program_add_destination (p, 1, "d1");
32549       orc_program_add_source (p, 1, "s1");
32550 
32551       orc_program_append_2 (p, "addusb", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1,
32552           ORC_VAR_D1);
32553 #endif
32554 
32555       orc_program_compile (p);
32556       c = orc_program_take_code (p);
32557       orc_program_free (p);
32558     }
32559     p_inited = TRUE;
32560     orc_once_mutex_unlock ();
32561   }
32562   ex->arrays[ORC_VAR_A2] = c;
32563   ex->program = 0;
32564 
32565   ex->n = n;
32566   ex->arrays[ORC_VAR_D1] = d1;
32567   ex->arrays[ORC_VAR_S1] = (void *) s1;
32568 
32569   func = c->exec;
32570   func (ex);
32571 }
32572 #endif
32573 
32574 
32575 /* video_orc_dither_ordered_4u8_mask */
32576 #ifdef DISABLE_ORC
32577 void
video_orc_dither_ordered_4u8_mask(guint8 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,orc_int64 p1,int n)32578 video_orc_dither_ordered_4u8_mask (guint8 * ORC_RESTRICT d1,
32579     const guint16 * ORC_RESTRICT s1, orc_int64 p1, int n)
32580 {
32581   int i;
32582   orc_union32 *ORC_RESTRICT ptr0;
32583   const orc_union64 *ORC_RESTRICT ptr4;
32584   orc_union32 var34;
32585   orc_union64 var35;
32586   orc_union32 var36;
32587   orc_union64 var37;
32588   orc_union64 var38;
32589   orc_union64 var39;
32590   orc_union64 var40;
32591 
32592   ptr0 = (orc_union32 *) d1;
32593   ptr4 = (orc_union64 *) s1;
32594 
32595   /* 0: loadpq */
32596   var37.i = p1;
32597 
32598   for (i = 0; i < n; i++) {
32599     /* 1: loadl */
32600     var34 = ptr0[i];
32601     /* 2: convubw */
32602     var38.x4[0] = (orc_uint8) var34.x4[0];
32603     var38.x4[1] = (orc_uint8) var34.x4[1];
32604     var38.x4[2] = (orc_uint8) var34.x4[2];
32605     var38.x4[3] = (orc_uint8) var34.x4[3];
32606     /* 3: loadq */
32607     var35 = ptr4[i];
32608     /* 4: addw */
32609     var39.x4[0] = var38.x4[0] + var35.x4[0];
32610     var39.x4[1] = var38.x4[1] + var35.x4[1];
32611     var39.x4[2] = var38.x4[2] + var35.x4[2];
32612     var39.x4[3] = var38.x4[3] + var35.x4[3];
32613     /* 5: andnw */
32614     var40.x4[0] = (~var37.x4[0]) & var39.x4[0];
32615     var40.x4[1] = (~var37.x4[1]) & var39.x4[1];
32616     var40.x4[2] = (~var37.x4[2]) & var39.x4[2];
32617     var40.x4[3] = (~var37.x4[3]) & var39.x4[3];
32618     /* 6: convsuswb */
32619     var36.x4[0] = ORC_CLAMP_UB (var40.x4[0]);
32620     var36.x4[1] = ORC_CLAMP_UB (var40.x4[1]);
32621     var36.x4[2] = ORC_CLAMP_UB (var40.x4[2]);
32622     var36.x4[3] = ORC_CLAMP_UB (var40.x4[3]);
32623     /* 7: storel */
32624     ptr0[i] = var36;
32625   }
32626 
32627 }
32628 
32629 #else
32630 static void
_backup_video_orc_dither_ordered_4u8_mask(OrcExecutor * ORC_RESTRICT ex)32631 _backup_video_orc_dither_ordered_4u8_mask (OrcExecutor * ORC_RESTRICT ex)
32632 {
32633   int i;
32634   int n = ex->n;
32635   orc_union32 *ORC_RESTRICT ptr0;
32636   const orc_union64 *ORC_RESTRICT ptr4;
32637   orc_union32 var34;
32638   orc_union64 var35;
32639   orc_union32 var36;
32640   orc_union64 var37;
32641   orc_union64 var38;
32642   orc_union64 var39;
32643   orc_union64 var40;
32644 
32645   ptr0 = (orc_union32 *) ex->arrays[0];
32646   ptr4 = (orc_union64 *) ex->arrays[4];
32647 
32648   /* 0: loadpq */
32649   var37.i =
32650       (ex->params[24] & 0xffffffff) | ((orc_uint64) (ex->params[24 +
32651               (ORC_VAR_T1 - ORC_VAR_P1)]) << 32);
32652 
32653   for (i = 0; i < n; i++) {
32654     /* 1: loadl */
32655     var34 = ptr0[i];
32656     /* 2: convubw */
32657     var38.x4[0] = (orc_uint8) var34.x4[0];
32658     var38.x4[1] = (orc_uint8) var34.x4[1];
32659     var38.x4[2] = (orc_uint8) var34.x4[2];
32660     var38.x4[3] = (orc_uint8) var34.x4[3];
32661     /* 3: loadq */
32662     var35 = ptr4[i];
32663     /* 4: addw */
32664     var39.x4[0] = var38.x4[0] + var35.x4[0];
32665     var39.x4[1] = var38.x4[1] + var35.x4[1];
32666     var39.x4[2] = var38.x4[2] + var35.x4[2];
32667     var39.x4[3] = var38.x4[3] + var35.x4[3];
32668     /* 5: andnw */
32669     var40.x4[0] = (~var37.x4[0]) & var39.x4[0];
32670     var40.x4[1] = (~var37.x4[1]) & var39.x4[1];
32671     var40.x4[2] = (~var37.x4[2]) & var39.x4[2];
32672     var40.x4[3] = (~var37.x4[3]) & var39.x4[3];
32673     /* 6: convsuswb */
32674     var36.x4[0] = ORC_CLAMP_UB (var40.x4[0]);
32675     var36.x4[1] = ORC_CLAMP_UB (var40.x4[1]);
32676     var36.x4[2] = ORC_CLAMP_UB (var40.x4[2]);
32677     var36.x4[3] = ORC_CLAMP_UB (var40.x4[3]);
32678     /* 7: storel */
32679     ptr0[i] = var36;
32680   }
32681 
32682 }
32683 
32684 void
video_orc_dither_ordered_4u8_mask(guint8 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,orc_int64 p1,int n)32685 video_orc_dither_ordered_4u8_mask (guint8 * ORC_RESTRICT d1,
32686     const guint16 * ORC_RESTRICT s1, orc_int64 p1, int n)
32687 {
32688   OrcExecutor _ex, *ex = &_ex;
32689   static volatile int p_inited = 0;
32690   static OrcCode *c = 0;
32691   void (*func) (OrcExecutor *);
32692 
32693   if (!p_inited) {
32694     orc_once_mutex_lock ();
32695     if (!p_inited) {
32696       OrcProgram *p;
32697 
32698 #if 1
32699       static const orc_uint8 bc[] = {
32700         1, 9, 33, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 100, 105, 116,
32701         104, 101, 114, 95, 111, 114, 100, 101, 114, 101, 100, 95, 52, 117, 56,
32702             95,
32703         109, 97, 115, 107, 11, 4, 4, 12, 8, 8, 18, 8, 20, 8, 20, 8,
32704         134, 33, 24, 21, 2, 150, 32, 0, 21, 2, 70, 32, 32, 4, 21, 2,
32705         74, 32, 33, 32, 21, 2, 160, 0, 32, 2, 0,
32706       };
32707       p = orc_program_new_from_static_bytecode (bc);
32708       orc_program_set_backup_function (p,
32709           _backup_video_orc_dither_ordered_4u8_mask);
32710 #else
32711       p = orc_program_new ();
32712       orc_program_set_name (p, "video_orc_dither_ordered_4u8_mask");
32713       orc_program_set_backup_function (p,
32714           _backup_video_orc_dither_ordered_4u8_mask);
32715       orc_program_add_destination (p, 4, "d1");
32716       orc_program_add_source (p, 8, "s1");
32717       orc_program_add_parameter_int64 (p, 8, "p1");
32718       orc_program_add_temporary (p, 8, "t1");
32719       orc_program_add_temporary (p, 8, "t2");
32720 
32721       orc_program_append_2 (p, "loadpq", 0, ORC_VAR_T2, ORC_VAR_P1, ORC_VAR_D1,
32722           ORC_VAR_D1);
32723       orc_program_append_2 (p, "convubw", 2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1,
32724           ORC_VAR_D1);
32725       orc_program_append_2 (p, "addw", 2, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S1,
32726           ORC_VAR_D1);
32727       orc_program_append_2 (p, "andnw", 2, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_T1,
32728           ORC_VAR_D1);
32729       orc_program_append_2 (p, "convsuswb", 2, ORC_VAR_D1, ORC_VAR_T1,
32730           ORC_VAR_D1, ORC_VAR_D1);
32731 #endif
32732 
32733       orc_program_compile (p);
32734       c = orc_program_take_code (p);
32735       orc_program_free (p);
32736     }
32737     p_inited = TRUE;
32738     orc_once_mutex_unlock ();
32739   }
32740   ex->arrays[ORC_VAR_A2] = c;
32741   ex->program = 0;
32742 
32743   ex->n = n;
32744   ex->arrays[ORC_VAR_D1] = d1;
32745   ex->arrays[ORC_VAR_S1] = (void *) s1;
32746   {
32747     orc_union64 tmp;
32748     tmp.i = p1;
32749     ex->params[ORC_VAR_P1] = ((orc_uint64) tmp.i) & 0xffffffff;
32750     ex->params[ORC_VAR_T1] = ((orc_uint64) tmp.i) >> 32;
32751   }
32752 
32753   func = c->exec;
32754   func (ex);
32755 }
32756 #endif
32757 
32758 
32759 /* video_orc_dither_ordered_4u16_mask */
32760 #ifdef DISABLE_ORC
32761 void
video_orc_dither_ordered_4u16_mask(guint16 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,orc_int64 p1,int n)32762 video_orc_dither_ordered_4u16_mask (guint16 * ORC_RESTRICT d1,
32763     const guint16 * ORC_RESTRICT s1, orc_int64 p1, int n)
32764 {
32765   int i;
32766   orc_union64 *ORC_RESTRICT ptr0;
32767   const orc_union64 *ORC_RESTRICT ptr4;
32768   orc_union64 var34;
32769   orc_union64 var35;
32770   orc_union64 var36;
32771   orc_union64 var37;
32772   orc_union64 var38;
32773 
32774   ptr0 = (orc_union64 *) d1;
32775   ptr4 = (orc_union64 *) s1;
32776 
32777   /* 0: loadpq */
32778   var37.i = p1;
32779 
32780   for (i = 0; i < n; i++) {
32781     /* 1: loadq */
32782     var34 = ptr0[i];
32783     /* 2: loadq */
32784     var35 = ptr4[i];
32785     /* 3: addusw */
32786     var38.x4[0] =
32787         ORC_CLAMP_UW ((orc_uint16) var34.x4[0] + (orc_uint16) var35.x4[0]);
32788     var38.x4[1] =
32789         ORC_CLAMP_UW ((orc_uint16) var34.x4[1] + (orc_uint16) var35.x4[1]);
32790     var38.x4[2] =
32791         ORC_CLAMP_UW ((orc_uint16) var34.x4[2] + (orc_uint16) var35.x4[2]);
32792     var38.x4[3] =
32793         ORC_CLAMP_UW ((orc_uint16) var34.x4[3] + (orc_uint16) var35.x4[3]);
32794     /* 4: andnw */
32795     var36.x4[0] = (~var37.x4[0]) & var38.x4[0];
32796     var36.x4[1] = (~var37.x4[1]) & var38.x4[1];
32797     var36.x4[2] = (~var37.x4[2]) & var38.x4[2];
32798     var36.x4[3] = (~var37.x4[3]) & var38.x4[3];
32799     /* 5: storeq */
32800     ptr0[i] = var36;
32801   }
32802 
32803 }
32804 
32805 #else
32806 static void
_backup_video_orc_dither_ordered_4u16_mask(OrcExecutor * ORC_RESTRICT ex)32807 _backup_video_orc_dither_ordered_4u16_mask (OrcExecutor * ORC_RESTRICT ex)
32808 {
32809   int i;
32810   int n = ex->n;
32811   orc_union64 *ORC_RESTRICT ptr0;
32812   const orc_union64 *ORC_RESTRICT ptr4;
32813   orc_union64 var34;
32814   orc_union64 var35;
32815   orc_union64 var36;
32816   orc_union64 var37;
32817   orc_union64 var38;
32818 
32819   ptr0 = (orc_union64 *) ex->arrays[0];
32820   ptr4 = (orc_union64 *) ex->arrays[4];
32821 
32822   /* 0: loadpq */
32823   var37.i =
32824       (ex->params[24] & 0xffffffff) | ((orc_uint64) (ex->params[24 +
32825               (ORC_VAR_T1 - ORC_VAR_P1)]) << 32);
32826 
32827   for (i = 0; i < n; i++) {
32828     /* 1: loadq */
32829     var34 = ptr0[i];
32830     /* 2: loadq */
32831     var35 = ptr4[i];
32832     /* 3: addusw */
32833     var38.x4[0] =
32834         ORC_CLAMP_UW ((orc_uint16) var34.x4[0] + (orc_uint16) var35.x4[0]);
32835     var38.x4[1] =
32836         ORC_CLAMP_UW ((orc_uint16) var34.x4[1] + (orc_uint16) var35.x4[1]);
32837     var38.x4[2] =
32838         ORC_CLAMP_UW ((orc_uint16) var34.x4[2] + (orc_uint16) var35.x4[2]);
32839     var38.x4[3] =
32840         ORC_CLAMP_UW ((orc_uint16) var34.x4[3] + (orc_uint16) var35.x4[3]);
32841     /* 4: andnw */
32842     var36.x4[0] = (~var37.x4[0]) & var38.x4[0];
32843     var36.x4[1] = (~var37.x4[1]) & var38.x4[1];
32844     var36.x4[2] = (~var37.x4[2]) & var38.x4[2];
32845     var36.x4[3] = (~var37.x4[3]) & var38.x4[3];
32846     /* 5: storeq */
32847     ptr0[i] = var36;
32848   }
32849 
32850 }
32851 
32852 void
video_orc_dither_ordered_4u16_mask(guint16 * ORC_RESTRICT d1,const guint16 * ORC_RESTRICT s1,orc_int64 p1,int n)32853 video_orc_dither_ordered_4u16_mask (guint16 * ORC_RESTRICT d1,
32854     const guint16 * ORC_RESTRICT s1, orc_int64 p1, int n)
32855 {
32856   OrcExecutor _ex, *ex = &_ex;
32857   static volatile int p_inited = 0;
32858   static OrcCode *c = 0;
32859   void (*func) (OrcExecutor *);
32860 
32861   if (!p_inited) {
32862     orc_once_mutex_lock ();
32863     if (!p_inited) {
32864       OrcProgram *p;
32865 
32866 #if 1
32867       static const orc_uint8 bc[] = {
32868         1, 9, 34, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 100, 105, 116,
32869         104, 101, 114, 95, 111, 114, 100, 101, 114, 101, 100, 95, 52, 117, 49,
32870             54,
32871         95, 109, 97, 115, 107, 11, 8, 8, 12, 8, 8, 18, 8, 20, 8, 20,
32872         8, 134, 33, 24, 21, 2, 72, 32, 0, 4, 21, 2, 74, 0, 33, 32,
32873         2, 0,
32874       };
32875       p = orc_program_new_from_static_bytecode (bc);
32876       orc_program_set_backup_function (p,
32877           _backup_video_orc_dither_ordered_4u16_mask);
32878 #else
32879       p = orc_program_new ();
32880       orc_program_set_name (p, "video_orc_dither_ordered_4u16_mask");
32881       orc_program_set_backup_function (p,
32882           _backup_video_orc_dither_ordered_4u16_mask);
32883       orc_program_add_destination (p, 8, "d1");
32884       orc_program_add_source (p, 8, "s1");
32885       orc_program_add_parameter_int64 (p, 8, "p1");
32886       orc_program_add_temporary (p, 8, "t1");
32887       orc_program_add_temporary (p, 8, "t2");
32888 
32889       orc_program_append_2 (p, "loadpq", 0, ORC_VAR_T2, ORC_VAR_P1, ORC_VAR_D1,
32890           ORC_VAR_D1);
32891       orc_program_append_2 (p, "addusw", 2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_S1,
32892           ORC_VAR_D1);
32893       orc_program_append_2 (p, "andnw", 2, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
32894           ORC_VAR_D1);
32895 #endif
32896 
32897       orc_program_compile (p);
32898       c = orc_program_take_code (p);
32899       orc_program_free (p);
32900     }
32901     p_inited = TRUE;
32902     orc_once_mutex_unlock ();
32903   }
32904   ex->arrays[ORC_VAR_A2] = c;
32905   ex->program = 0;
32906 
32907   ex->n = n;
32908   ex->arrays[ORC_VAR_D1] = d1;
32909   ex->arrays[ORC_VAR_S1] = (void *) s1;
32910   {
32911     orc_union64 tmp;
32912     tmp.i = p1;
32913     ex->params[ORC_VAR_P1] = ((orc_uint64) tmp.i) & 0xffffffff;
32914     ex->params[ORC_VAR_T1] = ((orc_uint64) tmp.i) >> 32;
32915   }
32916 
32917   func = c->exec;
32918   func (ex);
32919 }
32920 #endif
32921 
32922 
32923 /* video_orc_convert_UYVY_GRAY8 */
32924 #ifdef DISABLE_ORC
32925 void
video_orc_convert_UYVY_GRAY8(guint8 * ORC_RESTRICT d1,int d1_stride,const orc_uint16 * ORC_RESTRICT s1,int s1_stride,int n,int m)32926 video_orc_convert_UYVY_GRAY8 (guint8 * ORC_RESTRICT d1, int d1_stride,
32927     const orc_uint16 * ORC_RESTRICT s1, int s1_stride, int n, int m)
32928 {
32929   int i;
32930   int j;
32931   orc_int8 *ORC_RESTRICT ptr0;
32932   const orc_union16 *ORC_RESTRICT ptr4;
32933   orc_union16 var34;
32934   orc_int8 var35;
32935 
32936   for (j = 0; j < m; j++) {
32937     ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
32938     ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
32939 
32940 
32941     for (i = 0; i < n; i++) {
32942       /* 0: loadw */
32943       var34 = ptr4[i];
32944       /* 1: convhwb */
32945       var35 = ((orc_uint16) var34.i) >> 8;
32946       /* 2: storeb */
32947       ptr0[i] = var35;
32948     }
32949   }
32950 
32951 }
32952 
32953 #else
32954 static void
_backup_video_orc_convert_UYVY_GRAY8(OrcExecutor * ORC_RESTRICT ex)32955 _backup_video_orc_convert_UYVY_GRAY8 (OrcExecutor * ORC_RESTRICT ex)
32956 {
32957   int i;
32958   int j;
32959   int n = ex->n;
32960   int m = ex->params[ORC_VAR_A1];
32961   orc_int8 *ORC_RESTRICT ptr0;
32962   const orc_union16 *ORC_RESTRICT ptr4;
32963   orc_union16 var34;
32964   orc_int8 var35;
32965 
32966   for (j = 0; j < m; j++) {
32967     ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
32968     ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
32969 
32970 
32971     for (i = 0; i < n; i++) {
32972       /* 0: loadw */
32973       var34 = ptr4[i];
32974       /* 1: convhwb */
32975       var35 = ((orc_uint16) var34.i) >> 8;
32976       /* 2: storeb */
32977       ptr0[i] = var35;
32978     }
32979   }
32980 
32981 }
32982 
32983 void
video_orc_convert_UYVY_GRAY8(guint8 * ORC_RESTRICT d1,int d1_stride,const orc_uint16 * ORC_RESTRICT s1,int s1_stride,int n,int m)32984 video_orc_convert_UYVY_GRAY8 (guint8 * ORC_RESTRICT d1, int d1_stride,
32985     const orc_uint16 * ORC_RESTRICT s1, int s1_stride, int n, int m)
32986 {
32987   OrcExecutor _ex, *ex = &_ex;
32988   static volatile int p_inited = 0;
32989   static OrcCode *c = 0;
32990   void (*func) (OrcExecutor *);
32991 
32992   if (!p_inited) {
32993     orc_once_mutex_lock ();
32994     if (!p_inited) {
32995       OrcProgram *p;
32996 
32997 #if 1
32998       static const orc_uint8 bc[] = {
32999         1, 7, 9, 28, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
33000         110, 118, 101, 114, 116, 95, 85, 89, 86, 89, 95, 71, 82, 65, 89, 56,
33001         11, 1, 1, 12, 2, 2, 20, 1, 20, 2, 82, 33, 4, 158, 32, 33,
33002         64, 0, 32, 2, 0,
33003       };
33004       p = orc_program_new_from_static_bytecode (bc);
33005       orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_GRAY8);
33006 #else
33007       p = orc_program_new ();
33008       orc_program_set_2d (p);
33009       orc_program_set_name (p, "video_orc_convert_UYVY_GRAY8");
33010       orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_GRAY8);
33011       orc_program_add_destination (p, 1, "d1");
33012       orc_program_add_source (p, 2, "s1");
33013       orc_program_add_temporary (p, 1, "t1");
33014       orc_program_add_temporary (p, 2, "t2");
33015 
33016       orc_program_append_2 (p, "loadw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1,
33017           ORC_VAR_D1);
33018       orc_program_append_2 (p, "convhwb", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1,
33019           ORC_VAR_D1);
33020       orc_program_append_2 (p, "storeb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
33021           ORC_VAR_D1);
33022 #endif
33023 
33024       orc_program_compile (p);
33025       c = orc_program_take_code (p);
33026       orc_program_free (p);
33027     }
33028     p_inited = TRUE;
33029     orc_once_mutex_unlock ();
33030   }
33031   ex->arrays[ORC_VAR_A2] = c;
33032   ex->program = 0;
33033 
33034   ex->n = n;
33035   ORC_EXECUTOR_M (ex) = m;
33036   ex->arrays[ORC_VAR_D1] = d1;
33037   ex->params[ORC_VAR_D1] = d1_stride;
33038   ex->arrays[ORC_VAR_S1] = (void *) s1;
33039   ex->params[ORC_VAR_S1] = s1_stride;
33040 
33041   func = c->exec;
33042   func (ex);
33043 }
33044 #endif
33045