1 
2 /* autogenerated from gstvolumeorc.orc */
3 
4 #ifdef HAVE_CONFIG_H
5 #include "config.h"
6 #endif
7 #include <glib.h>
8 
9 #ifndef _ORC_INTEGER_TYPEDEFS_
10 #define _ORC_INTEGER_TYPEDEFS_
11 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
12 #include <stdint.h>
13 typedef int8_t orc_int8;
14 typedef int16_t orc_int16;
15 typedef int32_t orc_int32;
16 typedef int64_t orc_int64;
17 typedef uint8_t orc_uint8;
18 typedef uint16_t orc_uint16;
19 typedef uint32_t orc_uint32;
20 typedef uint64_t orc_uint64;
21 #define ORC_UINT64_C(x) UINT64_C(x)
22 #elif defined(_MSC_VER)
23 typedef signed __int8 orc_int8;
24 typedef signed __int16 orc_int16;
25 typedef signed __int32 orc_int32;
26 typedef signed __int64 orc_int64;
27 typedef unsigned __int8 orc_uint8;
28 typedef unsigned __int16 orc_uint16;
29 typedef unsigned __int32 orc_uint32;
30 typedef unsigned __int64 orc_uint64;
31 #define ORC_UINT64_C(x) (x##Ui64)
32 #define inline __inline
33 #else
34 #include <limits.h>
35 typedef signed char orc_int8;
36 typedef short orc_int16;
37 typedef int orc_int32;
38 typedef unsigned char orc_uint8;
39 typedef unsigned short orc_uint16;
40 typedef unsigned int orc_uint32;
41 #if INT_MAX == LONG_MAX
42 typedef long long orc_int64;
43 typedef unsigned long long orc_uint64;
44 #define ORC_UINT64_C(x) (x##ULL)
45 #else
46 typedef long orc_int64;
47 typedef unsigned long orc_uint64;
48 #define ORC_UINT64_C(x) (x##UL)
49 #endif
50 #endif
51 typedef union
52 {
53   orc_int16 i;
54   orc_int8 x2[2];
55 } orc_union16;
56 typedef union
57 {
58   orc_int32 i;
59   float f;
60   orc_int16 x2[2];
61   orc_int8 x4[4];
62 } orc_union32;
63 typedef union
64 {
65   orc_int64 i;
66   double f;
67   orc_int32 x2[2];
68   float x2f[2];
69   orc_int16 x4[4];
70 } orc_union64;
71 #endif
72 #ifndef ORC_RESTRICT
73 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
74 #define ORC_RESTRICT restrict
75 #elif defined(__GNUC__) && __GNUC__ >= 4
76 #define ORC_RESTRICT __restrict__
77 #else
78 #define ORC_RESTRICT
79 #endif
80 #endif
81 
82 #ifndef ORC_INTERNAL
83 #if defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)
84 #define ORC_INTERNAL __attribute__((visibility("hidden")))
85 #elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)
86 #define ORC_INTERNAL __hidden
87 #elif defined (__GNUC__)
88 #define ORC_INTERNAL __attribute__((visibility("hidden")))
89 #else
90 #define ORC_INTERNAL
91 #endif
92 #endif
93 
94 
95 #ifndef DISABLE_ORC
96 #include <orc/orc.h>
97 #endif
98 void volume_orc_scalarmultiply_f64_ns (double *ORC_RESTRICT d1, double p1,
99     int n);
100 void volume_orc_scalarmultiply_f32_ns (float *ORC_RESTRICT d1, float p1, int n);
101 void volume_orc_process_int32 (gint32 * ORC_RESTRICT d1, int p1, int n);
102 void volume_orc_process_int32_clamp (gint32 * ORC_RESTRICT d1, int p1, int n);
103 void volume_orc_process_int16 (gint16 * ORC_RESTRICT d1, int p1, int n);
104 void volume_orc_process_int16_clamp (gint16 * ORC_RESTRICT d1, int p1, int n);
105 void volume_orc_process_int8 (gint8 * ORC_RESTRICT d1, int p1, int n);
106 void volume_orc_process_int8_clamp (gint8 * ORC_RESTRICT d1, int p1, int n);
107 void volume_orc_memset_f64 (gdouble * ORC_RESTRICT d1, double p1, int n);
108 void volume_orc_prepare_volumes (gdouble * ORC_RESTRICT d1,
109     const gboolean * ORC_RESTRICT s1, int n);
110 void volume_orc_process_controlled_f64_1ch (gdouble * ORC_RESTRICT d1,
111     const gdouble * ORC_RESTRICT s1, int n);
112 void volume_orc_process_controlled_f32_1ch (gfloat * ORC_RESTRICT d1,
113     const gdouble * ORC_RESTRICT s1, int n);
114 void volume_orc_process_controlled_f32_2ch (gfloat * ORC_RESTRICT d1,
115     const gdouble * ORC_RESTRICT s1, int n);
116 void volume_orc_process_controlled_int32_1ch (gint32 * ORC_RESTRICT d1,
117     const gdouble * ORC_RESTRICT s1, int n);
118 void volume_orc_process_controlled_int16_1ch (gint16 * ORC_RESTRICT d1,
119     const gdouble * ORC_RESTRICT s1, int n);
120 void volume_orc_process_controlled_int16_2ch (gint16 * ORC_RESTRICT d1,
121     const gdouble * ORC_RESTRICT s1, int n);
122 void volume_orc_process_controlled_int8_1ch (gint8 * ORC_RESTRICT d1,
123     const gdouble * ORC_RESTRICT s1, int n);
124 void volume_orc_process_controlled_int8_2ch (gint8 * ORC_RESTRICT d1,
125     const gdouble * ORC_RESTRICT s1, int n);
126 
127 
128 /* begin Orc C target preamble */
129 #define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x)))
130 #define ORC_ABS(a) ((a)<0 ? -(a) : (a))
131 #define ORC_MIN(a,b) ((a)<(b) ? (a) : (b))
132 #define ORC_MAX(a,b) ((a)>(b) ? (a) : (b))
133 #define ORC_SB_MAX 127
134 #define ORC_SB_MIN (-1-ORC_SB_MAX)
135 #define ORC_UB_MAX (orc_uint8) 255
136 #define ORC_UB_MIN 0
137 #define ORC_SW_MAX 32767
138 #define ORC_SW_MIN (-1-ORC_SW_MAX)
139 #define ORC_UW_MAX (orc_uint16)65535
140 #define ORC_UW_MIN 0
141 #define ORC_SL_MAX 2147483647
142 #define ORC_SL_MIN (-1-ORC_SL_MAX)
143 #define ORC_UL_MAX 4294967295U
144 #define ORC_UL_MIN 0
145 #define ORC_CLAMP_SB(x) ORC_CLAMP(x,ORC_SB_MIN,ORC_SB_MAX)
146 #define ORC_CLAMP_UB(x) ORC_CLAMP(x,ORC_UB_MIN,ORC_UB_MAX)
147 #define ORC_CLAMP_SW(x) ORC_CLAMP(x,ORC_SW_MIN,ORC_SW_MAX)
148 #define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX)
149 #define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX)
150 #define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX)
151 #define ORC_SWAP_W(x) ((((x)&0xffU)<<8) | (((x)&0xff00U)>>8))
152 #define ORC_SWAP_L(x) ((((x)&0xffU)<<24) | (((x)&0xff00U)<<8) | (((x)&0xff0000U)>>8) | (((x)&0xff000000U)>>24))
153 #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))
154 #define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset)))
155 #define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff))
156 #define ORC_ISNAN(x) ((((x)&0x7f800000) == 0x7f800000) && (((x)&0x007fffff) != 0))
157 #define ORC_DENORMAL_DOUBLE(x) ((x) & ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == 0) ? ORC_UINT64_C(0xfff0000000000000) : ORC_UINT64_C(0xffffffffffffffff)))
158 #define ORC_ISNAN_DOUBLE(x) ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == ORC_UINT64_C(0x7ff0000000000000)) && (((x)&ORC_UINT64_C(0x000fffffffffffff)) != 0))
159 #ifndef ORC_RESTRICT
160 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
161 #define ORC_RESTRICT restrict
162 #elif defined(__GNUC__) && __GNUC__ >= 4
163 #define ORC_RESTRICT __restrict__
164 #else
165 #define ORC_RESTRICT
166 #endif
167 #endif
168 /* end Orc C target preamble */
169 
170 
171 
172 /* volume_orc_scalarmultiply_f64_ns */
173 #ifdef DISABLE_ORC
174 void
volume_orc_scalarmultiply_f64_ns(double * ORC_RESTRICT d1,double p1,int n)175 volume_orc_scalarmultiply_f64_ns (double *ORC_RESTRICT d1, double p1, int n)
176 {
177   int i;
178   orc_union64 *ORC_RESTRICT ptr0;
179   orc_union64 var32;
180   orc_union64 var33;
181   orc_union64 var34;
182 
183   ptr0 = (orc_union64 *) d1;
184 
185   /* 1: loadpq */
186   var33.f = p1;
187 
188   for (i = 0; i < n; i++) {
189     /* 0: loadq */
190     var32 = ptr0[i];
191     /* 2: muld */
192     {
193       orc_union64 _src1;
194       orc_union64 _src2;
195       orc_union64 _dest1;
196       _src1.i = ORC_DENORMAL_DOUBLE (var32.i);
197       _src2.i = ORC_DENORMAL_DOUBLE (var33.i);
198       _dest1.f = _src1.f * _src2.f;
199       var34.i = ORC_DENORMAL_DOUBLE (_dest1.i);
200     }
201     /* 3: storeq */
202     ptr0[i] = var34;
203   }
204 
205 }
206 
207 #else
208 static void
_backup_volume_orc_scalarmultiply_f64_ns(OrcExecutor * ORC_RESTRICT ex)209 _backup_volume_orc_scalarmultiply_f64_ns (OrcExecutor * ORC_RESTRICT ex)
210 {
211   int i;
212   int n = ex->n;
213   orc_union64 *ORC_RESTRICT ptr0;
214   orc_union64 var32;
215   orc_union64 var33;
216   orc_union64 var34;
217 
218   ptr0 = (orc_union64 *) ex->arrays[0];
219 
220   /* 1: loadpq */
221   var33.i =
222       (ex->params[24] & 0xffffffff) | ((orc_uint64) (ex->params[24 +
223               (ORC_VAR_T1 - ORC_VAR_P1)]) << 32);
224 
225   for (i = 0; i < n; i++) {
226     /* 0: loadq */
227     var32 = ptr0[i];
228     /* 2: muld */
229     {
230       orc_union64 _src1;
231       orc_union64 _src2;
232       orc_union64 _dest1;
233       _src1.i = ORC_DENORMAL_DOUBLE (var32.i);
234       _src2.i = ORC_DENORMAL_DOUBLE (var33.i);
235       _dest1.f = _src1.f * _src2.f;
236       var34.i = ORC_DENORMAL_DOUBLE (_dest1.i);
237     }
238     /* 3: storeq */
239     ptr0[i] = var34;
240   }
241 
242 }
243 
244 void
volume_orc_scalarmultiply_f64_ns(double * ORC_RESTRICT d1,double p1,int n)245 volume_orc_scalarmultiply_f64_ns (double *ORC_RESTRICT d1, double p1, int n)
246 {
247   OrcExecutor _ex, *ex = &_ex;
248   static volatile int p_inited = 0;
249   static OrcCode *c = 0;
250   void (*func) (OrcExecutor *);
251 
252   if (!p_inited) {
253     orc_once_mutex_lock ();
254     if (!p_inited) {
255       OrcProgram *p;
256 
257 #if 1
258       static const orc_uint8 bc[] = {
259         1, 9, 32, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 115, 99,
260         97, 108, 97, 114, 109, 117, 108, 116, 105, 112, 108, 121, 95, 102, 54,
261             52,
262         95, 110, 115, 11, 8, 8, 18, 8, 214, 0, 0, 24, 2, 0,
263       };
264       p = orc_program_new_from_static_bytecode (bc);
265       orc_program_set_backup_function (p,
266           _backup_volume_orc_scalarmultiply_f64_ns);
267 #else
268       p = orc_program_new ();
269       orc_program_set_name (p, "volume_orc_scalarmultiply_f64_ns");
270       orc_program_set_backup_function (p,
271           _backup_volume_orc_scalarmultiply_f64_ns);
272       orc_program_add_destination (p, 8, "d1");
273       orc_program_add_parameter_double (p, 8, "p1");
274 
275       orc_program_append_2 (p, "muld", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_P1,
276           ORC_VAR_D1);
277 #endif
278 
279       orc_program_compile (p);
280       c = orc_program_take_code (p);
281       orc_program_free (p);
282     }
283     p_inited = TRUE;
284     orc_once_mutex_unlock ();
285   }
286   ex->arrays[ORC_VAR_A2] = c;
287   ex->program = 0;
288 
289   ex->n = n;
290   ex->arrays[ORC_VAR_D1] = d1;
291   {
292     orc_union64 tmp;
293     tmp.f = p1;
294     ex->params[ORC_VAR_P1] = ((orc_uint64) tmp.i) & 0xffffffff;
295     ex->params[ORC_VAR_T1] = ((orc_uint64) tmp.i) >> 32;
296   }
297 
298   func = c->exec;
299   func (ex);
300 }
301 #endif
302 
303 
304 /* volume_orc_scalarmultiply_f32_ns */
305 #ifdef DISABLE_ORC
306 void
volume_orc_scalarmultiply_f32_ns(float * ORC_RESTRICT d1,float p1,int n)307 volume_orc_scalarmultiply_f32_ns (float *ORC_RESTRICT d1, float p1, int n)
308 {
309   int i;
310   orc_union32 *ORC_RESTRICT ptr0;
311   orc_union32 var32;
312   orc_union32 var33;
313   orc_union32 var34;
314 
315   ptr0 = (orc_union32 *) d1;
316 
317   /* 1: loadpl */
318   var33.f = p1;
319 
320   for (i = 0; i < n; i++) {
321     /* 0: loadl */
322     var32 = ptr0[i];
323     /* 2: mulf */
324     {
325       orc_union32 _src1;
326       orc_union32 _src2;
327       orc_union32 _dest1;
328       _src1.i = ORC_DENORMAL (var32.i);
329       _src2.i = ORC_DENORMAL (var33.i);
330       _dest1.f = _src1.f * _src2.f;
331       var34.i = ORC_DENORMAL (_dest1.i);
332     }
333     /* 3: storel */
334     ptr0[i] = var34;
335   }
336 
337 }
338 
339 #else
340 static void
_backup_volume_orc_scalarmultiply_f32_ns(OrcExecutor * ORC_RESTRICT ex)341 _backup_volume_orc_scalarmultiply_f32_ns (OrcExecutor * ORC_RESTRICT ex)
342 {
343   int i;
344   int n = ex->n;
345   orc_union32 *ORC_RESTRICT ptr0;
346   orc_union32 var32;
347   orc_union32 var33;
348   orc_union32 var34;
349 
350   ptr0 = (orc_union32 *) ex->arrays[0];
351 
352   /* 1: loadpl */
353   var33.i = ex->params[24];
354 
355   for (i = 0; i < n; i++) {
356     /* 0: loadl */
357     var32 = ptr0[i];
358     /* 2: mulf */
359     {
360       orc_union32 _src1;
361       orc_union32 _src2;
362       orc_union32 _dest1;
363       _src1.i = ORC_DENORMAL (var32.i);
364       _src2.i = ORC_DENORMAL (var33.i);
365       _dest1.f = _src1.f * _src2.f;
366       var34.i = ORC_DENORMAL (_dest1.i);
367     }
368     /* 3: storel */
369     ptr0[i] = var34;
370   }
371 
372 }
373 
374 void
volume_orc_scalarmultiply_f32_ns(float * ORC_RESTRICT d1,float p1,int n)375 volume_orc_scalarmultiply_f32_ns (float *ORC_RESTRICT d1, float p1, int n)
376 {
377   OrcExecutor _ex, *ex = &_ex;
378   static volatile int p_inited = 0;
379   static OrcCode *c = 0;
380   void (*func) (OrcExecutor *);
381 
382   if (!p_inited) {
383     orc_once_mutex_lock ();
384     if (!p_inited) {
385       OrcProgram *p;
386 
387 #if 1
388       static const orc_uint8 bc[] = {
389         1, 9, 32, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 115, 99,
390         97, 108, 97, 114, 109, 117, 108, 116, 105, 112, 108, 121, 95, 102, 51,
391             50,
392         95, 110, 115, 11, 4, 4, 17, 4, 202, 0, 0, 24, 2, 0,
393       };
394       p = orc_program_new_from_static_bytecode (bc);
395       orc_program_set_backup_function (p,
396           _backup_volume_orc_scalarmultiply_f32_ns);
397 #else
398       p = orc_program_new ();
399       orc_program_set_name (p, "volume_orc_scalarmultiply_f32_ns");
400       orc_program_set_backup_function (p,
401           _backup_volume_orc_scalarmultiply_f32_ns);
402       orc_program_add_destination (p, 4, "d1");
403       orc_program_add_parameter_float (p, 4, "p1");
404 
405       orc_program_append_2 (p, "mulf", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_P1,
406           ORC_VAR_D1);
407 #endif
408 
409       orc_program_compile (p);
410       c = orc_program_take_code (p);
411       orc_program_free (p);
412     }
413     p_inited = TRUE;
414     orc_once_mutex_unlock ();
415   }
416   ex->arrays[ORC_VAR_A2] = c;
417   ex->program = 0;
418 
419   ex->n = n;
420   ex->arrays[ORC_VAR_D1] = d1;
421   {
422     orc_union32 tmp;
423     tmp.f = p1;
424     ex->params[ORC_VAR_P1] = tmp.i;
425   }
426 
427   func = c->exec;
428   func (ex);
429 }
430 #endif
431 
432 
433 /* volume_orc_process_int32 */
434 #ifdef DISABLE_ORC
435 void
volume_orc_process_int32(gint32 * ORC_RESTRICT d1,int p1,int n)436 volume_orc_process_int32 (gint32 * ORC_RESTRICT d1, int p1, int n)
437 {
438   int i;
439   orc_union32 *ORC_RESTRICT ptr0;
440   orc_union32 var33;
441   orc_union32 var34;
442   orc_union32 var35;
443   orc_union64 var36;
444   orc_union64 var37;
445 
446   ptr0 = (orc_union32 *) d1;
447 
448   /* 1: loadpl */
449   var34.i = p1;
450 
451   for (i = 0; i < n; i++) {
452     /* 0: loadl */
453     var33 = ptr0[i];
454     /* 2: mulslq */
455     var36.i = ((orc_int64) var33.i) * ((orc_int64) var34.i);
456     /* 3: shrsq */
457     var37.i = var36.i >> 27;
458     /* 4: convql */
459     var35.i = var37.i;
460     /* 5: storel */
461     ptr0[i] = var35;
462   }
463 
464 }
465 
466 #else
467 static void
_backup_volume_orc_process_int32(OrcExecutor * ORC_RESTRICT ex)468 _backup_volume_orc_process_int32 (OrcExecutor * ORC_RESTRICT ex)
469 {
470   int i;
471   int n = ex->n;
472   orc_union32 *ORC_RESTRICT ptr0;
473   orc_union32 var33;
474   orc_union32 var34;
475   orc_union32 var35;
476   orc_union64 var36;
477   orc_union64 var37;
478 
479   ptr0 = (orc_union32 *) ex->arrays[0];
480 
481   /* 1: loadpl */
482   var34.i = ex->params[24];
483 
484   for (i = 0; i < n; i++) {
485     /* 0: loadl */
486     var33 = ptr0[i];
487     /* 2: mulslq */
488     var36.i = ((orc_int64) var33.i) * ((orc_int64) var34.i);
489     /* 3: shrsq */
490     var37.i = var36.i >> 27;
491     /* 4: convql */
492     var35.i = var37.i;
493     /* 5: storel */
494     ptr0[i] = var35;
495   }
496 
497 }
498 
499 void
volume_orc_process_int32(gint32 * ORC_RESTRICT d1,int p1,int n)500 volume_orc_process_int32 (gint32 * ORC_RESTRICT d1, int p1, int n)
501 {
502   OrcExecutor _ex, *ex = &_ex;
503   static volatile int p_inited = 0;
504   static OrcCode *c = 0;
505   void (*func) (OrcExecutor *);
506 
507   if (!p_inited) {
508     orc_once_mutex_lock ();
509     if (!p_inited) {
510       OrcProgram *p;
511 
512 #if 1
513       static const orc_uint8 bc[] = {
514         1, 9, 24, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114,
515         111, 99, 101, 115, 115, 95, 105, 110, 116, 51, 50, 11, 4, 4, 15, 8,
516         27, 0, 0, 0, 0, 0, 0, 0, 16, 4, 20, 8, 178, 32, 0, 24,
517         147, 32, 32, 16, 169, 0, 32, 2, 0,
518       };
519       p = orc_program_new_from_static_bytecode (bc);
520       orc_program_set_backup_function (p, _backup_volume_orc_process_int32);
521 #else
522       p = orc_program_new ();
523       orc_program_set_name (p, "volume_orc_process_int32");
524       orc_program_set_backup_function (p, _backup_volume_orc_process_int32);
525       orc_program_add_destination (p, 4, "d1");
526       orc_program_add_constant_int64 (p, 8, 0x000000000000001bULL, "c1");
527       orc_program_add_parameter (p, 4, "p1");
528       orc_program_add_temporary (p, 8, "t1");
529 
530       orc_program_append_2 (p, "mulslq", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_P1,
531           ORC_VAR_D1);
532       orc_program_append_2 (p, "shrsq", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
533           ORC_VAR_D1);
534       orc_program_append_2 (p, "convql", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
535           ORC_VAR_D1);
536 #endif
537 
538       orc_program_compile (p);
539       c = orc_program_take_code (p);
540       orc_program_free (p);
541     }
542     p_inited = TRUE;
543     orc_once_mutex_unlock ();
544   }
545   ex->arrays[ORC_VAR_A2] = c;
546   ex->program = 0;
547 
548   ex->n = n;
549   ex->arrays[ORC_VAR_D1] = d1;
550   ex->params[ORC_VAR_P1] = p1;
551 
552   func = c->exec;
553   func (ex);
554 }
555 #endif
556 
557 
558 /* volume_orc_process_int32_clamp */
559 #ifdef DISABLE_ORC
560 void
volume_orc_process_int32_clamp(gint32 * ORC_RESTRICT d1,int p1,int n)561 volume_orc_process_int32_clamp (gint32 * ORC_RESTRICT d1, int p1, int n)
562 {
563   int i;
564   orc_union32 *ORC_RESTRICT ptr0;
565   orc_union32 var33;
566   orc_union32 var34;
567   orc_union32 var35;
568   orc_union64 var36;
569   orc_union64 var37;
570 
571   ptr0 = (orc_union32 *) d1;
572 
573   /* 1: loadpl */
574   var34.i = p1;
575 
576   for (i = 0; i < n; i++) {
577     /* 0: loadl */
578     var33 = ptr0[i];
579     /* 2: mulslq */
580     var36.i = ((orc_int64) var33.i) * ((orc_int64) var34.i);
581     /* 3: shrsq */
582     var37.i = var36.i >> 27;
583     /* 4: convsssql */
584     var35.i = ORC_CLAMP_SL (var37.i);
585     /* 5: storel */
586     ptr0[i] = var35;
587   }
588 
589 }
590 
591 #else
592 static void
_backup_volume_orc_process_int32_clamp(OrcExecutor * ORC_RESTRICT ex)593 _backup_volume_orc_process_int32_clamp (OrcExecutor * ORC_RESTRICT ex)
594 {
595   int i;
596   int n = ex->n;
597   orc_union32 *ORC_RESTRICT ptr0;
598   orc_union32 var33;
599   orc_union32 var34;
600   orc_union32 var35;
601   orc_union64 var36;
602   orc_union64 var37;
603 
604   ptr0 = (orc_union32 *) ex->arrays[0];
605 
606   /* 1: loadpl */
607   var34.i = ex->params[24];
608 
609   for (i = 0; i < n; i++) {
610     /* 0: loadl */
611     var33 = ptr0[i];
612     /* 2: mulslq */
613     var36.i = ((orc_int64) var33.i) * ((orc_int64) var34.i);
614     /* 3: shrsq */
615     var37.i = var36.i >> 27;
616     /* 4: convsssql */
617     var35.i = ORC_CLAMP_SL (var37.i);
618     /* 5: storel */
619     ptr0[i] = var35;
620   }
621 
622 }
623 
624 void
volume_orc_process_int32_clamp(gint32 * ORC_RESTRICT d1,int p1,int n)625 volume_orc_process_int32_clamp (gint32 * ORC_RESTRICT d1, int p1, int n)
626 {
627   OrcExecutor _ex, *ex = &_ex;
628   static volatile int p_inited = 0;
629   static OrcCode *c = 0;
630   void (*func) (OrcExecutor *);
631 
632   if (!p_inited) {
633     orc_once_mutex_lock ();
634     if (!p_inited) {
635       OrcProgram *p;
636 
637 #if 1
638       static const orc_uint8 bc[] = {
639         1, 9, 30, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114,
640         111, 99, 101, 115, 115, 95, 105, 110, 116, 51, 50, 95, 99, 108, 97, 109,
641         112, 11, 4, 4, 15, 8, 27, 0, 0, 0, 0, 0, 0, 0, 16, 4,
642         20, 8, 178, 32, 0, 24, 147, 32, 32, 16, 170, 0, 32, 2, 0,
643       };
644       p = orc_program_new_from_static_bytecode (bc);
645       orc_program_set_backup_function (p,
646           _backup_volume_orc_process_int32_clamp);
647 #else
648       p = orc_program_new ();
649       orc_program_set_name (p, "volume_orc_process_int32_clamp");
650       orc_program_set_backup_function (p,
651           _backup_volume_orc_process_int32_clamp);
652       orc_program_add_destination (p, 4, "d1");
653       orc_program_add_constant_int64 (p, 8, 0x000000000000001bULL, "c1");
654       orc_program_add_parameter (p, 4, "p1");
655       orc_program_add_temporary (p, 8, "t1");
656 
657       orc_program_append_2 (p, "mulslq", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_P1,
658           ORC_VAR_D1);
659       orc_program_append_2 (p, "shrsq", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
660           ORC_VAR_D1);
661       orc_program_append_2 (p, "convsssql", 0, ORC_VAR_D1, ORC_VAR_T1,
662           ORC_VAR_D1, ORC_VAR_D1);
663 #endif
664 
665       orc_program_compile (p);
666       c = orc_program_take_code (p);
667       orc_program_free (p);
668     }
669     p_inited = TRUE;
670     orc_once_mutex_unlock ();
671   }
672   ex->arrays[ORC_VAR_A2] = c;
673   ex->program = 0;
674 
675   ex->n = n;
676   ex->arrays[ORC_VAR_D1] = d1;
677   ex->params[ORC_VAR_P1] = p1;
678 
679   func = c->exec;
680   func (ex);
681 }
682 #endif
683 
684 
685 /* volume_orc_process_int16 */
686 #ifdef DISABLE_ORC
687 void
volume_orc_process_int16(gint16 * ORC_RESTRICT d1,int p1,int n)688 volume_orc_process_int16 (gint16 * ORC_RESTRICT d1, int p1, int n)
689 {
690   int i;
691   orc_union16 *ORC_RESTRICT ptr0;
692   orc_union16 var33;
693   orc_union16 var34;
694   orc_union16 var35;
695   orc_union32 var36;
696   orc_union32 var37;
697 
698   ptr0 = (orc_union16 *) d1;
699 
700   /* 1: loadpw */
701   var34.i = p1;
702 
703   for (i = 0; i < n; i++) {
704     /* 0: loadw */
705     var33 = ptr0[i];
706     /* 2: mulswl */
707     var36.i = var33.i * var34.i;
708     /* 3: shrsl */
709     var37.i = var36.i >> 11;
710     /* 4: convlw */
711     var35.i = var37.i;
712     /* 5: storew */
713     ptr0[i] = var35;
714   }
715 
716 }
717 
718 #else
719 static void
_backup_volume_orc_process_int16(OrcExecutor * ORC_RESTRICT ex)720 _backup_volume_orc_process_int16 (OrcExecutor * ORC_RESTRICT ex)
721 {
722   int i;
723   int n = ex->n;
724   orc_union16 *ORC_RESTRICT ptr0;
725   orc_union16 var33;
726   orc_union16 var34;
727   orc_union16 var35;
728   orc_union32 var36;
729   orc_union32 var37;
730 
731   ptr0 = (orc_union16 *) ex->arrays[0];
732 
733   /* 1: loadpw */
734   var34.i = ex->params[24];
735 
736   for (i = 0; i < n; i++) {
737     /* 0: loadw */
738     var33 = ptr0[i];
739     /* 2: mulswl */
740     var36.i = var33.i * var34.i;
741     /* 3: shrsl */
742     var37.i = var36.i >> 11;
743     /* 4: convlw */
744     var35.i = var37.i;
745     /* 5: storew */
746     ptr0[i] = var35;
747   }
748 
749 }
750 
751 void
volume_orc_process_int16(gint16 * ORC_RESTRICT d1,int p1,int n)752 volume_orc_process_int16 (gint16 * ORC_RESTRICT d1, int p1, int n)
753 {
754   OrcExecutor _ex, *ex = &_ex;
755   static volatile int p_inited = 0;
756   static OrcCode *c = 0;
757   void (*func) (OrcExecutor *);
758 
759   if (!p_inited) {
760     orc_once_mutex_lock ();
761     if (!p_inited) {
762       OrcProgram *p;
763 
764 #if 1
765       static const orc_uint8 bc[] = {
766         1, 9, 24, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114,
767         111, 99, 101, 115, 115, 95, 105, 110, 116, 49, 54, 11, 2, 2, 14, 4,
768         11, 0, 0, 0, 16, 2, 20, 4, 176, 32, 0, 24, 125, 32, 32, 16,
769         163, 0, 32, 2, 0,
770       };
771       p = orc_program_new_from_static_bytecode (bc);
772       orc_program_set_backup_function (p, _backup_volume_orc_process_int16);
773 #else
774       p = orc_program_new ();
775       orc_program_set_name (p, "volume_orc_process_int16");
776       orc_program_set_backup_function (p, _backup_volume_orc_process_int16);
777       orc_program_add_destination (p, 2, "d1");
778       orc_program_add_constant (p, 4, 0x0000000b, "c1");
779       orc_program_add_parameter (p, 2, "p1");
780       orc_program_add_temporary (p, 4, "t1");
781 
782       orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_P1,
783           ORC_VAR_D1);
784       orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
785           ORC_VAR_D1);
786       orc_program_append_2 (p, "convlw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
787           ORC_VAR_D1);
788 #endif
789 
790       orc_program_compile (p);
791       c = orc_program_take_code (p);
792       orc_program_free (p);
793     }
794     p_inited = TRUE;
795     orc_once_mutex_unlock ();
796   }
797   ex->arrays[ORC_VAR_A2] = c;
798   ex->program = 0;
799 
800   ex->n = n;
801   ex->arrays[ORC_VAR_D1] = d1;
802   ex->params[ORC_VAR_P1] = p1;
803 
804   func = c->exec;
805   func (ex);
806 }
807 #endif
808 
809 
810 /* volume_orc_process_int16_clamp */
811 #ifdef DISABLE_ORC
812 void
volume_orc_process_int16_clamp(gint16 * ORC_RESTRICT d1,int p1,int n)813 volume_orc_process_int16_clamp (gint16 * ORC_RESTRICT d1, int p1, int n)
814 {
815   int i;
816   orc_union16 *ORC_RESTRICT ptr0;
817   orc_union16 var33;
818   orc_union16 var34;
819   orc_union16 var35;
820   orc_union32 var36;
821   orc_union32 var37;
822 
823   ptr0 = (orc_union16 *) d1;
824 
825   /* 1: loadpw */
826   var34.i = p1;
827 
828   for (i = 0; i < n; i++) {
829     /* 0: loadw */
830     var33 = ptr0[i];
831     /* 2: mulswl */
832     var36.i = var33.i * var34.i;
833     /* 3: shrsl */
834     var37.i = var36.i >> 11;
835     /* 4: convssslw */
836     var35.i = ORC_CLAMP_SW (var37.i);
837     /* 5: storew */
838     ptr0[i] = var35;
839   }
840 
841 }
842 
843 #else
844 static void
_backup_volume_orc_process_int16_clamp(OrcExecutor * ORC_RESTRICT ex)845 _backup_volume_orc_process_int16_clamp (OrcExecutor * ORC_RESTRICT ex)
846 {
847   int i;
848   int n = ex->n;
849   orc_union16 *ORC_RESTRICT ptr0;
850   orc_union16 var33;
851   orc_union16 var34;
852   orc_union16 var35;
853   orc_union32 var36;
854   orc_union32 var37;
855 
856   ptr0 = (orc_union16 *) ex->arrays[0];
857 
858   /* 1: loadpw */
859   var34.i = ex->params[24];
860 
861   for (i = 0; i < n; i++) {
862     /* 0: loadw */
863     var33 = ptr0[i];
864     /* 2: mulswl */
865     var36.i = var33.i * var34.i;
866     /* 3: shrsl */
867     var37.i = var36.i >> 11;
868     /* 4: convssslw */
869     var35.i = ORC_CLAMP_SW (var37.i);
870     /* 5: storew */
871     ptr0[i] = var35;
872   }
873 
874 }
875 
876 void
volume_orc_process_int16_clamp(gint16 * ORC_RESTRICT d1,int p1,int n)877 volume_orc_process_int16_clamp (gint16 * ORC_RESTRICT d1, int p1, int n)
878 {
879   OrcExecutor _ex, *ex = &_ex;
880   static volatile int p_inited = 0;
881   static OrcCode *c = 0;
882   void (*func) (OrcExecutor *);
883 
884   if (!p_inited) {
885     orc_once_mutex_lock ();
886     if (!p_inited) {
887       OrcProgram *p;
888 
889 #if 1
890       static const orc_uint8 bc[] = {
891         1, 9, 30, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114,
892         111, 99, 101, 115, 115, 95, 105, 110, 116, 49, 54, 95, 99, 108, 97, 109,
893         112, 11, 2, 2, 14, 4, 11, 0, 0, 0, 16, 2, 20, 4, 176, 32,
894         0, 24, 125, 32, 32, 16, 165, 0, 32, 2, 0,
895       };
896       p = orc_program_new_from_static_bytecode (bc);
897       orc_program_set_backup_function (p,
898           _backup_volume_orc_process_int16_clamp);
899 #else
900       p = orc_program_new ();
901       orc_program_set_name (p, "volume_orc_process_int16_clamp");
902       orc_program_set_backup_function (p,
903           _backup_volume_orc_process_int16_clamp);
904       orc_program_add_destination (p, 2, "d1");
905       orc_program_add_constant (p, 4, 0x0000000b, "c1");
906       orc_program_add_parameter (p, 2, "p1");
907       orc_program_add_temporary (p, 4, "t1");
908 
909       orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_P1,
910           ORC_VAR_D1);
911       orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
912           ORC_VAR_D1);
913       orc_program_append_2 (p, "convssslw", 0, ORC_VAR_D1, ORC_VAR_T1,
914           ORC_VAR_D1, ORC_VAR_D1);
915 #endif
916 
917       orc_program_compile (p);
918       c = orc_program_take_code (p);
919       orc_program_free (p);
920     }
921     p_inited = TRUE;
922     orc_once_mutex_unlock ();
923   }
924   ex->arrays[ORC_VAR_A2] = c;
925   ex->program = 0;
926 
927   ex->n = n;
928   ex->arrays[ORC_VAR_D1] = d1;
929   ex->params[ORC_VAR_P1] = p1;
930 
931   func = c->exec;
932   func (ex);
933 }
934 #endif
935 
936 
937 /* volume_orc_process_int8 */
938 #ifdef DISABLE_ORC
939 void
volume_orc_process_int8(gint8 * ORC_RESTRICT d1,int p1,int n)940 volume_orc_process_int8 (gint8 * ORC_RESTRICT d1, int p1, int n)
941 {
942   int i;
943   orc_int8 *ORC_RESTRICT ptr0;
944   orc_int8 var33;
945   orc_int8 var34;
946   orc_int8 var35;
947   orc_union16 var36;
948   orc_union16 var37;
949 
950   ptr0 = (orc_int8 *) d1;
951 
952   /* 1: loadpb */
953   var34 = p1;
954 
955   for (i = 0; i < n; i++) {
956     /* 0: loadb */
957     var33 = ptr0[i];
958     /* 2: mulsbw */
959     var36.i = var33 * var34;
960     /* 3: shrsw */
961     var37.i = var36.i >> 3;
962     /* 4: convwb */
963     var35 = var37.i;
964     /* 5: storeb */
965     ptr0[i] = var35;
966   }
967 
968 }
969 
970 #else
971 static void
_backup_volume_orc_process_int8(OrcExecutor * ORC_RESTRICT ex)972 _backup_volume_orc_process_int8 (OrcExecutor * ORC_RESTRICT ex)
973 {
974   int i;
975   int n = ex->n;
976   orc_int8 *ORC_RESTRICT ptr0;
977   orc_int8 var33;
978   orc_int8 var34;
979   orc_int8 var35;
980   orc_union16 var36;
981   orc_union16 var37;
982 
983   ptr0 = (orc_int8 *) ex->arrays[0];
984 
985   /* 1: loadpb */
986   var34 = ex->params[24];
987 
988   for (i = 0; i < n; i++) {
989     /* 0: loadb */
990     var33 = ptr0[i];
991     /* 2: mulsbw */
992     var36.i = var33 * var34;
993     /* 3: shrsw */
994     var37.i = var36.i >> 3;
995     /* 4: convwb */
996     var35 = var37.i;
997     /* 5: storeb */
998     ptr0[i] = var35;
999   }
1000 
1001 }
1002 
1003 void
volume_orc_process_int8(gint8 * ORC_RESTRICT d1,int p1,int n)1004 volume_orc_process_int8 (gint8 * ORC_RESTRICT d1, int p1, int n)
1005 {
1006   OrcExecutor _ex, *ex = &_ex;
1007   static volatile int p_inited = 0;
1008   static OrcCode *c = 0;
1009   void (*func) (OrcExecutor *);
1010 
1011   if (!p_inited) {
1012     orc_once_mutex_lock ();
1013     if (!p_inited) {
1014       OrcProgram *p;
1015 
1016 #if 1
1017       static const orc_uint8 bc[] = {
1018         1, 9, 23, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114,
1019         111, 99, 101, 115, 115, 95, 105, 110, 116, 56, 11, 1, 1, 14, 2, 3,
1020         0, 0, 0, 16, 1, 20, 2, 174, 32, 0, 24, 94, 32, 32, 16, 157,
1021         0, 32, 2, 0,
1022       };
1023       p = orc_program_new_from_static_bytecode (bc);
1024       orc_program_set_backup_function (p, _backup_volume_orc_process_int8);
1025 #else
1026       p = orc_program_new ();
1027       orc_program_set_name (p, "volume_orc_process_int8");
1028       orc_program_set_backup_function (p, _backup_volume_orc_process_int8);
1029       orc_program_add_destination (p, 1, "d1");
1030       orc_program_add_constant (p, 2, 0x00000003, "c1");
1031       orc_program_add_parameter (p, 1, "p1");
1032       orc_program_add_temporary (p, 2, "t1");
1033 
1034       orc_program_append_2 (p, "mulsbw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_P1,
1035           ORC_VAR_D1);
1036       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
1037           ORC_VAR_D1);
1038       orc_program_append_2 (p, "convwb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
1039           ORC_VAR_D1);
1040 #endif
1041 
1042       orc_program_compile (p);
1043       c = orc_program_take_code (p);
1044       orc_program_free (p);
1045     }
1046     p_inited = TRUE;
1047     orc_once_mutex_unlock ();
1048   }
1049   ex->arrays[ORC_VAR_A2] = c;
1050   ex->program = 0;
1051 
1052   ex->n = n;
1053   ex->arrays[ORC_VAR_D1] = d1;
1054   ex->params[ORC_VAR_P1] = p1;
1055 
1056   func = c->exec;
1057   func (ex);
1058 }
1059 #endif
1060 
1061 
1062 /* volume_orc_process_int8_clamp */
1063 #ifdef DISABLE_ORC
1064 void
volume_orc_process_int8_clamp(gint8 * ORC_RESTRICT d1,int p1,int n)1065 volume_orc_process_int8_clamp (gint8 * ORC_RESTRICT d1, int p1, int n)
1066 {
1067   int i;
1068   orc_int8 *ORC_RESTRICT ptr0;
1069   orc_int8 var33;
1070   orc_int8 var34;
1071   orc_int8 var35;
1072   orc_union16 var36;
1073   orc_union16 var37;
1074 
1075   ptr0 = (orc_int8 *) d1;
1076 
1077   /* 1: loadpb */
1078   var34 = p1;
1079 
1080   for (i = 0; i < n; i++) {
1081     /* 0: loadb */
1082     var33 = ptr0[i];
1083     /* 2: mulsbw */
1084     var36.i = var33 * var34;
1085     /* 3: shrsw */
1086     var37.i = var36.i >> 3;
1087     /* 4: convssswb */
1088     var35 = ORC_CLAMP_SB (var37.i);
1089     /* 5: storeb */
1090     ptr0[i] = var35;
1091   }
1092 
1093 }
1094 
1095 #else
1096 static void
_backup_volume_orc_process_int8_clamp(OrcExecutor * ORC_RESTRICT ex)1097 _backup_volume_orc_process_int8_clamp (OrcExecutor * ORC_RESTRICT ex)
1098 {
1099   int i;
1100   int n = ex->n;
1101   orc_int8 *ORC_RESTRICT ptr0;
1102   orc_int8 var33;
1103   orc_int8 var34;
1104   orc_int8 var35;
1105   orc_union16 var36;
1106   orc_union16 var37;
1107 
1108   ptr0 = (orc_int8 *) ex->arrays[0];
1109 
1110   /* 1: loadpb */
1111   var34 = ex->params[24];
1112 
1113   for (i = 0; i < n; i++) {
1114     /* 0: loadb */
1115     var33 = ptr0[i];
1116     /* 2: mulsbw */
1117     var36.i = var33 * var34;
1118     /* 3: shrsw */
1119     var37.i = var36.i >> 3;
1120     /* 4: convssswb */
1121     var35 = ORC_CLAMP_SB (var37.i);
1122     /* 5: storeb */
1123     ptr0[i] = var35;
1124   }
1125 
1126 }
1127 
1128 void
volume_orc_process_int8_clamp(gint8 * ORC_RESTRICT d1,int p1,int n)1129 volume_orc_process_int8_clamp (gint8 * ORC_RESTRICT d1, int p1, int n)
1130 {
1131   OrcExecutor _ex, *ex = &_ex;
1132   static volatile int p_inited = 0;
1133   static OrcCode *c = 0;
1134   void (*func) (OrcExecutor *);
1135 
1136   if (!p_inited) {
1137     orc_once_mutex_lock ();
1138     if (!p_inited) {
1139       OrcProgram *p;
1140 
1141 #if 1
1142       static const orc_uint8 bc[] = {
1143         1, 9, 29, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114,
1144         111, 99, 101, 115, 115, 95, 105, 110, 116, 56, 95, 99, 108, 97, 109,
1145             112,
1146         11, 1, 1, 14, 2, 3, 0, 0, 0, 16, 1, 20, 2, 174, 32, 0,
1147         24, 94, 32, 32, 16, 159, 0, 32, 2, 0,
1148       };
1149       p = orc_program_new_from_static_bytecode (bc);
1150       orc_program_set_backup_function (p,
1151           _backup_volume_orc_process_int8_clamp);
1152 #else
1153       p = orc_program_new ();
1154       orc_program_set_name (p, "volume_orc_process_int8_clamp");
1155       orc_program_set_backup_function (p,
1156           _backup_volume_orc_process_int8_clamp);
1157       orc_program_add_destination (p, 1, "d1");
1158       orc_program_add_constant (p, 2, 0x00000003, "c1");
1159       orc_program_add_parameter (p, 1, "p1");
1160       orc_program_add_temporary (p, 2, "t1");
1161 
1162       orc_program_append_2 (p, "mulsbw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_P1,
1163           ORC_VAR_D1);
1164       orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
1165           ORC_VAR_D1);
1166       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_D1, ORC_VAR_T1,
1167           ORC_VAR_D1, ORC_VAR_D1);
1168 #endif
1169 
1170       orc_program_compile (p);
1171       c = orc_program_take_code (p);
1172       orc_program_free (p);
1173     }
1174     p_inited = TRUE;
1175     orc_once_mutex_unlock ();
1176   }
1177   ex->arrays[ORC_VAR_A2] = c;
1178   ex->program = 0;
1179 
1180   ex->n = n;
1181   ex->arrays[ORC_VAR_D1] = d1;
1182   ex->params[ORC_VAR_P1] = p1;
1183 
1184   func = c->exec;
1185   func (ex);
1186 }
1187 #endif
1188 
1189 
1190 /* volume_orc_memset_f64 */
1191 #ifdef DISABLE_ORC
1192 void
volume_orc_memset_f64(gdouble * ORC_RESTRICT d1,double p1,int n)1193 volume_orc_memset_f64 (gdouble * ORC_RESTRICT d1, double p1, int n)
1194 {
1195   int i;
1196   orc_union64 *ORC_RESTRICT ptr0;
1197   orc_union64 var32;
1198   orc_union64 var33;
1199 
1200   ptr0 = (orc_union64 *) d1;
1201 
1202   /* 0: loadpq */
1203   var32.f = p1;
1204 
1205   for (i = 0; i < n; i++) {
1206     /* 1: copyq */
1207     var33.i = var32.i;
1208     /* 2: storeq */
1209     ptr0[i] = var33;
1210   }
1211 
1212 }
1213 
1214 #else
1215 static void
_backup_volume_orc_memset_f64(OrcExecutor * ORC_RESTRICT ex)1216 _backup_volume_orc_memset_f64 (OrcExecutor * ORC_RESTRICT ex)
1217 {
1218   int i;
1219   int n = ex->n;
1220   orc_union64 *ORC_RESTRICT ptr0;
1221   orc_union64 var32;
1222   orc_union64 var33;
1223 
1224   ptr0 = (orc_union64 *) ex->arrays[0];
1225 
1226   /* 0: loadpq */
1227   var32.i =
1228       (ex->params[24] & 0xffffffff) | ((orc_uint64) (ex->params[24 +
1229               (ORC_VAR_T1 - ORC_VAR_P1)]) << 32);
1230 
1231   for (i = 0; i < n; i++) {
1232     /* 1: copyq */
1233     var33.i = var32.i;
1234     /* 2: storeq */
1235     ptr0[i] = var33;
1236   }
1237 
1238 }
1239 
1240 void
volume_orc_memset_f64(gdouble * ORC_RESTRICT d1,double p1,int n)1241 volume_orc_memset_f64 (gdouble * ORC_RESTRICT d1, double p1, int n)
1242 {
1243   OrcExecutor _ex, *ex = &_ex;
1244   static volatile int p_inited = 0;
1245   static OrcCode *c = 0;
1246   void (*func) (OrcExecutor *);
1247 
1248   if (!p_inited) {
1249     orc_once_mutex_lock ();
1250     if (!p_inited) {
1251       OrcProgram *p;
1252 
1253 #if 1
1254       static const orc_uint8 bc[] = {
1255         1, 9, 21, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 109, 101,
1256         109, 115, 101, 116, 95, 102, 54, 52, 11, 8, 8, 18, 8, 137, 0, 24,
1257         2, 0,
1258       };
1259       p = orc_program_new_from_static_bytecode (bc);
1260       orc_program_set_backup_function (p, _backup_volume_orc_memset_f64);
1261 #else
1262       p = orc_program_new ();
1263       orc_program_set_name (p, "volume_orc_memset_f64");
1264       orc_program_set_backup_function (p, _backup_volume_orc_memset_f64);
1265       orc_program_add_destination (p, 8, "d1");
1266       orc_program_add_parameter_double (p, 8, "p1");
1267 
1268       orc_program_append_2 (p, "copyq", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1,
1269           ORC_VAR_D1);
1270 #endif
1271 
1272       orc_program_compile (p);
1273       c = orc_program_take_code (p);
1274       orc_program_free (p);
1275     }
1276     p_inited = TRUE;
1277     orc_once_mutex_unlock ();
1278   }
1279   ex->arrays[ORC_VAR_A2] = c;
1280   ex->program = 0;
1281 
1282   ex->n = n;
1283   ex->arrays[ORC_VAR_D1] = d1;
1284   {
1285     orc_union64 tmp;
1286     tmp.f = p1;
1287     ex->params[ORC_VAR_P1] = ((orc_uint64) tmp.i) & 0xffffffff;
1288     ex->params[ORC_VAR_T1] = ((orc_uint64) tmp.i) >> 32;
1289   }
1290 
1291   func = c->exec;
1292   func (ex);
1293 }
1294 #endif
1295 
1296 
1297 /* volume_orc_prepare_volumes */
1298 #ifdef DISABLE_ORC
1299 void
volume_orc_prepare_volumes(gdouble * ORC_RESTRICT d1,const gboolean * ORC_RESTRICT s1,int n)1300 volume_orc_prepare_volumes (gdouble * ORC_RESTRICT d1,
1301     const gboolean * ORC_RESTRICT s1, int n)
1302 {
1303   int i;
1304   orc_union64 *ORC_RESTRICT ptr0;
1305   const orc_union32 *ORC_RESTRICT ptr4;
1306   orc_union32 var33;
1307 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
1308   volatile orc_union64 var34;
1309 #else
1310   orc_union64 var34;
1311 #endif
1312   orc_union64 var35;
1313   orc_union64 var36;
1314   orc_union64 var37;
1315   orc_union64 var38;
1316 
1317   ptr0 = (orc_union64 *) d1;
1318   ptr4 = (orc_union32 *) s1;
1319 
1320   /* 2: loadpq */
1321   var34.i = ORC_UINT64_C (0x3ff0000000000000);  /* 1f */
1322 
1323   for (i = 0; i < n; i++) {
1324     /* 0: loadl */
1325     var33 = ptr4[i];
1326     /* 1: convld */
1327     var37.f = var33.i;
1328     /* 3: subd */
1329     {
1330       orc_union64 _src1;
1331       orc_union64 _src2;
1332       orc_union64 _dest1;
1333       _src1.i = ORC_DENORMAL_DOUBLE (var34.i);
1334       _src2.i = ORC_DENORMAL_DOUBLE (var37.i);
1335       _dest1.f = _src1.f - _src2.f;
1336       var38.i = ORC_DENORMAL_DOUBLE (_dest1.i);
1337     }
1338     /* 4: loadq */
1339     var35 = ptr0[i];
1340     /* 5: muld */
1341     {
1342       orc_union64 _src1;
1343       orc_union64 _src2;
1344       orc_union64 _dest1;
1345       _src1.i = ORC_DENORMAL_DOUBLE (var35.i);
1346       _src2.i = ORC_DENORMAL_DOUBLE (var38.i);
1347       _dest1.f = _src1.f * _src2.f;
1348       var36.i = ORC_DENORMAL_DOUBLE (_dest1.i);
1349     }
1350     /* 6: storeq */
1351     ptr0[i] = var36;
1352   }
1353 
1354 }
1355 
1356 #else
1357 static void
_backup_volume_orc_prepare_volumes(OrcExecutor * ORC_RESTRICT ex)1358 _backup_volume_orc_prepare_volumes (OrcExecutor * ORC_RESTRICT ex)
1359 {
1360   int i;
1361   int n = ex->n;
1362   orc_union64 *ORC_RESTRICT ptr0;
1363   const orc_union32 *ORC_RESTRICT ptr4;
1364   orc_union32 var33;
1365 #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
1366   volatile orc_union64 var34;
1367 #else
1368   orc_union64 var34;
1369 #endif
1370   orc_union64 var35;
1371   orc_union64 var36;
1372   orc_union64 var37;
1373   orc_union64 var38;
1374 
1375   ptr0 = (orc_union64 *) ex->arrays[0];
1376   ptr4 = (orc_union32 *) ex->arrays[4];
1377 
1378   /* 2: loadpq */
1379   var34.i = ORC_UINT64_C (0x3ff0000000000000);  /* 1f */
1380 
1381   for (i = 0; i < n; i++) {
1382     /* 0: loadl */
1383     var33 = ptr4[i];
1384     /* 1: convld */
1385     var37.f = var33.i;
1386     /* 3: subd */
1387     {
1388       orc_union64 _src1;
1389       orc_union64 _src2;
1390       orc_union64 _dest1;
1391       _src1.i = ORC_DENORMAL_DOUBLE (var34.i);
1392       _src2.i = ORC_DENORMAL_DOUBLE (var37.i);
1393       _dest1.f = _src1.f - _src2.f;
1394       var38.i = ORC_DENORMAL_DOUBLE (_dest1.i);
1395     }
1396     /* 4: loadq */
1397     var35 = ptr0[i];
1398     /* 5: muld */
1399     {
1400       orc_union64 _src1;
1401       orc_union64 _src2;
1402       orc_union64 _dest1;
1403       _src1.i = ORC_DENORMAL_DOUBLE (var35.i);
1404       _src2.i = ORC_DENORMAL_DOUBLE (var38.i);
1405       _dest1.f = _src1.f * _src2.f;
1406       var36.i = ORC_DENORMAL_DOUBLE (_dest1.i);
1407     }
1408     /* 6: storeq */
1409     ptr0[i] = var36;
1410   }
1411 
1412 }
1413 
1414 void
volume_orc_prepare_volumes(gdouble * ORC_RESTRICT d1,const gboolean * ORC_RESTRICT s1,int n)1415 volume_orc_prepare_volumes (gdouble * ORC_RESTRICT d1,
1416     const gboolean * ORC_RESTRICT s1, int n)
1417 {
1418   OrcExecutor _ex, *ex = &_ex;
1419   static volatile int p_inited = 0;
1420   static OrcCode *c = 0;
1421   void (*func) (OrcExecutor *);
1422 
1423   if (!p_inited) {
1424     orc_once_mutex_lock ();
1425     if (!p_inited) {
1426       OrcProgram *p;
1427 
1428 #if 1
1429       static const orc_uint8 bc[] = {
1430         1, 9, 26, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114,
1431         101, 112, 97, 114, 101, 95, 118, 111, 108, 117, 109, 101, 115, 11, 8, 8,
1432         12, 4, 4, 15, 8, 0, 0, 0, 0, 0, 0, 240, 63, 20, 8, 223,
1433         32, 4, 213, 32, 16, 32, 214, 0, 0, 32, 2, 0,
1434       };
1435       p = orc_program_new_from_static_bytecode (bc);
1436       orc_program_set_backup_function (p, _backup_volume_orc_prepare_volumes);
1437 #else
1438       p = orc_program_new ();
1439       orc_program_set_name (p, "volume_orc_prepare_volumes");
1440       orc_program_set_backup_function (p, _backup_volume_orc_prepare_volumes);
1441       orc_program_add_destination (p, 8, "d1");
1442       orc_program_add_source (p, 4, "s1");
1443       orc_program_add_constant_int64 (p, 8, 0x3ff0000000000000ULL, "c1");
1444       orc_program_add_temporary (p, 8, "t1");
1445 
1446       orc_program_append_2 (p, "convld", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
1447           ORC_VAR_D1);
1448       orc_program_append_2 (p, "subd", 0, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_T1,
1449           ORC_VAR_D1);
1450       orc_program_append_2 (p, "muld", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1,
1451           ORC_VAR_D1);
1452 #endif
1453 
1454       orc_program_compile (p);
1455       c = orc_program_take_code (p);
1456       orc_program_free (p);
1457     }
1458     p_inited = TRUE;
1459     orc_once_mutex_unlock ();
1460   }
1461   ex->arrays[ORC_VAR_A2] = c;
1462   ex->program = 0;
1463 
1464   ex->n = n;
1465   ex->arrays[ORC_VAR_D1] = d1;
1466   ex->arrays[ORC_VAR_S1] = (void *) s1;
1467 
1468   func = c->exec;
1469   func (ex);
1470 }
1471 #endif
1472 
1473 
1474 /* volume_orc_process_controlled_f64_1ch */
1475 #ifdef DISABLE_ORC
1476 void
volume_orc_process_controlled_f64_1ch(gdouble * ORC_RESTRICT d1,const gdouble * ORC_RESTRICT s1,int n)1477 volume_orc_process_controlled_f64_1ch (gdouble * ORC_RESTRICT d1,
1478     const gdouble * ORC_RESTRICT s1, int n)
1479 {
1480   int i;
1481   orc_union64 *ORC_RESTRICT ptr0;
1482   const orc_union64 *ORC_RESTRICT ptr4;
1483   orc_union64 var32;
1484   orc_union64 var33;
1485   orc_union64 var34;
1486 
1487   ptr0 = (orc_union64 *) d1;
1488   ptr4 = (orc_union64 *) s1;
1489 
1490 
1491   for (i = 0; i < n; i++) {
1492     /* 0: loadq */
1493     var32 = ptr0[i];
1494     /* 1: loadq */
1495     var33 = ptr4[i];
1496     /* 2: muld */
1497     {
1498       orc_union64 _src1;
1499       orc_union64 _src2;
1500       orc_union64 _dest1;
1501       _src1.i = ORC_DENORMAL_DOUBLE (var32.i);
1502       _src2.i = ORC_DENORMAL_DOUBLE (var33.i);
1503       _dest1.f = _src1.f * _src2.f;
1504       var34.i = ORC_DENORMAL_DOUBLE (_dest1.i);
1505     }
1506     /* 3: storeq */
1507     ptr0[i] = var34;
1508   }
1509 
1510 }
1511 
1512 #else
1513 static void
_backup_volume_orc_process_controlled_f64_1ch(OrcExecutor * ORC_RESTRICT ex)1514 _backup_volume_orc_process_controlled_f64_1ch (OrcExecutor * ORC_RESTRICT ex)
1515 {
1516   int i;
1517   int n = ex->n;
1518   orc_union64 *ORC_RESTRICT ptr0;
1519   const orc_union64 *ORC_RESTRICT ptr4;
1520   orc_union64 var32;
1521   orc_union64 var33;
1522   orc_union64 var34;
1523 
1524   ptr0 = (orc_union64 *) ex->arrays[0];
1525   ptr4 = (orc_union64 *) ex->arrays[4];
1526 
1527 
1528   for (i = 0; i < n; i++) {
1529     /* 0: loadq */
1530     var32 = ptr0[i];
1531     /* 1: loadq */
1532     var33 = ptr4[i];
1533     /* 2: muld */
1534     {
1535       orc_union64 _src1;
1536       orc_union64 _src2;
1537       orc_union64 _dest1;
1538       _src1.i = ORC_DENORMAL_DOUBLE (var32.i);
1539       _src2.i = ORC_DENORMAL_DOUBLE (var33.i);
1540       _dest1.f = _src1.f * _src2.f;
1541       var34.i = ORC_DENORMAL_DOUBLE (_dest1.i);
1542     }
1543     /* 3: storeq */
1544     ptr0[i] = var34;
1545   }
1546 
1547 }
1548 
1549 void
volume_orc_process_controlled_f64_1ch(gdouble * ORC_RESTRICT d1,const gdouble * ORC_RESTRICT s1,int n)1550 volume_orc_process_controlled_f64_1ch (gdouble * ORC_RESTRICT d1,
1551     const gdouble * ORC_RESTRICT s1, int n)
1552 {
1553   OrcExecutor _ex, *ex = &_ex;
1554   static volatile int p_inited = 0;
1555   static OrcCode *c = 0;
1556   void (*func) (OrcExecutor *);
1557 
1558   if (!p_inited) {
1559     orc_once_mutex_lock ();
1560     if (!p_inited) {
1561       OrcProgram *p;
1562 
1563 #if 1
1564       static const orc_uint8 bc[] = {
1565         1, 9, 37, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114,
1566         111, 99, 101, 115, 115, 95, 99, 111, 110, 116, 114, 111, 108, 108, 101,
1567             100,
1568         95, 102, 54, 52, 95, 49, 99, 104, 11, 8, 8, 12, 8, 8, 214, 0,
1569         0, 4, 2, 0,
1570       };
1571       p = orc_program_new_from_static_bytecode (bc);
1572       orc_program_set_backup_function (p,
1573           _backup_volume_orc_process_controlled_f64_1ch);
1574 #else
1575       p = orc_program_new ();
1576       orc_program_set_name (p, "volume_orc_process_controlled_f64_1ch");
1577       orc_program_set_backup_function (p,
1578           _backup_volume_orc_process_controlled_f64_1ch);
1579       orc_program_add_destination (p, 8, "d1");
1580       orc_program_add_source (p, 8, "s1");
1581 
1582       orc_program_append_2 (p, "muld", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1,
1583           ORC_VAR_D1);
1584 #endif
1585 
1586       orc_program_compile (p);
1587       c = orc_program_take_code (p);
1588       orc_program_free (p);
1589     }
1590     p_inited = TRUE;
1591     orc_once_mutex_unlock ();
1592   }
1593   ex->arrays[ORC_VAR_A2] = c;
1594   ex->program = 0;
1595 
1596   ex->n = n;
1597   ex->arrays[ORC_VAR_D1] = d1;
1598   ex->arrays[ORC_VAR_S1] = (void *) s1;
1599 
1600   func = c->exec;
1601   func (ex);
1602 }
1603 #endif
1604 
1605 
1606 /* volume_orc_process_controlled_f32_1ch */
1607 #ifdef DISABLE_ORC
1608 void
volume_orc_process_controlled_f32_1ch(gfloat * ORC_RESTRICT d1,const gdouble * ORC_RESTRICT s1,int n)1609 volume_orc_process_controlled_f32_1ch (gfloat * ORC_RESTRICT d1,
1610     const gdouble * ORC_RESTRICT s1, int n)
1611 {
1612   int i;
1613   orc_union32 *ORC_RESTRICT ptr0;
1614   const orc_union64 *ORC_RESTRICT ptr4;
1615   orc_union64 var33;
1616   orc_union32 var34;
1617   orc_union32 var35;
1618   orc_union32 var36;
1619 
1620   ptr0 = (orc_union32 *) d1;
1621   ptr4 = (orc_union64 *) s1;
1622 
1623 
1624   for (i = 0; i < n; i++) {
1625     /* 0: loadq */
1626     var33 = ptr4[i];
1627     /* 1: convdf */
1628     {
1629       orc_union64 _src1;
1630       orc_union32 _dest;
1631       _src1.i = ORC_DENORMAL_DOUBLE (var33.i);
1632       _dest.f = _src1.f;
1633       var36.i = ORC_DENORMAL (_dest.i);
1634     }
1635     /* 2: loadl */
1636     var34 = ptr0[i];
1637     /* 3: mulf */
1638     {
1639       orc_union32 _src1;
1640       orc_union32 _src2;
1641       orc_union32 _dest1;
1642       _src1.i = ORC_DENORMAL (var34.i);
1643       _src2.i = ORC_DENORMAL (var36.i);
1644       _dest1.f = _src1.f * _src2.f;
1645       var35.i = ORC_DENORMAL (_dest1.i);
1646     }
1647     /* 4: storel */
1648     ptr0[i] = var35;
1649   }
1650 
1651 }
1652 
1653 #else
1654 static void
_backup_volume_orc_process_controlled_f32_1ch(OrcExecutor * ORC_RESTRICT ex)1655 _backup_volume_orc_process_controlled_f32_1ch (OrcExecutor * ORC_RESTRICT ex)
1656 {
1657   int i;
1658   int n = ex->n;
1659   orc_union32 *ORC_RESTRICT ptr0;
1660   const orc_union64 *ORC_RESTRICT ptr4;
1661   orc_union64 var33;
1662   orc_union32 var34;
1663   orc_union32 var35;
1664   orc_union32 var36;
1665 
1666   ptr0 = (orc_union32 *) ex->arrays[0];
1667   ptr4 = (orc_union64 *) ex->arrays[4];
1668 
1669 
1670   for (i = 0; i < n; i++) {
1671     /* 0: loadq */
1672     var33 = ptr4[i];
1673     /* 1: convdf */
1674     {
1675       orc_union64 _src1;
1676       orc_union32 _dest;
1677       _src1.i = ORC_DENORMAL_DOUBLE (var33.i);
1678       _dest.f = _src1.f;
1679       var36.i = ORC_DENORMAL (_dest.i);
1680     }
1681     /* 2: loadl */
1682     var34 = ptr0[i];
1683     /* 3: mulf */
1684     {
1685       orc_union32 _src1;
1686       orc_union32 _src2;
1687       orc_union32 _dest1;
1688       _src1.i = ORC_DENORMAL (var34.i);
1689       _src2.i = ORC_DENORMAL (var36.i);
1690       _dest1.f = _src1.f * _src2.f;
1691       var35.i = ORC_DENORMAL (_dest1.i);
1692     }
1693     /* 4: storel */
1694     ptr0[i] = var35;
1695   }
1696 
1697 }
1698 
1699 void
volume_orc_process_controlled_f32_1ch(gfloat * ORC_RESTRICT d1,const gdouble * ORC_RESTRICT s1,int n)1700 volume_orc_process_controlled_f32_1ch (gfloat * ORC_RESTRICT d1,
1701     const gdouble * ORC_RESTRICT s1, int n)
1702 {
1703   OrcExecutor _ex, *ex = &_ex;
1704   static volatile int p_inited = 0;
1705   static OrcCode *c = 0;
1706   void (*func) (OrcExecutor *);
1707 
1708   if (!p_inited) {
1709     orc_once_mutex_lock ();
1710     if (!p_inited) {
1711       OrcProgram *p;
1712 
1713 #if 1
1714       static const orc_uint8 bc[] = {
1715         1, 9, 37, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114,
1716         111, 99, 101, 115, 115, 95, 99, 111, 110, 116, 114, 111, 108, 108, 101,
1717             100,
1718         95, 102, 51, 50, 95, 49, 99, 104, 11, 4, 4, 12, 8, 8, 20, 4,
1719         225, 32, 4, 202, 0, 0, 32, 2, 0,
1720       };
1721       p = orc_program_new_from_static_bytecode (bc);
1722       orc_program_set_backup_function (p,
1723           _backup_volume_orc_process_controlled_f32_1ch);
1724 #else
1725       p = orc_program_new ();
1726       orc_program_set_name (p, "volume_orc_process_controlled_f32_1ch");
1727       orc_program_set_backup_function (p,
1728           _backup_volume_orc_process_controlled_f32_1ch);
1729       orc_program_add_destination (p, 4, "d1");
1730       orc_program_add_source (p, 8, "s1");
1731       orc_program_add_temporary (p, 4, "t1");
1732 
1733       orc_program_append_2 (p, "convdf", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
1734           ORC_VAR_D1);
1735       orc_program_append_2 (p, "mulf", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1,
1736           ORC_VAR_D1);
1737 #endif
1738 
1739       orc_program_compile (p);
1740       c = orc_program_take_code (p);
1741       orc_program_free (p);
1742     }
1743     p_inited = TRUE;
1744     orc_once_mutex_unlock ();
1745   }
1746   ex->arrays[ORC_VAR_A2] = c;
1747   ex->program = 0;
1748 
1749   ex->n = n;
1750   ex->arrays[ORC_VAR_D1] = d1;
1751   ex->arrays[ORC_VAR_S1] = (void *) s1;
1752 
1753   func = c->exec;
1754   func (ex);
1755 }
1756 #endif
1757 
1758 
1759 /* volume_orc_process_controlled_f32_2ch */
1760 #ifdef DISABLE_ORC
1761 void
volume_orc_process_controlled_f32_2ch(gfloat * ORC_RESTRICT d1,const gdouble * ORC_RESTRICT s1,int n)1762 volume_orc_process_controlled_f32_2ch (gfloat * ORC_RESTRICT d1,
1763     const gdouble * ORC_RESTRICT s1, int n)
1764 {
1765   int i;
1766   orc_union64 *ORC_RESTRICT ptr0;
1767   const orc_union64 *ORC_RESTRICT ptr4;
1768   orc_union64 var34;
1769   orc_union64 var35;
1770   orc_union64 var36;
1771   orc_union32 var37;
1772   orc_union64 var38;
1773 
1774   ptr0 = (orc_union64 *) d1;
1775   ptr4 = (orc_union64 *) s1;
1776 
1777 
1778   for (i = 0; i < n; i++) {
1779     /* 0: loadq */
1780     var34 = ptr4[i];
1781     /* 1: convdf */
1782     {
1783       orc_union64 _src1;
1784       orc_union32 _dest;
1785       _src1.i = ORC_DENORMAL_DOUBLE (var34.i);
1786       _dest.f = _src1.f;
1787       var37.i = ORC_DENORMAL (_dest.i);
1788     }
1789     /* 2: mergelq */
1790     {
1791       orc_union64 _dest;
1792       _dest.x2[0] = var37.i;
1793       _dest.x2[1] = var37.i;
1794       var38.i = _dest.i;
1795     }
1796     /* 3: loadq */
1797     var35 = ptr0[i];
1798     /* 4: mulf */
1799     {
1800       orc_union32 _src1;
1801       orc_union32 _src2;
1802       orc_union32 _dest1;
1803       _src1.i = ORC_DENORMAL (var35.x2[0]);
1804       _src2.i = ORC_DENORMAL (var38.x2[0]);
1805       _dest1.f = _src1.f * _src2.f;
1806       var36.x2[0] = ORC_DENORMAL (_dest1.i);
1807     }
1808     {
1809       orc_union32 _src1;
1810       orc_union32 _src2;
1811       orc_union32 _dest1;
1812       _src1.i = ORC_DENORMAL (var35.x2[1]);
1813       _src2.i = ORC_DENORMAL (var38.x2[1]);
1814       _dest1.f = _src1.f * _src2.f;
1815       var36.x2[1] = ORC_DENORMAL (_dest1.i);
1816     }
1817     /* 5: storeq */
1818     ptr0[i] = var36;
1819   }
1820 
1821 }
1822 
1823 #else
1824 static void
_backup_volume_orc_process_controlled_f32_2ch(OrcExecutor * ORC_RESTRICT ex)1825 _backup_volume_orc_process_controlled_f32_2ch (OrcExecutor * ORC_RESTRICT ex)
1826 {
1827   int i;
1828   int n = ex->n;
1829   orc_union64 *ORC_RESTRICT ptr0;
1830   const orc_union64 *ORC_RESTRICT ptr4;
1831   orc_union64 var34;
1832   orc_union64 var35;
1833   orc_union64 var36;
1834   orc_union32 var37;
1835   orc_union64 var38;
1836 
1837   ptr0 = (orc_union64 *) ex->arrays[0];
1838   ptr4 = (orc_union64 *) ex->arrays[4];
1839 
1840 
1841   for (i = 0; i < n; i++) {
1842     /* 0: loadq */
1843     var34 = ptr4[i];
1844     /* 1: convdf */
1845     {
1846       orc_union64 _src1;
1847       orc_union32 _dest;
1848       _src1.i = ORC_DENORMAL_DOUBLE (var34.i);
1849       _dest.f = _src1.f;
1850       var37.i = ORC_DENORMAL (_dest.i);
1851     }
1852     /* 2: mergelq */
1853     {
1854       orc_union64 _dest;
1855       _dest.x2[0] = var37.i;
1856       _dest.x2[1] = var37.i;
1857       var38.i = _dest.i;
1858     }
1859     /* 3: loadq */
1860     var35 = ptr0[i];
1861     /* 4: mulf */
1862     {
1863       orc_union32 _src1;
1864       orc_union32 _src2;
1865       orc_union32 _dest1;
1866       _src1.i = ORC_DENORMAL (var35.x2[0]);
1867       _src2.i = ORC_DENORMAL (var38.x2[0]);
1868       _dest1.f = _src1.f * _src2.f;
1869       var36.x2[0] = ORC_DENORMAL (_dest1.i);
1870     }
1871     {
1872       orc_union32 _src1;
1873       orc_union32 _src2;
1874       orc_union32 _dest1;
1875       _src1.i = ORC_DENORMAL (var35.x2[1]);
1876       _src2.i = ORC_DENORMAL (var38.x2[1]);
1877       _dest1.f = _src1.f * _src2.f;
1878       var36.x2[1] = ORC_DENORMAL (_dest1.i);
1879     }
1880     /* 5: storeq */
1881     ptr0[i] = var36;
1882   }
1883 
1884 }
1885 
1886 void
volume_orc_process_controlled_f32_2ch(gfloat * ORC_RESTRICT d1,const gdouble * ORC_RESTRICT s1,int n)1887 volume_orc_process_controlled_f32_2ch (gfloat * ORC_RESTRICT d1,
1888     const gdouble * ORC_RESTRICT s1, int n)
1889 {
1890   OrcExecutor _ex, *ex = &_ex;
1891   static volatile int p_inited = 0;
1892   static OrcCode *c = 0;
1893   void (*func) (OrcExecutor *);
1894 
1895   if (!p_inited) {
1896     orc_once_mutex_lock ();
1897     if (!p_inited) {
1898       OrcProgram *p;
1899 
1900 #if 1
1901       static const orc_uint8 bc[] = {
1902         1, 9, 37, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114,
1903         111, 99, 101, 115, 115, 95, 99, 111, 110, 116, 114, 111, 108, 108, 101,
1904             100,
1905         95, 102, 51, 50, 95, 50, 99, 104, 11, 8, 8, 12, 8, 8, 20, 4,
1906         20, 8, 225, 32, 4, 194, 33, 32, 32, 21, 1, 202, 0, 0, 33, 2,
1907         0,
1908       };
1909       p = orc_program_new_from_static_bytecode (bc);
1910       orc_program_set_backup_function (p,
1911           _backup_volume_orc_process_controlled_f32_2ch);
1912 #else
1913       p = orc_program_new ();
1914       orc_program_set_name (p, "volume_orc_process_controlled_f32_2ch");
1915       orc_program_set_backup_function (p,
1916           _backup_volume_orc_process_controlled_f32_2ch);
1917       orc_program_add_destination (p, 8, "d1");
1918       orc_program_add_source (p, 8, "s1");
1919       orc_program_add_temporary (p, 4, "t1");
1920       orc_program_add_temporary (p, 8, "t2");
1921 
1922       orc_program_append_2 (p, "convdf", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
1923           ORC_VAR_D1);
1924       orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T1,
1925           ORC_VAR_D1);
1926       orc_program_append_2 (p, "mulf", 1, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T2,
1927           ORC_VAR_D1);
1928 #endif
1929 
1930       orc_program_compile (p);
1931       c = orc_program_take_code (p);
1932       orc_program_free (p);
1933     }
1934     p_inited = TRUE;
1935     orc_once_mutex_unlock ();
1936   }
1937   ex->arrays[ORC_VAR_A2] = c;
1938   ex->program = 0;
1939 
1940   ex->n = n;
1941   ex->arrays[ORC_VAR_D1] = d1;
1942   ex->arrays[ORC_VAR_S1] = (void *) s1;
1943 
1944   func = c->exec;
1945   func (ex);
1946 }
1947 #endif
1948 
1949 
1950 /* volume_orc_process_controlled_int32_1ch */
1951 #ifdef DISABLE_ORC
1952 void
volume_orc_process_controlled_int32_1ch(gint32 * ORC_RESTRICT d1,const gdouble * ORC_RESTRICT s1,int n)1953 volume_orc_process_controlled_int32_1ch (gint32 * ORC_RESTRICT d1,
1954     const gdouble * ORC_RESTRICT s1, int n)
1955 {
1956   int i;
1957   orc_union32 *ORC_RESTRICT ptr0;
1958   const orc_union64 *ORC_RESTRICT ptr4;
1959   orc_union32 var33;
1960   orc_union64 var34;
1961   orc_union32 var35;
1962   orc_union64 var36;
1963   orc_union64 var37;
1964 
1965   ptr0 = (orc_union32 *) d1;
1966   ptr4 = (orc_union64 *) s1;
1967 
1968 
1969   for (i = 0; i < n; i++) {
1970     /* 0: loadl */
1971     var33 = ptr0[i];
1972     /* 1: convld */
1973     var36.f = var33.i;
1974     /* 2: loadq */
1975     var34 = ptr4[i];
1976     /* 3: muld */
1977     {
1978       orc_union64 _src1;
1979       orc_union64 _src2;
1980       orc_union64 _dest1;
1981       _src1.i = ORC_DENORMAL_DOUBLE (var36.i);
1982       _src2.i = ORC_DENORMAL_DOUBLE (var34.i);
1983       _dest1.f = _src1.f * _src2.f;
1984       var37.i = ORC_DENORMAL_DOUBLE (_dest1.i);
1985     }
1986     /* 4: convdl */
1987     {
1988       int tmp;
1989       tmp = var37.f;
1990       if (tmp == 0x80000000 && !(var37.i & ORC_UINT64_C (0x8000000000000000)))
1991         tmp = 0x7fffffff;
1992       var35.i = tmp;
1993     }
1994     /* 5: storel */
1995     ptr0[i] = var35;
1996   }
1997 
1998 }
1999 
2000 #else
2001 static void
_backup_volume_orc_process_controlled_int32_1ch(OrcExecutor * ORC_RESTRICT ex)2002 _backup_volume_orc_process_controlled_int32_1ch (OrcExecutor * ORC_RESTRICT ex)
2003 {
2004   int i;
2005   int n = ex->n;
2006   orc_union32 *ORC_RESTRICT ptr0;
2007   const orc_union64 *ORC_RESTRICT ptr4;
2008   orc_union32 var33;
2009   orc_union64 var34;
2010   orc_union32 var35;
2011   orc_union64 var36;
2012   orc_union64 var37;
2013 
2014   ptr0 = (orc_union32 *) ex->arrays[0];
2015   ptr4 = (orc_union64 *) ex->arrays[4];
2016 
2017 
2018   for (i = 0; i < n; i++) {
2019     /* 0: loadl */
2020     var33 = ptr0[i];
2021     /* 1: convld */
2022     var36.f = var33.i;
2023     /* 2: loadq */
2024     var34 = ptr4[i];
2025     /* 3: muld */
2026     {
2027       orc_union64 _src1;
2028       orc_union64 _src2;
2029       orc_union64 _dest1;
2030       _src1.i = ORC_DENORMAL_DOUBLE (var36.i);
2031       _src2.i = ORC_DENORMAL_DOUBLE (var34.i);
2032       _dest1.f = _src1.f * _src2.f;
2033       var37.i = ORC_DENORMAL_DOUBLE (_dest1.i);
2034     }
2035     /* 4: convdl */
2036     {
2037       int tmp;
2038       tmp = var37.f;
2039       if (tmp == 0x80000000 && !(var37.i & ORC_UINT64_C (0x8000000000000000)))
2040         tmp = 0x7fffffff;
2041       var35.i = tmp;
2042     }
2043     /* 5: storel */
2044     ptr0[i] = var35;
2045   }
2046 
2047 }
2048 
2049 void
volume_orc_process_controlled_int32_1ch(gint32 * ORC_RESTRICT d1,const gdouble * ORC_RESTRICT s1,int n)2050 volume_orc_process_controlled_int32_1ch (gint32 * ORC_RESTRICT d1,
2051     const gdouble * ORC_RESTRICT s1, int n)
2052 {
2053   OrcExecutor _ex, *ex = &_ex;
2054   static volatile int p_inited = 0;
2055   static OrcCode *c = 0;
2056   void (*func) (OrcExecutor *);
2057 
2058   if (!p_inited) {
2059     orc_once_mutex_lock ();
2060     if (!p_inited) {
2061       OrcProgram *p;
2062 
2063 #if 1
2064       static const orc_uint8 bc[] = {
2065         1, 9, 39, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114,
2066         111, 99, 101, 115, 115, 95, 99, 111, 110, 116, 114, 111, 108, 108, 101,
2067             100,
2068         95, 105, 110, 116, 51, 50, 95, 49, 99, 104, 11, 4, 4, 12, 8, 8,
2069         20, 8, 223, 32, 0, 214, 32, 32, 4, 222, 0, 32, 2, 0,
2070       };
2071       p = orc_program_new_from_static_bytecode (bc);
2072       orc_program_set_backup_function (p,
2073           _backup_volume_orc_process_controlled_int32_1ch);
2074 #else
2075       p = orc_program_new ();
2076       orc_program_set_name (p, "volume_orc_process_controlled_int32_1ch");
2077       orc_program_set_backup_function (p,
2078           _backup_volume_orc_process_controlled_int32_1ch);
2079       orc_program_add_destination (p, 4, "d1");
2080       orc_program_add_source (p, 8, "s1");
2081       orc_program_add_temporary (p, 8, "t1");
2082 
2083       orc_program_append_2 (p, "convld", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1,
2084           ORC_VAR_D1);
2085       orc_program_append_2 (p, "muld", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S1,
2086           ORC_VAR_D1);
2087       orc_program_append_2 (p, "convdl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
2088           ORC_VAR_D1);
2089 #endif
2090 
2091       orc_program_compile (p);
2092       c = orc_program_take_code (p);
2093       orc_program_free (p);
2094     }
2095     p_inited = TRUE;
2096     orc_once_mutex_unlock ();
2097   }
2098   ex->arrays[ORC_VAR_A2] = c;
2099   ex->program = 0;
2100 
2101   ex->n = n;
2102   ex->arrays[ORC_VAR_D1] = d1;
2103   ex->arrays[ORC_VAR_S1] = (void *) s1;
2104 
2105   func = c->exec;
2106   func (ex);
2107 }
2108 #endif
2109 
2110 
2111 /* volume_orc_process_controlled_int16_1ch */
2112 #ifdef DISABLE_ORC
2113 void
volume_orc_process_controlled_int16_1ch(gint16 * ORC_RESTRICT d1,const gdouble * ORC_RESTRICT s1,int n)2114 volume_orc_process_controlled_int16_1ch (gint16 * ORC_RESTRICT d1,
2115     const gdouble * ORC_RESTRICT s1, int n)
2116 {
2117   int i;
2118   orc_union16 *ORC_RESTRICT ptr0;
2119   const orc_union64 *ORC_RESTRICT ptr4;
2120   orc_union16 var34;
2121   orc_union64 var35;
2122   orc_union16 var36;
2123   orc_union32 var37;
2124   orc_union32 var38;
2125   orc_union32 var39;
2126   orc_union32 var40;
2127   orc_union32 var41;
2128 
2129   ptr0 = (orc_union16 *) d1;
2130   ptr4 = (orc_union64 *) s1;
2131 
2132 
2133   for (i = 0; i < n; i++) {
2134     /* 0: loadw */
2135     var34 = ptr0[i];
2136     /* 1: convswl */
2137     var37.i = var34.i;
2138     /* 2: convlf */
2139     var38.f = var37.i;
2140     /* 3: loadq */
2141     var35 = ptr4[i];
2142     /* 4: convdf */
2143     {
2144       orc_union64 _src1;
2145       orc_union32 _dest;
2146       _src1.i = ORC_DENORMAL_DOUBLE (var35.i);
2147       _dest.f = _src1.f;
2148       var39.i = ORC_DENORMAL (_dest.i);
2149     }
2150     /* 5: mulf */
2151     {
2152       orc_union32 _src1;
2153       orc_union32 _src2;
2154       orc_union32 _dest1;
2155       _src1.i = ORC_DENORMAL (var38.i);
2156       _src2.i = ORC_DENORMAL (var39.i);
2157       _dest1.f = _src1.f * _src2.f;
2158       var40.i = ORC_DENORMAL (_dest1.i);
2159     }
2160     /* 6: convfl */
2161     {
2162       int tmp;
2163       tmp = (int) var40.f;
2164       if (tmp == 0x80000000 && !(var40.i & 0x80000000))
2165         tmp = 0x7fffffff;
2166       var41.i = tmp;
2167     }
2168     /* 7: convssslw */
2169     var36.i = ORC_CLAMP_SW (var41.i);
2170     /* 8: storew */
2171     ptr0[i] = var36;
2172   }
2173 
2174 }
2175 
2176 #else
2177 static void
_backup_volume_orc_process_controlled_int16_1ch(OrcExecutor * ORC_RESTRICT ex)2178 _backup_volume_orc_process_controlled_int16_1ch (OrcExecutor * ORC_RESTRICT ex)
2179 {
2180   int i;
2181   int n = ex->n;
2182   orc_union16 *ORC_RESTRICT ptr0;
2183   const orc_union64 *ORC_RESTRICT ptr4;
2184   orc_union16 var34;
2185   orc_union64 var35;
2186   orc_union16 var36;
2187   orc_union32 var37;
2188   orc_union32 var38;
2189   orc_union32 var39;
2190   orc_union32 var40;
2191   orc_union32 var41;
2192 
2193   ptr0 = (orc_union16 *) ex->arrays[0];
2194   ptr4 = (orc_union64 *) ex->arrays[4];
2195 
2196 
2197   for (i = 0; i < n; i++) {
2198     /* 0: loadw */
2199     var34 = ptr0[i];
2200     /* 1: convswl */
2201     var37.i = var34.i;
2202     /* 2: convlf */
2203     var38.f = var37.i;
2204     /* 3: loadq */
2205     var35 = ptr4[i];
2206     /* 4: convdf */
2207     {
2208       orc_union64 _src1;
2209       orc_union32 _dest;
2210       _src1.i = ORC_DENORMAL_DOUBLE (var35.i);
2211       _dest.f = _src1.f;
2212       var39.i = ORC_DENORMAL (_dest.i);
2213     }
2214     /* 5: mulf */
2215     {
2216       orc_union32 _src1;
2217       orc_union32 _src2;
2218       orc_union32 _dest1;
2219       _src1.i = ORC_DENORMAL (var38.i);
2220       _src2.i = ORC_DENORMAL (var39.i);
2221       _dest1.f = _src1.f * _src2.f;
2222       var40.i = ORC_DENORMAL (_dest1.i);
2223     }
2224     /* 6: convfl */
2225     {
2226       int tmp;
2227       tmp = (int) var40.f;
2228       if (tmp == 0x80000000 && !(var40.i & 0x80000000))
2229         tmp = 0x7fffffff;
2230       var41.i = tmp;
2231     }
2232     /* 7: convssslw */
2233     var36.i = ORC_CLAMP_SW (var41.i);
2234     /* 8: storew */
2235     ptr0[i] = var36;
2236   }
2237 
2238 }
2239 
2240 void
volume_orc_process_controlled_int16_1ch(gint16 * ORC_RESTRICT d1,const gdouble * ORC_RESTRICT s1,int n)2241 volume_orc_process_controlled_int16_1ch (gint16 * ORC_RESTRICT d1,
2242     const gdouble * ORC_RESTRICT s1, int n)
2243 {
2244   OrcExecutor _ex, *ex = &_ex;
2245   static volatile int p_inited = 0;
2246   static OrcCode *c = 0;
2247   void (*func) (OrcExecutor *);
2248 
2249   if (!p_inited) {
2250     orc_once_mutex_lock ();
2251     if (!p_inited) {
2252       OrcProgram *p;
2253 
2254 #if 1
2255       static const orc_uint8 bc[] = {
2256         1, 9, 39, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114,
2257         111, 99, 101, 115, 115, 95, 99, 111, 110, 116, 114, 111, 108, 108, 101,
2258             100,
2259         95, 105, 110, 116, 49, 54, 95, 49, 99, 104, 11, 2, 2, 12, 8, 8,
2260         20, 4, 20, 4, 153, 32, 0, 211, 32, 32, 225, 33, 4, 202, 32, 32,
2261         33, 210, 32, 32, 165, 0, 32, 2, 0,
2262       };
2263       p = orc_program_new_from_static_bytecode (bc);
2264       orc_program_set_backup_function (p,
2265           _backup_volume_orc_process_controlled_int16_1ch);
2266 #else
2267       p = orc_program_new ();
2268       orc_program_set_name (p, "volume_orc_process_controlled_int16_1ch");
2269       orc_program_set_backup_function (p,
2270           _backup_volume_orc_process_controlled_int16_1ch);
2271       orc_program_add_destination (p, 2, "d1");
2272       orc_program_add_source (p, 8, "s1");
2273       orc_program_add_temporary (p, 4, "t1");
2274       orc_program_add_temporary (p, 4, "t2");
2275 
2276       orc_program_append_2 (p, "convswl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1,
2277           ORC_VAR_D1);
2278       orc_program_append_2 (p, "convlf", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1,
2279           ORC_VAR_D1);
2280       orc_program_append_2 (p, "convdf", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1,
2281           ORC_VAR_D1);
2282       orc_program_append_2 (p, "mulf", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
2283           ORC_VAR_D1);
2284       orc_program_append_2 (p, "convfl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1,
2285           ORC_VAR_D1);
2286       orc_program_append_2 (p, "convssslw", 0, ORC_VAR_D1, ORC_VAR_T1,
2287           ORC_VAR_D1, ORC_VAR_D1);
2288 #endif
2289 
2290       orc_program_compile (p);
2291       c = orc_program_take_code (p);
2292       orc_program_free (p);
2293     }
2294     p_inited = TRUE;
2295     orc_once_mutex_unlock ();
2296   }
2297   ex->arrays[ORC_VAR_A2] = c;
2298   ex->program = 0;
2299 
2300   ex->n = n;
2301   ex->arrays[ORC_VAR_D1] = d1;
2302   ex->arrays[ORC_VAR_S1] = (void *) s1;
2303 
2304   func = c->exec;
2305   func (ex);
2306 }
2307 #endif
2308 
2309 
2310 /* volume_orc_process_controlled_int16_2ch */
2311 #ifdef DISABLE_ORC
2312 void
volume_orc_process_controlled_int16_2ch(gint16 * ORC_RESTRICT d1,const gdouble * ORC_RESTRICT s1,int n)2313 volume_orc_process_controlled_int16_2ch (gint16 * ORC_RESTRICT d1,
2314     const gdouble * ORC_RESTRICT s1, int n)
2315 {
2316   int i;
2317   orc_union32 *ORC_RESTRICT ptr0;
2318   const orc_union64 *ORC_RESTRICT ptr4;
2319   orc_union32 var35;
2320   orc_union64 var36;
2321   orc_union32 var37;
2322   orc_union64 var38;
2323   orc_union64 var39;
2324   orc_union32 var40;
2325   orc_union64 var41;
2326   orc_union64 var42;
2327   orc_union64 var43;
2328 
2329   ptr0 = (orc_union32 *) d1;
2330   ptr4 = (orc_union64 *) s1;
2331 
2332 
2333   for (i = 0; i < n; i++) {
2334     /* 0: loadl */
2335     var35 = ptr0[i];
2336     /* 1: convswl */
2337     var38.x2[0] = var35.x2[0];
2338     var38.x2[1] = var35.x2[1];
2339     /* 2: convlf */
2340     var39.x2f[0] = var38.x2[0];
2341     var39.x2f[1] = var38.x2[1];
2342     /* 3: loadq */
2343     var36 = ptr4[i];
2344     /* 4: convdf */
2345     {
2346       orc_union64 _src1;
2347       orc_union32 _dest;
2348       _src1.i = ORC_DENORMAL_DOUBLE (var36.i);
2349       _dest.f = _src1.f;
2350       var40.i = ORC_DENORMAL (_dest.i);
2351     }
2352     /* 5: mergelq */
2353     {
2354       orc_union64 _dest;
2355       _dest.x2[0] = var40.i;
2356       _dest.x2[1] = var40.i;
2357       var41.i = _dest.i;
2358     }
2359     /* 6: mulf */
2360     {
2361       orc_union32 _src1;
2362       orc_union32 _src2;
2363       orc_union32 _dest1;
2364       _src1.i = ORC_DENORMAL (var41.x2[0]);
2365       _src2.i = ORC_DENORMAL (var39.x2[0]);
2366       _dest1.f = _src1.f * _src2.f;
2367       var42.x2[0] = ORC_DENORMAL (_dest1.i);
2368     }
2369     {
2370       orc_union32 _src1;
2371       orc_union32 _src2;
2372       orc_union32 _dest1;
2373       _src1.i = ORC_DENORMAL (var41.x2[1]);
2374       _src2.i = ORC_DENORMAL (var39.x2[1]);
2375       _dest1.f = _src1.f * _src2.f;
2376       var42.x2[1] = ORC_DENORMAL (_dest1.i);
2377     }
2378     /* 7: convfl */
2379     {
2380       int tmp;
2381       tmp = (int) var42.x2f[0];
2382       if (tmp == 0x80000000 && !(var42.x2[0] & 0x80000000))
2383         tmp = 0x7fffffff;
2384       var43.x2[0] = tmp;
2385     }
2386     {
2387       int tmp;
2388       tmp = (int) var42.x2f[1];
2389       if (tmp == 0x80000000 && !(var42.x2[1] & 0x80000000))
2390         tmp = 0x7fffffff;
2391       var43.x2[1] = tmp;
2392     }
2393     /* 8: convssslw */
2394     var37.x2[0] = ORC_CLAMP_SW (var43.x2[0]);
2395     var37.x2[1] = ORC_CLAMP_SW (var43.x2[1]);
2396     /* 9: storel */
2397     ptr0[i] = var37;
2398   }
2399 
2400 }
2401 
2402 #else
2403 static void
_backup_volume_orc_process_controlled_int16_2ch(OrcExecutor * ORC_RESTRICT ex)2404 _backup_volume_orc_process_controlled_int16_2ch (OrcExecutor * ORC_RESTRICT ex)
2405 {
2406   int i;
2407   int n = ex->n;
2408   orc_union32 *ORC_RESTRICT ptr0;
2409   const orc_union64 *ORC_RESTRICT ptr4;
2410   orc_union32 var35;
2411   orc_union64 var36;
2412   orc_union32 var37;
2413   orc_union64 var38;
2414   orc_union64 var39;
2415   orc_union32 var40;
2416   orc_union64 var41;
2417   orc_union64 var42;
2418   orc_union64 var43;
2419 
2420   ptr0 = (orc_union32 *) ex->arrays[0];
2421   ptr4 = (orc_union64 *) ex->arrays[4];
2422 
2423 
2424   for (i = 0; i < n; i++) {
2425     /* 0: loadl */
2426     var35 = ptr0[i];
2427     /* 1: convswl */
2428     var38.x2[0] = var35.x2[0];
2429     var38.x2[1] = var35.x2[1];
2430     /* 2: convlf */
2431     var39.x2f[0] = var38.x2[0];
2432     var39.x2f[1] = var38.x2[1];
2433     /* 3: loadq */
2434     var36 = ptr4[i];
2435     /* 4: convdf */
2436     {
2437       orc_union64 _src1;
2438       orc_union32 _dest;
2439       _src1.i = ORC_DENORMAL_DOUBLE (var36.i);
2440       _dest.f = _src1.f;
2441       var40.i = ORC_DENORMAL (_dest.i);
2442     }
2443     /* 5: mergelq */
2444     {
2445       orc_union64 _dest;
2446       _dest.x2[0] = var40.i;
2447       _dest.x2[1] = var40.i;
2448       var41.i = _dest.i;
2449     }
2450     /* 6: mulf */
2451     {
2452       orc_union32 _src1;
2453       orc_union32 _src2;
2454       orc_union32 _dest1;
2455       _src1.i = ORC_DENORMAL (var41.x2[0]);
2456       _src2.i = ORC_DENORMAL (var39.x2[0]);
2457       _dest1.f = _src1.f * _src2.f;
2458       var42.x2[0] = ORC_DENORMAL (_dest1.i);
2459     }
2460     {
2461       orc_union32 _src1;
2462       orc_union32 _src2;
2463       orc_union32 _dest1;
2464       _src1.i = ORC_DENORMAL (var41.x2[1]);
2465       _src2.i = ORC_DENORMAL (var39.x2[1]);
2466       _dest1.f = _src1.f * _src2.f;
2467       var42.x2[1] = ORC_DENORMAL (_dest1.i);
2468     }
2469     /* 7: convfl */
2470     {
2471       int tmp;
2472       tmp = (int) var42.x2f[0];
2473       if (tmp == 0x80000000 && !(var42.x2[0] & 0x80000000))
2474         tmp = 0x7fffffff;
2475       var43.x2[0] = tmp;
2476     }
2477     {
2478       int tmp;
2479       tmp = (int) var42.x2f[1];
2480       if (tmp == 0x80000000 && !(var42.x2[1] & 0x80000000))
2481         tmp = 0x7fffffff;
2482       var43.x2[1] = tmp;
2483     }
2484     /* 8: convssslw */
2485     var37.x2[0] = ORC_CLAMP_SW (var43.x2[0]);
2486     var37.x2[1] = ORC_CLAMP_SW (var43.x2[1]);
2487     /* 9: storel */
2488     ptr0[i] = var37;
2489   }
2490 
2491 }
2492 
2493 void
volume_orc_process_controlled_int16_2ch(gint16 * ORC_RESTRICT d1,const gdouble * ORC_RESTRICT s1,int n)2494 volume_orc_process_controlled_int16_2ch (gint16 * ORC_RESTRICT d1,
2495     const gdouble * ORC_RESTRICT s1, int n)
2496 {
2497   OrcExecutor _ex, *ex = &_ex;
2498   static volatile int p_inited = 0;
2499   static OrcCode *c = 0;
2500   void (*func) (OrcExecutor *);
2501 
2502   if (!p_inited) {
2503     orc_once_mutex_lock ();
2504     if (!p_inited) {
2505       OrcProgram *p;
2506 
2507 #if 1
2508       static const orc_uint8 bc[] = {
2509         1, 9, 39, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114,
2510         111, 99, 101, 115, 115, 95, 99, 111, 110, 116, 114, 111, 108, 108, 101,
2511             100,
2512         95, 105, 110, 116, 49, 54, 95, 50, 99, 104, 11, 4, 4, 12, 8, 8,
2513         20, 8, 20, 4, 20, 8, 21, 1, 153, 32, 0, 21, 1, 211, 32, 32,
2514         225, 33, 4, 194, 34, 33, 33, 21, 1, 202, 34, 34, 32, 21, 1, 210,
2515         34, 34, 21, 1, 165, 0, 34, 2, 0,
2516       };
2517       p = orc_program_new_from_static_bytecode (bc);
2518       orc_program_set_backup_function (p,
2519           _backup_volume_orc_process_controlled_int16_2ch);
2520 #else
2521       p = orc_program_new ();
2522       orc_program_set_name (p, "volume_orc_process_controlled_int16_2ch");
2523       orc_program_set_backup_function (p,
2524           _backup_volume_orc_process_controlled_int16_2ch);
2525       orc_program_add_destination (p, 4, "d1");
2526       orc_program_add_source (p, 8, "s1");
2527       orc_program_add_temporary (p, 8, "t1");
2528       orc_program_add_temporary (p, 4, "t2");
2529       orc_program_add_temporary (p, 8, "t3");
2530 
2531       orc_program_append_2 (p, "convswl", 1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1,
2532           ORC_VAR_D1);
2533       orc_program_append_2 (p, "convlf", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_D1,
2534           ORC_VAR_D1);
2535       orc_program_append_2 (p, "convdf", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1,
2536           ORC_VAR_D1);
2537       orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_T2,
2538           ORC_VAR_D1);
2539       orc_program_append_2 (p, "mulf", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T1,
2540           ORC_VAR_D1);
2541       orc_program_append_2 (p, "convfl", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_D1,
2542           ORC_VAR_D1);
2543       orc_program_append_2 (p, "convssslw", 1, ORC_VAR_D1, ORC_VAR_T3,
2544           ORC_VAR_D1, ORC_VAR_D1);
2545 #endif
2546 
2547       orc_program_compile (p);
2548       c = orc_program_take_code (p);
2549       orc_program_free (p);
2550     }
2551     p_inited = TRUE;
2552     orc_once_mutex_unlock ();
2553   }
2554   ex->arrays[ORC_VAR_A2] = c;
2555   ex->program = 0;
2556 
2557   ex->n = n;
2558   ex->arrays[ORC_VAR_D1] = d1;
2559   ex->arrays[ORC_VAR_S1] = (void *) s1;
2560 
2561   func = c->exec;
2562   func (ex);
2563 }
2564 #endif
2565 
2566 
2567 /* volume_orc_process_controlled_int8_1ch */
2568 #ifdef DISABLE_ORC
2569 void
volume_orc_process_controlled_int8_1ch(gint8 * ORC_RESTRICT d1,const gdouble * ORC_RESTRICT s1,int n)2570 volume_orc_process_controlled_int8_1ch (gint8 * ORC_RESTRICT d1,
2571     const gdouble * ORC_RESTRICT s1, int n)
2572 {
2573   int i;
2574   orc_int8 *ORC_RESTRICT ptr0;
2575   const orc_union64 *ORC_RESTRICT ptr4;
2576   orc_int8 var35;
2577   orc_union64 var36;
2578   orc_int8 var37;
2579   orc_union16 var38;
2580   orc_union32 var39;
2581   orc_union32 var40;
2582   orc_union32 var41;
2583   orc_union32 var42;
2584   orc_union32 var43;
2585   orc_union16 var44;
2586 
2587   ptr0 = (orc_int8 *) d1;
2588   ptr4 = (orc_union64 *) s1;
2589 
2590 
2591   for (i = 0; i < n; i++) {
2592     /* 0: loadb */
2593     var35 = ptr0[i];
2594     /* 1: convsbw */
2595     var38.i = var35;
2596     /* 2: convswl */
2597     var39.i = var38.i;
2598     /* 3: convlf */
2599     var40.f = var39.i;
2600     /* 4: loadq */
2601     var36 = ptr4[i];
2602     /* 5: convdf */
2603     {
2604       orc_union64 _src1;
2605       orc_union32 _dest;
2606       _src1.i = ORC_DENORMAL_DOUBLE (var36.i);
2607       _dest.f = _src1.f;
2608       var41.i = ORC_DENORMAL (_dest.i);
2609     }
2610     /* 6: mulf */
2611     {
2612       orc_union32 _src1;
2613       orc_union32 _src2;
2614       orc_union32 _dest1;
2615       _src1.i = ORC_DENORMAL (var40.i);
2616       _src2.i = ORC_DENORMAL (var41.i);
2617       _dest1.f = _src1.f * _src2.f;
2618       var42.i = ORC_DENORMAL (_dest1.i);
2619     }
2620     /* 7: convfl */
2621     {
2622       int tmp;
2623       tmp = (int) var42.f;
2624       if (tmp == 0x80000000 && !(var42.i & 0x80000000))
2625         tmp = 0x7fffffff;
2626       var43.i = tmp;
2627     }
2628     /* 8: convlw */
2629     var44.i = var43.i;
2630     /* 9: convssswb */
2631     var37 = ORC_CLAMP_SB (var44.i);
2632     /* 10: storeb */
2633     ptr0[i] = var37;
2634   }
2635 
2636 }
2637 
2638 #else
2639 static void
_backup_volume_orc_process_controlled_int8_1ch(OrcExecutor * ORC_RESTRICT ex)2640 _backup_volume_orc_process_controlled_int8_1ch (OrcExecutor * ORC_RESTRICT ex)
2641 {
2642   int i;
2643   int n = ex->n;
2644   orc_int8 *ORC_RESTRICT ptr0;
2645   const orc_union64 *ORC_RESTRICT ptr4;
2646   orc_int8 var35;
2647   orc_union64 var36;
2648   orc_int8 var37;
2649   orc_union16 var38;
2650   orc_union32 var39;
2651   orc_union32 var40;
2652   orc_union32 var41;
2653   orc_union32 var42;
2654   orc_union32 var43;
2655   orc_union16 var44;
2656 
2657   ptr0 = (orc_int8 *) ex->arrays[0];
2658   ptr4 = (orc_union64 *) ex->arrays[4];
2659 
2660 
2661   for (i = 0; i < n; i++) {
2662     /* 0: loadb */
2663     var35 = ptr0[i];
2664     /* 1: convsbw */
2665     var38.i = var35;
2666     /* 2: convswl */
2667     var39.i = var38.i;
2668     /* 3: convlf */
2669     var40.f = var39.i;
2670     /* 4: loadq */
2671     var36 = ptr4[i];
2672     /* 5: convdf */
2673     {
2674       orc_union64 _src1;
2675       orc_union32 _dest;
2676       _src1.i = ORC_DENORMAL_DOUBLE (var36.i);
2677       _dest.f = _src1.f;
2678       var41.i = ORC_DENORMAL (_dest.i);
2679     }
2680     /* 6: mulf */
2681     {
2682       orc_union32 _src1;
2683       orc_union32 _src2;
2684       orc_union32 _dest1;
2685       _src1.i = ORC_DENORMAL (var40.i);
2686       _src2.i = ORC_DENORMAL (var41.i);
2687       _dest1.f = _src1.f * _src2.f;
2688       var42.i = ORC_DENORMAL (_dest1.i);
2689     }
2690     /* 7: convfl */
2691     {
2692       int tmp;
2693       tmp = (int) var42.f;
2694       if (tmp == 0x80000000 && !(var42.i & 0x80000000))
2695         tmp = 0x7fffffff;
2696       var43.i = tmp;
2697     }
2698     /* 8: convlw */
2699     var44.i = var43.i;
2700     /* 9: convssswb */
2701     var37 = ORC_CLAMP_SB (var44.i);
2702     /* 10: storeb */
2703     ptr0[i] = var37;
2704   }
2705 
2706 }
2707 
2708 void
volume_orc_process_controlled_int8_1ch(gint8 * ORC_RESTRICT d1,const gdouble * ORC_RESTRICT s1,int n)2709 volume_orc_process_controlled_int8_1ch (gint8 * ORC_RESTRICT d1,
2710     const gdouble * ORC_RESTRICT s1, int n)
2711 {
2712   OrcExecutor _ex, *ex = &_ex;
2713   static volatile int p_inited = 0;
2714   static OrcCode *c = 0;
2715   void (*func) (OrcExecutor *);
2716 
2717   if (!p_inited) {
2718     orc_once_mutex_lock ();
2719     if (!p_inited) {
2720       OrcProgram *p;
2721 
2722 #if 1
2723       static const orc_uint8 bc[] = {
2724         1, 9, 38, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114,
2725         111, 99, 101, 115, 115, 95, 99, 111, 110, 116, 114, 111, 108, 108, 101,
2726             100,
2727         95, 105, 110, 116, 56, 95, 49, 99, 104, 11, 1, 1, 12, 8, 8, 20,
2728         2, 20, 4, 20, 4, 149, 32, 0, 153, 33, 32, 211, 33, 33, 225, 34,
2729         4, 202, 33, 33, 34, 210, 33, 33, 163, 32, 33, 159, 0, 32, 2, 0,
2730 
2731       };
2732       p = orc_program_new_from_static_bytecode (bc);
2733       orc_program_set_backup_function (p,
2734           _backup_volume_orc_process_controlled_int8_1ch);
2735 #else
2736       p = orc_program_new ();
2737       orc_program_set_name (p, "volume_orc_process_controlled_int8_1ch");
2738       orc_program_set_backup_function (p,
2739           _backup_volume_orc_process_controlled_int8_1ch);
2740       orc_program_add_destination (p, 1, "d1");
2741       orc_program_add_source (p, 8, "s1");
2742       orc_program_add_temporary (p, 2, "t1");
2743       orc_program_add_temporary (p, 4, "t2");
2744       orc_program_add_temporary (p, 4, "t3");
2745 
2746       orc_program_append_2 (p, "convsbw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1,
2747           ORC_VAR_D1);
2748       orc_program_append_2 (p, "convswl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1,
2749           ORC_VAR_D1);
2750       orc_program_append_2 (p, "convlf", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1,
2751           ORC_VAR_D1);
2752       orc_program_append_2 (p, "convdf", 0, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_D1,
2753           ORC_VAR_D1);
2754       orc_program_append_2 (p, "mulf", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3,
2755           ORC_VAR_D1);
2756       orc_program_append_2 (p, "convfl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1,
2757           ORC_VAR_D1);
2758       orc_program_append_2 (p, "convlw", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1,
2759           ORC_VAR_D1);
2760       orc_program_append_2 (p, "convssswb", 0, ORC_VAR_D1, ORC_VAR_T1,
2761           ORC_VAR_D1, ORC_VAR_D1);
2762 #endif
2763 
2764       orc_program_compile (p);
2765       c = orc_program_take_code (p);
2766       orc_program_free (p);
2767     }
2768     p_inited = TRUE;
2769     orc_once_mutex_unlock ();
2770   }
2771   ex->arrays[ORC_VAR_A2] = c;
2772   ex->program = 0;
2773 
2774   ex->n = n;
2775   ex->arrays[ORC_VAR_D1] = d1;
2776   ex->arrays[ORC_VAR_S1] = (void *) s1;
2777 
2778   func = c->exec;
2779   func (ex);
2780 }
2781 #endif
2782 
2783 
2784 /* volume_orc_process_controlled_int8_2ch */
2785 #ifdef DISABLE_ORC
2786 void
volume_orc_process_controlled_int8_2ch(gint8 * ORC_RESTRICT d1,const gdouble * ORC_RESTRICT s1,int n)2787 volume_orc_process_controlled_int8_2ch (gint8 * ORC_RESTRICT d1,
2788     const gdouble * ORC_RESTRICT s1, int n)
2789 {
2790   int i;
2791   orc_union16 *ORC_RESTRICT ptr0;
2792   const orc_union64 *ORC_RESTRICT ptr4;
2793   orc_union16 var35;
2794   orc_union64 var36;
2795   orc_union16 var37;
2796   orc_union32 var38;
2797   orc_union64 var39;
2798   orc_union64 var40;
2799   orc_union32 var41;
2800   orc_union64 var42;
2801   orc_union64 var43;
2802   orc_union64 var44;
2803   orc_union32 var45;
2804 
2805   ptr0 = (orc_union16 *) d1;
2806   ptr4 = (orc_union64 *) s1;
2807 
2808 
2809   for (i = 0; i < n; i++) {
2810     /* 0: loadw */
2811     var35 = ptr0[i];
2812     /* 1: convsbw */
2813     var38.x2[0] = var35.x2[0];
2814     var38.x2[1] = var35.x2[1];
2815     /* 2: convswl */
2816     var39.x2[0] = var38.x2[0];
2817     var39.x2[1] = var38.x2[1];
2818     /* 3: convlf */
2819     var40.x2f[0] = var39.x2[0];
2820     var40.x2f[1] = var39.x2[1];
2821     /* 4: loadq */
2822     var36 = ptr4[i];
2823     /* 5: convdf */
2824     {
2825       orc_union64 _src1;
2826       orc_union32 _dest;
2827       _src1.i = ORC_DENORMAL_DOUBLE (var36.i);
2828       _dest.f = _src1.f;
2829       var41.i = ORC_DENORMAL (_dest.i);
2830     }
2831     /* 6: mergelq */
2832     {
2833       orc_union64 _dest;
2834       _dest.x2[0] = var41.i;
2835       _dest.x2[1] = var41.i;
2836       var42.i = _dest.i;
2837     }
2838     /* 7: mulf */
2839     {
2840       orc_union32 _src1;
2841       orc_union32 _src2;
2842       orc_union32 _dest1;
2843       _src1.i = ORC_DENORMAL (var40.x2[0]);
2844       _src2.i = ORC_DENORMAL (var42.x2[0]);
2845       _dest1.f = _src1.f * _src2.f;
2846       var43.x2[0] = ORC_DENORMAL (_dest1.i);
2847     }
2848     {
2849       orc_union32 _src1;
2850       orc_union32 _src2;
2851       orc_union32 _dest1;
2852       _src1.i = ORC_DENORMAL (var40.x2[1]);
2853       _src2.i = ORC_DENORMAL (var42.x2[1]);
2854       _dest1.f = _src1.f * _src2.f;
2855       var43.x2[1] = ORC_DENORMAL (_dest1.i);
2856     }
2857     /* 8: convfl */
2858     {
2859       int tmp;
2860       tmp = (int) var43.x2f[0];
2861       if (tmp == 0x80000000 && !(var43.x2[0] & 0x80000000))
2862         tmp = 0x7fffffff;
2863       var44.x2[0] = tmp;
2864     }
2865     {
2866       int tmp;
2867       tmp = (int) var43.x2f[1];
2868       if (tmp == 0x80000000 && !(var43.x2[1] & 0x80000000))
2869         tmp = 0x7fffffff;
2870       var44.x2[1] = tmp;
2871     }
2872     /* 9: convlw */
2873     var45.x2[0] = var44.x2[0];
2874     var45.x2[1] = var44.x2[1];
2875     /* 10: convssswb */
2876     var37.x2[0] = ORC_CLAMP_SB (var45.x2[0]);
2877     var37.x2[1] = ORC_CLAMP_SB (var45.x2[1]);
2878     /* 11: storew */
2879     ptr0[i] = var37;
2880   }
2881 
2882 }
2883 
2884 #else
2885 static void
_backup_volume_orc_process_controlled_int8_2ch(OrcExecutor * ORC_RESTRICT ex)2886 _backup_volume_orc_process_controlled_int8_2ch (OrcExecutor * ORC_RESTRICT ex)
2887 {
2888   int i;
2889   int n = ex->n;
2890   orc_union16 *ORC_RESTRICT ptr0;
2891   const orc_union64 *ORC_RESTRICT ptr4;
2892   orc_union16 var35;
2893   orc_union64 var36;
2894   orc_union16 var37;
2895   orc_union32 var38;
2896   orc_union64 var39;
2897   orc_union64 var40;
2898   orc_union32 var41;
2899   orc_union64 var42;
2900   orc_union64 var43;
2901   orc_union64 var44;
2902   orc_union32 var45;
2903 
2904   ptr0 = (orc_union16 *) ex->arrays[0];
2905   ptr4 = (orc_union64 *) ex->arrays[4];
2906 
2907 
2908   for (i = 0; i < n; i++) {
2909     /* 0: loadw */
2910     var35 = ptr0[i];
2911     /* 1: convsbw */
2912     var38.x2[0] = var35.x2[0];
2913     var38.x2[1] = var35.x2[1];
2914     /* 2: convswl */
2915     var39.x2[0] = var38.x2[0];
2916     var39.x2[1] = var38.x2[1];
2917     /* 3: convlf */
2918     var40.x2f[0] = var39.x2[0];
2919     var40.x2f[1] = var39.x2[1];
2920     /* 4: loadq */
2921     var36 = ptr4[i];
2922     /* 5: convdf */
2923     {
2924       orc_union64 _src1;
2925       orc_union32 _dest;
2926       _src1.i = ORC_DENORMAL_DOUBLE (var36.i);
2927       _dest.f = _src1.f;
2928       var41.i = ORC_DENORMAL (_dest.i);
2929     }
2930     /* 6: mergelq */
2931     {
2932       orc_union64 _dest;
2933       _dest.x2[0] = var41.i;
2934       _dest.x2[1] = var41.i;
2935       var42.i = _dest.i;
2936     }
2937     /* 7: mulf */
2938     {
2939       orc_union32 _src1;
2940       orc_union32 _src2;
2941       orc_union32 _dest1;
2942       _src1.i = ORC_DENORMAL (var40.x2[0]);
2943       _src2.i = ORC_DENORMAL (var42.x2[0]);
2944       _dest1.f = _src1.f * _src2.f;
2945       var43.x2[0] = ORC_DENORMAL (_dest1.i);
2946     }
2947     {
2948       orc_union32 _src1;
2949       orc_union32 _src2;
2950       orc_union32 _dest1;
2951       _src1.i = ORC_DENORMAL (var40.x2[1]);
2952       _src2.i = ORC_DENORMAL (var42.x2[1]);
2953       _dest1.f = _src1.f * _src2.f;
2954       var43.x2[1] = ORC_DENORMAL (_dest1.i);
2955     }
2956     /* 8: convfl */
2957     {
2958       int tmp;
2959       tmp = (int) var43.x2f[0];
2960       if (tmp == 0x80000000 && !(var43.x2[0] & 0x80000000))
2961         tmp = 0x7fffffff;
2962       var44.x2[0] = tmp;
2963     }
2964     {
2965       int tmp;
2966       tmp = (int) var43.x2f[1];
2967       if (tmp == 0x80000000 && !(var43.x2[1] & 0x80000000))
2968         tmp = 0x7fffffff;
2969       var44.x2[1] = tmp;
2970     }
2971     /* 9: convlw */
2972     var45.x2[0] = var44.x2[0];
2973     var45.x2[1] = var44.x2[1];
2974     /* 10: convssswb */
2975     var37.x2[0] = ORC_CLAMP_SB (var45.x2[0]);
2976     var37.x2[1] = ORC_CLAMP_SB (var45.x2[1]);
2977     /* 11: storew */
2978     ptr0[i] = var37;
2979   }
2980 
2981 }
2982 
2983 void
volume_orc_process_controlled_int8_2ch(gint8 * ORC_RESTRICT d1,const gdouble * ORC_RESTRICT s1,int n)2984 volume_orc_process_controlled_int8_2ch (gint8 * ORC_RESTRICT d1,
2985     const gdouble * ORC_RESTRICT s1, int n)
2986 {
2987   OrcExecutor _ex, *ex = &_ex;
2988   static volatile int p_inited = 0;
2989   static OrcCode *c = 0;
2990   void (*func) (OrcExecutor *);
2991 
2992   if (!p_inited) {
2993     orc_once_mutex_lock ();
2994     if (!p_inited) {
2995       OrcProgram *p;
2996 
2997 #if 1
2998       static const orc_uint8 bc[] = {
2999         1, 9, 38, 118, 111, 108, 117, 109, 101, 95, 111, 114, 99, 95, 112, 114,
3000         111, 99, 101, 115, 115, 95, 99, 111, 110, 116, 114, 111, 108, 108, 101,
3001             100,
3002         95, 105, 110, 116, 56, 95, 50, 99, 104, 11, 2, 2, 12, 8, 8, 20,
3003         4, 20, 8, 20, 8, 21, 1, 149, 32, 0, 21, 1, 153, 33, 32, 21,
3004         1, 211, 33, 33, 225, 32, 4, 194, 34, 32, 32, 21, 1, 202, 33, 33,
3005         34, 21, 1, 210, 33, 33, 21, 1, 163, 32, 33, 21, 1, 159, 0, 32,
3006         2, 0,
3007       };
3008       p = orc_program_new_from_static_bytecode (bc);
3009       orc_program_set_backup_function (p,
3010           _backup_volume_orc_process_controlled_int8_2ch);
3011 #else
3012       p = orc_program_new ();
3013       orc_program_set_name (p, "volume_orc_process_controlled_int8_2ch");
3014       orc_program_set_backup_function (p,
3015           _backup_volume_orc_process_controlled_int8_2ch);
3016       orc_program_add_destination (p, 2, "d1");
3017       orc_program_add_source (p, 8, "s1");
3018       orc_program_add_temporary (p, 4, "t1");
3019       orc_program_add_temporary (p, 8, "t2");
3020       orc_program_add_temporary (p, 8, "t3");
3021 
3022       orc_program_append_2 (p, "convsbw", 1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1,
3023           ORC_VAR_D1);
3024       orc_program_append_2 (p, "convswl", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1,
3025           ORC_VAR_D1);
3026       orc_program_append_2 (p, "convlf", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1,
3027           ORC_VAR_D1);
3028       orc_program_append_2 (p, "convdf", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
3029           ORC_VAR_D1);
3030       orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1,
3031           ORC_VAR_D1);
3032       orc_program_append_2 (p, "mulf", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3,
3033           ORC_VAR_D1);
3034       orc_program_append_2 (p, "convfl", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1,
3035           ORC_VAR_D1);
3036       orc_program_append_2 (p, "convlw", 1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1,
3037           ORC_VAR_D1);
3038       orc_program_append_2 (p, "convssswb", 1, ORC_VAR_D1, ORC_VAR_T1,
3039           ORC_VAR_D1, ORC_VAR_D1);
3040 #endif
3041 
3042       orc_program_compile (p);
3043       c = orc_program_take_code (p);
3044       orc_program_free (p);
3045     }
3046     p_inited = TRUE;
3047     orc_once_mutex_unlock ();
3048   }
3049   ex->arrays[ORC_VAR_A2] = c;
3050   ex->program = 0;
3051 
3052   ex->n = n;
3053   ex->arrays[ORC_VAR_D1] = d1;
3054   ex->arrays[ORC_VAR_S1] = (void *) s1;
3055 
3056   func = c->exec;
3057   func (ex);
3058 }
3059 #endif
3060