diff --git a/gst/adder/gstadderorc-dist.c b/gst/adder/gstadderorc-dist.c index c356373ec4..6193c0f848 100644 --- a/gst/adder/gstadderorc-dist.c +++ b/gst/adder/gstadderorc-dist.c @@ -47,14 +47,23 @@ typedef unsigned long orc_uint64; #endif #endif typedef union +{ + orc_int16 i; + orc_int8 x2[2]; +} orc_union16; +typedef union { orc_int32 i; float f; + orc_int16 x2[2]; + orc_int8 x4[4]; } orc_union32; typedef union { orc_int64 i; double f; + orc_int32 x2[2]; + orc_int16 x4[4]; } orc_union64; #endif @@ -66,6 +75,8 @@ void add_uint16 (guint16 * d1, const guint16 * s1, int n); void add_uint8 (guint8 * d1, const guint8 * s1, int n); void add_float32 (float *d1, const float *s1, int n); +void gst_adder_orc_init (void); + /* begin Orc C target preamble */ #define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x))) @@ -92,7 +103,19 @@ void add_float32 (float *d1, const float *s1, int n); #define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX) #define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8)) #define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24)) +#define ORC_SWAP_Q(x) ((((x)&0xffULL)<<56) | (((x)&0xff00ULL)<<40) | (((x)&0xff0000ULL)<<24) | (((x)&0xff000000ULL)<<8) | (((x)&0xff00000000ULL)>>8) | (((x)&0xff0000000000ULL)>>24) | (((x)&0xff000000000000ULL)>>40) | (((x)&0xff00000000000000ULL)>>56)) #define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset))) +#define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff)) +#define ORC_ISNAN(x) ((((x)&0x7f800000) == 0x7f800000) && (((x)&0x007fffff) != 0)) +#define ORC_DENORMAL_DOUBLE(x) ((x) & ((((x)&0x7ff0000000000000ULL) == 0) ? 0xfff0000000000000ULL : 0xffffffffffffffffULL)) +#define ORC_ISNAN_DOUBLE(x) ((((x)&0x7ff0000000000000ULL) == 0x7ff0000000000000ULL) && (((x)&0x000fffffffffffffULL) != 0)) +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +#define ORC_RESTRICT restrict +#elif defined(__GNUC__) && __GNUC__ >= 4 +#define ORC_RESTRICT __restrict__ +#else +#define ORC_RESTRICT +#endif /* end Orc C target preamble */ @@ -103,78 +126,66 @@ void add_int32 (gint32 * d1, const gint32 * s1, int n) { int i; - orc_union32 var0; - orc_union32 *ptr0; - orc_union32 var4; - const orc_union32 *ptr4; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var32; + orc_union32 var33; + orc_union32 var34; ptr0 = (orc_union32 *) d1; ptr4 = (orc_union32 *) s1; + for (i = 0; i < n; i++) { - var0 = *ptr0; - var4 = *ptr4; - ptr4++; - /* 0: addssl */ - var0.i = ORC_CLAMP_SL ((orc_int64) var0.i + (orc_int64) var4.i); - *ptr0 = var0; - ptr0++; + /* 0: loadl */ + var32 = ptr0[i]; + /* 1: loadl */ + var33 = ptr4[i]; + /* 2: addssl */ + var34.i = ORC_CLAMP_SL ((orc_int64) var32.i + (orc_int64) var33.i); + /* 3: storel */ + ptr0[i] = var34; } } #else static void -_backup_add_int32 (OrcExecutor * ex) +_backup_add_int32 (OrcExecutor * ORC_RESTRICT ex) { int i; int n = ex->n; - orc_union32 var0; - orc_union32 *ptr0; - orc_union32 var4; - const orc_union32 *ptr4; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var32; + orc_union32 var33; + orc_union32 var34; ptr0 = (orc_union32 *) ex->arrays[0]; ptr4 = (orc_union32 *) ex->arrays[4]; + for (i = 0; i < n; i++) { - var0 = *ptr0; - var4 = *ptr4; - ptr4++; - /* 0: addssl */ - var0.i = ORC_CLAMP_SL ((orc_int64) var0.i + (orc_int64) var4.i); - *ptr0 = var0; - ptr0++; + /* 0: loadl */ + var32 = ptr0[i]; + /* 1: loadl */ + var33 = ptr4[i]; + /* 2: addssl */ + var34.i = ORC_CLAMP_SL ((orc_int64) var32.i + (orc_int64) var33.i); + /* 3: storel */ + ptr0[i] = var34; } } +static OrcProgram *_orc_program_add_int32; void add_int32 (gint32 * d1, const gint32 * s1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_add_int32; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "add_int32"); - orc_program_set_backup_function (p, _backup_add_int32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - - orc_program_append (p, "addssl", ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -193,78 +204,66 @@ void add_int16 (gint16 * d1, const gint16 * s1, int n) { int i; - orc_int16 var0; - orc_int16 *ptr0; - orc_int16 var4; - const orc_int16 *ptr4; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + orc_union16 var32; + orc_union16 var33; + orc_union16 var34; + + ptr0 = (orc_union16 *) d1; + ptr4 = (orc_union16 *) s1; - ptr0 = (orc_int16 *) d1; - ptr4 = (orc_int16 *) s1; for (i = 0; i < n; i++) { - var0 = *ptr0; - var4 = *ptr4; - ptr4++; - /* 0: addssw */ - var0 = ORC_CLAMP_SW (var0 + var4); - *ptr0 = var0; - ptr0++; + /* 0: loadw */ + var32 = ptr0[i]; + /* 1: loadw */ + var33 = ptr4[i]; + /* 2: addssw */ + var34.i = ORC_CLAMP_SW (var32.i + var33.i); + /* 3: storew */ + ptr0[i] = var34; } } #else static void -_backup_add_int16 (OrcExecutor * ex) +_backup_add_int16 (OrcExecutor * ORC_RESTRICT ex) { int i; int n = ex->n; - orc_int16 var0; - orc_int16 *ptr0; - orc_int16 var4; - const orc_int16 *ptr4; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + orc_union16 var32; + orc_union16 var33; + orc_union16 var34; + + ptr0 = (orc_union16 *) ex->arrays[0]; + ptr4 = (orc_union16 *) ex->arrays[4]; - ptr0 = (orc_int16 *) ex->arrays[0]; - ptr4 = (orc_int16 *) ex->arrays[4]; for (i = 0; i < n; i++) { - var0 = *ptr0; - var4 = *ptr4; - ptr4++; - /* 0: addssw */ - var0 = ORC_CLAMP_SW (var0 + var4); - *ptr0 = var0; - ptr0++; + /* 0: loadw */ + var32 = ptr0[i]; + /* 1: loadw */ + var33 = ptr4[i]; + /* 2: addssw */ + var34.i = ORC_CLAMP_SW (var32.i + var33.i); + /* 3: storew */ + ptr0[i] = var34; } } +static OrcProgram *_orc_program_add_int16; void add_int16 (gint16 * d1, const gint16 * s1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_add_int16; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "add_int16"); - orc_program_set_backup_function (p, _backup_add_int16); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 2, "s1"); - - orc_program_append (p, "addssw", ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -283,78 +282,66 @@ void add_int8 (gint8 * d1, const gint8 * s1, int n) { int i; - orc_int8 var0; - orc_int8 *ptr0; - orc_int8 var4; - const orc_int8 *ptr4; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + orc_int8 var32; + orc_int8 var33; + orc_int8 var34; ptr0 = (orc_int8 *) d1; ptr4 = (orc_int8 *) s1; + for (i = 0; i < n; i++) { - var0 = *ptr0; - var4 = *ptr4; - ptr4++; - /* 0: addssb */ - var0 = ORC_CLAMP_SB (var0 + var4); - *ptr0 = var0; - ptr0++; + /* 0: loadb */ + var32 = ptr0[i]; + /* 1: loadb */ + var33 = ptr4[i]; + /* 2: addssb */ + var34 = ORC_CLAMP_SB (var32 + var33); + /* 3: storeb */ + ptr0[i] = var34; } } #else static void -_backup_add_int8 (OrcExecutor * ex) +_backup_add_int8 (OrcExecutor * ORC_RESTRICT ex) { int i; int n = ex->n; - orc_int8 var0; - orc_int8 *ptr0; - orc_int8 var4; - const orc_int8 *ptr4; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + orc_int8 var32; + orc_int8 var33; + orc_int8 var34; ptr0 = (orc_int8 *) ex->arrays[0]; ptr4 = (orc_int8 *) ex->arrays[4]; + for (i = 0; i < n; i++) { - var0 = *ptr0; - var4 = *ptr4; - ptr4++; - /* 0: addssb */ - var0 = ORC_CLAMP_SB (var0 + var4); - *ptr0 = var0; - ptr0++; + /* 0: loadb */ + var32 = ptr0[i]; + /* 1: loadb */ + var33 = ptr4[i]; + /* 2: addssb */ + var34 = ORC_CLAMP_SB (var32 + var33); + /* 3: storeb */ + ptr0[i] = var34; } } +static OrcProgram *_orc_program_add_int8; void add_int8 (gint8 * d1, const gint8 * s1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_add_int8; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "add_int8"); - orc_program_set_backup_function (p, _backup_add_int8); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 1, "s1"); - - orc_program_append (p, "addssb", ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -373,82 +360,70 @@ void add_uint32 (guint32 * d1, const guint32 * s1, int n) { int i; - orc_union32 var0; - orc_union32 *ptr0; - orc_union32 var4; - const orc_union32 *ptr4; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var32; + orc_union32 var33; + orc_union32 var34; ptr0 = (orc_union32 *) d1; ptr4 = (orc_union32 *) s1; + for (i = 0; i < n; i++) { - var0 = *ptr0; - var4 = *ptr4; - ptr4++; - /* 0: addusl */ - var0.i = - ORC_CLAMP_UL ((orc_int64) (orc_uint32) var0.i + - (orc_int64) (orc_uint32) var4.i); - *ptr0 = var0; - ptr0++; + /* 0: loadl */ + var32 = ptr0[i]; + /* 1: loadl */ + var33 = ptr4[i]; + /* 2: addusl */ + var34.i = + ORC_CLAMP_UL ((orc_int64) (orc_uint32) var32.i + + (orc_int64) (orc_uint32) var33.i); + /* 3: storel */ + ptr0[i] = var34; } } #else static void -_backup_add_uint32 (OrcExecutor * ex) +_backup_add_uint32 (OrcExecutor * ORC_RESTRICT ex) { int i; int n = ex->n; - orc_union32 var0; - orc_union32 *ptr0; - orc_union32 var4; - const orc_union32 *ptr4; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var32; + orc_union32 var33; + orc_union32 var34; ptr0 = (orc_union32 *) ex->arrays[0]; ptr4 = (orc_union32 *) ex->arrays[4]; + for (i = 0; i < n; i++) { - var0 = *ptr0; - var4 = *ptr4; - ptr4++; - /* 0: addusl */ - var0.i = - ORC_CLAMP_UL ((orc_int64) (orc_uint32) var0.i + - (orc_int64) (orc_uint32) var4.i); - *ptr0 = var0; - ptr0++; + /* 0: loadl */ + var32 = ptr0[i]; + /* 1: loadl */ + var33 = ptr4[i]; + /* 2: addusl */ + var34.i = + ORC_CLAMP_UL ((orc_int64) (orc_uint32) var32.i + + (orc_int64) (orc_uint32) var33.i); + /* 3: storel */ + ptr0[i] = var34; } } +static OrcProgram *_orc_program_add_uint32; void add_uint32 (guint32 * d1, const guint32 * s1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_add_uint32; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "add_uint32"); - orc_program_set_backup_function (p, _backup_add_uint32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - - orc_program_append (p, "addusl", ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -467,78 +442,66 @@ void add_uint16 (guint16 * d1, const guint16 * s1, int n) { int i; - orc_int16 var0; - orc_int16 *ptr0; - orc_int16 var4; - const orc_int16 *ptr4; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + orc_union16 var32; + orc_union16 var33; + orc_union16 var34; + + ptr0 = (orc_union16 *) d1; + ptr4 = (orc_union16 *) s1; - ptr0 = (orc_int16 *) d1; - ptr4 = (orc_int16 *) s1; for (i = 0; i < n; i++) { - var0 = *ptr0; - var4 = *ptr4; - ptr4++; - /* 0: addusw */ - var0 = ORC_CLAMP_UW ((orc_uint16) var0 + (orc_uint16) var4); - *ptr0 = var0; - ptr0++; + /* 0: loadw */ + var32 = ptr0[i]; + /* 1: loadw */ + var33 = ptr4[i]; + /* 2: addusw */ + var34.i = ORC_CLAMP_UW ((orc_uint16) var32.i + (orc_uint16) var33.i); + /* 3: storew */ + ptr0[i] = var34; } } #else static void -_backup_add_uint16 (OrcExecutor * ex) +_backup_add_uint16 (OrcExecutor * ORC_RESTRICT ex) { int i; int n = ex->n; - orc_int16 var0; - orc_int16 *ptr0; - orc_int16 var4; - const orc_int16 *ptr4; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + orc_union16 var32; + orc_union16 var33; + orc_union16 var34; + + ptr0 = (orc_union16 *) ex->arrays[0]; + ptr4 = (orc_union16 *) ex->arrays[4]; - ptr0 = (orc_int16 *) ex->arrays[0]; - ptr4 = (orc_int16 *) ex->arrays[4]; for (i = 0; i < n; i++) { - var0 = *ptr0; - var4 = *ptr4; - ptr4++; - /* 0: addusw */ - var0 = ORC_CLAMP_UW ((orc_uint16) var0 + (orc_uint16) var4); - *ptr0 = var0; - ptr0++; + /* 0: loadw */ + var32 = ptr0[i]; + /* 1: loadw */ + var33 = ptr4[i]; + /* 2: addusw */ + var34.i = ORC_CLAMP_UW ((orc_uint16) var32.i + (orc_uint16) var33.i); + /* 3: storew */ + ptr0[i] = var34; } } +static OrcProgram *_orc_program_add_uint16; void add_uint16 (guint16 * d1, const guint16 * s1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_add_uint16; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "add_uint16"); - orc_program_set_backup_function (p, _backup_add_uint16); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 2, "s1"); - - orc_program_append (p, "addusw", ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -557,78 +520,66 @@ void add_uint8 (guint8 * d1, const guint8 * s1, int n) { int i; - orc_int8 var0; - orc_int8 *ptr0; - orc_int8 var4; - const orc_int8 *ptr4; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + orc_int8 var32; + orc_int8 var33; + orc_int8 var34; ptr0 = (orc_int8 *) d1; ptr4 = (orc_int8 *) s1; + for (i = 0; i < n; i++) { - var0 = *ptr0; - var4 = *ptr4; - ptr4++; - /* 0: addusb */ - var0 = ORC_CLAMP_UB ((orc_uint8) var0 + (orc_uint8) var4); - *ptr0 = var0; - ptr0++; + /* 0: loadb */ + var32 = ptr0[i]; + /* 1: loadb */ + var33 = ptr4[i]; + /* 2: addusb */ + var34 = ORC_CLAMP_UB ((orc_uint8) var32 + (orc_uint8) var33); + /* 3: storeb */ + ptr0[i] = var34; } } #else static void -_backup_add_uint8 (OrcExecutor * ex) +_backup_add_uint8 (OrcExecutor * ORC_RESTRICT ex) { int i; int n = ex->n; - orc_int8 var0; - orc_int8 *ptr0; - orc_int8 var4; - const orc_int8 *ptr4; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + orc_int8 var32; + orc_int8 var33; + orc_int8 var34; ptr0 = (orc_int8 *) ex->arrays[0]; ptr4 = (orc_int8 *) ex->arrays[4]; + for (i = 0; i < n; i++) { - var0 = *ptr0; - var4 = *ptr4; - ptr4++; - /* 0: addusb */ - var0 = ORC_CLAMP_UB ((orc_uint8) var0 + (orc_uint8) var4); - *ptr0 = var0; - ptr0++; + /* 0: loadb */ + var32 = ptr0[i]; + /* 1: loadb */ + var33 = ptr4[i]; + /* 2: addusb */ + var34 = ORC_CLAMP_UB ((orc_uint8) var32 + (orc_uint8) var33); + /* 3: storeb */ + ptr0[i] = var34; } } +static OrcProgram *_orc_program_add_uint8; void add_uint8 (guint8 * d1, const guint8 * s1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_add_uint8; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "add_uint8"); - orc_program_set_backup_function (p, _backup_add_uint8); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 1, "s1"); - - orc_program_append (p, "addusb", ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -647,78 +598,82 @@ void add_float32 (float *d1, const float *s1, int n) { int i; - orc_union32 var0; - orc_union32 *ptr0; - orc_union32 var4; - const orc_union32 *ptr4; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var32; + orc_union32 var33; + orc_union32 var34; ptr0 = (orc_union32 *) d1; ptr4 = (orc_union32 *) s1; + for (i = 0; i < n; i++) { - var0 = *ptr0; - var4 = *ptr4; - ptr4++; - /* 0: addf */ - var0.f = var0.f + var4.f; - *ptr0 = var0; - ptr0++; + /* 0: loadl */ + var32 = ptr0[i]; + /* 1: loadl */ + var33 = ptr4[i]; + /* 2: addf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var32.i); + _src2.i = ORC_DENORMAL (var33.i); + _dest1.f = _src1.f + _src2.f; + var34.i = ORC_DENORMAL (_dest1.i); + } + /* 3: storel */ + ptr0[i] = var34; } } #else static void -_backup_add_float32 (OrcExecutor * ex) +_backup_add_float32 (OrcExecutor * ORC_RESTRICT ex) { int i; int n = ex->n; - orc_union32 var0; - orc_union32 *ptr0; - orc_union32 var4; - const orc_union32 *ptr4; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; + orc_union32 var32; + orc_union32 var33; + orc_union32 var34; ptr0 = (orc_union32 *) ex->arrays[0]; ptr4 = (orc_union32 *) ex->arrays[4]; + for (i = 0; i < n; i++) { - var0 = *ptr0; - var4 = *ptr4; - ptr4++; - /* 0: addf */ - var0.f = var0.f + var4.f; - *ptr0 = var0; - ptr0++; + /* 0: loadl */ + var32 = ptr0[i]; + /* 1: loadl */ + var33 = ptr4[i]; + /* 2: addf */ + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var32.i); + _src2.i = ORC_DENORMAL (var33.i); + _dest1.f = _src1.f + _src2.f; + var34.i = ORC_DENORMAL (_dest1.i); + } + /* 3: storel */ + ptr0[i] = var34; } } +static OrcProgram *_orc_program_add_float32; void add_float32 (float *d1, const float *s1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_add_float32; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "add_float32"); - orc_program_set_backup_function (p, _backup_add_float32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - - orc_program_append (p, "addf", ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -729,3 +684,193 @@ add_float32 (float *d1, const float *s1, int n) func (ex); } #endif + + +void +gst_adder_orc_init (void) +{ +#ifndef DISABLE_ORC + { + /* add_int32 */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "add_int32"); + orc_program_set_backup_function (p, _backup_add_int32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 0, 0x00000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + + orc_program_append_2 (p, "addssl", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_add_int32 = p; + } + { + /* add_int16 */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "add_int16"); + orc_program_set_backup_function (p, _backup_add_int16); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 0, 0x00000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + + orc_program_append_2 (p, "addssw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_add_int16 = p; + } + { + /* add_int8 */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "add_int8"); + orc_program_set_backup_function (p, _backup_add_int8); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_constant (p, 0, 0x00000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + + orc_program_append_2 (p, "addssb", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_add_int8 = p; + } + { + /* add_uint32 */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "add_uint32"); + orc_program_set_backup_function (p, _backup_add_uint32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 0, 0x00000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + + orc_program_append_2 (p, "addusl", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_add_uint32 = p; + } + { + /* add_uint16 */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "add_uint16"); + orc_program_set_backup_function (p, _backup_add_uint16); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 0, 0x00000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + + orc_program_append_2 (p, "addusw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_add_uint16 = p; + } + { + /* add_uint8 */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "add_uint8"); + orc_program_set_backup_function (p, _backup_add_uint8); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_constant (p, 0, 0x00000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + + orc_program_append_2 (p, "addusb", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_add_uint8 = p; + } + { + /* add_float32 */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "add_float32"); + orc_program_set_backup_function (p, _backup_add_float32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 0, 0x00000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + + orc_program_append_2 (p, "addf", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_add_float32 = p; + } +#endif +} diff --git a/gst/adder/gstadderorc-dist.h b/gst/adder/gstadderorc-dist.h index 767656c97e..97f8abfe7f 100644 --- a/gst/adder/gstadderorc-dist.h +++ b/gst/adder/gstadderorc-dist.h @@ -10,6 +10,10 @@ extern "C" { #endif +void gst_adder_orc_init (void); + + + #ifndef _ORC_INTEGER_TYPEDEFS_ #define _ORC_INTEGER_TYPEDEFS_ #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L @@ -47,10 +51,10 @@ typedef long orc_int64; typedef unsigned long orc_uint64; #endif #endif -typedef union { orc_int32 i; float f; } orc_union32; -typedef union { orc_int64 i; double f; } orc_union64; +typedef union { orc_int16 i; orc_int8 x2[2]; } orc_union16; +typedef union { orc_int32 i; float f; orc_int16 x2[2]; orc_int8 x4[4]; } orc_union32; +typedef union { orc_int64 i; double f; orc_int32 x2[2]; orc_int16 x4[4]; } orc_union64; #endif - void add_int32 (gint32 * d1, const gint32 * s1, int n); void add_int16 (gint16 * d1, const gint16 * s1, int n); void add_int8 (gint8 * d1, const gint8 * s1, int n); diff --git a/gst/audioconvert/gstaudioconvertorc-dist.c b/gst/audioconvert/gstaudioconvertorc-dist.c index 4a2612fbde..3e054ab6fa 100644 --- a/gst/audioconvert/gstaudioconvertorc-dist.c +++ b/gst/audioconvert/gstaudioconvertorc-dist.c @@ -151,6 +151,8 @@ void orc_audio_convert_pack_double_s32 (guint8 * d1, const gdouble * s1, int p1, void orc_audio_convert_pack_double_s32_swap (guint8 * d1, const gdouble * s1, int p1, int n); +void gst_audio_convert_orc_init (void); + /* begin Orc C target preamble */ #define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x))) @@ -213,7 +215,7 @@ orc_audio_convert_unpack_u8 (gint32 * d1, const guint8 * s1, int p1, int n) ptr4 = (orc_int8 *) s1; /* 4: loadpl */ - var35.i = 0x80000000; /* -2147483648 or -nanf */ + var35.i = 0x80000000; /* -2147483648 or 1.061e-314f */ for (i = 0; i < n; i++) { /* 0: loadb */ @@ -251,7 +253,7 @@ _backup_orc_audio_convert_unpack_u8 (OrcExecutor * ORC_RESTRICT ex) ptr4 = (orc_int8 *) ex->arrays[4]; /* 4: loadpl */ - var35.i = 0x80000000; /* -2147483648 or -nanf */ + var35.i = 0x80000000; /* -2147483648 or 1.061e-314f */ for (i = 0; i < n; i++) { /* 0: loadb */ @@ -270,43 +272,14 @@ _backup_orc_audio_convert_unpack_u8 (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_unpack_u8; void orc_audio_convert_unpack_u8 (gint32 * d1, const guint8 * s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_unpack_u8; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_unpack_u8"); - orc_program_set_backup_function (p, _backup_orc_audio_convert_unpack_u8); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_constant (p, 4, 0x80000000, "c1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 4, "t2"); - - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -384,40 +357,14 @@ _backup_orc_audio_convert_unpack_s8 (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_unpack_s8; void orc_audio_convert_unpack_s8 (gint32 * d1, const guint8 * s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_unpack_s8; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_unpack_s8"); - orc_program_set_backup_function (p, _backup_orc_audio_convert_unpack_s8); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 4, "t2"); - - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_P1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -449,7 +396,7 @@ orc_audio_convert_unpack_u16 (gint32 * d1, const guint8 * s1, int p1, int n) ptr4 = (orc_union16 *) s1; /* 3: loadpl */ - var34.i = 0x80000000; /* -2147483648 or -nanf */ + var34.i = 0x80000000; /* -2147483648 or 1.061e-314f */ for (i = 0; i < n; i++) { /* 0: loadw */ @@ -484,7 +431,7 @@ _backup_orc_audio_convert_unpack_u16 (OrcExecutor * ORC_RESTRICT ex) ptr4 = (orc_union16 *) ex->arrays[4]; /* 3: loadpl */ - var34.i = 0x80000000; /* -2147483648 or -nanf */ + var34.i = 0x80000000; /* -2147483648 or 1.061e-314f */ for (i = 0; i < n; i++) { /* 0: loadw */ @@ -501,40 +448,14 @@ _backup_orc_audio_convert_unpack_u16 (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_unpack_u16; void orc_audio_convert_unpack_u16 (gint32 * d1, const guint8 * s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_unpack_u16; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_unpack_u16"); - orc_program_set_backup_function (p, _backup_orc_audio_convert_unpack_u16); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_constant (p, 4, 0x80000000, "c1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 4, "t1"); - - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -606,37 +527,14 @@ _backup_orc_audio_convert_unpack_s16 (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_unpack_s16; void orc_audio_convert_unpack_s16 (gint32 * d1, const guint8 * s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_unpack_s16; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_unpack_s16"); - orc_program_set_backup_function (p, _backup_orc_audio_convert_unpack_s16); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 4, "t1"); - - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_P1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -670,7 +568,7 @@ orc_audio_convert_unpack_u16_swap (gint32 * d1, const guint8 * s1, int p1, ptr4 = (orc_union16 *) s1; /* 4: loadpl */ - var35.i = 0x80000000; /* -2147483648 or -nanf */ + var35.i = 0x80000000; /* -2147483648 or 1.061e-314f */ for (i = 0; i < n; i++) { /* 0: loadw */ @@ -708,7 +606,7 @@ _backup_orc_audio_convert_unpack_u16_swap (OrcExecutor * ORC_RESTRICT ex) ptr4 = (orc_union16 *) ex->arrays[4]; /* 4: loadpl */ - var35.i = 0x80000000; /* -2147483648 or -nanf */ + var35.i = 0x80000000; /* -2147483648 or 1.061e-314f */ for (i = 0; i < n; i++) { /* 0: loadw */ @@ -727,45 +625,15 @@ _backup_orc_audio_convert_unpack_u16_swap (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_unpack_u16_swap; void orc_audio_convert_unpack_u16_swap (gint32 * d1, const guint8 * s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_unpack_u16_swap; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_unpack_u16_swap"); - orc_program_set_backup_function (p, - _backup_orc_audio_convert_unpack_u16_swap); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_constant (p, 4, 0x80000000, "c1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 4, "t2"); - - orc_program_append_2 (p, "swapw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -844,42 +712,15 @@ _backup_orc_audio_convert_unpack_s16_swap (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_unpack_s16_swap; void orc_audio_convert_unpack_s16_swap (gint32 * d1, const guint8 * s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_unpack_s16_swap; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_unpack_s16_swap"); - orc_program_set_backup_function (p, - _backup_orc_audio_convert_unpack_s16_swap); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 4, "t2"); - - orc_program_append_2 (p, "swapw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_P1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -910,7 +751,7 @@ orc_audio_convert_unpack_u32 (gint32 * d1, const guint8 * s1, int p1, int n) ptr4 = (orc_union32 *) s1; /* 2: loadpl */ - var34.i = 0x80000000; /* -2147483648 or -nanf */ + var34.i = 0x80000000; /* -2147483648 or 1.061e-314f */ for (i = 0; i < n; i++) { /* 0: loadl */ @@ -942,7 +783,7 @@ _backup_orc_audio_convert_unpack_u32 (OrcExecutor * ORC_RESTRICT ex) ptr4 = (orc_union32 *) ex->arrays[4]; /* 2: loadpl */ - var34.i = 0x80000000; /* -2147483648 or -nanf */ + var34.i = 0x80000000; /* -2147483648 or 1.061e-314f */ for (i = 0; i < n; i++) { /* 0: loadl */ @@ -957,38 +798,14 @@ _backup_orc_audio_convert_unpack_u32 (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_unpack_u32; void orc_audio_convert_unpack_u32 (gint32 * d1, const guint8 * s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_unpack_u32; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_unpack_u32"); - orc_program_set_backup_function (p, _backup_orc_audio_convert_unpack_u32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x80000000, "c1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 4, "t1"); - - orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -1054,34 +871,14 @@ _backup_orc_audio_convert_unpack_s32 (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_unpack_s32; void orc_audio_convert_unpack_s32 (gint32 * d1, const guint8 * s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_unpack_s32; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_unpack_s32"); - orc_program_set_backup_function (p, _backup_orc_audio_convert_unpack_s32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_parameter (p, 4, "p1"); - - orc_program_append_2 (p, "shll", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_P1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -1114,7 +911,7 @@ orc_audio_convert_unpack_u32_swap (gint32 * d1, const guint8 * s1, int p1, ptr4 = (orc_union32 *) s1; /* 3: loadpl */ - var34.i = 0x80000000; /* -2147483648 or -nanf */ + var34.i = 0x80000000; /* -2147483648 or 1.061e-314f */ for (i = 0; i < n; i++) { /* 0: loadl */ @@ -1149,7 +946,7 @@ _backup_orc_audio_convert_unpack_u32_swap (OrcExecutor * ORC_RESTRICT ex) ptr4 = (orc_union32 *) ex->arrays[4]; /* 3: loadpl */ - var34.i = 0x80000000; /* -2147483648 or -nanf */ + var34.i = 0x80000000; /* -2147483648 or 1.061e-314f */ for (i = 0; i < n; i++) { /* 0: loadl */ @@ -1166,42 +963,15 @@ _backup_orc_audio_convert_unpack_u32_swap (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_unpack_u32_swap; void orc_audio_convert_unpack_u32_swap (gint32 * d1, const guint8 * s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_unpack_u32_swap; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_unpack_u32_swap"); - orc_program_set_backup_function (p, - _backup_orc_audio_convert_unpack_u32_swap); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x80000000, "c1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 4, "t1"); - - orc_program_append_2 (p, "swapl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -1274,39 +1044,15 @@ _backup_orc_audio_convert_unpack_s32_swap (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_unpack_s32_swap; void orc_audio_convert_unpack_s32_swap (gint32 * d1, const guint8 * s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_unpack_s32_swap; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_unpack_s32_swap"); - orc_program_set_backup_function (p, - _backup_orc_audio_convert_unpack_s32_swap); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 4, "t1"); - - orc_program_append_2 (p, "swapl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_P1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -1440,43 +1186,14 @@ _backup_orc_audio_convert_unpack_float_s32 (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_unpack_float_s32; void orc_audio_convert_unpack_float_s32 (guint32 * d1, const gfloat * s1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_unpack_float_s32; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_unpack_float_s32"); - orc_program_set_backup_function (p, - _backup_orc_audio_convert_unpack_float_s32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x4f000000, "c1"); - orc_program_add_constant (p, 4, 0x3f000000, "c2"); - orc_program_add_temporary (p, 4, "t1"); - - orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulf", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "addf", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "convfl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -1615,43 +1332,14 @@ _backup_orc_audio_convert_unpack_float_s32_swap (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_unpack_float_s32_swap; void orc_audio_convert_unpack_float_s32_swap (guint32 * d1, const gfloat * s1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_unpack_float_s32_swap; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_unpack_float_s32_swap"); - orc_program_set_backup_function (p, - _backup_orc_audio_convert_unpack_float_s32_swap); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x4f000000, "c1"); - orc_program_add_constant (p, 4, 0x3f000000, "c2"); - orc_program_add_temporary (p, 4, "t1"); - - orc_program_append_2 (p, "swapl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "mulf", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "addf", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "convfl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -1724,34 +1412,14 @@ _backup_orc_audio_convert_unpack_float_double (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_unpack_float_double; void orc_audio_convert_unpack_float_double (gdouble * d1, const gfloat * s1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_unpack_float_double; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_unpack_float_double"); - orc_program_set_backup_function (p, - _backup_orc_audio_convert_unpack_float_double); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 4, "s1"); - - orc_program_append_2 (p, "convfd", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -1832,38 +1500,15 @@ _backup_orc_audio_convert_unpack_float_double_swap (OrcExecutor * } +static OrcProgram *_orc_program_orc_audio_convert_unpack_float_double_swap; void orc_audio_convert_unpack_float_double_swap (gdouble * d1, const gfloat * s1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_unpack_float_double_swap; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_unpack_float_double_swap"); - orc_program_set_backup_function (p, - _backup_orc_audio_convert_unpack_float_double_swap); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_temporary (p, 4, "t1"); - - orc_program_append_2 (p, "swapl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convfd", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -1928,34 +1573,14 @@ _backup_orc_audio_convert_unpack_double_double (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_unpack_double_double; void orc_audio_convert_unpack_double_double (gdouble * d1, const gdouble * s1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_unpack_double_double; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_unpack_double_double"); - orc_program_set_backup_function (p, - _backup_orc_audio_convert_unpack_double_double); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 8, "s1"); - - orc_program_append_2 (p, "copyq", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -2022,35 +1647,15 @@ _backup_orc_audio_convert_unpack_double_double_swap (OrcExecutor * } +static OrcProgram *_orc_program_orc_audio_convert_unpack_double_double_swap; void orc_audio_convert_unpack_double_double_swap (gdouble * d1, const gdouble * s1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_unpack_double_double_swap; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_unpack_double_double_swap"); - orc_program_set_backup_function (p, - _backup_orc_audio_convert_unpack_double_double_swap); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 8, "s1"); - - orc_program_append_2 (p, "swapq", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -2084,7 +1689,7 @@ orc_audio_convert_unpack_u8_double (gdouble * d1, const guint8 * s1, int p1, ptr4 = (orc_int8 *) s1; /* 4: loadpl */ - var35.i = 0x80000000; /* -2147483648 or -nanf */ + var35.i = 0x80000000; /* -2147483648 or 1.061e-314f */ for (i = 0; i < n; i++) { /* 0: loadb */ @@ -2125,7 +1730,7 @@ _backup_orc_audio_convert_unpack_u8_double (OrcExecutor * ORC_RESTRICT ex) ptr4 = (orc_int8 *) ex->arrays[4]; /* 4: loadpl */ - var35.i = 0x80000000; /* -2147483648 or -nanf */ + var35.i = 0x80000000; /* -2147483648 or 1.061e-314f */ for (i = 0; i < n; i++) { /* 0: loadb */ @@ -2146,47 +1751,15 @@ _backup_orc_audio_convert_unpack_u8_double (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_unpack_u8_double; void orc_audio_convert_unpack_u8_double (gdouble * d1, const guint8 * s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_unpack_u8_double; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_unpack_u8_double"); - orc_program_set_backup_function (p, - _backup_orc_audio_convert_unpack_u8_double); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_constant (p, 4, 0x80000000, "c1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 4, "t2"); - - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "xorl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convld", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -2271,44 +1844,15 @@ _backup_orc_audio_convert_unpack_s8_double (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_unpack_s8_double; void orc_audio_convert_unpack_s8_double (gdouble * d1, const guint8 * s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_unpack_s8_double; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_unpack_s8_double"); - orc_program_set_backup_function (p, - _backup_orc_audio_convert_unpack_s8_double); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 4, "t2"); - - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "convld", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -2342,7 +1886,7 @@ orc_audio_convert_unpack_u16_double (gdouble * d1, const guint8 * s1, int p1, ptr4 = (orc_union16 *) s1; /* 3: loadpl */ - var34.i = 0x80000000; /* -2147483648 or -nanf */ + var34.i = 0x80000000; /* -2147483648 or 1.061e-314f */ for (i = 0; i < n; i++) { /* 0: loadw */ @@ -2380,7 +1924,7 @@ _backup_orc_audio_convert_unpack_u16_double (OrcExecutor * ORC_RESTRICT ex) ptr4 = (orc_union16 *) ex->arrays[4]; /* 3: loadpl */ - var34.i = 0x80000000; /* -2147483648 or -nanf */ + var34.i = 0x80000000; /* -2147483648 or 1.061e-314f */ for (i = 0; i < n; i++) { /* 0: loadw */ @@ -2399,44 +1943,15 @@ _backup_orc_audio_convert_unpack_u16_double (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_unpack_u16_double; void orc_audio_convert_unpack_u16_double (gdouble * d1, const guint8 * s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_unpack_u16_double; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_unpack_u16_double"); - orc_program_set_backup_function (p, - _backup_orc_audio_convert_unpack_u16_double); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_constant (p, 4, 0x80000000, "c1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 4, "t1"); - - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "xorl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convld", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -2515,41 +2030,15 @@ _backup_orc_audio_convert_unpack_s16_double (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_unpack_s16_double; void orc_audio_convert_unpack_s16_double (gdouble * d1, const guint8 * s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_unpack_s16_double; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_unpack_s16_double"); - orc_program_set_backup_function (p, - _backup_orc_audio_convert_unpack_s16_double); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 4, "t1"); - - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "convld", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -2584,7 +2073,7 @@ orc_audio_convert_unpack_u16_double_swap (gdouble * d1, const guint8 * s1, ptr4 = (orc_union16 *) s1; /* 4: loadpl */ - var35.i = 0x80000000; /* -2147483648 or -nanf */ + var35.i = 0x80000000; /* -2147483648 or 1.061e-314f */ for (i = 0; i < n; i++) { /* 0: loadw */ @@ -2625,7 +2114,7 @@ _backup_orc_audio_convert_unpack_u16_double_swap (OrcExecutor * ORC_RESTRICT ex) ptr4 = (orc_union16 *) ex->arrays[4]; /* 4: loadpl */ - var35.i = 0x80000000; /* -2147483648 or -nanf */ + var35.i = 0x80000000; /* -2147483648 or 1.061e-314f */ for (i = 0; i < n; i++) { /* 0: loadw */ @@ -2646,47 +2135,15 @@ _backup_orc_audio_convert_unpack_u16_double_swap (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_unpack_u16_double_swap; void orc_audio_convert_unpack_u16_double_swap (gdouble * d1, const guint8 * s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_unpack_u16_double_swap; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_unpack_u16_double_swap"); - orc_program_set_backup_function (p, - _backup_orc_audio_convert_unpack_u16_double_swap); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_constant (p, 4, 0x80000000, "c1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 4, "t2"); - - orc_program_append_2 (p, "swapw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "xorl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convld", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -2771,44 +2228,15 @@ _backup_orc_audio_convert_unpack_s16_double_swap (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_unpack_s16_double_swap; void orc_audio_convert_unpack_s16_double_swap (gdouble * d1, const guint8 * s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_unpack_s16_double_swap; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_unpack_s16_double_swap"); - orc_program_set_backup_function (p, - _backup_orc_audio_convert_unpack_s16_double_swap); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 4, "t2"); - - orc_program_append_2 (p, "swapw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "convld", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -2841,7 +2269,7 @@ orc_audio_convert_unpack_u32_double (gdouble * d1, const guint8 * s1, int p1, ptr4 = (orc_union32 *) s1; /* 2: loadpl */ - var34.i = 0x80000000; /* -2147483648 or -nanf */ + var34.i = 0x80000000; /* -2147483648 or 1.061e-314f */ for (i = 0; i < n; i++) { /* 0: loadl */ @@ -2876,7 +2304,7 @@ _backup_orc_audio_convert_unpack_u32_double (OrcExecutor * ORC_RESTRICT ex) ptr4 = (orc_union32 *) ex->arrays[4]; /* 2: loadpl */ - var34.i = 0x80000000; /* -2147483648 or -nanf */ + var34.i = 0x80000000; /* -2147483648 or 1.061e-314f */ for (i = 0; i < n; i++) { /* 0: loadl */ @@ -2893,42 +2321,15 @@ _backup_orc_audio_convert_unpack_u32_double (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_unpack_u32_double; void orc_audio_convert_unpack_u32_double (gdouble * d1, const guint8 * s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_unpack_u32_double; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_unpack_u32_double"); - orc_program_set_backup_function (p, - _backup_orc_audio_convert_unpack_u32_double); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x80000000, "c1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 4, "t1"); - - orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "xorl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convld", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -3001,39 +2402,15 @@ _backup_orc_audio_convert_unpack_s32_double (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_unpack_s32_double; void orc_audio_convert_unpack_s32_double (gdouble * d1, const guint8 * s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_unpack_s32_double; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_unpack_s32_double"); - orc_program_set_backup_function (p, - _backup_orc_audio_convert_unpack_s32_double); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 4, "t1"); - - orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "convld", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -3067,7 +2444,7 @@ orc_audio_convert_unpack_u32_double_swap (gdouble * d1, const guint8 * s1, ptr4 = (orc_union32 *) s1; /* 3: loadpl */ - var34.i = 0x80000000; /* -2147483648 or -nanf */ + var34.i = 0x80000000; /* -2147483648 or 1.061e-314f */ for (i = 0; i < n; i++) { /* 0: loadl */ @@ -3105,7 +2482,7 @@ _backup_orc_audio_convert_unpack_u32_double_swap (OrcExecutor * ORC_RESTRICT ex) ptr4 = (orc_union32 *) ex->arrays[4]; /* 3: loadpl */ - var34.i = 0x80000000; /* -2147483648 or -nanf */ + var34.i = 0x80000000; /* -2147483648 or 1.061e-314f */ for (i = 0; i < n; i++) { /* 0: loadl */ @@ -3124,44 +2501,15 @@ _backup_orc_audio_convert_unpack_u32_double_swap (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_unpack_u32_double_swap; void orc_audio_convert_unpack_u32_double_swap (gdouble * d1, const guint8 * s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_unpack_u32_double_swap; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_unpack_u32_double_swap"); - orc_program_set_backup_function (p, - _backup_orc_audio_convert_unpack_u32_double_swap); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x80000000, "c1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 4, "t1"); - - orc_program_append_2 (p, "swapl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "xorl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convld", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -3240,41 +2588,15 @@ _backup_orc_audio_convert_unpack_s32_double_swap (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_unpack_s32_double_swap; void orc_audio_convert_unpack_s32_double_swap (gdouble * d1, const guint8 * s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_unpack_s32_double_swap; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_unpack_s32_double_swap"); - orc_program_set_backup_function (p, - _backup_orc_audio_convert_unpack_s32_double_swap); - orc_program_add_destination (p, 8, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 4, "t1"); - - orc_program_append_2 (p, "swapl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "convld", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -3307,7 +2629,7 @@ orc_audio_convert_pack_u8 (guint8 * d1, const gint32 * s1, int p1, int n) ptr4 = (orc_union32 *) s1; /* 1: loadpl */ - var35.i = 0x80000000; /* -2147483648 or -nanf */ + var35.i = 0x80000000; /* -2147483648 or 1.061e-314f */ for (i = 0; i < n; i++) { /* 0: loadl */ @@ -3345,7 +2667,7 @@ _backup_orc_audio_convert_pack_u8 (OrcExecutor * ORC_RESTRICT ex) ptr4 = (orc_union32 *) ex->arrays[4]; /* 1: loadpl */ - var35.i = 0x80000000; /* -2147483648 or -nanf */ + var35.i = 0x80000000; /* -2147483648 or 1.061e-314f */ for (i = 0; i < n; i++) { /* 0: loadl */ @@ -3364,43 +2686,14 @@ _backup_orc_audio_convert_pack_u8 (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_pack_u8; void orc_audio_convert_pack_u8 (guint8 * d1, const gint32 * s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_pack_u8; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_pack_u8"); - orc_program_set_backup_function (p, _backup_orc_audio_convert_pack_u8); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x80000000, "c1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 2, "t2"); - - orc_program_append_2 (p, "xorl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -3478,40 +2771,14 @@ _backup_orc_audio_convert_pack_s8 (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_pack_s8; void orc_audio_convert_pack_s8 (guint8 * d1, const gint32 * s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_pack_s8; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_pack_s8"); - orc_program_set_backup_function (p, _backup_orc_audio_convert_pack_s8); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 2, "t2"); - - orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -3543,7 +2810,7 @@ orc_audio_convert_pack_u16 (guint8 * d1, const gint32 * s1, int p1, int n) ptr4 = (orc_union32 *) s1; /* 1: loadpl */ - var34.i = 0x80000000; /* -2147483648 or -nanf */ + var34.i = 0x80000000; /* -2147483648 or 1.061e-314f */ for (i = 0; i < n; i++) { /* 0: loadl */ @@ -3578,7 +2845,7 @@ _backup_orc_audio_convert_pack_u16 (OrcExecutor * ORC_RESTRICT ex) ptr4 = (orc_union32 *) ex->arrays[4]; /* 1: loadpl */ - var34.i = 0x80000000; /* -2147483648 or -nanf */ + var34.i = 0x80000000; /* -2147483648 or 1.061e-314f */ for (i = 0; i < n; i++) { /* 0: loadl */ @@ -3595,40 +2862,14 @@ _backup_orc_audio_convert_pack_u16 (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_pack_u16; void orc_audio_convert_pack_u16 (guint8 * d1, const gint32 * s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_pack_u16; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_pack_u16"); - orc_program_set_backup_function (p, _backup_orc_audio_convert_pack_u16); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x80000000, "c1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 4, "t1"); - - orc_program_append_2 (p, "xorl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -3700,37 +2941,14 @@ _backup_orc_audio_convert_pack_s16 (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_pack_s16; void orc_audio_convert_pack_s16 (guint8 * d1, const gint32 * s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_pack_s16; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_pack_s16"); - orc_program_set_backup_function (p, _backup_orc_audio_convert_pack_s16); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 4, "t1"); - - orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -3763,7 +2981,7 @@ orc_audio_convert_pack_u16_swap (guint8 * d1, const gint32 * s1, int p1, int n) ptr4 = (orc_union32 *) s1; /* 1: loadpl */ - var35.i = 0x80000000; /* -2147483648 or -nanf */ + var35.i = 0x80000000; /* -2147483648 or 1.061e-314f */ for (i = 0; i < n; i++) { /* 0: loadl */ @@ -3801,7 +3019,7 @@ _backup_orc_audio_convert_pack_u16_swap (OrcExecutor * ORC_RESTRICT ex) ptr4 = (orc_union32 *) ex->arrays[4]; /* 1: loadpl */ - var35.i = 0x80000000; /* -2147483648 or -nanf */ + var35.i = 0x80000000; /* -2147483648 or 1.061e-314f */ for (i = 0; i < n; i++) { /* 0: loadl */ @@ -3820,44 +3038,14 @@ _backup_orc_audio_convert_pack_u16_swap (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_pack_u16_swap; void orc_audio_convert_pack_u16_swap (guint8 * d1, const gint32 * s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_pack_u16_swap; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_pack_u16_swap"); - orc_program_set_backup_function (p, - _backup_orc_audio_convert_pack_u16_swap); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x80000000, "c1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 2, "t2"); - - orc_program_append_2 (p, "xorl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "swapw", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -3935,41 +3123,14 @@ _backup_orc_audio_convert_pack_s16_swap (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_pack_s16_swap; void orc_audio_convert_pack_s16_swap (guint8 * d1, const gint32 * s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_pack_s16_swap; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_pack_s16_swap"); - orc_program_set_backup_function (p, - _backup_orc_audio_convert_pack_s16_swap); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 2, "t2"); - - orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "swapw", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -4000,7 +3161,7 @@ orc_audio_convert_pack_u32 (guint8 * d1, const gint32 * s1, int p1, int n) ptr4 = (orc_union32 *) s1; /* 1: loadpl */ - var34.i = 0x80000000; /* -2147483648 or -nanf */ + var34.i = 0x80000000; /* -2147483648 or 1.061e-314f */ for (i = 0; i < n; i++) { /* 0: loadl */ @@ -4032,7 +3193,7 @@ _backup_orc_audio_convert_pack_u32 (OrcExecutor * ORC_RESTRICT ex) ptr4 = (orc_union32 *) ex->arrays[4]; /* 1: loadpl */ - var34.i = 0x80000000; /* -2147483648 or -nanf */ + var34.i = 0x80000000; /* -2147483648 or 1.061e-314f */ for (i = 0; i < n; i++) { /* 0: loadl */ @@ -4047,38 +3208,14 @@ _backup_orc_audio_convert_pack_u32 (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_pack_u32; void orc_audio_convert_pack_u32 (guint8 * d1, const gint32 * s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_pack_u32; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_pack_u32"); - orc_program_set_backup_function (p, _backup_orc_audio_convert_pack_u32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x80000000, "c1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 4, "t1"); - - orc_program_append_2 (p, "xorl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_P1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -4144,34 +3281,14 @@ _backup_orc_audio_convert_pack_s32 (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_pack_s32; void orc_audio_convert_pack_s32 (guint8 * d1, const gint32 * s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_pack_s32; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_pack_s32"); - orc_program_set_backup_function (p, _backup_orc_audio_convert_pack_s32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_parameter (p, 4, "p1"); - - orc_program_append_2 (p, "shrsl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_P1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -4203,7 +3320,7 @@ orc_audio_convert_pack_u32_swap (guint8 * d1, const gint32 * s1, int p1, int n) ptr4 = (orc_union32 *) s1; /* 1: loadpl */ - var34.i = 0x80000000; /* -2147483648 or -nanf */ + var34.i = 0x80000000; /* -2147483648 or 1.061e-314f */ for (i = 0; i < n; i++) { /* 0: loadl */ @@ -4238,7 +3355,7 @@ _backup_orc_audio_convert_pack_u32_swap (OrcExecutor * ORC_RESTRICT ex) ptr4 = (orc_union32 *) ex->arrays[4]; /* 1: loadpl */ - var34.i = 0x80000000; /* -2147483648 or -nanf */ + var34.i = 0x80000000; /* -2147483648 or 1.061e-314f */ for (i = 0; i < n; i++) { /* 0: loadl */ @@ -4255,41 +3372,14 @@ _backup_orc_audio_convert_pack_u32_swap (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_pack_u32_swap; void orc_audio_convert_pack_u32_swap (guint8 * d1, const gint32 * s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_pack_u32_swap; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_pack_u32_swap"); - orc_program_set_backup_function (p, - _backup_orc_audio_convert_pack_u32_swap); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x80000000, "c1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 4, "t1"); - - orc_program_append_2 (p, "xorl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrul", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -4361,38 +3451,14 @@ _backup_orc_audio_convert_pack_s32_swap (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_pack_s32_swap; void orc_audio_convert_pack_s32_swap (guint8 * d1, const gint32 * s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_pack_s32_swap; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_pack_s32_swap"); - orc_program_set_backup_function (p, - _backup_orc_audio_convert_pack_s32_swap); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 4, "t1"); - - orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -4486,40 +3552,14 @@ _backup_orc_audio_convert_pack_s32_float (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_pack_s32_float; void orc_audio_convert_pack_s32_float (gfloat * d1, const gint32 * s1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_pack_s32_float; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_pack_s32_float"); - orc_program_set_backup_function (p, - _backup_orc_audio_convert_pack_s32_float); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x4f000000, "c1"); - orc_program_add_temporary (p, 4, "t1"); - - orc_program_append_2 (p, "convlf", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "divf", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -4618,40 +3658,14 @@ _backup_orc_audio_convert_pack_s32_float_swap (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_pack_s32_float_swap; void orc_audio_convert_pack_s32_float_swap (gfloat * d1, const gint32 * s1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_pack_s32_float_swap; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_pack_s32_float_swap"); - orc_program_set_backup_function (p, - _backup_orc_audio_convert_pack_s32_float_swap); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x4f000000, "c1"); - orc_program_add_temporary (p, 4, "t1"); - - orc_program_append_2 (p, "convlf", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "divf", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -4685,8 +3699,10 @@ orc_audio_convert_pack_double_float (gfloat * d1, const gdouble * s1, int n) /* 1: convdf */ { orc_union64 _src1; + orc_union32 _dest; _src1.i = ORC_DENORMAL_DOUBLE (var32.i); - var33.f = _src1.f; + _dest.f = _src1.f; + var33.i = ORC_DENORMAL (_dest.i); } /* 2: storel */ ptr0[i] = var33; @@ -4715,8 +3731,10 @@ _backup_orc_audio_convert_pack_double_float (OrcExecutor * ORC_RESTRICT ex) /* 1: convdf */ { orc_union64 _src1; + orc_union32 _dest; _src1.i = ORC_DENORMAL_DOUBLE (var32.i); - var33.f = _src1.f; + _dest.f = _src1.f; + var33.i = ORC_DENORMAL (_dest.i); } /* 2: storel */ ptr0[i] = var33; @@ -4724,34 +3742,14 @@ _backup_orc_audio_convert_pack_double_float (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_pack_double_float; void orc_audio_convert_pack_double_float (gfloat * d1, const gdouble * s1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_pack_double_float; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_pack_double_float"); - orc_program_set_backup_function (p, - _backup_orc_audio_convert_pack_double_float); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 8, "s1"); - - orc_program_append_2 (p, "convdf", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -4787,8 +3785,10 @@ orc_audio_convert_pack_double_float_swap (gfloat * d1, const gdouble * s1, /* 1: convdf */ { orc_union64 _src1; + orc_union32 _dest; _src1.i = ORC_DENORMAL_DOUBLE (var33.i); - var35.f = _src1.f; + _dest.f = _src1.f; + var35.i = ORC_DENORMAL (_dest.i); } /* 2: swapl */ var34.i = ORC_SWAP_L (var35.i); @@ -4820,8 +3820,10 @@ _backup_orc_audio_convert_pack_double_float_swap (OrcExecutor * ORC_RESTRICT ex) /* 1: convdf */ { orc_union64 _src1; + orc_union32 _dest; _src1.i = ORC_DENORMAL_DOUBLE (var33.i); - var35.f = _src1.f; + _dest.f = _src1.f; + var35.i = ORC_DENORMAL (_dest.i); } /* 2: swapl */ var34.i = ORC_SWAP_L (var35.i); @@ -4831,38 +3833,15 @@ _backup_orc_audio_convert_pack_double_float_swap (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_pack_double_float_swap; void orc_audio_convert_pack_double_float_swap (gfloat * d1, const gdouble * s1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_pack_double_float_swap; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_pack_double_float_swap"); - orc_program_set_backup_function (p, - _backup_orc_audio_convert_pack_double_float_swap); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_temporary (p, 4, "t1"); - - orc_program_append_2 (p, "convdf", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -4958,44 +3937,15 @@ _backup_orc_audio_convert_pack_double_s8 (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_pack_double_s8; void orc_audio_convert_pack_double_s8 (guint8 * d1, const gdouble * s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_pack_double_s8; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_pack_double_s8"); - orc_program_set_backup_function (p, - _backup_orc_audio_convert_pack_double_s8); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 2, "t2"); - - orc_program_append_2 (p, "convdl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -5086,41 +4036,15 @@ _backup_orc_audio_convert_pack_double_s16 (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_pack_double_s16; void orc_audio_convert_pack_double_s16 (guint8 * d1, const gdouble * s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_pack_double_s16; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_pack_double_s16"); - orc_program_set_backup_function (p, - _backup_orc_audio_convert_pack_double_s16); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 4, "t1"); - - orc_program_append_2 (p, "convdl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -5217,44 +4141,15 @@ _backup_orc_audio_convert_pack_double_s16_swap (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_pack_double_s16_swap; void orc_audio_convert_pack_double_s16_swap (guint8 * d1, const gdouble * s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_pack_double_s16_swap; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_pack_double_s16_swap"); - orc_program_set_backup_function (p, - _backup_orc_audio_convert_pack_double_s16_swap); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 2, "t2"); - - orc_program_append_2 (p, "convdl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "swapw", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -5339,39 +4234,15 @@ _backup_orc_audio_convert_pack_double_s32 (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_pack_double_s32; void orc_audio_convert_pack_double_s32 (guint8 * d1, const gdouble * s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_pack_double_s32; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_pack_double_s32"); - orc_program_set_backup_function (p, - _backup_orc_audio_convert_pack_double_s32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 4, "t1"); - - orc_program_append_2 (p, "convdl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_P1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -5462,41 +4333,15 @@ _backup_orc_audio_convert_pack_double_s32_swap (OrcExecutor * ORC_RESTRICT ex) } +static OrcProgram *_orc_program_orc_audio_convert_pack_double_s32_swap; void orc_audio_convert_pack_double_s32_swap (guint8 * d1, const gdouble * s1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_audio_convert_pack_double_s32_swap; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_audio_convert_pack_double_s32_swap"); - orc_program_set_backup_function (p, - _backup_orc_audio_convert_pack_double_s32_swap); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 8, "s1"); - orc_program_add_parameter (p, 4, "p1"); - orc_program_add_temporary (p, 4, "t1"); - - orc_program_append_2 (p, "convdl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -5508,3 +4353,1470 @@ orc_audio_convert_pack_double_s32_swap (guint8 * d1, const gdouble * s1, int p1, func (ex); } #endif + + +void +gst_audio_convert_orc_init (void) +{ +#ifndef DISABLE_ORC + { + /* orc_audio_convert_unpack_u8 */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_unpack_u8"); + orc_program_set_backup_function (p, _backup_orc_audio_convert_unpack_u8); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_constant (p, 4, 0x80000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 4, "t2"); + + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_unpack_u8 = p; + } + { + /* orc_audio_convert_unpack_s8 */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_unpack_s8"); + orc_program_set_backup_function (p, _backup_orc_audio_convert_unpack_s8); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_constant (p, 0, 0x00000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 4, "t2"); + + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_P1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_unpack_s8 = p; + } + { + /* orc_audio_convert_unpack_u16 */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_unpack_u16"); + orc_program_set_backup_function (p, _backup_orc_audio_convert_unpack_u16); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 4, 0x80000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 4, "t1"); + + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_unpack_u16 = p; + } + { + /* orc_audio_convert_unpack_s16 */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_unpack_s16"); + orc_program_set_backup_function (p, _backup_orc_audio_convert_unpack_s16); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 0, 0x00000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 4, "t1"); + + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_P1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_unpack_s16 = p; + } + { + /* orc_audio_convert_unpack_u16_swap */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_unpack_u16_swap"); + orc_program_set_backup_function (p, + _backup_orc_audio_convert_unpack_u16_swap); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 4, 0x80000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 4, "t2"); + + orc_program_append_2 (p, "swapw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_unpack_u16_swap = p; + } + { + /* orc_audio_convert_unpack_s16_swap */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_unpack_s16_swap"); + orc_program_set_backup_function (p, + _backup_orc_audio_convert_unpack_s16_swap); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 0, 0x00000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 4, "t2"); + + orc_program_append_2 (p, "swapw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_P1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_unpack_s16_swap = p; + } + { + /* orc_audio_convert_unpack_u32 */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_unpack_u32"); + orc_program_set_backup_function (p, _backup_orc_audio_convert_unpack_u32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x80000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 4, "t1"); + + orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_unpack_u32 = p; + } + { + /* orc_audio_convert_unpack_s32 */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_unpack_s32"); + orc_program_set_backup_function (p, _backup_orc_audio_convert_unpack_s32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 0, 0x00000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 4, "p1"); + + orc_program_append_2 (p, "shll", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_P1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_unpack_s32 = p; + } + { + /* orc_audio_convert_unpack_u32_swap */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_unpack_u32_swap"); + orc_program_set_backup_function (p, + _backup_orc_audio_convert_unpack_u32_swap); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x80000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 4, "t1"); + + orc_program_append_2 (p, "swapl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_unpack_u32_swap = p; + } + { + /* orc_audio_convert_unpack_s32_swap */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_unpack_s32_swap"); + orc_program_set_backup_function (p, + _backup_orc_audio_convert_unpack_s32_swap); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 0, 0x00000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 4, "t1"); + + orc_program_append_2 (p, "swapl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_P1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_unpack_s32_swap = p; + } + { + /* orc_audio_convert_unpack_float_s32 */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_unpack_float_s32"); + orc_program_set_backup_function (p, + _backup_orc_audio_convert_unpack_float_s32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x4f000000, "c1"); + orc_program_add_constant (p, 4, 0x3f000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_temporary (p, 4, "t1"); + + orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "addf", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convfl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_unpack_float_s32 = p; + } + { + /* orc_audio_convert_unpack_float_s32_swap */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_unpack_float_s32_swap"); + orc_program_set_backup_function (p, + _backup_orc_audio_convert_unpack_float_s32_swap); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x4f000000, "c1"); + orc_program_add_constant (p, 4, 0x3f000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_temporary (p, 4, "t1"); + + orc_program_append_2 (p, "swapl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulf", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "addf", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convfl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_unpack_float_s32_swap = p; + } + { + /* orc_audio_convert_unpack_float_double */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_unpack_float_double"); + orc_program_set_backup_function (p, + _backup_orc_audio_convert_unpack_float_double); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 0, 0x00000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + + orc_program_append_2 (p, "convfd", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_unpack_float_double = p; + } + { + /* orc_audio_convert_unpack_float_double_swap */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_unpack_float_double_swap"); + orc_program_set_backup_function (p, + _backup_orc_audio_convert_unpack_float_double_swap); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 0, 0x00000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_temporary (p, 4, "t1"); + + orc_program_append_2 (p, "swapl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convfd", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_unpack_float_double_swap = p; + } + { + /* orc_audio_convert_unpack_double_double */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_unpack_double_double"); + orc_program_set_backup_function (p, + _backup_orc_audio_convert_unpack_double_double); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_constant (p, 0, 0x00000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + + orc_program_append_2 (p, "copyq", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_unpack_double_double = p; + } + { + /* orc_audio_convert_unpack_double_double_swap */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_unpack_double_double_swap"); + orc_program_set_backup_function (p, + _backup_orc_audio_convert_unpack_double_double_swap); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_constant (p, 0, 0x00000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + + orc_program_append_2 (p, "swapq", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_unpack_double_double_swap = p; + } + { + /* orc_audio_convert_unpack_u8_double */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_unpack_u8_double"); + orc_program_set_backup_function (p, + _backup_orc_audio_convert_unpack_u8_double); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_constant (p, 4, 0x80000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 4, "t2"); + + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "xorl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convld", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_unpack_u8_double = p; + } + { + /* orc_audio_convert_unpack_s8_double */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_unpack_s8_double"); + orc_program_set_backup_function (p, + _backup_orc_audio_convert_unpack_s8_double); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_constant (p, 0, 0x00000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 4, "t2"); + + orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "convld", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_unpack_s8_double = p; + } + { + /* orc_audio_convert_unpack_u16_double */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_unpack_u16_double"); + orc_program_set_backup_function (p, + _backup_orc_audio_convert_unpack_u16_double); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 4, 0x80000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 4, "t1"); + + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "xorl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convld", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_unpack_u16_double = p; + } + { + /* orc_audio_convert_unpack_s16_double */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_unpack_s16_double"); + orc_program_set_backup_function (p, + _backup_orc_audio_convert_unpack_s16_double); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 0, 0x00000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 4, "t1"); + + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "convld", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_unpack_s16_double = p; + } + { + /* orc_audio_convert_unpack_u16_double_swap */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_unpack_u16_double_swap"); + orc_program_set_backup_function (p, + _backup_orc_audio_convert_unpack_u16_double_swap); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 4, 0x80000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 4, "t2"); + + orc_program_append_2 (p, "swapw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "xorl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convld", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_unpack_u16_double_swap = p; + } + { + /* orc_audio_convert_unpack_s16_double_swap */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_unpack_s16_double_swap"); + orc_program_set_backup_function (p, + _backup_orc_audio_convert_unpack_s16_double_swap); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 0, 0x00000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 4, "t2"); + + orc_program_append_2 (p, "swapw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "convld", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_unpack_s16_double_swap = p; + } + { + /* orc_audio_convert_unpack_u32_double */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_unpack_u32_double"); + orc_program_set_backup_function (p, + _backup_orc_audio_convert_unpack_u32_double); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x80000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 4, "t1"); + + orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "xorl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convld", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_unpack_u32_double = p; + } + { + /* orc_audio_convert_unpack_s32_double */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_unpack_s32_double"); + orc_program_set_backup_function (p, + _backup_orc_audio_convert_unpack_s32_double); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 0, 0x00000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 4, "t1"); + + orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "convld", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_unpack_s32_double = p; + } + { + /* orc_audio_convert_unpack_u32_double_swap */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_unpack_u32_double_swap"); + orc_program_set_backup_function (p, + _backup_orc_audio_convert_unpack_u32_double_swap); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x80000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 4, "t1"); + + orc_program_append_2 (p, "swapl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "xorl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convld", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_unpack_u32_double_swap = p; + } + { + /* orc_audio_convert_unpack_s32_double_swap */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_unpack_s32_double_swap"); + orc_program_set_backup_function (p, + _backup_orc_audio_convert_unpack_s32_double_swap); + orc_program_add_destination (p, 8, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 0, 0x00000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 4, "t1"); + + orc_program_append_2 (p, "swapl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "convld", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_unpack_s32_double_swap = p; + } + { + /* orc_audio_convert_pack_u8 */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_pack_u8"); + orc_program_set_backup_function (p, _backup_orc_audio_convert_pack_u8); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x80000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 2, "t2"); + + orc_program_append_2 (p, "xorl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_pack_u8 = p; + } + { + /* orc_audio_convert_pack_s8 */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_pack_s8"); + orc_program_set_backup_function (p, _backup_orc_audio_convert_pack_s8); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 0, 0x00000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 2, "t2"); + + orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_pack_s8 = p; + } + { + /* orc_audio_convert_pack_u16 */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_pack_u16"); + orc_program_set_backup_function (p, _backup_orc_audio_convert_pack_u16); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x80000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 4, "t1"); + + orc_program_append_2 (p, "xorl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_pack_u16 = p; + } + { + /* orc_audio_convert_pack_s16 */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_pack_s16"); + orc_program_set_backup_function (p, _backup_orc_audio_convert_pack_s16); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 0, 0x00000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 4, "t1"); + + orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_pack_s16 = p; + } + { + /* orc_audio_convert_pack_u16_swap */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_pack_u16_swap"); + orc_program_set_backup_function (p, + _backup_orc_audio_convert_pack_u16_swap); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x80000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 2, "t2"); + + orc_program_append_2 (p, "xorl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "swapw", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_pack_u16_swap = p; + } + { + /* orc_audio_convert_pack_s16_swap */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_pack_s16_swap"); + orc_program_set_backup_function (p, + _backup_orc_audio_convert_pack_s16_swap); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 0, 0x00000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 2, "t2"); + + orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "swapw", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_pack_s16_swap = p; + } + { + /* orc_audio_convert_pack_u32 */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_pack_u32"); + orc_program_set_backup_function (p, _backup_orc_audio_convert_pack_u32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x80000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 4, "t1"); + + orc_program_append_2 (p, "xorl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_P1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_pack_u32 = p; + } + { + /* orc_audio_convert_pack_s32 */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_pack_s32"); + orc_program_set_backup_function (p, _backup_orc_audio_convert_pack_s32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 0, 0x00000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 4, "p1"); + + orc_program_append_2 (p, "shrsl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_P1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_pack_s32 = p; + } + { + /* orc_audio_convert_pack_u32_swap */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_pack_u32_swap"); + orc_program_set_backup_function (p, + _backup_orc_audio_convert_pack_u32_swap); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x80000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 4, "t1"); + + orc_program_append_2 (p, "xorl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_pack_u32_swap = p; + } + { + /* orc_audio_convert_pack_s32_swap */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_pack_s32_swap"); + orc_program_set_backup_function (p, + _backup_orc_audio_convert_pack_s32_swap); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 0, 0x00000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 4, "t1"); + + orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_pack_s32_swap = p; + } + { + /* orc_audio_convert_pack_s32_float */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_pack_s32_float"); + orc_program_set_backup_function (p, + _backup_orc_audio_convert_pack_s32_float); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x4f000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_temporary (p, 4, "t1"); + + orc_program_append_2 (p, "convlf", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "divf", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_pack_s32_float = p; + } + { + /* orc_audio_convert_pack_s32_float_swap */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_pack_s32_float_swap"); + orc_program_set_backup_function (p, + _backup_orc_audio_convert_pack_s32_float_swap); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 4, 0x4f000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_temporary (p, 4, "t1"); + + orc_program_append_2 (p, "convlf", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "divf", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_pack_s32_float_swap = p; + } + { + /* orc_audio_convert_pack_double_float */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_pack_double_float"); + orc_program_set_backup_function (p, + _backup_orc_audio_convert_pack_double_float); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_constant (p, 0, 0x00000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + + orc_program_append_2 (p, "convdf", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_pack_double_float = p; + } + { + /* orc_audio_convert_pack_double_float_swap */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_pack_double_float_swap"); + orc_program_set_backup_function (p, + _backup_orc_audio_convert_pack_double_float_swap); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_constant (p, 0, 0x00000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_temporary (p, 4, "t1"); + + orc_program_append_2 (p, "convdf", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_pack_double_float_swap = p; + } + { + /* orc_audio_convert_pack_double_s8 */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_pack_double_s8"); + orc_program_set_backup_function (p, + _backup_orc_audio_convert_pack_double_s8); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_constant (p, 0, 0x00000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 2, "t2"); + + orc_program_append_2 (p, "convdl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_pack_double_s8 = p; + } + { + /* orc_audio_convert_pack_double_s16 */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_pack_double_s16"); + orc_program_set_backup_function (p, + _backup_orc_audio_convert_pack_double_s16); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_constant (p, 0, 0x00000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 4, "t1"); + + orc_program_append_2 (p, "convdl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_pack_double_s16 = p; + } + { + /* orc_audio_convert_pack_double_s16_swap */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_pack_double_s16_swap"); + orc_program_set_backup_function (p, + _backup_orc_audio_convert_pack_double_s16_swap); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_constant (p, 0, 0x00000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 2, "t2"); + + orc_program_append_2 (p, "convdl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "swapw", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_pack_double_s16_swap = p; + } + { + /* orc_audio_convert_pack_double_s32 */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_pack_double_s32"); + orc_program_set_backup_function (p, + _backup_orc_audio_convert_pack_double_s32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_constant (p, 0, 0x00000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 4, "t1"); + + orc_program_append_2 (p, "convdl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_P1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_pack_double_s32 = p; + } + { + /* orc_audio_convert_pack_double_s32_swap */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_audio_convert_pack_double_s32_swap"); + orc_program_set_backup_function (p, + _backup_orc_audio_convert_pack_double_s32_swap); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 8, "s1"); + orc_program_add_constant (p, 0, 0x00000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 4, "p1"); + orc_program_add_temporary (p, 4, "t1"); + + orc_program_append_2 (p, "convdl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_audio_convert_pack_double_s32_swap = p; + } +#endif +} diff --git a/gst/audioconvert/gstaudioconvertorc-dist.h b/gst/audioconvert/gstaudioconvertorc-dist.h index 7abd0a465f..69c5c35c3e 100644 --- a/gst/audioconvert/gstaudioconvertorc-dist.h +++ b/gst/audioconvert/gstaudioconvertorc-dist.h @@ -10,6 +10,8 @@ extern "C" { #endif +void gst_audio_convert_orc_init (void); + #ifndef _ORC_INTEGER_TYPEDEFS_ diff --git a/gst/videoscale/gstvideoscaleorc-dist.c b/gst/videoscale/gstvideoscaleorc-dist.c index 1d5881db2d..9dd61124ec 100644 --- a/gst/videoscale/gstvideoscaleorc-dist.c +++ b/gst/videoscale/gstvideoscaleorc-dist.c @@ -47,14 +47,23 @@ typedef unsigned long orc_uint64; #endif #endif typedef union +{ + orc_int16 i; + orc_int8 x2[2]; +} orc_union16; +typedef union { orc_int32 i; float f; + orc_int16 x2[2]; + orc_int8 x4[4]; } orc_union32; typedef union { orc_int64 i; double f; + orc_int32 x2[2]; + orc_int16 x4[4]; } orc_union64; #endif @@ -65,6 +74,8 @@ void orc_merge_linear_u16 (orc_uint16 * d1, const orc_uint16 * s1, void orc_splat_u16 (orc_uint16 * d1, int p1, int n); void orc_splat_u32 (orc_uint32 * d1, int p1, int n); +void gst_videoscale_orc_init (void); + /* begin Orc C target preamble */ #define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x))) @@ -91,7 +102,19 @@ void orc_splat_u32 (orc_uint32 * d1, int p1, int n); #define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX) #define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8)) #define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24)) +#define ORC_SWAP_Q(x) ((((x)&0xffULL)<<56) | (((x)&0xff00ULL)<<40) | (((x)&0xff0000ULL)<<24) | (((x)&0xff000000ULL)<<8) | (((x)&0xff00000000ULL)>>8) | (((x)&0xff0000000000ULL)>>24) | (((x)&0xff000000000000ULL)>>40) | (((x)&0xff00000000000000ULL)>>56)) #define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset))) +#define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff)) +#define ORC_ISNAN(x) ((((x)&0x7f800000) == 0x7f800000) && (((x)&0x007fffff) != 0)) +#define ORC_DENORMAL_DOUBLE(x) ((x) & ((((x)&0x7ff0000000000000ULL) == 0) ? 0xfff0000000000000ULL : 0xffffffffffffffffULL)) +#define ORC_ISNAN_DOUBLE(x) ((((x)&0x7ff0000000000000ULL) == 0x7ff0000000000000ULL) && (((x)&0x000fffffffffffffULL) != 0)) +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +#define ORC_RESTRICT restrict +#elif defined(__GNUC__) && __GNUC__ >= 4 +#define ORC_RESTRICT __restrict__ +#else +#define ORC_RESTRICT +#endif /* end Orc C target preamble */ @@ -103,137 +126,119 @@ orc_merge_linear_u8 (orc_uint8 * d1, const orc_uint8 * s1, const orc_uint8 * s2, int p1, int p2, int n) { int i; - orc_int8 var0; - orc_int8 *ptr0; - orc_int8 var4; - const orc_int8 *ptr4; - orc_int8 var5; - const orc_int8 *ptr5; - const orc_int16 var16 = 128; - const orc_int16 var17 = 8; - const int var24 = p1; - const int var25 = p2; - orc_int16 var32; - orc_int16 var33; - orc_int16 var34; - orc_int16 var35; - orc_int16 var36; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; + orc_int8 var34; + orc_int8 var35; + orc_int8 var36; + orc_int8 var37; + orc_union16 var38; + orc_int8 var39; + orc_union16 var40; + orc_union16 var41; + orc_union16 var42; + orc_union16 var43; + orc_union16 var44; ptr0 = (orc_int8 *) d1; ptr4 = (orc_int8 *) s1; ptr5 = (orc_int8 *) s2; + /* 1: loadpb */ + var35 = p1; + /* 4: loadpb */ + var37 = p2; + /* 7: loadpw */ + var38.i = 0x00000080; /* 128 or 6.32404e-322f */ + for (i = 0; i < n; i++) { - var4 = *ptr4; - ptr4++; - var5 = *ptr5; - ptr5++; - /* 0: mulubw */ - var32 = (orc_uint8) var4 *(orc_uint8) var24; - /* 1: mulubw */ - var33 = (orc_uint8) var5 *(orc_uint8) var25; - /* 2: addw */ - var34 = var32 + var33; - /* 3: addw */ - var35 = var34 + var16; - /* 4: shruw */ - var36 = ((orc_uint16) var35) >> var17; - /* 5: convwb */ - var0 = var36; - *ptr0 = var0; - ptr0++; + /* 0: loadb */ + var34 = ptr4[i]; + /* 2: mulubw */ + var40.i = (orc_uint8) var34 *(orc_uint8) var35; + /* 3: loadb */ + var36 = ptr5[i]; + /* 5: mulubw */ + var41.i = (orc_uint8) var36 *(orc_uint8) var37; + /* 6: addw */ + var42.i = var40.i + var41.i; + /* 8: addw */ + var43.i = var42.i + var38.i; + /* 9: shruw */ + var44.i = ((orc_uint16) var43.i) >> 8; + /* 10: convwb */ + var39 = var44.i; + /* 11: storeb */ + ptr0[i] = var39; } } #else static void -_backup_orc_merge_linear_u8 (OrcExecutor * ex) +_backup_orc_merge_linear_u8 (OrcExecutor * ORC_RESTRICT ex) { int i; int n = ex->n; - orc_int8 var0; - orc_int8 *ptr0; - orc_int8 var4; - const orc_int8 *ptr4; - orc_int8 var5; - const orc_int8 *ptr5; - const orc_int16 var16 = 128; - const orc_int16 var17 = 8; - const int var24 = ex->params[24]; - const int var25 = ex->params[25]; - orc_int16 var32; - orc_int16 var33; - orc_int16 var34; - orc_int16 var35; - orc_int16 var36; + orc_int8 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + const orc_int8 *ORC_RESTRICT ptr5; + orc_int8 var34; + orc_int8 var35; + orc_int8 var36; + orc_int8 var37; + orc_union16 var38; + orc_int8 var39; + orc_union16 var40; + orc_union16 var41; + orc_union16 var42; + orc_union16 var43; + orc_union16 var44; ptr0 = (orc_int8 *) ex->arrays[0]; ptr4 = (orc_int8 *) ex->arrays[4]; ptr5 = (orc_int8 *) ex->arrays[5]; + /* 1: loadpb */ + var35 = ex->params[24]; + /* 4: loadpb */ + var37 = ex->params[25]; + /* 7: loadpw */ + var38.i = 0x00000080; /* 128 or 6.32404e-322f */ + for (i = 0; i < n; i++) { - var4 = *ptr4; - ptr4++; - var5 = *ptr5; - ptr5++; - /* 0: mulubw */ - var32 = (orc_uint8) var4 *(orc_uint8) var24; - /* 1: mulubw */ - var33 = (orc_uint8) var5 *(orc_uint8) var25; - /* 2: addw */ - var34 = var32 + var33; - /* 3: addw */ - var35 = var34 + var16; - /* 4: shruw */ - var36 = ((orc_uint16) var35) >> var17; - /* 5: convwb */ - var0 = var36; - *ptr0 = var0; - ptr0++; + /* 0: loadb */ + var34 = ptr4[i]; + /* 2: mulubw */ + var40.i = (orc_uint8) var34 *(orc_uint8) var35; + /* 3: loadb */ + var36 = ptr5[i]; + /* 5: mulubw */ + var41.i = (orc_uint8) var36 *(orc_uint8) var37; + /* 6: addw */ + var42.i = var40.i + var41.i; + /* 8: addw */ + var43.i = var42.i + var38.i; + /* 9: shruw */ + var44.i = ((orc_uint16) var43.i) >> 8; + /* 10: convwb */ + var39 = var44.i; + /* 11: storeb */ + ptr0[i] = var39; } } +static OrcProgram *_orc_program_orc_merge_linear_u8; void orc_merge_linear_u8 (orc_uint8 * d1, const orc_uint8 * s1, const orc_uint8 * s2, int p1, int p2, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_merge_linear_u8; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_merge_linear_u8"); - orc_program_set_backup_function (p, _backup_orc_merge_linear_u8); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_source (p, 1, "s1"); - orc_program_add_source (p, 1, "s2"); - orc_program_add_constant (p, 2, 128, "c1"); - orc_program_add_constant (p, 2, 8, "c2"); - orc_program_add_parameter (p, 1, "p1"); - orc_program_add_parameter (p, 1, "p2"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 2, "t2"); - - orc_program_append (p, "mulubw", ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1); - orc_program_append (p, "mulubw", ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_P2); - orc_program_append (p, "addw", ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2); - orc_program_append (p, "addw", ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1); - orc_program_append (p, "shruw", ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2); - orc_program_append (p, "convwb", ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -256,127 +261,107 @@ orc_merge_linear_u16 (orc_uint16 * d1, const orc_uint16 * s1, const orc_uint16 * s2, int p1, int p2, int n) { int i; - orc_int16 var0; - orc_int16 *ptr0; - orc_int16 var4; - const orc_int16 *ptr4; - orc_int16 var5; - const orc_int16 *ptr5; - const orc_int16 var16 = 16; - const int var24 = p1; - const int var25 = p2; - orc_union32 var32; - orc_union32 var33; - orc_union32 var34; - orc_union32 var35; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; + orc_union16 var34; + orc_union16 var35; + orc_union16 var36; + orc_union16 var37; + orc_union16 var38; + orc_union32 var39; + orc_union32 var40; + orc_union32 var41; + orc_union32 var42; - ptr0 = (orc_int16 *) d1; - ptr4 = (orc_int16 *) s1; - ptr5 = (orc_int16 *) s2; + ptr0 = (orc_union16 *) d1; + ptr4 = (orc_union16 *) s1; + ptr5 = (orc_union16 *) s2; + + /* 1: loadpw */ + var35.i = p1; + /* 4: loadpw */ + var37.i = p2; for (i = 0; i < n; i++) { - var4 = *ptr4; - ptr4++; - var5 = *ptr5; - ptr5++; - /* 0: muluwl */ - var32.i = (orc_uint16) var4 *(orc_uint16) var24; - /* 1: muluwl */ - var33.i = (orc_uint16) var5 *(orc_uint16) var25; - /* 2: addl */ - var34.i = var32.i + var33.i; - /* 3: shrul */ - var35.i = ((orc_uint32) var34.i) >> var16; - /* 4: convlw */ - var0 = var35.i; - *ptr0 = var0; - ptr0++; + /* 0: loadw */ + var34 = ptr4[i]; + /* 2: muluwl */ + var39.i = (orc_uint16) var34.i * (orc_uint16) var35.i; + /* 3: loadw */ + var36 = ptr5[i]; + /* 5: muluwl */ + var40.i = (orc_uint16) var36.i * (orc_uint16) var37.i; + /* 6: addl */ + var41.i = var39.i + var40.i; + /* 7: shrul */ + var42.i = ((orc_uint32) var41.i) >> 16; + /* 8: convlw */ + var38.i = var42.i; + /* 9: storew */ + ptr0[i] = var38; } } #else static void -_backup_orc_merge_linear_u16 (OrcExecutor * ex) +_backup_orc_merge_linear_u16 (OrcExecutor * ORC_RESTRICT ex) { int i; int n = ex->n; - orc_int16 var0; - orc_int16 *ptr0; - orc_int16 var4; - const orc_int16 *ptr4; - orc_int16 var5; - const orc_int16 *ptr5; - const orc_int16 var16 = 16; - const int var24 = ex->params[24]; - const int var25 = ex->params[25]; - orc_union32 var32; - orc_union32 var33; - orc_union32 var34; - orc_union32 var35; + orc_union16 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + const orc_union16 *ORC_RESTRICT ptr5; + orc_union16 var34; + orc_union16 var35; + orc_union16 var36; + orc_union16 var37; + orc_union16 var38; + orc_union32 var39; + orc_union32 var40; + orc_union32 var41; + orc_union32 var42; - ptr0 = (orc_int16 *) ex->arrays[0]; - ptr4 = (orc_int16 *) ex->arrays[4]; - ptr5 = (orc_int16 *) ex->arrays[5]; + ptr0 = (orc_union16 *) ex->arrays[0]; + ptr4 = (orc_union16 *) ex->arrays[4]; + ptr5 = (orc_union16 *) ex->arrays[5]; + + /* 1: loadpw */ + var35.i = ex->params[24]; + /* 4: loadpw */ + var37.i = ex->params[25]; for (i = 0; i < n; i++) { - var4 = *ptr4; - ptr4++; - var5 = *ptr5; - ptr5++; - /* 0: muluwl */ - var32.i = (orc_uint16) var4 *(orc_uint16) var24; - /* 1: muluwl */ - var33.i = (orc_uint16) var5 *(orc_uint16) var25; - /* 2: addl */ - var34.i = var32.i + var33.i; - /* 3: shrul */ - var35.i = ((orc_uint32) var34.i) >> var16; - /* 4: convlw */ - var0 = var35.i; - *ptr0 = var0; - ptr0++; + /* 0: loadw */ + var34 = ptr4[i]; + /* 2: muluwl */ + var39.i = (orc_uint16) var34.i * (orc_uint16) var35.i; + /* 3: loadw */ + var36 = ptr5[i]; + /* 5: muluwl */ + var40.i = (orc_uint16) var36.i * (orc_uint16) var37.i; + /* 6: addl */ + var41.i = var39.i + var40.i; + /* 7: shrul */ + var42.i = ((orc_uint32) var41.i) >> 16; + /* 8: convlw */ + var38.i = var42.i; + /* 9: storew */ + ptr0[i] = var38; } } +static OrcProgram *_orc_program_orc_merge_linear_u16; void orc_merge_linear_u16 (orc_uint16 * d1, const orc_uint16 * s1, const orc_uint16 * s2, int p1, int p2, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_merge_linear_u16; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_merge_linear_u16"); - orc_program_set_backup_function (p, _backup_orc_merge_linear_u16); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_source (p, 2, "s1"); - orc_program_add_source (p, 2, "s2"); - orc_program_add_constant (p, 2, 16, "c1"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_parameter (p, 2, "p2"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 4, "t2"); - - orc_program_append (p, "muluwl", ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1); - orc_program_append (p, "muluwl", ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_P2); - orc_program_append (p, "addl", ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2); - orc_program_append (p, "shrul", ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1); - orc_program_append (p, "convlw", ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -398,68 +383,56 @@ void orc_splat_u16 (orc_uint16 * d1, int p1, int n) { int i; - orc_int16 var0; - orc_int16 *ptr0; - const int var24 = p1; + orc_union16 *ORC_RESTRICT ptr0; + orc_union16 var32; + orc_union16 var33; - ptr0 = (orc_int16 *) d1; + ptr0 = (orc_union16 *) d1; + + /* 0: loadpw */ + var32.i = p1; for (i = 0; i < n; i++) { - /* 0: copyw */ - var0 = var24; - *ptr0 = var0; - ptr0++; + /* 1: copyw */ + var33.i = var32.i; + /* 2: storew */ + ptr0[i] = var33; } } #else static void -_backup_orc_splat_u16 (OrcExecutor * ex) +_backup_orc_splat_u16 (OrcExecutor * ORC_RESTRICT ex) { int i; int n = ex->n; - orc_int16 var0; - orc_int16 *ptr0; - const int var24 = ex->params[24]; + orc_union16 *ORC_RESTRICT ptr0; + orc_union16 var32; + orc_union16 var33; - ptr0 = (orc_int16 *) ex->arrays[0]; + ptr0 = (orc_union16 *) ex->arrays[0]; + + /* 0: loadpw */ + var32.i = ex->params[24]; for (i = 0; i < n; i++) { - /* 0: copyw */ - var0 = var24; - *ptr0 = var0; - ptr0++; + /* 1: copyw */ + var33.i = var32.i; + /* 2: storew */ + ptr0[i] = var33; } } +static OrcProgram *_orc_program_orc_splat_u16; void orc_splat_u16 (orc_uint16 * d1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_splat_u16; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_splat_u16"); - orc_program_set_backup_function (p, _backup_orc_splat_u16); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_parameter (p, 2, "p1"); - - orc_program_append (p, "copyw", ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -478,68 +451,56 @@ void orc_splat_u32 (orc_uint32 * d1, int p1, int n) { int i; - orc_union32 var0; - orc_union32 *ptr0; - const int var24 = p1; + orc_union32 *ORC_RESTRICT ptr0; + orc_union32 var32; + orc_union32 var33; ptr0 = (orc_union32 *) d1; + /* 0: loadpl */ + var32.i = p1; + for (i = 0; i < n; i++) { - /* 0: copyl */ - var0.i = var24; - *ptr0 = var0; - ptr0++; + /* 1: copyl */ + var33.i = var32.i; + /* 2: storel */ + ptr0[i] = var33; } } #else static void -_backup_orc_splat_u32 (OrcExecutor * ex) +_backup_orc_splat_u32 (OrcExecutor * ORC_RESTRICT ex) { int i; int n = ex->n; - orc_union32 var0; - orc_union32 *ptr0; - const int var24 = ex->params[24]; + orc_union32 *ORC_RESTRICT ptr0; + orc_union32 var32; + orc_union32 var33; ptr0 = (orc_union32 *) ex->arrays[0]; + /* 0: loadpl */ + var32.i = ex->params[24]; + for (i = 0; i < n; i++) { - /* 0: copyl */ - var0.i = var24; - *ptr0 = var0; - ptr0++; + /* 1: copyl */ + var33.i = var32.i; + /* 2: storel */ + ptr0[i] = var33; } } +static OrcProgram *_orc_program_orc_splat_u32; void orc_splat_u32 (orc_uint32 * d1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_splat_u32; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_splat_u32"); - orc_program_set_backup_function (p, _backup_orc_splat_u32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_parameter (p, 4, "p1"); - - orc_program_append (p, "copyl", ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -550,3 +511,143 @@ orc_splat_u32 (orc_uint32 * d1, int p1, int n) func (ex); } #endif + + +void +gst_videoscale_orc_init (void) +{ +#ifndef DISABLE_ORC + { + /* orc_merge_linear_u8 */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_merge_linear_u8"); + orc_program_set_backup_function (p, _backup_orc_merge_linear_u8); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_source (p, 1, "s2"); + orc_program_add_constant (p, 4, 0x00000080, "c1"); + orc_program_add_constant (p, 4, 0x00000008, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 1, "p1"); + orc_program_add_parameter (p, 1, "p2"); + orc_program_add_temporary (p, 2, "t1"); + orc_program_add_temporary (p, 2, "t2"); + + orc_program_append_2 (p, "mulubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "mulubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_P2, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "shruw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_merge_linear_u8 = p; + } + { + /* orc_merge_linear_u16 */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_merge_linear_u16"); + orc_program_set_backup_function (p, _backup_orc_merge_linear_u16); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_source (p, 2, "s2"); + orc_program_add_constant (p, 4, 0x00000010, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_parameter (p, 2, "p2"); + orc_program_add_temporary (p, 4, "t1"); + orc_program_add_temporary (p, 4, "t2"); + + orc_program_append_2 (p, "muluwl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "muluwl", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_P2, + ORC_VAR_D1); + orc_program_append_2 (p, "addl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, + ORC_VAR_D1); + orc_program_append_2 (p, "shrul", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_merge_linear_u16 = p; + } + { + /* orc_splat_u16 */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_splat_u16"); + orc_program_set_backup_function (p, _backup_orc_splat_u16); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_constant (p, 0, 0x00000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 2, "p1"); + + orc_program_append_2 (p, "copyw", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_splat_u16 = p; + } + { + /* orc_splat_u32 */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_splat_u32"); + orc_program_set_backup_function (p, _backup_orc_splat_u32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_constant (p, 0, 0x00000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 4, "p1"); + + orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_splat_u32 = p; + } +#endif +} diff --git a/gst/videoscale/gstvideoscaleorc-dist.h b/gst/videoscale/gstvideoscaleorc-dist.h index d76d78bb19..aa893d222e 100644 --- a/gst/videoscale/gstvideoscaleorc-dist.h +++ b/gst/videoscale/gstvideoscaleorc-dist.h @@ -10,6 +10,10 @@ extern "C" { #endif +void gst_videoscale_orc_init (void); + + + #ifndef _ORC_INTEGER_TYPEDEFS_ #define _ORC_INTEGER_TYPEDEFS_ #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L @@ -47,10 +51,10 @@ typedef long orc_int64; typedef unsigned long orc_uint64; #endif #endif -typedef union { orc_int32 i; float f; } orc_union32; -typedef union { orc_int64 i; double f; } orc_union64; +typedef union { orc_int16 i; orc_int8 x2[2]; } orc_union16; +typedef union { orc_int32 i; float f; orc_int16 x2[2]; orc_int8 x4[4]; } orc_union32; +typedef union { orc_int64 i; double f; orc_int32 x2[2]; orc_int16 x4[4]; } orc_union64; #endif - void orc_merge_linear_u8 (orc_uint8 * d1, const orc_uint8 * s1, const orc_uint8 * s2, int p1, int p2, int n); void orc_merge_linear_u16 (orc_uint16 * d1, const orc_uint16 * s1, const orc_uint16 * s2, int p1, int p2, int n); void orc_splat_u16 (orc_uint16 * d1, int p1, int n); diff --git a/gst/videotestsrc/gstvideotestsrcorc-dist.c b/gst/videotestsrc/gstvideotestsrcorc-dist.c index aeeacf36a9..9f05a85af0 100644 --- a/gst/videotestsrc/gstvideotestsrcorc-dist.c +++ b/gst/videotestsrc/gstvideotestsrcorc-dist.c @@ -47,14 +47,23 @@ typedef unsigned long orc_uint64; #endif #endif typedef union +{ + orc_int16 i; + orc_int8 x2[2]; +} orc_union16; +typedef union { orc_int32 i; float f; + orc_int16 x2[2]; + orc_int8 x4[4]; } orc_union32; typedef union { orc_int64 i; double f; + orc_int32 x2[2]; + orc_int16 x4[4]; } orc_union64; #endif @@ -63,6 +72,8 @@ void gst_orc_splat_s16 (gint8 * d1, int p1, int n); void gst_orc_splat_u16 (guint8 * d1, int p1, int n); void gst_orc_splat_u32 (guint8 * d1, int p1, int n); +void gst_videotestsrc_orc_init (void); + /* begin Orc C target preamble */ #define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x))) @@ -89,7 +100,19 @@ void gst_orc_splat_u32 (guint8 * d1, int p1, int n); #define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX) #define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8)) #define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24)) +#define ORC_SWAP_Q(x) ((((x)&0xffULL)<<56) | (((x)&0xff00ULL)<<40) | (((x)&0xff0000ULL)<<24) | (((x)&0xff000000ULL)<<8) | (((x)&0xff00000000ULL)>>8) | (((x)&0xff0000000000ULL)>>24) | (((x)&0xff000000000000ULL)>>40) | (((x)&0xff00000000000000ULL)>>56)) #define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset))) +#define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff)) +#define ORC_ISNAN(x) ((((x)&0x7f800000) == 0x7f800000) && (((x)&0x007fffff) != 0)) +#define ORC_DENORMAL_DOUBLE(x) ((x) & ((((x)&0x7ff0000000000000ULL) == 0) ? 0xfff0000000000000ULL : 0xffffffffffffffffULL)) +#define ORC_ISNAN_DOUBLE(x) ((((x)&0x7ff0000000000000ULL) == 0x7ff0000000000000ULL) && (((x)&0x000fffffffffffffULL) != 0)) +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +#define ORC_RESTRICT restrict +#elif defined(__GNUC__) && __GNUC__ >= 4 +#define ORC_RESTRICT __restrict__ +#else +#define ORC_RESTRICT +#endif /* end Orc C target preamble */ @@ -100,68 +123,56 @@ void gst_orc_splat_u8 (guint8 * d1, int p1, int n) { int i; - orc_int8 var0; - orc_int8 *ptr0; - const int var24 = p1; + orc_int8 *ORC_RESTRICT ptr0; + orc_int8 var32; + orc_int8 var33; ptr0 = (orc_int8 *) d1; + /* 0: loadpb */ + var32 = p1; + for (i = 0; i < n; i++) { - /* 0: copyb */ - var0 = var24; - *ptr0 = var0; - ptr0++; + /* 1: copyb */ + var33 = var32; + /* 2: storeb */ + ptr0[i] = var33; } } #else static void -_backup_gst_orc_splat_u8 (OrcExecutor * ex) +_backup_gst_orc_splat_u8 (OrcExecutor * ORC_RESTRICT ex) { int i; int n = ex->n; - orc_int8 var0; - orc_int8 *ptr0; - const int var24 = ex->params[24]; + orc_int8 *ORC_RESTRICT ptr0; + orc_int8 var32; + orc_int8 var33; ptr0 = (orc_int8 *) ex->arrays[0]; + /* 0: loadpb */ + var32 = ex->params[24]; + for (i = 0; i < n; i++) { - /* 0: copyb */ - var0 = var24; - *ptr0 = var0; - ptr0++; + /* 1: copyb */ + var33 = var32; + /* 2: storeb */ + ptr0[i] = var33; } } +static OrcProgram *_orc_program_gst_orc_splat_u8; void gst_orc_splat_u8 (guint8 * d1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_gst_orc_splat_u8; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "gst_orc_splat_u8"); - orc_program_set_backup_function (p, _backup_gst_orc_splat_u8); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_parameter (p, 1, "p1"); - - orc_program_append (p, "copyb", ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -180,68 +191,56 @@ void gst_orc_splat_s16 (gint8 * d1, int p1, int n) { int i; - orc_int16 var0; - orc_int16 *ptr0; - const int var24 = p1; + orc_union16 *ORC_RESTRICT ptr0; + orc_union16 var32; + orc_union16 var33; - ptr0 = (orc_int16 *) d1; + ptr0 = (orc_union16 *) d1; + + /* 0: loadpw */ + var32.i = p1; for (i = 0; i < n; i++) { - /* 0: copyw */ - var0 = var24; - *ptr0 = var0; - ptr0++; + /* 1: copyw */ + var33.i = var32.i; + /* 2: storew */ + ptr0[i] = var33; } } #else static void -_backup_gst_orc_splat_s16 (OrcExecutor * ex) +_backup_gst_orc_splat_s16 (OrcExecutor * ORC_RESTRICT ex) { int i; int n = ex->n; - orc_int16 var0; - orc_int16 *ptr0; - const int var24 = ex->params[24]; + orc_union16 *ORC_RESTRICT ptr0; + orc_union16 var32; + orc_union16 var33; - ptr0 = (orc_int16 *) ex->arrays[0]; + ptr0 = (orc_union16 *) ex->arrays[0]; + + /* 0: loadpw */ + var32.i = ex->params[24]; for (i = 0; i < n; i++) { - /* 0: copyw */ - var0 = var24; - *ptr0 = var0; - ptr0++; + /* 1: copyw */ + var33.i = var32.i; + /* 2: storew */ + ptr0[i] = var33; } } +static OrcProgram *_orc_program_gst_orc_splat_s16; void gst_orc_splat_s16 (gint8 * d1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_gst_orc_splat_s16; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "gst_orc_splat_s16"); - orc_program_set_backup_function (p, _backup_gst_orc_splat_s16); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_parameter (p, 2, "p1"); - - orc_program_append (p, "copyw", ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -260,68 +259,56 @@ void gst_orc_splat_u16 (guint8 * d1, int p1, int n) { int i; - orc_int16 var0; - orc_int16 *ptr0; - const int var24 = p1; + orc_union16 *ORC_RESTRICT ptr0; + orc_union16 var32; + orc_union16 var33; - ptr0 = (orc_int16 *) d1; + ptr0 = (orc_union16 *) d1; + + /* 0: loadpw */ + var32.i = p1; for (i = 0; i < n; i++) { - /* 0: copyw */ - var0 = var24; - *ptr0 = var0; - ptr0++; + /* 1: copyw */ + var33.i = var32.i; + /* 2: storew */ + ptr0[i] = var33; } } #else static void -_backup_gst_orc_splat_u16 (OrcExecutor * ex) +_backup_gst_orc_splat_u16 (OrcExecutor * ORC_RESTRICT ex) { int i; int n = ex->n; - orc_int16 var0; - orc_int16 *ptr0; - const int var24 = ex->params[24]; + orc_union16 *ORC_RESTRICT ptr0; + orc_union16 var32; + orc_union16 var33; - ptr0 = (orc_int16 *) ex->arrays[0]; + ptr0 = (orc_union16 *) ex->arrays[0]; + + /* 0: loadpw */ + var32.i = ex->params[24]; for (i = 0; i < n; i++) { - /* 0: copyw */ - var0 = var24; - *ptr0 = var0; - ptr0++; + /* 1: copyw */ + var33.i = var32.i; + /* 2: storew */ + ptr0[i] = var33; } } +static OrcProgram *_orc_program_gst_orc_splat_u16; void gst_orc_splat_u16 (guint8 * d1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_gst_orc_splat_u16; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "gst_orc_splat_u16"); - orc_program_set_backup_function (p, _backup_gst_orc_splat_u16); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_parameter (p, 2, "p1"); - - orc_program_append (p, "copyw", ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -340,68 +327,56 @@ void gst_orc_splat_u32 (guint8 * d1, int p1, int n) { int i; - orc_union32 var0; - orc_union32 *ptr0; - const int var24 = p1; + orc_union32 *ORC_RESTRICT ptr0; + orc_union32 var32; + orc_union32 var33; ptr0 = (orc_union32 *) d1; + /* 0: loadpl */ + var32.i = p1; + for (i = 0; i < n; i++) { - /* 0: copyl */ - var0.i = var24; - *ptr0 = var0; - ptr0++; + /* 1: copyl */ + var33.i = var32.i; + /* 2: storel */ + ptr0[i] = var33; } } #else static void -_backup_gst_orc_splat_u32 (OrcExecutor * ex) +_backup_gst_orc_splat_u32 (OrcExecutor * ORC_RESTRICT ex) { int i; int n = ex->n; - orc_union32 var0; - orc_union32 *ptr0; - const int var24 = ex->params[24]; + orc_union32 *ORC_RESTRICT ptr0; + orc_union32 var32; + orc_union32 var33; ptr0 = (orc_union32 *) ex->arrays[0]; + /* 0: loadpl */ + var32.i = ex->params[24]; + for (i = 0; i < n; i++) { - /* 0: copyl */ - var0.i = var24; - *ptr0 = var0; - ptr0++; + /* 1: copyl */ + var33.i = var32.i; + /* 2: storel */ + ptr0[i] = var33; } } +static OrcProgram *_orc_program_gst_orc_splat_u32; void gst_orc_splat_u32 (guint8 * d1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_gst_orc_splat_u32; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "gst_orc_splat_u32"); - orc_program_set_backup_function (p, _backup_gst_orc_splat_u32); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_parameter (p, 4, "p1"); - - orc_program_append (p, "copyl", ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -412,3 +387,115 @@ gst_orc_splat_u32 (guint8 * d1, int p1, int n) func (ex); } #endif + + +void +gst_videotestsrc_orc_init (void) +{ +#ifndef DISABLE_ORC + { + /* gst_orc_splat_u8 */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "gst_orc_splat_u8"); + orc_program_set_backup_function (p, _backup_gst_orc_splat_u8); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_constant (p, 0, 0x00000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 1, "p1"); + + orc_program_append_2 (p, "copyb", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_gst_orc_splat_u8 = p; + } + { + /* gst_orc_splat_s16 */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "gst_orc_splat_s16"); + orc_program_set_backup_function (p, _backup_gst_orc_splat_s16); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_constant (p, 0, 0x00000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 2, "p1"); + + orc_program_append_2 (p, "copyw", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_gst_orc_splat_s16 = p; + } + { + /* gst_orc_splat_u16 */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "gst_orc_splat_u16"); + orc_program_set_backup_function (p, _backup_gst_orc_splat_u16); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_constant (p, 0, 0x00000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 2, "p1"); + + orc_program_append_2 (p, "copyw", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_gst_orc_splat_u16 = p; + } + { + /* gst_orc_splat_u32 */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "gst_orc_splat_u32"); + orc_program_set_backup_function (p, _backup_gst_orc_splat_u32); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_constant (p, 0, 0x00000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 4, "p1"); + + orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_gst_orc_splat_u32 = p; + } +#endif +} diff --git a/gst/videotestsrc/gstvideotestsrcorc-dist.h b/gst/videotestsrc/gstvideotestsrcorc-dist.h index 5e4cd34d12..3f3781d52e 100644 --- a/gst/videotestsrc/gstvideotestsrcorc-dist.h +++ b/gst/videotestsrc/gstvideotestsrcorc-dist.h @@ -10,6 +10,10 @@ extern "C" { #endif +void gst_videotestsrc_orc_init (void); + + + #ifndef _ORC_INTEGER_TYPEDEFS_ #define _ORC_INTEGER_TYPEDEFS_ #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L @@ -47,10 +51,10 @@ typedef long orc_int64; typedef unsigned long orc_uint64; #endif #endif -typedef union { orc_int32 i; float f; } orc_union32; -typedef union { orc_int64 i; double f; } orc_union64; +typedef union { orc_int16 i; orc_int8 x2[2]; } orc_union16; +typedef union { orc_int32 i; float f; orc_int16 x2[2]; orc_int8 x4[4]; } orc_union32; +typedef union { orc_int64 i; double f; orc_int32 x2[2]; orc_int16 x4[4]; } orc_union64; #endif - void gst_orc_splat_u8 (guint8 * d1, int p1, int n); void gst_orc_splat_s16 (gint8 * d1, int p1, int n); void gst_orc_splat_u16 (guint8 * d1, int p1, int n); diff --git a/gst/volume/gstvolumeorc-dist.c b/gst/volume/gstvolumeorc-dist.c index 566f7437f8..df3571c195 100644 --- a/gst/volume/gstvolumeorc-dist.c +++ b/gst/volume/gstvolumeorc-dist.c @@ -73,6 +73,8 @@ void orc_process_int16_clamp (gint16 * d1, int p1, int n); void orc_process_int8 (gint8 * d1, int p1, int n); void orc_process_int8_clamp (gint8 * d1, int p1, int n); +void gst_volume_orc_init (void); + /* begin Orc C target preamble */ #define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x))) @@ -99,11 +101,19 @@ void orc_process_int8_clamp (gint8 * d1, int p1, int n); #define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX) #define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8)) #define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24)) +#define ORC_SWAP_Q(x) ((((x)&0xffULL)<<56) | (((x)&0xff00ULL)<<40) | (((x)&0xff0000ULL)<<24) | (((x)&0xff000000ULL)<<8) | (((x)&0xff00000000ULL)>>8) | (((x)&0xff0000000000ULL)>>24) | (((x)&0xff000000000000ULL)>>40) | (((x)&0xff00000000000000ULL)>>56)) #define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset))) -#define ORC_MIN_NORMAL (1.1754944909521339405e-38) -#define ORC_DENORMAL(x) (((x) > -ORC_MIN_NORMAL && (x) < ORC_MIN_NORMAL) ? ((x)<0 ? (-0.0f) : (0.0f)) : (x)) -#define ORC_MINF(a,b) (isnan(a) ? a : isnan(b) ? b : ((a)<(b)) ? (a) : (b)) -#define ORC_MAXF(a,b) (isnan(a) ? a : isnan(b) ? b : ((a)>(b)) ? (a) : (b)) +#define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff)) +#define ORC_ISNAN(x) ((((x)&0x7f800000) == 0x7f800000) && (((x)&0x007fffff) != 0)) +#define ORC_DENORMAL_DOUBLE(x) ((x) & ((((x)&0x7ff0000000000000ULL) == 0) ? 0xfff0000000000000ULL : 0xffffffffffffffffULL)) +#define ORC_ISNAN_DOUBLE(x) ((((x)&0x7ff0000000000000ULL) == 0x7ff0000000000000ULL) && (((x)&0x000fffffffffffffULL) != 0)) +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +#define ORC_RESTRICT restrict +#elif defined(__GNUC__) && __GNUC__ >= 4 +#define ORC_RESTRICT __restrict__ +#else +#define ORC_RESTRICT +#endif /* end Orc C target preamble */ @@ -114,8 +124,8 @@ void orc_scalarmultiply_f32_ns (float *d1, const float *s1, float p1, int n) { int i; - orc_union32 *ptr0; - const orc_union32 *ptr4; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; orc_union32 var32; orc_union32 var33; orc_union32 var34; @@ -123,13 +133,22 @@ orc_scalarmultiply_f32_ns (float *d1, const float *s1, float p1, int n) ptr0 = (orc_union32 *) d1; ptr4 = (orc_union32 *) s1; + /* 1: loadpl */ + var33.i = p1; + for (i = 0; i < n; i++) { /* 0: loadl */ var32 = ptr4[i]; - /* 1: loadpl */ - var33.i = p1; /* 2: mulf */ - var34.f = ORC_DENORMAL (ORC_DENORMAL (var32.f) * ORC_DENORMAL (var33.f)); + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var32.i); + _src2.i = ORC_DENORMAL (var33.i); + _dest1.f = _src1.f * _src2.f; + var34.i = ORC_DENORMAL (_dest1.i); + } /* 3: storel */ ptr0[i] = var34; } @@ -138,12 +157,12 @@ orc_scalarmultiply_f32_ns (float *d1, const float *s1, float p1, int n) #else static void -_backup_orc_scalarmultiply_f32_ns (OrcExecutor * ex) +_backup_orc_scalarmultiply_f32_ns (OrcExecutor * ORC_RESTRICT ex) { int i; int n = ex->n; - orc_union32 *ptr0; - const orc_union32 *ptr4; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union32 *ORC_RESTRICT ptr4; orc_union32 var32; orc_union32 var33; orc_union32 var34; @@ -151,47 +170,36 @@ _backup_orc_scalarmultiply_f32_ns (OrcExecutor * ex) ptr0 = (orc_union32 *) ex->arrays[0]; ptr4 = (orc_union32 *) ex->arrays[4]; + /* 1: loadpl */ + var33.i = ex->params[24]; + for (i = 0; i < n; i++) { /* 0: loadl */ var32 = ptr4[i]; - /* 1: loadpl */ - var33.i = ((orc_union32 *) (ex->params + 24))->f; /* 2: mulf */ - var34.f = ORC_DENORMAL (ORC_DENORMAL (var32.f) * ORC_DENORMAL (var33.f)); + { + orc_union32 _src1; + orc_union32 _src2; + orc_union32 _dest1; + _src1.i = ORC_DENORMAL (var32.i); + _src2.i = ORC_DENORMAL (var33.i); + _dest1.f = _src1.f * _src2.f; + var34.i = ORC_DENORMAL (_dest1.i); + } /* 3: storel */ ptr0[i] = var34; } } +static OrcProgram *_orc_program_orc_scalarmultiply_f32_ns; void orc_scalarmultiply_f32_ns (float *d1, const float *s1, float p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_scalarmultiply_f32_ns; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_scalarmultiply_f32_ns"); - orc_program_set_backup_function (p, _backup_orc_scalarmultiply_f32_ns); - orc_program_add_destination (p, 4, "d1"); - orc_program_add_source (p, 4, "s1"); - orc_program_add_parameter_float (p, 4, "p1"); - - orc_program_append_2 (p, "mulf", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_P1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -215,7 +223,7 @@ void orc_process_int16 (gint16 * d1, int p1, int n) { int i; - orc_union16 *ptr0; + orc_union16 *ORC_RESTRICT ptr0; orc_union16 var33; orc_union16 var34; orc_union16 var35; @@ -224,11 +232,12 @@ orc_process_int16 (gint16 * d1, int p1, int n) ptr0 = (orc_union16 *) d1; + /* 1: loadpw */ + var34.i = p1; + for (i = 0; i < n; i++) { /* 0: loadw */ var33 = ptr0[i]; - /* 1: loadpw */ - var34.i = p1; /* 2: mulswl */ var36.i = var33.i * var34.i; /* 3: shrsl */ @@ -243,11 +252,11 @@ orc_process_int16 (gint16 * d1, int p1, int n) #else static void -_backup_orc_process_int16 (OrcExecutor * ex) +_backup_orc_process_int16 (OrcExecutor * ORC_RESTRICT ex) { int i; int n = ex->n; - orc_union16 *ptr0; + orc_union16 *ORC_RESTRICT ptr0; orc_union16 var33; orc_union16 var34; orc_union16 var35; @@ -256,11 +265,12 @@ _backup_orc_process_int16 (OrcExecutor * ex) ptr0 = (orc_union16 *) ex->arrays[0]; + /* 1: loadpw */ + var34.i = ex->params[24]; + for (i = 0; i < n; i++) { /* 0: loadw */ var33 = ptr0[i]; - /* 1: loadpw */ - var34.i = ex->params[24]; /* 2: mulswl */ var36.i = var33.i * var34.i; /* 3: shrsl */ @@ -273,39 +283,14 @@ _backup_orc_process_int16 (OrcExecutor * ex) } +static OrcProgram *_orc_program_orc_process_int16; void orc_process_int16 (gint16 * d1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_process_int16; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_process_int16"); - orc_program_set_backup_function (p, _backup_orc_process_int16); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_constant (p, 2, 0x0000000d, "c1"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 4, "t1"); - - orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -324,7 +309,7 @@ void orc_process_int16_clamp (gint16 * d1, int p1, int n) { int i; - orc_union16 *ptr0; + orc_union16 *ORC_RESTRICT ptr0; orc_union16 var33; orc_union16 var34; orc_union16 var35; @@ -333,11 +318,12 @@ orc_process_int16_clamp (gint16 * d1, int p1, int n) ptr0 = (orc_union16 *) d1; + /* 1: loadpw */ + var34.i = p1; + for (i = 0; i < n; i++) { /* 0: loadw */ var33 = ptr0[i]; - /* 1: loadpw */ - var34.i = p1; /* 2: mulswl */ var36.i = var33.i * var34.i; /* 3: shrsl */ @@ -352,11 +338,11 @@ orc_process_int16_clamp (gint16 * d1, int p1, int n) #else static void -_backup_orc_process_int16_clamp (OrcExecutor * ex) +_backup_orc_process_int16_clamp (OrcExecutor * ORC_RESTRICT ex) { int i; int n = ex->n; - orc_union16 *ptr0; + orc_union16 *ORC_RESTRICT ptr0; orc_union16 var33; orc_union16 var34; orc_union16 var35; @@ -365,11 +351,12 @@ _backup_orc_process_int16_clamp (OrcExecutor * ex) ptr0 = (orc_union16 *) ex->arrays[0]; + /* 1: loadpw */ + var34.i = ex->params[24]; + for (i = 0; i < n; i++) { /* 0: loadw */ var33 = ptr0[i]; - /* 1: loadpw */ - var34.i = ex->params[24]; /* 2: mulswl */ var36.i = var33.i * var34.i; /* 3: shrsl */ @@ -382,39 +369,14 @@ _backup_orc_process_int16_clamp (OrcExecutor * ex) } +static OrcProgram *_orc_program_orc_process_int16_clamp; void orc_process_int16_clamp (gint16 * d1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_process_int16_clamp; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_process_int16_clamp"); - orc_program_set_backup_function (p, _backup_orc_process_int16_clamp); - orc_program_add_destination (p, 2, "d1"); - orc_program_add_constant (p, 2, 0x0000000d, "c1"); - orc_program_add_parameter (p, 2, "p1"); - orc_program_add_temporary (p, 4, "t1"); - - orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convssslw", 0, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -433,7 +395,7 @@ void orc_process_int8 (gint8 * d1, int p1, int n) { int i; - orc_int8 *ptr0; + orc_int8 *ORC_RESTRICT ptr0; orc_int8 var33; orc_int8 var34; orc_int8 var35; @@ -442,11 +404,12 @@ orc_process_int8 (gint8 * d1, int p1, int n) ptr0 = (orc_int8 *) d1; + /* 1: loadpb */ + var34 = p1; + for (i = 0; i < n; i++) { /* 0: loadb */ var33 = ptr0[i]; - /* 1: loadpb */ - var34 = p1; /* 2: mulsbw */ var36.i = var33 * var34; /* 3: shrsw */ @@ -461,11 +424,11 @@ orc_process_int8 (gint8 * d1, int p1, int n) #else static void -_backup_orc_process_int8 (OrcExecutor * ex) +_backup_orc_process_int8 (OrcExecutor * ORC_RESTRICT ex) { int i; int n = ex->n; - orc_int8 *ptr0; + orc_int8 *ORC_RESTRICT ptr0; orc_int8 var33; orc_int8 var34; orc_int8 var35; @@ -474,11 +437,12 @@ _backup_orc_process_int8 (OrcExecutor * ex) ptr0 = (orc_int8 *) ex->arrays[0]; + /* 1: loadpb */ + var34 = ex->params[24]; + for (i = 0; i < n; i++) { /* 0: loadb */ var33 = ptr0[i]; - /* 1: loadpb */ - var34 = ex->params[24]; /* 2: mulsbw */ var36.i = var33 * var34; /* 3: shrsw */ @@ -491,39 +455,14 @@ _backup_orc_process_int8 (OrcExecutor * ex) } +static OrcProgram *_orc_program_orc_process_int8; void orc_process_int8 (gint8 * d1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_process_int8; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_process_int8"); - orc_program_set_backup_function (p, _backup_orc_process_int8); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_constant (p, 2, 0x00000005, "c1"); - orc_program_add_parameter (p, 1, "p1"); - orc_program_add_temporary (p, 2, "t1"); - - orc_program_append_2 (p, "mulsbw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convwb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, - ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -542,7 +481,7 @@ void orc_process_int8_clamp (gint8 * d1, int p1, int n) { int i; - orc_int8 *ptr0; + orc_int8 *ORC_RESTRICT ptr0; orc_int8 var33; orc_int8 var34; orc_int8 var35; @@ -551,11 +490,12 @@ orc_process_int8_clamp (gint8 * d1, int p1, int n) ptr0 = (orc_int8 *) d1; + /* 1: loadpb */ + var34 = p1; + for (i = 0; i < n; i++) { /* 0: loadb */ var33 = ptr0[i]; - /* 1: loadpb */ - var34 = p1; /* 2: mulsbw */ var36.i = var33 * var34; /* 3: shrsw */ @@ -570,11 +510,11 @@ orc_process_int8_clamp (gint8 * d1, int p1, int n) #else static void -_backup_orc_process_int8_clamp (OrcExecutor * ex) +_backup_orc_process_int8_clamp (OrcExecutor * ORC_RESTRICT ex) { int i; int n = ex->n; - orc_int8 *ptr0; + orc_int8 *ORC_RESTRICT ptr0; orc_int8 var33; orc_int8 var34; orc_int8 var35; @@ -583,11 +523,12 @@ _backup_orc_process_int8_clamp (OrcExecutor * ex) ptr0 = (orc_int8 *) ex->arrays[0]; + /* 1: loadpb */ + var34 = ex->params[24]; + for (i = 0; i < n; i++) { /* 0: loadb */ var33 = ptr0[i]; - /* 1: loadpb */ - var34 = ex->params[24]; /* 2: mulsbw */ var36.i = var33 * var34; /* 3: shrsw */ @@ -600,39 +541,14 @@ _backup_orc_process_int8_clamp (OrcExecutor * ex) } +static OrcProgram *_orc_program_orc_process_int8_clamp; void orc_process_int8_clamp (gint8 * d1, int p1, int n) { OrcExecutor _ex, *ex = &_ex; - static int p_inited = 0; - static OrcProgram *p = 0; + OrcProgram *p = _orc_program_orc_process_int8_clamp; void (*func) (OrcExecutor *); - if (!p_inited) { - orc_once_mutex_lock (); - if (!p_inited) { - OrcCompileResult result; - - p = orc_program_new (); - orc_program_set_name (p, "orc_process_int8_clamp"); - orc_program_set_backup_function (p, _backup_orc_process_int8_clamp); - orc_program_add_destination (p, 1, "d1"); - orc_program_add_constant (p, 2, 0x00000005, "c1"); - orc_program_add_parameter (p, 1, "p1"); - orc_program_add_temporary (p, 2, "t1"); - - orc_program_append_2 (p, "mulsbw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convssswb", 0, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); - - result = orc_program_compile (p); - } - p_inited = TRUE; - orc_once_mutex_unlock (); - } ex->program = p; ex->n = n; @@ -643,3 +559,162 @@ orc_process_int8_clamp (gint8 * d1, int p1, int n) func (ex); } #endif + + +void +gst_volume_orc_init (void) +{ +#ifndef DISABLE_ORC + { + /* orc_scalarmultiply_f32_ns */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_scalarmultiply_f32_ns"); + orc_program_set_backup_function (p, _backup_orc_scalarmultiply_f32_ns); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 4, "s1"); + orc_program_add_constant (p, 0, 0x00000000, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter_float (p, 4, "p1"); + + orc_program_append_2 (p, "mulf", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_P1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_scalarmultiply_f32_ns = p; + } + { + /* orc_process_int16 */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_process_int16"); + orc_program_set_backup_function (p, _backup_orc_process_int16); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_constant (p, 4, 0x0000000d, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 4, "t1"); + + orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convlw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_process_int16 = p; + } + { + /* orc_process_int16_clamp */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_process_int16_clamp"); + orc_program_set_backup_function (p, _backup_orc_process_int16_clamp); + orc_program_add_destination (p, 2, "d1"); + orc_program_add_constant (p, 4, 0x0000000d, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 2, "p1"); + orc_program_add_temporary (p, 4, "t1"); + + orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convssslw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_process_int16_clamp = p; + } + { + /* orc_process_int8 */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_process_int8"); + orc_program_set_backup_function (p, _backup_orc_process_int8); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_constant (p, 4, 0x00000005, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 1, "p1"); + orc_program_add_temporary (p, 2, "t1"); + + orc_program_append_2 (p, "mulsbw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convwb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_process_int8 = p; + } + { + /* orc_process_int8_clamp */ + OrcProgram *p; + OrcCompileResult result; + + p = orc_program_new (); + orc_program_set_name (p, "orc_process_int8_clamp"); + orc_program_set_backup_function (p, _backup_orc_process_int8_clamp); + orc_program_add_destination (p, 1, "d1"); + orc_program_add_constant (p, 4, 0x00000005, "c1"); + orc_program_add_constant (p, 0, 0x00000000, "c2"); + orc_program_add_constant (p, 0, 0x00000000, "c3"); + orc_program_add_constant (p, 0, 0x00000000, "c4"); + orc_program_add_constant (p, 0, 0x00000000, "c5"); + orc_program_add_constant (p, 0, 0x00000000, "c6"); + orc_program_add_constant (p, 0, 0x00000000, "c7"); + orc_program_add_constant (p, 0, 0x00000000, "c8"); + orc_program_add_parameter (p, 1, "p1"); + orc_program_add_temporary (p, 2, "t1"); + + orc_program_append_2 (p, "mulsbw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_P1, + ORC_VAR_D1); + orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); + orc_program_append_2 (p, "convssswb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + ORC_VAR_D1); + + result = orc_program_compile (p); + + _orc_program_orc_process_int8_clamp = p; + } +#endif +} diff --git a/gst/volume/gstvolumeorc-dist.h b/gst/volume/gstvolumeorc-dist.h index 7b13304ca9..9a69ce5eb4 100644 --- a/gst/volume/gstvolumeorc-dist.h +++ b/gst/volume/gstvolumeorc-dist.h @@ -10,6 +10,8 @@ extern "C" { #endif +void gst_volume_orc_init (void); + #ifndef _ORC_INTEGER_TYPEDEFS_