audioconvert: convert from liboil to orc
authorDavid Schleef <ds@schleef.org>
Mon, 7 Jun 2010 06:46:41 +0000 (23:46 -0700)
committerDavid Schleef <ds@schleef.org>
Tue, 8 Jun 2010 06:58:53 +0000 (23:58 -0700)
gst/audioconvert/Makefile.am
gst/audioconvert/audioconvert.c
gst/audioconvert/gstaudioconvertorc-dist.c [new file with mode: 0644]
gst/audioconvert/gstaudioconvertorc-dist.h [new file with mode: 0644]
gst/audioconvert/gstaudioconvertorc.orc [new file with mode: 0644]

index 504a547..6f34bc6 100644 (file)
@@ -1,17 +1,21 @@
 plugin_LTLIBRARIES = libgstaudioconvert.la
 
+ORC_SOURCE=gstaudioconvertorc
+include $(top_srcdir)/common/orc.mak
+
 libgstaudioconvert_la_SOURCES = \
        gstaudioconvert.c \
        audioconvert.c \
        gstchannelmix.c \
        gstaudioquantize.c \
        plugin.c
+nodist_libgstaudioconvert_la_SOURCES = $(ORC_NODIST_SOURCES)
 
-libgstaudioconvert_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS)
+libgstaudioconvert_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(ORC_CFLAGS)
 libgstaudioconvert_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
 libgstaudioconvert_la_LIBADD = \
        $(top_builddir)/gst-libs/gst/audio/libgstaudio-@GST_MAJORMINOR@.la \
-       $(GST_BASE_LIBS) $(GST_LIBS) $(LIBM)
+       $(GST_BASE_LIBS) $(GST_LIBS) $(ORC_LIBS) $(LIBM)
 libgstaudioconvert_la_LIBTOOLFLAGS = --tag=disable-static
 
 noinst_HEADERS = \
@@ -29,3 +33,4 @@ noinst_HEADERS = \
 #channelmixtest_LDADD = libgstaudioconvert.la \
 #      $(top_builddir)/gst-libs/gst/audio/libgstaudio-@GST_MAJORMINOR@.la \
 #      $(GST_LIBS)
+
index 25bfb6f..8ac7d54 100644 (file)
 #include "gstaudioquantize.h"
 #include "audioconvert.h"
 #include "gst/floatcast/floatcast.h"
+#include "gstaudioconvertorc.h"
+
+#if G_BYTE_ORDER == G_LITTLE_ENDIAN
+#define orc_audio_convert_unpack_u16_le orc_audio_convert_unpack_u16
+#define orc_audio_convert_unpack_u16_be orc_audio_convert_unpack_u16_swap
+#define orc_audio_convert_unpack_s16_le orc_audio_convert_unpack_s16
+#define orc_audio_convert_unpack_s16_be orc_audio_convert_unpack_s16_swap
+#define orc_audio_convert_unpack_u32_le orc_audio_convert_unpack_u32
+#define orc_audio_convert_unpack_u32_be orc_audio_convert_unpack_u32_swap
+#define orc_audio_convert_unpack_s32_le orc_audio_convert_unpack_s32
+#define orc_audio_convert_unpack_s32_be orc_audio_convert_unpack_s32_swap
+#define orc_audio_convert_pack_u16_le orc_audio_convert_pack_u16
+#define orc_audio_convert_pack_u16_be orc_audio_convert_pack_u16_swap
+#define orc_audio_convert_pack_s16_le orc_audio_convert_pack_s16
+#define orc_audio_convert_pack_s16_be orc_audio_convert_pack_s16_swap
+#define orc_audio_convert_pack_u32_le orc_audio_convert_pack_u32
+#define orc_audio_convert_pack_u32_be orc_audio_convert_pack_u32_swap
+#define orc_audio_convert_pack_s32_le orc_audio_convert_pack_s32
+#define orc_audio_convert_pack_s32_be orc_audio_convert_pack_s32_swap
+#else
+#define orc_audio_convert_unpack_u16_be orc_audio_convert_unpack_u16
+#define orc_audio_convert_unpack_u16_le orc_audio_convert_unpack_u16_swap
+#define orc_audio_convert_unpack_s16_be orc_audio_convert_unpack_s16
+#define orc_audio_convert_unpack_s16_le orc_audio_convert_unpack_s16_swap
+#define orc_audio_convert_unpack_u32_be orc_audio_convert_unpack_u32
+#define orc_audio_convert_unpack_u32_le orc_audio_convert_unpack_u32_swap
+#define orc_audio_convert_unpack_s32_be orc_audio_convert_unpack_s32
+#define orc_audio_convert_unpack_s32_le orc_audio_convert_unpack_s32_swap
+#define orc_audio_convert_pack_u16_be orc_audio_convert_pack_u16
+#define orc_audio_convert_pack_u16_le orc_audio_convert_pack_u16_swap
+#define orc_audio_convert_pack_s16_be orc_audio_convert_pack_s16
+#define orc_audio_convert_pack_s16_le orc_audio_convert_pack_s16_swap
+#define orc_audio_convert_pack_u32_be orc_audio_convert_pack_u32
+#define orc_audio_convert_pack_u32_le orc_audio_convert_pack_u32_swap
+#define orc_audio_convert_pack_s32_be orc_audio_convert_pack_s32
+#define orc_audio_convert_pack_s32_le orc_audio_convert_pack_s32_swap
+#endif
 
 /* sign bit in the intermediate format */
 #define SIGNED  (1U<<31)
@@ -39,6 +76,8 @@
  */
 #define MAKE_UNPACK_FUNC_NAME(name)                                     \
 audio_convert_unpack_##name
+#define MAKE_ORC_UNPACK_FUNC_NAME(name)                                 \
+orc_audio_convert_unpack_##name
 
 /* unpack from integer to signed integer 32 */
 #define MAKE_UNPACK_FUNC_II(name, stride, sign, READ_FUNC)              \
@@ -52,6 +91,15 @@ MAKE_UNPACK_FUNC_NAME (name) (guint8 *src, gint32 *dst,                 \
   }                                                                     \
 }
 
+/* unpack from integer to signed integer 32 with orc */
+#define MAKE_UNPACK_FUNC_ORC_II(name, stride, sign, READ_FUNC)             \
+static void                                                             \
+MAKE_UNPACK_FUNC_NAME (name) (guint8 *src, gint32 *dst,                 \
+        gint scale, gint count)                                         \
+{                                                                       \
+  MAKE_ORC_UNPACK_FUNC_NAME (name) (dst, src, scale, count);            \
+}
+
 /* unpack from float to signed integer 32 */
 #define MAKE_UNPACK_FUNC_FI(name, type, READ_FUNC)                            \
 static void                                                                   \
