videotestsrc: make colors controlable
[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 adder_orc_add_int32 (gint32 * ORC_RESTRICT d1,
86     const gint32 * ORC_RESTRICT s1, int n);
87 void adder_orc_add_int16 (gint16 * ORC_RESTRICT d1,
88     const gint16 * ORC_RESTRICT s1, int n);
89 void adder_orc_add_int8 (gint8 * ORC_RESTRICT d1, const gint8 * ORC_RESTRICT s1,
90     int n);
91 void adder_orc_add_uint32 (guint32 * ORC_RESTRICT d1,
92     const guint32 * ORC_RESTRICT s1, int n);
93 void adder_orc_add_uint16 (guint16 * ORC_RESTRICT d1,
94     const guint16 * ORC_RESTRICT s1, int n);
95 void adder_orc_add_uint8 (guint8 * ORC_RESTRICT d1,
96     const guint8 * ORC_RESTRICT s1, int n);
97 void adder_orc_add_float32 (float *ORC_RESTRICT d1,
98     const float *ORC_RESTRICT s1, int n);
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 /* adder_orc_add_int32 */
146 #ifdef DISABLE_ORC
147 void
148 adder_orc_add_int32 (gint32 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1,
149     int n)
150 {
151   int i;
152   orc_union32 *ORC_RESTRICT ptr0;
153   const orc_union32 *ORC_RESTRICT ptr4;
154   orc_union32 var32;
155   orc_union32 var33;
156   orc_union32 var34;
157
158   ptr0 = (orc_union32 *) d1;
159   ptr4 = (orc_union32 *) s1;
160
161
162   for (i = 0; i < n; i++) {
163     /* 0: loadl */
164     var32 = ptr0[i];
165     /* 1: loadl */
166     var33 = ptr4[i];
167     /* 2: addssl */
168     var34.i = ORC_CLAMP_SL ((orc_int64) var32.i + (orc_int64) var33.i);
169     /* 3: storel */
170     ptr0[i] = var34;
171   }
172
173 }
174
175 #else
176 static void
177 _backup_adder_orc_add_int32 (OrcExecutor * ORC_RESTRICT ex)
178 {
179   int i;
180   int n = ex->n;
181   orc_union32 *ORC_RESTRICT ptr0;
182   const orc_union32 *ORC_RESTRICT ptr4;
183   orc_union32 var32;
184   orc_union32 var33;
185   orc_union32 var34;
186
187   ptr0 = (orc_union32 *) ex->arrays[0];
188   ptr4 = (orc_union32 *) ex->arrays[4];
189
190
191   for (i = 0; i < n; i++) {
192     /* 0: loadl */
193     var32 = ptr0[i];
194     /* 1: loadl */
195     var33 = ptr4[i];
196     /* 2: addssl */
197     var34.i = ORC_CLAMP_SL ((orc_int64) var32.i + (orc_int64) var33.i);
198     /* 3: storel */
199     ptr0[i] = var34;
200   }
201
202 }
203
204 void
205 adder_orc_add_int32 (gint32 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1,
206     int n)
207 {
208   OrcExecutor _ex, *ex = &_ex;
209   static volatile int p_inited = 0;
210   static OrcCode *c = 0;
211   void (*func) (OrcExecutor *);
212
213   if (!p_inited) {
214     orc_once_mutex_lock ();
215     if (!p_inited) {
216       OrcProgram *p;
217
218       p = orc_program_new ();
219       orc_program_set_name (p, "adder_orc_add_int32");
220       orc_program_set_backup_function (p, _backup_adder_orc_add_int32);
221       orc_program_add_destination (p, 4, "d1");
222       orc_program_add_source (p, 4, "s1");
223
224       orc_program_append_2 (p, "addssl", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1,
225           ORC_VAR_D1);
226
227       orc_program_compile (p);
228       c = orc_program_take_code (p);
229       orc_program_free (p);
230     }
231     p_inited = TRUE;
232     orc_once_mutex_unlock ();
233   }
234   ex->arrays[ORC_VAR_A2] = c;
235   ex->program = 0;
236
237   ex->n = n;
238   ex->arrays[ORC_VAR_D1] = d1;
239   ex->arrays[ORC_VAR_S1] = (void *) s1;
240
241   func = c->exec;
242   func (ex);
243 }
244 #endif
245
246
247 /* adder_orc_add_int16 */
248 #ifdef DISABLE_ORC
249 void
250 adder_orc_add_int16 (gint16 * ORC_RESTRICT d1, const gint16 * ORC_RESTRICT s1,
251     int n)
252 {
253   int i;
254   orc_union16 *ORC_RESTRICT ptr0;
255   const orc_union16 *ORC_RESTRICT ptr4;
256   orc_union16 var32;
257   orc_union16 var33;
258   orc_union16 var34;
259
260   ptr0 = (orc_union16 *) d1;
261   ptr4 = (orc_union16 *) s1;
262
263
264   for (i = 0; i < n; i++) {
265     /* 0: loadw */
266     var32 = ptr0[i];
267     /* 1: loadw */
268     var33 = ptr4[i];
269     /* 2: addssw */
270     var34.i = ORC_CLAMP_SW (var32.i + var33.i);
271     /* 3: storew */
272     ptr0[i] = var34;
273   }
274
275 }
276
277 #else
278 static void
279 _backup_adder_orc_add_int16 (OrcExecutor * ORC_RESTRICT ex)
280 {
281   int i;
282   int n = ex->n;
283   orc_union16 *ORC_RESTRICT ptr0;
284   const orc_union16 *ORC_RESTRICT ptr4;
285   orc_union16 var32;
286   orc_union16 var33;
287   orc_union16 var34;
288
289   ptr0 = (orc_union16 *) ex->arrays[0];
290   ptr4 = (orc_union16 *) ex->arrays[4];
291
292
293   for (i = 0; i < n; i++) {
294     /* 0: loadw */
295     var32 = ptr0[i];
296     /* 1: loadw */
297     var33 = ptr4[i];
298     /* 2: addssw */
299     var34.i = ORC_CLAMP_SW (var32.i + var33.i);
300     /* 3: storew */
301     ptr0[i] = var34;
302   }
303
304 }
305
306 void
307 adder_orc_add_int16 (gint16 * ORC_RESTRICT d1, const gint16 * ORC_RESTRICT s1,
308     int n)
309 {
310   OrcExecutor _ex, *ex = &_ex;
311   static volatile int p_inited = 0;
312   static OrcCode *c = 0;
313   void (*func) (OrcExecutor *);
314
315   if (!p_inited) {
316     orc_once_mutex_lock ();
317     if (!p_inited) {
318       OrcProgram *p;
319
320       p = orc_program_new ();
321       orc_program_set_name (p, "adder_orc_add_int16");
322       orc_program_set_backup_function (p, _backup_adder_orc_add_int16);
323       orc_program_add_destination (p, 2, "d1");
324       orc_program_add_source (p, 2, "s1");
325
326       orc_program_append_2 (p, "addssw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1,
327           ORC_VAR_D1);
328
329       orc_program_compile (p);
330       c = orc_program_take_code (p);
331       orc_program_free (p);
332     }
333     p_inited = TRUE;
334     orc_once_mutex_unlock ();
335   }
336   ex->arrays[ORC_VAR_A2] = c;
337   ex->program = 0;
338
339   ex->n = n;
340   ex->arrays[ORC_VAR_D1] = d1;
341   ex->arrays[ORC_VAR_S1] = (void *) s1;
342
343   func = c->exec;
344   func (ex);
345 }
346 #endif
347
348
349 /* adder_orc_add_int8 */
350 #ifdef DISABLE_ORC
351 void
352 adder_orc_add_int8 (gint8 * ORC_RESTRICT d1, const gint8 * ORC_RESTRICT s1,
353     int n)
354 {
355   int i;
356   orc_int8 *ORC_RESTRICT ptr0;
357   const orc_int8 *ORC_RESTRICT ptr4;
358   orc_int8 var32;
359   orc_int8 var33;
360   orc_int8 var34;
361
362   ptr0 = (orc_int8 *) d1;
363   ptr4 = (orc_int8 *) s1;
364
365
366   for (i = 0; i < n; i++) {
367     /* 0: loadb */
368     var32 = ptr0[i];
369     /* 1: loadb */
370     var33 = ptr4[i];
371     /* 2: addssb */
372     var34 = ORC_CLAMP_SB (var32 + var33);
373     /* 3: storeb */
374     ptr0[i] = var34;
375   }
376
377 }
378
379 #else
380 static void
381 _backup_adder_orc_add_int8 (OrcExecutor * ORC_RESTRICT ex)
382 {
383   int i;
384   int n = ex->n;
385   orc_int8 *ORC_RESTRICT ptr0;
386   const orc_int8 *ORC_RESTRICT ptr4;
387   orc_int8 var32;
388   orc_int8 var33;
389   orc_int8 var34;
390
391   ptr0 = (orc_int8 *) ex->arrays[0];
392   ptr4 = (orc_int8 *) ex->arrays[4];
393
394
395   for (i = 0; i < n; i++) {
396     /* 0: loadb */
397     var32 = ptr0[i];
398     /* 1: loadb */
399     var33 = ptr4[i];
400     /* 2: addssb */
401     var34 = ORC_CLAMP_SB (var32 + var33);
402     /* 3: storeb */
403     ptr0[i] = var34;
404   }
405
406 }
407
408 void
409 adder_orc_add_int8 (gint8 * ORC_RESTRICT d1, const gint8 * ORC_RESTRICT s1,
410     int n)
411 {
412   OrcExecutor _ex, *ex = &_ex;
413   static volatile int p_inited = 0;
414   static OrcCode *c = 0;
415   void (*func) (OrcExecutor *);
416
417   if (!p_inited) {
418     orc_once_mutex_lock ();
419     if (!p_inited) {
420       OrcProgram *p;
421
422       p = orc_program_new ();
423       orc_program_set_name (p, "adder_orc_add_int8");
424       orc_program_set_backup_function (p, _backup_adder_orc_add_int8);
425       orc_program_add_destination (p, 1, "d1");
426       orc_program_add_source (p, 1, "s1");
427
428       orc_program_append_2 (p, "addssb", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1,
429           ORC_VAR_D1);
430
431       orc_program_compile (p);
432       c = orc_program_take_code (p);
433       orc_program_free (p);
434     }
435     p_inited = TRUE;
436     orc_once_mutex_unlock ();
437   }
438   ex->arrays[ORC_VAR_A2] = c;
439   ex->program = 0;
440
441   ex->n = n;
442   ex->arrays[ORC_VAR_D1] = d1;
443   ex->arrays[ORC_VAR_S1] = (void *) s1;
444
445   func = c->exec;
446   func (ex);
447 }
448 #endif
449
450
451 /* adder_orc_add_uint32 */
452 #ifdef DISABLE_ORC
453 void
454 adder_orc_add_uint32 (guint32 * ORC_RESTRICT d1,
455     const guint32 * ORC_RESTRICT s1, int n)
456 {
457   int i;
458   orc_union32 *ORC_RESTRICT ptr0;
459   const orc_union32 *ORC_RESTRICT ptr4;
460   orc_union32 var32;
461   orc_union32 var33;
462   orc_union32 var34;
463
464   ptr0 = (orc_union32 *) d1;
465   ptr4 = (orc_union32 *) s1;
466
467
468   for (i = 0; i < n; i++) {
469     /* 0: loadl */
470     var32 = ptr0[i];
471     /* 1: loadl */
472     var33 = ptr4[i];
473     /* 2: addusl */
474     var34.i =
475         ORC_CLAMP_UL ((orc_int64) (orc_uint32) var32.i +
476         (orc_int64) (orc_uint32) var33.i);
477     /* 3: storel */
478     ptr0[i] = var34;
479   }
480
481 }
482
483 #else
484 static void
485 _backup_adder_orc_add_uint32 (OrcExecutor * ORC_RESTRICT ex)
486 {
487   int i;
488   int n = ex->n;
489   orc_union32 *ORC_RESTRICT ptr0;
490   const orc_union32 *ORC_RESTRICT ptr4;
491   orc_union32 var32;
492   orc_union32 var33;
493   orc_union32 var34;
494
495   ptr0 = (orc_union32 *) ex->arrays[0];
496   ptr4 = (orc_union32 *) ex->arrays[4];
497
498
499   for (i = 0; i < n; i++) {
500     /* 0: loadl */
501     var32 = ptr0[i];
502     /* 1: loadl */
503     var33 = ptr4[i];
504     /* 2: addusl */
505     var34.i =
506         ORC_CLAMP_UL ((orc_int64) (orc_uint32) var32.i +
507         (orc_int64) (orc_uint32) var33.i);
508     /* 3: storel */
509     ptr0[i] = var34;
510   }
511
512 }
513
514 void
515 adder_orc_add_uint32 (guint32 * ORC_RESTRICT d1,
516     const guint32 * ORC_RESTRICT s1, int n)
517 {
518   OrcExecutor _ex, *ex = &_ex;
519   static volatile int p_inited = 0;
520   static OrcCode *c = 0;
521   void (*func) (OrcExecutor *);
522
523   if (!p_inited) {
524     orc_once_mutex_lock ();
525     if (!p_inited) {
526       OrcProgram *p;
527
528       p = orc_program_new ();
529       orc_program_set_name (p, "adder_orc_add_uint32");
530       orc_program_set_backup_function (p, _backup_adder_orc_add_uint32);
531       orc_program_add_destination (p, 4, "d1");
532       orc_program_add_source (p, 4, "s1");
533
534       orc_program_append_2 (p, "addusl", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1,
535           ORC_VAR_D1);
536
537       orc_program_compile (p);
538       c = orc_program_take_code (p);
539       orc_program_free (p);
540     }
541     p_inited = TRUE;
542     orc_once_mutex_unlock ();
543   }
544   ex->arrays[ORC_VAR_A2] = c;
545   ex->program = 0;
546
547   ex->n = n;
548   ex->arrays[ORC_VAR_D1] = d1;
549   ex->arrays[ORC_VAR_S1] = (void *) s1;
550
551   func = c->exec;
552   func (ex);
553 }
554 #endif
555
556
557 /* adder_orc_add_uint16 */
558 #ifdef DISABLE_ORC
559 void
560 adder_orc_add_uint16 (guint16 * ORC_RESTRICT d1,
561     const guint16 * ORC_RESTRICT s1, int n)
562 {
563   int i;
564   orc_union16 *ORC_RESTRICT ptr0;
565   const orc_union16 *ORC_RESTRICT ptr4;
566   orc_union16 var32;
567   orc_union16 var33;
568   orc_union16 var34;
569
570   ptr0 = (orc_union16 *) d1;
571   ptr4 = (orc_union16 *) s1;
572
573
574   for (i = 0; i < n; i++) {
575     /* 0: loadw */
576     var32 = ptr0[i];
577     /* 1: loadw */
578     var33 = ptr4[i];
579     /* 2: addusw */
580     var34.i = ORC_CLAMP_UW ((orc_uint16) var32.i + (orc_uint16) var33.i);
581     /* 3: storew */
582     ptr0[i] = var34;
583   }
584
585 }
586
587 #else
588 static void
589 _backup_adder_orc_add_uint16 (OrcExecutor * ORC_RESTRICT ex)
590 {
591   int i;
592   int n = ex->n;
593   orc_union16 *ORC_RESTRICT ptr0;
594   const orc_union16 *ORC_RESTRICT ptr4;
595   orc_union16 var32;
596   orc_union16 var33;
597   orc_union16 var34;
598
599   ptr0 = (orc_union16 *) ex->arrays[0];
600   ptr4 = (orc_union16 *) ex->arrays[4];
601
602
603   for (i = 0; i < n; i++) {
604     /* 0: loadw */
605     var32 = ptr0[i];
606     /* 1: loadw */
607     var33 = ptr4[i];
608     /* 2: addusw */
609     var34.i = ORC_CLAMP_UW ((orc_uint16) var32.i + (orc_uint16) var33.i);
610     /* 3: storew */
611     ptr0[i] = var34;
612   }
613
614 }
615
616 void
617 adder_orc_add_uint16 (guint16 * ORC_RESTRICT d1,
618     const guint16 * ORC_RESTRICT s1, int n)
619 {
620   OrcExecutor _ex, *ex = &_ex;
621   static volatile int p_inited = 0;
622   static OrcCode *c = 0;
623   void (*func) (OrcExecutor *);
624
625   if (!p_inited) {
626     orc_once_mutex_lock ();
627     if (!p_inited) {
628       OrcProgram *p;
629
630       p = orc_program_new ();
631       orc_program_set_name (p, "adder_orc_add_uint16");
632       orc_program_set_backup_function (p, _backup_adder_orc_add_uint16);
633       orc_program_add_destination (p, 2, "d1");
634       orc_program_add_source (p, 2, "s1");
635
636       orc_program_append_2 (p, "addusw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1,
637           ORC_VAR_D1);
638
639       orc_program_compile (p);
640       c = orc_program_take_code (p);
641       orc_program_free (p);
642     }
643     p_inited = TRUE;
644     orc_once_mutex_unlock ();
645   }
646   ex->arrays[ORC_VAR_A2] = c;
647   ex->program = 0;
648
649   ex->n = n;
650   ex->arrays[ORC_VAR_D1] = d1;
651   ex->arrays[ORC_VAR_S1] = (void *) s1;
652
653   func = c->exec;
654   func (ex);
655 }
656 #endif
657
658
659 /* adder_orc_add_uint8 */
660 #ifdef DISABLE_ORC
661 void
662 adder_orc_add_uint8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
663     int n)
664 {
665   int i;
666   orc_int8 *ORC_RESTRICT ptr0;
667   const orc_int8 *ORC_RESTRICT ptr4;
668   orc_int8 var32;
669   orc_int8 var33;
670   orc_int8 var34;
671
672   ptr0 = (orc_int8 *) d1;
673   ptr4 = (orc_int8 *) s1;
674
675
676   for (i = 0; i < n; i++) {
677     /* 0: loadb */
678     var32 = ptr0[i];
679     /* 1: loadb */
680     var33 = ptr4[i];
681     /* 2: addusb */
682     var34 = ORC_CLAMP_UB ((orc_uint8) var32 + (orc_uint8) var33);
683     /* 3: storeb */
684     ptr0[i] = var34;
685   }
686
687 }
688
689 #else
690 static void
691 _backup_adder_orc_add_uint8 (OrcExecutor * ORC_RESTRICT ex)
692 {
693   int i;
694   int n = ex->n;
695   orc_int8 *ORC_RESTRICT ptr0;
696   const orc_int8 *ORC_RESTRICT ptr4;
697   orc_int8 var32;
698   orc_int8 var33;
699   orc_int8 var34;
700
701   ptr0 = (orc_int8 *) ex->arrays[0];
702   ptr4 = (orc_int8 *) ex->arrays[4];
703
704
705   for (i = 0; i < n; i++) {
706     /* 0: loadb */
707     var32 = ptr0[i];
708     /* 1: loadb */
709     var33 = ptr4[i];
710     /* 2: addusb */
711     var34 = ORC_CLAMP_UB ((orc_uint8) var32 + (orc_uint8) var33);
712     /* 3: storeb */
713     ptr0[i] = var34;
714   }
715
716 }
717
718 void
719 adder_orc_add_uint8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
720     int n)
721 {
722   OrcExecutor _ex, *ex = &_ex;
723   static volatile int p_inited = 0;
724   static OrcCode *c = 0;
725   void (*func) (OrcExecutor *);
726
727   if (!p_inited) {
728     orc_once_mutex_lock ();
729     if (!p_inited) {
730       OrcProgram *p;
731
732       p = orc_program_new ();
733       orc_program_set_name (p, "adder_orc_add_uint8");
734       orc_program_set_backup_function (p, _backup_adder_orc_add_uint8);
735       orc_program_add_destination (p, 1, "d1");
736       orc_program_add_source (p, 1, "s1");
737
738       orc_program_append_2 (p, "addusb", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1,
739           ORC_VAR_D1);
740
741       orc_program_compile (p);
742       c = orc_program_take_code (p);
743       orc_program_free (p);
744     }
745     p_inited = TRUE;
746     orc_once_mutex_unlock ();
747   }
748   ex->arrays[ORC_VAR_A2] = c;
749   ex->program = 0;
750
751   ex->n = n;
752   ex->arrays[ORC_VAR_D1] = d1;
753   ex->arrays[ORC_VAR_S1] = (void *) s1;
754
755   func = c->exec;
756   func (ex);
757 }
758 #endif
759
760
761 /* adder_orc_add_float32 */
762 #ifdef DISABLE_ORC
763 void
764 adder_orc_add_float32 (float *ORC_RESTRICT d1, const float *ORC_RESTRICT s1,
765     int n)
766 {
767   int i;
768   orc_union32 *ORC_RESTRICT ptr0;
769   const orc_union32 *ORC_RESTRICT ptr4;
770   orc_union32 var32;
771   orc_union32 var33;
772   orc_union32 var34;
773
774   ptr0 = (orc_union32 *) d1;
775   ptr4 = (orc_union32 *) s1;
776
777
778   for (i = 0; i < n; i++) {
779     /* 0: loadl */
780     var32 = ptr0[i];
781     /* 1: loadl */
782     var33 = ptr4[i];
783     /* 2: addf */
784     {
785       orc_union32 _src1;
786       orc_union32 _src2;
787       orc_union32 _dest1;
788       _src1.i = ORC_DENORMAL (var32.i);
789       _src2.i = ORC_DENORMAL (var33.i);
790       _dest1.f = _src1.f + _src2.f;
791       var34.i = ORC_DENORMAL (_dest1.i);
792     }
793     /* 3: storel */
794     ptr0[i] = var34;
795   }
796
797 }
798
799 #else
800 static void
801 _backup_adder_orc_add_float32 (OrcExecutor * ORC_RESTRICT ex)
802 {
803   int i;
804   int n = ex->n;
805   orc_union32 *ORC_RESTRICT ptr0;
806   const orc_union32 *ORC_RESTRICT ptr4;
807   orc_union32 var32;
808   orc_union32 var33;
809   orc_union32 var34;
810
811   ptr0 = (orc_union32 *) ex->arrays[0];
812   ptr4 = (orc_union32 *) ex->arrays[4];
813
814
815   for (i = 0; i < n; i++) {
816     /* 0: loadl */
817     var32 = ptr0[i];
818     /* 1: loadl */
819     var33 = ptr4[i];
820     /* 2: addf */
821     {
822       orc_union32 _src1;
823       orc_union32 _src2;
824       orc_union32 _dest1;
825       _src1.i = ORC_DENORMAL (var32.i);
826       _src2.i = ORC_DENORMAL (var33.i);
827       _dest1.f = _src1.f + _src2.f;
828       var34.i = ORC_DENORMAL (_dest1.i);
829     }
830     /* 3: storel */
831     ptr0[i] = var34;
832   }
833
834 }
835
836 void
837 adder_orc_add_float32 (float *ORC_RESTRICT d1, const float *ORC_RESTRICT s1,
838     int n)
839 {
840   OrcExecutor _ex, *ex = &_ex;
841   static volatile int p_inited = 0;
842   static OrcCode *c = 0;
843   void (*func) (OrcExecutor *);
844
845   if (!p_inited) {
846     orc_once_mutex_lock ();
847     if (!p_inited) {
848       OrcProgram *p;
849
850       p = orc_program_new ();
851       orc_program_set_name (p, "adder_orc_add_float32");
852       orc_program_set_backup_function (p, _backup_adder_orc_add_float32);
853       orc_program_add_destination (p, 4, "d1");
854       orc_program_add_source (p, 4, "s1");
855
856       orc_program_append_2 (p, "addf", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1,
857           ORC_VAR_D1);
858
859       orc_program_compile (p);
860       c = orc_program_take_code (p);
861       orc_program_free (p);
862     }
863     p_inited = TRUE;
864     orc_once_mutex_unlock ();
865   }
866   ex->arrays[ORC_VAR_A2] = c;
867   ex->program = 0;
868
869   ex->n = n;
870   ex->arrays[ORC_VAR_D1] = d1;
871   ex->arrays[ORC_VAR_S1] = (void *) s1;
872
873   func = c->exec;
874   func (ex);
875 }
876 #endif