tizen 2.0 init
[framework/multimedia/gst-plugins-base0.10.git] / gst / videoscale / gstvideoscaleorc-dist.c
1
2 /* autogenerated from gstvideoscaleorc.orc */
3
4 #ifdef HAVE_CONFIG_H
5 #include "config.h"
6 #endif
7 #include <glib.h>
8
9 #ifndef _ORC_INTEGER_TYPEDEFS_
10 #define _ORC_INTEGER_TYPEDEFS_
11 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
12 #include <stdint.h>
13 typedef int8_t orc_int8;
14 typedef int16_t orc_int16;
15 typedef int32_t orc_int32;
16 typedef int64_t orc_int64;
17 typedef uint8_t orc_uint8;
18 typedef uint16_t orc_uint16;
19 typedef uint32_t orc_uint32;
20 typedef uint64_t orc_uint64;
21 #define ORC_UINT64_C(x) UINT64_C(x)
22 #elif defined(_MSC_VER)
23 typedef signed __int8 orc_int8;
24 typedef signed __int16 orc_int16;
25 typedef signed __int32 orc_int32;
26 typedef signed __int64 orc_int64;
27 typedef unsigned __int8 orc_uint8;
28 typedef unsigned __int16 orc_uint16;
29 typedef unsigned __int32 orc_uint32;
30 typedef unsigned __int64 orc_uint64;
31 #define ORC_UINT64_C(x) (x##Ui64)
32 #define inline __inline
33 #else
34 #include <limits.h>
35 typedef signed char orc_int8;
36 typedef short orc_int16;
37 typedef int orc_int32;
38 typedef unsigned char orc_uint8;
39 typedef unsigned short orc_uint16;
40 typedef unsigned int orc_uint32;
41 #if INT_MAX == LONG_MAX
42 typedef long long orc_int64;
43 typedef unsigned long long orc_uint64;
44 #define ORC_UINT64_C(x) (x##ULL)
45 #else
46 typedef long orc_int64;
47 typedef unsigned long orc_uint64;
48 #define ORC_UINT64_C(x) (x##UL)
49 #endif
50 #endif
51 typedef union
52 {
53   orc_int16 i;
54   orc_int8 x2[2];
55 } orc_union16;
56 typedef union
57 {
58   orc_int32 i;
59   float f;
60   orc_int16 x2[2];
61   orc_int8 x4[4];
62 } orc_union32;
63 typedef union
64 {
65   orc_int64 i;
66   double f;
67   orc_int32 x2[2];
68   float x2f[2];
69   orc_int16 x4[4];
70 } orc_union64;
71 #endif
72 #ifndef ORC_RESTRICT
73 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
74 #define ORC_RESTRICT restrict
75 #elif defined(__GNUC__) && __GNUC__ >= 4
76 #define ORC_RESTRICT __restrict__
77 #else
78 #define ORC_RESTRICT
79 #endif
80 #endif
81
82 #ifndef DISABLE_ORC
83 #include <orc/orc.h>
84 #endif
85 void orc_merge_linear_u8 (orc_uint8 * ORC_RESTRICT d1,
86     const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
87     int p1, int n);
88 void orc_merge_linear_u16 (orc_uint16 * ORC_RESTRICT d1,
89     const orc_uint16 * ORC_RESTRICT s1, const orc_uint16 * ORC_RESTRICT s2,
90     int p1, int p2, int n);
91 void orc_splat_u16 (orc_uint16 * ORC_RESTRICT d1, int p1, int n);
92 void orc_splat_u32 (orc_uint32 * ORC_RESTRICT d1, int p1, int n);
93 void orc_splat_u64 (orc_uint64 * ORC_RESTRICT d1, orc_int64 p1, int n);
94 void orc_downsample_u8 (guint8 * ORC_RESTRICT d1,
95     const guint8 * ORC_RESTRICT s1, int n);
96 void orc_downsample_u16 (guint16 * ORC_RESTRICT d1,
97     const guint16 * ORC_RESTRICT s1, int n);
98 void gst_videoscale_orc_downsample_u32 (guint8 * ORC_RESTRICT d1,
99     const guint8 * ORC_RESTRICT s1, int n);
100 void gst_videoscale_orc_downsample_yuyv (guint8 * ORC_RESTRICT d1,
101     const guint8 * ORC_RESTRICT s1, int n);
102 void gst_videoscale_orc_resample_nearest_u8 (guint8 * ORC_RESTRICT d1,
103     const guint8 * ORC_RESTRICT s1, int p1, int p2, int n);
104 void gst_videoscale_orc_resample_bilinear_u8 (guint8 * ORC_RESTRICT d1,
105     const guint8 * ORC_RESTRICT s1, int p1, int p2, int n);
106 void gst_videoscale_orc_resample_nearest_u32 (guint8 * ORC_RESTRICT d1,
107     const guint8 * ORC_RESTRICT s1, int p1, int p2, int n);
108 void gst_videoscale_orc_resample_bilinear_u32 (guint8 * ORC_RESTRICT d1,
109     const guint8 * ORC_RESTRICT s1, int p1, int p2, int n);
110 void gst_videoscale_orc_resample_merge_bilinear_u32 (guint8 * ORC_RESTRICT d1,
111     guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1,
112     const guint8 * ORC_RESTRICT s2, int p1, int p2, int p3, int n);
113 void gst_videoscale_orc_merge_bicubic_u8 (guint8 * ORC_RESTRICT d1,
114     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
115     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int p1,
116     int p2, int p3, int p4, int n);
117
118 void gst_videoscale_orc_init (void);
119
120
121 /* begin Orc C target preamble */
122 #define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x)))
123 #define ORC_ABS(a) ((a)<0 ? -(a) : (a))
124 #define ORC_MIN(a,b) ((a)<(b) ? (a) : (b))
125 #define ORC_MAX(a,b) ((a)>(b) ? (a) : (b))
126 #define ORC_SB_MAX 127
127 #define ORC_SB_MIN (-1-ORC_SB_MAX)
128 #define ORC_UB_MAX 255
129 #define ORC_UB_MIN 0
130 #define ORC_SW_MAX 32767
131 #define ORC_SW_MIN (-1-ORC_SW_MAX)
132 #define ORC_UW_MAX 65535
133 #define ORC_UW_MIN 0
134 #define ORC_SL_MAX 2147483647
135 #define ORC_SL_MIN (-1-ORC_SL_MAX)
136 #define ORC_UL_MAX 4294967295U
137 #define ORC_UL_MIN 0
138 #define ORC_CLAMP_SB(x) ORC_CLAMP(x,ORC_SB_MIN,ORC_SB_MAX)
139 #define ORC_CLAMP_UB(x) ORC_CLAMP(x,ORC_UB_MIN,ORC_UB_MAX)
140 #define ORC_CLAMP_SW(x) ORC_CLAMP(x,ORC_SW_MIN,ORC_SW_MAX)
141 #define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX)
142 #define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX)
143 #define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX)
144 #define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8))
145 #define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24))
146 #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))
147 #define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset)))
148 #define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff))
149 #define ORC_ISNAN(x) ((((x)&0x7f800000) == 0x7f800000) && (((x)&0x007fffff) != 0))
150 #define ORC_DENORMAL_DOUBLE(x) ((x) & ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == 0) ? ORC_UINT64_C(0xfff0000000000000) : ORC_UINT64_C(0xffffffffffffffff)))
151 #define ORC_ISNAN_DOUBLE(x) ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == ORC_UINT64_C(0x7ff0000000000000)) && (((x)&ORC_UINT64_C(0x000fffffffffffff)) != 0))
152 #ifndef ORC_RESTRICT
153 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
154 #define ORC_RESTRICT restrict
155 #elif defined(__GNUC__) && __GNUC__ >= 4
156 #define ORC_RESTRICT __restrict__
157 #else
158 #define ORC_RESTRICT
159 #endif
160 #endif
161 /* end Orc C target preamble */
162
163
164
165 /* orc_merge_linear_u8 */
166 #ifdef DISABLE_ORC
167 void
168 orc_merge_linear_u8 (orc_uint8 * ORC_RESTRICT d1,
169     const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
170     int p1, int n)
171 {
172   int i;
173   orc_int8 *ORC_RESTRICT ptr0;
174   const orc_int8 *ORC_RESTRICT ptr4;
175   const orc_int8 *ORC_RESTRICT ptr5;
176   orc_int8 var36;
177   orc_int8 var37;
178   orc_union16 var38;
179   orc_union16 var39;
180   orc_int8 var40;
181   orc_int8 var41;
182   orc_union16 var42;
183   orc_union16 var43;
184   orc_union16 var44;
185   orc_union16 var45;
186   orc_union16 var46;
187   orc_int8 var47;
188
189   ptr0 = (orc_int8 *) d1;
190   ptr4 = (orc_int8 *) s1;
191   ptr5 = (orc_int8 *) s2;
192
193   /* 6: loadpw */
194   var38.i = p1;
195   /* 8: loadpw */
196   var39.i = (int) 0x00000080;   /* 128 or 6.32404e-322f */
197
198   for (i = 0; i < n; i++) {
199     /* 0: loadb */
200     var41 = ptr4[i];
201     /* 1: loadb */
202     var36 = ptr4[i];
203     /* 2: convubw */
204     var42.i = (orc_uint8) var36;
205     /* 3: loadb */
206     var37 = ptr5[i];
207     /* 4: convubw */
208     var43.i = (orc_uint8) var37;
209     /* 5: subw */
210     var44.i = var43.i - var42.i;
211     /* 7: mullw */
212     var45.i = (var44.i * var38.i) & 0xffff;
213     /* 9: addw */
214     var46.i = var45.i + var39.i;
215     /* 10: convhwb */
216     var47 = ((orc_uint16) var46.i) >> 8;
217     /* 11: addb */
218     var40 = var47 + var41;
219     /* 12: storeb */
220     ptr0[i] = var40;
221   }
222
223 }
224
225 #else
226 static void
227 _backup_orc_merge_linear_u8 (OrcExecutor * ORC_RESTRICT ex)
228 {
229   int i;
230   int n = ex->n;
231   orc_int8 *ORC_RESTRICT ptr0;
232   const orc_int8 *ORC_RESTRICT ptr4;
233   const orc_int8 *ORC_RESTRICT ptr5;
234   orc_int8 var36;
235   orc_int8 var37;
236   orc_union16 var38;
237   orc_union16 var39;
238   orc_int8 var40;
239   orc_int8 var41;
240   orc_union16 var42;
241   orc_union16 var43;
242   orc_union16 var44;
243   orc_union16 var45;
244   orc_union16 var46;
245   orc_int8 var47;
246
247   ptr0 = (orc_int8 *) ex->arrays[0];
248   ptr4 = (orc_int8 *) ex->arrays[4];
249   ptr5 = (orc_int8 *) ex->arrays[5];
250
251   /* 6: loadpw */
252   var38.i = ex->params[24];
253   /* 8: loadpw */
254   var39.i = (int) 0x00000080;   /* 128 or 6.32404e-322f */
255
256   for (i = 0; i < n; i++) {
257     /* 0: loadb */
258     var41 = ptr4[i];
259     /* 1: loadb */
260     var36 = ptr4[i];
261     /* 2: convubw */
262     var42.i = (orc_uint8) var36;
263     /* 3: loadb */
264     var37 = ptr5[i];
265     /* 4: convubw */
266     var43.i = (orc_uint8) var37;
267     /* 5: subw */
268     var44.i = var43.i - var42.i;
269     /* 7: mullw */
270     var45.i = (var44.i * var38.i) & 0xffff;
271     /* 9: addw */
272     var46.i = var45.i + var39.i;
273     /* 10: convhwb */
274     var47 = ((orc_uint16) var46.i) >> 8;
275     /* 11: addb */
276     var40 = var47 + var41;
277     /* 12: storeb */
278     ptr0[i] = var40;
279   }
280
281 }
282
283 static OrcProgram *_orc_program_orc_merge_linear_u8;
284 void
285 orc_merge_linear_u8 (orc_uint8 * ORC_RESTRICT d1,
286     const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2,
287     int p1, int n)
288 {
289   OrcExecutor _ex, *ex = &_ex;
290   OrcProgram *p = _orc_program_orc_merge_linear_u8;
291   void (*func) (OrcExecutor *);
292
293   ex->program = p;
294
295   ex->n = n;
296   ex->arrays[ORC_VAR_D1] = d1;
297   ex->arrays[ORC_VAR_S1] = (void *) s1;
298   ex->arrays[ORC_VAR_S2] = (void *) s2;
299   ex->params[ORC_VAR_P1] = p1;
300
301   func = p->code_exec;
302   func (ex);
303 }
304 #endif
305
306
307 /* orc_merge_linear_u16 */
308 #ifdef DISABLE_ORC
309 void
310 orc_merge_linear_u16 (orc_uint16 * ORC_RESTRICT d1,
311     const orc_uint16 * ORC_RESTRICT s1, const orc_uint16 * ORC_RESTRICT s2,
312     int p1, int p2, int n)
313 {
314   int i;
315   orc_union16 *ORC_RESTRICT ptr0;
316   const orc_union16 *ORC_RESTRICT ptr4;
317   const orc_union16 *ORC_RESTRICT ptr5;
318   orc_union16 var34;
319   orc_union16 var35;
320   orc_union16 var36;
321   orc_union16 var37;
322   orc_union16 var38;
323   orc_union32 var39;
324   orc_union32 var40;
325   orc_union32 var41;
326   orc_union32 var42;
327
328   ptr0 = (orc_union16 *) d1;
329   ptr4 = (orc_union16 *) s1;
330   ptr5 = (orc_union16 *) s2;
331
332   /* 1: loadpw */
333   var35.i = p1;
334   /* 4: loadpw */
335   var37.i = p2;
336
337   for (i = 0; i < n; i++) {
338     /* 0: loadw */
339     var34 = ptr4[i];
340     /* 2: muluwl */
341     var39.i = ((orc_uint16) var34.i) * ((orc_uint16) var35.i);
342     /* 3: loadw */
343     var36 = ptr5[i];
344     /* 5: muluwl */
345     var40.i = ((orc_uint16) var36.i) * ((orc_uint16) var37.i);
346     /* 6: addl */
347     var41.i = var39.i + var40.i;
348     /* 7: shrul */
349     var42.i = ((orc_uint32) var41.i) >> 16;
350     /* 8: convlw */
351     var38.i = var42.i;
352     /* 9: storew */
353     ptr0[i] = var38;
354   }
355
356 }
357
358 #else
359 static void
360 _backup_orc_merge_linear_u16 (OrcExecutor * ORC_RESTRICT ex)
361 {
362   int i;
363   int n = ex->n;
364   orc_union16 *ORC_RESTRICT ptr0;
365   const orc_union16 *ORC_RESTRICT ptr4;
366   const orc_union16 *ORC_RESTRICT ptr5;
367   orc_union16 var34;
368   orc_union16 var35;
369   orc_union16 var36;
370   orc_union16 var37;
371   orc_union16 var38;
372   orc_union32 var39;
373   orc_union32 var40;
374   orc_union32 var41;
375   orc_union32 var42;
376
377   ptr0 = (orc_union16 *) ex->arrays[0];
378   ptr4 = (orc_union16 *) ex->arrays[4];
379   ptr5 = (orc_union16 *) ex->arrays[5];
380
381   /* 1: loadpw */
382   var35.i = ex->params[24];
383   /* 4: loadpw */
384   var37.i = ex->params[25];
385
386   for (i = 0; i < n; i++) {
387     /* 0: loadw */
388     var34 = ptr4[i];
389     /* 2: muluwl */
390     var39.i = ((orc_uint16) var34.i) * ((orc_uint16) var35.i);
391     /* 3: loadw */
392     var36 = ptr5[i];
393     /* 5: muluwl */
394     var40.i = ((orc_uint16) var36.i) * ((orc_uint16) var37.i);
395     /* 6: addl */
396     var41.i = var39.i + var40.i;
397     /* 7: shrul */
398     var42.i = ((orc_uint32) var41.i) >> 16;
399     /* 8: convlw */
400     var38.i = var42.i;
401     /* 9: storew */
402     ptr0[i] = var38;
403   }
404
405 }
406
407 static OrcProgram *_orc_program_orc_merge_linear_u16;
408 void
409 orc_merge_linear_u16 (orc_uint16 * ORC_RESTRICT d1,
410     const orc_uint16 * ORC_RESTRICT s1, const orc_uint16 * ORC_RESTRICT s2,
411     int p1, int p2, int n)
412 {
413   OrcExecutor _ex, *ex = &_ex;
414   OrcProgram *p = _orc_program_orc_merge_linear_u16;
415   void (*func) (OrcExecutor *);
416
417   ex->program = p;
418
419   ex->n = n;
420   ex->arrays[ORC_VAR_D1] = d1;
421   ex->arrays[ORC_VAR_S1] = (void *) s1;
422   ex->arrays[ORC_VAR_S2] = (void *) s2;
423   ex->params[ORC_VAR_P1] = p1;
424   ex->params[ORC_VAR_P2] = p2;
425
426   func = p->code_exec;
427   func (ex);
428 }
429 #endif
430
431
432 /* orc_splat_u16 */
433 #ifdef DISABLE_ORC
434 void
435 orc_splat_u16 (orc_uint16 * ORC_RESTRICT d1, int p1, int n)
436 {
437   int i;
438   orc_union16 *ORC_RESTRICT ptr0;
439   orc_union16 var32;
440   orc_union16 var33;
441
442   ptr0 = (orc_union16 *) d1;
443
444   /* 0: loadpw */
445   var32.i = p1;
446
447   for (i = 0; i < n; i++) {
448     /* 1: copyw */
449     var33.i = var32.i;
450     /* 2: storew */
451     ptr0[i] = var33;
452   }
453
454 }
455
456 #else
457 static void
458 _backup_orc_splat_u16 (OrcExecutor * ORC_RESTRICT ex)
459 {
460   int i;
461   int n = ex->n;
462   orc_union16 *ORC_RESTRICT ptr0;
463   orc_union16 var32;
464   orc_union16 var33;
465
466   ptr0 = (orc_union16 *) ex->arrays[0];
467
468   /* 0: loadpw */
469   var32.i = ex->params[24];
470
471   for (i = 0; i < n; i++) {
472     /* 1: copyw */
473     var33.i = var32.i;
474     /* 2: storew */
475     ptr0[i] = var33;
476   }
477
478 }
479
480 static OrcProgram *_orc_program_orc_splat_u16;
481 void
482 orc_splat_u16 (orc_uint16 * ORC_RESTRICT d1, int p1, int n)
483 {
484   OrcExecutor _ex, *ex = &_ex;
485   OrcProgram *p = _orc_program_orc_splat_u16;
486   void (*func) (OrcExecutor *);
487
488   ex->program = p;
489
490   ex->n = n;
491   ex->arrays[ORC_VAR_D1] = d1;
492   ex->params[ORC_VAR_P1] = p1;
493
494   func = p->code_exec;
495   func (ex);
496 }
497 #endif
498
499
500 /* orc_splat_u32 */
501 #ifdef DISABLE_ORC
502 void
503 orc_splat_u32 (orc_uint32 * ORC_RESTRICT d1, int p1, int n)
504 {
505   int i;
506   orc_union32 *ORC_RESTRICT ptr0;
507   orc_union32 var32;
508   orc_union32 var33;
509
510   ptr0 = (orc_union32 *) d1;
511
512   /* 0: loadpl */
513   var32.i = p1;
514
515   for (i = 0; i < n; i++) {
516     /* 1: copyl */
517     var33.i = var32.i;
518     /* 2: storel */
519     ptr0[i] = var33;
520   }
521
522 }
523
524 #else
525 static void
526 _backup_orc_splat_u32 (OrcExecutor * ORC_RESTRICT ex)
527 {
528   int i;
529   int n = ex->n;
530   orc_union32 *ORC_RESTRICT ptr0;
531   orc_union32 var32;
532   orc_union32 var33;
533
534   ptr0 = (orc_union32 *) ex->arrays[0];
535
536   /* 0: loadpl */
537   var32.i = ex->params[24];
538
539   for (i = 0; i < n; i++) {
540     /* 1: copyl */
541     var33.i = var32.i;
542     /* 2: storel */
543     ptr0[i] = var33;
544   }
545
546 }
547
548 static OrcProgram *_orc_program_orc_splat_u32;
549 void
550 orc_splat_u32 (orc_uint32 * ORC_RESTRICT d1, int p1, int n)
551 {
552   OrcExecutor _ex, *ex = &_ex;
553   OrcProgram *p = _orc_program_orc_splat_u32;
554   void (*func) (OrcExecutor *);
555
556   ex->program = p;
557
558   ex->n = n;
559   ex->arrays[ORC_VAR_D1] = d1;
560   ex->params[ORC_VAR_P1] = p1;
561
562   func = p->code_exec;
563   func (ex);
564 }
565 #endif
566
567
568 /* orc_splat_u64 */
569 #ifdef DISABLE_ORC
570 void
571 orc_splat_u64 (orc_uint64 * ORC_RESTRICT d1, orc_int64 p1, int n)
572 {
573   int i;
574   orc_union64 *ORC_RESTRICT ptr0;
575   orc_union64 var32;
576   orc_union64 var33;
577
578   ptr0 = (orc_union64 *) d1;
579
580   /* 0: loadpq */
581   var32.i = p1;
582
583   for (i = 0; i < n; i++) {
584     /* 1: copyq */
585     var33.i = var32.i;
586     /* 2: storeq */
587     ptr0[i] = var33;
588   }
589
590 }
591
592 #else
593 static void
594 _backup_orc_splat_u64 (OrcExecutor * ORC_RESTRICT ex)
595 {
596   int i;
597   int n = ex->n;
598   orc_union64 *ORC_RESTRICT ptr0;
599   orc_union64 var32;
600   orc_union64 var33;
601
602   ptr0 = (orc_union64 *) ex->arrays[0];
603
604   /* 0: loadpq */
605   var32.i =
606       (ex->params[24] & 0xffffffff) | ((orc_uint64) (ex->params[24 +
607               (ORC_VAR_T1 - ORC_VAR_P1)]) << 32);
608
609   for (i = 0; i < n; i++) {
610     /* 1: copyq */
611     var33.i = var32.i;
612     /* 2: storeq */
613     ptr0[i] = var33;
614   }
615
616 }
617
618 static OrcProgram *_orc_program_orc_splat_u64;
619 void
620 orc_splat_u64 (orc_uint64 * ORC_RESTRICT d1, orc_int64 p1, int n)
621 {
622   OrcExecutor _ex, *ex = &_ex;
623   OrcProgram *p = _orc_program_orc_splat_u64;
624   void (*func) (OrcExecutor *);
625
626   ex->program = p;
627
628   ex->n = n;
629   ex->arrays[ORC_VAR_D1] = d1;
630   {
631     orc_union64 tmp;
632     tmp.i = p1;
633     ex->params[ORC_VAR_P1] = tmp.x2[0];
634     ex->params[ORC_VAR_T1] = tmp.x2[1];
635   }
636
637   func = p->code_exec;
638   func (ex);
639 }
640 #endif
641
642
643 /* orc_downsample_u8 */
644 #ifdef DISABLE_ORC
645 void
646 orc_downsample_u8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
647     int n)
648 {
649   int i;
650   orc_int8 *ORC_RESTRICT ptr0;
651   const orc_union16 *ORC_RESTRICT ptr4;
652   orc_union16 var34;
653   orc_int8 var35;
654   orc_int8 var36;
655   orc_int8 var37;
656
657   ptr0 = (orc_int8 *) d1;
658   ptr4 = (orc_union16 *) s1;
659
660
661   for (i = 0; i < n; i++) {
662     /* 0: loadw */
663     var34 = ptr4[i];
664     /* 1: splitwb */
665     {
666       orc_union16 _src;
667       _src.i = var34.i;
668       var36 = _src.x2[1];
669       var37 = _src.x2[0];
670     }
671     /* 2: avgub */
672     var35 = ((orc_uint8) var36 + (orc_uint8) var37 + 1) >> 1;
673     /* 3: storeb */
674     ptr0[i] = var35;
675   }
676
677 }
678
679 #else
680 static void
681 _backup_orc_downsample_u8 (OrcExecutor * ORC_RESTRICT ex)
682 {
683   int i;
684   int n = ex->n;
685   orc_int8 *ORC_RESTRICT ptr0;
686   const orc_union16 *ORC_RESTRICT ptr4;
687   orc_union16 var34;
688   orc_int8 var35;
689   orc_int8 var36;
690   orc_int8 var37;
691
692   ptr0 = (orc_int8 *) ex->arrays[0];
693   ptr4 = (orc_union16 *) ex->arrays[4];
694
695
696   for (i = 0; i < n; i++) {
697     /* 0: loadw */
698     var34 = ptr4[i];
699     /* 1: splitwb */
700     {
701       orc_union16 _src;
702       _src.i = var34.i;
703       var36 = _src.x2[1];
704       var37 = _src.x2[0];
705     }
706     /* 2: avgub */
707     var35 = ((orc_uint8) var36 + (orc_uint8) var37 + 1) >> 1;
708     /* 3: storeb */
709     ptr0[i] = var35;
710   }
711
712 }
713
714 static OrcProgram *_orc_program_orc_downsample_u8;
715 void
716 orc_downsample_u8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
717     int n)
718 {
719   OrcExecutor _ex, *ex = &_ex;
720   OrcProgram *p = _orc_program_orc_downsample_u8;
721   void (*func) (OrcExecutor *);
722
723   ex->program = p;
724
725   ex->n = n;
726   ex->arrays[ORC_VAR_D1] = d1;
727   ex->arrays[ORC_VAR_S1] = (void *) s1;
728
729   func = p->code_exec;
730   func (ex);
731 }
732 #endif
733
734
735 /* orc_downsample_u16 */
736 #ifdef DISABLE_ORC
737 void
738 orc_downsample_u16 (guint16 * ORC_RESTRICT d1, const guint16 * ORC_RESTRICT s1,
739     int n)
740 {
741   int i;
742   orc_union16 *ORC_RESTRICT ptr0;
743   const orc_union32 *ORC_RESTRICT ptr4;
744   orc_union32 var34;
745   orc_union16 var35;
746   orc_union16 var36;
747   orc_union16 var37;
748
749   ptr0 = (orc_union16 *) d1;
750   ptr4 = (orc_union32 *) s1;
751
752
753   for (i = 0; i < n; i++) {
754     /* 0: loadl */
755     var34 = ptr4[i];
756     /* 1: splitlw */
757     {
758       orc_union32 _src;
759       _src.i = var34.i;
760       var36.i = _src.x2[1];
761       var37.i = _src.x2[0];
762     }
763     /* 2: avguw */
764     var35.i = ((orc_uint16) var36.i + (orc_uint16) var37.i + 1) >> 1;
765     /* 3: storew */
766     ptr0[i] = var35;
767   }
768
769 }
770
771 #else
772 static void
773 _backup_orc_downsample_u16 (OrcExecutor * ORC_RESTRICT ex)
774 {
775   int i;
776   int n = ex->n;
777   orc_union16 *ORC_RESTRICT ptr0;
778   const orc_union32 *ORC_RESTRICT ptr4;
779   orc_union32 var34;
780   orc_union16 var35;
781   orc_union16 var36;
782   orc_union16 var37;
783
784   ptr0 = (orc_union16 *) ex->arrays[0];
785   ptr4 = (orc_union32 *) ex->arrays[4];
786
787
788   for (i = 0; i < n; i++) {
789     /* 0: loadl */
790     var34 = ptr4[i];
791     /* 1: splitlw */
792     {
793       orc_union32 _src;
794       _src.i = var34.i;
795       var36.i = _src.x2[1];
796       var37.i = _src.x2[0];
797     }
798     /* 2: avguw */
799     var35.i = ((orc_uint16) var36.i + (orc_uint16) var37.i + 1) >> 1;
800     /* 3: storew */
801     ptr0[i] = var35;
802   }
803
804 }
805
806 static OrcProgram *_orc_program_orc_downsample_u16;
807 void
808 orc_downsample_u16 (guint16 * ORC_RESTRICT d1, const guint16 * ORC_RESTRICT s1,
809     int n)
810 {
811   OrcExecutor _ex, *ex = &_ex;
812   OrcProgram *p = _orc_program_orc_downsample_u16;
813   void (*func) (OrcExecutor *);
814
815   ex->program = p;
816
817   ex->n = n;
818   ex->arrays[ORC_VAR_D1] = d1;
819   ex->arrays[ORC_VAR_S1] = (void *) s1;
820
821   func = p->code_exec;
822   func (ex);
823 }
824 #endif
825
826
827 /* gst_videoscale_orc_downsample_u32 */
828 #ifdef DISABLE_ORC
829 void
830 gst_videoscale_orc_downsample_u32 (guint8 * ORC_RESTRICT d1,
831     const guint8 * ORC_RESTRICT s1, int n)
832 {
833   int i;
834   orc_union32 *ORC_RESTRICT ptr0;
835   const orc_union64 *ORC_RESTRICT ptr4;
836   orc_union64 var34;
837   orc_union32 var35;
838   orc_union32 var36;
839   orc_union32 var37;
840
841   ptr0 = (orc_union32 *) d1;
842   ptr4 = (orc_union64 *) s1;
843
844
845   for (i = 0; i < n; i++) {
846     /* 0: loadq */
847     var34 = ptr4[i];
848     /* 1: splitql */
849     {
850       orc_union64 _src;
851       _src.i = var34.i;
852       var36.i = _src.x2[1];
853       var37.i = _src.x2[0];
854     }
855     /* 2: avgub */
856     var35.x4[0] = ((orc_uint8) var36.x4[0] + (orc_uint8) var37.x4[0] + 1) >> 1;
857     var35.x4[1] = ((orc_uint8) var36.x4[1] + (orc_uint8) var37.x4[1] + 1) >> 1;
858     var35.x4[2] = ((orc_uint8) var36.x4[2] + (orc_uint8) var37.x4[2] + 1) >> 1;
859     var35.x4[3] = ((orc_uint8) var36.x4[3] + (orc_uint8) var37.x4[3] + 1) >> 1;
860     /* 3: storel */
861     ptr0[i] = var35;
862   }
863
864 }
865
866 #else
867 static void
868 _backup_gst_videoscale_orc_downsample_u32 (OrcExecutor * ORC_RESTRICT ex)
869 {
870   int i;
871   int n = ex->n;
872   orc_union32 *ORC_RESTRICT ptr0;
873   const orc_union64 *ORC_RESTRICT ptr4;
874   orc_union64 var34;
875   orc_union32 var35;
876   orc_union32 var36;
877   orc_union32 var37;
878
879   ptr0 = (orc_union32 *) ex->arrays[0];
880   ptr4 = (orc_union64 *) ex->arrays[4];
881
882
883   for (i = 0; i < n; i++) {
884     /* 0: loadq */
885     var34 = ptr4[i];
886     /* 1: splitql */
887     {
888       orc_union64 _src;
889       _src.i = var34.i;
890       var36.i = _src.x2[1];
891       var37.i = _src.x2[0];
892     }
893     /* 2: avgub */
894     var35.x4[0] = ((orc_uint8) var36.x4[0] + (orc_uint8) var37.x4[0] + 1) >> 1;
895     var35.x4[1] = ((orc_uint8) var36.x4[1] + (orc_uint8) var37.x4[1] + 1) >> 1;
896     var35.x4[2] = ((orc_uint8) var36.x4[2] + (orc_uint8) var37.x4[2] + 1) >> 1;
897     var35.x4[3] = ((orc_uint8) var36.x4[3] + (orc_uint8) var37.x4[3] + 1) >> 1;
898     /* 3: storel */
899     ptr0[i] = var35;
900   }
901
902 }
903
904 static OrcProgram *_orc_program_gst_videoscale_orc_downsample_u32;
905 void
906 gst_videoscale_orc_downsample_u32 (guint8 * ORC_RESTRICT d1,
907     const guint8 * ORC_RESTRICT s1, int n)
908 {
909   OrcExecutor _ex, *ex = &_ex;
910   OrcProgram *p = _orc_program_gst_videoscale_orc_downsample_u32;
911   void (*func) (OrcExecutor *);
912
913   ex->program = p;
914
915   ex->n = n;
916   ex->arrays[ORC_VAR_D1] = d1;
917   ex->arrays[ORC_VAR_S1] = (void *) s1;
918
919   func = p->code_exec;
920   func (ex);
921 }
922 #endif
923
924
925 /* gst_videoscale_orc_downsample_yuyv */
926 #ifdef DISABLE_ORC
927 void
928 gst_videoscale_orc_downsample_yuyv (guint8 * ORC_RESTRICT d1,
929     const guint8 * ORC_RESTRICT s1, int n)
930 {
931   int i;
932   orc_union32 *ORC_RESTRICT ptr0;
933   const orc_union64 *ORC_RESTRICT ptr4;
934   orc_union64 var38;
935   orc_union32 var39;
936   orc_union32 var40;
937   orc_union32 var41;
938   orc_union16 var42;
939   orc_union16 var43;
940   orc_union16 var44;
941   orc_union16 var45;
942   orc_union16 var46;
943   orc_union16 var47;
944
945   ptr0 = (orc_union32 *) d1;
946   ptr4 = (orc_union64 *) s1;
947
948
949   for (i = 0; i < n; i++) {
950     /* 0: loadq */
951     var38 = ptr4[i];
952     /* 1: splitwb */
953     {
954       orc_union16 _src;
955       _src.i = var38.x4[0];
956       var40.x4[0] = _src.x2[1];
957       var41.x4[0] = _src.x2[0];
958     }
959     {
960       orc_union16 _src;
961       _src.i = var38.x4[1];
962       var40.x4[1] = _src.x2[1];
963       var41.x4[1] = _src.x2[0];
964     }
965     {
966       orc_union16 _src;
967       _src.i = var38.x4[2];
968       var40.x4[2] = _src.x2[1];
969       var41.x4[2] = _src.x2[0];
970     }
971     {
972       orc_union16 _src;
973       _src.i = var38.x4[3];
974       var40.x4[3] = _src.x2[1];
975       var41.x4[3] = _src.x2[0];
976     }
977     /* 2: splitwb */
978     {
979       orc_union16 _src;
980       _src.i = var40.x2[0];
981       var42.x2[0] = _src.x2[1];
982       var43.x2[0] = _src.x2[0];
983     }
984     {
985       orc_union16 _src;
986       _src.i = var40.x2[1];
987       var42.x2[1] = _src.x2[1];
988       var43.x2[1] = _src.x2[0];
989     }
990     /* 3: avgub */
991     var44.x2[0] = ((orc_uint8) var42.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1;
992     var44.x2[1] = ((orc_uint8) var42.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1;
993     /* 4: splitlw */
994     {
995       orc_union32 _src;
996       _src.i = var41.i;
997       var45.i = _src.x2[1];
998       var46.i = _src.x2[0];
999     }
1000     /* 5: avgub */
1001     var47.x2[0] = ((orc_uint8) var45.x2[0] + (orc_uint8) var46.x2[0] + 1) >> 1;
1002     var47.x2[1] = ((orc_uint8) var45.x2[1] + (orc_uint8) var46.x2[1] + 1) >> 1;
1003     /* 6: mergebw */
1004     {
1005       orc_union16 _dest;
1006       _dest.x2[0] = var44.x2[0];
1007       _dest.x2[1] = var47.x2[0];
1008       var39.x2[0] = _dest.i;
1009     }
1010     {
1011       orc_union16 _dest;
1012       _dest.x2[0] = var44.x2[1];
1013       _dest.x2[1] = var47.x2[1];
1014       var39.x2[1] = _dest.i;
1015     }
1016     /* 7: storel */
1017     ptr0[i] = var39;
1018   }
1019
1020 }
1021
1022 #else
1023 static void
1024 _backup_gst_videoscale_orc_downsample_yuyv (OrcExecutor * ORC_RESTRICT ex)
1025 {
1026   int i;
1027   int n = ex->n;
1028   orc_union32 *ORC_RESTRICT ptr0;
1029   const orc_union64 *ORC_RESTRICT ptr4;
1030   orc_union64 var38;
1031   orc_union32 var39;
1032   orc_union32 var40;
1033   orc_union32 var41;
1034   orc_union16 var42;
1035   orc_union16 var43;
1036   orc_union16 var44;
1037   orc_union16 var45;
1038   orc_union16 var46;
1039   orc_union16 var47;
1040
1041   ptr0 = (orc_union32 *) ex->arrays[0];
1042   ptr4 = (orc_union64 *) ex->arrays[4];
1043
1044
1045   for (i = 0; i < n; i++) {
1046     /* 0: loadq */
1047     var38 = ptr4[i];
1048     /* 1: splitwb */
1049     {
1050       orc_union16 _src;
1051       _src.i = var38.x4[0];
1052       var40.x4[0] = _src.x2[1];
1053       var41.x4[0] = _src.x2[0];
1054     }
1055     {
1056       orc_union16 _src;
1057       _src.i = var38.x4[1];
1058       var40.x4[1] = _src.x2[1];
1059       var41.x4[1] = _src.x2[0];
1060     }
1061     {
1062       orc_union16 _src;
1063       _src.i = var38.x4[2];
1064       var40.x4[2] = _src.x2[1];
1065       var41.x4[2] = _src.x2[0];
1066     }
1067     {
1068       orc_union16 _src;
1069       _src.i = var38.x4[3];
1070       var40.x4[3] = _src.x2[1];
1071       var41.x4[3] = _src.x2[0];
1072     }
1073     /* 2: splitwb */
1074     {
1075       orc_union16 _src;
1076       _src.i = var40.x2[0];
1077       var42.x2[0] = _src.x2[1];
1078       var43.x2[0] = _src.x2[0];
1079     }
1080     {
1081       orc_union16 _src;
1082       _src.i = var40.x2[1];
1083       var42.x2[1] = _src.x2[1];
1084       var43.x2[1] = _src.x2[0];
1085     }
1086     /* 3: avgub */
1087     var44.x2[0] = ((orc_uint8) var42.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1;
1088     var44.x2[1] = ((orc_uint8) var42.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1;
1089     /* 4: splitlw */
1090     {
1091       orc_union32 _src;
1092       _src.i = var41.i;
1093       var45.i = _src.x2[1];
1094       var46.i = _src.x2[0];
1095     }
1096     /* 5: avgub */
1097     var47.x2[0] = ((orc_uint8) var45.x2[0] + (orc_uint8) var46.x2[0] + 1) >> 1;
1098     var47.x2[1] = ((orc_uint8) var45.x2[1] + (orc_uint8) var46.x2[1] + 1) >> 1;
1099     /* 6: mergebw */
1100     {
1101       orc_union16 _dest;
1102       _dest.x2[0] = var44.x2[0];
1103       _dest.x2[1] = var47.x2[0];
1104       var39.x2[0] = _dest.i;
1105     }
1106     {
1107       orc_union16 _dest;
1108       _dest.x2[0] = var44.x2[1];
1109       _dest.x2[1] = var47.x2[1];
1110       var39.x2[1] = _dest.i;
1111     }
1112     /* 7: storel */
1113     ptr0[i] = var39;
1114   }
1115
1116 }
1117
1118 static OrcProgram *_orc_program_gst_videoscale_orc_downsample_yuyv;
1119 void
1120 gst_videoscale_orc_downsample_yuyv (guint8 * ORC_RESTRICT d1,
1121     const guint8 * ORC_RESTRICT s1, int n)
1122 {
1123   OrcExecutor _ex, *ex = &_ex;
1124   OrcProgram *p = _orc_program_gst_videoscale_orc_downsample_yuyv;
1125   void (*func) (OrcExecutor *);
1126
1127   ex->program = p;
1128
1129   ex->n = n;
1130   ex->arrays[ORC_VAR_D1] = d1;
1131   ex->arrays[ORC_VAR_S1] = (void *) s1;
1132
1133   func = p->code_exec;
1134   func (ex);
1135 }
1136 #endif
1137
1138
1139 /* gst_videoscale_orc_resample_nearest_u8 */
1140 #ifdef DISABLE_ORC
1141 void
1142 gst_videoscale_orc_resample_nearest_u8 (guint8 * ORC_RESTRICT d1,
1143     const guint8 * ORC_RESTRICT s1, int p1, int p2, int n)
1144 {
1145   int i;
1146   orc_int8 *ORC_RESTRICT ptr0;
1147   const orc_int8 *ORC_RESTRICT ptr4;
1148   orc_int8 var32;
1149
1150   ptr0 = (orc_int8 *) d1;
1151   ptr4 = (orc_int8 *) s1;
1152
1153
1154   for (i = 0; i < n; i++) {
1155     /* 0: ldresnearb */
1156     var32 = ptr4[(p1 + i * p2) >> 16];
1157     /* 1: storeb */
1158     ptr0[i] = var32;
1159   }
1160
1161 }
1162
1163 #else
1164 static void
1165 _backup_gst_videoscale_orc_resample_nearest_u8 (OrcExecutor * ORC_RESTRICT ex)
1166 {
1167   int i;
1168   int n = ex->n;
1169   orc_int8 *ORC_RESTRICT ptr0;
1170   const orc_int8 *ORC_RESTRICT ptr4;
1171   orc_int8 var32;
1172
1173   ptr0 = (orc_int8 *) ex->arrays[0];
1174   ptr4 = (orc_int8 *) ex->arrays[4];
1175
1176
1177   for (i = 0; i < n; i++) {
1178     /* 0: ldresnearb */
1179     var32 = ptr4[(ex->params[24] + i * ex->params[25]) >> 16];
1180     /* 1: storeb */
1181     ptr0[i] = var32;
1182   }
1183
1184 }
1185
1186 static OrcProgram *_orc_program_gst_videoscale_orc_resample_nearest_u8;
1187 void
1188 gst_videoscale_orc_resample_nearest_u8 (guint8 * ORC_RESTRICT d1,
1189     const guint8 * ORC_RESTRICT s1, int p1, int p2, int n)
1190 {
1191   OrcExecutor _ex, *ex = &_ex;
1192   OrcProgram *p = _orc_program_gst_videoscale_orc_resample_nearest_u8;
1193   void (*func) (OrcExecutor *);
1194
1195   ex->program = p;
1196
1197   ex->n = n;
1198   ex->arrays[ORC_VAR_D1] = d1;
1199   ex->arrays[ORC_VAR_S1] = (void *) s1;
1200   ex->params[ORC_VAR_P1] = p1;
1201   ex->params[ORC_VAR_P2] = p2;
1202
1203   func = p->code_exec;
1204   func (ex);
1205 }
1206 #endif
1207
1208
1209 /* gst_videoscale_orc_resample_bilinear_u8 */
1210 #ifdef DISABLE_ORC
1211 void
1212 gst_videoscale_orc_resample_bilinear_u8 (guint8 * ORC_RESTRICT d1,
1213     const guint8 * ORC_RESTRICT s1, int p1, int p2, int n)
1214 {
1215   int i;
1216   orc_int8 *ORC_RESTRICT ptr0;
1217   const orc_int8 *ORC_RESTRICT ptr4;
1218   orc_int8 var32;
1219
1220   ptr0 = (orc_int8 *) d1;
1221   ptr4 = (orc_int8 *) s1;
1222
1223
1224   for (i = 0; i < n; i++) {
1225     /* 0: ldreslinb */
1226     {
1227       int tmp = p1 + i * p2;
1228       var32 =
1229           ((orc_uint8) ptr4[tmp >> 16] * (256 - ((tmp >> 8) & 0xff)) +
1230           (orc_uint8) ptr4[(tmp >> 16) + 1] * ((tmp >> 8) & 0xff)) >> 8;
1231     }
1232     /* 1: storeb */
1233     ptr0[i] = var32;
1234   }
1235
1236 }
1237
1238 #else
1239 static void
1240 _backup_gst_videoscale_orc_resample_bilinear_u8 (OrcExecutor * ORC_RESTRICT ex)
1241 {
1242   int i;
1243   int n = ex->n;
1244   orc_int8 *ORC_RESTRICT ptr0;
1245   const orc_int8 *ORC_RESTRICT ptr4;
1246   orc_int8 var32;
1247
1248   ptr0 = (orc_int8 *) ex->arrays[0];
1249   ptr4 = (orc_int8 *) ex->arrays[4];
1250
1251
1252   for (i = 0; i < n; i++) {
1253     /* 0: ldreslinb */
1254     {
1255       int tmp = ex->params[24] + i * ex->params[25];
1256       var32 =
1257           ((orc_uint8) ptr4[tmp >> 16] * (256 - ((tmp >> 8) & 0xff)) +
1258           (orc_uint8) ptr4[(tmp >> 16) + 1] * ((tmp >> 8) & 0xff)) >> 8;
1259     }
1260     /* 1: storeb */
1261     ptr0[i] = var32;
1262   }
1263
1264 }
1265
1266 static OrcProgram *_orc_program_gst_videoscale_orc_resample_bilinear_u8;
1267 void
1268 gst_videoscale_orc_resample_bilinear_u8 (guint8 * ORC_RESTRICT d1,
1269     const guint8 * ORC_RESTRICT s1, int p1, int p2, int n)
1270 {
1271   OrcExecutor _ex, *ex = &_ex;
1272   OrcProgram *p = _orc_program_gst_videoscale_orc_resample_bilinear_u8;
1273   void (*func) (OrcExecutor *);
1274
1275   ex->program = p;
1276
1277   ex->n = n;
1278   ex->arrays[ORC_VAR_D1] = d1;
1279   ex->arrays[ORC_VAR_S1] = (void *) s1;
1280   ex->params[ORC_VAR_P1] = p1;
1281   ex->params[ORC_VAR_P2] = p2;
1282
1283   func = p->code_exec;
1284   func (ex);
1285 }
1286 #endif
1287
1288
1289 /* gst_videoscale_orc_resample_nearest_u32 */
1290 #ifdef DISABLE_ORC
1291 void
1292 gst_videoscale_orc_resample_nearest_u32 (guint8 * ORC_RESTRICT d1,
1293     const guint8 * ORC_RESTRICT s1, int p1, int p2, int n)
1294 {
1295   int i;
1296   orc_union32 *ORC_RESTRICT ptr0;
1297   const orc_union32 *ORC_RESTRICT ptr4;
1298   orc_union32 var32;
1299
1300   ptr0 = (orc_union32 *) d1;
1301   ptr4 = (orc_union32 *) s1;
1302
1303
1304   for (i = 0; i < n; i++) {
1305     /* 0: ldresnearl */
1306     var32 = ptr4[(p1 + i * p2) >> 16];
1307     /* 1: storel */
1308     ptr0[i] = var32;
1309   }
1310
1311 }
1312
1313 #else
1314 static void
1315 _backup_gst_videoscale_orc_resample_nearest_u32 (OrcExecutor * ORC_RESTRICT ex)
1316 {
1317   int i;
1318   int n = ex->n;
1319   orc_union32 *ORC_RESTRICT ptr0;
1320   const orc_union32 *ORC_RESTRICT ptr4;
1321   orc_union32 var32;
1322
1323   ptr0 = (orc_union32 *) ex->arrays[0];
1324   ptr4 = (orc_union32 *) ex->arrays[4];
1325
1326
1327   for (i = 0; i < n; i++) {
1328     /* 0: ldresnearl */
1329     var32 = ptr4[(ex->params[24] + i * ex->params[25]) >> 16];
1330     /* 1: storel */
1331     ptr0[i] = var32;
1332   }
1333
1334 }
1335
1336 static OrcProgram *_orc_program_gst_videoscale_orc_resample_nearest_u32;
1337 void
1338 gst_videoscale_orc_resample_nearest_u32 (guint8 * ORC_RESTRICT d1,
1339     const guint8 * ORC_RESTRICT s1, int p1, int p2, int n)
1340 {
1341   OrcExecutor _ex, *ex = &_ex;
1342   OrcProgram *p = _orc_program_gst_videoscale_orc_resample_nearest_u32;
1343   void (*func) (OrcExecutor *);
1344
1345   ex->program = p;
1346
1347   ex->n = n;
1348   ex->arrays[ORC_VAR_D1] = d1;
1349   ex->arrays[ORC_VAR_S1] = (void *) s1;
1350   ex->params[ORC_VAR_P1] = p1;
1351   ex->params[ORC_VAR_P2] = p2;
1352
1353   func = p->code_exec;
1354   func (ex);
1355 }
1356 #endif
1357
1358
1359 /* gst_videoscale_orc_resample_bilinear_u32 */
1360 #ifdef DISABLE_ORC
1361 void
1362 gst_videoscale_orc_resample_bilinear_u32 (guint8 * ORC_RESTRICT d1,
1363     const guint8 * ORC_RESTRICT s1, int p1, int p2, int n)
1364 {
1365   int i;
1366   orc_union32 *ORC_RESTRICT ptr0;
1367   const orc_union32 *ORC_RESTRICT ptr4;
1368   orc_union32 var32;
1369
1370   ptr0 = (orc_union32 *) d1;
1371   ptr4 = (orc_union32 *) s1;
1372
1373
1374   for (i = 0; i < n; i++) {
1375     /* 0: ldreslinl */
1376     {
1377       int tmp = p1 + i * p2;
1378       orc_union32 a = ptr4[tmp >> 16];
1379       orc_union32 b = ptr4[(tmp >> 16) + 1];
1380       var32.x4[0] =
1381           ((orc_uint8) a.x4[0] * (256 - ((tmp >> 8) & 0xff)) +
1382           (orc_uint8) b.x4[0] * ((tmp >> 8) & 0xff)) >> 8;
1383       var32.x4[1] =
1384           ((orc_uint8) a.x4[1] * (256 - ((tmp >> 8) & 0xff)) +
1385           (orc_uint8) b.x4[1] * ((tmp >> 8) & 0xff)) >> 8;
1386       var32.x4[2] =
1387           ((orc_uint8) a.x4[2] * (256 - ((tmp >> 8) & 0xff)) +
1388           (orc_uint8) b.x4[2] * ((tmp >> 8) & 0xff)) >> 8;
1389       var32.x4[3] =
1390           ((orc_uint8) a.x4[3] * (256 - ((tmp >> 8) & 0xff)) +
1391           (orc_uint8) b.x4[3] * ((tmp >> 8) & 0xff)) >> 8;
1392     }
1393     /* 1: storel */
1394     ptr0[i] = var32;
1395   }
1396
1397 }
1398
1399 #else
1400 static void
1401 _backup_gst_videoscale_orc_resample_bilinear_u32 (OrcExecutor * ORC_RESTRICT ex)
1402 {
1403   int i;
1404   int n = ex->n;
1405   orc_union32 *ORC_RESTRICT ptr0;
1406   const orc_union32 *ORC_RESTRICT ptr4;
1407   orc_union32 var32;
1408
1409   ptr0 = (orc_union32 *) ex->arrays[0];
1410   ptr4 = (orc_union32 *) ex->arrays[4];
1411
1412
1413   for (i = 0; i < n; i++) {
1414     /* 0: ldreslinl */
1415     {
1416       int tmp = ex->params[24] + i * ex->params[25];
1417       orc_union32 a = ptr4[tmp >> 16];
1418       orc_union32 b = ptr4[(tmp >> 16) + 1];
1419       var32.x4[0] =
1420           ((orc_uint8) a.x4[0] * (256 - ((tmp >> 8) & 0xff)) +
1421           (orc_uint8) b.x4[0] * ((tmp >> 8) & 0xff)) >> 8;
1422       var32.x4[1] =
1423           ((orc_uint8) a.x4[1] * (256 - ((tmp >> 8) & 0xff)) +
1424           (orc_uint8) b.x4[1] * ((tmp >> 8) & 0xff)) >> 8;
1425       var32.x4[2] =
1426           ((orc_uint8) a.x4[2] * (256 - ((tmp >> 8) & 0xff)) +
1427           (orc_uint8) b.x4[2] * ((tmp >> 8) & 0xff)) >> 8;
1428       var32.x4[3] =
1429           ((orc_uint8) a.x4[3] * (256 - ((tmp >> 8) & 0xff)) +
1430           (orc_uint8) b.x4[3] * ((tmp >> 8) & 0xff)) >> 8;
1431     }
1432     /* 1: storel */
1433     ptr0[i] = var32;
1434   }
1435
1436 }
1437
1438 static OrcProgram *_orc_program_gst_videoscale_orc_resample_bilinear_u32;
1439 void
1440 gst_videoscale_orc_resample_bilinear_u32 (guint8 * ORC_RESTRICT d1,
1441     const guint8 * ORC_RESTRICT s1, int p1, int p2, int n)
1442 {
1443   OrcExecutor _ex, *ex = &_ex;
1444   OrcProgram *p = _orc_program_gst_videoscale_orc_resample_bilinear_u32;
1445   void (*func) (OrcExecutor *);
1446
1447   ex->program = p;
1448
1449   ex->n = n;
1450   ex->arrays[ORC_VAR_D1] = d1;
1451   ex->arrays[ORC_VAR_S1] = (void *) s1;
1452   ex->params[ORC_VAR_P1] = p1;
1453   ex->params[ORC_VAR_P2] = p2;
1454
1455   func = p->code_exec;
1456   func (ex);
1457 }
1458 #endif
1459
1460
1461 /* gst_videoscale_orc_resample_merge_bilinear_u32 */
1462 #ifdef DISABLE_ORC
1463 void
1464 gst_videoscale_orc_resample_merge_bilinear_u32 (guint8 * ORC_RESTRICT d1,
1465     guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1,
1466     const guint8 * ORC_RESTRICT s2, int p1, int p2, int p3, int n)
1467 {
1468   int i;
1469   orc_union32 *ORC_RESTRICT ptr0;
1470   orc_union32 *ORC_RESTRICT ptr1;
1471   const orc_union32 *ORC_RESTRICT ptr4;
1472   const orc_union32 *ORC_RESTRICT ptr5;
1473   orc_union64 var37;
1474   orc_union32 var38;
1475   orc_union32 var39;
1476   orc_union32 var40;
1477   orc_union64 var41;
1478   orc_union64 var42;
1479   orc_union64 var43;
1480   orc_union64 var44;
1481   orc_union32 var45;
1482
1483   ptr0 = (orc_union32 *) d1;
1484   ptr1 = (orc_union32 *) d2;
1485   ptr4 = (orc_union32 *) s1;
1486   ptr5 = (orc_union32 *) s2;
1487
1488   /* 6: loadpw */
1489   var37.x4[0] = p1;
1490   var37.x4[1] = p1;
1491   var37.x4[2] = p1;
1492   var37.x4[3] = p1;
1493
1494   for (i = 0; i < n; i++) {
1495     /* 0: ldreslinl */
1496     {
1497       int tmp = p2 + i * p3;
1498       orc_union32 a = ptr5[tmp >> 16];
1499       orc_union32 b = ptr5[(tmp >> 16) + 1];
1500       var39.x4[0] =
1501           ((orc_uint8) a.x4[0] * (256 - ((tmp >> 8) & 0xff)) +
1502           (orc_uint8) b.x4[0] * ((tmp >> 8) & 0xff)) >> 8;
1503       var39.x4[1] =
1504           ((orc_uint8) a.x4[1] * (256 - ((tmp >> 8) & 0xff)) +
1505           (orc_uint8) b.x4[1] * ((tmp >> 8) & 0xff)) >> 8;
1506       var39.x4[2] =
1507           ((orc_uint8) a.x4[2] * (256 - ((tmp >> 8) & 0xff)) +
1508           (orc_uint8) b.x4[2] * ((tmp >> 8) & 0xff)) >> 8;
1509       var39.x4[3] =
1510           ((orc_uint8) a.x4[3] * (256 - ((tmp >> 8) & 0xff)) +
1511           (orc_uint8) b.x4[3] * ((tmp >> 8) & 0xff)) >> 8;
1512     }
1513     /* 1: storel */
1514     ptr1[i] = var39;
1515     /* 2: loadl */
1516     var40 = ptr4[i];
1517     /* 3: convubw */
1518     var41.x4[0] = (orc_uint8) var40.x4[0];
1519     var41.x4[1] = (orc_uint8) var40.x4[1];
1520     var41.x4[2] = (orc_uint8) var40.x4[2];
1521     var41.x4[3] = (orc_uint8) var40.x4[3];
1522     /* 4: convubw */
1523     var42.x4[0] = (orc_uint8) var39.x4[0];
1524     var42.x4[1] = (orc_uint8) var39.x4[1];
1525     var42.x4[2] = (orc_uint8) var39.x4[2];
1526     var42.x4[3] = (orc_uint8) var39.x4[3];
1527     /* 5: subw */
1528     var43.x4[0] = var42.x4[0] - var41.x4[0];
1529     var43.x4[1] = var42.x4[1] - var41.x4[1];
1530     var43.x4[2] = var42.x4[2] - var41.x4[2];
1531     var43.x4[3] = var42.x4[3] - var41.x4[3];
1532     /* 7: mullw */
1533     var44.x4[0] = (var43.x4[0] * var37.x4[0]) & 0xffff;
1534     var44.x4[1] = (var43.x4[1] * var37.x4[1]) & 0xffff;
1535     var44.x4[2] = (var43.x4[2] * var37.x4[2]) & 0xffff;
1536     var44.x4[3] = (var43.x4[3] * var37.x4[3]) & 0xffff;
1537     /* 8: convhwb */
1538     var45.x4[0] = ((orc_uint16) var44.x4[0]) >> 8;
1539     var45.x4[1] = ((orc_uint16) var44.x4[1]) >> 8;
1540     var45.x4[2] = ((orc_uint16) var44.x4[2]) >> 8;
1541     var45.x4[3] = ((orc_uint16) var44.x4[3]) >> 8;
1542     /* 9: addb */
1543     var38.x4[0] = var45.x4[0] + var40.x4[0];
1544     var38.x4[1] = var45.x4[1] + var40.x4[1];
1545     var38.x4[2] = var45.x4[2] + var40.x4[2];
1546     var38.x4[3] = var45.x4[3] + var40.x4[3];
1547     /* 10: storel */
1548     ptr0[i] = var38;
1549   }
1550
1551 }
1552
1553 #else
1554 static void
1555 _backup_gst_videoscale_orc_resample_merge_bilinear_u32 (OrcExecutor *
1556     ORC_RESTRICT ex)
1557 {
1558   int i;
1559   int n = ex->n;
1560   orc_union32 *ORC_RESTRICT ptr0;
1561   orc_union32 *ORC_RESTRICT ptr1;
1562   const orc_union32 *ORC_RESTRICT ptr4;
1563   const orc_union32 *ORC_RESTRICT ptr5;
1564   orc_union64 var37;
1565   orc_union32 var38;
1566   orc_union32 var39;
1567   orc_union32 var40;
1568   orc_union64 var41;
1569   orc_union64 var42;
1570   orc_union64 var43;
1571   orc_union64 var44;
1572   orc_union32 var45;
1573
1574   ptr0 = (orc_union32 *) ex->arrays[0];
1575   ptr1 = (orc_union32 *) ex->arrays[1];
1576   ptr4 = (orc_union32 *) ex->arrays[4];
1577   ptr5 = (orc_union32 *) ex->arrays[5];
1578
1579   /* 6: loadpw */
1580   var37.x4[0] = ex->params[24];
1581   var37.x4[1] = ex->params[24];
1582   var37.x4[2] = ex->params[24];
1583   var37.x4[3] = ex->params[24];
1584
1585   for (i = 0; i < n; i++) {
1586     /* 0: ldreslinl */
1587     {
1588       int tmp = ex->params[25] + i * ex->params[26];
1589       orc_union32 a = ptr5[tmp >> 16];
1590       orc_union32 b = ptr5[(tmp >> 16) + 1];
1591       var39.x4[0] =
1592           ((orc_uint8) a.x4[0] * (256 - ((tmp >> 8) & 0xff)) +
1593           (orc_uint8) b.x4[0] * ((tmp >> 8) & 0xff)) >> 8;
1594       var39.x4[1] =
1595           ((orc_uint8) a.x4[1] * (256 - ((tmp >> 8) & 0xff)) +
1596           (orc_uint8) b.x4[1] * ((tmp >> 8) & 0xff)) >> 8;
1597       var39.x4[2] =
1598           ((orc_uint8) a.x4[2] * (256 - ((tmp >> 8) & 0xff)) +
1599           (orc_uint8) b.x4[2] * ((tmp >> 8) & 0xff)) >> 8;
1600       var39.x4[3] =
1601           ((orc_uint8) a.x4[3] * (256 - ((tmp >> 8) & 0xff)) +
1602           (orc_uint8) b.x4[3] * ((tmp >> 8) & 0xff)) >> 8;
1603     }
1604     /* 1: storel */
1605     ptr1[i] = var39;
1606     /* 2: loadl */
1607     var40 = ptr4[i];
1608     /* 3: convubw */
1609     var41.x4[0] = (orc_uint8) var40.x4[0];
1610     var41.x4[1] = (orc_uint8) var40.x4[1];
1611     var41.x4[2] = (orc_uint8) var40.x4[2];
1612     var41.x4[3] = (orc_uint8) var40.x4[3];
1613     /* 4: convubw */
1614     var42.x4[0] = (orc_uint8) var39.x4[0];
1615     var42.x4[1] = (orc_uint8) var39.x4[1];
1616     var42.x4[2] = (orc_uint8) var39.x4[2];
1617     var42.x4[3] = (orc_uint8) var39.x4[3];
1618     /* 5: subw */
1619     var43.x4[0] = var42.x4[0] - var41.x4[0];
1620     var43.x4[1] = var42.x4[1] - var41.x4[1];
1621     var43.x4[2] = var42.x4[2] - var41.x4[2];
1622     var43.x4[3] = var42.x4[3] - var41.x4[3];
1623     /* 7: mullw */
1624     var44.x4[0] = (var43.x4[0] * var37.x4[0]) & 0xffff;
1625     var44.x4[1] = (var43.x4[1] * var37.x4[1]) & 0xffff;
1626     var44.x4[2] = (var43.x4[2] * var37.x4[2]) & 0xffff;
1627     var44.x4[3] = (var43.x4[3] * var37.x4[3]) & 0xffff;
1628     /* 8: convhwb */
1629     var45.x4[0] = ((orc_uint16) var44.x4[0]) >> 8;
1630     var45.x4[1] = ((orc_uint16) var44.x4[1]) >> 8;
1631     var45.x4[2] = ((orc_uint16) var44.x4[2]) >> 8;
1632     var45.x4[3] = ((orc_uint16) var44.x4[3]) >> 8;
1633     /* 9: addb */
1634     var38.x4[0] = var45.x4[0] + var40.x4[0];
1635     var38.x4[1] = var45.x4[1] + var40.x4[1];
1636     var38.x4[2] = var45.x4[2] + var40.x4[2];
1637     var38.x4[3] = var45.x4[3] + var40.x4[3];
1638     /* 10: storel */
1639     ptr0[i] = var38;
1640   }
1641
1642 }
1643
1644 static OrcProgram *_orc_program_gst_videoscale_orc_resample_merge_bilinear_u32;
1645 void
1646 gst_videoscale_orc_resample_merge_bilinear_u32 (guint8 * ORC_RESTRICT d1,
1647     guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1,
1648     const guint8 * ORC_RESTRICT s2, int p1, int p2, int p3, int n)
1649 {
1650   OrcExecutor _ex, *ex = &_ex;
1651   OrcProgram *p = _orc_program_gst_videoscale_orc_resample_merge_bilinear_u32;
1652   void (*func) (OrcExecutor *);
1653
1654   ex->program = p;
1655
1656   ex->n = n;
1657   ex->arrays[ORC_VAR_D1] = d1;
1658   ex->arrays[ORC_VAR_D2] = d2;
1659   ex->arrays[ORC_VAR_S1] = (void *) s1;
1660   ex->arrays[ORC_VAR_S2] = (void *) s2;
1661   ex->params[ORC_VAR_P1] = p1;
1662   ex->params[ORC_VAR_P2] = p2;
1663   ex->params[ORC_VAR_P3] = p3;
1664
1665   func = p->code_exec;
1666   func (ex);
1667 }
1668 #endif
1669
1670
1671 /* gst_videoscale_orc_merge_bicubic_u8 */
1672 #ifdef DISABLE_ORC
1673 void
1674 gst_videoscale_orc_merge_bicubic_u8 (guint8 * ORC_RESTRICT d1,
1675     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
1676     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int p1,
1677     int p2, int p3, int p4, int n)
1678 {
1679   int i;
1680   orc_int8 *ORC_RESTRICT ptr0;
1681   const orc_int8 *ORC_RESTRICT ptr4;
1682   const orc_int8 *ORC_RESTRICT ptr5;
1683   const orc_int8 *ORC_RESTRICT ptr6;
1684   const orc_int8 *ORC_RESTRICT ptr7;
1685   orc_int8 var34;
1686   orc_int8 var35;
1687   orc_int8 var36;
1688   orc_int8 var37;
1689   orc_int8 var38;
1690   orc_int8 var39;
1691   orc_int8 var40;
1692   orc_int8 var41;
1693   orc_union16 var42;
1694   orc_int8 var43;
1695   orc_union16 var44;
1696   orc_union16 var45;
1697   orc_union16 var46;
1698   orc_union16 var47;
1699   orc_union16 var48;
1700   orc_union16 var49;
1701   orc_union16 var50;
1702   orc_union16 var51;
1703   orc_union16 var52;
1704
1705   ptr0 = (orc_int8 *) d1;
1706   ptr4 = (orc_int8 *) s1;
1707   ptr5 = (orc_int8 *) s2;
1708   ptr6 = (orc_int8 *) s3;
1709   ptr7 = (orc_int8 *) s4;
1710
1711   /* 1: loadpb */
1712   var35 = p2;
1713   /* 4: loadpb */
1714   var37 = p3;
1715   /* 8: loadpb */
1716   var39 = p1;
1717   /* 12: loadpb */
1718   var41 = p4;
1719   /* 15: loadpw */
1720   var42.i = (int) 0x00000020;   /* 32 or 1.58101e-322f */
1721
1722   for (i = 0; i < n; i++) {
1723     /* 0: loadb */
1724     var34 = ptr5[i];
1725     /* 2: mulubw */
1726     var44.i = ((orc_uint8) var34) * ((orc_uint8) var35);
1727     /* 3: loadb */
1728     var36 = ptr6[i];
1729     /* 5: mulubw */
1730     var45.i = ((orc_uint8) var36) * ((orc_uint8) var37);
1731     /* 6: addw */
1732     var46.i = var44.i + var45.i;
1733     /* 7: loadb */
1734     var38 = ptr4[i];
1735     /* 9: mulubw */
1736     var47.i = ((orc_uint8) var38) * ((orc_uint8) var39);
1737     /* 10: subw */
1738     var48.i = var46.i - var47.i;
1739     /* 11: loadb */
1740     var40 = ptr7[i];
1741     /* 13: mulubw */
1742     var49.i = ((orc_uint8) var40) * ((orc_uint8) var41);
1743     /* 14: subw */
1744     var50.i = var48.i - var49.i;
1745     /* 16: addw */
1746     var51.i = var50.i + var42.i;
1747     /* 17: shrsw */
1748     var52.i = var51.i >> 6;
1749     /* 18: convsuswb */
1750     var43 = ORC_CLAMP_UB (var52.i);
1751     /* 19: storeb */
1752     ptr0[i] = var43;
1753   }
1754
1755 }
1756
1757 #else
1758 static void
1759 _backup_gst_videoscale_orc_merge_bicubic_u8 (OrcExecutor * ORC_RESTRICT ex)
1760 {
1761   int i;
1762   int n = ex->n;
1763   orc_int8 *ORC_RESTRICT ptr0;
1764   const orc_int8 *ORC_RESTRICT ptr4;
1765   const orc_int8 *ORC_RESTRICT ptr5;
1766   const orc_int8 *ORC_RESTRICT ptr6;
1767   const orc_int8 *ORC_RESTRICT ptr7;
1768   orc_int8 var34;
1769   orc_int8 var35;
1770   orc_int8 var36;
1771   orc_int8 var37;
1772   orc_int8 var38;
1773   orc_int8 var39;
1774   orc_int8 var40;
1775   orc_int8 var41;
1776   orc_union16 var42;
1777   orc_int8 var43;
1778   orc_union16 var44;
1779   orc_union16 var45;
1780   orc_union16 var46;
1781   orc_union16 var47;
1782   orc_union16 var48;
1783   orc_union16 var49;
1784   orc_union16 var50;
1785   orc_union16 var51;
1786   orc_union16 var52;
1787
1788   ptr0 = (orc_int8 *) ex->arrays[0];
1789   ptr4 = (orc_int8 *) ex->arrays[4];
1790   ptr5 = (orc_int8 *) ex->arrays[5];
1791   ptr6 = (orc_int8 *) ex->arrays[6];
1792   ptr7 = (orc_int8 *) ex->arrays[7];
1793
1794   /* 1: loadpb */
1795   var35 = ex->params[25];
1796   /* 4: loadpb */
1797   var37 = ex->params[26];
1798   /* 8: loadpb */
1799   var39 = ex->params[24];
1800   /* 12: loadpb */
1801   var41 = ex->params[27];
1802   /* 15: loadpw */
1803   var42.i = (int) 0x00000020;   /* 32 or 1.58101e-322f */
1804
1805   for (i = 0; i < n; i++) {
1806     /* 0: loadb */
1807     var34 = ptr5[i];
1808     /* 2: mulubw */
1809     var44.i = ((orc_uint8) var34) * ((orc_uint8) var35);
1810     /* 3: loadb */
1811     var36 = ptr6[i];
1812     /* 5: mulubw */
1813     var45.i = ((orc_uint8) var36) * ((orc_uint8) var37);
1814     /* 6: addw */
1815     var46.i = var44.i + var45.i;
1816     /* 7: loadb */
1817     var38 = ptr4[i];
1818     /* 9: mulubw */
1819     var47.i = ((orc_uint8) var38) * ((orc_uint8) var39);
1820     /* 10: subw */
1821     var48.i = var46.i - var47.i;
1822     /* 11: loadb */
1823     var40 = ptr7[i];
1824     /* 13: mulubw */
1825     var49.i = ((orc_uint8) var40) * ((orc_uint8) var41);
1826     /* 14: subw */
1827     var50.i = var48.i - var49.i;
1828     /* 16: addw */
1829     var51.i = var50.i + var42.i;
1830     /* 17: shrsw */
1831     var52.i = var51.i >> 6;
1832     /* 18: convsuswb */
1833     var43 = ORC_CLAMP_UB (var52.i);
1834     /* 19: storeb */
1835     ptr0[i] = var43;
1836   }
1837
1838 }
1839
1840 static OrcProgram *_orc_program_gst_videoscale_orc_merge_bicubic_u8;
1841 void
1842 gst_videoscale_orc_merge_bicubic_u8 (guint8 * ORC_RESTRICT d1,
1843     const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
1844     const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int p1,
1845     int p2, int p3, int p4, int n)
1846 {
1847   OrcExecutor _ex, *ex = &_ex;
1848   OrcProgram *p = _orc_program_gst_videoscale_orc_merge_bicubic_u8;
1849   void (*func) (OrcExecutor *);
1850
1851   ex->program = p;
1852
1853   ex->n = n;
1854   ex->arrays[ORC_VAR_D1] = d1;
1855   ex->arrays[ORC_VAR_S1] = (void *) s1;
1856   ex->arrays[ORC_VAR_S2] = (void *) s2;
1857   ex->arrays[ORC_VAR_S3] = (void *) s3;
1858   ex->arrays[ORC_VAR_S4] = (void *) s4;
1859   ex->params[ORC_VAR_P1] = p1;
1860   ex->params[ORC_VAR_P2] = p2;
1861   ex->params[ORC_VAR_P3] = p3;
1862   ex->params[ORC_VAR_P4] = p4;
1863
1864   func = p->code_exec;
1865   func (ex);
1866 }
1867 #endif
1868
1869
1870 void
1871 gst_videoscale_orc_init (void)
1872 {
1873 #ifndef DISABLE_ORC
1874   {
1875     /* orc_merge_linear_u8 */
1876     OrcProgram *p;
1877
1878     p = orc_program_new ();
1879     orc_program_set_name (p, "orc_merge_linear_u8");
1880     orc_program_set_backup_function (p, _backup_orc_merge_linear_u8);
1881     orc_program_add_destination (p, 1, "d1");
1882     orc_program_add_source (p, 1, "s1");
1883     orc_program_add_source (p, 1, "s2");
1884     orc_program_add_constant (p, 4, 0x00000080, "c1");
1885     orc_program_add_parameter (p, 1, "p1");
1886     orc_program_add_temporary (p, 2, "t1");
1887     orc_program_add_temporary (p, 2, "t2");
1888     orc_program_add_temporary (p, 1, "t3");
1889     orc_program_add_temporary (p, 1, "t4");
1890
1891     orc_program_append_2 (p, "loadb", 0, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_D1,
1892         ORC_VAR_D1);
1893     orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
1894         ORC_VAR_D1);
1895     orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
1896         ORC_VAR_D1);
1897     orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1,
1898         ORC_VAR_D1);
1899     orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1,
1900         ORC_VAR_D1);
1901     orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1,
1902         ORC_VAR_D1);
1903     orc_program_append_2 (p, "convhwb", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_D1,
1904         ORC_VAR_D1);
1905     orc_program_append_2 (p, "addb", 0, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_T3,
1906         ORC_VAR_D1);
1907
1908     orc_program_compile (p);
1909
1910     _orc_program_orc_merge_linear_u8 = p;
1911   }
1912   {
1913     /* orc_merge_linear_u16 */
1914     OrcProgram *p;
1915
1916     p = orc_program_new ();
1917     orc_program_set_name (p, "orc_merge_linear_u16");
1918     orc_program_set_backup_function (p, _backup_orc_merge_linear_u16);
1919     orc_program_add_destination (p, 2, "d1");
1920     orc_program_add_source (p, 2, "s1");
1921     orc_program_add_source (p, 2, "s2");
1922     orc_program_add_constant (p, 4, 0x00000010, "c1");
1923     orc_program_add_parameter (p, 2, "p1");
1924     orc_program_add_parameter (p, 2, "p2");
1925     orc_program_add_temporary (p, 4, "t1");
1926     orc_program_add_temporary (p, 4, "t2");
1927
1928     orc_program_append_2 (p, "muluwl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1,
1929         ORC_VAR_D1);
1930     orc_program_append_2 (p, "muluwl", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_P2,
1931         ORC_VAR_D1);
1932     orc_program_append_2 (p, "addl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
1933         ORC_VAR_D1);
1934     orc_program_append_2 (p, "shrul", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
1935         ORC_VAR_D1);
1936     orc_program_append_2 (p, "convlw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
1937         ORC_VAR_D1);
1938
1939     orc_program_compile (p);
1940
1941     _orc_program_orc_merge_linear_u16 = p;
1942   }
1943   {
1944     /* orc_splat_u16 */
1945     OrcProgram *p;
1946
1947     p = orc_program_new ();
1948     orc_program_set_name (p, "orc_splat_u16");
1949     orc_program_set_backup_function (p, _backup_orc_splat_u16);
1950     orc_program_add_destination (p, 2, "d1");
1951     orc_program_add_parameter (p, 2, "p1");
1952
1953     orc_program_append_2 (p, "copyw", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1,
1954         ORC_VAR_D1);
1955
1956     orc_program_compile (p);
1957
1958     _orc_program_orc_splat_u16 = p;
1959   }
1960   {
1961     /* orc_splat_u32 */
1962     OrcProgram *p;
1963
1964     p = orc_program_new ();
1965     orc_program_set_name (p, "orc_splat_u32");
1966     orc_program_set_backup_function (p, _backup_orc_splat_u32);
1967     orc_program_add_destination (p, 4, "d1");
1968     orc_program_add_parameter (p, 4, "p1");
1969
1970     orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1,
1971         ORC_VAR_D1);
1972
1973     orc_program_compile (p);
1974
1975     _orc_program_orc_splat_u32 = p;
1976   }
1977   {
1978     /* orc_splat_u64 */
1979     OrcProgram *p;
1980
1981     p = orc_program_new ();
1982     orc_program_set_name (p, "orc_splat_u64");
1983     orc_program_set_backup_function (p, _backup_orc_splat_u64);
1984     orc_program_add_destination (p, 8, "d1");
1985     orc_program_add_parameter_int64 (p, 8, "p1");
1986
1987     orc_program_append_2 (p, "copyq", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1,
1988         ORC_VAR_D1);
1989
1990     orc_program_compile (p);
1991
1992     _orc_program_orc_splat_u64 = p;
1993   }
1994   {
1995     /* orc_downsample_u8 */
1996     OrcProgram *p;
1997
1998     p = orc_program_new ();
1999     orc_program_set_name (p, "orc_downsample_u8");
2000     orc_program_set_backup_function (p, _backup_orc_downsample_u8);
2001     orc_program_add_destination (p, 1, "d1");
2002     orc_program_add_source (p, 2, "s1");
2003     orc_program_add_temporary (p, 1, "t1");
2004     orc_program_add_temporary (p, 1, "t2");
2005
2006     orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1,
2007         ORC_VAR_D1);
2008     orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
2009         ORC_VAR_D1);
2010
2011     orc_program_compile (p);
2012
2013     _orc_program_orc_downsample_u8 = p;
2014   }
2015   {
2016     /* orc_downsample_u16 */
2017     OrcProgram *p;
2018
2019     p = orc_program_new ();
2020     orc_program_set_name (p, "orc_downsample_u16");
2021     orc_program_set_backup_function (p, _backup_orc_downsample_u16);
2022     orc_program_add_destination (p, 2, "d1");
2023     orc_program_add_source (p, 4, "s1");
2024     orc_program_add_temporary (p, 2, "t1");
2025     orc_program_add_temporary (p, 2, "t2");
2026
2027     orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1,
2028         ORC_VAR_D1);
2029     orc_program_append_2 (p, "avguw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
2030         ORC_VAR_D1);
2031
2032     orc_program_compile (p);
2033
2034     _orc_program_orc_downsample_u16 = p;
2035   }
2036   {
2037     /* gst_videoscale_orc_downsample_u32 */
2038     OrcProgram *p;
2039
2040     p = orc_program_new ();
2041     orc_program_set_name (p, "gst_videoscale_orc_downsample_u32");
2042     orc_program_set_backup_function (p,
2043         _backup_gst_videoscale_orc_downsample_u32);
2044     orc_program_add_destination (p, 4, "d1");
2045     orc_program_add_source (p, 8, "s1");
2046     orc_program_add_temporary (p, 4, "t1");
2047     orc_program_add_temporary (p, 4, "t2");
2048
2049     orc_program_append_2 (p, "splitql", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1,
2050         ORC_VAR_D1);
2051     orc_program_append_2 (p, "avgub", 2, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
2052         ORC_VAR_D1);
2053
2054     orc_program_compile (p);
2055
2056     _orc_program_gst_videoscale_orc_downsample_u32 = p;
2057   }
2058   {
2059     /* gst_videoscale_orc_downsample_yuyv */
2060     OrcProgram *p;
2061
2062     p = orc_program_new ();
2063     orc_program_set_name (p, "gst_videoscale_orc_downsample_yuyv");
2064     orc_program_set_backup_function (p,
2065         _backup_gst_videoscale_orc_downsample_yuyv);
2066     orc_program_add_destination (p, 4, "d1");
2067     orc_program_add_source (p, 8, "s1");
2068     orc_program_add_temporary (p, 4, "t1");
2069     orc_program_add_temporary (p, 4, "t2");
2070     orc_program_add_temporary (p, 2, "t3");
2071     orc_program_add_temporary (p, 2, "t4");
2072     orc_program_add_temporary (p, 2, "t5");
2073     orc_program_add_temporary (p, 2, "t6");
2074
2075     orc_program_append_2 (p, "splitwb", 2, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1,
2076         ORC_VAR_D1);
2077     orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T1,
2078         ORC_VAR_D1);
2079     orc_program_append_2 (p, "avgub", 1, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_T4,
2080         ORC_VAR_D1);
2081     orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2,
2082         ORC_VAR_D1);
2083     orc_program_append_2 (p, "avgub", 1, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_T4,
2084         ORC_VAR_D1);
2085     orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_T6,
2086         ORC_VAR_D1);
2087
2088     orc_program_compile (p);
2089
2090     _orc_program_gst_videoscale_orc_downsample_yuyv = p;
2091   }
2092   {
2093     /* gst_videoscale_orc_resample_nearest_u8 */
2094     OrcProgram *p;
2095
2096     p = orc_program_new ();
2097     orc_program_set_name (p, "gst_videoscale_orc_resample_nearest_u8");
2098     orc_program_set_backup_function (p,
2099         _backup_gst_videoscale_orc_resample_nearest_u8);
2100     orc_program_add_destination (p, 1, "d1");
2101     orc_program_add_source (p, 1, "s1");
2102     orc_program_add_parameter (p, 4, "p1");
2103     orc_program_add_parameter (p, 4, "p2");
2104
2105     orc_program_append_2 (p, "ldresnearb", 0, ORC_VAR_D1, ORC_VAR_S1,
2106         ORC_VAR_P1, ORC_VAR_P2);
2107
2108     orc_program_compile (p);
2109
2110     _orc_program_gst_videoscale_orc_resample_nearest_u8 = p;
2111   }
2112   {
2113     /* gst_videoscale_orc_resample_bilinear_u8 */
2114     OrcProgram *p;
2115
2116     p = orc_program_new ();
2117     orc_program_set_name (p, "gst_videoscale_orc_resample_bilinear_u8");
2118     orc_program_set_backup_function (p,
2119         _backup_gst_videoscale_orc_resample_bilinear_u8);
2120     orc_program_add_destination (p, 1, "d1");
2121     orc_program_add_source (p, 1, "s1");
2122     orc_program_add_parameter (p, 4, "p1");
2123     orc_program_add_parameter (p, 4, "p2");
2124
2125     orc_program_append_2 (p, "ldreslinb", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_P1,
2126         ORC_VAR_P2);
2127
2128     orc_program_compile (p);
2129
2130     _orc_program_gst_videoscale_orc_resample_bilinear_u8 = p;
2131   }
2132   {
2133     /* gst_videoscale_orc_resample_nearest_u32 */
2134     OrcProgram *p;
2135
2136     p = orc_program_new ();
2137     orc_program_set_name (p, "gst_videoscale_orc_resample_nearest_u32");
2138     orc_program_set_backup_function (p,
2139         _backup_gst_videoscale_orc_resample_nearest_u32);
2140     orc_program_add_destination (p, 4, "d1");
2141     orc_program_add_source (p, 4, "s1");
2142     orc_program_add_parameter (p, 4, "p1");
2143     orc_program_add_parameter (p, 4, "p2");
2144
2145     orc_program_append_2 (p, "ldresnearl", 0, ORC_VAR_D1, ORC_VAR_S1,
2146         ORC_VAR_P1, ORC_VAR_P2);
2147
2148     orc_program_compile (p);
2149
2150     _orc_program_gst_videoscale_orc_resample_nearest_u32 = p;
2151   }
2152   {
2153     /* gst_videoscale_orc_resample_bilinear_u32 */
2154     OrcProgram *p;
2155
2156     p = orc_program_new ();
2157     orc_program_set_name (p, "gst_videoscale_orc_resample_bilinear_u32");
2158     orc_program_set_backup_function (p,
2159         _backup_gst_videoscale_orc_resample_bilinear_u32);
2160     orc_program_add_destination (p, 4, "d1");
2161     orc_program_add_source (p, 4, "s1");
2162     orc_program_add_parameter (p, 4, "p1");
2163     orc_program_add_parameter (p, 4, "p2");
2164
2165     orc_program_append_2 (p, "ldreslinl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_P1,
2166         ORC_VAR_P2);
2167
2168     orc_program_compile (p);
2169
2170     _orc_program_gst_videoscale_orc_resample_bilinear_u32 = p;
2171   }
2172   {
2173     /* gst_videoscale_orc_resample_merge_bilinear_u32 */
2174     OrcProgram *p;
2175
2176     p = orc_program_new ();
2177     orc_program_set_name (p, "gst_videoscale_orc_resample_merge_bilinear_u32");
2178     orc_program_set_backup_function (p,
2179         _backup_gst_videoscale_orc_resample_merge_bilinear_u32);
2180     orc_program_add_destination (p, 4, "d1");
2181     orc_program_add_destination (p, 4, "d2");
2182     orc_program_add_source (p, 4, "s1");
2183     orc_program_add_source (p, 4, "s2");
2184     orc_program_add_parameter (p, 4, "p1");
2185     orc_program_add_parameter (p, 4, "p2");
2186     orc_program_add_parameter (p, 4, "p3");
2187     orc_program_add_temporary (p, 4, "t1");
2188     orc_program_add_temporary (p, 4, "t2");
2189     orc_program_add_temporary (p, 4, "t3");
2190     orc_program_add_temporary (p, 8, "t4");
2191     orc_program_add_temporary (p, 8, "t5");
2192
2193     orc_program_append_2 (p, "ldreslinl", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_P2,
2194         ORC_VAR_P3);
2195     orc_program_append_2 (p, "storel", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_D1,
2196         ORC_VAR_D1);
2197     orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
2198         ORC_VAR_D1);
2199     orc_program_append_2 (p, "convubw", 2, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_D1,
2200         ORC_VAR_D1);
2201     orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_D1,
2202         ORC_VAR_D1);
2203     orc_program_append_2 (p, "subw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4,
2204         ORC_VAR_D1);
2205     orc_program_append_2 (p, "mullw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_P1,
2206         ORC_VAR_D1);
2207     orc_program_append_2 (p, "convhwb", 2, ORC_VAR_T3, ORC_VAR_T5, ORC_VAR_D1,
2208         ORC_VAR_D1);
2209     orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T1,
2210         ORC_VAR_D1);
2211
2212     orc_program_compile (p);
2213
2214     _orc_program_gst_videoscale_orc_resample_merge_bilinear_u32 = p;
2215   }
2216   {
2217     /* gst_videoscale_orc_merge_bicubic_u8 */
2218     OrcProgram *p;
2219
2220     p = orc_program_new ();
2221     orc_program_set_name (p, "gst_videoscale_orc_merge_bicubic_u8");
2222     orc_program_set_backup_function (p,
2223         _backup_gst_videoscale_orc_merge_bicubic_u8);
2224     orc_program_add_destination (p, 1, "d1");
2225     orc_program_add_source (p, 1, "s1");
2226     orc_program_add_source (p, 1, "s2");
2227     orc_program_add_source (p, 1, "s3");
2228     orc_program_add_source (p, 1, "s4");
2229     orc_program_add_constant (p, 4, 0x00000020, "c1");
2230     orc_program_add_constant (p, 4, 0x00000006, "c2");
2231     orc_program_add_parameter (p, 4, "p1");
2232     orc_program_add_parameter (p, 4, "p2");
2233     orc_program_add_parameter (p, 4, "p3");
2234     orc_program_add_parameter (p, 4, "p4");
2235     orc_program_add_temporary (p, 2, "t1");
2236     orc_program_add_temporary (p, 2, "t2");
2237
2238     orc_program_append_2 (p, "mulubw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_P2,
2239         ORC_VAR_D1);
2240     orc_program_append_2 (p, "mulubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_P3,
2241         ORC_VAR_D1);
2242     orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
2243         ORC_VAR_D1);
2244     orc_program_append_2 (p, "mulubw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_P1,
2245         ORC_VAR_D1);
2246     orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
2247         ORC_VAR_D1);
2248     orc_program_append_2 (p, "mulubw", 0, ORC_VAR_T2, ORC_VAR_S4, ORC_VAR_P4,
2249         ORC_VAR_D1);
2250     orc_program_append_2 (p, "subw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
2251         ORC_VAR_D1);
2252     orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
2253         ORC_VAR_D1);
2254     orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2,
2255         ORC_VAR_D1);
2256     orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
2257         ORC_VAR_D1);
2258
2259     orc_program_compile (p);
2260
2261     _orc_program_gst_videoscale_orc_merge_bicubic_u8 = p;
2262   }
2263 #endif
2264 }