Merge branch 'master' into 0.11
[platform/upstream/gstreamer.git] / gst / adder / gstadderorc-dist.c
1
2 /* autogenerated from gstadderorc.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 add_int32 (gint32 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1,
86     int n);
87 void add_int16 (gint16 * ORC_RESTRICT d1, const gint16 * ORC_RESTRICT s1,
88     int n);
89 void add_int8 (gint8 * ORC_RESTRICT d1, const gint8 * ORC_RESTRICT s1, int n);
90 void add_uint32 (guint32 * ORC_RESTRICT d1, const guint32 * ORC_RESTRICT s1,
91     int n);
92 void add_uint16 (guint16 * ORC_RESTRICT d1, const guint16 * ORC_RESTRICT s1,
93     int n);
94 void add_uint8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
95     int n);
96 void add_float32 (float *ORC_RESTRICT d1, const float *ORC_RESTRICT s1, int n);
97
98 void gst_adder_orc_init (void);
99
100
101 /* begin Orc C target preamble */
102 #define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x)))
103 #define ORC_ABS(a) ((a)<0 ? -(a) : (a))
104 #define ORC_MIN(a,b) ((a)<(b) ? (a) : (b))
105 #define ORC_MAX(a,b) ((a)>(b) ? (a) : (b))
106 #define ORC_SB_MAX 127
107 #define ORC_SB_MIN (-1-ORC_SB_MAX)
108 #define ORC_UB_MAX 255
109 #define ORC_UB_MIN 0
110 #define ORC_SW_MAX 32767
111 #define ORC_SW_MIN (-1-ORC_SW_MAX)
112 #define ORC_UW_MAX 65535
113 #define ORC_UW_MIN 0
114 #define ORC_SL_MAX 2147483647
115 #define ORC_SL_MIN (-1-ORC_SL_MAX)
116 #define ORC_UL_MAX 4294967295U
117 #define ORC_UL_MIN 0
118 #define ORC_CLAMP_SB(x) ORC_CLAMP(x,ORC_SB_MIN,ORC_SB_MAX)
119 #define ORC_CLAMP_UB(x) ORC_CLAMP(x,ORC_UB_MIN,ORC_UB_MAX)
120 #define ORC_CLAMP_SW(x) ORC_CLAMP(x,ORC_SW_MIN,ORC_SW_MAX)
121 #define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX)
122 #define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX)
123 #define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX)
124 #define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8))
125 #define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24))
126 #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))
127 #define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset)))
128 #define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff))
129 #define ORC_ISNAN(x) ((((x)&0x7f800000) == 0x7f800000) && (((x)&0x007fffff) != 0))
130 #define ORC_DENORMAL_DOUBLE(x) ((x) & ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == 0) ? ORC_UINT64_C(0xfff0000000000000) : ORC_UINT64_C(0xffffffffffffffff)))
131 #define ORC_ISNAN_DOUBLE(x) ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == ORC_UINT64_C(0x7ff0000000000000)) && (((x)&ORC_UINT64_C(0x000fffffffffffff)) != 0))
132 #ifndef ORC_RESTRICT
133 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
134 #define ORC_RESTRICT restrict
135 #elif defined(__GNUC__) && __GNUC__ >= 4
136 #define ORC_RESTRICT __restrict__
137 #else
138 #define ORC_RESTRICT
139 #endif
140 #endif
141 /* end Orc C target preamble */
142
143
144
145 /* add_int32 */
146 #ifdef DISABLE_ORC
147 void
148 add_int32 (gint32 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, int n)
149 {
150   int i;
151   orc_union32 *ORC_RESTRICT ptr0;
152   const orc_union32 *ORC_RESTRICT ptr4;
153   orc_union32 var32;
154   orc_union32 var33;
155   orc_union32 var34;
156
157   ptr0 = (orc_union32 *) d1;
158   ptr4 = (orc_union32 *) s1;
159
160
161   for (i = 0; i < n; i++) {
162     /* 0: loadl */
163     var32 = ptr0[i];
164     /* 1: loadl */
165     var33 = ptr4[i];
166     /* 2: addssl */
167     var34.i = ORC_CLAMP_SL ((orc_int64) var32.i + (orc_int64) var33.i);
168     /* 3: storel */
169     ptr0[i] = var34;
170   }
171
172 }
173
174 #else
175 static void
176 _backup_add_int32 (OrcExecutor * ORC_RESTRICT ex)
177 {
178   int i;
179   int n = ex->n;
180   orc_union32 *ORC_RESTRICT ptr0;
181   const orc_union32 *ORC_RESTRICT ptr4;
182   orc_union32 var32;
183   orc_union32 var33;
184   orc_union32 var34;
185
186   ptr0 = (orc_union32 *) ex->arrays[0];
187   ptr4 = (orc_union32 *) ex->arrays[4];
188
189
190   for (i = 0; i < n; i++) {
191     /* 0: loadl */
192     var32 = ptr0[i];
193     /* 1: loadl */
194     var33 = ptr4[i];
195     /* 2: addssl */
196     var34.i = ORC_CLAMP_SL ((orc_int64) var32.i + (orc_int64) var33.i);
197     /* 3: storel */
198     ptr0[i] = var34;
199   }
200
201 }
202
203 static OrcProgram *_orc_program_add_int32;
204 void
205 add_int32 (gint32 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, int n)
206 {
207   OrcExecutor _ex, *ex = &_ex;
208   OrcProgram *p = _orc_program_add_int32;
209   void (*func) (OrcExecutor *);
210
211   ex->program = p;
212
213   ex->n = n;
214   ex->arrays[ORC_VAR_D1] = d1;
215   ex->arrays[ORC_VAR_S1] = (void *) s1;
216
217   func = p->code_exec;
218   func (ex);
219 }
220 #endif
221
222
223 /* add_int16 */
224 #ifdef DISABLE_ORC
225 void
226 add_int16 (gint16 * ORC_RESTRICT d1, const gint16 * ORC_RESTRICT s1, int n)
227 {
228   int i;
229   orc_union16 *ORC_RESTRICT ptr0;
230   const orc_union16 *ORC_RESTRICT ptr4;
231   orc_union16 var32;
232   orc_union16 var33;
233   orc_union16 var34;
234
235   ptr0 = (orc_union16 *) d1;
236   ptr4 = (orc_union16 *) s1;
237
238
239   for (i = 0; i < n; i++) {
240     /* 0: loadw */
241     var32 = ptr0[i];
242     /* 1: loadw */
243     var33 = ptr4[i];
244     /* 2: addssw */
245     var34.i = ORC_CLAMP_SW (var32.i + var33.i);
246     /* 3: storew */
247     ptr0[i] = var34;
248   }
249
250 }
251
252 #else
253 static void
254 _backup_add_int16 (OrcExecutor * ORC_RESTRICT ex)
255 {
256   int i;
257   int n = ex->n;
258   orc_union16 *ORC_RESTRICT ptr0;
259   const orc_union16 *ORC_RESTRICT ptr4;
260   orc_union16 var32;
261   orc_union16 var33;
262   orc_union16 var34;
263
264   ptr0 = (orc_union16 *) ex->arrays[0];
265   ptr4 = (orc_union16 *) ex->arrays[4];
266
267
268   for (i = 0; i < n; i++) {
269     /* 0: loadw */
270     var32 = ptr0[i];
271     /* 1: loadw */
272     var33 = ptr4[i];
273     /* 2: addssw */
274     var34.i = ORC_CLAMP_SW (var32.i + var33.i);
275     /* 3: storew */
276     ptr0[i] = var34;
277   }
278
279 }
280
281 static OrcProgram *_orc_program_add_int16;
282 void
283 add_int16 (gint16 * ORC_RESTRICT d1, const gint16 * ORC_RESTRICT s1, int n)
284 {
285   OrcExecutor _ex, *ex = &_ex;
286   OrcProgram *p = _orc_program_add_int16;
287   void (*func) (OrcExecutor *);
288
289   ex->program = p;
290
291   ex->n = n;
292   ex->arrays[ORC_VAR_D1] = d1;
293   ex->arrays[ORC_VAR_S1] = (void *) s1;
294
295   func = p->code_exec;
296   func (ex);
297 }
298 #endif
299
300
301 /* add_int8 */
302 #ifdef DISABLE_ORC
303 void
304 add_int8 (gint8 * ORC_RESTRICT d1, const gint8 * ORC_RESTRICT s1, int n)
305 {
306   int i;
307   orc_int8 *ORC_RESTRICT ptr0;
308   const orc_int8 *ORC_RESTRICT ptr4;
309   orc_int8 var32;
310   orc_int8 var33;
311   orc_int8 var34;
312
313   ptr0 = (orc_int8 *) d1;
314   ptr4 = (orc_int8 *) s1;
315
316
317   for (i = 0; i < n; i++) {
318     /* 0: loadb */
319     var32 = ptr0[i];
320     /* 1: loadb */
321     var33 = ptr4[i];
322     /* 2: addssb */
323     var34 = ORC_CLAMP_SB (var32 + var33);
324     /* 3: storeb */
325     ptr0[i] = var34;
326   }
327
328 }
329
330 #else
331 static void
332 _backup_add_int8 (OrcExecutor * ORC_RESTRICT ex)
333 {
334   int i;
335   int n = ex->n;
336   orc_int8 *ORC_RESTRICT ptr0;
337   const orc_int8 *ORC_RESTRICT ptr4;
338   orc_int8 var32;
339   orc_int8 var33;
340   orc_int8 var34;
341
342   ptr0 = (orc_int8 *) ex->arrays[0];
343   ptr4 = (orc_int8 *) ex->arrays[4];
344
345
346   for (i = 0; i < n; i++) {
347     /* 0: loadb */
348     var32 = ptr0[i];
349     /* 1: loadb */
350     var33 = ptr4[i];
351     /* 2: addssb */
352     var34 = ORC_CLAMP_SB (var32 + var33);
353     /* 3: storeb */
354     ptr0[i] = var34;
355   }
356
357 }
358
359 static OrcProgram *_orc_program_add_int8;
360 void
361 add_int8 (gint8 * ORC_RESTRICT d1, const gint8 * ORC_RESTRICT s1, int n)
362 {
363   OrcExecutor _ex, *ex = &_ex;
364   OrcProgram *p = _orc_program_add_int8;
365   void (*func) (OrcExecutor *);
366
367   ex->program = p;
368
369   ex->n = n;
370   ex->arrays[ORC_VAR_D1] = d1;
371   ex->arrays[ORC_VAR_S1] = (void *) s1;
372
373   func = p->code_exec;
374   func (ex);
375 }
376 #endif
377
378
379 /* add_uint32 */
380 #ifdef DISABLE_ORC
381 void
382 add_uint32 (guint32 * ORC_RESTRICT d1, const guint32 * ORC_RESTRICT s1, int n)
383 {
384   int i;
385   orc_union32 *ORC_RESTRICT ptr0;
386   const orc_union32 *ORC_RESTRICT ptr4;
387   orc_union32 var32;
388   orc_union32 var33;
389   orc_union32 var34;
390
391   ptr0 = (orc_union32 *) d1;
392   ptr4 = (orc_union32 *) s1;
393
394
395   for (i = 0; i < n; i++) {
396     /* 0: loadl */
397     var32 = ptr0[i];
398     /* 1: loadl */
399     var33 = ptr4[i];
400     /* 2: addusl */
401     var34.i =
402         ORC_CLAMP_UL ((orc_int64) (orc_uint32) var32.i +
403         (orc_int64) (orc_uint32) var33.i);
404     /* 3: storel */
405     ptr0[i] = var34;
406   }
407
408 }
409
410 #else
411 static void
412 _backup_add_uint32 (OrcExecutor * ORC_RESTRICT ex)
413 {
414   int i;
415   int n = ex->n;
416   orc_union32 *ORC_RESTRICT ptr0;
417   const orc_union32 *ORC_RESTRICT ptr4;
418   orc_union32 var32;
419   orc_union32 var33;
420   orc_union32 var34;
421
422   ptr0 = (orc_union32 *) ex->arrays[0];
423   ptr4 = (orc_union32 *) ex->arrays[4];
424
425
426   for (i = 0; i < n; i++) {
427     /* 0: loadl */
428     var32 = ptr0[i];
429     /* 1: loadl */
430     var33 = ptr4[i];
431     /* 2: addusl */
432     var34.i =
433         ORC_CLAMP_UL ((orc_int64) (orc_uint32) var32.i +
434         (orc_int64) (orc_uint32) var33.i);
435     /* 3: storel */
436     ptr0[i] = var34;
437   }
438
439 }
440
441 static OrcProgram *_orc_program_add_uint32;
442 void
443 add_uint32 (guint32 * ORC_RESTRICT d1, const guint32 * ORC_RESTRICT s1, int n)
444 {
445   OrcExecutor _ex, *ex = &_ex;
446   OrcProgram *p = _orc_program_add_uint32;
447   void (*func) (OrcExecutor *);
448
449   ex->program = p;
450
451   ex->n = n;
452   ex->arrays[ORC_VAR_D1] = d1;
453   ex->arrays[ORC_VAR_S1] = (void *) s1;
454
455   func = p->code_exec;
456   func (ex);
457 }
458 #endif
459
460
461 /* add_uint16 */
462 #ifdef DISABLE_ORC
463 void
464 add_uint16 (guint16 * ORC_RESTRICT d1, const guint16 * ORC_RESTRICT s1, int n)
465 {
466   int i;
467   orc_union16 *ORC_RESTRICT ptr0;
468   const orc_union16 *ORC_RESTRICT ptr4;
469   orc_union16 var32;
470   orc_union16 var33;
471   orc_union16 var34;
472
473   ptr0 = (orc_union16 *) d1;
474   ptr4 = (orc_union16 *) s1;
475
476
477   for (i = 0; i < n; i++) {
478     /* 0: loadw */
479     var32 = ptr0[i];
480     /* 1: loadw */
481     var33 = ptr4[i];
482     /* 2: addusw */
483     var34.i = ORC_CLAMP_UW ((orc_uint16) var32.i + (orc_uint16) var33.i);
484     /* 3: storew */
485     ptr0[i] = var34;
486   }
487
488 }
489
490 #else
491 static void
492 _backup_add_uint16 (OrcExecutor * ORC_RESTRICT ex)
493 {
494   int i;
495   int n = ex->n;
496   orc_union16 *ORC_RESTRICT ptr0;
497   const orc_union16 *ORC_RESTRICT ptr4;
498   orc_union16 var32;
499   orc_union16 var33;
500   orc_union16 var34;
501
502   ptr0 = (orc_union16 *) ex->arrays[0];
503   ptr4 = (orc_union16 *) ex->arrays[4];
504
505
506   for (i = 0; i < n; i++) {
507     /* 0: loadw */
508     var32 = ptr0[i];
509     /* 1: loadw */
510     var33 = ptr4[i];
511     /* 2: addusw */
512     var34.i = ORC_CLAMP_UW ((orc_uint16) var32.i + (orc_uint16) var33.i);
513     /* 3: storew */
514     ptr0[i] = var34;
515   }
516
517 }
518
519 static OrcProgram *_orc_program_add_uint16;
520 void
521 add_uint16 (guint16 * ORC_RESTRICT d1, const guint16 * ORC_RESTRICT s1, int n)
522 {
523   OrcExecutor _ex, *ex = &_ex;
524   OrcProgram *p = _orc_program_add_uint16;
525   void (*func) (OrcExecutor *);
526
527   ex->program = p;
528
529   ex->n = n;
530   ex->arrays[ORC_VAR_D1] = d1;
531   ex->arrays[ORC_VAR_S1] = (void *) s1;
532
533   func = p->code_exec;
534   func (ex);
535 }
536 #endif
537
538
539 /* add_uint8 */
540 #ifdef DISABLE_ORC
541 void
542 add_uint8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n)
543 {
544   int i;
545   orc_int8 *ORC_RESTRICT ptr0;
546   const orc_int8 *ORC_RESTRICT ptr4;
547   orc_int8 var32;
548   orc_int8 var33;
549   orc_int8 var34;
550
551   ptr0 = (orc_int8 *) d1;
552   ptr4 = (orc_int8 *) s1;
553
554
555   for (i = 0; i < n; i++) {
556     /* 0: loadb */
557     var32 = ptr0[i];
558     /* 1: loadb */
559     var33 = ptr4[i];
560     /* 2: addusb */
561     var34 = ORC_CLAMP_UB ((orc_uint8) var32 + (orc_uint8) var33);
562     /* 3: storeb */
563     ptr0[i] = var34;
564   }
565
566 }
567
568 #else
569 static void
570 _backup_add_uint8 (OrcExecutor * ORC_RESTRICT ex)
571 {
572   int i;
573   int n = ex->n;
574   orc_int8 *ORC_RESTRICT ptr0;
575   const orc_int8 *ORC_RESTRICT ptr4;
576   orc_int8 var32;
577   orc_int8 var33;
578   orc_int8 var34;
579
580   ptr0 = (orc_int8 *) ex->arrays[0];
581   ptr4 = (orc_int8 *) ex->arrays[4];
582
583
584   for (i = 0; i < n; i++) {
585     /* 0: loadb */
586     var32 = ptr0[i];
587     /* 1: loadb */
588     var33 = ptr4[i];
589     /* 2: addusb */
590     var34 = ORC_CLAMP_UB ((orc_uint8) var32 + (orc_uint8) var33);
591     /* 3: storeb */
592     ptr0[i] = var34;
593   }
594
595 }
596
597 static OrcProgram *_orc_program_add_uint8;
598 void
599 add_uint8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n)
600 {
601   OrcExecutor _ex, *ex = &_ex;
602   OrcProgram *p = _orc_program_add_uint8;
603   void (*func) (OrcExecutor *);
604
605   ex->program = p;
606
607   ex->n = n;
608   ex->arrays[ORC_VAR_D1] = d1;
609   ex->arrays[ORC_VAR_S1] = (void *) s1;
610
611   func = p->code_exec;
612   func (ex);
613 }
614 #endif
615
616
617 /* add_float32 */
618 #ifdef DISABLE_ORC
619 void
620 add_float32 (float *ORC_RESTRICT d1, const float *ORC_RESTRICT s1, int n)
621 {
622   int i;
623   orc_union32 *ORC_RESTRICT ptr0;
624   const orc_union32 *ORC_RESTRICT ptr4;
625   orc_union32 var32;
626   orc_union32 var33;
627   orc_union32 var34;
628
629   ptr0 = (orc_union32 *) d1;
630   ptr4 = (orc_union32 *) s1;
631
632
633   for (i = 0; i < n; i++) {
634     /* 0: loadl */
635     var32 = ptr0[i];
636     /* 1: loadl */
637     var33 = ptr4[i];
638     /* 2: addf */
639     {
640       orc_union32 _src1;
641       orc_union32 _src2;
642       orc_union32 _dest1;
643       _src1.i = ORC_DENORMAL (var32.i);
644       _src2.i = ORC_DENORMAL (var33.i);
645       _dest1.f = _src1.f + _src2.f;
646       var34.i = ORC_DENORMAL (_dest1.i);
647     }
648     /* 3: storel */
649     ptr0[i] = var34;
650   }
651
652 }
653
654 #else
655 static void
656 _backup_add_float32 (OrcExecutor * ORC_RESTRICT ex)
657 {
658   int i;
659   int n = ex->n;
660   orc_union32 *ORC_RESTRICT ptr0;
661   const orc_union32 *ORC_RESTRICT ptr4;
662   orc_union32 var32;
663   orc_union32 var33;
664   orc_union32 var34;
665
666   ptr0 = (orc_union32 *) ex->arrays[0];
667   ptr4 = (orc_union32 *) ex->arrays[4];
668
669
670   for (i = 0; i < n; i++) {
671     /* 0: loadl */
672     var32 = ptr0[i];
673     /* 1: loadl */
674     var33 = ptr4[i];
675     /* 2: addf */
676     {
677       orc_union32 _src1;
678       orc_union32 _src2;
679       orc_union32 _dest1;
680       _src1.i = ORC_DENORMAL (var32.i);
681       _src2.i = ORC_DENORMAL (var33.i);
682       _dest1.f = _src1.f + _src2.f;
683       var34.i = ORC_DENORMAL (_dest1.i);
684     }
685     /* 3: storel */
686     ptr0[i] = var34;
687   }
688
689 }
690
691 static OrcProgram *_orc_program_add_float32;
692 void
693 add_float32 (float *ORC_RESTRICT d1, const float *ORC_RESTRICT s1, int n)
694 {
695   OrcExecutor _ex, *ex = &_ex;
696   OrcProgram *p = _orc_program_add_float32;
697   void (*func) (OrcExecutor *);
698
699   ex->program = p;
700
701   ex->n = n;
702   ex->arrays[ORC_VAR_D1] = d1;
703   ex->arrays[ORC_VAR_S1] = (void *) s1;
704
705   func = p->code_exec;
706   func (ex);
707 }
708 #endif
709
710
711 void
712 gst_adder_orc_init (void)
713 {
714 #ifndef DISABLE_ORC
715   {
716     /* add_int32 */
717     OrcProgram *p;
718
719     p = orc_program_new ();
720     orc_program_set_name (p, "add_int32");
721     orc_program_set_backup_function (p, _backup_add_int32);
722     orc_program_add_destination (p, 4, "d1");
723     orc_program_add_source (p, 4, "s1");
724
725     orc_program_append_2 (p, "addssl", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1,
726         ORC_VAR_D1);
727
728     orc_program_compile (p);
729
730     _orc_program_add_int32 = p;
731   }
732   {
733     /* add_int16 */
734     OrcProgram *p;
735
736     p = orc_program_new ();
737     orc_program_set_name (p, "add_int16");
738     orc_program_set_backup_function (p, _backup_add_int16);
739     orc_program_add_destination (p, 2, "d1");
740     orc_program_add_source (p, 2, "s1");
741
742     orc_program_append_2 (p, "addssw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1,
743         ORC_VAR_D1);
744
745     orc_program_compile (p);
746
747     _orc_program_add_int16 = p;
748   }
749   {
750     /* add_int8 */
751     OrcProgram *p;
752
753     p = orc_program_new ();
754     orc_program_set_name (p, "add_int8");
755     orc_program_set_backup_function (p, _backup_add_int8);
756     orc_program_add_destination (p, 1, "d1");
757     orc_program_add_source (p, 1, "s1");
758
759     orc_program_append_2 (p, "addssb", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1,
760         ORC_VAR_D1);
761
762     orc_program_compile (p);
763
764     _orc_program_add_int8 = p;
765   }
766   {
767     /* add_uint32 */
768     OrcProgram *p;
769
770     p = orc_program_new ();
771     orc_program_set_name (p, "add_uint32");
772     orc_program_set_backup_function (p, _backup_add_uint32);
773     orc_program_add_destination (p, 4, "d1");
774     orc_program_add_source (p, 4, "s1");
775
776     orc_program_append_2 (p, "addusl", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1,
777         ORC_VAR_D1);
778
779     orc_program_compile (p);
780
781     _orc_program_add_uint32 = p;
782   }
783   {
784     /* add_uint16 */
785     OrcProgram *p;
786
787     p = orc_program_new ();
788     orc_program_set_name (p, "add_uint16");
789     orc_program_set_backup_function (p, _backup_add_uint16);
790     orc_program_add_destination (p, 2, "d1");
791     orc_program_add_source (p, 2, "s1");
792
793     orc_program_append_2 (p, "addusw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1,
794         ORC_VAR_D1);
795
796     orc_program_compile (p);
797
798     _orc_program_add_uint16 = p;
799   }
800   {
801     /* add_uint8 */
802     OrcProgram *p;
803
804     p = orc_program_new ();
805     orc_program_set_name (p, "add_uint8");
806     orc_program_set_backup_function (p, _backup_add_uint8);
807     orc_program_add_destination (p, 1, "d1");
808     orc_program_add_source (p, 1, "s1");
809
810     orc_program_append_2 (p, "addusb", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1,
811         ORC_VAR_D1);
812
813     orc_program_compile (p);
814
815     _orc_program_add_uint8 = p;
816   }
817   {
818     /* add_float32 */
819     OrcProgram *p;
820
821     p = orc_program_new ();
822     orc_program_set_name (p, "add_float32");
823     orc_program_set_backup_function (p, _backup_add_float32);
824     orc_program_add_destination (p, 4, "d1");
825     orc_program_add_source (p, 4, "s1");
826
827     orc_program_append_2 (p, "addf", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1,
828         ORC_VAR_D1);
829
830     orc_program_compile (p);
831
832     _orc_program_add_float32 = p;
833   }
834 #endif
835 }