summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWim Taymans <wtaymans@redhat.com>2015-02-12 12:08:16 +0100
committerWim Taymans <wtaymans@redhat.com>2015-02-12 12:08:16 +0100
commit1caf1ae1fdd5404ba193d68b947bcc351d2defc3 (patch)
treef1d6b9fd997976d368888c2a986acd571ae48f81
parent45e408735c4c9e6f9259cc747d3aaf995f0505e5 (diff)
video-orc: update with new methods
-rw-r--r--gst-libs/gst/video/video-orc-dist.c3400
-rw-r--r--gst-libs/gst/video/video-orc-dist.h12
2 files changed, 3412 insertions, 0 deletions
diff --git a/gst-libs/gst/video/video-orc-dist.c b/gst-libs/gst/video/video-orc-dist.c
index 8b6a30398..fa090b546 100644
--- a/gst-libs/gst/video/video-orc-dist.c
+++ b/gst-libs/gst/video/video-orc-dist.c
@@ -167,6 +167,30 @@ void video_orc_pack_A420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
const guint8 * ORC_RESTRICT s1, int n);
void video_orc_pack_AY (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
const guint8 * ORC_RESTRICT s1, int n);
+void video_orc_unpack_RGB15 (guint32 * ORC_RESTRICT d1,
+ const guint16 * ORC_RESTRICT s1, int n);
+void video_orc_unpack_RGB15_trunc (guint32 * ORC_RESTRICT d1,
+ const guint16 * ORC_RESTRICT s1, int n);
+void video_orc_pack_RGB15 (guint16 * ORC_RESTRICT d1,
+ const guint32 * ORC_RESTRICT s1, int n);
+void video_orc_unpack_BGR15 (guint32 * ORC_RESTRICT d1,
+ const guint16 * ORC_RESTRICT s1, int n);
+void video_orc_unpack_BGR15_trunc (guint32 * ORC_RESTRICT d1,
+ const guint16 * ORC_RESTRICT s1, int n);
+void video_orc_pack_BGR15 (guint16 * ORC_RESTRICT d1,
+ const guint32 * ORC_RESTRICT s1, int n);
+void video_orc_unpack_RGB16 (guint32 * ORC_RESTRICT d1,
+ const guint16 * ORC_RESTRICT s1, int n);
+void video_orc_unpack_RGB16_trunc (guint32 * ORC_RESTRICT d1,
+ const guint16 * ORC_RESTRICT s1, int n);
+void video_orc_pack_RGB16 (guint16 * ORC_RESTRICT d1,
+ const guint32 * ORC_RESTRICT s1, int n);
+void video_orc_unpack_BGR16 (guint32 * ORC_RESTRICT d1,
+ const guint16 * ORC_RESTRICT s1, int n);
+void video_orc_unpack_BGR16_trunc (guint32 * ORC_RESTRICT d1,
+ const guint16 * ORC_RESTRICT s1, int n);
+void video_orc_pack_BGR16 (guint16 * ORC_RESTRICT d1,
+ const guint32 * ORC_RESTRICT s1, int n);
void video_orc_resample_bilinear_u32 (guint8 * ORC_RESTRICT d1,
const guint8 * ORC_RESTRICT s1, int p1, int p2, int n);
void video_orc_merge_linear_u8 (orc_uint8 * ORC_RESTRICT d1,
@@ -6889,6 +6913,3382 @@ video_orc_pack_AY (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
#endif
+/* video_orc_unpack_RGB15 */
+#ifdef DISABLE_ORC
+void
+video_orc_unpack_RGB15 (guint32 * ORC_RESTRICT d1,
+ const guint16 * ORC_RESTRICT s1, int n)
+{
+ int i;
+ orc_union32 *ORC_RESTRICT ptr0;
+ const orc_union16 *ORC_RESTRICT ptr4;
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var38;
+#else
+ orc_union16 var38;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var39;
+#else
+ orc_union16 var39;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var40;
+#else
+ orc_union16 var40;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var41;
+#else
+ orc_union16 var41;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var42;
+#else
+ orc_union16 var42;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var43;
+#else
+ orc_union16 var43;
+#endif
+ orc_union32 var44;
+ orc_union16 var45;
+ orc_union16 var46;
+ orc_union16 var47;
+ orc_union16 var48;
+ orc_union16 var49;
+ orc_union16 var50;
+ orc_union16 var51;
+ orc_union16 var52;
+ orc_union32 var53;
+ orc_union32 var54;
+ orc_union32 var55;
+
+ ptr0 = (orc_union32 *) d1;
+ ptr4 = (orc_union16 *) s1;
+
+ /* 1: loadpw */
+ var38.i = (int) 0x00007c00; /* 31744 or 1.56836e-319f */
+ /* 3: loadpw */
+ var39.i = (int) 0x000003e0; /* 992 or 4.90113e-321f */
+ /* 5: loadpw */
+ var40.i = (int) 0x0000001f; /* 31 or 1.5316e-322f */
+ /* 8: loadpw */
+ var41.i = (int) 0x00000210; /* 528 or 2.60867e-321f */
+ /* 10: loadpw */
+ var42.i = (int) 0x00004200; /* 16896 or 8.34773e-320f */
+ /* 13: loadpw */
+ var43.i = (int) 0x000000ff; /* 255 or 1.25987e-321f */
+
+ for (i = 0; i < n; i++) {
+ /* 0: loadw */
+ var45 = ptr4[i];
+ /* 2: andw */
+ var46.i = var45.i & var38.i;
+ /* 4: andw */
+ var47.i = var45.i & var39.i;
+ /* 6: andw */
+ var48.i = var45.i & var40.i;
+ /* 7: shlw */
+ var49.i = ((orc_uint16) var48.i) << 5;
+ /* 9: mulhsw */
+ var50.i = (var46.i * var41.i) >> 16;
+ /* 11: mulhsw */
+ var51.i = (var47.i * var42.i) >> 16;
+ /* 12: mulhsw */
+ var52.i = (var49.i * var42.i) >> 16;
+ /* 14: mergewl */
+ {
+ orc_union32 _dest;
+ _dest.x2[0] = var43.i;
+ _dest.x2[1] = var51.i;
+ var53.i = _dest.i;
+ }
+ /* 15: mergewl */
+ {
+ orc_union32 _dest;
+ _dest.x2[0] = var50.i;
+ _dest.x2[1] = var52.i;
+ var54.i = _dest.i;
+ }
+ /* 16: shll */
+ var55.i = ((orc_uint32) var54.i) << 8;
+ /* 17: orl */
+ var44.i = var53.i | var55.i;
+ /* 18: storel */
+ ptr0[i] = var44;
+ }
+
+}
+
+#else
+static void
+_backup_video_orc_unpack_RGB15 (OrcExecutor * ORC_RESTRICT ex)
+{
+ int i;
+ int n = ex->n;
+ orc_union32 *ORC_RESTRICT ptr0;
+ const orc_union16 *ORC_RESTRICT ptr4;
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var38;
+#else
+ orc_union16 var38;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var39;
+#else
+ orc_union16 var39;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var40;
+#else
+ orc_union16 var40;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var41;
+#else
+ orc_union16 var41;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var42;
+#else
+ orc_union16 var42;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var43;
+#else
+ orc_union16 var43;
+#endif
+ orc_union32 var44;
+ orc_union16 var45;
+ orc_union16 var46;
+ orc_union16 var47;
+ orc_union16 var48;
+ orc_union16 var49;
+ orc_union16 var50;
+ orc_union16 var51;
+ orc_union16 var52;
+ orc_union32 var53;
+ orc_union32 var54;
+ orc_union32 var55;
+
+ ptr0 = (orc_union32 *) ex->arrays[0];
+ ptr4 = (orc_union16 *) ex->arrays[4];
+
+ /* 1: loadpw */
+ var38.i = (int) 0x00007c00; /* 31744 or 1.56836e-319f */
+ /* 3: loadpw */
+ var39.i = (int) 0x000003e0; /* 992 or 4.90113e-321f */
+ /* 5: loadpw */
+ var40.i = (int) 0x0000001f; /* 31 or 1.5316e-322f */
+ /* 8: loadpw */
+ var41.i = (int) 0x00000210; /* 528 or 2.60867e-321f */
+ /* 10: loadpw */
+ var42.i = (int) 0x00004200; /* 16896 or 8.34773e-320f */
+ /* 13: loadpw */
+ var43.i = (int) 0x000000ff; /* 255 or 1.25987e-321f */
+
+ for (i = 0; i < n; i++) {
+ /* 0: loadw */
+ var45 = ptr4[i];
+ /* 2: andw */
+ var46.i = var45.i & var38.i;
+ /* 4: andw */
+ var47.i = var45.i & var39.i;
+ /* 6: andw */
+ var48.i = var45.i & var40.i;
+ /* 7: shlw */
+ var49.i = ((orc_uint16) var48.i) << 5;
+ /* 9: mulhsw */
+ var50.i = (var46.i * var41.i) >> 16;
+ /* 11: mulhsw */
+ var51.i = (var47.i * var42.i) >> 16;
+ /* 12: mulhsw */
+ var52.i = (var49.i * var42.i) >> 16;
+ /* 14: mergewl */
+ {
+ orc_union32 _dest;
+ _dest.x2[0] = var43.i;
+ _dest.x2[1] = var51.i;
+ var53.i = _dest.i;
+ }
+ /* 15: mergewl */
+ {
+ orc_union32 _dest;
+ _dest.x2[0] = var50.i;
+ _dest.x2[1] = var52.i;
+ var54.i = _dest.i;
+ }
+ /* 16: shll */
+ var55.i = ((orc_uint32) var54.i) << 8;
+ /* 17: orl */
+ var44.i = var53.i | var55.i;
+ /* 18: storel */
+ ptr0[i] = var44;
+ }
+
+}
+
+void
+video_orc_unpack_RGB15 (guint32 * ORC_RESTRICT d1,
+ const guint16 * 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, 22, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
+ 97, 99, 107, 95, 82, 71, 66, 49, 53, 11, 4, 4, 12, 2, 2, 14,
+ 2, 0, 124, 0, 0, 14, 2, 224, 3, 0, 0, 14, 2, 31, 0, 0,
+ 0, 14, 2, 5, 0, 0, 0, 14, 2, 16, 2, 0, 0, 14, 2, 0,
+ 66, 0, 0, 14, 2, 255, 0, 0, 0, 14, 4, 8, 0, 0, 0, 20,
+ 2, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, 82, 32, 4, 73, 33,
+ 32, 16, 73, 34, 32, 17, 73, 35, 32, 18, 93, 35, 35, 19, 90, 33,
+ 33, 20, 90, 34, 34, 21, 90, 35, 35, 21, 195, 36, 22, 34, 195, 37,
+ 33, 35, 124, 37, 37, 23, 123, 0, 36, 37, 2, 0,
+ };
+ p = orc_program_new_from_static_bytecode (bc);
+ orc_program_set_backup_function (p, _backup_video_orc_unpack_RGB15);
+#else
+ p = orc_program_new ();
+ orc_program_set_name (p, "video_orc_unpack_RGB15");
+ orc_program_set_backup_function (p, _backup_video_orc_unpack_RGB15);
+ orc_program_add_destination (p, 4, "d1");
+ orc_program_add_source (p, 2, "s1");
+ orc_program_add_constant (p, 2, 0x00007c00, "c1");
+ orc_program_add_constant (p, 2, 0x000003e0, "c2");
+ orc_program_add_constant (p, 2, 0x0000001f, "c3");
+ orc_program_add_constant (p, 2, 0x00000005, "c4");
+ orc_program_add_constant (p, 2, 0x00000210, "c5");
+ orc_program_add_constant (p, 2, 0x00004200, "c6");
+ orc_program_add_constant (p, 2, 0x000000ff, "c7");
+ orc_program_add_constant (p, 4, 0x00000008, "c8");
+ orc_program_add_temporary (p, 2, "t1");
+ orc_program_add_temporary (p, 2, "t2");
+ orc_program_add_temporary (p, 2, "t3");
+ orc_program_add_temporary (p, 2, "t4");
+ orc_program_add_temporary (p, 4, "t5");
+ orc_program_add_temporary (p, 4, "t6");
+
+ orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "shlw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C4,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C5,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C6,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C6,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C7, ORC_VAR_T3,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_T4,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "shll", 0, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_C8,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_T6,
+ 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
+
+
+/* video_orc_unpack_RGB15_trunc */
+#ifdef DISABLE_ORC
+void
+video_orc_unpack_RGB15_trunc (guint32 * ORC_RESTRICT d1,
+ const guint16 * ORC_RESTRICT s1, int n)
+{
+ int i;
+ orc_union32 *ORC_RESTRICT ptr0;
+ const orc_union16 *ORC_RESTRICT ptr4;
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var38;
+#else
+ orc_union16 var38;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var39;
+#else
+ orc_union16 var39;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var40;
+#else
+ orc_union16 var40;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var41;
+#else
+ orc_union16 var41;
+#endif
+ orc_union32 var42;
+ orc_union16 var43;
+ orc_union16 var44;
+ orc_union16 var45;
+ orc_union16 var46;
+ orc_union16 var47;
+ orc_union16 var48;
+ orc_union16 var49;
+ orc_union32 var50;
+ orc_union32 var51;
+ orc_union32 var52;
+
+ ptr0 = (orc_union32 *) d1;
+ ptr4 = (orc_union16 *) s1;
+
+ /* 1: loadpw */
+ var38.i = (int) 0x00007c00; /* 31744 or 1.56836e-319f */
+ /* 3: loadpw */
+ var39.i = (int) 0x000003e0; /* 992 or 4.90113e-321f */
+ /* 5: loadpw */
+ var40.i = (int) 0x0000001f; /* 31 or 1.5316e-322f */
+ /* 10: loadpw */
+ var41.i = (int) 0x000000ff; /* 255 or 1.25987e-321f */
+
+ for (i = 0; i < n; i++) {
+ /* 0: loadw */
+ var43 = ptr4[i];
+ /* 2: andw */
+ var44.i = var43.i & var38.i;
+ /* 4: andw */
+ var45.i = var43.i & var39.i;
+ /* 6: andw */
+ var46.i = var43.i & var40.i;
+ /* 7: shruw */
+ var47.i = ((orc_uint16) var44.i) >> 7;
+ /* 8: shruw */
+ var48.i = ((orc_uint16) var45.i) >> 2;
+ /* 9: shlw */
+ var49.i = ((orc_uint16) var46.i) << 3;
+ /* 11: mergewl */
+ {
+ orc_union32 _dest;
+ _dest.x2[0] = var41.i;
+ _dest.x2[1] = var48.i;
+ var50.i = _dest.i;
+ }
+ /* 12: mergewl */
+ {
+ orc_union32 _dest;
+ _dest.x2[0] = var47.i;
+ _dest.x2[1] = var49.i;
+ var51.i = _dest.i;
+ }
+ /* 13: shll */
+ var52.i = ((orc_uint32) var51.i) << 8;
+ /* 14: orl */
+ var42.i = var50.i | var52.i;
+ /* 15: storel */
+ ptr0[i] = var42;
+ }
+
+}
+
+#else
+static void
+_backup_video_orc_unpack_RGB15_trunc (OrcExecutor * ORC_RESTRICT ex)
+{
+ int i;
+ int n = ex->n;
+ orc_union32 *ORC_RESTRICT ptr0;
+ const orc_union16 *ORC_RESTRICT ptr4;
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var38;
+#else
+ orc_union16 var38;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var39;
+#else
+ orc_union16 var39;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var40;
+#else
+ orc_union16 var40;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var41;
+#else
+ orc_union16 var41;
+#endif
+ orc_union32 var42;
+ orc_union16 var43;
+ orc_union16 var44;
+ orc_union16 var45;
+ orc_union16 var46;
+ orc_union16 var47;
+ orc_union16 var48;
+ orc_union16 var49;
+ orc_union32 var50;
+ orc_union32 var51;
+ orc_union32 var52;
+
+ ptr0 = (orc_union32 *) ex->arrays[0];
+ ptr4 = (orc_union16 *) ex->arrays[4];
+
+ /* 1: loadpw */
+ var38.i = (int) 0x00007c00; /* 31744 or 1.56836e-319f */
+ /* 3: loadpw */
+ var39.i = (int) 0x000003e0; /* 992 or 4.90113e-321f */
+ /* 5: loadpw */
+ var40.i = (int) 0x0000001f; /* 31 or 1.5316e-322f */
+ /* 10: loadpw */
+ var41.i = (int) 0x000000ff; /* 255 or 1.25987e-321f */
+
+ for (i = 0; i < n; i++) {
+ /* 0: loadw */
+ var43 = ptr4[i];
+ /* 2: andw */
+ var44.i = var43.i & var38.i;
+ /* 4: andw */
+ var45.i = var43.i & var39.i;
+ /* 6: andw */
+ var46.i = var43.i & var40.i;
+ /* 7: shruw */
+ var47.i = ((orc_uint16) var44.i) >> 7;
+ /* 8: shruw */
+ var48.i = ((orc_uint16) var45.i) >> 2;
+ /* 9: shlw */
+ var49.i = ((orc_uint16) var46.i) << 3;
+ /* 11: mergewl */
+ {
+ orc_union32 _dest;
+ _dest.x2[0] = var41.i;
+ _dest.x2[1] = var48.i;
+ var50.i = _dest.i;
+ }
+ /* 12: mergewl */
+ {
+ orc_union32 _dest;
+ _dest.x2[0] = var47.i;
+ _dest.x2[1] = var49.i;
+ var51.i = _dest.i;
+ }
+ /* 13: shll */
+ var52.i = ((orc_uint32) var51.i) << 8;
+ /* 14: orl */
+ var42.i = var50.i | var52.i;
+ /* 15: storel */
+ ptr0[i] = var42;
+ }
+
+}
+
+void
+video_orc_unpack_RGB15_trunc (guint32 * ORC_RESTRICT d1,
+ const guint16 * 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, 28, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
+ 97, 99, 107, 95, 82, 71, 66, 49, 53, 95, 116, 114, 117, 110, 99, 11,
+ 4, 4, 12, 2, 2, 14, 2, 0, 124, 0, 0, 14, 2, 224, 3, 0,
+ 0, 14, 2, 31, 0, 0, 0, 14, 2, 7, 0, 0, 0, 14, 2, 2,
+ 0, 0, 0, 14, 2, 3, 0, 0, 0, 14, 2, 255, 0, 0, 0, 14,
+ 4, 8, 0, 0, 0, 20, 2, 20, 2, 20, 2, 20, 2, 20, 4, 20,
+ 4, 82, 32, 4, 73, 33, 32, 16, 73, 34, 32, 17, 73, 35, 32, 18,
+ 95, 33, 33, 19, 95, 34, 34, 20, 93, 35, 35, 21, 195, 36, 22, 34,
+ 195, 37, 33, 35, 124, 37, 37, 23, 123, 0, 36, 37, 2, 0,
+ };
+ p = orc_program_new_from_static_bytecode (bc);
+ orc_program_set_backup_function (p, _backup_video_orc_unpack_RGB15_trunc);
+#else
+ p = orc_program_new ();
+ orc_program_set_name (p, "video_orc_unpack_RGB15_trunc");
+ orc_program_set_backup_function (p, _backup_video_orc_unpack_RGB15_trunc);
+ orc_program_add_destination (p, 4, "d1");
+ orc_program_add_source (p, 2, "s1");
+ orc_program_add_constant (p, 2, 0x00007c00, "c1");
+ orc_program_add_constant (p, 2, 0x000003e0, "c2");
+ orc_program_add_constant (p, 2, 0x0000001f, "c3");
+ orc_program_add_constant (p, 2, 0x00000007, "c4");
+ orc_program_add_constant (p, 2, 0x00000002, "c5");
+ orc_program_add_constant (p, 2, 0x00000003, "c6");
+ orc_program_add_constant (p, 2, 0x000000ff, "c7");
+ orc_program_add_constant (p, 4, 0x00000008, "c8");
+ orc_program_add_temporary (p, 2, "t1");
+ orc_program_add_temporary (p, 2, "t2");
+ orc_program_add_temporary (p, 2, "t3");
+ orc_program_add_temporary (p, 2, "t4");
+ orc_program_add_temporary (p, 4, "t5");
+ orc_program_add_temporary (p, 4, "t6");
+
+ orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "shruw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "shruw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "shlw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C6,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C7, ORC_VAR_T3,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_T4,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "shll", 0, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_C8,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_T6,
+ 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
+
+
+/* video_orc_pack_RGB15 */
+#ifdef DISABLE_ORC
+void
+video_orc_pack_RGB15 (guint16 * ORC_RESTRICT d1,
+ const guint32 * ORC_RESTRICT s1, int n)
+{
+ int i;
+ orc_union16 *ORC_RESTRICT ptr0;
+ const orc_union32 *ORC_RESTRICT ptr4;
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union32 var37;
+#else
+ orc_union32 var37;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union32 var38;
+#else
+ orc_union32 var38;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union32 var39;
+#else
+ orc_union32 var39;
+#endif
+ orc_union16 var40;
+ orc_union32 var41;
+ orc_union32 var42;
+ orc_union32 var43;
+ orc_union32 var44;
+ orc_union32 var45;
+ orc_union32 var46;
+ orc_union32 var47;
+ orc_union32 var48;
+ orc_union32 var49;
+
+ ptr0 = (orc_union16 *) d1;
+ ptr4 = (orc_union32 *) s1;
+
+ /* 1: loadpl */
+ var37.i = (int) 0x0000f800; /* 63488 or 3.13672e-319f */
+ /* 3: loadpl */
+ var38.i = (int) 0x00f80000; /* 16252928 or 8.03001e-317f */
+ /* 5: loadpl */
+ var39.i = (int) 0xf8000000; /* -134217728 or 2.05568e-314f */
+
+ for (i = 0; i < n; i++) {
+ /* 0: loadl */
+ var41 = ptr4[i];
+ /* 2: andl */
+ var42.i = var41.i & var37.i;
+ /* 4: andl */
+ var43.i = var41.i & var38.i;
+ /* 6: andl */
+ var44.i = var41.i & var39.i;
+ /* 7: shrul */
+ var45.i = ((orc_uint32) var42.i) >> 1;
+ /* 8: shrul */
+ var46.i = ((orc_uint32) var43.i) >> 14;
+ /* 9: shrul */
+ var47.i = ((orc_uint32) var44.i) >> 27;
+ /* 10: orl */
+ var48.i = var45.i | var46.i;
+ /* 11: orl */
+ var49.i = var48.i | var47.i;
+ /* 12: select0lw */
+ {
+ orc_union32 _src;
+ _src.i = var49.i;
+ var40.i = _src.x2[0];
+ }
+ /* 13: storew */
+ ptr0[i] = var40;
+ }
+
+}
+
+#else
+static void
+_backup_video_orc_pack_RGB15 (OrcExecutor * ORC_RESTRICT ex)
+{
+ int i;
+ int n = ex->n;
+ orc_union16 *ORC_RESTRICT ptr0;
+ const orc_union32 *ORC_RESTRICT ptr4;
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union32 var37;
+#else
+ orc_union32 var37;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union32 var38;
+#else
+ orc_union32 var38;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union32 var39;
+#else
+ orc_union32 var39;
+#endif
+ orc_union16 var40;
+ orc_union32 var41;
+ orc_union32 var42;
+ orc_union32 var43;
+ orc_union32 var44;
+ orc_union32 var45;
+ orc_union32 var46;
+ orc_union32 var47;
+ orc_union32 var48;
+ orc_union32 var49;
+
+ ptr0 = (orc_union16 *) ex->arrays[0];
+ ptr4 = (orc_union32 *) ex->arrays[4];
+
+ /* 1: loadpl */
+ var37.i = (int) 0x0000f800; /* 63488 or 3.13672e-319f */
+ /* 3: loadpl */
+ var38.i = (int) 0x00f80000; /* 16252928 or 8.03001e-317f */
+ /* 5: loadpl */
+ var39.i = (int) 0xf8000000; /* -134217728 or 2.05568e-314f */
+
+ for (i = 0; i < n; i++) {
+ /* 0: loadl */
+ var41 = ptr4[i];
+ /* 2: andl */
+ var42.i = var41.i & var37.i;
+ /* 4: andl */
+ var43.i = var41.i & var38.i;
+ /* 6: andl */
+ var44.i = var41.i & var39.i;
+ /* 7: shrul */
+ var45.i = ((orc_uint32) var42.i) >> 1;
+ /* 8: shrul */
+ var46.i = ((orc_uint32) var43.i) >> 14;
+ /* 9: shrul */
+ var47.i = ((orc_uint32) var44.i) >> 27;
+ /* 10: orl */
+ var48.i = var45.i | var46.i;
+ /* 11: orl */
+ var49.i = var48.i | var47.i;
+ /* 12: select0lw */
+ {
+ orc_union32 _src;
+ _src.i = var49.i;
+ var40.i = _src.x2[0];
+ }
+ /* 13: storew */
+ ptr0[i] = var40;
+ }
+
+}
+
+void
+video_orc_pack_RGB15 (guint16 * ORC_RESTRICT d1,
+ const guint32 * 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, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
+ 107, 95, 82, 71, 66, 49, 53, 11, 2, 2, 12, 4, 4, 14, 4, 0,
+ 248, 0, 0, 14, 4, 0, 0, 248, 0, 14, 4, 0, 0, 0, 248, 14,
+ 4, 1, 0, 0, 0, 14, 4, 14, 0, 0, 0, 14, 4, 27, 0, 0,
+ 0, 20, 4, 20, 4, 20, 4, 20, 4, 20, 4, 113, 32, 4, 106, 33,
+ 32, 16, 106, 34, 32, 17, 106, 35, 32, 18, 126, 33, 33, 19, 126, 34,
+ 34, 20, 126, 35, 35, 21, 123, 36, 33, 34, 123, 36, 36, 35, 190, 0,
+ 36, 2, 0,
+ };
+ p = orc_program_new_from_static_bytecode (bc);
+ orc_program_set_backup_function (p, _backup_video_orc_pack_RGB15);
+#else
+ p = orc_program_new ();
+ orc_program_set_name (p, "video_orc_pack_RGB15");
+ orc_program_set_backup_function (p, _backup_video_orc_pack_RGB15);
+ orc_program_add_destination (p, 2, "d1");
+ orc_program_add_source (p, 4, "s1");
+ orc_program_add_constant (p, 4, 0x0000f800, "c1");
+ orc_program_add_constant (p, 4, 0x00f80000, "c2");
+ orc_program_add_constant (p, 4, 0xf8000000, "c3");
+ orc_program_add_constant (p, 4, 0x00000001, "c4");
+ orc_program_add_constant (p, 4, 0x0000000e, "c5");
+ orc_program_add_constant (p, 4, 0x0000001b, "c6");
+ orc_program_add_temporary (p, 4, "t1");
+ orc_program_add_temporary (p, 4, "t2");
+ orc_program_add_temporary (p, 4, "t3");
+ orc_program_add_temporary (p, 4, "t4");
+ orc_program_add_temporary (p, 4, "t5");
+
+ orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "andl", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "shrul", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "shrul", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C6,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_T3,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "select0lw", 0, ORC_VAR_D1, ORC_VAR_T5,
+ ORC_VAR_D1, 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
+
+
+/* video_orc_unpack_BGR15 */
+#ifdef DISABLE_ORC
+void
+video_orc_unpack_BGR15 (guint32 * ORC_RESTRICT d1,
+ const guint16 * ORC_RESTRICT s1, int n)
+{
+ int i;
+ orc_union32 *ORC_RESTRICT ptr0;
+ const orc_union16 *ORC_RESTRICT ptr4;
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var38;
+#else
+ orc_union16 var38;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var39;
+#else
+ orc_union16 var39;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var40;
+#else
+ orc_union16 var40;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var41;
+#else
+ orc_union16 var41;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var42;
+#else
+ orc_union16 var42;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var43;
+#else
+ orc_union16 var43;
+#endif
+ orc_union32 var44;
+ orc_union16 var45;
+ orc_union16 var46;
+ orc_union16 var47;
+ orc_union16 var48;
+ orc_union16 var49;
+ orc_union16 var50;
+ orc_union16 var51;
+ orc_union16 var52;
+ orc_union32 var53;
+ orc_union32 var54;
+ orc_union32 var55;
+
+ ptr0 = (orc_union32 *) d1;
+ ptr4 = (orc_union16 *) s1;
+
+ /* 1: loadpw */
+ var38.i = (int) 0x00007c00; /* 31744 or 1.56836e-319f */
+ /* 3: loadpw */
+ var39.i = (int) 0x000003e0; /* 992 or 4.90113e-321f */
+ /* 5: loadpw */
+ var40.i = (int) 0x0000001f; /* 31 or 1.5316e-322f */
+ /* 8: loadpw */
+ var41.i = (int) 0x00000210; /* 528 or 2.60867e-321f */
+ /* 10: loadpw */
+ var42.i = (int) 0x00004200; /* 16896 or 8.34773e-320f */
+ /* 13: loadpw */
+ var43.i = (int) 0x000000ff; /* 255 or 1.25987e-321f */
+
+ for (i = 0; i < n; i++) {
+ /* 0: loadw */
+ var45 = ptr4[i];
+ /* 2: andw */
+ var46.i = var45.i & var38.i;
+ /* 4: andw */
+ var47.i = var45.i & var39.i;
+ /* 6: andw */
+ var48.i = var45.i & var40.i;
+ /* 7: shlw */
+ var49.i = ((orc_uint16) var48.i) << 5;
+ /* 9: mulhsw */
+ var50.i = (var46.i * var41.i) >> 16;
+ /* 11: mulhsw */
+ var51.i = (var47.i * var42.i) >> 16;
+ /* 12: mulhsw */
+ var52.i = (var49.i * var42.i) >> 16;
+ /* 14: mergewl */
+ {
+ orc_union32 _dest;
+ _dest.x2[0] = var43.i;
+ _dest.x2[1] = var51.i;
+ var53.i = _dest.i;
+ }
+ /* 15: mergewl */
+ {
+ orc_union32 _dest;
+ _dest.x2[0] = var52.i;
+ _dest.x2[1] = var50.i;
+ var54.i = _dest.i;
+ }
+ /* 16: shll */
+ var55.i = ((orc_uint32) var54.i) << 8;
+ /* 17: orl */
+ var44.i = var53.i | var55.i;
+ /* 18: storel */
+ ptr0[i] = var44;
+ }
+
+}
+
+#else
+static void
+_backup_video_orc_unpack_BGR15 (OrcExecutor * ORC_RESTRICT ex)
+{
+ int i;
+ int n = ex->n;
+ orc_union32 *ORC_RESTRICT ptr0;
+ const orc_union16 *ORC_RESTRICT ptr4;
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var38;
+#else
+ orc_union16 var38;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var39;
+#else
+ orc_union16 var39;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var40;
+#else
+ orc_union16 var40;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var41;
+#else
+ orc_union16 var41;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var42;
+#else
+ orc_union16 var42;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var43;
+#else
+ orc_union16 var43;
+#endif
+ orc_union32 var44;
+ orc_union16 var45;
+ orc_union16 var46;
+ orc_union16 var47;
+ orc_union16 var48;
+ orc_union16 var49;
+ orc_union16 var50;
+ orc_union16 var51;
+ orc_union16 var52;
+ orc_union32 var53;
+ orc_union32 var54;
+ orc_union32 var55;
+
+ ptr0 = (orc_union32 *) ex->arrays[0];
+ ptr4 = (orc_union16 *) ex->arrays[4];
+
+ /* 1: loadpw */
+ var38.i = (int) 0x00007c00; /* 31744 or 1.56836e-319f */
+ /* 3: loadpw */
+ var39.i = (int) 0x000003e0; /* 992 or 4.90113e-321f */
+ /* 5: loadpw */
+ var40.i = (int) 0x0000001f; /* 31 or 1.5316e-322f */
+ /* 8: loadpw */
+ var41.i = (int) 0x00000210; /* 528 or 2.60867e-321f */
+ /* 10: loadpw */
+ var42.i = (int) 0x00004200; /* 16896 or 8.34773e-320f */
+ /* 13: loadpw */
+ var43.i = (int) 0x000000ff; /* 255 or 1.25987e-321f */
+
+ for (i = 0; i < n; i++) {
+ /* 0: loadw */
+ var45 = ptr4[i];
+ /* 2: andw */
+ var46.i = var45.i & var38.i;
+ /* 4: andw */
+ var47.i = var45.i & var39.i;
+ /* 6: andw */
+ var48.i = var45.i & var40.i;
+ /* 7: shlw */
+ var49.i = ((orc_uint16) var48.i) << 5;
+ /* 9: mulhsw */
+ var50.i = (var46.i * var41.i) >> 16;
+ /* 11: mulhsw */
+ var51.i = (var47.i * var42.i) >> 16;
+ /* 12: mulhsw */
+ var52.i = (var49.i * var42.i) >> 16;
+ /* 14: mergewl */
+ {
+ orc_union32 _dest;
+ _dest.x2[0] = var43.i;
+ _dest.x2[1] = var51.i;
+ var53.i = _dest.i;
+ }
+ /* 15: mergewl */
+ {
+ orc_union32 _dest;
+ _dest.x2[0] = var52.i;
+ _dest.x2[1] = var50.i;
+ var54.i = _dest.i;
+ }
+ /* 16: shll */
+ var55.i = ((orc_uint32) var54.i) << 8;
+ /* 17: orl */
+ var44.i = var53.i | var55.i;
+ /* 18: storel */
+ ptr0[i] = var44;
+ }
+
+}
+
+void
+video_orc_unpack_BGR15 (guint32 * ORC_RESTRICT d1,
+ const guint16 * 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, 22, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
+ 97, 99, 107, 95, 66, 71, 82, 49, 53, 11, 4, 4, 12, 2, 2, 14,
+ 2, 0, 124, 0, 0, 14, 2, 224, 3, 0, 0, 14, 2, 31, 0, 0,
+ 0, 14, 2, 5, 0, 0, 0, 14, 2, 16, 2, 0, 0, 14, 2, 0,
+ 66, 0, 0, 14, 2, 255, 0, 0, 0, 14, 4, 8, 0, 0, 0, 20,
+ 2, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, 82, 32, 4, 73, 35,
+ 32, 16, 73, 34, 32, 17, 73, 33, 32, 18, 93, 33, 33, 19, 90, 35,
+ 35, 20, 90, 34, 34, 21, 90, 33, 33, 21, 195, 36, 22, 34, 195, 37,
+ 33, 35, 124, 37, 37, 23, 123, 0, 36, 37, 2, 0,
+ };
+ p = orc_program_new_from_static_bytecode (bc);
+ orc_program_set_backup_function (p, _backup_video_orc_unpack_BGR15);
+#else
+ p = orc_program_new ();
+ orc_program_set_name (p, "video_orc_unpack_BGR15");
+ orc_program_set_backup_function (p, _backup_video_orc_unpack_BGR15);
+ orc_program_add_destination (p, 4, "d1");
+ orc_program_add_source (p, 2, "s1");
+ orc_program_add_constant (p, 2, 0x00007c00, "c1");
+ orc_program_add_constant (p, 2, 0x000003e0, "c2");
+ orc_program_add_constant (p, 2, 0x0000001f, "c3");
+ orc_program_add_constant (p, 2, 0x00000005, "c4");
+ orc_program_add_constant (p, 2, 0x00000210, "c5");
+ orc_program_add_constant (p, 2, 0x00004200, "c6");
+ orc_program_add_constant (p, 2, 0x000000ff, "c7");
+ orc_program_add_constant (p, 4, 0x00000008, "c8");
+ orc_program_add_temporary (p, 2, "t1");
+ orc_program_add_temporary (p, 2, "t2");
+ orc_program_add_temporary (p, 2, "t3");
+ orc_program_add_temporary (p, 2, "t4");
+ orc_program_add_temporary (p, 4, "t5");
+ orc_program_add_temporary (p, 4, "t6");
+
+ orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C1,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C3,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "shlw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C5,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C6,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C6,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C7, ORC_VAR_T3,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_T4,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "shll", 0, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_C8,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_T6,
+ 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
+
+
+/* video_orc_unpack_BGR15_trunc */
+#ifdef DISABLE_ORC
+void
+video_orc_unpack_BGR15_trunc (guint32 * ORC_RESTRICT d1,
+ const guint16 * ORC_RESTRICT s1, int n)
+{
+ int i;
+ orc_union32 *ORC_RESTRICT ptr0;
+ const orc_union16 *ORC_RESTRICT ptr4;
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var38;
+#else
+ orc_union16 var38;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var39;
+#else
+ orc_union16 var39;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var40;
+#else
+ orc_union16 var40;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var41;
+#else
+ orc_union16 var41;
+#endif
+ orc_union32 var42;
+ orc_union16 var43;
+ orc_union16 var44;
+ orc_union16 var45;
+ orc_union16 var46;
+ orc_union16 var47;
+ orc_union16 var48;
+ orc_union16 var49;
+ orc_union32 var50;
+ orc_union32 var51;
+ orc_union32 var52;
+
+ ptr0 = (orc_union32 *) d1;
+ ptr4 = (orc_union16 *) s1;
+
+ /* 1: loadpw */
+ var38.i = (int) 0x00007c00; /* 31744 or 1.56836e-319f */
+ /* 3: loadpw */
+ var39.i = (int) 0x000003e0; /* 992 or 4.90113e-321f */
+ /* 5: loadpw */
+ var40.i = (int) 0x0000001f; /* 31 or 1.5316e-322f */
+ /* 10: loadpw */
+ var41.i = (int) 0x000000ff; /* 255 or 1.25987e-321f */
+
+ for (i = 0; i < n; i++) {
+ /* 0: loadw */
+ var43 = ptr4[i];
+ /* 2: andw */
+ var44.i = var43.i & var38.i;
+ /* 4: andw */
+ var45.i = var43.i & var39.i;
+ /* 6: andw */
+ var46.i = var43.i & var40.i;
+ /* 7: shruw */
+ var47.i = ((orc_uint16) var44.i) >> 7;
+ /* 8: shruw */
+ var48.i = ((orc_uint16) var45.i) >> 2;
+ /* 9: shlw */
+ var49.i = ((orc_uint16) var46.i) << 3;
+ /* 11: mergewl */
+ {
+ orc_union32 _dest;
+ _dest.x2[0] = var41.i;
+ _dest.x2[1] = var48.i;
+ var50.i = _dest.i;
+ }
+ /* 12: mergewl */
+ {
+ orc_union32 _dest;
+ _dest.x2[0] = var49.i;
+ _dest.x2[1] = var47.i;
+ var51.i = _dest.i;
+ }
+ /* 13: shll */
+ var52.i = ((orc_uint32) var51.i) << 8;
+ /* 14: orl */
+ var42.i = var50.i | var52.i;
+ /* 15: storel */
+ ptr0[i] = var42;
+ }
+
+}
+
+#else
+static void
+_backup_video_orc_unpack_BGR15_trunc (OrcExecutor * ORC_RESTRICT ex)
+{
+ int i;
+ int n = ex->n;
+ orc_union32 *ORC_RESTRICT ptr0;
+ const orc_union16 *ORC_RESTRICT ptr4;
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var38;
+#else
+ orc_union16 var38;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var39;
+#else
+ orc_union16 var39;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var40;
+#else
+ orc_union16 var40;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var41;
+#else
+ orc_union16 var41;
+#endif
+ orc_union32 var42;
+ orc_union16 var43;
+ orc_union16 var44;
+ orc_union16 var45;
+ orc_union16 var46;
+ orc_union16 var47;
+ orc_union16 var48;
+ orc_union16 var49;
+ orc_union32 var50;
+ orc_union32 var51;
+ orc_union32 var52;
+
+ ptr0 = (orc_union32 *) ex->arrays[0];
+ ptr4 = (orc_union16 *) ex->arrays[4];
+
+ /* 1: loadpw */
+ var38.i = (int) 0x00007c00; /* 31744 or 1.56836e-319f */
+ /* 3: loadpw */
+ var39.i = (int) 0x000003e0; /* 992 or 4.90113e-321f */
+ /* 5: loadpw */
+ var40.i = (int) 0x0000001f; /* 31 or 1.5316e-322f */
+ /* 10: loadpw */
+ var41.i = (int) 0x000000ff; /* 255 or 1.25987e-321f */
+
+ for (i = 0; i < n; i++) {
+ /* 0: loadw */
+ var43 = ptr4[i];
+ /* 2: andw */
+ var44.i = var43.i & var38.i;
+ /* 4: andw */
+ var45.i = var43.i & var39.i;
+ /* 6: andw */
+ var46.i = var43.i & var40.i;
+ /* 7: shruw */
+ var47.i = ((orc_uint16) var44.i) >> 7;
+ /* 8: shruw */
+ var48.i = ((orc_uint16) var45.i) >> 2;
+ /* 9: shlw */
+ var49.i = ((orc_uint16) var46.i) << 3;
+ /* 11: mergewl */
+ {
+ orc_union32 _dest;
+ _dest.x2[0] = var41.i;
+ _dest.x2[1] = var48.i;
+ var50.i = _dest.i;
+ }
+ /* 12: mergewl */
+ {
+ orc_union32 _dest;
+ _dest.x2[0] = var49.i;
+ _dest.x2[1] = var47.i;
+ var51.i = _dest.i;
+ }
+ /* 13: shll */
+ var52.i = ((orc_uint32) var51.i) << 8;
+ /* 14: orl */
+ var42.i = var50.i | var52.i;
+ /* 15: storel */
+ ptr0[i] = var42;
+ }
+
+}
+
+void
+video_orc_unpack_BGR15_trunc (guint32 * ORC_RESTRICT d1,
+ const guint16 * 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, 28, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
+ 97, 99, 107, 95, 66, 71, 82, 49, 53, 95, 116, 114, 117, 110, 99, 11,
+ 4, 4, 12, 2, 2, 14, 2, 0, 124, 0, 0, 14, 2, 224, 3, 0,
+ 0, 14, 2, 31, 0, 0, 0, 14, 2, 7, 0, 0, 0, 14, 2, 2,
+ 0, 0, 0, 14, 2, 3, 0, 0, 0, 14, 2, 255, 0, 0, 0, 14,
+ 4, 8, 0, 0, 0, 20, 2, 20, 2, 20, 2, 20, 2, 20, 4, 20,
+ 4, 82, 32, 4, 73, 35, 32, 16, 73, 34, 32, 17, 73, 33, 32, 18,
+ 95, 35, 35, 19, 95, 34, 34, 20, 93, 33, 33, 21, 195, 36, 22, 34,
+ 195, 37, 33, 35, 124, 37, 37, 23, 123, 0, 36, 37, 2, 0,
+ };
+ p = orc_program_new_from_static_bytecode (bc);
+ orc_program_set_backup_function (p, _backup_video_orc_unpack_BGR15_trunc);
+#else
+ p = orc_program_new ();
+ orc_program_set_name (p, "video_orc_unpack_BGR15_trunc");
+ orc_program_set_backup_function (p, _backup_video_orc_unpack_BGR15_trunc);
+ orc_program_add_destination (p, 4, "d1");
+ orc_program_add_source (p, 2, "s1");
+ orc_program_add_constant (p, 2, 0x00007c00, "c1");
+ orc_program_add_constant (p, 2, 0x000003e0, "c2");
+ orc_program_add_constant (p, 2, 0x0000001f, "c3");
+ orc_program_add_constant (p, 2, 0x00000007, "c4");
+ orc_program_add_constant (p, 2, 0x00000002, "c5");
+ orc_program_add_constant (p, 2, 0x00000003, "c6");
+ orc_program_add_constant (p, 2, 0x000000ff, "c7");
+ orc_program_add_constant (p, 4, 0x00000008, "c8");
+ orc_program_add_temporary (p, 2, "t1");
+ orc_program_add_temporary (p, 2, "t2");
+ orc_program_add_temporary (p, 2, "t3");
+ orc_program_add_temporary (p, 2, "t4");
+ orc_program_add_temporary (p, 4, "t5");
+ orc_program_add_temporary (p, 4, "t6");
+
+ orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C1,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C3,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "shruw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C4,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "shruw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "shlw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C6,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C7, ORC_VAR_T3,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_T4,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "shll", 0, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_C8,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T5, ORC_VAR_T6,
+ 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
+
+
+/* video_orc_pack_BGR15 */
+#ifdef DISABLE_ORC
+void
+video_orc_pack_BGR15 (guint16 * ORC_RESTRICT d1,
+ const guint32 * ORC_RESTRICT s1, int n)
+{
+ int i;
+ orc_union16 *ORC_RESTRICT ptr0;
+ const orc_union32 *ORC_RESTRICT ptr4;
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union32 var37;
+#else
+ orc_union32 var37;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union32 var38;
+#else
+ orc_union32 var38;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union32 var39;
+#else
+ orc_union32 var39;
+#endif
+ orc_union16 var40;
+ orc_union32 var41;
+ orc_union32 var42;
+ orc_union32 var43;
+ orc_union32 var44;
+ orc_union32 var45;
+ orc_union32 var46;
+ orc_union32 var47;
+ orc_union32 var48;
+ orc_union32 var49;
+
+ ptr0 = (orc_union16 *) d1;
+ ptr4 = (orc_union32 *) s1;
+
+ /* 1: loadpl */
+ var37.i = (int) 0x0000f800; /* 63488 or 3.13672e-319f */
+ /* 3: loadpl */
+ var38.i = (int) 0x00f80000; /* 16252928 or 8.03001e-317f */
+ /* 5: loadpl */
+ var39.i = (int) 0xf8000000; /* -134217728 or 2.05568e-314f */
+
+ for (i = 0; i < n; i++) {
+ /* 0: loadl */
+ var41 = ptr4[i];
+ /* 2: andl */
+ var42.i = var41.i & var37.i;
+ /* 4: andl */
+ var43.i = var41.i & var38.i;
+ /* 6: andl */
+ var44.i = var41.i & var39.i;
+ /* 7: shrul */
+ var45.i = ((orc_uint32) var44.i) >> 17;
+ /* 8: shrul */
+ var46.i = ((orc_uint32) var43.i) >> 14;
+ /* 9: shrul */
+ var47.i = ((orc_uint32) var42.i) >> 11;
+ /* 10: orl */
+ var48.i = var47.i | var46.i;
+ /* 11: orl */
+ var49.i = var48.i | var45.i;
+ /* 12: select0lw */
+ {
+ orc_union32 _src;
+ _src.i = var49.i;
+ var40.i = _src.x2[0];
+ }
+ /* 13: storew */
+ ptr0[i] = var40;
+ }
+
+}
+
+#else
+static void
+_backup_video_orc_pack_BGR15 (OrcExecutor * ORC_RESTRICT ex)
+{
+ int i;
+ int n = ex->n;
+ orc_union16 *ORC_RESTRICT ptr0;
+ const orc_union32 *ORC_RESTRICT ptr4;
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union32 var37;
+#else
+ orc_union32 var37;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union32 var38;
+#else
+ orc_union32 var38;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union32 var39;
+#else
+ orc_union32 var39;
+#endif
+ orc_union16 var40;
+ orc_union32 var41;
+ orc_union32 var42;
+ orc_union32 var43;
+ orc_union32 var44;
+ orc_union32 var45;
+ orc_union32 var46;
+ orc_union32 var47;
+ orc_union32 var48;
+ orc_union32 var49;
+
+ ptr0 = (orc_union16 *) ex->arrays[0];
+ ptr4 = (orc_union32 *) ex->arrays[4];
+
+ /* 1: loadpl */
+ var37.i = (int) 0x0000f800; /* 63488 or 3.13672e-319f */
+ /* 3: loadpl */
+ var38.i = (int) 0x00f80000; /* 16252928 or 8.03001e-317f */
+ /* 5: loadpl */
+ var39.i = (int) 0xf8000000; /* -134217728 or 2.05568e-314f */
+
+ for (i = 0; i < n; i++) {
+ /* 0: loadl */
+ var41 = ptr4[i];
+ /* 2: andl */
+ var42.i = var41.i & var37.i;
+ /* 4: andl */
+ var43.i = var41.i & var38.i;
+ /* 6: andl */
+ var44.i = var41.i & var39.i;
+ /* 7: shrul */
+ var45.i = ((orc_uint32) var44.i) >> 17;
+ /* 8: shrul */
+ var46.i = ((orc_uint32) var43.i) >> 14;
+ /* 9: shrul */
+ var47.i = ((orc_uint32) var42.i) >> 11;
+ /* 10: orl */
+ var48.i = var47.i | var46.i;
+ /* 11: orl */
+ var49.i = var48.i | var45.i;
+ /* 12: select0lw */
+ {
+ orc_union32 _src;
+ _src.i = var49.i;
+ var40.i = _src.x2[0];
+ }
+ /* 13: storew */
+ ptr0[i] = var40;
+ }
+
+}
+
+void
+video_orc_pack_BGR15 (guint16 * ORC_RESTRICT d1,
+ const guint32 * 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, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
+ 107, 95, 66, 71, 82, 49, 53, 11, 2, 2, 12, 4, 4, 14, 4, 0,
+ 248, 0, 0, 14, 4, 0, 0, 248, 0, 14, 4, 0, 0, 0, 248, 14,
+ 4, 17, 0, 0, 0, 14, 4, 14, 0, 0, 0, 14, 4, 11, 0, 0,
+ 0, 20, 4, 20, 4, 20, 4, 20, 4, 20, 4, 113, 32, 4, 106, 33,
+ 32, 16, 106, 34, 32, 17, 106, 35, 32, 18, 126, 35, 35, 19, 126, 34,
+ 34, 20, 126, 33, 33, 21, 123, 36, 33, 34, 123, 36, 36, 35, 190, 0,
+ 36, 2, 0,
+ };
+ p = orc_program_new_from_static_bytecode (bc);
+ orc_program_set_backup_function (p, _backup_video_orc_pack_BGR15);
+#else
+ p = orc_program_new ();
+ orc_program_set_name (p, "video_orc_pack_BGR15");
+ orc_program_set_backup_function (p, _backup_video_orc_pack_BGR15);
+ orc_program_add_destination (p, 2, "d1");
+ orc_program_add_source (p, 4, "s1");
+ orc_program_add_constant (p, 4, 0x0000f800, "c1");
+ orc_program_add_constant (p, 4, 0x00f80000, "c2");
+ orc_program_add_constant (p, 4, 0xf8000000, "c3");
+ orc_program_add_constant (p, 4, 0x00000011, "c4");
+ orc_program_add_constant (p, 4, 0x0000000e, "c5");
+ orc_program_add_constant (p, 4, 0x0000000b, "c6");
+ orc_program_add_temporary (p, 4, "t1");
+ orc_program_add_temporary (p, 4, "t2");
+ orc_program_add_temporary (p, 4, "t3");
+ orc_program_add_temporary (p, 4, "t4");
+ orc_program_add_temporary (p, 4, "t5");
+
+ orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "andl", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "shrul", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C4,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "shrul", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C6,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_T3,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "select0lw", 0, ORC_VAR_D1, ORC_VAR_T5,
+ ORC_VAR_D1, 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
+
+
+/* video_orc_unpack_RGB16 */
+#ifdef DISABLE_ORC
+void
+video_orc_unpack_RGB16 (guint32 * ORC_RESTRICT d1,
+ const guint16 * ORC_RESTRICT s1, int n)
+{
+ int i;
+ orc_union32 *ORC_RESTRICT ptr0;
+ const orc_union16 *ORC_RESTRICT ptr4;
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var39;
+#else
+ orc_union16 var39;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var40;
+#else
+ orc_union16 var40;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var41;
+#else
+ orc_union16 var41;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var42;
+#else
+ orc_union16 var42;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var43;
+#else
+ orc_union16 var43;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var44;
+#else
+ orc_union16 var44;
+#endif
+ orc_union32 var45;
+ orc_union16 var46;
+ orc_union16 var47;
+ orc_union16 var48;
+ orc_union16 var49;
+ orc_union16 var50;
+ orc_union16 var51;
+ orc_union16 var52;
+ orc_union16 var53;
+ orc_union16 var54;
+ orc_union32 var55;
+ orc_union32 var56;
+ orc_union64 var57;
+
+ ptr0 = (orc_union32 *) d1;
+ ptr4 = (orc_union16 *) s1;
+
+ /* 1: loadpw */
+ var39.i = (int) 0x0000f800; /* 63488 or 3.13672e-319f */
+ /* 3: loadpw */
+ var40.i = (int) 0x000007e0; /* 2016 or 9.96036e-321f */
+ /* 5: loadpw */
+ var41.i = (int) 0x0000001f; /* 31 or 1.5316e-322f */
+ /* 9: loadpw */
+ var42.i = (int) 0x00004200; /* 16896 or 8.34773e-320f */
+ /* 11: loadpw */
+ var43.i = (int) 0x00002080; /* 8320 or 4.11063e-320f */
+ /* 14: loadpw */
+ var44.i = (int) 0x000000ff; /* 255 or 1.25987e-321f */
+
+ for (i = 0; i < n; i++) {
+ /* 0: loadw */
+ var46 = ptr4[i];
+ /* 2: andw */
+ var47.i = var46.i & var39.i;
+ /* 4: andw */
+ var48.i = var46.i & var40.i;
+ /* 6: andw */
+ var49.i = var46.i & var41.i;
+ /* 7: shruw */
+ var50.i = ((orc_uint16) var47.i) >> 6;
+ /* 8: shlw */
+ var51.i = ((orc_uint16) var49.i) << 5;
+ /* 10: mulhsw */
+ var52.i = (var50.i * var42.i) >> 16;
+ /* 12: mulhsw */
+ var53.i = (var48.i * var43.i) >> 16;
+ /* 13: mulhsw */
+ var54.i = (var51.i * var42.i) >> 16;
+ /* 15: mergewl */
+ {
+ orc_union32 _dest;
+ _dest.x2[0] = var44.i;
+ _dest.x2[1] = var52.i;
+ var55.i = _dest.i;
+ }
+ /* 16: mergewl */
+ {
+ orc_union32 _dest;
+ _dest.x2[0] = var53.i;
+ _dest.x2[1] = var54.i;
+ var56.i = _dest.i;
+ }
+ /* 17: mergelq */
+ {
+ orc_union64 _dest;
+ _dest.x2[0] = var55.i;
+ _dest.x2[1] = var56.i;
+ var57.i = _dest.i;
+ }
+ /* 18: convsuswb */
+ var45.x4[0] = ORC_CLAMP_UB (var57.x4[0]);
+ var45.x4[1] = ORC_CLAMP_UB (var57.x4[1]);
+ var45.x4[2] = ORC_CLAMP_UB (var57.x4[2]);
+ var45.x4[3] = ORC_CLAMP_UB (var57.x4[3]);
+ /* 19: storel */
+ ptr0[i] = var45;
+ }
+
+}
+
+#else
+static void
+_backup_video_orc_unpack_RGB16 (OrcExecutor * ORC_RESTRICT ex)
+{
+ int i;
+ int n = ex->n;
+ orc_union32 *ORC_RESTRICT ptr0;
+ const orc_union16 *ORC_RESTRICT ptr4;
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var39;
+#else
+ orc_union16 var39;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var40;
+#else
+ orc_union16 var40;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var41;
+#else
+ orc_union16 var41;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var42;
+#else
+ orc_union16 var42;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var43;
+#else
+ orc_union16 var43;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var44;
+#else
+ orc_union16 var44;
+#endif
+ orc_union32 var45;
+ orc_union16 var46;
+ orc_union16 var47;
+ orc_union16 var48;
+ orc_union16 var49;
+ orc_union16 var50;
+ orc_union16 var51;
+ orc_union16 var52;
+ orc_union16 var53;
+ orc_union16 var54;
+ orc_union32 var55;
+ orc_union32 var56;
+ orc_union64 var57;
+
+ ptr0 = (orc_union32 *) ex->arrays[0];
+ ptr4 = (orc_union16 *) ex->arrays[4];
+
+ /* 1: loadpw */
+ var39.i = (int) 0x0000f800; /* 63488 or 3.13672e-319f */
+ /* 3: loadpw */
+ var40.i = (int) 0x000007e0; /* 2016 or 9.96036e-321f */
+ /* 5: loadpw */
+ var41.i = (int) 0x0000001f; /* 31 or 1.5316e-322f */
+ /* 9: loadpw */
+ var42.i = (int) 0x00004200; /* 16896 or 8.34773e-320f */
+ /* 11: loadpw */
+ var43.i = (int) 0x00002080; /* 8320 or 4.11063e-320f */
+ /* 14: loadpw */
+ var44.i = (int) 0x000000ff; /* 255 or 1.25987e-321f */
+
+ for (i = 0; i < n; i++) {
+ /* 0: loadw */
+ var46 = ptr4[i];
+ /* 2: andw */
+ var47.i = var46.i & var39.i;
+ /* 4: andw */
+ var48.i = var46.i & var40.i;
+ /* 6: andw */
+ var49.i = var46.i & var41.i;
+ /* 7: shruw */
+ var50.i = ((orc_uint16) var47.i) >> 6;
+ /* 8: shlw */
+ var51.i = ((orc_uint16) var49.i) << 5;
+ /* 10: mulhsw */
+ var52.i = (var50.i * var42.i) >> 16;
+ /* 12: mulhsw */
+ var53.i = (var48.i * var43.i) >> 16;
+ /* 13: mulhsw */
+ var54.i = (var51.i * var42.i) >> 16;
+ /* 15: mergewl */
+ {
+ orc_union32 _dest;
+ _dest.x2[0] = var44.i;
+ _dest.x2[1] = var52.i;
+ var55.i = _dest.i;
+ }
+ /* 16: mergewl */
+ {
+ orc_union32 _dest;
+ _dest.x2[0] = var53.i;
+ _dest.x2[1] = var54.i;
+ var56.i = _dest.i;
+ }
+ /* 17: mergelq */
+ {
+ orc_union64 _dest;
+ _dest.x2[0] = var55.i;
+ _dest.x2[1] = var56.i;
+ var57.i = _dest.i;
+ }
+ /* 18: convsuswb */
+ var45.x4[0] = ORC_CLAMP_UB (var57.x4[0]);
+ var45.x4[1] = ORC_CLAMP_UB (var57.x4[1]);
+ var45.x4[2] = ORC_CLAMP_UB (var57.x4[2]);
+ var45.x4[3] = ORC_CLAMP_UB (var57.x4[3]);
+ /* 19: storel */
+ ptr0[i] = var45;
+ }
+
+}
+
+void
+video_orc_unpack_RGB16 (guint32 * ORC_RESTRICT d1,
+ const guint16 * 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, 22, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
+ 97, 99, 107, 95, 82, 71, 66, 49, 54, 11, 4, 4, 12, 2, 2, 14,
+ 2, 0, 248, 0, 0, 14, 2, 224, 7, 0, 0, 14, 2, 31, 0, 0,
+ 0, 14, 2, 6, 0, 0, 0, 14, 2, 5, 0, 0, 0, 14, 2, 0,
+ 66, 0, 0, 14, 2, 128, 32, 0, 0, 14, 2, 255, 0, 0, 0, 20,
+ 2, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, 20, 8, 82, 32, 4,
+ 73, 33, 32, 16, 73, 34, 32, 17, 73, 35, 32, 18, 95, 33, 33, 19,
+ 93, 35, 35, 20, 90, 33, 33, 21, 90, 34, 34, 22, 90, 35, 35, 21,
+ 195, 36, 23, 33, 195, 37, 34, 35, 194, 38, 36, 37, 21, 2, 160, 0,
+ 38, 2, 0,
+ };
+ p = orc_program_new_from_static_bytecode (bc);
+ orc_program_set_backup_function (p, _backup_video_orc_unpack_RGB16);
+#else
+ p = orc_program_new ();
+ orc_program_set_name (p, "video_orc_unpack_RGB16");
+ orc_program_set_backup_function (p, _backup_video_orc_unpack_RGB16);
+ orc_program_add_destination (p, 4, "d1");
+ orc_program_add_source (p, 2, "s1");
+ orc_program_add_constant (p, 2, 0x0000f800, "c1");
+ orc_program_add_constant (p, 2, 0x000007e0, "c2");
+ orc_program_add_constant (p, 2, 0x0000001f, "c3");
+ orc_program_add_constant (p, 2, 0x00000006, "c4");
+ orc_program_add_constant (p, 2, 0x00000005, "c5");
+ orc_program_add_constant (p, 2, 0x00004200, "c6");
+ orc_program_add_constant (p, 2, 0x00002080, "c7");
+ orc_program_add_constant (p, 2, 0x000000ff, "c8");
+ orc_program_add_temporary (p, 2, "t1");
+ orc_program_add_temporary (p, 2, "t2");
+ orc_program_add_temporary (p, 2, "t3");
+ orc_program_add_temporary (p, 2, "t4");
+ orc_program_add_temporary (p, 4, "t5");
+ orc_program_add_temporary (p, 4, "t6");
+ orc_program_add_temporary (p, 8, "t7");
+
+ orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "shruw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "shlw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C5,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C6,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C7,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C6,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C8, ORC_VAR_T2,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_T4,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T7, ORC_VAR_T5, ORC_VAR_T6,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "convsuswb", 2, ORC_VAR_D1, ORC_VAR_T7,
+ ORC_VAR_D1, 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
+
+
+/* video_orc_unpack_RGB16_trunc */
+#ifdef DISABLE_ORC
+void
+video_orc_unpack_RGB16_trunc (guint32 * ORC_RESTRICT d1,
+ const guint16 * ORC_RESTRICT s1, int n)
+{
+ int i;
+ orc_union32 *ORC_RESTRICT ptr0;
+ const orc_union16 *ORC_RESTRICT ptr4;
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var39;
+#else
+ orc_union16 var39;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var40;
+#else
+ orc_union16 var40;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var41;
+#else
+ orc_union16 var41;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var42;
+#else
+ orc_union16 var42;
+#endif
+ orc_union32 var43;
+ orc_union16 var44;
+ orc_union16 var45;
+ orc_union16 var46;
+ orc_union16 var47;
+ orc_union16 var48;
+ orc_union16 var49;
+ orc_union16 var50;
+ orc_union32 var51;
+ orc_union32 var52;
+ orc_union64 var53;
+
+ ptr0 = (orc_union32 *) d1;
+ ptr4 = (orc_union16 *) s1;
+
+ /* 1: loadpw */
+ var39.i = (int) 0x0000f800; /* 63488 or 3.13672e-319f */
+ /* 3: loadpw */
+ var40.i = (int) 0x000007e0; /* 2016 or 9.96036e-321f */
+ /* 5: loadpw */
+ var41.i = (int) 0x0000001f; /* 31 or 1.5316e-322f */
+ /* 10: loadpw */
+ var42.i = (int) 0x000000ff; /* 255 or 1.25987e-321f */
+
+ for (i = 0; i < n; i++) {
+ /* 0: loadw */
+ var44 = ptr4[i];
+ /* 2: andw */
+ var45.i = var44.i & var39.i;
+ /* 4: andw */
+ var46.i = var44.i & var40.i;
+ /* 6: andw */
+ var47.i = var44.i & var41.i;
+ /* 7: shruw */
+ var48.i = ((orc_uint16) var45.i) >> 8;
+ /* 8: shruw */
+ var49.i = ((orc_uint16) var46.i) >> 3;
+ /* 9: shlw */
+ var50.i = ((orc_uint16) var47.i) << 3;
+ /* 11: mergewl */
+ {
+ orc_union32 _dest;
+ _dest.x2[0] = var42.i;
+ _dest.x2[1] = var48.i;
+ var51.i = _dest.i;
+ }
+ /* 12: mergewl */
+ {
+ orc_union32 _dest;
+ _dest.x2[0] = var49.i;
+ _dest.x2[1] = var50.i;
+ var52.i = _dest.i;
+ }
+ /* 13: mergelq */
+ {
+ orc_union64 _dest;
+ _dest.x2[0] = var51.i;
+ _dest.x2[1] = var52.i;
+ var53.i = _dest.i;
+ }
+ /* 14: convsuswb */
+ var43.x4[0] = ORC_CLAMP_UB (var53.x4[0]);
+ var43.x4[1] = ORC_CLAMP_UB (var53.x4[1]);
+ var43.x4[2] = ORC_CLAMP_UB (var53.x4[2]);
+ var43.x4[3] = ORC_CLAMP_UB (var53.x4[3]);
+ /* 15: storel */
+ ptr0[i] = var43;
+ }
+
+}
+
+#else
+static void
+_backup_video_orc_unpack_RGB16_trunc (OrcExecutor * ORC_RESTRICT ex)
+{
+ int i;
+ int n = ex->n;
+ orc_union32 *ORC_RESTRICT ptr0;
+ const orc_union16 *ORC_RESTRICT ptr4;
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var39;
+#else
+ orc_union16 var39;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var40;
+#else
+ orc_union16 var40;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var41;
+#else
+ orc_union16 var41;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var42;
+#else
+ orc_union16 var42;
+#endif
+ orc_union32 var43;
+ orc_union16 var44;
+ orc_union16 var45;
+ orc_union16 var46;
+ orc_union16 var47;
+ orc_union16 var48;
+ orc_union16 var49;
+ orc_union16 var50;
+ orc_union32 var51;
+ orc_union32 var52;
+ orc_union64 var53;
+
+ ptr0 = (orc_union32 *) ex->arrays[0];
+ ptr4 = (orc_union16 *) ex->arrays[4];
+
+ /* 1: loadpw */
+ var39.i = (int) 0x0000f800; /* 63488 or 3.13672e-319f */
+ /* 3: loadpw */
+ var40.i = (int) 0x000007e0; /* 2016 or 9.96036e-321f */
+ /* 5: loadpw */
+ var41.i = (int) 0x0000001f; /* 31 or 1.5316e-322f */
+ /* 10: loadpw */
+ var42.i = (int) 0x000000ff; /* 255 or 1.25987e-321f */
+
+ for (i = 0; i < n; i++) {
+ /* 0: loadw */
+ var44 = ptr4[i];
+ /* 2: andw */
+ var45.i = var44.i & var39.i;
+ /* 4: andw */
+ var46.i = var44.i & var40.i;
+ /* 6: andw */
+ var47.i = var44.i & var41.i;
+ /* 7: shruw */
+ var48.i = ((orc_uint16) var45.i) >> 8;
+ /* 8: shruw */
+ var49.i = ((orc_uint16) var46.i) >> 3;
+ /* 9: shlw */
+ var50.i = ((orc_uint16) var47.i) << 3;
+ /* 11: mergewl */
+ {
+ orc_union32 _dest;
+ _dest.x2[0] = var42.i;
+ _dest.x2[1] = var48.i;
+ var51.i = _dest.i;
+ }
+ /* 12: mergewl */
+ {
+ orc_union32 _dest;
+ _dest.x2[0] = var49.i;
+ _dest.x2[1] = var50.i;
+ var52.i = _dest.i;
+ }
+ /* 13: mergelq */
+ {
+ orc_union64 _dest;
+ _dest.x2[0] = var51.i;
+ _dest.x2[1] = var52.i;
+ var53.i = _dest.i;
+ }
+ /* 14: convsuswb */
+ var43.x4[0] = ORC_CLAMP_UB (var53.x4[0]);
+ var43.x4[1] = ORC_CLAMP_UB (var53.x4[1]);
+ var43.x4[2] = ORC_CLAMP_UB (var53.x4[2]);
+ var43.x4[3] = ORC_CLAMP_UB (var53.x4[3]);
+ /* 15: storel */
+ ptr0[i] = var43;
+ }
+
+}
+
+void
+video_orc_unpack_RGB16_trunc (guint32 * ORC_RESTRICT d1,
+ const guint16 * 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, 28, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
+ 97, 99, 107, 95, 82, 71, 66, 49, 54, 95, 116, 114, 117, 110, 99, 11,
+ 4, 4, 12, 2, 2, 14, 2, 0, 248, 0, 0, 14, 2, 224, 7, 0,
+ 0, 14, 2, 31, 0, 0, 0, 14, 2, 8, 0, 0, 0, 14, 2, 3,
+ 0, 0, 0, 14, 2, 255, 0, 0, 0, 20, 2, 20, 2, 20, 2, 20,
+ 2, 20, 4, 20, 4, 20, 8, 82, 32, 4, 73, 33, 32, 16, 73, 34,
+ 32, 17, 73, 35, 32, 18, 95, 33, 33, 19, 95, 34, 34, 20, 93, 35,
+ 35, 20, 195, 36, 21, 33, 195, 37, 34, 35, 194, 38, 36, 37, 21, 2,
+ 160, 0, 38, 2, 0,
+ };
+ p = orc_program_new_from_static_bytecode (bc);
+ orc_program_set_backup_function (p, _backup_video_orc_unpack_RGB16_trunc);
+#else
+ p = orc_program_new ();
+ orc_program_set_name (p, "video_orc_unpack_RGB16_trunc");
+ orc_program_set_backup_function (p, _backup_video_orc_unpack_RGB16_trunc);
+ orc_program_add_destination (p, 4, "d1");
+ orc_program_add_source (p, 2, "s1");
+ orc_program_add_constant (p, 2, 0x0000f800, "c1");
+ orc_program_add_constant (p, 2, 0x000007e0, "c2");
+ orc_program_add_constant (p, 2, 0x0000001f, "c3");
+ orc_program_add_constant (p, 2, 0x00000008, "c4");
+ orc_program_add_constant (p, 2, 0x00000003, "c5");
+ orc_program_add_constant (p, 2, 0x000000ff, "c6");
+ orc_program_add_temporary (p, 2, "t1");
+ orc_program_add_temporary (p, 2, "t2");
+ orc_program_add_temporary (p, 2, "t3");
+ orc_program_add_temporary (p, 2, "t4");
+ orc_program_add_temporary (p, 4, "t5");
+ orc_program_add_temporary (p, 4, "t6");
+ orc_program_add_temporary (p, 8, "t7");
+
+ orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "shruw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "shruw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "shlw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C5,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C6, ORC_VAR_T2,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_T4,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T7, ORC_VAR_T5, ORC_VAR_T6,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "convsuswb", 2, ORC_VAR_D1, ORC_VAR_T7,
+ ORC_VAR_D1, 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
+
+
+/* video_orc_pack_RGB16 */
+#ifdef DISABLE_ORC
+void
+video_orc_pack_RGB16 (guint16 * ORC_RESTRICT d1,
+ const guint32 * ORC_RESTRICT s1, int n)
+{
+ int i;
+ orc_union16 *ORC_RESTRICT ptr0;
+ const orc_union32 *ORC_RESTRICT ptr4;
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union32 var37;
+#else
+ orc_union32 var37;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union32 var38;
+#else
+ orc_union32 var38;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union32 var39;
+#else
+ orc_union32 var39;
+#endif
+ orc_union16 var40;
+ orc_union32 var41;
+ orc_union32 var42;
+ orc_union32 var43;
+ orc_union32 var44;
+ orc_union32 var45;
+ orc_union32 var46;
+ orc_union32 var47;
+ orc_union32 var48;
+
+ ptr0 = (orc_union16 *) d1;
+ ptr4 = (orc_union32 *) s1;
+
+ /* 1: loadpl */
+ var37.i = (int) 0x0000f800; /* 63488 or 3.13672e-319f */
+ /* 3: loadpl */
+ var38.i = (int) 0x00fc0000; /* 16515072 or 8.15953e-317f */
+ /* 5: loadpl */
+ var39.i = (int) 0xf8000000; /* -134217728 or 2.05568e-314f */
+
+ for (i = 0; i < n; i++) {
+ /* 0: loadl */
+ var41 = ptr4[i];
+ /* 2: andl */
+ var42.i = var41.i & var37.i;
+ /* 4: andl */
+ var43.i = var41.i & var38.i;
+ /* 6: andl */
+ var44.i = var41.i & var39.i;
+ /* 7: shrul */
+ var45.i = ((orc_uint32) var43.i) >> 13;
+ /* 8: shrul */
+ var46.i = ((orc_uint32) var44.i) >> 27;
+ /* 9: orl */
+ var47.i = var42.i | var45.i;
+ /* 10: orl */
+ var48.i = var47.i | var46.i;
+ /* 11: select0lw */
+ {
+ orc_union32 _src;
+ _src.i = var48.i;
+ var40.i = _src.x2[0];
+ }
+ /* 12: storew */
+ ptr0[i] = var40;
+ }
+
+}
+
+#else
+static void
+_backup_video_orc_pack_RGB16 (OrcExecutor * ORC_RESTRICT ex)
+{
+ int i;
+ int n = ex->n;
+ orc_union16 *ORC_RESTRICT ptr0;
+ const orc_union32 *ORC_RESTRICT ptr4;
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union32 var37;
+#else
+ orc_union32 var37;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union32 var38;
+#else
+ orc_union32 var38;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union32 var39;
+#else
+ orc_union32 var39;
+#endif
+ orc_union16 var40;
+ orc_union32 var41;
+ orc_union32 var42;
+ orc_union32 var43;
+ orc_union32 var44;
+ orc_union32 var45;
+ orc_union32 var46;
+ orc_union32 var47;
+ orc_union32 var48;
+
+ ptr0 = (orc_union16 *) ex->arrays[0];
+ ptr4 = (orc_union32 *) ex->arrays[4];
+
+ /* 1: loadpl */
+ var37.i = (int) 0x0000f800; /* 63488 or 3.13672e-319f */
+ /* 3: loadpl */
+ var38.i = (int) 0x00fc0000; /* 16515072 or 8.15953e-317f */
+ /* 5: loadpl */
+ var39.i = (int) 0xf8000000; /* -134217728 or 2.05568e-314f */
+
+ for (i = 0; i < n; i++) {
+ /* 0: loadl */
+ var41 = ptr4[i];
+ /* 2: andl */
+ var42.i = var41.i & var37.i;
+ /* 4: andl */
+ var43.i = var41.i & var38.i;
+ /* 6: andl */
+ var44.i = var41.i & var39.i;
+ /* 7: shrul */
+ var45.i = ((orc_uint32) var43.i) >> 13;
+ /* 8: shrul */
+ var46.i = ((orc_uint32) var44.i) >> 27;
+ /* 9: orl */
+ var47.i = var42.i | var45.i;
+ /* 10: orl */
+ var48.i = var47.i | var46.i;
+ /* 11: select0lw */
+ {
+ orc_union32 _src;
+ _src.i = var48.i;
+ var40.i = _src.x2[0];
+ }
+ /* 12: storew */
+ ptr0[i] = var40;
+ }
+
+}
+
+void
+video_orc_pack_RGB16 (guint16 * ORC_RESTRICT d1,
+ const guint32 * 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, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
+ 107, 95, 82, 71, 66, 49, 54, 11, 2, 2, 12, 4, 4, 14, 4, 0,
+ 248, 0, 0, 14, 4, 0, 0, 252, 0, 14, 4, 0, 0, 0, 248, 14,
+ 4, 13, 0, 0, 0, 14, 4, 27, 0, 0, 0, 20, 4, 20, 4, 20,
+ 4, 20, 4, 20, 4, 113, 32, 4, 106, 33, 32, 16, 106, 34, 32, 17,
+ 106, 35, 32, 18, 126, 34, 34, 19, 126, 35, 35, 20, 123, 36, 33, 34,
+ 123, 36, 36, 35, 190, 0, 36, 2, 0,
+ };
+ p = orc_program_new_from_static_bytecode (bc);
+ orc_program_set_backup_function (p, _backup_video_orc_pack_RGB16);
+#else
+ p = orc_program_new ();
+ orc_program_set_name (p, "video_orc_pack_RGB16");
+ orc_program_set_backup_function (p, _backup_video_orc_pack_RGB16);
+ orc_program_add_destination (p, 2, "d1");
+ orc_program_add_source (p, 4, "s1");
+ orc_program_add_constant (p, 4, 0x0000f800, "c1");
+ orc_program_add_constant (p, 4, 0x00fc0000, "c2");
+ orc_program_add_constant (p, 4, 0xf8000000, "c3");
+ orc_program_add_constant (p, 4, 0x0000000d, "c4");
+ orc_program_add_constant (p, 4, 0x0000001b, "c5");
+ orc_program_add_temporary (p, 4, "t1");
+ orc_program_add_temporary (p, 4, "t2");
+ orc_program_add_temporary (p, 4, "t3");
+ orc_program_add_temporary (p, 4, "t4");
+ orc_program_add_temporary (p, 4, "t5");
+
+ orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "andl", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "shrul", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C4,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "shrul", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C5,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_T3,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "select0lw", 0, ORC_VAR_D1, ORC_VAR_T5,
+ ORC_VAR_D1, 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
+
+
+/* video_orc_unpack_BGR16 */
+#ifdef DISABLE_ORC
+void
+video_orc_unpack_BGR16 (guint32 * ORC_RESTRICT d1,
+ const guint16 * ORC_RESTRICT s1, int n)
+{
+ int i;
+ orc_union32 *ORC_RESTRICT ptr0;
+ const orc_union16 *ORC_RESTRICT ptr4;
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var39;
+#else
+ orc_union16 var39;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var40;
+#else
+ orc_union16 var40;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var41;
+#else
+ orc_union16 var41;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var42;
+#else
+ orc_union16 var42;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var43;
+#else
+ orc_union16 var43;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var44;
+#else
+ orc_union16 var44;
+#endif
+ orc_union32 var45;
+ orc_union16 var46;
+ orc_union16 var47;
+ orc_union16 var48;
+ orc_union16 var49;
+ orc_union16 var50;
+ orc_union16 var51;
+ orc_union16 var52;
+ orc_union16 var53;
+ orc_union16 var54;
+ orc_union32 var55;
+ orc_union32 var56;
+ orc_union64 var57;
+
+ ptr0 = (orc_union32 *) d1;
+ ptr4 = (orc_union16 *) s1;
+
+ /* 1: loadpw */
+ var39.i = (int) 0x0000f800; /* 63488 or 3.13672e-319f */
+ /* 3: loadpw */
+ var40.i = (int) 0x000007e0; /* 2016 or 9.96036e-321f */
+ /* 5: loadpw */
+ var41.i = (int) 0x0000001f; /* 31 or 1.5316e-322f */
+ /* 9: loadpw */
+ var42.i = (int) 0x00004200; /* 16896 or 8.34773e-320f */
+ /* 11: loadpw */
+ var43.i = (int) 0x00002080; /* 8320 or 4.11063e-320f */
+ /* 14: loadpw */
+ var44.i = (int) 0x000000ff; /* 255 or 1.25987e-321f */
+
+ for (i = 0; i < n; i++) {
+ /* 0: loadw */
+ var46 = ptr4[i];
+ /* 2: andw */
+ var47.i = var46.i & var39.i;
+ /* 4: andw */
+ var48.i = var46.i & var40.i;
+ /* 6: andw */
+ var49.i = var46.i & var41.i;
+ /* 7: shruw */
+ var50.i = ((orc_uint16) var47.i) >> 6;
+ /* 8: shlw */
+ var51.i = ((orc_uint16) var49.i) << 5;
+ /* 10: mulhsw */
+ var52.i = (var50.i * var42.i) >> 16;
+ /* 12: mulhsw */
+ var53.i = (var48.i * var43.i) >> 16;
+ /* 13: mulhsw */
+ var54.i = (var51.i * var42.i) >> 16;
+ /* 15: mergewl */
+ {
+ orc_union32 _dest;
+ _dest.x2[0] = var44.i;
+ _dest.x2[1] = var54.i;
+ var55.i = _dest.i;
+ }
+ /* 16: mergewl */
+ {
+ orc_union32 _dest;
+ _dest.x2[0] = var53.i;
+ _dest.x2[1] = var52.i;
+ var56.i = _dest.i;
+ }
+ /* 17: mergelq */
+ {
+ orc_union64 _dest;
+ _dest.x2[0] = var55.i;
+ _dest.x2[1] = var56.i;
+ var57.i = _dest.i;
+ }
+ /* 18: convsuswb */
+ var45.x4[0] = ORC_CLAMP_UB (var57.x4[0]);
+ var45.x4[1] = ORC_CLAMP_UB (var57.x4[1]);
+ var45.x4[2] = ORC_CLAMP_UB (var57.x4[2]);
+ var45.x4[3] = ORC_CLAMP_UB (var57.x4[3]);
+ /* 19: storel */
+ ptr0[i] = var45;
+ }
+
+}
+
+#else
+static void
+_backup_video_orc_unpack_BGR16 (OrcExecutor * ORC_RESTRICT ex)
+{
+ int i;
+ int n = ex->n;
+ orc_union32 *ORC_RESTRICT ptr0;
+ const orc_union16 *ORC_RESTRICT ptr4;
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var39;
+#else
+ orc_union16 var39;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var40;
+#else
+ orc_union16 var40;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var41;
+#else
+ orc_union16 var41;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var42;
+#else
+ orc_union16 var42;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var43;
+#else
+ orc_union16 var43;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var44;
+#else
+ orc_union16 var44;
+#endif
+ orc_union32 var45;
+ orc_union16 var46;
+ orc_union16 var47;
+ orc_union16 var48;
+ orc_union16 var49;
+ orc_union16 var50;
+ orc_union16 var51;
+ orc_union16 var52;
+ orc_union16 var53;
+ orc_union16 var54;
+ orc_union32 var55;
+ orc_union32 var56;
+ orc_union64 var57;
+
+ ptr0 = (orc_union32 *) ex->arrays[0];
+ ptr4 = (orc_union16 *) ex->arrays[4];
+
+ /* 1: loadpw */
+ var39.i = (int) 0x0000f800; /* 63488 or 3.13672e-319f */
+ /* 3: loadpw */
+ var40.i = (int) 0x000007e0; /* 2016 or 9.96036e-321f */
+ /* 5: loadpw */
+ var41.i = (int) 0x0000001f; /* 31 or 1.5316e-322f */
+ /* 9: loadpw */
+ var42.i = (int) 0x00004200; /* 16896 or 8.34773e-320f */
+ /* 11: loadpw */
+ var43.i = (int) 0x00002080; /* 8320 or 4.11063e-320f */
+ /* 14: loadpw */
+ var44.i = (int) 0x000000ff; /* 255 or 1.25987e-321f */
+
+ for (i = 0; i < n; i++) {
+ /* 0: loadw */
+ var46 = ptr4[i];
+ /* 2: andw */
+ var47.i = var46.i & var39.i;
+ /* 4: andw */
+ var48.i = var46.i & var40.i;
+ /* 6: andw */
+ var49.i = var46.i & var41.i;
+ /* 7: shruw */
+ var50.i = ((orc_uint16) var47.i) >> 6;
+ /* 8: shlw */
+ var51.i = ((orc_uint16) var49.i) << 5;
+ /* 10: mulhsw */
+ var52.i = (var50.i * var42.i) >> 16;
+ /* 12: mulhsw */
+ var53.i = (var48.i * var43.i) >> 16;
+ /* 13: mulhsw */
+ var54.i = (var51.i * var42.i) >> 16;
+ /* 15: mergewl */
+ {
+ orc_union32 _dest;
+ _dest.x2[0] = var44.i;
+ _dest.x2[1] = var54.i;
+ var55.i = _dest.i;
+ }
+ /* 16: mergewl */
+ {
+ orc_union32 _dest;
+ _dest.x2[0] = var53.i;
+ _dest.x2[1] = var52.i;
+ var56.i = _dest.i;
+ }
+ /* 17: mergelq */
+ {
+ orc_union64 _dest;
+ _dest.x2[0] = var55.i;
+ _dest.x2[1] = var56.i;
+ var57.i = _dest.i;
+ }
+ /* 18: convsuswb */
+ var45.x4[0] = ORC_CLAMP_UB (var57.x4[0]);
+ var45.x4[1] = ORC_CLAMP_UB (var57.x4[1]);
+ var45.x4[2] = ORC_CLAMP_UB (var57.x4[2]);
+ var45.x4[3] = ORC_CLAMP_UB (var57.x4[3]);
+ /* 19: storel */
+ ptr0[i] = var45;
+ }
+
+}
+
+void
+video_orc_unpack_BGR16 (guint32 * ORC_RESTRICT d1,
+ const guint16 * 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, 22, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
+ 97, 99, 107, 95, 66, 71, 82, 49, 54, 11, 4, 4, 12, 2, 2, 14,
+ 2, 0, 248, 0, 0, 14, 2, 224, 7, 0, 0, 14, 2, 31, 0, 0,
+ 0, 14, 2, 6, 0, 0, 0, 14, 2, 5, 0, 0, 0, 14, 2, 0,
+ 66, 0, 0, 14, 2, 128, 32, 0, 0, 14, 2, 255, 0, 0, 0, 20,
+ 2, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, 20, 8, 82, 32, 4,
+ 73, 35, 32, 16, 73, 34, 32, 17, 73, 33, 32, 18, 95, 35, 35, 19,
+ 93, 33, 33, 20, 90, 35, 35, 21, 90, 34, 34, 22, 90, 33, 33, 21,
+ 195, 36, 23, 33, 195, 37, 34, 35, 194, 38, 36, 37, 21, 2, 160, 0,
+ 38, 2, 0,
+ };
+ p = orc_program_new_from_static_bytecode (bc);
+ orc_program_set_backup_function (p, _backup_video_orc_unpack_BGR16);
+#else
+ p = orc_program_new ();
+ orc_program_set_name (p, "video_orc_unpack_BGR16");
+ orc_program_set_backup_function (p, _backup_video_orc_unpack_BGR16);
+ orc_program_add_destination (p, 4, "d1");
+ orc_program_add_source (p, 2, "s1");
+ orc_program_add_constant (p, 2, 0x0000f800, "c1");
+ orc_program_add_constant (p, 2, 0x000007e0, "c2");
+ orc_program_add_constant (p, 2, 0x0000001f, "c3");
+ orc_program_add_constant (p, 2, 0x00000006, "c4");
+ orc_program_add_constant (p, 2, 0x00000005, "c5");
+ orc_program_add_constant (p, 2, 0x00004200, "c6");
+ orc_program_add_constant (p, 2, 0x00002080, "c7");
+ orc_program_add_constant (p, 2, 0x000000ff, "c8");
+ orc_program_add_temporary (p, 2, "t1");
+ orc_program_add_temporary (p, 2, "t2");
+ orc_program_add_temporary (p, 2, "t3");
+ orc_program_add_temporary (p, 2, "t4");
+ orc_program_add_temporary (p, 4, "t5");
+ orc_program_add_temporary (p, 4, "t6");
+ orc_program_add_temporary (p, 8, "t7");
+
+ orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C1,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C3,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "shruw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C4,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "shlw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C5,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C6,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C7,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C6,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C8, ORC_VAR_T2,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_T4,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T7, ORC_VAR_T5, ORC_VAR_T6,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "convsuswb", 2, ORC_VAR_D1, ORC_VAR_T7,
+ ORC_VAR_D1, 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
+
+
+/* video_orc_unpack_BGR16_trunc */
+#ifdef DISABLE_ORC
+void
+video_orc_unpack_BGR16_trunc (guint32 * ORC_RESTRICT d1,
+ const guint16 * ORC_RESTRICT s1, int n)
+{
+ int i;
+ orc_union32 *ORC_RESTRICT ptr0;
+ const orc_union16 *ORC_RESTRICT ptr4;
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var39;
+#else
+ orc_union16 var39;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var40;
+#else
+ orc_union16 var40;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var41;
+#else
+ orc_union16 var41;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var42;
+#else
+ orc_union16 var42;
+#endif
+ orc_union32 var43;
+ orc_union16 var44;
+ orc_union16 var45;
+ orc_union16 var46;
+ orc_union16 var47;
+ orc_union16 var48;
+ orc_union16 var49;
+ orc_union16 var50;
+ orc_union32 var51;
+ orc_union32 var52;
+ orc_union64 var53;
+
+ ptr0 = (orc_union32 *) d1;
+ ptr4 = (orc_union16 *) s1;
+
+ /* 1: loadpw */
+ var39.i = (int) 0x0000f800; /* 63488 or 3.13672e-319f */
+ /* 3: loadpw */
+ var40.i = (int) 0x000007e0; /* 2016 or 9.96036e-321f */
+ /* 5: loadpw */
+ var41.i = (int) 0x0000001f; /* 31 or 1.5316e-322f */
+ /* 10: loadpw */
+ var42.i = (int) 0x000000ff; /* 255 or 1.25987e-321f */
+
+ for (i = 0; i < n; i++) {
+ /* 0: loadw */
+ var44 = ptr4[i];
+ /* 2: andw */
+ var45.i = var44.i & var39.i;
+ /* 4: andw */
+ var46.i = var44.i & var40.i;
+ /* 6: andw */
+ var47.i = var44.i & var41.i;
+ /* 7: shruw */
+ var48.i = ((orc_uint16) var45.i) >> 8;
+ /* 8: shruw */
+ var49.i = ((orc_uint16) var46.i) >> 3;
+ /* 9: shlw */
+ var50.i = ((orc_uint16) var47.i) << 3;
+ /* 11: mergewl */
+ {
+ orc_union32 _dest;
+ _dest.x2[0] = var42.i;
+ _dest.x2[1] = var50.i;
+ var51.i = _dest.i;
+ }
+ /* 12: mergewl */
+ {
+ orc_union32 _dest;
+ _dest.x2[0] = var49.i;
+ _dest.x2[1] = var48.i;
+ var52.i = _dest.i;
+ }
+ /* 13: mergelq */
+ {
+ orc_union64 _dest;
+ _dest.x2[0] = var51.i;
+ _dest.x2[1] = var52.i;
+ var53.i = _dest.i;
+ }
+ /* 14: convsuswb */
+ var43.x4[0] = ORC_CLAMP_UB (var53.x4[0]);
+ var43.x4[1] = ORC_CLAMP_UB (var53.x4[1]);
+ var43.x4[2] = ORC_CLAMP_UB (var53.x4[2]);
+ var43.x4[3] = ORC_CLAMP_UB (var53.x4[3]);
+ /* 15: storel */
+ ptr0[i] = var43;
+ }
+
+}
+
+#else
+static void
+_backup_video_orc_unpack_BGR16_trunc (OrcExecutor * ORC_RESTRICT ex)
+{
+ int i;
+ int n = ex->n;
+ orc_union32 *ORC_RESTRICT ptr0;
+ const orc_union16 *ORC_RESTRICT ptr4;
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var39;
+#else
+ orc_union16 var39;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var40;
+#else
+ orc_union16 var40;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var41;
+#else
+ orc_union16 var41;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union16 var42;
+#else
+ orc_union16 var42;
+#endif
+ orc_union32 var43;
+ orc_union16 var44;
+ orc_union16 var45;
+ orc_union16 var46;
+ orc_union16 var47;
+ orc_union16 var48;
+ orc_union16 var49;
+ orc_union16 var50;
+ orc_union32 var51;
+ orc_union32 var52;
+ orc_union64 var53;
+
+ ptr0 = (orc_union32 *) ex->arrays[0];
+ ptr4 = (orc_union16 *) ex->arrays[4];
+
+ /* 1: loadpw */
+ var39.i = (int) 0x0000f800; /* 63488 or 3.13672e-319f */
+ /* 3: loadpw */
+ var40.i = (int) 0x000007e0; /* 2016 or 9.96036e-321f */
+ /* 5: loadpw */
+ var41.i = (int) 0x0000001f; /* 31 or 1.5316e-322f */
+ /* 10: loadpw */
+ var42.i = (int) 0x000000ff; /* 255 or 1.25987e-321f */
+
+ for (i = 0; i < n; i++) {
+ /* 0: loadw */
+ var44 = ptr4[i];
+ /* 2: andw */
+ var45.i = var44.i & var39.i;
+ /* 4: andw */
+ var46.i = var44.i & var40.i;
+ /* 6: andw */
+ var47.i = var44.i & var41.i;
+ /* 7: shruw */
+ var48.i = ((orc_uint16) var45.i) >> 8;
+ /* 8: shruw */
+ var49.i = ((orc_uint16) var46.i) >> 3;
+ /* 9: shlw */
+ var50.i = ((orc_uint16) var47.i) << 3;
+ /* 11: mergewl */
+ {
+ orc_union32 _dest;
+ _dest.x2[0] = var42.i;
+ _dest.x2[1] = var50.i;
+ var51.i = _dest.i;
+ }
+ /* 12: mergewl */
+ {
+ orc_union32 _dest;
+ _dest.x2[0] = var49.i;
+ _dest.x2[1] = var48.i;
+ var52.i = _dest.i;
+ }
+ /* 13: mergelq */
+ {
+ orc_union64 _dest;
+ _dest.x2[0] = var51.i;
+ _dest.x2[1] = var52.i;
+ var53.i = _dest.i;
+ }
+ /* 14: convsuswb */
+ var43.x4[0] = ORC_CLAMP_UB (var53.x4[0]);
+ var43.x4[1] = ORC_CLAMP_UB (var53.x4[1]);
+ var43.x4[2] = ORC_CLAMP_UB (var53.x4[2]);
+ var43.x4[3] = ORC_CLAMP_UB (var53.x4[3]);
+ /* 15: storel */
+ ptr0[i] = var43;
+ }
+
+}
+
+void
+video_orc_unpack_BGR16_trunc (guint32 * ORC_RESTRICT d1,
+ const guint16 * 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, 28, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
+ 97, 99, 107, 95, 66, 71, 82, 49, 54, 95, 116, 114, 117, 110, 99, 11,
+ 4, 4, 12, 2, 2, 14, 2, 0, 248, 0, 0, 14, 2, 224, 7, 0,
+ 0, 14, 2, 31, 0, 0, 0, 14, 2, 8, 0, 0, 0, 14, 2, 3,
+ 0, 0, 0, 14, 2, 255, 0, 0, 0, 20, 2, 20, 2, 20, 2, 20,
+ 2, 20, 4, 20, 4, 20, 8, 82, 32, 4, 73, 35, 32, 16, 73, 34,
+ 32, 17, 73, 33, 32, 18, 95, 35, 35, 19, 95, 34, 34, 20, 93, 33,
+ 33, 20, 195, 36, 21, 33, 195, 37, 34, 35, 194, 38, 36, 37, 21, 2,
+ 160, 0, 38, 2, 0,
+ };
+ p = orc_program_new_from_static_bytecode (bc);
+ orc_program_set_backup_function (p, _backup_video_orc_unpack_BGR16_trunc);
+#else
+ p = orc_program_new ();
+ orc_program_set_name (p, "video_orc_unpack_BGR16_trunc");
+ orc_program_set_backup_function (p, _backup_video_orc_unpack_BGR16_trunc);
+ orc_program_add_destination (p, 4, "d1");
+ orc_program_add_source (p, 2, "s1");
+ orc_program_add_constant (p, 2, 0x0000f800, "c1");
+ orc_program_add_constant (p, 2, 0x000007e0, "c2");
+ orc_program_add_constant (p, 2, 0x0000001f, "c3");
+ orc_program_add_constant (p, 2, 0x00000008, "c4");
+ orc_program_add_constant (p, 2, 0x00000003, "c5");
+ orc_program_add_constant (p, 2, 0x000000ff, "c6");
+ orc_program_add_temporary (p, 2, "t1");
+ orc_program_add_temporary (p, 2, "t2");
+ orc_program_add_temporary (p, 2, "t3");
+ orc_program_add_temporary (p, 2, "t4");
+ orc_program_add_temporary (p, 4, "t5");
+ orc_program_add_temporary (p, 4, "t6");
+ orc_program_add_temporary (p, 8, "t7");
+
+ orc_program_append_2 (p, "loadw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "andw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C1,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "andw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "andw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C3,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "shruw", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C4,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "shruw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "shlw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C5,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T5, ORC_VAR_C6, ORC_VAR_T2,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_T4,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T7, ORC_VAR_T5, ORC_VAR_T6,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "convsuswb", 2, ORC_VAR_D1, ORC_VAR_T7,
+ ORC_VAR_D1, 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
+
+
+/* video_orc_pack_BGR16 */
+#ifdef DISABLE_ORC
+void
+video_orc_pack_BGR16 (guint16 * ORC_RESTRICT d1,
+ const guint32 * ORC_RESTRICT s1, int n)
+{
+ int i;
+ orc_union16 *ORC_RESTRICT ptr0;
+ const orc_union32 *ORC_RESTRICT ptr4;
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union32 var37;
+#else
+ orc_union32 var37;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union32 var38;
+#else
+ orc_union32 var38;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union32 var39;
+#else
+ orc_union32 var39;
+#endif
+ orc_union16 var40;
+ orc_union32 var41;
+ orc_union32 var42;
+ orc_union32 var43;
+ orc_union32 var44;
+ orc_union32 var45;
+ orc_union32 var46;
+ orc_union32 var47;
+ orc_union32 var48;
+ orc_union32 var49;
+
+ ptr0 = (orc_union16 *) d1;
+ ptr4 = (orc_union32 *) s1;
+
+ /* 1: loadpl */
+ var37.i = (int) 0x0000f800; /* 63488 or 3.13672e-319f */
+ /* 3: loadpl */
+ var38.i = (int) 0x00fc0000; /* 16515072 or 8.15953e-317f */
+ /* 5: loadpl */
+ var39.i = (int) 0xf8000000; /* -134217728 or 2.05568e-314f */
+
+ for (i = 0; i < n; i++) {
+ /* 0: loadl */
+ var41 = ptr4[i];
+ /* 2: andl */
+ var42.i = var41.i & var37.i;
+ /* 4: andl */
+ var43.i = var41.i & var38.i;
+ /* 6: andl */
+ var44.i = var41.i & var39.i;
+ /* 7: shrul */
+ var45.i = ((orc_uint32) var42.i) >> 11;
+ /* 8: shrul */
+ var46.i = ((orc_uint32) var43.i) >> 13;
+ /* 9: shrul */
+ var47.i = ((orc_uint32) var44.i) >> 16;
+ /* 10: orl */
+ var48.i = var45.i | var46.i;
+ /* 11: orl */
+ var49.i = var48.i | var47.i;
+ /* 12: select0lw */
+ {
+ orc_union32 _src;
+ _src.i = var49.i;
+ var40.i = _src.x2[0];
+ }
+ /* 13: storew */
+ ptr0[i] = var40;
+ }
+
+}
+
+#else
+static void
+_backup_video_orc_pack_BGR16 (OrcExecutor * ORC_RESTRICT ex)
+{
+ int i;
+ int n = ex->n;
+ orc_union16 *ORC_RESTRICT ptr0;
+ const orc_union32 *ORC_RESTRICT ptr4;
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union32 var37;
+#else
+ orc_union32 var37;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union32 var38;
+#else
+ orc_union32 var38;
+#endif
+#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
+ volatile orc_union32 var39;
+#else
+ orc_union32 var39;
+#endif
+ orc_union16 var40;
+ orc_union32 var41;
+ orc_union32 var42;
+ orc_union32 var43;
+ orc_union32 var44;
+ orc_union32 var45;
+ orc_union32 var46;
+ orc_union32 var47;
+ orc_union32 var48;
+ orc_union32 var49;
+
+ ptr0 = (orc_union16 *) ex->arrays[0];
+ ptr4 = (orc_union32 *) ex->arrays[4];
+
+ /* 1: loadpl */
+ var37.i = (int) 0x0000f800; /* 63488 or 3.13672e-319f */
+ /* 3: loadpl */
+ var38.i = (int) 0x00fc0000; /* 16515072 or 8.15953e-317f */
+ /* 5: loadpl */
+ var39.i = (int) 0xf8000000; /* -134217728 or 2.05568e-314f */
+
+ for (i = 0; i < n; i++) {
+ /* 0: loadl */
+ var41 = ptr4[i];
+ /* 2: andl */
+ var42.i = var41.i & var37.i;
+ /* 4: andl */
+ var43.i = var41.i & var38.i;
+ /* 6: andl */
+ var44.i = var41.i & var39.i;
+ /* 7: shrul */
+ var45.i = ((orc_uint32) var42.i) >> 11;
+ /* 8: shrul */
+ var46.i = ((orc_uint32) var43.i) >> 13;
+ /* 9: shrul */
+ var47.i = ((orc_uint32) var44.i) >> 16;
+ /* 10: orl */
+ var48.i = var45.i | var46.i;
+ /* 11: orl */
+ var49.i = var48.i | var47.i;
+ /* 12: select0lw */
+ {
+ orc_union32 _src;
+ _src.i = var49.i;
+ var40.i = _src.x2[0];
+ }
+ /* 13: storew */
+ ptr0[i] = var40;
+ }
+
+}
+
+void
+video_orc_pack_BGR16 (guint16 * ORC_RESTRICT d1,
+ const guint32 * 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, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
+ 107, 95, 66, 71, 82, 49, 54, 11, 2, 2, 12, 4, 4, 14, 4, 0,
+ 248, 0, 0, 14, 4, 0, 0, 252, 0, 14, 4, 0, 0, 0, 248, 14,
+ 4, 11, 0, 0, 0, 14, 4, 13, 0, 0, 0, 14, 4, 16, 0, 0,
+ 0, 20, 4, 20, 4, 20, 4, 20, 4, 20, 4, 113, 32, 4, 106, 33,
+ 32, 16, 106, 34, 32, 17, 106, 35, 32, 18, 126, 33, 33, 19, 126, 34,
+ 34, 20, 126, 35, 35, 21, 123, 36, 33, 34, 123, 36, 36, 35, 190, 0,
+ 36, 2, 0,
+ };
+ p = orc_program_new_from_static_bytecode (bc);
+ orc_program_set_backup_function (p, _backup_video_orc_pack_BGR16);
+#else
+ p = orc_program_new ();
+ orc_program_set_name (p, "video_orc_pack_BGR16");
+ orc_program_set_backup_function (p, _backup_video_orc_pack_BGR16);
+ orc_program_add_destination (p, 2, "d1");
+ orc_program_add_source (p, 4, "s1");
+ orc_program_add_constant (p, 4, 0x0000f800, "c1");
+ orc_program_add_constant (p, 4, 0x00fc0000, "c2");
+ orc_program_add_constant (p, 4, 0xf8000000, "c3");
+ orc_program_add_constant (p, 4, 0x0000000b, "c4");
+ orc_program_add_constant (p, 4, 0x0000000d, "c5");
+ orc_program_add_constant (p, 4, 0x00000010, "c6");
+ orc_program_add_temporary (p, 4, "t1");
+ orc_program_add_temporary (p, 4, "t2");
+ orc_program_add_temporary (p, 4, "t3");
+ orc_program_add_temporary (p, 4, "t4");
+ orc_program_add_temporary (p, 4, "t5");
+
+ orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "andl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C1,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "andl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_C2,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "andl", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_C3,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "shrul", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C5,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "shrul", 0, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_C6,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_T3,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "orl", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T4,
+ ORC_VAR_D1);
+ orc_program_append_2 (p, "select0lw", 0, ORC_VAR_D1, ORC_VAR_T5,
+ ORC_VAR_D1, 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
+
+
/* video_orc_resample_bilinear_u32 */
#ifdef DISABLE_ORC
void
diff --git a/gst-libs/gst/video/video-orc-dist.h b/gst-libs/gst/video/video-orc-dist.h
index 849743665..915b5dbbe 100644
--- a/gst-libs/gst/video/video-orc-dist.h
+++ b/gst-libs/gst/video/video-orc-dist.h
@@ -113,6 +113,18 @@ void video_orc_pack_NV24 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, co
void video_orc_unpack_A420 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n);
void video_orc_pack_A420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1, int n);
void video_orc_pack_AY (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, int n);
+void video_orc_unpack_RGB15 (guint32 * ORC_RESTRICT d1, const guint16 * ORC_RESTRICT s1, int n);
+void video_orc_unpack_RGB15_trunc (guint32 * ORC_RESTRICT d1, const guint16 * ORC_RESTRICT s1, int n);
+void video_orc_pack_RGB15 (guint16 * ORC_RESTRICT d1, const guint32 * ORC_RESTRICT s1, int n);
+void video_orc_unpack_BGR15 (guint32 * ORC_RESTRICT d1, const guint16 * ORC_RESTRICT s1, int n);
+void video_orc_unpack_BGR15_trunc (guint32 * ORC_RESTRICT d1, const guint16 * ORC_RESTRICT s1, int n);
+void video_orc_pack_BGR15 (guint16 * ORC_RESTRICT d1, const guint32 * ORC_RESTRICT s1, int n);
+void video_orc_unpack_RGB16 (guint32 * ORC_RESTRICT d1, const guint16 * ORC_RESTRICT s1, int n);
+void video_orc_unpack_RGB16_trunc (guint32 * ORC_RESTRICT d1, const guint16 * ORC_RESTRICT s1, int n);
+void video_orc_pack_RGB16 (guint16 * ORC_RESTRICT d1, const guint32 * ORC_RESTRICT s1, int n);
+void video_orc_unpack_BGR16 (guint32 * ORC_RESTRICT d1, const guint16 * ORC_RESTRICT s1, int n);
+void video_orc_unpack_BGR16_trunc (guint32 * ORC_RESTRICT d1, const guint16 * ORC_RESTRICT s1, int n);
+void video_orc_pack_BGR16 (guint16 * ORC_RESTRICT d1, const guint32 * ORC_RESTRICT s1, int n);
void video_orc_resample_bilinear_u32 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1, int p1, int p2, int n);
void video_orc_merge_linear_u8 (orc_uint8 * ORC_RESTRICT d1, const orc_uint8 * ORC_RESTRICT s1, const orc_uint8 * ORC_RESTRICT s2, int p1, int n);
void video_orc_memset_2d (guint8 * ORC_RESTRICT d1, int d1_stride, int p1, int n, int m);