@@ -98,20 +146,22 @@ MAKE_UNPACK_FUNC_NAME (name) (guint8 * src, gdouble * dst, gint scale,        \
 #define READ32_FROM_LE(p) GST_READ_UINT32_LE (p)
 #define READ32_FROM_BE(p) GST_READ_UINT32_BE (p)
 
-MAKE_UNPACK_FUNC_II (u8, 1, SIGNED, READ8);
-MAKE_UNPACK_FUNC_II (s8, 1, 0, READ8);
-MAKE_UNPACK_FUNC_II (u16_le, 2, SIGNED, READ16_FROM_LE);
-MAKE_UNPACK_FUNC_II (s16_le, 2, 0, READ16_FROM_LE);
-MAKE_UNPACK_FUNC_II (u16_be, 2, SIGNED, READ16_FROM_BE);
-MAKE_UNPACK_FUNC_II (s16_be, 2, 0, READ16_FROM_BE);
+
+
+MAKE_UNPACK_FUNC_ORC_II (u8, 1, SIGNED, READ8);
+MAKE_UNPACK_FUNC_ORC_II (s8, 1, 0, READ8);
+MAKE_UNPACK_FUNC_ORC_II (u16_le, 2, SIGNED, READ16_FROM_LE);
+MAKE_UNPACK_FUNC_ORC_II (s16_le, 2, 0, READ16_FROM_LE);
+MAKE_UNPACK_FUNC_ORC_II (u16_be, 2, SIGNED, READ16_FROM_BE);
+MAKE_UNPACK_FUNC_ORC_II (s16_be, 2, 0, READ16_FROM_BE);
 MAKE_UNPACK_FUNC_II (u24_le, 3, SIGNED, READ24_FROM_LE);
 MAKE_UNPACK_FUNC_II (s24_le, 3, 0, READ24_FROM_LE);
 MAKE_UNPACK_FUNC_II (u24_be, 3, SIGNED, READ24_FROM_BE);
 MAKE_UNPACK_FUNC_II (s24_be, 3, 0, READ24_FROM_BE);
-MAKE_UNPACK_FUNC_II (u32_le, 4, SIGNED, READ32_FROM_LE);
-MAKE_UNPACK_FUNC_II (s32_le, 4, 0, READ32_FROM_LE);
-MAKE_UNPACK_FUNC_II (u32_be, 4, SIGNED, READ32_FROM_BE);
-MAKE_UNPACK_FUNC_II (s32_be, 4, 0, READ32_FROM_BE);
+MAKE_UNPACK_FUNC_ORC_II (u32_le, 4, SIGNED, READ32_FROM_LE);
+MAKE_UNPACK_FUNC_ORC_II (s32_le, 4, 0, READ32_FROM_LE);
+MAKE_UNPACK_FUNC_ORC_II (u32_be, 4, SIGNED, READ32_FROM_BE);
+MAKE_UNPACK_FUNC_ORC_II (s32_be, 4, 0, READ32_FROM_BE);
 MAKE_UNPACK_FUNC_FI (float_le, gfloat, GFLOAT_FROM_LE);
 MAKE_UNPACK_FUNC_FI (float_be, gfloat, GFLOAT_FROM_BE);
 MAKE_UNPACK_FUNC_FI (double_le, gdouble, GDOUBLE_FROM_LE);
@@ -143,6 +193,8 @@ MAKE_UNPACK_FUNC_IF (s32_be_float, 4, 0, READ32_FROM_BE);
  */
 #define MAKE_PACK_FUNC_NAME(name)                                       \
 audio_convert_pack_##name
+#define MAKE_PACK_FUNC_NAME_ORC(name)                                       \
+orc_audio_convert_pack_##name
 
 /*
  * These functions convert the signed 32 bit integers to the
@@ -156,6 +208,15 @@ audio_convert_pack_##name
  *    function for the target width.
  */
 
+/* pack from signed integer 32 to integer using Orc */
+#define MAKE_PACK_FUNC_ORC_II(name, stride, sign, WRITE_FUNC)           \
+static void                                                             \
+MAKE_PACK_FUNC_NAME (name) (gint32 *src, guint8 * dst,                  \
+        gint scale, gint count)                                         \
+{                                                                       \
+  MAKE_PACK_FUNC_NAME_ORC (name) (dst, src, scale, count);              \
+}
+
 /* pack from signed integer 32 to integer */
 #define MAKE_PACK_FUNC_II(name, stride, sign, WRITE_FUNC)               \
 static void                                                             \
@@ -234,20 +295,20 @@ MAKE_PACK_FUNC_NAME (name) (gdouble * src, guint8 * dst, gint scale,    \
 #define WRITE32_TO_LE(p,v) GST_WRITE_UINT32_LE (p, (guint32)(v))
 #define WRITE32_TO_BE(p,v) GST_WRITE_UINT32_BE (p, (guint32)(v))
 
-MAKE_PACK_FUNC_II (u8, 1, SIGNED, WRITE8);
-MAKE_PACK_FUNC_II (s8, 1, 0, WRITE8);
-MAKE_PACK_FUNC_II (u16_le, 2, SIGNED, WRITE16_TO_LE);
-MAKE_PACK_FUNC_II (s16_le, 2, 0, WRITE16_TO_LE);
-MAKE_PACK_FUNC_II (u16_be, 2, SIGNED, WRITE16_TO_BE);
-MAKE_PACK_FUNC_II (s16_be, 2, 0, WRITE16_TO_BE);
+MAKE_PACK_FUNC_ORC_II (u8, 1, SIGNED, WRITE8);
+MAKE_PACK_FUNC_ORC_II (s8, 1, 0, WRITE8);
+MAKE_PACK_FUNC_ORC_II (u16_le, 2, SIGNED, WRITE16_TO_LE);
+MAKE_PACK_FUNC_ORC_II (s16_le, 2, 0, WRITE16_TO_LE);
+MAKE_PACK_FUNC_ORC_II (u16_be, 2, SIGNED, WRITE16_TO_BE);
+MAKE_PACK_FUNC_ORC_II (s16_be, 2, 0, WRITE16_TO_BE);
 MAKE_PACK_FUNC_II (u24_le, 3, SIGNED, WRITE24_TO_LE);
 MAKE_PACK_FUNC_II (s24_le, 3, 0, WRITE24_TO_LE);
 MAKE_PACK_FUNC_II (u24_be, 3, SIGNED, WRITE24_TO_BE);
 MAKE_PACK_FUNC_II (s24_be, 3, 0, WRITE24_TO_BE);
-MAKE_PACK_FUNC_II (u32_le, 4, SIGNED, WRITE32_TO_LE);
-MAKE_PACK_FUNC_II (s32_le, 4, 0, WRITE32_TO_LE);
-MAKE_PACK_FUNC_II (u32_be, 4, SIGNED, WRITE32_TO_BE);
-MAKE_PACK_FUNC_II (s32_be, 4, 0, WRITE32_TO_BE);
+MAKE_PACK_FUNC_ORC_II (u32_le, 4, SIGNED, WRITE32_TO_LE);
+MAKE_PACK_FUNC_ORC_II (s32_le, 4, 0, WRITE32_TO_LE);
+MAKE_PACK_FUNC_ORC_II (u32_be, 4, SIGNED, WRITE32_TO_BE);
+MAKE_PACK_FUNC_ORC_II (s32_be, 4, 0, WRITE32_TO_BE);
 MAKE_PACK_FUNC_IF (float_le, gfloat, GFLOAT_TO_LE);
 MAKE_PACK_FUNC_IF (float_be, gfloat, GFLOAT_TO_BE);
 MAKE_PACK_FUNC_IF (double_le, gdouble, GDOUBLE_TO_LE);
diff --git a/gst/audioconvert/gstaudioconvertorc-dist.c b/gst/audioconvert/gstaudioconvertorc-dist.c
new file mode 100644 (file)
index 0000000..421d2dc
--- /dev/null
@@ -0,0 +1,2238 @@
+
+/* autogenerated from gstaudioconvertorc.orc */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+#ifndef DISABLE_ORC
+#include <orc/orc.h>
+#else
+#include <stdint.h>
+#endif
+#include <glib.h>
+
+void orc_audio_convert_unpack_u8 (gint32 * d1, const guint8 * s1, int p1,
+    int n);
+void orc_audio_convert_unpack_s8 (gint32 * d1, const guint8 * s1, int p1,
+    int n);
+void orc_audio_convert_unpack_u16 (gint32 * d1, const guint8 * s1, int p1,
+    int n);
+void orc_audio_convert_unpack_s16 (gint32 * d1, const guint8 * s1, int p1,
+    int n);
+void orc_audio_convert_unpack_u16_swap (gint32 * d1, const guint8 * s1, int p1,
+    int n);
+void orc_audio_convert_unpack_s16_swap (gint32 * d1, const guint8 * s1, int p1,
+    int n);
+void orc_audio_convert_unpack_u32 (gint32 * d1, const guint8 * s1, int p1,
+    int n);
+void orc_audio_convert_unpack_s32 (gint32 * d1, const guint8 * s1, int p1,
+    int n);
+void orc_audio_convert_unpack_u32_swap (gint32 * d1, const guint8 * s1, int p1,
+    int n);
+void orc_audio_convert_unpack_s32_swap (gint32 * d1, const guint8 * s1, int p1,
+    int n);
+void orc_audio_convert_pack_u8 (guint8 * d1, const gint32 * s1, int p1, int n);
+void orc_audio_convert_pack_s8 (guint8 * d1, const gint32 * s1, int p1, int n);
+void orc_audio_convert_pack_u16 (guint8 * d1, const gint32 * s1, int p1, int n);
+void orc_audio_convert_pack_s16 (guint8 * d1, const gint32 * s1, int p1, int n);
+void orc_audio_convert_pack_u16_swap (guint8 * d1, const gint32 * s1, int p1,
+    int n);
+void orc_audio_convert_pack_s16_swap (guint8 * d1, const gint32 * s1, int p1,
+    int n);
+void orc_audio_convert_pack_u32 (guint8 * d1, const gint32 * s1, int p1, int n);
+void orc_audio_convert_pack_s32 (guint8 * d1, const gint32 * s1, int p1, int n);
+void orc_audio_convert_pack_u32_swap (guint8 * d1, const gint32 * s1, int p1,
+    int n);
+void orc_audio_convert_pack_s32_swap (guint8 * d1, const gint32 * s1, int p1,
+    int n);
+
+
+/* begin Orc C target preamble */
+#define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x)))
+#define ORC_ABS(a) ((a)<0 ? -(a) : (a))
+#define ORC_MIN(a,b) ((a)<(b) ? (a) : (b))
+#define ORC_MAX(a,b) ((a)>(b) ? (a) : (b))
+#define ORC_SB_MAX 127
+#define ORC_SB_MIN (-1-ORC_SB_MAX)
+#define ORC_UB_MAX 255
+#define ORC_UB_MIN 0
+#define ORC_SW_MAX 32767
+#define ORC_SW_MIN (-1-ORC_SW_MAX)
+#define ORC_UW_MAX 65535
+#define ORC_UW_MIN 0
+#define ORC_SL_MAX 2147483647
+#define ORC_SL_MIN (-1-ORC_SL_MAX)
+#define ORC_UL_MAX 4294967295U
+#define ORC_UL_MIN 0
+#define ORC_CLAMP_SB(x) ORC_CLAMP(x,ORC_SB_MIN,ORC_SB_MAX)
+#define ORC_CLAMP_UB(x) ORC_CLAMP(x,ORC_UB_MIN,ORC_UB_MAX)
+#define ORC_CLAMP_SW(x) ORC_CLAMP(x,ORC_SW_MIN,ORC_SW_MAX)
+#define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX)
+#define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX)
+#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_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset)))
+#define ORC_AS_FLOAT(x) (((union { int i; float f; } *)(&x))->f)
+typedef union
+{
+  int32_t i;
+  float f;
+} orc_union32;
+typedef union
+{
+  int64_t i;
+  double f;
+} orc_union64;
+/* end Orc C target preamble */
+
+
+
+/* orc_audio_convert_unpack_u8 */
+#ifdef DISABLE_ORC
+void
+orc_audio_convert_unpack_u8 (gint32 * d1, const guint8 * s1, int p1, int n)
+{
+  int i;
+  orc_union32 var0;
+  orc_union32 *ptr0;
+  int8_t var4;
+  const int8_t *ptr4;
+  const orc_union32 var16 = { 0x80000000 };
+  const orc_union32 var24 = p1;
+  int16_t var32;
+  orc_union32 var33;
+  orc_union32 var34;
+
+  ptr0 = (orc_union32 *) d1;
+  ptr4 = (int8_t *) s1;
+
+  for (i = 0; i < n; i++) {
+    var4 = *ptr4;
+    ptr4++;
+    /* 0: convubw */
+    var32 = (uint8_t) var4;
+    /* 1: convuwl */
+    var33.i = (uint16_t) var32;
+    /* 2: shll */
+    var34.i = var33.i << var24.i;
+    /* 3: xorl */
+    var0.i = var34.i ^ var16.i;
+    *ptr0 = var0;
+    ptr0++;
+  }
+
+}
+
+#else
+static void
+_backup_orc_audio_convert_unpack_u8 (OrcExecutor * ex)
+{
+  int i;
+  int n = ex->n;
+  orc_union32 var0;
+  orc_union32 *ptr0;
+  int8_t var4;
+  const int8_t *ptr4;
+  const orc_union32 var16 = { 0x80000000 };
+  const orc_union32 var24 = *(orc_union32 *) (ex->params + 24);
+  int16_t var32;
+  orc_union32 var33;
+  orc_union32 var34;
+
+  ptr0 = (orc_union32 *) ex->arrays[0];
+  ptr4 = (int8_t *) ex->arrays[4];
+
+  for (i = 0; i < n; i++) {
+    var4 = *ptr4;
+    ptr4++;
+    /* 0: convubw */
+    var32 = (uint8_t) var4;
+    /* 1: convuwl */
+    var33.i = (uint16_t) var32;
+    /* 2: shll */
+    var34.i = var33.i << var24.i;
+    /* 3: xorl */
+    var0.i = var34.i ^ var16.i;
+    *ptr0 = var0;
+    ptr0++;
+  }
+
+}
+
+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;
+  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 (p, "convubw", ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1);
+      orc_program_append (p, "convuwl", ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
+      orc_program_append (p, "shll", ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1);
+      orc_program_append (p, "xorl", ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_C1);
+
+      result = orc_program_compile (p);
+    }
+    p_inited = TRUE;
+    orc_once_mutex_unlock ();
+  }
+  ex->program = p;
+
+  ex->n = n;
+  ex->arrays[ORC_VAR_D1] = d1;
+  ex->arrays[ORC_VAR_S1] = (void *) s1;
+  ex->params[ORC_VAR_P1] = p1;
+
+  func = p->code_exec;
+  func (ex);
+}
+#endif
+
+
+/* orc_audio_convert_unpack_s8 */
+#ifdef DISABLE_ORC
+void
+orc_audio_convert_unpack_s8 (gint32 * d1, const guint8 * s1, int p1, int n)
+{
+  int i;
+  orc_union32 var0;
+  orc_union32 *ptr0;
+  int8_t var4;
+  const int8_t *ptr4;
+  const orc_union32 var24 = p1;
+  int16_t var32;
+  orc_union32 var33;
+
+  ptr0 = (orc_union32 *) d1;
+  ptr4 = (int8_t *) s1;
+
+  for (i = 0; i < n; i++) {
+    var4 = *ptr4;
+    ptr4++;
+    /* 0: convubw */
+    var32 = (uint8_t) var4;
+    /* 1: convuwl */
+    var33.i = (uint16_t) var32;
+    /* 2: shll */
+    var0.i = var33.i << var24.i;
+    *ptr0 = var0;
+    ptr0++;
+  }
+
+}
+
+#else
+static void
+_backup_orc_audio_convert_unpack_s8 (OrcExecutor * ex)
+{
+  int i;
+  int n = ex->n;
+  orc_union32 var0;
+  orc_union32 *ptr0;
+  int8_t var4;
+  const int8_t *ptr4;
+  const orc_union32 var24 = *(orc_union32 *) (ex->params + 24);
+  int16_t var32;
+  orc_union32 var33;
+
+  ptr0 = (orc_union32 *) ex->arrays[0];
+  ptr4 = (int8_t *) ex->arrays[4];
+
+  for (i = 0; i < n; i++) {
+    var4 = *ptr4;
+    ptr4++;
+    /* 0: convubw */
+    var32 = (uint8_t) var4;
+    /* 1: convuwl */
+    var33.i = (uint16_t) var32;
+    /* 2: shll */
+    var0.i = var33.i << var24.i;
+    *ptr0 = var0;
+    ptr0++;
+  }
+
+}
+
+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;
+  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 (p, "convubw", ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1);
+      orc_program_append (p, "convuwl", ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
+      orc_program_append (p, "shll", ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_P1);
+
+      result = orc_program_compile (p);
+    }
+    p_inited = TRUE;
+    orc_once_mutex_unlock ();
+  }
+  ex->program = p;
+
+  ex->n = n;
+  ex->arrays[ORC_VAR_D1] = d1;
+  ex->arrays[ORC_VAR_S1] = (void *) s1;
+  ex->params[ORC_VAR_P1] = p1;
+
+  func = p->code_exec;
+  func (ex);
+}
+#endif
+
+
+/* orc_audio_convert_unpack_u16 */
+#ifdef DISABLE_ORC
+void
+orc_audio_convert_unpack_u16 (gint32 * d1, const guint8 * s1, int p1, int n)
+{
+  int i;
+  orc_union32 var0;
+  orc_union32 *ptr0;
+  int16_t var4;
+  const int16_t *ptr4;
+  const orc_union32 var16 = { 0x80000000 };
+  const orc_union32 var24 = p1;
+  orc_union32 var32;
+  orc_union32 var33;
+
+  ptr0 = (orc_union32 *) d1;
+  ptr4 = (int16_t *) s1;
+
+  for (i = 0; i < n; i++) {
+    var4 = *ptr4;
+    ptr4++;
+    /* 0: convuwl */
+    var32.i = (uint16_t) var4;
+    /* 1: shll */
+    var33.i = var32.i << var24.i;
+    /* 2: xorl */
+    var0.i = var33.i ^ var16.i;
+    *ptr0 = var0;
+    ptr0++;
+  }
+
+}
+
+#else
+static void
+_backup_orc_audio_convert_unpack_u16 (OrcExecutor * ex)
+{
+  int i;
+  int n = ex->n;
+  orc_union32 var0;
+  orc_union32 *ptr0;
+  int16_t var4;
+  const int16_t *ptr4;
+  const orc_union32 var16 = { 0x80000000 };
+  const orc_union32 var24 = *(orc_union32 *) (ex->params + 24);
+  orc_union32 var32;
+  orc_union32 var33;
+
+  ptr0 = (orc_union32 *) ex->arrays[0];
+  ptr4 = (int16_t *) ex->arrays[4];
+
+  for (i = 0; i < n; i++) {
+    var4 = *ptr4;
+    ptr4++;
+    /* 0: convuwl */
+    var32.i = (uint16_t) var4;
+    /* 1: shll */
+    var33.i = var32.i << var24.i;
+    /* 2: xorl */
+    var0.i = var33.i ^ var16.i;
+    *ptr0 = var0;
+    ptr0++;
+  }
+
+}
+
+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;
+  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 (p, "convuwl", ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1);
+      orc_program_append (p, "shll", ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1);
+      orc_program_append (p, "xorl", ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1);
+
+      result = orc_program_compile (p);
+    }
+    p_inited = TRUE;
+    orc_once_mutex_unlock ();
+  }
+  ex->program = p;
+
+  ex->n = n;
+  ex->arrays[ORC_VAR_D1] = d1;
+  ex->arrays[ORC_VAR_S1] = (void *) s1;
+  ex->params[ORC_VAR_P1] = p1;
+
+  func = p->code_exec;
+  func (ex);
+}
+#endif
+
+
+/* orc_audio_convert_unpack_s16 */
+#ifdef DISABLE_ORC
+void
+orc_audio_convert_unpack_s16 (gint32 * d1, const guint8 * s1, int p1, int n)
+{
+  int i;
+  orc_union32 var0;
+  orc_union32 *ptr0;
+  int16_t var4;
+  const int16_t *ptr4;
+  const orc_union32 var24 = p1;
+  orc_union32 var32;
+
+  ptr0 = (orc_union32 *) d1;
+  ptr4 = (int16_t *) s1;
+
+  for (i = 0; i < n; i++) {
+    var4 = *ptr4;
+    ptr4++;
+    /* 0: convuwl */
+    var32.i = (uint16_t) var4;
+    /* 1: shll */
+    var0.i = var32.i << var24.i;
+    *ptr0 = var0;
+    ptr0++;
+  }
+
+}
+
+#else
+static void
+_backup_orc_audio_convert_unpack_s16 (OrcExecutor * ex)
+{
+  int i;
+  int n = ex->n;
+  orc_union32 var0;
+  orc_union32 *ptr0;
+  int16_t var4;
+  const int16_t *ptr4;
+  const orc_union32 var24 = *(orc_union32 *) (ex->params + 24);
+  orc_union32 var32;
+
+  ptr0 = (orc_union32 *) ex->arrays[0];
+  ptr4 = (int16_t *) ex->arrays[4];
+
+  for (i = 0; i < n; i++) {
+    var4 = *ptr4;
+    ptr4++;
+    /* 0: convuwl */
+    var32.i = (uint16_t) var4;
+    /* 1: shll */
+    var0.i = var32.i << var24.i;
+    *ptr0 = var0;
+    ptr0++;
+  }
+
+}
+
+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;
+  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 (p, "convuwl", ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1);
+      orc_program_append (p, "shll", ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_P1);
+
+      result = orc_program_compile (p);
+    }
+    p_inited = TRUE;
+    orc_once_mutex_unlock ();
+  }
+  ex->program = p;
+
+  ex->n = n;
+  ex->arrays[ORC_VAR_D1] = d1;
+  ex->arrays[ORC_VAR_S1] = (void *) s1;
+  ex->params[ORC_VAR_P1] = p1;
+
+  func = p->code_exec;
+  func (ex);
+}
+#endif
+
+
+/* orc_audio_convert_unpack_u16_swap */
+#ifdef DISABLE_ORC
+void
+orc_audio_convert_unpack_u16_swap (gint32 * d1, const guint8 * s1, int p1,
+    int n)
+{
+  int i;
+  orc_union32 var0;
+  orc_union32 *ptr0;
+  int16_t var4;
+  const int16_t *ptr4;
+  const orc_union32 var16 = { 0x80000000 };
+  const orc_union32 var24 = p1;
+  int16_t var32;
+  orc_union32 var33;
+  orc_union32 var34;
+
+  ptr0 = (orc_union32 *) d1;
+  ptr4 = (int16_t *) s1;
+
+  for (i = 0; i < n; i++) {
+    var4 = *ptr4;
+    ptr4++;
+    /* 0: swapw */
+    var32 = ORC_SWAP_W (var4);
+    /* 1: convuwl */
+    var33.i = (uint16_t) var32;
+    /* 2: shll */
+    var34.i = var33.i << var24.i;
+    /* 3: xorl */
+    var0.i = var34.i ^ var16.i;
+    *ptr0 = var0;
+    ptr0++;
+  }
+
+}
+
+#else
+static void
+_backup_orc_audio_convert_unpack_u16_swap (OrcExecutor * ex)
+{
+  int i;
+  int n = ex->n;
+  orc_union32 var0;
+  orc_union32 *ptr0;
+  int16_t var4;
+  const int16_t *ptr4;
+  const orc_union32 var16 = { 0x80000000 };
+  const orc_union32 var24 = *(orc_union32 *) (ex->params + 24);
+  int16_t var32;
+  orc_union32 var33;
+  orc_union32 var34;
+
+  ptr0 = (orc_union32 *) ex->arrays[0];
+  ptr4 = (int16_t *) ex->arrays[4];
+
+  for (i = 0; i < n; i++) {
+    var4 = *ptr4;
+    ptr4++;
+    /* 0: swapw */
+    var32 = ORC_SWAP_W (var4);
+    /* 1: convuwl */
+    var33.i = (uint16_t) var32;
+    /* 2: shll */
+    var34.i = var33.i << var24.i;
+    /* 3: xorl */
+    var0.i = var34.i ^ var16.i;
+    *ptr0 = var0;
+    ptr0++;
+  }
+
+}
+
+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;
+  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 (p, "swapw", ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1);
+      orc_program_append (p, "convuwl", ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
+      orc_program_append (p, "shll", ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1);
+      orc_program_append (p, "xorl", ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_C1);
+
+      result = orc_program_compile (p);
+    }
+    p_inited = TRUE;
+    orc_once_mutex_unlock ();
+  }
+  ex->program = p;
+
+  ex->n = n;
+  ex->arrays[ORC_VAR_D1] = d1;
+  ex->arrays[ORC_VAR_S1] = (void *) s1;
+  ex->params[ORC_VAR_P1] = p1;
+
+  func = p->code_exec;
+  func (ex);
+}
+#endif
+
+
+/* orc_audio_convert_unpack_s16_swap */
+#ifdef DISABLE_ORC
+void
+orc_audio_convert_unpack_s16_swap (gint32 * d1, const guint8 * s1, int p1,
+    int n)
+{
+  int i;
+  orc_union32 var0;
+  orc_union32 *ptr0;
+  int16_t var4;
+  const int16_t *ptr4;
+  const orc_union32 var24 = p1;
+  int16_t var32;
+  orc_union32 var33;
+
+  ptr0 = (orc_union32 *) d1;
+  ptr4 = (int16_t *) s1;
+
+  for (i = 0; i < n; i++) {
+    var4 = *ptr4;
+    ptr4++;
+    /* 0: swapw */
+    var32 = ORC_SWAP_W (var4);
+    /* 1: convuwl */
+    var33.i = (uint16_t) var32;
+    /* 2: shll */
+    var0.i = var33.i << var24.i;
+    *ptr0 = var0;
+    ptr0++;
+  }
+
+}
+
+#else
+static void
+_backup_orc_audio_convert_unpack_s16_swap (OrcExecutor * ex)
+{
+  int i;
+  int n = ex->n;
+  orc_union32 var0;
+  orc_union32 *ptr0;
+  int16_t var4;
+  const int16_t *ptr4;
+  const orc_union32 var24 = *(orc_union32 *) (ex->params + 24);
+  int16_t var32;
+  orc_union32 var33;
+
+  ptr0 = (orc_union32 *) ex->arrays[0];
+  ptr4 = (int16_t *) ex->arrays[4];
+
+  for (i = 0; i < n; i++) {
+    var4 = *ptr4;
+    ptr4++;
+    /* 0: swapw */
+    var32 = ORC_SWAP_W (var4);
+    /* 1: convuwl */
+    var33.i = (uint16_t) var32;
+    /* 2: shll */
+    var0.i = var33.i << var24.i;
+    *ptr0 = var0;
+    ptr0++;
+  }
+
+}
+
+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;
+  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 (p, "swapw", ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1);
+      orc_program_append (p, "convuwl", ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
+      orc_program_append (p, "shll", ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_P1);
+
+      result = orc_program_compile (p);
+    }
+    p_inited = TRUE;
+    orc_once_mutex_unlock ();
+  }
+  ex->program = p;
+
+  ex->n = n;
+  ex->arrays[ORC_VAR_D1] = d1;
+  ex->arrays[ORC_VAR_S1] = (void *) s1;
+  ex->params[ORC_VAR_P1] = p1;
+
+  func = p->code_exec;
+  func (ex);
+}
+#endif
+
+
+/* orc_audio_convert_unpack_u32 */
+#ifdef DISABLE_ORC
+void
+orc_audio_convert_unpack_u32 (gint32 * d1, const guint8 * s1, int p1, int n)
+{
+  int i;
+  orc_union32 var0;
+  orc_union32 *ptr0;
+  orc_union32 var4;
+  const orc_union32 *ptr4;
+  const orc_union32 var16 = { 0x80000000 };
+  const orc_union32 var24 = p1;
+  orc_union32 var32;
+
+  ptr0 = (orc_union32 *) d1;
+  ptr4 = (orc_union32 *) s1;
+
+  for (i = 0; i < n; i++) {
+    var4 = *ptr4;
+    ptr4++;
+    /* 0: shll */
+    var32.i = var4.i << var24.i;
+    /* 1: xorl */
+    var0.i = var32.i ^ var16.i;
+    *ptr0 = var0;
+    ptr0++;
+  }
+
+}
+
+#else
+static void
+_backup_orc_audio_convert_unpack_u32 (OrcExecutor * ex)
+{
+  int i;
+  int n = ex->n;
+  orc_union32 var0;
+  orc_union32 *ptr0;
+  orc_union32 var4;
+  const orc_union32 *ptr4;
+  const orc_union32 var16 = { 0x80000000 };
+  const orc_union32 var24 = *(orc_union32 *) (ex->params + 24);
+  orc_union32 var32;
+
+  ptr0 = (orc_union32 *) ex->arrays[0];
+  ptr4 = (orc_union32 *) ex->arrays[4];
+
+  for (i = 0; i < n; i++) {
+    var4 = *ptr4;
+    ptr4++;
+    /* 0: shll */
+    var32.i = var4.i << var24.i;
+    /* 1: xorl */
+    var0.i = var32.i ^ var16.i;
+    *ptr0 = var0;
+    ptr0++;
+  }
+
+}
+
+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;
+  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 (p, "shll", ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1);
+      orc_program_append (p, "xorl", ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1);
+
+      result = orc_program_compile (p);
+    }
+    p_inited = TRUE;
+    orc_once_mutex_unlock ();
+  }
+  ex->program = p;
+
+  ex->n = n;
+  ex->arrays[ORC_VAR_D1] = d1;
+  ex->arrays[ORC_VAR_S1] = (void *) s1;
+  ex->params[ORC_VAR_P1] = p1;
+
+  func = p->code_exec;
+  func (ex);
+}
+#endif
+
+
+/* orc_audio_convert_unpack_s32 */
+#ifdef DISABLE_ORC
+void
+orc_audio_convert_unpack_s32 (gint32 * d1, const guint8 * s1, int p1, int n)
+{
+  int i;
+  orc_union32 var0;
+  orc_union32 *ptr0;
+  orc_union32 var4;
+  const orc_union32 *ptr4;
+  const orc_union32 var24 = p1;
+
+  ptr0 = (orc_union32 *) d1;
+  ptr4 = (orc_union32 *) s1;
+
+  for (i = 0; i < n; i++) {
+    var4 = *ptr4;
+    ptr4++;
+    /* 0: shll */
+    var0.i = var4.i << var24.i;
+    *ptr0 = var0;
+    ptr0++;
+  }
+
+}
+
+#else
+static void
+_backup_orc_audio_convert_unpack_s32 (OrcExecutor * ex)
+{
+  int i;
+  int n = ex->n;
+  orc_union32 var0;
+  orc_union32 *ptr0;
+  orc_union32 var4;
+  const orc_union32 *ptr4;
+  const orc_union32 var24 = *(orc_union32 *) (ex->params + 24);
+
+  ptr0 = (orc_union32 *) ex->arrays[0];
+  ptr4 = (orc_union32 *) ex->arrays[4];
+
+  for (i = 0; i < n; i++) {
+    var4 = *ptr4;
+    ptr4++;
+    /* 0: shll */
+    var0.i = var4.i << var24.i;
+    *ptr0 = var0;
+    ptr0++;
+  }
+
+}
+
+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;
+  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 (p, "shll", ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_P1);
+
+      result = orc_program_compile (p);
+    }
+    p_inited = TRUE;
+    orc_once_mutex_unlock ();
+  }
+  ex->program = p;
+
+  ex->n = n;
+  ex->arrays[ORC_VAR_D1] = d1;
+  ex->arrays[ORC_VAR_S1] = (void *) s1;
+  ex->params[ORC_VAR_P1] = p1;
+
+  func = p->code_exec;
+  func (ex);
+}
+#endif
+
+
+/* orc_audio_convert_unpack_u32_swap */
+#ifdef DISABLE_ORC
+void
+orc_audio_convert_unpack_u32_swap (gint32 * d1, const guint8 * s1, int p1,
+    int n)
+{
+  int i;
+  orc_union32 var0;
+  orc_union32 *ptr0;
+  orc_union32 var4;
+  const orc_union32 *ptr4;
+  const orc_union32 var16 = { 0x80000000 };
+  const orc_union32 var24 = p1;
+  orc_union32 var32;
+  orc_union32 var33;
+
+  ptr0 = (orc_union32 *) d1;
+  ptr4 = (orc_union32 *) s1;
+
+  for (i = 0; i < n; i++) {
+    var4 = *ptr4;
+    ptr4++;
+    /* 0: swapl */
+    var32.i = ORC_SWAP_L (var4.i);
+    /* 1: shll */
+    var33.i = var32.i << var24.i;
+    /* 2: xorl */
+    var0.i = var33.i ^ var16.i;
+    *ptr0 = var0;
+    ptr0++;
+  }
+
+}
+
+#else
+static void
+_backup_orc_audio_convert_unpack_u32_swap (OrcExecutor * ex)
+{
+  int i;
+  int n = ex->n;
+  orc_union32 var0;
+  orc_union32 *ptr0;
+  orc_union32 var4;
+  const orc_union32 *ptr4;
+  const orc_union32 var16 = { 0x80000000 };
+  const orc_union32 var24 = *(orc_union32 *) (ex->params + 24);
+  orc_union32 var32;
+  orc_union32 var33;
+
+  ptr0 = (orc_union32 *) ex->arrays[0];
+  ptr4 = (orc_union32 *) ex->arrays[4];
+
+  for (i = 0; i < n; i++) {
+    var4 = *ptr4;
+    ptr4++;
+    /* 0: swapl */
+    var32.i = ORC_SWAP_L (var4.i);
+    /* 1: shll */
+    var33.i = var32.i << var24.i;
+    /* 2: xorl */
+    var0.i = var33.i ^ var16.i;
+    *ptr0 = var0;
+    ptr0++;
+  }
+
+}
+
+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;
+  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 (p, "swapl", ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1);
+      orc_program_append (p, "shll", ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1);
+      orc_program_append (p, "xorl", ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C1);
+
+      result = orc_program_compile (p);
+    }
+    p_inited = TRUE;
+    orc_once_mutex_unlock ();
+  }
+  ex->program = p;
+
+  ex->n = n;
+  ex->arrays[ORC_VAR_D1] = d1;
+  ex->arrays[ORC_VAR_S1] = (void *) s1;
+  ex->params[ORC_VAR_P1] = p1;
+
+  func = p->code_exec;
+  func (ex);
+}
+#endif
+
+
+/* orc_audio_convert_unpack_s32_swap */
+#ifdef DISABLE_ORC
+void
+orc_audio_convert_unpack_s32_swap (gint32 * d1, const guint8 * s1, int p1,
+    int n)
+{
+  int i;
+  orc_union32 var0;
+  orc_union32 *ptr0;
+  orc_union32 var4;
+  const orc_union32 *ptr4;
+  const orc_union32 var24 = p1;
+  orc_union32 var32;
+
+  ptr0 = (orc_union32 *) d1;
+  ptr4 = (orc_union32 *) s1;
+
+  for (i = 0; i < n; i++) {
+    var4 = *ptr4;
+    ptr4++;
+    /* 0: swapl */
+    var32.i = ORC_SWAP_L (var4.i);
+    /* 1: shll */
+    var0.i = var32.i << var24.i;
+    *ptr0 = var0;
+    ptr0++;
+  }
+
+}
+
+#else
+static void
+_backup_orc_audio_convert_unpack_s32_swap (OrcExecutor * ex)
+{
+  int i;
+  int n = ex->n;
+  orc_union32 var0;
+  orc_union32 *ptr0;
+  orc_union32 var4;
+  const orc_union32 *ptr4;
+  const orc_union32 var24 = *(orc_union32 *) (ex->params + 24);
+  orc_union32 var32;
+
+  ptr0 = (orc_union32 *) ex->arrays[0];
+  ptr4 = (orc_union32 *) ex->arrays[4];
+
+  for (i = 0; i < n; i++) {
+    var4 = *ptr4;
+    ptr4++;
+    /* 0: swapl */
+    var32.i = ORC_SWAP_L (var4.i);
+    /* 1: shll */
+    var0.i = var32.i << var24.i;
+    *ptr0 = var0;
+    ptr0++;
+  }
+
+}
+
+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;
+  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 (p, "swapl", ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1);
+      orc_program_append (p, "shll", ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_P1);
+
+      result = orc_program_compile (p);
+    }
+    p_inited = TRUE;
+    orc_once_mutex_unlock ();
+  }
+  ex->program = p;
+
+  ex->n = n;
+  ex->arrays[ORC_VAR_D1] = d1;
+  ex->arrays[ORC_VAR_S1] = (void *) s1;
+  ex->params[ORC_VAR_P1] = p1;
+
+  func = p->code_exec;
+  func (ex);
+}
+#endif
+
+
+/* orc_audio_convert_pack_u8 */
+#ifdef DISABLE_ORC
+void
+orc_audio_convert_pack_u8 (guint8 * d1, const gint32 * s1, int p1, int n)
+{
+  int i;
+  int8_t var0;
+  int8_t *ptr0;
+  orc_union32 var4;
+  const orc_union32 *ptr4;
+  const orc_union32 var16 = { 0x80000000 };
+  const orc_union32 var24 = p1;
+  orc_union32 var32;
+  int16_t var33;
+  orc_union32 var34;
+
+  ptr0 = (int8_t *) d1;
+  ptr4 = (orc_union32 *) s1;
+
+  for (i = 0; i < n; i++) {
+    var4 = *ptr4;
+    ptr4++;
+    /* 0: xorl */
+    var32.i = var4.i ^ var16.i;
+    /* 1: shrul */
+    var34.i = ((uint32_t) var32.i) >> var24.i;
+    /* 2: convlw */
+    var33 = var34.i;
+    /* 3: convwb */
+    var0 = var33;
+    *ptr0 = var0;
+    ptr0++;
+  }
+
+}
+
+#else
+static void
+_backup_orc_audio_convert_pack_u8 (OrcExecutor * ex)
+{
+  int i;
+  int n = ex->n;
+  int8_t var0;
+  int8_t *ptr0;
+  orc_union32 var4;
+  const orc_union32 *ptr4;
+  const orc_union32 var16 = { 0x80000000 };
+  const orc_union32 var24 = *(orc_union32 *) (ex->params + 24);
+  orc_union32 var32;
+  int16_t var33;
+  orc_union32 var34;
+
+  ptr0 = (int8_t *) ex->arrays[0];
+  ptr4 = (orc_union32 *) ex->arrays[4];
+
+  for (i = 0; i < n; i++) {
+    var4 = *ptr4;
+    ptr4++;
+    /* 0: xorl */
+    var32.i = var4.i ^ var16.i;
+    /* 1: shrul */
+    var34.i = ((uint32_t) var32.i) >> var24.i;
+    /* 2: convlw */
+    var33 = var34.i;
+    /* 3: convwb */
+    var0 = var33;
+    *ptr0 = var0;
+    ptr0++;
+  }
+
+}
+
+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;
+  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 (p, "xorl", ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1);
+      orc_program_append (p, "shrul", ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1);
+      orc_program_append (p, "convlw", ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
+      orc_program_append (p, "convwb", ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1);
+
+      result = orc_program_compile (p);
+    }
+    p_inited = TRUE;
+    orc_once_mutex_unlock ();
+  }
+  ex->program = p;
+
+  ex->n = n;
+  ex->arrays[ORC_VAR_D1] = d1;
+  ex->arrays[ORC_VAR_S1] = (void *) s1;
+  ex->params[ORC_VAR_P1] = p1;
+
+  func = p->code_exec;
+  func (ex);
+}
+#endif
+
+
+/* orc_audio_convert_pack_s8 */
+#ifdef DISABLE_ORC
+void
+orc_audio_convert_pack_s8 (guint8 * d1, const gint32 * s1, int p1, int n)
+{
+  int i;
+  int8_t var0;
+  int8_t *ptr0;
+  orc_union32 var4;
+  const orc_union32 *ptr4;
+  const orc_union32 var24 = p1;
+  orc_union32 var32;
+  int16_t var33;
+
+  ptr0 = (int8_t *) d1;
+  ptr4 = (orc_union32 *) s1;
+
+  for (i = 0; i < n; i++) {
+    var4 = *ptr4;
+    ptr4++;
+    /* 0: shrsl */
+    var32.i = var4.i >> var24.i;
+    /* 1: convlw */
+    var33 = var32.i;
+    /* 2: convwb */
+    var0 = var33;
+    *ptr0 = var0;
+    ptr0++;
+  }
+
+}
+
+#else
+static void
+_backup_orc_audio_convert_pack_s8 (OrcExecutor * ex)
+{
+  int i;
+  int n = ex->n;
+  int8_t var0;
+  int8_t *ptr0;
+  orc_union32 var4;
+  const orc_union32 *ptr4;
+  const orc_union32 var24 = *(orc_union32 *) (ex->params + 24);
+  orc_union32 var32;
+  int16_t var33;
+
+  ptr0 = (int8_t *) ex->arrays[0];
+  ptr4 = (orc_union32 *) ex->arrays[4];
+
+  for (i = 0; i < n; i++) {
+    var4 = *ptr4;
+    ptr4++;
+    /* 0: shrsl */
+    var32.i = var4.i >> var24.i;
+    /* 1: convlw */
+    var33 = var32.i;
+    /* 2: convwb */
+    var0 = var33;
+    *ptr0 = var0;
+    ptr0++;
+  }
+
+}
+
+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;
+  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 (p, "shrsl", ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1);
+      orc_program_append (p, "convlw", ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
+      orc_program_append (p, "convwb", ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1);
+
+      result = orc_program_compile (p);
+    }
+    p_inited = TRUE;
+    orc_once_mutex_unlock ();
+  }
+  ex->program = p;
+
+  ex->n = n;
+  ex->arrays[ORC_VAR_D1] = d1;
+  ex->arrays[ORC_VAR_S1] = (void *) s1;
+  ex->params[ORC_VAR_P1] = p1;
+
+  func = p->code_exec;
+  func (ex);
+}
+#endif
+
+
+/* orc_audio_convert_pack_u16 */
+#ifdef DISABLE_ORC
+void
+orc_audio_convert_pack_u16 (guint8 * d1, const gint32 * s1, int p1, int n)
+{
+  int i;
+  int16_t var0;
+  int16_t *ptr0;
+  orc_union32 var4;
+  const orc_union32 *ptr4;
+  const orc_union32 var16 = { 0x80000000 };
+  const orc_union32 var24 = p1;
+  orc_union32 var32;
+  orc_union32 var33;
+
+  ptr0 = (int16_t *) d1;
+  ptr4 = (orc_union32 *) s1;
+
+  for (i = 0; i < n; i++) {
+    var4 = *ptr4;
+    ptr4++;
+    /* 0: xorl */
+    var32.i = var4.i ^ var16.i;
+    /* 1: shrul */
+    var33.i = ((uint32_t) var32.i) >> var24.i;
+    /* 2: convlw */
+    var0 = var33.i;
+    *ptr0 = var0;
+    ptr0++;
+  }
+
+}
+
+#else
+static void
+_backup_orc_audio_convert_pack_u16 (OrcExecutor * ex)
+{
+  int i;
+  int n = ex->n;
+  int16_t var0;
+  int16_t *ptr0;
+  orc_union32 var4;
+  const orc_union32 *ptr4;
+  const orc_union32 var16 = { 0x80000000 };
+  const orc_union32 var24 = *(orc_union32 *) (ex->params + 24);
+  orc_union32 var32;
+  orc_union32 var33;
+
+  ptr0 = (int16_t *) ex->arrays[0];
+  ptr4 = (orc_union32 *) ex->arrays[4];
+
+  for (i = 0; i < n; i++) {
+    var4 = *ptr4;
+    ptr4++;
+    /* 0: xorl */
+    var32.i = var4.i ^ var16.i;
+    /* 1: shrul */
+    var33.i = ((uint32_t) var32.i) >> var24.i;
+    /* 2: convlw */
+    var0 = var33.i;
+    *ptr0 = var0;
+    ptr0++;
+  }
+
+}
+
+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;
+  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 (p, "xorl", ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1);
+      orc_program_append (p, "shrul", ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1);
+      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;
+  ex->arrays[ORC_VAR_D1] = d1;
+  ex->arrays[ORC_VAR_S1] = (void *) s1;
+  ex->params[ORC_VAR_P1] = p1;
+
+  func = p->code_exec;
+  func (ex);
+}
+#endif
+
+
+/* orc_audio_convert_pack_s16 */
+#ifdef DISABLE_ORC
+void
+orc_audio_convert_pack_s16 (guint8 * d1, const gint32 * s1, int p1, int n)
+{
+  int i;
+  int16_t var0;
+  int16_t *ptr0;
+  orc_union32 var4;
+  const orc_union32 *ptr4;
+  const orc_union32 var24 = p1;
+  orc_union32 var32;
+
+  ptr0 = (int16_t *) d1;
+  ptr4 = (orc_union32 *) s1;
+
+  for (i = 0; i < n; i++) {
+    var4 = *ptr4;
+    ptr4++;
+    /* 0: shrsl */
+    var32.i = var4.i >> var24.i;
+    /* 1: convlw */
+    var0 = var32.i;
+    *ptr0 = var0;
+    ptr0++;
+  }
+
+}
+
+#else
+static void
+_backup_orc_audio_convert_pack_s16 (OrcExecutor * ex)
+{
+  int i;
+  int n = ex->n;
+  int16_t var0;
+  int16_t *ptr0;
+  orc_union32 var4;
+  const orc_union32 *ptr4;
+  const orc_union32 var24 = *(orc_union32 *) (ex->params + 24);
+  orc_union32 var32;
+
+  ptr0 = (int16_t *) ex->arrays[0];
+  ptr4 = (orc_union32 *) ex->arrays[4];
+
+  for (i = 0; i < n; i++) {
+    var4 = *ptr4;
+    ptr4++;
+    /* 0: shrsl */
+    var32.i = var4.i >> var24.i;
+    /* 1: convlw */
+    var0 = var32.i;
+    *ptr0 = var0;
+    ptr0++;
+  }
+
+}
+
+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;
+  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 (p, "shrsl", ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1);
+      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;
+  ex->arrays[ORC_VAR_D1] = d1;
+  ex->arrays[ORC_VAR_S1] = (void *) s1;
+  ex->params[ORC_VAR_P1] = p1;
+
+  func = p->code_exec;
+  func (ex);
+}
+#endif
+
+
+/* orc_audio_convert_pack_u16_swap */
+#ifdef DISABLE_ORC
+void
+orc_audio_convert_pack_u16_swap (guint8 * d1, const gint32 * s1, int p1, int n)
+{
+  int i;
+  int16_t var0;
+  int16_t *ptr0;
+  orc_union32 var4;
+  const orc_union32 *ptr4;
+  const orc_union32 var16 = { 0x80000000 };
+  const orc_union32 var24 = p1;
+  orc_union32 var32;
+  int16_t var33;
+  orc_union32 var34;
+
+  ptr0 = (int16_t *) d1;
+  ptr4 = (orc_union32 *) s1;
+
+  for (i = 0; i < n; i++) {
+    var4 = *ptr4;
+    ptr4++;
+    /* 0: xorl */
+    var32.i = var4.i ^ var16.i;
+    /* 1: shrul */
+    var34.i = ((uint32_t) var32.i) >> var24.i;
+    /* 2: convlw */
+    var33 = var34.i;
+    /* 3: swapw */
+    var0 = ORC_SWAP_W (var33);
+    *ptr0 = var0;
+    ptr0++;
+  }
+
+}
+
+#else
+static void
+_backup_orc_audio_convert_pack_u16_swap (OrcExecutor * ex)
+{
+  int i;
+  int n = ex->n;
+  int16_t var0;
+  int16_t *ptr0;
+  orc_union32 var4;
+  const orc_union32 *ptr4;
+  const orc_union32 var16 = { 0x80000000 };
+  const orc_union32 var24 = *(orc_union32 *) (ex->params + 24);
+  orc_union32 var32;
+  int16_t var33;
+  orc_union32 var34;
+
+  ptr0 = (int16_t *) ex->arrays[0];
+  ptr4 = (orc_union32 *) ex->arrays[4];
+
+  for (i = 0; i < n; i++) {
+    var4 = *ptr4;
+    ptr4++;
+    /* 0: xorl */
+    var32.i = var4.i ^ var16.i;
+    /* 1: shrul */
+    var34.i = ((uint32_t) var32.i) >> var24.i;
+    /* 2: convlw */
+    var33 = var34.i;
+    /* 3: swapw */
+    var0 = ORC_SWAP_W (var33);
+    *ptr0 = var0;
+    ptr0++;
+  }
+
+}
+
+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;
+  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 (p, "xorl", ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1);
+      orc_program_append (p, "shrul", ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1);
+      orc_program_append (p, "convlw", ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
+      orc_program_append (p, "swapw", ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1);
+
+      result = orc_program_compile (p);
+    }
+    p_inited = TRUE;
+    orc_once_mutex_unlock ();
+  }
+  ex->program = p;
+
+  ex->n = n;
+  ex->arrays[ORC_VAR_D1] = d1;
+  ex->arrays[ORC_VAR_S1] = (void *) s1;
+  ex->params[ORC_VAR_P1] = p1;
+
+  func = p->code_exec;
+  func (ex);
+}
+#endif
+
+
+/* orc_audio_convert_pack_s16_swap */
+#ifdef DISABLE_ORC
+void
+orc_audio_convert_pack_s16_swap (guint8 * d1, const gint32 * s1, int p1, int n)
+{
+  int i;
+  int16_t var0;
+  int16_t *ptr0;
+  orc_union32 var4;
+  const orc_union32 *ptr4;
+  const orc_union32 var24 = p1;
+  orc_union32 var32;
+  int16_t var33;
+
+  ptr0 = (int16_t *) d1;
+  ptr4 = (orc_union32 *) s1;
+
+  for (i = 0; i < n; i++) {
+    var4 = *ptr4;
+    ptr4++;
+    /* 0: shrsl */
+    var32.i = var4.i >> var24.i;
+    /* 1: convlw */
+    var33 = var32.i;
+    /* 2: swapw */
+    var0 = ORC_SWAP_W (var33);
+    *ptr0 = var0;
+    ptr0++;
+  }
+
+}
+
+#else
+static void
+_backup_orc_audio_convert_pack_s16_swap (OrcExecutor * ex)
+{
+  int i;
+  int n = ex->n;
+  int16_t var0;
+  int16_t *ptr0;
+  orc_union32 var4;
+  const orc_union32 *ptr4;
+  const orc_union32 var24 = *(orc_union32 *) (ex->params + 24);
+  orc_union32 var32;
+  int16_t var33;
+
+  ptr0 = (int16_t *) ex->arrays[0];
+  ptr4 = (orc_union32 *) ex->arrays[4];
+
+  for (i = 0; i < n; i++) {
+    var4 = *ptr4;
+    ptr4++;
+    /* 0: shrsl */
+    var32.i = var4.i >> var24.i;
+    /* 1: convlw */
+    var33 = var32.i;
+    /* 2: swapw */
+    var0 = ORC_SWAP_W (var33);
+    *ptr0 = var0;
+    ptr0++;
+  }
+
+}
+
+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;
+  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 (p, "shrsl", ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1);
+      orc_program_append (p, "convlw", ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1);
+      orc_program_append (p, "swapw", ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1);
+
+      result = orc_program_compile (p);
+    }
+    p_inited = TRUE;
+    orc_once_mutex_unlock ();
+  }
+  ex->program = p;
+
+  ex->n = n;
+  ex->arrays[ORC_VAR_D1] = d1;
+  ex->arrays[ORC_VAR_S1] = (void *) s1;
+  ex->params[ORC_VAR_P1] = p1;
+
+  func = p->code_exec;
+  func (ex);
+}
+#endif
+
+
+/* orc_audio_convert_pack_u32 */
+#ifdef DISABLE_ORC
+void
+orc_audio_convert_pack_u32 (guint8 * d1, const gint32 * s1, int p1, int n)
+{
+  int i;
+  orc_union32 var0;
+  orc_union32 *ptr0;
+  orc_union32 var4;
+  const orc_union32 *ptr4;
+  const orc_union32 var16 = { 0x80000000 };
+  const orc_union32 var24 = p1;
+  orc_union32 var32;
+
+  ptr0 = (orc_union32 *) d1;
+  ptr4 = (orc_union32 *) s1;
+
+  for (i = 0; i < n; i++) {
+    var4 = *ptr4;
+    ptr4++;
+    /* 0: xorl */
+    var32.i = var4.i ^ var16.i;
+    /* 1: shrul */
+    var0.i = ((uint32_t) var32.i) >> var24.i;
+    *ptr0 = var0;
+    ptr0++;
+  }
+
+}
+
+#else
+static void
+_backup_orc_audio_convert_pack_u32 (OrcExecutor * ex)
+{
+  int i;
+  int n = ex->n;
+  orc_union32 var0;
+  orc_union32 *ptr0;
+  orc_union32 var4;
+  const orc_union32 *ptr4;
+  const orc_union32 var16 = { 0x80000000 };
+  const orc_union32 var24 = *(orc_union32 *) (ex->params + 24);
+  orc_union32 var32;
+
+  ptr0 = (orc_union32 *) ex->arrays[0];
+  ptr4 = (orc_union32 *) ex->arrays[4];
+
+  for (i = 0; i < n; i++) {
+    var4 = *ptr4;
+    ptr4++;
+    /* 0: xorl */
+    var32.i = var4.i ^ var16.i;
+    /* 1: shrul */
+    var0.i = ((uint32_t) var32.i) >> var24.i;
+    *ptr0 = var0;
+    ptr0++;
+  }
+
+}
+
+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;
+  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 (p, "xorl", ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1);
+      orc_program_append (p, "shrul", ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_P1);
+
+      result = orc_program_compile (p);
+    }
+    p_inited = TRUE;
+    orc_once_mutex_unlock ();
+  }
+  ex->program = p;
+
+  ex->n = n;
+  ex->arrays[ORC_VAR_D1] = d1;
+  ex->arrays[ORC_VAR_S1] = (void *) s1;
+  ex->params[ORC_VAR_P1] = p1;
+
+  func = p->code_exec;
+  func (ex);
+}
+#endif
+
+
+/* orc_audio_convert_pack_s32 */
+#ifdef DISABLE_ORC
+void
+orc_audio_convert_pack_s32 (guint8 * d1, const gint32 * s1, int p1, int n)
+{
+  int i;
+  orc_union32 var0;
+  orc_union32 *ptr0;
+  orc_union32 var4;
+  const orc_union32 *ptr4;
+  const orc_union32 var24 = p1;
+
+  ptr0 = (orc_union32 *) d1;
+  ptr4 = (orc_union32 *) s1;
+
+  for (i = 0; i < n; i++) {
+    var4 = *ptr4;
+    ptr4++;
+    /* 0: shrsl */
+    var0.i = var4.i >> var24.i;
+    *ptr0 = var0;
+    ptr0++;
+  }
+
+}
+
+#else
+static void
+_backup_orc_audio_convert_pack_s32 (OrcExecutor * ex)
+{
+  int i;
+  int n = ex->n;
+  orc_union32 var0;
+  orc_union32 *ptr0;
+  orc_union32 var4;
+  const orc_union32 *ptr4;
+  const orc_union32 var24 = *(orc_union32 *) (ex->params + 24);
+
+  ptr0 = (orc_union32 *) ex->arrays[0];
+  ptr4 = (orc_union32 *) ex->arrays[4];
+
+  for (i = 0; i < n; i++) {
+    var4 = *ptr4;
+    ptr4++;
+    /* 0: shrsl */
+    var0.i = var4.i >> var24.i;
+    *ptr0 = var0;
+    ptr0++;
+  }
+
+}
+
+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;
+  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 (p, "shrsl", ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_P1);
+
+      result = orc_program_compile (p);
+    }
+    p_inited = TRUE;
+    orc_once_mutex_unlock ();
+  }
+  ex->program = p;
+
+  ex->n = n;
+  ex->arrays[ORC_VAR_D1] = d1;
+  ex->arrays[ORC_VAR_S1] = (void *) s1;
+  ex->params[ORC_VAR_P1] = p1;
+
+  func = p->code_exec;
+  func (ex);
+}
+#endif
+
+
+/* orc_audio_convert_pack_u32_swap */
+#ifdef DISABLE_ORC
+void
+orc_audio_convert_pack_u32_swap (guint8 * d1, const gint32 * s1, int p1, int n)
+{
+  int i;
+  orc_union32 var0;
+  orc_union32 *ptr0;
+  orc_union32 var4;
+  const orc_union32 *ptr4;
+  const orc_union32 var16 = { 0x80000000 };
+  const orc_union32 var24 = p1;
+  orc_union32 var32;
+  orc_union32 var33;
+
+  ptr0 = (orc_union32 *) d1;
+  ptr4 = (orc_union32 *) s1;
+
+  for (i = 0; i < n; i++) {
+    var4 = *ptr4;
+    ptr4++;
+    /* 0: xorl */
+    var32.i = var4.i ^ var16.i;
+    /* 1: shrul */
+    var33.i = ((uint32_t) var32.i) >> var24.i;
+    /* 2: swapl */
+    var0.i = ORC_SWAP_L (var33.i);
+    *ptr0 = var0;
+    ptr0++;
+  }
+
+}
+
+#else
+static void
+_backup_orc_audio_convert_pack_u32_swap (OrcExecutor * ex)
+{
+  int i;
+  int n = ex->n;
+  orc_union32 var0;
+  orc_union32 *ptr0;
+  orc_union32 var4;
+  const orc_union32 *ptr4;
+  const orc_union32 var16 = { 0x80000000 };
+  const orc_union32 var24 = *(orc_union32 *) (ex->params + 24);
+  orc_union32 var32;
+  orc_union32 var33;
+
+  ptr0 = (orc_union32 *) ex->arrays[0];
+  ptr4 = (orc_union32 *) ex->arrays[4];
+
+  for (i = 0; i < n; i++) {
+    var4 = *ptr4;
+    ptr4++;
+    /* 0: xorl */
+    var32.i = var4.i ^ var16.i;
+    /* 1: shrul */
+    var33.i = ((uint32_t) var32.i) >> var24.i;
+    /* 2: swapl */
+    var0.i = ORC_SWAP_L (var33.i);
+    *ptr0 = var0;
+    ptr0++;
+  }
+
+}
+
+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;
+  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 (p, "xorl", ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1);
+      orc_program_append (p, "shrul", ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1);
+      orc_program_append (p, "swapl", 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;
+  ex->arrays[ORC_VAR_D1] = d1;
+  ex->arrays[ORC_VAR_S1] = (void *) s1;
+  ex->params[ORC_VAR_P1] = p1;
+
+  func = p->code_exec;
+  func (ex);
+}
+#endif
+
+
+/* orc_audio_convert_pack_s32_swap */
+#ifdef DISABLE_ORC
+void
+orc_audio_convert_pack_s32_swap (guint8 * d1, const gint32 * s1, int p1, int n)
+{
+  int i;
+  orc_union32 var0;
+  orc_union32 *ptr0;
+  orc_union32 var4;
+  const orc_union32 *ptr4;
+  const orc_union32 var24 = p1;
+  orc_union32 var32;
+
+  ptr0 = (orc_union32 *) d1;
+  ptr4 = (orc_union32 *) s1;
+
+  for (i = 0; i < n; i++) {
+    var4 = *ptr4;
+    ptr4++;
+    /* 0: shrsl */
+    var32.i = var4.i >> var24.i;
+    /* 1: swapl */
+    var0.i = ORC_SWAP_L (var32.i);
+    *ptr0 = var0;
+    ptr0++;
+  }
+
+}
+
+#else
+static void
+_backup_orc_audio_convert_pack_s32_swap (OrcExecutor * ex)
+{
+  int i;
+  int n = ex->n;
+  orc_union32 var0;
+  orc_union32 *ptr0;
+  orc_union32 var4;
+  const orc_union32 *ptr4;
+  const orc_union32 var24 = *(orc_union32 *) (ex->params + 24);
+  orc_union32 var32;
+
+  ptr0 = (orc_union32 *) ex->arrays[0];
+  ptr4 = (orc_union32 *) ex->arrays[4];
+
+  for (i = 0; i < n; i++) {
+    var4 = *ptr4;
+    ptr4++;
+    /* 0: shrsl */
+    var32.i = var4.i >> var24.i;
+    /* 1: swapl */
+    var0.i = ORC_SWAP_L (var32.i);
+    *ptr0 = var0;
+    ptr0++;
+  }
+
+}
+
+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;
+  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 (p, "shrsl", ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_P1);
+      orc_program_append (p, "swapl", 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;
+  ex->arrays[ORC_VAR_D1] = d1;
+  ex->arrays[ORC_VAR_S1] = (void *) s1;
+  ex->params[ORC_VAR_P1] = p1;
+
+  func = p->code_exec;
+  func (ex);
+}
+#endif
diff --git a/gst/audioconvert/gstaudioconvertorc-dist.h b/gst/audioconvert/gstaudioconvertorc-dist.h
new file mode 100644 (file)
index 0000000..333b632
--- /dev/null
@@ -0,0 +1,39 @@
+
+/* autogenerated from gstaudioconvertorc.orc */
+
+#ifndef _GSTAUDIOCONVERTORC_H_
+#define _GSTAUDIOCONVERTORC_H_
+
+#include <glib.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void orc_audio_convert_unpack_u8 (gint32 * d1, const guint8 * s1, int p1, int n);
+void orc_audio_convert_unpack_s8 (gint32 * d1, const guint8 * s1, int p1, int n);
+void orc_audio_convert_unpack_u16 (gint32 * d1, const guint8 * s1, int p1, int n);
+void orc_audio_convert_unpack_s16 (gint32 * d1, const guint8 * s1, int p1, int n);
+void orc_audio_convert_unpack_u16_swap (gint32 * d1, const guint8 * s1, int p1, int n);
+void orc_audio_convert_unpack_s16_swap (gint32 * d1, const guint8 * s1, int p1, int n);
+void orc_audio_convert_unpack_u32 (gint32 * d1, const guint8 * s1, int p1, int n);
+void orc_audio_convert_unpack_s32 (gint32 * d1, const guint8 * s1, int p1, int n);
+void orc_audio_convert_unpack_u32_swap (gint32 * d1, const guint8 * s1, int p1, int n);
+void orc_audio_convert_unpack_s32_swap (gint32 * d1, const guint8 * s1, int p1, int n);
+void orc_audio_convert_pack_u8 (guint8 * d1, const gint32 * s1, int p1, int n);
+void orc_audio_convert_pack_s8 (guint8 * d1, const gint32 * s1, int p1, int n);
+void orc_audio_convert_pack_u16 (guint8 * d1, const gint32 * s1, int p1, int n);
+void orc_audio_convert_pack_s16 (guint8 * d1, const gint32 * s1, int p1, int n);
+void orc_audio_convert_pack_u16_swap (guint8 * d1, const gint32 * s1, int p1, int n);
+void orc_audio_convert_pack_s16_swap (guint8 * d1, const gint32 * s1, int p1, int n);
+void orc_audio_convert_pack_u32 (guint8 * d1, const gint32 * s1, int p1, int n);
+void orc_audio_convert_pack_s32 (guint8 * d1, const gint32 * s1, int p1, int n);
+void orc_audio_convert_pack_u32_swap (guint8 * d1, const gint32 * s1, int p1, int n);
+void orc_audio_convert_pack_s32_swap (guint8 * d1, const gint32 * s1, int p1, int n);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/gst/audioconvert/gstaudioconvertorc.orc b/gst/audioconvert/gstaudioconvertorc.orc
new file mode 100644 (file)
index 0000000..4f8b2ff
--- /dev/null
@@ -0,0 +1,234 @@
+
+.function orc_audio_convert_unpack_u8
+.dest 4 d1 gint32
+.source 1 s1 guint8
+.param 4 p1
+.const 4 c1 0x80000000
+.temp 2 t2
+.temp 4 t3
+
+convubw t2, s1
+convuwl t3, t2
+shll t3, t3, p1
+xorl d1, t3, c1
+
+
+.function orc_audio_convert_unpack_s8
+.dest 4 d1 gint32
+.source 1 s1 guint8
+.param 4 p1
+.temp 2 t2
+.temp 4 t3
+
+convubw t2, s1
+convuwl t3, t2
+shll d1, t3, p1
+
+
+.function orc_audio_convert_unpack_u16
+.dest 4 d1 gint32
+.source 2 s1 guint8
+.param 4 p1
+.const 4 c1 0x80000000
+.temp 4 t2
+
+convuwl t2, s1
+shll t2, t2, p1
+xorl d1, t2, c1
+
+
+.function orc_audio_convert_unpack_s16
+.dest 4 d1 gint32
+.source 2 s1 guint8
+.param 4 p1
+.temp 4 t2
+
+convuwl t2, s1
+shll d1, t2, p1
+
+
+.function orc_audio_convert_unpack_u16_swap
+.dest 4 d1 gint32
+.source 2 s1 guint8
+.param 4 p1
+.const 4 c1 0x80000000
+.temp 2 t1
+.temp 4 t2
+
+swapw t1, s1
+convuwl t2, t1
+shll t2, t2, p1
+xorl d1, t2, c1
+
+
+.function orc_audio_convert_unpack_s16_swap
+.dest 4 d1 gint32
+.source 2 s1 guint8
+.param 4 p1
+.temp 2 t1
+.temp 4 t2
+
+swapw t1, s1
+convuwl t2, t1
+shll d1, t2, p1
+
+
+.function orc_audio_convert_unpack_u32
+.dest 4 d1 gint32
+.source 4 s1 guint8
+.param 4 p1
+.const 4 c1 0x80000000
+.temp 4 t1
+
+shll t1, s1, p1
+xorl d1, t1, c1
+
+
+.function orc_audio_convert_unpack_s32
+.dest 4 d1 gint32
+.source 4 s1 guint8
+.param 4 p1
+
+shll d1, s1, p1
+
+
+.function orc_audio_convert_unpack_u32_swap
+.dest 4 d1 gint32
+.source 4 s1 guint8
+.param 4 p1
+.const 4 c1 0x80000000
+.temp 4 t1
+
+swapl t1, s1
+shll t1, t1, p1
+xorl d1, t1, c1
+
+
+.function orc_audio_convert_unpack_s32_swap
+.dest 4 d1 gint32
+.source 4 s1 guint8
+.param 4 p1
+.temp 4 t1
+
+swapl t1, s1
+shll d1, t1, p1
+
+
+
+.function orc_audio_convert_pack_u8
+.dest 1 d1 guint8
+.source 4 s1 gint32
+.param 4 p1
+.const 4 c1 0x80000000
+.temp 4 t1
+.temp 2 t2
+
+xorl t1, s1, c1
+shrul t1, t1, p1
+convlw t2, t1
+convwb d1, t2
+
+
+.function orc_audio_convert_pack_s8
+.dest 1 d1 guint8
+.source 4 s1 gint32
+.param 4 p1
+.temp 4 t1
+.temp 2 t2
+
+shrsl t1, s1, p1
+convlw t2, t1
+convwb d1, t2
+
+
+
+.function orc_audio_convert_pack_u16
+.dest 2 d1 guint8
+.source 4 s1 gint32
+.param 4 p1
+.const 4 c1 0x80000000
+.temp 4 t1
+
+xorl t1, s1, c1
+shrul t1, t1, p1
+convlw d1, t1
+
+
+.function orc_audio_convert_pack_s16
+.dest 2 d1 guint8
+.source 4 s1 gint32
+.param 4 p1
+.temp 4 t1
+
+shrsl t1, s1, p1
+convlw d1, t1
+
+
+.function orc_audio_convert_pack_u16_swap
+.dest 2 d1 guint8
+.source 4 s1 gint32
+.param 4 p1
+.const 4 c1 0x80000000
+.temp 4 t1
+.temp 2 t2
+
+xorl t1, s1, c1
+shrul t1, t1, p1
+convlw t2, t1
+swapw d1, t2
+
+
+.function orc_audio_convert_pack_s16_swap
+.dest 2 d1 guint8
+.source 4 s1 gint32
+.param 4 p1
+.temp 4 t1
+.temp 2 t2
+
+shrsl t1, s1, p1
+convlw t2, t1
+swapw d1, t2
+
+
+
+.function orc_audio_convert_pack_u32
+.dest 4 d1 guint8
+.source 4 s1 gint32
+.param 4 p1
+.const 4 c1 0x80000000
+.temp 4 t1
+
+xorl t1, s1, c1
+shrul d1, t1, p1
+
+
+.function orc_audio_convert_pack_s32
+.dest 4 d1 guint8
+.source 4 s1 gint32
+.param 4 p1
+
+shrsl d1, s1, p1
+
+
+.function orc_audio_convert_pack_u32_swap
+.dest 4 d1 guint8
+.source 4 s1 gint32
+.param 4 p1
+.const 4 c1 0x80000000
+.temp 4 t1
+
+xorl t1, s1, c1
+shrul t1, t1, p1
+swapl d1, t1
+
+
+.function orc_audio_convert_pack_s32_swap
+.dest 4 d1 guint8
+.source 4 s1 gint32
+.param 4 p1
+.temp 4 t1
+
+shrsl t1, s1, p1
+swapl d1, t1
+
+