diff --git a/gst-libs/gst/audio/gstaudiopack-dist.c b/gst-libs/gst/audio/gstaudiopack-dist.c index 4f8c124c2f..00807e0b47 100644 --- a/gst-libs/gst/audio/gstaudiopack-dist.c +++ b/gst-libs/gst/audio/gstaudiopack-dist.c @@ -97,16 +97,28 @@ typedef union #endif void audio_orc_unpack_u8 (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n); +void audio_orc_unpack_u8_trunc (gint32 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n); void audio_orc_unpack_s8 (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n); +void audio_orc_unpack_s8_trunc (gint32 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n); void audio_orc_unpack_u16 (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n); +void audio_orc_unpack_u16_trunc (gint32 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n); void audio_orc_unpack_s16 (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n); +void audio_orc_unpack_s16_trunc (gint32 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n); void audio_orc_unpack_u16_swap (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n); +void audio_orc_unpack_u16_swap_trunc (gint32 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n); void audio_orc_unpack_s16_swap (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n); +void audio_orc_unpack_s16_swap_trunc (gint32 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n); void audio_orc_unpack_u24_32 (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n); void audio_orc_unpack_s24_32 (gint32 * ORC_RESTRICT d1, @@ -225,36 +237,33 @@ audio_orc_unpack_u8 (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int i; orc_union32 *ORC_RESTRICT ptr0; const orc_int8 *ORC_RESTRICT ptr4; - orc_int8 var34; + orc_int8 var33; #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_union32 var35; + volatile orc_union32 var34; #else - orc_union32 var35; + orc_union32 var34; #endif + orc_union32 var35; orc_union32 var36; - orc_union16 var37; - orc_union32 var38; - orc_union32 var39; ptr0 = (orc_union32 *) d1; ptr4 = (orc_int8 *) s1; - /* 4: loadpl */ - var35.i = (int) 0x80000000; /* -2147483648 or 1.061e-314f */ + /* 2: loadpl */ + var34.i = (int) 0x80000000; /* -2147483648 or 1.061e-314f */ for (i = 0; i < n; i++) { /* 0: loadb */ - var34 = ptr4[i]; - /* 1: convubw */ - var37.i = (orc_uint8) var34; - /* 2: convuwl */ - var38.i = (orc_uint16) var37.i; - /* 3: shll */ - var39.i = ((orc_uint32) var38.i) << 24; - /* 5: xorl */ - var36.i = var39.i ^ var35.i; - /* 6: storel */ - ptr0[i] = var36; + var33 = ptr4[i]; + /* 1: splatbl */ + var36.i = + ((((orc_uint32) var33) & 0xff) << 24) | ((((orc_uint32) var33) & 0xff) + << 16) | ((((orc_uint32) var33) & 0xff) << 8) | (((orc_uint32) var33) & + 0xff); + /* 3: xorl */ + var35.i = var36.i ^ var34.i; + /* 4: storel */ + ptr0[i] = var35; } } @@ -267,36 +276,33 @@ _backup_audio_orc_unpack_u8 (OrcExecutor * ORC_RESTRICT ex) int n = ex->n; orc_union32 *ORC_RESTRICT ptr0; const orc_int8 *ORC_RESTRICT ptr4; - orc_int8 var34; + orc_int8 var33; #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_union32 var35; + volatile orc_union32 var34; #else - orc_union32 var35; + orc_union32 var34; #endif + orc_union32 var35; orc_union32 var36; - orc_union16 var37; - orc_union32 var38; - orc_union32 var39; ptr0 = (orc_union32 *) ex->arrays[0]; ptr4 = (orc_int8 *) ex->arrays[4]; - /* 4: loadpl */ - var35.i = (int) 0x80000000; /* -2147483648 or 1.061e-314f */ + /* 2: loadpl */ + var34.i = (int) 0x80000000; /* -2147483648 or 1.061e-314f */ for (i = 0; i < n; i++) { /* 0: loadb */ - var34 = ptr4[i]; - /* 1: convubw */ - var37.i = (orc_uint8) var34; - /* 2: convuwl */ - var38.i = (orc_uint16) var37.i; - /* 3: shll */ - var39.i = ((orc_uint32) var38.i) << 24; - /* 5: xorl */ - var36.i = var39.i ^ var35.i; - /* 6: storel */ - ptr0[i] = var36; + var33 = ptr4[i]; + /* 1: splatbl */ + var36.i = + ((((orc_uint32) var33) & 0xff) << 24) | ((((orc_uint32) var33) & 0xff) + << 16) | ((((orc_uint32) var33) & 0xff) << 8) | (((orc_uint32) var33) & + 0xff); + /* 3: xorl */ + var35.i = var36.i ^ var34.i; + /* 4: storel */ + ptr0[i] = var35; } } @@ -319,8 +325,7 @@ audio_orc_unpack_u8 (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, static const orc_uint8 bc[] = { 1, 9, 19, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, 97, 99, 107, 95, 117, 56, 11, 4, 4, 12, 1, 1, 14, 4, 0, 0, - 0, 128, 14, 4, 24, 0, 0, 0, 20, 2, 20, 4, 150, 32, 4, 154, - 33, 32, 124, 33, 33, 17, 132, 0, 33, 16, 2, 0, + 0, 128, 20, 4, 152, 32, 4, 132, 0, 32, 16, 2, 0, }; p = orc_program_new_from_static_bytecode (bc); orc_program_set_backup_function (p, _backup_audio_orc_unpack_u8); @@ -331,17 +336,157 @@ audio_orc_unpack_u8 (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, 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, 4, 0x00000018, "c2"); - orc_program_add_temporary (p, 2, "t1"); - orc_program_add_temporary (p, 4, "t2"); + orc_program_add_temporary (p, 4, "t1"); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + orc_program_append_2 (p, "splatbl", 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_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2, +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + + func = c->exec; + func (ex); +} +#endif + + +/* audio_orc_unpack_u8_trunc */ +#ifdef DISABLE_ORC +void +audio_orc_unpack_u8_trunc (gint32 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + int i; + orc_union32 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + orc_int8 var33; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var34; +#else + orc_union32 var34; +#endif + orc_union32 var35; + orc_union32 var36; + orc_union32 var37; + + ptr0 = (orc_union32 *) d1; + ptr4 = (orc_int8 *) s1; + + /* 3: loadpl */ + var34.i = (int) 0x80000000; /* -2147483648 or 1.061e-314f */ + + for (i = 0; i < n; i++) { + /* 0: loadb */ + var33 = ptr4[i]; + /* 1: splatbl */ + var36.i = + ((((orc_uint32) var33) & 0xff) << 24) | ((((orc_uint32) var33) & 0xff) + << 16) | ((((orc_uint32) var33) & 0xff) << 8) | (((orc_uint32) var33) & + 0xff); + /* 2: shll */ + var37.i = ((orc_uint32) var36.i) << 24; + /* 4: xorl */ + var35.i = var37.i ^ var34.i; + /* 5: storel */ + ptr0[i] = var35; + } + +} + +#else +static void +_backup_audio_orc_unpack_u8_trunc (OrcExecutor * ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union32 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + orc_int8 var33; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var34; +#else + orc_union32 var34; +#endif + orc_union32 var35; + orc_union32 var36; + orc_union32 var37; + + ptr0 = (orc_union32 *) ex->arrays[0]; + ptr4 = (orc_int8 *) ex->arrays[4]; + + /* 3: loadpl */ + var34.i = (int) 0x80000000; /* -2147483648 or 1.061e-314f */ + + for (i = 0; i < n; i++) { + /* 0: loadb */ + var33 = ptr4[i]; + /* 1: splatbl */ + var36.i = + ((((orc_uint32) var33) & 0xff) << 24) | ((((orc_uint32) var33) & 0xff) + << 16) | ((((orc_uint32) var33) & 0xff) << 8) | (((orc_uint32) var33) & + 0xff); + /* 2: shll */ + var37.i = ((orc_uint32) var36.i) << 24; + /* 4: xorl */ + var35.i = var37.i ^ var34.i; + /* 5: storel */ + ptr0[i] = var35; + } + +} + +void +audio_orc_unpack_u8_trunc (gint32 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 25, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 117, 56, 95, 116, 114, 117, 110, 99, 11, 4, 4, 12, + 1, 1, 14, 4, 0, 0, 0, 128, 14, 4, 24, 0, 0, 0, 20, 4, + 152, 32, 4, 124, 32, 32, 17, 132, 0, 32, 16, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_u8_trunc); +#else + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_unpack_u8_trunc"); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_u8_trunc); + 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, 4, 0x00000018, "c2"); + orc_program_add_temporary (p, 4, "t1"); + + orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1); - orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_C1, + orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, + ORC_VAR_D1); + orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1); #endif @@ -375,25 +520,32 @@ audio_orc_unpack_s8 (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, orc_union32 *ORC_RESTRICT ptr0; const orc_int8 *ORC_RESTRICT ptr4; orc_int8 var34; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var35; +#else orc_union32 var35; - orc_union16 var36; +#endif + orc_union32 var36; orc_union32 var37; ptr0 = (orc_union32 *) d1; ptr4 = (orc_int8 *) s1; + /* 2: loadpl */ + var35.i = (int) 0x00808080; /* 8421504 or 4.16078e-317f */ for (i = 0; i < n; i++) { /* 0: loadb */ var34 = ptr4[i]; - /* 1: convubw */ - var36.i = (orc_uint8) var34; - /* 2: convuwl */ - var37.i = (orc_uint16) var36.i; - /* 3: shll */ - var35.i = ((orc_uint32) var37.i) << 24; + /* 1: splatbl */ + var37.i = + ((((orc_uint32) var34) & 0xff) << 24) | ((((orc_uint32) var34) & 0xff) + << 16) | ((((orc_uint32) var34) & 0xff) << 8) | (((orc_uint32) var34) & + 0xff); + /* 3: xorl */ + var36.i = var37.i ^ var35.i; /* 4: storel */ - ptr0[i] = var35; + ptr0[i] = var36; } } @@ -407,25 +559,32 @@ _backup_audio_orc_unpack_s8 (OrcExecutor * ORC_RESTRICT ex) orc_union32 *ORC_RESTRICT ptr0; const orc_int8 *ORC_RESTRICT ptr4; orc_int8 var34; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var35; +#else orc_union32 var35; - orc_union16 var36; +#endif + orc_union32 var36; orc_union32 var37; ptr0 = (orc_union32 *) ex->arrays[0]; ptr4 = (orc_int8 *) ex->arrays[4]; + /* 2: loadpl */ + var35.i = (int) 0x00808080; /* 8421504 or 4.16078e-317f */ for (i = 0; i < n; i++) { /* 0: loadb */ var34 = ptr4[i]; - /* 1: convubw */ - var36.i = (orc_uint8) var34; - /* 2: convuwl */ - var37.i = (orc_uint16) var36.i; - /* 3: shll */ - var35.i = ((orc_uint32) var37.i) << 24; + /* 1: splatbl */ + var37.i = + ((((orc_uint32) var34) & 0xff) << 24) | ((((orc_uint32) var34) & 0xff) + << 16) | ((((orc_uint32) var34) & 0xff) << 8) | (((orc_uint32) var34) & + 0xff); + /* 3: xorl */ + var36.i = var37.i ^ var35.i; /* 4: storel */ - ptr0[i] = var35; + ptr0[i] = var36; } } @@ -447,9 +606,8 @@ audio_orc_unpack_s8 (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, #if 1 static const orc_uint8 bc[] = { 1, 9, 19, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 115, 56, 11, 4, 4, 12, 1, 1, 14, 4, 24, 0, - 0, 0, 20, 2, 20, 4, 150, 32, 4, 154, 33, 32, 124, 0, 33, 16, - 2, 0, + 97, 99, 107, 95, 115, 56, 11, 4, 4, 12, 1, 1, 14, 4, 128, 128, + 128, 0, 20, 2, 20, 4, 152, 33, 4, 132, 0, 33, 16, 2, 0, }; p = orc_program_new_from_static_bytecode (bc); orc_program_set_backup_function (p, _backup_audio_orc_unpack_s8); @@ -459,15 +617,136 @@ audio_orc_unpack_s8 (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, orc_program_set_backup_function (p, _backup_audio_orc_unpack_s8); orc_program_add_destination (p, 4, "d1"); orc_program_add_source (p, 1, "s1"); - orc_program_add_constant (p, 4, 0x00000018, "c1"); + orc_program_add_constant (p, 4, 0x00808080, "c1"); 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_program_append_2 (p, "splatbl", 0, ORC_VAR_T2, 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_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_D1); - orc_program_append_2 (p, "shll", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_C1, +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + + func = c->exec; + func (ex); +} +#endif + + +/* audio_orc_unpack_s8_trunc */ +#ifdef DISABLE_ORC +void +audio_orc_unpack_s8_trunc (gint32 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + int i; + orc_union32 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + orc_int8 var33; + orc_union32 var34; + orc_union32 var35; + + ptr0 = (orc_union32 *) d1; + ptr4 = (orc_int8 *) s1; + + + for (i = 0; i < n; i++) { + /* 0: loadb */ + var33 = ptr4[i]; + /* 1: splatbl */ + var35.i = + ((((orc_uint32) var33) & 0xff) << 24) | ((((orc_uint32) var33) & 0xff) + << 16) | ((((orc_uint32) var33) & 0xff) << 8) | (((orc_uint32) var33) & + 0xff); + /* 2: shll */ + var34.i = ((orc_uint32) var35.i) << 24; + /* 3: storel */ + ptr0[i] = var34; + } + +} + +#else +static void +_backup_audio_orc_unpack_s8_trunc (OrcExecutor * ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union32 *ORC_RESTRICT ptr0; + const orc_int8 *ORC_RESTRICT ptr4; + orc_int8 var33; + orc_union32 var34; + orc_union32 var35; + + ptr0 = (orc_union32 *) ex->arrays[0]; + ptr4 = (orc_int8 *) ex->arrays[4]; + + + for (i = 0; i < n; i++) { + /* 0: loadb */ + var33 = ptr4[i]; + /* 1: splatbl */ + var35.i = + ((((orc_uint32) var33) & 0xff) << 24) | ((((orc_uint32) var33) & 0xff) + << 16) | ((((orc_uint32) var33) & 0xff) << 8) | (((orc_uint32) var33) & + 0xff); + /* 2: shll */ + var34.i = ((orc_uint32) var35.i) << 24; + /* 3: storel */ + ptr0[i] = var34; + } + +} + +void +audio_orc_unpack_s8_trunc (gint32 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 25, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 115, 56, 95, 116, 114, 117, 110, 99, 11, 4, 4, 12, + 1, 1, 14, 4, 24, 0, 0, 0, 20, 4, 152, 32, 4, 124, 0, 32, + 16, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_s8_trunc); +#else + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_unpack_s8_trunc"); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_s8_trunc); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 1, "s1"); + orc_program_add_constant (p, 4, 0x00000018, "c1"); + orc_program_add_temporary (p, 4, "t1"); + + orc_program_append_2 (p, "splatbl", 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_C1, ORC_VAR_D1); #endif @@ -501,12 +780,12 @@ audio_orc_unpack_u16 (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, orc_union32 *ORC_RESTRICT ptr0; const orc_union16 *ORC_RESTRICT ptr4; orc_union16 var33; + orc_union16 var34; #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_union32 var34; + volatile orc_union32 var35; #else - orc_union32 var34; -#endif orc_union32 var35; +#endif orc_union32 var36; orc_union32 var37; @@ -514,19 +793,24 @@ audio_orc_unpack_u16 (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, ptr4 = (orc_union16 *) s1; /* 3: loadpl */ - var34.i = (int) 0x80000000; /* -2147483648 or 1.061e-314f */ + var35.i = (int) 0x80000000; /* -2147483648 or 1.061e-314f */ for (i = 0; i < n; i++) { /* 0: loadw */ var33 = ptr4[i]; - /* 1: convuwl */ - var36.i = (orc_uint16) var33.i; - /* 2: shll */ - var37.i = ((orc_uint32) var36.i) << 16; + /* 1: loadw */ + var34 = ptr4[i]; + /* 2: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var33.i; + _dest.x2[1] = var34.i; + var37.i = _dest.i; + } /* 4: xorl */ - var35.i = var37.i ^ var34.i; + var36.i = var37.i ^ var35.i; /* 5: storel */ - ptr0[i] = var35; + ptr0[i] = var36; } } @@ -540,12 +824,12 @@ _backup_audio_orc_unpack_u16 (OrcExecutor * ORC_RESTRICT ex) orc_union32 *ORC_RESTRICT ptr0; const orc_union16 *ORC_RESTRICT ptr4; orc_union16 var33; + orc_union16 var34; #if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) - volatile orc_union32 var34; + volatile orc_union32 var35; #else - orc_union32 var34; -#endif orc_union32 var35; +#endif orc_union32 var36; orc_union32 var37; @@ -553,19 +837,24 @@ _backup_audio_orc_unpack_u16 (OrcExecutor * ORC_RESTRICT ex) ptr4 = (orc_union16 *) ex->arrays[4]; /* 3: loadpl */ - var34.i = (int) 0x80000000; /* -2147483648 or 1.061e-314f */ + var35.i = (int) 0x80000000; /* -2147483648 or 1.061e-314f */ for (i = 0; i < n; i++) { /* 0: loadw */ var33 = ptr4[i]; - /* 1: convuwl */ - var36.i = (orc_uint16) var33.i; - /* 2: shll */ - var37.i = ((orc_uint32) var36.i) << 16; + /* 1: loadw */ + var34 = ptr4[i]; + /* 2: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var33.i; + _dest.x2[1] = var34.i; + var37.i = _dest.i; + } /* 4: xorl */ - var35.i = var37.i ^ var34.i; + var36.i = var37.i ^ var35.i; /* 5: storel */ - ptr0[i] = var35; + ptr0[i] = var36; } } @@ -587,9 +876,8 @@ audio_orc_unpack_u16 (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, #if 1 static const orc_uint8 bc[] = { 1, 9, 20, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 117, 49, 54, 11, 4, 4, 12, 2, 2, 14, 4, 16, - 0, 0, 0, 14, 4, 0, 0, 0, 128, 20, 4, 154, 32, 4, 124, 32, - 32, 16, 132, 0, 32, 17, 2, 0, + 97, 99, 107, 95, 117, 49, 54, 11, 4, 4, 12, 2, 2, 14, 4, 0, + 0, 0, 128, 20, 4, 195, 32, 4, 4, 132, 0, 32, 16, 2, 0, }; p = orc_program_new_from_static_bytecode (bc); orc_program_set_backup_function (p, _backup_audio_orc_unpack_u16); @@ -599,11 +887,164 @@ audio_orc_unpack_u16 (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, orc_program_set_backup_function (p, _backup_audio_orc_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_temporary (p, 4, "t1"); + + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + + func = c->exec; + func (ex); +} +#endif + + +/* audio_orc_unpack_u16_trunc */ +#ifdef DISABLE_ORC +void +audio_orc_unpack_u16_trunc (gint32 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + int i; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + orc_union16 var33; + orc_union16 var34; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var35; +#else + orc_union32 var35; +#endif + orc_union32 var36; + orc_union32 var37; + orc_union32 var38; + + ptr0 = (orc_union32 *) d1; + ptr4 = (orc_union16 *) s1; + + /* 4: loadpl */ + var35.i = (int) 0x80000000; /* -2147483648 or 1.061e-314f */ + + for (i = 0; i < n; i++) { + /* 0: loadw */ + var33 = ptr4[i]; + /* 1: loadw */ + var34 = ptr4[i]; + /* 2: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var33.i; + _dest.x2[1] = var34.i; + var37.i = _dest.i; + } + /* 3: shll */ + var38.i = ((orc_uint32) var37.i) << 16; + /* 5: xorl */ + var36.i = var38.i ^ var35.i; + /* 6: storel */ + ptr0[i] = var36; + } + +} + +#else +static void +_backup_audio_orc_unpack_u16_trunc (OrcExecutor * ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + orc_union16 var33; + orc_union16 var34; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var35; +#else + orc_union32 var35; +#endif + orc_union32 var36; + orc_union32 var37; + orc_union32 var38; + + ptr0 = (orc_union32 *) ex->arrays[0]; + ptr4 = (orc_union16 *) ex->arrays[4]; + + /* 4: loadpl */ + var35.i = (int) 0x80000000; /* -2147483648 or 1.061e-314f */ + + for (i = 0; i < n; i++) { + /* 0: loadw */ + var33 = ptr4[i]; + /* 1: loadw */ + var34 = ptr4[i]; + /* 2: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var33.i; + _dest.x2[1] = var34.i; + var37.i = _dest.i; + } + /* 3: shll */ + var38.i = ((orc_uint32) var37.i) << 16; + /* 5: xorl */ + var36.i = var38.i ^ var35.i; + /* 6: storel */ + ptr0[i] = var36; + } + +} + +void +audio_orc_unpack_u16_trunc (gint32 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 26, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 117, 49, 54, 95, 116, 114, 117, 110, 99, 11, 4, 4, + 12, 2, 2, 14, 4, 16, 0, 0, 0, 14, 4, 0, 0, 0, 128, 20, + 4, 195, 32, 4, 4, 124, 32, 32, 16, 132, 0, 32, 17, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_u16_trunc); +#else + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_unpack_u16_trunc"); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_u16_trunc); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); orc_program_add_constant (p, 4, 0x00000010, "c1"); orc_program_add_constant (p, 4, 0x80000000, "c2"); orc_program_add_temporary (p, 4, "t1"); - orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S1, ORC_VAR_D1); orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_D1); @@ -636,6 +1077,152 @@ audio_orc_unpack_u16 (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, void audio_orc_unpack_s16 (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) +{ + int i; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + orc_union16 var33; + orc_union16 var34; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var35; +#else + orc_union32 var35; +#endif + orc_union32 var36; + orc_union32 var37; + + ptr0 = (orc_union32 *) d1; + ptr4 = (orc_union16 *) s1; + + /* 3: loadpl */ + var35.i = (int) 0x00008000; /* 32768 or 1.61895e-319f */ + + for (i = 0; i < n; i++) { + /* 0: loadw */ + var33 = ptr4[i]; + /* 1: loadw */ + var34 = ptr4[i]; + /* 2: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var33.i; + _dest.x2[1] = var34.i; + var37.i = _dest.i; + } + /* 4: xorl */ + var36.i = var37.i ^ var35.i; + /* 5: storel */ + ptr0[i] = var36; + } + +} + +#else +static void +_backup_audio_orc_unpack_s16 (OrcExecutor * ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + orc_union16 var33; + orc_union16 var34; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var35; +#else + orc_union32 var35; +#endif + orc_union32 var36; + orc_union32 var37; + + ptr0 = (orc_union32 *) ex->arrays[0]; + ptr4 = (orc_union16 *) ex->arrays[4]; + + /* 3: loadpl */ + var35.i = (int) 0x00008000; /* 32768 or 1.61895e-319f */ + + for (i = 0; i < n; i++) { + /* 0: loadw */ + var33 = ptr4[i]; + /* 1: loadw */ + var34 = ptr4[i]; + /* 2: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var33.i; + _dest.x2[1] = var34.i; + var37.i = _dest.i; + } + /* 4: xorl */ + var36.i = var37.i ^ var35.i; + /* 5: storel */ + ptr0[i] = var36; + } + +} + +void +audio_orc_unpack_s16 (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, + int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 20, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 115, 49, 54, 11, 4, 4, 12, 2, 2, 14, 4, 0, + 128, 0, 0, 20, 4, 195, 32, 4, 4, 132, 0, 32, 16, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_s16); +#else + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_unpack_s16"); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_s16); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_constant (p, 4, 0x00008000, "c1"); + orc_program_add_temporary (p, 4, "t1"); + + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S1, + ORC_VAR_D1); + orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + + func = c->exec; + func (ex); +} +#endif + + +/* audio_orc_unpack_s16_trunc */ +#ifdef DISABLE_ORC +void +audio_orc_unpack_s16_trunc (gint32 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) { int i; orc_union32 *ORC_RESTRICT ptr0; @@ -663,7 +1250,7 @@ audio_orc_unpack_s16 (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, #else static void -_backup_audio_orc_unpack_s16 (OrcExecutor * ORC_RESTRICT ex) +_backup_audio_orc_unpack_s16_trunc (OrcExecutor * ORC_RESTRICT ex) { int i; int n = ex->n; @@ -691,8 +1278,8 @@ _backup_audio_orc_unpack_s16 (OrcExecutor * ORC_RESTRICT ex) } void -audio_orc_unpack_s16 (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, - int n) +audio_orc_unpack_s16_trunc (gint32 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; static volatile int p_inited = 0; @@ -706,16 +1293,17 @@ audio_orc_unpack_s16 (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, #if 1 static const orc_uint8 bc[] = { - 1, 9, 20, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 115, 49, 54, 11, 4, 4, 12, 2, 2, 14, 4, 16, - 0, 0, 0, 20, 4, 154, 32, 4, 124, 0, 32, 16, 2, 0, + 1, 9, 26, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 115, 49, 54, 95, 116, 114, 117, 110, 99, 11, 4, 4, + 12, 2, 2, 14, 4, 16, 0, 0, 0, 20, 4, 154, 32, 4, 124, 0, + 32, 16, 2, 0, }; p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_s16); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_s16_trunc); #else p = orc_program_new (); - orc_program_set_name (p, "audio_orc_unpack_s16"); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_s16); + orc_program_set_name (p, "audio_orc_unpack_s16_trunc"); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_s16_trunc); orc_program_add_destination (p, 4, "d1"); orc_program_add_source (p, 2, "s1"); orc_program_add_constant (p, 4, 0x00000010, "c1"); @@ -765,6 +1353,156 @@ audio_orc_unpack_u16_swap (gint32 * ORC_RESTRICT d1, orc_union32 var36; orc_union16 var37; orc_union32 var38; + + ptr0 = (orc_union32 *) d1; + ptr4 = (orc_union16 *) s1; + + /* 3: loadpl */ + var35.i = (int) 0x80000000; /* -2147483648 or 1.061e-314f */ + + for (i = 0; i < n; i++) { + /* 0: loadw */ + var34 = ptr4[i]; + /* 1: swapw */ + var37.i = ORC_SWAP_W (var34.i); + /* 2: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var37.i; + _dest.x2[1] = var37.i; + var38.i = _dest.i; + } + /* 4: xorl */ + var36.i = var38.i ^ var35.i; + /* 5: storel */ + ptr0[i] = var36; + } + +} + +#else +static void +_backup_audio_orc_unpack_u16_swap (OrcExecutor * ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + orc_union16 var34; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var35; +#else + orc_union32 var35; +#endif + orc_union32 var36; + orc_union16 var37; + orc_union32 var38; + + ptr0 = (orc_union32 *) ex->arrays[0]; + ptr4 = (orc_union16 *) ex->arrays[4]; + + /* 3: loadpl */ + var35.i = (int) 0x80000000; /* -2147483648 or 1.061e-314f */ + + for (i = 0; i < n; i++) { + /* 0: loadw */ + var34 = ptr4[i]; + /* 1: swapw */ + var37.i = ORC_SWAP_W (var34.i); + /* 2: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var37.i; + _dest.x2[1] = var37.i; + var38.i = _dest.i; + } + /* 4: xorl */ + var36.i = var38.i ^ var35.i; + /* 5: storel */ + ptr0[i] = var36; + } + +} + +void +audio_orc_unpack_u16_swap (gint32 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 25, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 117, 49, 54, 95, 115, 119, 97, 112, 11, 4, 4, 12, + 2, 2, 14, 4, 0, 0, 0, 128, 20, 2, 20, 4, 183, 32, 4, 195, + 33, 32, 32, 132, 0, 33, 16, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_u16_swap); +#else + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_unpack_u16_swap"); + orc_program_set_backup_function (p, _backup_audio_orc_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_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, "mergewl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T1, + ORC_VAR_D1); + orc_program_append_2 (p, "xorl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_C1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + + func = c->exec; + func (ex); +} +#endif + + +/* audio_orc_unpack_u16_swap_trunc */ +#ifdef DISABLE_ORC +void +audio_orc_unpack_u16_swap_trunc (gint32 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + int i; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + orc_union16 var34; +#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__) + volatile orc_union32 var35; +#else + orc_union32 var35; +#endif + orc_union32 var36; + orc_union16 var37; + orc_union32 var38; orc_union32 var39; ptr0 = (orc_union32 *) d1; @@ -792,7 +1530,7 @@ audio_orc_unpack_u16_swap (gint32 * ORC_RESTRICT d1, #else static void -_backup_audio_orc_unpack_u16_swap (OrcExecutor * ORC_RESTRICT ex) +_backup_audio_orc_unpack_u16_swap_trunc (OrcExecutor * ORC_RESTRICT ex) { int i; int n = ex->n; @@ -833,7 +1571,7 @@ _backup_audio_orc_unpack_u16_swap (OrcExecutor * ORC_RESTRICT ex) } void -audio_orc_unpack_u16_swap (gint32 * ORC_RESTRICT d1, +audio_orc_unpack_u16_swap_trunc (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; @@ -848,18 +1586,20 @@ audio_orc_unpack_u16_swap (gint32 * ORC_RESTRICT d1, #if 1 static const orc_uint8 bc[] = { - 1, 9, 25, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 117, 49, 54, 95, 115, 119, 97, 112, 11, 4, 4, 12, - 2, 2, 14, 4, 16, 0, 0, 0, 14, 4, 0, 0, 0, 128, 20, 2, - 20, 4, 183, 32, 4, 154, 33, 32, 124, 33, 33, 16, 132, 0, 33, 17, - 2, 0, + 1, 9, 31, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 117, 49, 54, 95, 115, 119, 97, 112, 95, 116, 114, 117, + 110, 99, 11, 4, 4, 12, 2, 2, 14, 4, 16, 0, 0, 0, 14, 4, + 0, 0, 0, 128, 20, 2, 20, 4, 183, 32, 4, 154, 33, 32, 124, 33, + 33, 16, 132, 0, 33, 17, 2, 0, }; p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_u16_swap); + orc_program_set_backup_function (p, + _backup_audio_orc_unpack_u16_swap_trunc); #else p = orc_program_new (); - orc_program_set_name (p, "audio_orc_unpack_u16_swap"); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_u16_swap); + orc_program_set_name (p, "audio_orc_unpack_u16_swap_trunc"); + orc_program_set_backup_function (p, + _backup_audio_orc_unpack_u16_swap_trunc); orc_program_add_destination (p, 4, "d1"); orc_program_add_source (p, 2, "s1"); orc_program_add_constant (p, 4, 0x00000010, "c1"); @@ -902,6 +1642,131 @@ audio_orc_unpack_u16_swap (gint32 * ORC_RESTRICT d1, void audio_orc_unpack_s16_swap (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) +{ + int i; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + orc_union16 var33; + orc_union32 var34; + orc_union16 var35; + + ptr0 = (orc_union32 *) d1; + ptr4 = (orc_union16 *) s1; + + + for (i = 0; i < n; i++) { + /* 0: loadw */ + var33 = ptr4[i]; + /* 1: swapw */ + var35.i = ORC_SWAP_W (var33.i); + /* 2: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var35.i; + _dest.x2[1] = var35.i; + var34.i = _dest.i; + } + /* 3: storel */ + ptr0[i] = var34; + } + +} + +#else +static void +_backup_audio_orc_unpack_s16_swap (OrcExecutor * ORC_RESTRICT ex) +{ + int i; + int n = ex->n; + orc_union32 *ORC_RESTRICT ptr0; + const orc_union16 *ORC_RESTRICT ptr4; + orc_union16 var33; + orc_union32 var34; + orc_union16 var35; + + ptr0 = (orc_union32 *) ex->arrays[0]; + ptr4 = (orc_union16 *) ex->arrays[4]; + + + for (i = 0; i < n; i++) { + /* 0: loadw */ + var33 = ptr4[i]; + /* 1: swapw */ + var35.i = ORC_SWAP_W (var33.i); + /* 2: mergewl */ + { + orc_union32 _dest; + _dest.x2[0] = var35.i; + _dest.x2[1] = var35.i; + var34.i = _dest.i; + } + /* 3: storel */ + ptr0[i] = var34; + } + +} + +void +audio_orc_unpack_s16_swap (gint32 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) +{ + OrcExecutor _ex, *ex = &_ex; + static volatile int p_inited = 0; + static OrcCode *c = 0; + void (*func) (OrcExecutor *); + + if (!p_inited) { + orc_once_mutex_lock (); + if (!p_inited) { + OrcProgram *p; + +#if 1 + static const orc_uint8 bc[] = { + 1, 9, 25, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 115, 49, 54, 95, 115, 119, 97, 112, 11, 4, 4, 12, + 2, 2, 20, 2, 183, 32, 4, 195, 0, 32, 32, 2, 0, + }; + p = orc_program_new_from_static_bytecode (bc); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_s16_swap); +#else + p = orc_program_new (); + orc_program_set_name (p, "audio_orc_unpack_s16_swap"); + orc_program_set_backup_function (p, _backup_audio_orc_unpack_s16_swap); + orc_program_add_destination (p, 4, "d1"); + orc_program_add_source (p, 2, "s1"); + orc_program_add_temporary (p, 2, "t1"); + + orc_program_append_2 (p, "swapw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, + ORC_VAR_D1); + orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T1, + ORC_VAR_D1); +#endif + + orc_program_compile (p); + c = orc_program_take_code (p); + orc_program_free (p); + } + p_inited = TRUE; + orc_once_mutex_unlock (); + } + ex->arrays[ORC_VAR_A2] = c; + ex->program = 0; + + ex->n = n; + ex->arrays[ORC_VAR_D1] = d1; + ex->arrays[ORC_VAR_S1] = (void *) s1; + + func = c->exec; + func (ex); +} +#endif + + +/* audio_orc_unpack_s16_swap_trunc */ +#ifdef DISABLE_ORC +void +audio_orc_unpack_s16_swap_trunc (gint32 * ORC_RESTRICT d1, + const guint8 * ORC_RESTRICT s1, int n) { int i; orc_union32 *ORC_RESTRICT ptr0; @@ -932,7 +1797,7 @@ audio_orc_unpack_s16_swap (gint32 * ORC_RESTRICT d1, #else static void -_backup_audio_orc_unpack_s16_swap (OrcExecutor * ORC_RESTRICT ex) +_backup_audio_orc_unpack_s16_swap_trunc (OrcExecutor * ORC_RESTRICT ex) { int i; int n = ex->n; @@ -963,7 +1828,7 @@ _backup_audio_orc_unpack_s16_swap (OrcExecutor * ORC_RESTRICT ex) } void -audio_orc_unpack_s16_swap (gint32 * ORC_RESTRICT d1, +audio_orc_unpack_s16_swap_trunc (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n) { OrcExecutor _ex, *ex = &_ex; @@ -978,17 +1843,19 @@ audio_orc_unpack_s16_swap (gint32 * ORC_RESTRICT d1, #if 1 static const orc_uint8 bc[] = { - 1, 9, 25, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, - 97, 99, 107, 95, 115, 49, 54, 95, 115, 119, 97, 112, 11, 4, 4, 12, - 2, 2, 14, 4, 16, 0, 0, 0, 20, 2, 20, 4, 183, 32, 4, 154, - 33, 32, 124, 0, 33, 16, 2, 0, + 1, 9, 31, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 117, 110, 112, + 97, 99, 107, 95, 115, 49, 54, 95, 115, 119, 97, 112, 95, 116, 114, 117, + 110, 99, 11, 4, 4, 12, 2, 2, 14, 4, 16, 0, 0, 0, 20, 2, + 20, 4, 183, 32, 4, 154, 33, 32, 124, 0, 33, 16, 2, 0, }; p = orc_program_new_from_static_bytecode (bc); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_s16_swap); + orc_program_set_backup_function (p, + _backup_audio_orc_unpack_s16_swap_trunc); #else p = orc_program_new (); - orc_program_set_name (p, "audio_orc_unpack_s16_swap"); - orc_program_set_backup_function (p, _backup_audio_orc_unpack_s16_swap); + orc_program_set_name (p, "audio_orc_unpack_s16_swap_trunc"); + orc_program_set_backup_function (p, + _backup_audio_orc_unpack_s16_swap_trunc); orc_program_add_destination (p, 4, "d1"); orc_program_add_source (p, 2, "s1"); orc_program_add_constant (p, 4, 0x00000010, "c1"); @@ -2450,8 +3317,7 @@ audio_orc_pack_u8 (guint8 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, #endif orc_int8 var36; orc_union32 var37; - orc_union32 var38; - orc_union16 var39; + orc_union16 var38; ptr0 = (orc_int8 *) d1; ptr4 = (orc_union32 *) s1; @@ -2464,13 +3330,11 @@ audio_orc_pack_u8 (guint8 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, var34 = ptr4[i]; /* 2: xorl */ var37.i = var34.i ^ var35.i; - /* 3: shrul */ - var38.i = ((orc_uint32) var37.i) >> 24; - /* 4: convlw */ - var39.i = var38.i; - /* 5: convwb */ - var36 = var39.i; - /* 6: storeb */ + /* 3: convhlw */ + var38.i = ((orc_uint32) var37.i) >> 16; + /* 4: convhwb */ + var36 = ((orc_uint16) var38.i) >> 8; + /* 5: storeb */ ptr0[i] = var36; } @@ -2492,8 +3356,7 @@ _backup_audio_orc_pack_u8 (OrcExecutor * ORC_RESTRICT ex) #endif orc_int8 var36; orc_union32 var37; - orc_union32 var38; - orc_union16 var39; + orc_union16 var38; ptr0 = (orc_int8 *) ex->arrays[0]; ptr4 = (orc_union32 *) ex->arrays[4]; @@ -2506,13 +3369,11 @@ _backup_audio_orc_pack_u8 (OrcExecutor * ORC_RESTRICT ex) var34 = ptr4[i]; /* 2: xorl */ var37.i = var34.i ^ var35.i; - /* 3: shrul */ - var38.i = ((orc_uint32) var37.i) >> 24; - /* 4: convlw */ - var39.i = var38.i; - /* 5: convwb */ - var36 = var39.i; - /* 6: storeb */ + /* 3: convhlw */ + var38.i = ((orc_uint32) var37.i) >> 16; + /* 4: convhwb */ + var36 = ((orc_uint16) var38.i) >> 8; + /* 5: storeb */ ptr0[i] = var36; } @@ -2535,9 +3396,9 @@ audio_orc_pack_u8 (guint8 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, #if 1 static const orc_uint8 bc[] = { 1, 9, 17, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 117, 56, 11, 1, 1, 12, 4, 4, 14, 4, 24, 0, 0, 0, - 14, 4, 0, 0, 0, 128, 20, 4, 20, 2, 132, 32, 4, 17, 126, 32, - 32, 16, 163, 33, 32, 157, 0, 33, 2, 0, + 107, 95, 117, 56, 11, 1, 1, 12, 4, 4, 14, 4, 0, 0, 0, 128, + 20, 4, 20, 2, 132, 32, 4, 16, 164, 33, 32, 158, 0, 33, 2, 0, + }; p = orc_program_new_from_static_bytecode (bc); orc_program_set_backup_function (p, _backup_audio_orc_pack_u8); @@ -2547,18 +3408,15 @@ audio_orc_pack_u8 (guint8 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, orc_program_set_backup_function (p, _backup_audio_orc_pack_u8); orc_program_add_destination (p, 1, "d1"); orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x00000018, "c1"); - orc_program_add_constant (p, 4, 0x80000000, "c2"); + orc_program_add_constant (p, 4, 0x80000000, "c1"); 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_C2, + 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_C1, + orc_program_append_2 (p, "convhlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, 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_program_append_2 (p, "convhwb", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1); #endif @@ -2591,10 +3449,9 @@ audio_orc_pack_s8 (guint8 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, int i; orc_int8 *ORC_RESTRICT ptr0; const orc_union32 *ORC_RESTRICT ptr4; - orc_union32 var34; - orc_int8 var35; - orc_union32 var36; - orc_union16 var37; + orc_union32 var33; + orc_int8 var34; + orc_union16 var35; ptr0 = (orc_int8 *) d1; ptr4 = (orc_union32 *) s1; @@ -2602,15 +3459,13 @@ audio_orc_pack_s8 (guint8 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, for (i = 0; i < n; i++) { /* 0: loadl */ - var34 = ptr4[i]; - /* 1: shrsl */ - var36.i = var34.i >> 24; - /* 2: convlw */ - var37.i = var36.i; - /* 3: convwb */ - var35 = var37.i; - /* 4: storeb */ - ptr0[i] = var35; + var33 = ptr4[i]; + /* 1: convhlw */ + var35.i = ((orc_uint32) var33.i) >> 16; + /* 2: convhwb */ + var34 = ((orc_uint16) var35.i) >> 8; + /* 3: storeb */ + ptr0[i] = var34; } } @@ -2623,10 +3478,9 @@ _backup_audio_orc_pack_s8 (OrcExecutor * ORC_RESTRICT ex) int n = ex->n; orc_int8 *ORC_RESTRICT ptr0; const orc_union32 *ORC_RESTRICT ptr4; - orc_union32 var34; - orc_int8 var35; - orc_union32 var36; - orc_union16 var37; + orc_union32 var33; + orc_int8 var34; + orc_union16 var35; ptr0 = (orc_int8 *) ex->arrays[0]; ptr4 = (orc_union32 *) ex->arrays[4]; @@ -2634,15 +3488,13 @@ _backup_audio_orc_pack_s8 (OrcExecutor * ORC_RESTRICT ex) for (i = 0; i < n; i++) { /* 0: loadl */ - var34 = ptr4[i]; - /* 1: shrsl */ - var36.i = var34.i >> 24; - /* 2: convlw */ - var37.i = var36.i; - /* 3: convwb */ - var35 = var37.i; - /* 4: storeb */ - ptr0[i] = var35; + var33 = ptr4[i]; + /* 1: convhlw */ + var35.i = ((orc_uint32) var33.i) >> 16; + /* 2: convhwb */ + var34 = ((orc_uint16) var35.i) >> 8; + /* 3: storeb */ + ptr0[i] = var34; } } @@ -2664,9 +3516,8 @@ audio_orc_pack_s8 (guint8 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, #if 1 static const orc_uint8 bc[] = { 1, 9, 17, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 115, 56, 11, 1, 1, 12, 4, 4, 14, 4, 24, 0, 0, 0, - 20, 4, 20, 2, 125, 32, 4, 16, 163, 33, 32, 157, 0, 33, 2, 0, - + 107, 95, 115, 56, 11, 1, 1, 12, 4, 4, 20, 2, 164, 32, 4, 158, + 0, 32, 2, 0, }; p = orc_program_new_from_static_bytecode (bc); orc_program_set_backup_function (p, _backup_audio_orc_pack_s8); @@ -2676,15 +3527,11 @@ audio_orc_pack_s8 (guint8 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, orc_program_set_backup_function (p, _backup_audio_orc_pack_s8); orc_program_add_destination (p, 1, "d1"); orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x00000018, "c1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 2, "t1"); - orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, + orc_program_append_2 (p, "convhlw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, 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_program_append_2 (p, "convhwb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1); #endif @@ -2725,7 +3572,6 @@ audio_orc_pack_u16 (guint8 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, #endif orc_union16 var35; orc_union32 var36; - orc_union32 var37; ptr0 = (orc_union16 *) d1; ptr4 = (orc_union32 *) s1; @@ -2738,11 +3584,9 @@ audio_orc_pack_u16 (guint8 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, var33 = ptr4[i]; /* 2: xorl */ var36.i = var33.i ^ var34.i; - /* 3: shrul */ - var37.i = ((orc_uint32) var36.i) >> 16; - /* 4: convlw */ - var35.i = var37.i; - /* 5: storew */ + /* 3: convhlw */ + var35.i = ((orc_uint32) var36.i) >> 16; + /* 4: storew */ ptr0[i] = var35; } @@ -2764,7 +3608,6 @@ _backup_audio_orc_pack_u16 (OrcExecutor * ORC_RESTRICT ex) #endif orc_union16 var35; orc_union32 var36; - orc_union32 var37; ptr0 = (orc_union16 *) ex->arrays[0]; ptr4 = (orc_union32 *) ex->arrays[4]; @@ -2777,11 +3620,9 @@ _backup_audio_orc_pack_u16 (OrcExecutor * ORC_RESTRICT ex) var33 = ptr4[i]; /* 2: xorl */ var36.i = var33.i ^ var34.i; - /* 3: shrul */ - var37.i = ((orc_uint32) var36.i) >> 16; - /* 4: convlw */ - var35.i = var37.i; - /* 5: storew */ + /* 3: convhlw */ + var35.i = ((orc_uint32) var36.i) >> 16; + /* 4: storew */ ptr0[i] = var35; } @@ -2804,9 +3645,8 @@ audio_orc_pack_u16 (guint8 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, #if 1 static const orc_uint8 bc[] = { 1, 9, 18, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 117, 49, 54, 11, 2, 2, 12, 4, 4, 14, 4, 16, 0, 0, - 0, 14, 4, 0, 0, 0, 128, 20, 4, 132, 32, 4, 17, 126, 32, 32, - 16, 163, 0, 32, 2, 0, + 107, 95, 117, 49, 54, 11, 2, 2, 12, 4, 4, 14, 4, 0, 0, 0, + 128, 20, 4, 132, 32, 4, 16, 164, 0, 32, 2, 0, }; p = orc_program_new_from_static_bytecode (bc); orc_program_set_backup_function (p, _backup_audio_orc_pack_u16); @@ -2816,15 +3656,12 @@ audio_orc_pack_u16 (guint8 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, orc_program_set_backup_function (p, _backup_audio_orc_pack_u16); orc_program_add_destination (p, 2, "d1"); orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x00000010, "c1"); - orc_program_add_constant (p, 4, 0x80000000, "c2"); + orc_program_add_constant (p, 4, 0x80000000, "c1"); orc_program_add_temporary (p, 4, "t1"); - orc_program_append_2 (p, "xorl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C2, + 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_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + orc_program_append_2 (p, "convhlw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1); #endif @@ -2857,9 +3694,8 @@ audio_orc_pack_s16 (guint8 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, int i; orc_union16 *ORC_RESTRICT ptr0; const orc_union32 *ORC_RESTRICT ptr4; - orc_union32 var33; - orc_union16 var34; - orc_union32 var35; + orc_union32 var32; + orc_union16 var33; ptr0 = (orc_union16 *) d1; ptr4 = (orc_union32 *) s1; @@ -2867,13 +3703,11 @@ audio_orc_pack_s16 (guint8 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, for (i = 0; i < n; i++) { /* 0: loadl */ - var33 = ptr4[i]; - /* 1: shrsl */ - var35.i = var33.i >> 16; - /* 2: convlw */ - var34.i = var35.i; - /* 3: storew */ - ptr0[i] = var34; + var32 = ptr4[i]; + /* 1: convhlw */ + var33.i = ((orc_uint32) var32.i) >> 16; + /* 2: storew */ + ptr0[i] = var33; } } @@ -2886,9 +3720,8 @@ _backup_audio_orc_pack_s16 (OrcExecutor * ORC_RESTRICT ex) int n = ex->n; orc_union16 *ORC_RESTRICT ptr0; const orc_union32 *ORC_RESTRICT ptr4; - orc_union32 var33; - orc_union16 var34; - orc_union32 var35; + orc_union32 var32; + orc_union16 var33; ptr0 = (orc_union16 *) ex->arrays[0]; ptr4 = (orc_union32 *) ex->arrays[4]; @@ -2896,13 +3729,11 @@ _backup_audio_orc_pack_s16 (OrcExecutor * ORC_RESTRICT ex) for (i = 0; i < n; i++) { /* 0: loadl */ - var33 = ptr4[i]; - /* 1: shrsl */ - var35.i = var33.i >> 16; - /* 2: convlw */ - var34.i = var35.i; - /* 3: storew */ - ptr0[i] = var34; + var32 = ptr4[i]; + /* 1: convhlw */ + var33.i = ((orc_uint32) var32.i) >> 16; + /* 2: storew */ + ptr0[i] = var33; } } @@ -2924,8 +3755,8 @@ audio_orc_pack_s16 (guint8 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, #if 1 static const orc_uint8 bc[] = { 1, 9, 18, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, - 107, 95, 115, 49, 54, 11, 2, 2, 12, 4, 4, 14, 4, 16, 0, 0, - 0, 20, 4, 125, 32, 4, 16, 163, 0, 32, 2, 0, + 107, 95, 115, 49, 54, 11, 2, 2, 12, 4, 4, 164, 0, 4, 2, 0, + }; p = orc_program_new_from_static_bytecode (bc); orc_program_set_backup_function (p, _backup_audio_orc_pack_s16); @@ -2935,12 +3766,8 @@ audio_orc_pack_s16 (guint8 * ORC_RESTRICT d1, const gint32 * ORC_RESTRICT s1, orc_program_set_backup_function (p, _backup_audio_orc_pack_s16); orc_program_add_destination (p, 2, "d1"); orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x00000010, "c1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, + orc_program_append_2 (p, "convhlw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, ORC_VAR_D1); #endif @@ -2981,8 +3808,7 @@ audio_orc_pack_u16_swap (guint8 * ORC_RESTRICT d1, #endif orc_union16 var36; orc_union32 var37; - orc_union32 var38; - orc_union16 var39; + orc_union16 var38; ptr0 = (orc_union16 *) d1; ptr4 = (orc_union32 *) s1; @@ -2995,13 +3821,11 @@ audio_orc_pack_u16_swap (guint8 * ORC_RESTRICT d1, var34 = ptr4[i]; /* 2: xorl */ var37.i = var34.i ^ var35.i; - /* 3: shrul */ + /* 3: convhlw */ var38.i = ((orc_uint32) var37.i) >> 16; - /* 4: convlw */ - var39.i = var38.i; - /* 5: swapw */ - var36.i = ORC_SWAP_W (var39.i); - /* 6: storew */ + /* 4: swapw */ + var36.i = ORC_SWAP_W (var38.i); + /* 5: storew */ ptr0[i] = var36; } @@ -3023,8 +3847,7 @@ _backup_audio_orc_pack_u16_swap (OrcExecutor * ORC_RESTRICT ex) #endif orc_union16 var36; orc_union32 var37; - orc_union32 var38; - orc_union16 var39; + orc_union16 var38; ptr0 = (orc_union16 *) ex->arrays[0]; ptr4 = (orc_union32 *) ex->arrays[4]; @@ -3037,13 +3860,11 @@ _backup_audio_orc_pack_u16_swap (OrcExecutor * ORC_RESTRICT ex) var34 = ptr4[i]; /* 2: xorl */ var37.i = var34.i ^ var35.i; - /* 3: shrul */ + /* 3: convhlw */ var38.i = ((orc_uint32) var37.i) >> 16; - /* 4: convlw */ - var39.i = var38.i; - /* 5: swapw */ - var36.i = ORC_SWAP_W (var39.i); - /* 6: storew */ + /* 4: swapw */ + var36.i = ORC_SWAP_W (var38.i); + /* 5: storew */ ptr0[i] = var36; } @@ -3067,9 +3888,8 @@ audio_orc_pack_u16_swap (guint8 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 9, 23, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, 107, 95, 117, 49, 54, 95, 115, 119, 97, 112, 11, 2, 2, 12, 4, 4, - 14, 4, 0, 0, 0, 128, 14, 4, 16, 0, 0, 0, 20, 4, 20, 2, - 132, 32, 4, 16, 126, 32, 32, 17, 163, 33, 32, 183, 0, 33, 2, 0, - + 14, 4, 0, 0, 0, 128, 20, 4, 20, 2, 132, 32, 4, 16, 164, 33, + 32, 183, 0, 33, 2, 0, }; p = orc_program_new_from_static_bytecode (bc); orc_program_set_backup_function (p, _backup_audio_orc_pack_u16_swap); @@ -3080,15 +3900,12 @@ audio_orc_pack_u16_swap (guint8 * ORC_RESTRICT d1, 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, 4, 0x00000010, "c2"); 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_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1, + orc_program_append_2 (p, "convhlw", 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); @@ -3123,10 +3940,9 @@ audio_orc_pack_s16_swap (guint8 * ORC_RESTRICT d1, int i; orc_union16 *ORC_RESTRICT ptr0; const orc_union32 *ORC_RESTRICT ptr4; - orc_union32 var34; + orc_union32 var33; + orc_union16 var34; orc_union16 var35; - orc_union32 var36; - orc_union16 var37; ptr0 = (orc_union16 *) d1; ptr4 = (orc_union32 *) s1; @@ -3134,15 +3950,13 @@ audio_orc_pack_s16_swap (guint8 * ORC_RESTRICT d1, for (i = 0; i < n; i++) { /* 0: loadl */ - var34 = ptr4[i]; - /* 1: shrsl */ - var36.i = var34.i >> 16; - /* 2: convlw */ - var37.i = var36.i; - /* 3: swapw */ - var35.i = ORC_SWAP_W (var37.i); - /* 4: storew */ - ptr0[i] = var35; + var33 = ptr4[i]; + /* 1: convhlw */ + var35.i = ((orc_uint32) var33.i) >> 16; + /* 2: swapw */ + var34.i = ORC_SWAP_W (var35.i); + /* 3: storew */ + ptr0[i] = var34; } } @@ -3155,10 +3969,9 @@ _backup_audio_orc_pack_s16_swap (OrcExecutor * ORC_RESTRICT ex) int n = ex->n; orc_union16 *ORC_RESTRICT ptr0; const orc_union32 *ORC_RESTRICT ptr4; - orc_union32 var34; + orc_union32 var33; + orc_union16 var34; orc_union16 var35; - orc_union32 var36; - orc_union16 var37; ptr0 = (orc_union16 *) ex->arrays[0]; ptr4 = (orc_union32 *) ex->arrays[4]; @@ -3166,15 +3979,13 @@ _backup_audio_orc_pack_s16_swap (OrcExecutor * ORC_RESTRICT ex) for (i = 0; i < n; i++) { /* 0: loadl */ - var34 = ptr4[i]; - /* 1: shrsl */ - var36.i = var34.i >> 16; - /* 2: convlw */ - var37.i = var36.i; - /* 3: swapw */ - var35.i = ORC_SWAP_W (var37.i); - /* 4: storew */ - ptr0[i] = var35; + var33 = ptr4[i]; + /* 1: convhlw */ + var35.i = ((orc_uint32) var33.i) >> 16; + /* 2: swapw */ + var34.i = ORC_SWAP_W (var35.i); + /* 3: storew */ + ptr0[i] = var34; } } @@ -3197,8 +4008,7 @@ audio_orc_pack_s16_swap (guint8 * ORC_RESTRICT d1, static const orc_uint8 bc[] = { 1, 9, 23, 97, 117, 100, 105, 111, 95, 111, 114, 99, 95, 112, 97, 99, 107, 95, 115, 49, 54, 95, 115, 119, 97, 112, 11, 2, 2, 12, 4, 4, - 14, 4, 16, 0, 0, 0, 20, 4, 20, 2, 125, 32, 4, 16, 163, 33, - 32, 183, 0, 33, 2, 0, + 20, 2, 164, 32, 4, 183, 0, 32, 2, 0, }; p = orc_program_new_from_static_bytecode (bc); orc_program_set_backup_function (p, _backup_audio_orc_pack_s16_swap); @@ -3208,15 +4018,11 @@ audio_orc_pack_s16_swap (guint8 * ORC_RESTRICT d1, orc_program_set_backup_function (p, _backup_audio_orc_pack_s16_swap); orc_program_add_destination (p, 2, "d1"); orc_program_add_source (p, 4, "s1"); - orc_program_add_constant (p, 4, 0x00000010, "c1"); - orc_program_add_temporary (p, 4, "t1"); - orc_program_add_temporary (p, 2, "t2"); + orc_program_add_temporary (p, 2, "t1"); - orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1, + orc_program_append_2 (p, "convhlw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, 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_program_append_2 (p, "swapw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1); #endif diff --git a/gst-libs/gst/audio/gstaudiopack-dist.h b/gst-libs/gst/audio/gstaudiopack-dist.h index 0866f31b50..bb9c5f20b6 100644 --- a/gst-libs/gst/audio/gstaudiopack-dist.h +++ b/gst-libs/gst/audio/gstaudiopack-dist.h @@ -81,11 +81,17 @@ typedef union { orc_int64 i; double f; orc_int32 x2[2]; float x2f[2]; orc_int16 #endif void audio_orc_unpack_u8 (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n); +void audio_orc_unpack_u8_trunc (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n); void audio_orc_unpack_s8 (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n); +void audio_orc_unpack_s8_trunc (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n); void audio_orc_unpack_u16 (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n); +void audio_orc_unpack_u16_trunc (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n); void audio_orc_unpack_s16 (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n); +void audio_orc_unpack_s16_trunc (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n); void audio_orc_unpack_u16_swap (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n); +void audio_orc_unpack_u16_swap_trunc (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n); void audio_orc_unpack_s16_swap (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n); +void audio_orc_unpack_s16_swap_trunc (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n); void audio_orc_unpack_u24_32 (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n); void audio_orc_unpack_s24_32 (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n); void audio_orc_unpack_u24_32_swap (gint32 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int n);