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