mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-19 08:11:16 +00:00
72bb2d8637
Add fastpaths for all planar conversion and scaling. Improve gray and alpha handling. Add option to specify the chroma resampler method and set to linear as default.
25468 lines
683 KiB
C
25468 lines
683 KiB
C
|
|
/* autogenerated from video-orc.orc */
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
#include "config.h"
|
|
#endif
|
|
#include <glib.h>
|
|
|
|
#ifndef _ORC_INTEGER_TYPEDEFS_
|
|
#define _ORC_INTEGER_TYPEDEFS_
|
|
#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
|
|
#include <stdint.h>
|
|
typedef int8_t orc_int8;
|
|
typedef int16_t orc_int16;
|
|
typedef int32_t orc_int32;
|
|
typedef int64_t orc_int64;
|
|
typedef uint8_t orc_uint8;
|
|
typedef uint16_t orc_uint16;
|
|
typedef uint32_t orc_uint32;
|
|
typedef uint64_t orc_uint64;
|
|
#define ORC_UINT64_C(x) UINT64_C(x)
|
|
#elif defined(_MSC_VER)
|
|
typedef signed __int8 orc_int8;
|
|
typedef signed __int16 orc_int16;
|
|
typedef signed __int32 orc_int32;
|
|
typedef signed __int64 orc_int64;
|
|
typedef unsigned __int8 orc_uint8;
|
|
typedef unsigned __int16 orc_uint16;
|
|
typedef unsigned __int32 orc_uint32;
|
|
typedef unsigned __int64 orc_uint64;
|
|
#define ORC_UINT64_C(x) (x##Ui64)
|
|
#define inline __inline
|
|
#else
|
|
#include <limits.h>
|
|
typedef signed char orc_int8;
|
|
typedef short orc_int16;
|
|
typedef int orc_int32;
|
|
typedef unsigned char orc_uint8;
|
|
typedef unsigned short orc_uint16;
|
|
typedef unsigned int orc_uint32;
|
|
#if INT_MAX == LONG_MAX
|
|
typedef long long orc_int64;
|
|
typedef unsigned long long orc_uint64;
|
|
#define ORC_UINT64_C(x) (x##ULL)
|
|
#else
|
|
typedef long orc_int64;
|
|
typedef unsigned long orc_uint64;
|
|
#define ORC_UINT64_C(x) (x##UL)
|
|
#endif
|
|
#endif
|
|
typedef union
|
|
{
|
|
orc_int16 i;
|
|
orc_int8 x2[2];
|
|
} orc_union16;
|
|
typedef union
|
|
{
|
|
orc_int32 i;
|
|
float f;
|
|
orc_int16 x2[2];
|
|
orc_int8 x4[4];
|
|
} orc_union32;
|
|
typedef union
|
|
{
|
|
orc_int64 i;
|
|
double f;
|
|
orc_int32 x2[2];
|
|
float x2f[2];
|
|
orc_int16 x4[4];
|
|
} orc_union64;
|
|
#endif
|
|
#ifndef ORC_RESTRICT
|
|
#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
|
|
#define ORC_RESTRICT restrict
|
|
#elif defined(__GNUC__) && __GNUC__ >= 4
|
|
#define ORC_RESTRICT __restrict__
|
|
#else
|
|
#define ORC_RESTRICT
|
|
#endif
|
|
#endif
|
|
|
|
#ifndef ORC_INTERNAL
|
|
#if defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)
|
|
#define ORC_INTERNAL __attribute__((visibility("hidden")))
|
|
#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)
|
|
#define ORC_INTERNAL __hidden
|
|
#elif defined (__GNUC__)
|
|
#define ORC_INTERNAL __attribute__((visibility("hidden")))
|
|
#else
|
|
#define ORC_INTERNAL
|
|
#endif
|
|
#endif
|
|
|
|
|
|
#ifndef DISABLE_ORC
|
|
#include <orc/orc.h>
|
|
#endif
|
|
void video_orc_blend_little (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int n);
|
|
void video_orc_blend_big (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int n);
|
|
void video_orc_unpack_I420 (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
|
|
const guint8 * ORC_RESTRICT s3, int n);
|
|
void video_orc_pack_I420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
|
guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n);
|
|
void video_orc_pack_Y (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
int n);
|
|
void video_orc_unpack_YUY2 (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int n);
|
|
void video_orc_pack_YUY2 (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int n);
|
|
void video_orc_pack_UYVY (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int n);
|
|
void video_orc_unpack_UYVY (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int n);
|
|
void video_orc_unpack_YVYU (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int n);
|
|
void video_orc_pack_YVYU (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int n);
|
|
void video_orc_unpack_YUV9 (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
|
|
const guint8 * ORC_RESTRICT s3, int n);
|
|
void video_orc_unpack_Y42B (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
|
|
const guint8 * ORC_RESTRICT s3, int n);
|
|
void video_orc_pack_Y42B (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
|
guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n);
|
|
void video_orc_unpack_Y444 (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
|
|
const guint8 * ORC_RESTRICT s3, int n);
|
|
void video_orc_pack_Y444 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
|
guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n);
|
|
void video_orc_unpack_GRAY8 (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int n);
|
|
void video_orc_pack_GRAY8 (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int n);
|
|
void video_orc_unpack_BGRA (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int n);
|
|
void video_orc_pack_BGRA (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int n);
|
|
void video_orc_pack_RGBA (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int n);
|
|
void video_orc_unpack_RGBA (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int n);
|
|
void video_orc_unpack_ABGR (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int n);
|
|
void video_orc_pack_ABGR (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int n);
|
|
void video_orc_unpack_NV12 (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n);
|
|
void video_orc_pack_NV12 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
|
const guint8 * ORC_RESTRICT s1, int n);
|
|
void video_orc_unpack_NV21 (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n);
|
|
void video_orc_pack_NV21 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
|
const guint8 * ORC_RESTRICT s1, int n);
|
|
void video_orc_unpack_NV24 (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n);
|
|
void video_orc_pack_NV24 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
|
const guint8 * ORC_RESTRICT s1, int n);
|
|
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_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);
|
|
void video_orc_memcpy_2d (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
|
|
void video_orc_convert_u16_to_u8 (guint8 * ORC_RESTRICT d1,
|
|
const guint16 * ORC_RESTRICT s1, int n);
|
|
void video_orc_convert_u8_to_u16 (guint16 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int n);
|
|
void video_orc_splat_u16 (guint8 * ORC_RESTRICT d1, int p1, int n);
|
|
void video_orc_splat_u32 (guint8 * ORC_RESTRICT d1, int p1, int n);
|
|
void video_orc_splat_u64 (guint8 * ORC_RESTRICT d1, orc_int64 p1, int n);
|
|
void video_orc_splat2_u64 (guint8 * ORC_RESTRICT d1, int p1, int n);
|
|
void video_orc_convert_I420_UYVY (guint8 * ORC_RESTRICT d1,
|
|
guint8 * ORC_RESTRICT d2, 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_convert_I420_YUY2 (guint8 * ORC_RESTRICT d1,
|
|
guint8 * ORC_RESTRICT d2, 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_convert_I420_AYUV (guint8 * ORC_RESTRICT d1,
|
|
guint8 * ORC_RESTRICT d2, 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_convert_YUY2_I420 (guint8 * ORC_RESTRICT d1,
|
|
guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
|
|
guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1,
|
|
const guint8 * ORC_RESTRICT s2, int n);
|
|
void video_orc_convert_UYVY_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
|
|
void video_orc_planar_chroma_420_422 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
guint8 * ORC_RESTRICT d2, int d2_stride, const guint8 * ORC_RESTRICT s1,
|
|
int s1_stride, int n, int m);
|
|
void video_orc_planar_chroma_420_444 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
guint8 * ORC_RESTRICT d2, int d2_stride, const guint8 * ORC_RESTRICT s1,
|
|
int s1_stride, int n, int m);
|
|
void video_orc_planar_chroma_422_444 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
|
|
void video_orc_planar_chroma_444_422 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
|
|
void video_orc_planar_chroma_444_420 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride,
|
|
const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m);
|
|
void video_orc_planar_chroma_422_420 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride,
|
|
const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m);
|
|
void video_orc_convert_YUY2_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
|
|
void video_orc_convert_UYVY_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
|
|
void video_orc_convert_YUY2_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
|
|
int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
|
|
void video_orc_convert_UYVY_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
|
|
int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
|
|
void video_orc_convert_YUY2_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
|
|
int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
|
|
void video_orc_convert_UYVY_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
|
|
int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
|
|
void video_orc_convert_UYVY_I420 (guint8 * ORC_RESTRICT d1,
|
|
guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
|
|
guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1,
|
|
const guint8 * ORC_RESTRICT s2, int n);
|
|
void video_orc_convert_AYUV_I420 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
|
|
int d3_stride, guint8 * ORC_RESTRICT d4, int d4_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride,
|
|
const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m);
|
|
void video_orc_convert_AYUV_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
|
|
void video_orc_convert_AYUV_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
|
|
void video_orc_convert_AYUV_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
|
|
int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
|
|
void video_orc_convert_AYUV_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
|
|
int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
|
|
void video_orc_convert_Y42B_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride,
|
|
const guint8 * ORC_RESTRICT s2, int s2_stride,
|
|
const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m);
|
|
void video_orc_convert_Y42B_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride,
|
|
const guint8 * ORC_RESTRICT s2, int s2_stride,
|
|
const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m);
|
|
void video_orc_convert_Y42B_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride,
|
|
const guint8 * ORC_RESTRICT s2, int s2_stride,
|
|
const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m);
|
|
void video_orc_convert_Y444_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride,
|
|
const guint8 * ORC_RESTRICT s2, int s2_stride,
|
|
const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m);
|
|
void video_orc_convert_Y444_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride,
|
|
const guint8 * ORC_RESTRICT s2, int s2_stride,
|
|
const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m);
|
|
void video_orc_convert_Y444_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride,
|
|
const guint8 * ORC_RESTRICT s2, int s2_stride,
|
|
const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m);
|
|
void video_orc_convert_AYUV_ARGB (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
|
|
int p4, int p5, int n, int m);
|
|
void video_orc_convert_AYUV_BGRA (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
|
|
int p4, int p5, int n, int m);
|
|
void video_orc_convert_AYUV_ABGR (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
|
|
int p4, int p5, int n, int m);
|
|
void video_orc_convert_AYUV_RGBA (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
|
|
int p4, int p5, int n, int m);
|
|
void video_orc_convert_I420_BGRA (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
|
|
const guint8 * ORC_RESTRICT s3, int p1, int p2, int p3, int p4, int p5,
|
|
int n);
|
|
void video_orc_matrix8 (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, orc_int64 p1, orc_int64 p2, orc_int64 p3,
|
|
orc_int64 p4, int n);
|
|
void _custom_video_orc_matrix8 (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, orc_int64 p1, orc_int64 p2, orc_int64 p3,
|
|
orc_int64 p4, int n);
|
|
void video_orc_resample_h_near_u32_lq (guint32 * ORC_RESTRICT d1,
|
|
const guint32 * ORC_RESTRICT s1, int p1, int p2, int n);
|
|
void video_orc_resample_h_2tap_1u8_lq (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int p1, int p2, int n);
|
|
void video_orc_resample_h_2tap_4u8_lq (guint32 * ORC_RESTRICT d1,
|
|
const guint32 * ORC_RESTRICT s1, int p1, int p2, int n);
|
|
void video_orc_resample_h_2tap_u8_lq (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
|
|
const gint16 * ORC_RESTRICT s3, const gint16 * ORC_RESTRICT s4, int n);
|
|
void video_orc_resample_v_2tap_u8_lq (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int p1,
|
|
int n);
|
|
void video_orc_resample_v_2tap_u16 (guint16 * ORC_RESTRICT d1,
|
|
const guint16 * ORC_RESTRICT s1, const guint16 * ORC_RESTRICT s2, int p1,
|
|
int n);
|
|
void video_orc_resample_v_2tap_u8 (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int p1,
|
|
int n);
|
|
void video_orc_resample_v_4tap_u8_lq (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 p1,
|
|
int p2, int p3, int p4, int n);
|
|
void video_orc_resample_v_4tap_u8 (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 p1,
|
|
int p2, int p3, int p4, int n);
|
|
void video_orc_resample_h_multaps_u8 (gint32 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const gint16 * ORC_RESTRICT s2, int n);
|
|
void video_orc_resample_h_muladdtaps_u8 (gint32 * ORC_RESTRICT d1,
|
|
int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride,
|
|
const gint16 * ORC_RESTRICT s2, int s2_stride, int n, int m);
|
|
void video_orc_resample_scaletaps_u8 (guint8 * ORC_RESTRICT d1,
|
|
const gint32 * ORC_RESTRICT s1, int n);
|
|
void video_orc_resample_h_multaps_u8_lq (gint16 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const gint16 * ORC_RESTRICT s2, int n);
|
|
void video_orc_resample_h_muladdtaps_u8_lq (gint16 * ORC_RESTRICT d1,
|
|
int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride,
|
|
const gint16 * ORC_RESTRICT s2, int s2_stride, int n, int m);
|
|
void video_orc_resample_h_multaps3_u8_lq (gint16 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
|
|
const guint8 * ORC_RESTRICT s3, const gint16 * ORC_RESTRICT s4,
|
|
const gint16 * ORC_RESTRICT s5, const gint16 * ORC_RESTRICT s6, int n);
|
|
void video_orc_resample_h_muladdtaps3_u8_lq (gint16 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
|
|
const guint8 * ORC_RESTRICT s3, const gint16 * ORC_RESTRICT s4,
|
|
const gint16 * ORC_RESTRICT s5, const gint16 * ORC_RESTRICT s6, int n);
|
|
void video_orc_resample_h_muladdscaletaps3_u8_lq (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
|
|
const guint8 * ORC_RESTRICT s3, const gint16 * ORC_RESTRICT s4,
|
|
const gint16 * ORC_RESTRICT s5, const gint16 * ORC_RESTRICT s6,
|
|
const gint16 * ORC_RESTRICT s7, int n);
|
|
void video_orc_resample_scaletaps_u8_lq (guint8 * ORC_RESTRICT d1,
|
|
const gint16 * ORC_RESTRICT s1, int n);
|
|
void video_orc_resample_h_multaps_u16 (gint32 * ORC_RESTRICT d1,
|
|
const guint16 * ORC_RESTRICT s1, const gint16 * ORC_RESTRICT s2, int n);
|
|
void video_orc_resample_h_muladdtaps_u16 (gint32 * ORC_RESTRICT d1,
|
|
int d1_stride, const guint16 * ORC_RESTRICT s1, int s1_stride,
|
|
const gint16 * ORC_RESTRICT s2, int s2_stride, int n, int m);
|
|
void video_orc_resample_scaletaps_u16 (guint16 * ORC_RESTRICT d1,
|
|
const gint32 * ORC_RESTRICT s1, int n);
|
|
void video_orc_resample_v_multaps_u8 (gint32 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int p1, int n);
|
|
void video_orc_resample_v_muladdtaps_u8 (gint32 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int p1, int n);
|
|
void video_orc_resample_v_multaps_u16 (gint32 * ORC_RESTRICT d1,
|
|
const guint16 * ORC_RESTRICT s1, int p1, int n);
|
|
void video_orc_resample_v_muladdtaps_u16 (gint32 * ORC_RESTRICT d1,
|
|
const guint16 * ORC_RESTRICT s1, int p1, int n);
|
|
void video_orc_resample_v_multaps_u8_lq (gint16 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int p1, int n);
|
|
void video_orc_resample_v_multaps4_u8_lq (gint16 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
|
|
const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int p1,
|
|
int p2, int p3, int p4, int n);
|
|
void video_orc_resample_v_muladdtaps_u8_lq (gint16 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int p1, int n);
|
|
void video_orc_resample_v_muladdtaps4_u8_lq (gint16 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
|
|
const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int p1,
|
|
int p2, int p3, int p4, int n);
|
|
void video_orc_resample_v_muladdscaletaps4_u8_lq (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
|
|
const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4,
|
|
const gint16 * ORC_RESTRICT s5, int p1, int p2, int p3, int p4, int n);
|
|
void video_orc_chroma_down_h2_u8 (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int n);
|
|
void video_orc_chroma_down_v2_u8 (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n);
|
|
void video_orc_chroma_up_v2_u8 (guint8 * ORC_RESTRICT d1,
|
|
guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1,
|
|
const guint8 * ORC_RESTRICT s2, int n);
|
|
void video_orc_chroma_up_v2_u16 (guint16 * ORC_RESTRICT d1,
|
|
guint16 * ORC_RESTRICT d2, const guint16 * ORC_RESTRICT s1,
|
|
const guint16 * ORC_RESTRICT s2, int n);
|
|
void video_orc_chroma_down_v2_u16 (guint16 * ORC_RESTRICT d1,
|
|
const guint16 * ORC_RESTRICT s1, const guint16 * ORC_RESTRICT s2, int n);
|
|
void video_orc_chroma_down_v4_u8 (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_chroma_down_v4_u16 (guint16 * ORC_RESTRICT d1,
|
|
const guint16 * ORC_RESTRICT s1, const guint16 * ORC_RESTRICT s2,
|
|
const guint16 * ORC_RESTRICT s3, const guint16 * ORC_RESTRICT s4, int n);
|
|
void video_orc_dither_none_4u8_mask (guint8 * ORC_RESTRICT d1, int p1, int n);
|
|
void video_orc_dither_none_4u16_mask (guint16 * ORC_RESTRICT d1, orc_int64 p1,
|
|
int n);
|
|
void video_orc_dither_verterr_4u8_mask (guint8 * ORC_RESTRICT d1,
|
|
guint16 * ORC_RESTRICT d2, orc_int64 p1, int n);
|
|
void video_orc_dither_fs_muladd_u8 (guint16 * ORC_RESTRICT d1, int n);
|
|
void video_orc_dither_ordered_u8 (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int n);
|
|
void video_orc_dither_ordered_4u8_mask (guint8 * ORC_RESTRICT d1,
|
|
const guint16 * ORC_RESTRICT s1, orc_int64 p1, int n);
|
|
void video_orc_dither_ordered_4u16_mask (guint16 * ORC_RESTRICT d1,
|
|
const guint16 * ORC_RESTRICT s1, orc_int64 p1, int n);
|
|
|
|
|
|
/* begin Orc C target preamble */
|
|
#define ORC_CLAMP(x,a,b) ((x)<(a) ? (a) : ((x)>(b) ? (b) : (x)))
|
|
#define ORC_ABS(a) ((a)<0 ? -(a) : (a))
|
|
#define ORC_MIN(a,b) ((a)<(b) ? (a) : (b))
|
|
#define ORC_MAX(a,b) ((a)>(b) ? (a) : (b))
|
|
#define ORC_SB_MAX 127
|
|
#define ORC_SB_MIN (-1-ORC_SB_MAX)
|
|
#define ORC_UB_MAX 255
|
|
#define ORC_UB_MIN 0
|
|
#define ORC_SW_MAX 32767
|
|
#define ORC_SW_MIN (-1-ORC_SW_MAX)
|
|
#define ORC_UW_MAX 65535
|
|
#define ORC_UW_MIN 0
|
|
#define ORC_SL_MAX 2147483647
|
|
#define ORC_SL_MIN (-1-ORC_SL_MAX)
|
|
#define ORC_UL_MAX 4294967295U
|
|
#define ORC_UL_MIN 0
|
|
#define ORC_CLAMP_SB(x) ORC_CLAMP(x,ORC_SB_MIN,ORC_SB_MAX)
|
|
#define ORC_CLAMP_UB(x) ORC_CLAMP(x,ORC_UB_MIN,ORC_UB_MAX)
|
|
#define ORC_CLAMP_SW(x) ORC_CLAMP(x,ORC_SW_MIN,ORC_SW_MAX)
|
|
#define ORC_CLAMP_UW(x) ORC_CLAMP(x,ORC_UW_MIN,ORC_UW_MAX)
|
|
#define ORC_CLAMP_SL(x) ORC_CLAMP(x,ORC_SL_MIN,ORC_SL_MAX)
|
|
#define ORC_CLAMP_UL(x) ORC_CLAMP(x,ORC_UL_MIN,ORC_UL_MAX)
|
|
#define ORC_SWAP_W(x) ((((x)&0xffU)<<8) | (((x)&0xff00U)>>8))
|
|
#define ORC_SWAP_L(x) ((((x)&0xffU)<<24) | (((x)&0xff00U)<<8) | (((x)&0xff0000U)>>8) | (((x)&0xff000000U)>>24))
|
|
#define ORC_SWAP_Q(x) ((((x)&ORC_UINT64_C(0xff))<<56) | (((x)&ORC_UINT64_C(0xff00))<<40) | (((x)&ORC_UINT64_C(0xff0000))<<24) | (((x)&ORC_UINT64_C(0xff000000))<<8) | (((x)&ORC_UINT64_C(0xff00000000))>>8) | (((x)&ORC_UINT64_C(0xff0000000000))>>24) | (((x)&ORC_UINT64_C(0xff000000000000))>>40) | (((x)&ORC_UINT64_C(0xff00000000000000))>>56))
|
|
#define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset)))
|
|
#define ORC_DENORMAL(x) ((x) & ((((x)&0x7f800000) == 0) ? 0xff800000 : 0xffffffff))
|
|
#define ORC_ISNAN(x) ((((x)&0x7f800000) == 0x7f800000) && (((x)&0x007fffff) != 0))
|
|
#define ORC_DENORMAL_DOUBLE(x) ((x) & ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == 0) ? ORC_UINT64_C(0xfff0000000000000) : ORC_UINT64_C(0xffffffffffffffff)))
|
|
#define ORC_ISNAN_DOUBLE(x) ((((x)&ORC_UINT64_C(0x7ff0000000000000)) == ORC_UINT64_C(0x7ff0000000000000)) && (((x)&ORC_UINT64_C(0x000fffffffffffff)) != 0))
|
|
#ifndef ORC_RESTRICT
|
|
#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
|
|
#define ORC_RESTRICT restrict
|
|
#elif defined(__GNUC__) && __GNUC__ >= 4
|
|
#define ORC_RESTRICT __restrict__
|
|
#else
|
|
#define ORC_RESTRICT
|
|
#endif
|
|
#endif
|
|
/* end Orc C target preamble */
|
|
|
|
|
|
|
|
/* video_orc_blend_little */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_blend_little (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int n)
|
|
{
|
|
int i;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union32 var39;
|
|
#else
|
|
orc_union32 var39;
|
|
#endif
|
|
orc_union32 var40;
|
|
orc_union16 var41;
|
|
orc_int8 var42;
|
|
orc_union32 var43;
|
|
orc_union64 var44;
|
|
orc_union64 var45;
|
|
orc_union64 var46;
|
|
orc_union32 var47;
|
|
orc_union64 var48;
|
|
orc_union64 var49;
|
|
orc_union64 var50;
|
|
orc_union64 var51;
|
|
orc_union64 var52;
|
|
orc_union32 var53;
|
|
orc_union32 var54;
|
|
|
|
ptr0 = (orc_union32 *) d1;
|
|
ptr4 = (orc_union32 *) s1;
|
|
|
|
/* 14: loadpl */
|
|
var39.i = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var40 = ptr4[i];
|
|
/* 1: convlw */
|
|
var41.i = var40.i;
|
|
/* 2: convwb */
|
|
var42 = var41.i;
|
|
/* 3: splatbl */
|
|
var43.i =
|
|
((((orc_uint32) var42) & 0xff) << 24) | ((((orc_uint32) var42) & 0xff)
|
|
<< 16) | ((((orc_uint32) var42) & 0xff) << 8) | (((orc_uint32) var42) &
|
|
0xff);
|
|
/* 4: convubw */
|
|
var44.x4[0] = (orc_uint8) var43.x4[0];
|
|
var44.x4[1] = (orc_uint8) var43.x4[1];
|
|
var44.x4[2] = (orc_uint8) var43.x4[2];
|
|
var44.x4[3] = (orc_uint8) var43.x4[3];
|
|
/* 5: shruw */
|
|
var45.x4[0] = ((orc_uint16) var44.x4[0]) >> 8;
|
|
var45.x4[1] = ((orc_uint16) var44.x4[1]) >> 8;
|
|
var45.x4[2] = ((orc_uint16) var44.x4[2]) >> 8;
|
|
var45.x4[3] = ((orc_uint16) var44.x4[3]) >> 8;
|
|
/* 6: convubw */
|
|
var46.x4[0] = (orc_uint8) var40.x4[0];
|
|
var46.x4[1] = (orc_uint8) var40.x4[1];
|
|
var46.x4[2] = (orc_uint8) var40.x4[2];
|
|
var46.x4[3] = (orc_uint8) var40.x4[3];
|
|
/* 7: loadl */
|
|
var47 = ptr0[i];
|
|
/* 8: convubw */
|
|
var48.x4[0] = (orc_uint8) var47.x4[0];
|
|
var48.x4[1] = (orc_uint8) var47.x4[1];
|
|
var48.x4[2] = (orc_uint8) var47.x4[2];
|
|
var48.x4[3] = (orc_uint8) var47.x4[3];
|
|
/* 9: subw */
|
|
var49.x4[0] = var46.x4[0] - var48.x4[0];
|
|
var49.x4[1] = var46.x4[1] - var48.x4[1];
|
|
var49.x4[2] = var46.x4[2] - var48.x4[2];
|
|
var49.x4[3] = var46.x4[3] - var48.x4[3];
|
|
/* 10: mullw */
|
|
var50.x4[0] = (var49.x4[0] * var45.x4[0]) & 0xffff;
|
|
var50.x4[1] = (var49.x4[1] * var45.x4[1]) & 0xffff;
|
|
var50.x4[2] = (var49.x4[2] * var45.x4[2]) & 0xffff;
|
|
var50.x4[3] = (var49.x4[3] * var45.x4[3]) & 0xffff;
|
|
/* 11: div255w */
|
|
var51.x4[0] =
|
|
((orc_uint16) (((orc_uint16) (var50.x4[0] + 128)) +
|
|
(((orc_uint16) (var50.x4[0] + 128)) >> 8))) >> 8;
|
|
var51.x4[1] =
|
|
((orc_uint16) (((orc_uint16) (var50.x4[1] + 128)) +
|
|
(((orc_uint16) (var50.x4[1] + 128)) >> 8))) >> 8;
|
|
var51.x4[2] =
|
|
((orc_uint16) (((orc_uint16) (var50.x4[2] + 128)) +
|
|
(((orc_uint16) (var50.x4[2] + 128)) >> 8))) >> 8;
|
|
var51.x4[3] =
|
|
((orc_uint16) (((orc_uint16) (var50.x4[3] + 128)) +
|
|
(((orc_uint16) (var50.x4[3] + 128)) >> 8))) >> 8;
|
|
/* 12: addw */
|
|
var52.x4[0] = var48.x4[0] + var51.x4[0];
|
|
var52.x4[1] = var48.x4[1] + var51.x4[1];
|
|
var52.x4[2] = var48.x4[2] + var51.x4[2];
|
|
var52.x4[3] = var48.x4[3] + var51.x4[3];
|
|
/* 13: convwb */
|
|
var53.x4[0] = var52.x4[0];
|
|
var53.x4[1] = var52.x4[1];
|
|
var53.x4[2] = var52.x4[2];
|
|
var53.x4[3] = var52.x4[3];
|
|
/* 15: orl */
|
|
var54.i = var53.i | var39.i;
|
|
/* 16: storel */
|
|
ptr0[i] = var54;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_blend_little (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union32 var39;
|
|
#else
|
|
orc_union32 var39;
|
|
#endif
|
|
orc_union32 var40;
|
|
orc_union16 var41;
|
|
orc_int8 var42;
|
|
orc_union32 var43;
|
|
orc_union64 var44;
|
|
orc_union64 var45;
|
|
orc_union64 var46;
|
|
orc_union32 var47;
|
|
orc_union64 var48;
|
|
orc_union64 var49;
|
|
orc_union64 var50;
|
|
orc_union64 var51;
|
|
orc_union64 var52;
|
|
orc_union32 var53;
|
|
orc_union32 var54;
|
|
|
|
ptr0 = (orc_union32 *) ex->arrays[0];
|
|
ptr4 = (orc_union32 *) ex->arrays[4];
|
|
|
|
/* 14: loadpl */
|
|
var39.i = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var40 = ptr4[i];
|
|
/* 1: convlw */
|
|
var41.i = var40.i;
|
|
/* 2: convwb */
|
|
var42 = var41.i;
|
|
/* 3: splatbl */
|
|
var43.i =
|
|
((((orc_uint32) var42) & 0xff) << 24) | ((((orc_uint32) var42) & 0xff)
|
|
<< 16) | ((((orc_uint32) var42) & 0xff) << 8) | (((orc_uint32) var42) &
|
|
0xff);
|
|
/* 4: convubw */
|
|
var44.x4[0] = (orc_uint8) var43.x4[0];
|
|
var44.x4[1] = (orc_uint8) var43.x4[1];
|
|
var44.x4[2] = (orc_uint8) var43.x4[2];
|
|
var44.x4[3] = (orc_uint8) var43.x4[3];
|
|
/* 5: shruw */
|
|
var45.x4[0] = ((orc_uint16) var44.x4[0]) >> 8;
|
|
var45.x4[1] = ((orc_uint16) var44.x4[1]) >> 8;
|
|
var45.x4[2] = ((orc_uint16) var44.x4[2]) >> 8;
|
|
var45.x4[3] = ((orc_uint16) var44.x4[3]) >> 8;
|
|
/* 6: convubw */
|
|
var46.x4[0] = (orc_uint8) var40.x4[0];
|
|
var46.x4[1] = (orc_uint8) var40.x4[1];
|
|
var46.x4[2] = (orc_uint8) var40.x4[2];
|
|
var46.x4[3] = (orc_uint8) var40.x4[3];
|
|
/* 7: loadl */
|
|
var47 = ptr0[i];
|
|
/* 8: convubw */
|
|
var48.x4[0] = (orc_uint8) var47.x4[0];
|
|
var48.x4[1] = (orc_uint8) var47.x4[1];
|
|
var48.x4[2] = (orc_uint8) var47.x4[2];
|
|
var48.x4[3] = (orc_uint8) var47.x4[3];
|
|
/* 9: subw */
|
|
var49.x4[0] = var46.x4[0] - var48.x4[0];
|
|
var49.x4[1] = var46.x4[1] - var48.x4[1];
|
|
var49.x4[2] = var46.x4[2] - var48.x4[2];
|
|
var49.x4[3] = var46.x4[3] - var48.x4[3];
|
|
/* 10: mullw */
|
|
var50.x4[0] = (var49.x4[0] * var45.x4[0]) & 0xffff;
|
|
var50.x4[1] = (var49.x4[1] * var45.x4[1]) & 0xffff;
|
|
var50.x4[2] = (var49.x4[2] * var45.x4[2]) & 0xffff;
|
|
var50.x4[3] = (var49.x4[3] * var45.x4[3]) & 0xffff;
|
|
/* 11: div255w */
|
|
var51.x4[0] =
|
|
((orc_uint16) (((orc_uint16) (var50.x4[0] + 128)) +
|
|
(((orc_uint16) (var50.x4[0] + 128)) >> 8))) >> 8;
|
|
var51.x4[1] =
|
|
((orc_uint16) (((orc_uint16) (var50.x4[1] + 128)) +
|
|
(((orc_uint16) (var50.x4[1] + 128)) >> 8))) >> 8;
|
|
var51.x4[2] =
|
|
((orc_uint16) (((orc_uint16) (var50.x4[2] + 128)) +
|
|
(((orc_uint16) (var50.x4[2] + 128)) >> 8))) >> 8;
|
|
var51.x4[3] =
|
|
((orc_uint16) (((orc_uint16) (var50.x4[3] + 128)) +
|
|
(((orc_uint16) (var50.x4[3] + 128)) >> 8))) >> 8;
|
|
/* 12: addw */
|
|
var52.x4[0] = var48.x4[0] + var51.x4[0];
|
|
var52.x4[1] = var48.x4[1] + var51.x4[1];
|
|
var52.x4[2] = var48.x4[2] + var51.x4[2];
|
|
var52.x4[3] = var48.x4[3] + var51.x4[3];
|
|
/* 13: convwb */
|
|
var53.x4[0] = var52.x4[0];
|
|
var53.x4[1] = var52.x4[1];
|
|
var53.x4[2] = var52.x4[2];
|
|
var53.x4[3] = var52.x4[3];
|
|
/* 15: orl */
|
|
var54.i = var53.i | var39.i;
|
|
/* 16: storel */
|
|
ptr0[i] = var54;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_blend_little (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int n)
|
|
{
|
|
OrcExecutor _ex, *ex = &_ex;
|
|
static volatile int p_inited = 0;
|
|
static OrcCode *c = 0;
|
|
void (*func) (OrcExecutor *);
|
|
|
|
if (!p_inited) {
|
|
orc_once_mutex_lock ();
|
|
if (!p_inited) {
|
|
OrcProgram *p;
|
|
|
|
#if 1
|
|
static const orc_uint8 bc[] = {
|
|
1, 9, 22, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 98, 108, 101,
|
|
110, 100, 95, 108, 105, 116, 116, 108, 101, 11, 4, 4, 12, 4, 4, 14,
|
|
4, 255, 0, 0, 0, 14, 2, 8, 0, 0, 0, 20, 4, 20, 2, 20,
|
|
1, 20, 4, 20, 8, 20, 8, 20, 8, 113, 32, 4, 163, 33, 32, 157,
|
|
34, 33, 152, 35, 34, 21, 2, 150, 38, 35, 21, 2, 95, 38, 38, 17,
|
|
21, 2, 150, 37, 32, 113, 32, 0, 21, 2, 150, 36, 32, 21, 2, 98,
|
|
37, 37, 36, 21, 2, 89, 37, 37, 38, 21, 2, 80, 37, 37, 21, 2,
|
|
70, 36, 36, 37, 21, 2, 157, 32, 36, 123, 32, 32, 16, 128, 0, 32,
|
|
2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_blend_little);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_blend_little");
|
|
orc_program_set_backup_function (p, _backup_video_orc_blend_little);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 4, "s1");
|
|
orc_program_add_constant (p, 4, 0x000000ff, "c1");
|
|
orc_program_add_constant (p, 2, 0x00000008, "c2");
|
|
orc_program_add_temporary (p, 4, "t1");
|
|
orc_program_add_temporary (p, 2, "t2");
|
|
orc_program_add_temporary (p, 1, "t3");
|
|
orc_program_add_temporary (p, 4, "t4");
|
|
orc_program_add_temporary (p, 8, "t5");
|
|
orc_program_add_temporary (p, 8, "t6");
|
|
orc_program_add_temporary (p, 8, "t7");
|
|
|
|
orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "shruw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 2, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "subw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T5,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mullw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T7,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "div255w", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 2, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T6,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T5, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
#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_blend_big */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_blend_big (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
int n)
|
|
{
|
|
int i;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union32 var40;
|
|
#else
|
|
orc_union32 var40;
|
|
#endif
|
|
orc_union32 var41;
|
|
orc_union32 var42;
|
|
orc_union16 var43;
|
|
orc_int8 var44;
|
|
orc_union32 var45;
|
|
orc_union64 var46;
|
|
orc_union64 var47;
|
|
orc_union64 var48;
|
|
orc_union32 var49;
|
|
orc_union64 var50;
|
|
orc_union64 var51;
|
|
orc_union64 var52;
|
|
orc_union64 var53;
|
|
orc_union64 var54;
|
|
orc_union32 var55;
|
|
orc_union32 var56;
|
|
|
|
ptr0 = (orc_union32 *) d1;
|
|
ptr4 = (orc_union32 *) s1;
|
|
|
|
/* 15: loadpl */
|
|
var40.i = (int) 0xff000000; /* -16777216 or 2.11371e-314f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var41 = ptr4[i];
|
|
/* 1: shrul */
|
|
var42.i = ((orc_uint32) var41.i) >> 24;
|
|
/* 2: convlw */
|
|
var43.i = var42.i;
|
|
/* 3: convwb */
|
|
var44 = var43.i;
|
|
/* 4: splatbl */
|
|
var45.i =
|
|
((((orc_uint32) var44) & 0xff) << 24) | ((((orc_uint32) var44) & 0xff)
|
|
<< 16) | ((((orc_uint32) var44) & 0xff) << 8) | (((orc_uint32) var44) &
|
|
0xff);
|
|
/* 5: convubw */
|
|
var46.x4[0] = (orc_uint8) var45.x4[0];
|
|
var46.x4[1] = (orc_uint8) var45.x4[1];
|
|
var46.x4[2] = (orc_uint8) var45.x4[2];
|
|
var46.x4[3] = (orc_uint8) var45.x4[3];
|
|
/* 6: shruw */
|
|
var47.x4[0] = ((orc_uint16) var46.x4[0]) >> 8;
|
|
var47.x4[1] = ((orc_uint16) var46.x4[1]) >> 8;
|
|
var47.x4[2] = ((orc_uint16) var46.x4[2]) >> 8;
|
|
var47.x4[3] = ((orc_uint16) var46.x4[3]) >> 8;
|
|
/* 7: convubw */
|
|
var48.x4[0] = (orc_uint8) var41.x4[0];
|
|
var48.x4[1] = (orc_uint8) var41.x4[1];
|
|
var48.x4[2] = (orc_uint8) var41.x4[2];
|
|
var48.x4[3] = (orc_uint8) var41.x4[3];
|
|
/* 8: loadl */
|
|
var49 = ptr0[i];
|
|
/* 9: convubw */
|
|
var50.x4[0] = (orc_uint8) var49.x4[0];
|
|
var50.x4[1] = (orc_uint8) var49.x4[1];
|
|
var50.x4[2] = (orc_uint8) var49.x4[2];
|
|
var50.x4[3] = (orc_uint8) var49.x4[3];
|
|
/* 10: subw */
|
|
var51.x4[0] = var48.x4[0] - var50.x4[0];
|
|
var51.x4[1] = var48.x4[1] - var50.x4[1];
|
|
var51.x4[2] = var48.x4[2] - var50.x4[2];
|
|
var51.x4[3] = var48.x4[3] - var50.x4[3];
|
|
/* 11: mullw */
|
|
var52.x4[0] = (var51.x4[0] * var47.x4[0]) & 0xffff;
|
|
var52.x4[1] = (var51.x4[1] * var47.x4[1]) & 0xffff;
|
|
var52.x4[2] = (var51.x4[2] * var47.x4[2]) & 0xffff;
|
|
var52.x4[3] = (var51.x4[3] * var47.x4[3]) & 0xffff;
|
|
/* 12: div255w */
|
|
var53.x4[0] =
|
|
((orc_uint16) (((orc_uint16) (var52.x4[0] + 128)) +
|
|
(((orc_uint16) (var52.x4[0] + 128)) >> 8))) >> 8;
|
|
var53.x4[1] =
|
|
((orc_uint16) (((orc_uint16) (var52.x4[1] + 128)) +
|
|
(((orc_uint16) (var52.x4[1] + 128)) >> 8))) >> 8;
|
|
var53.x4[2] =
|
|
((orc_uint16) (((orc_uint16) (var52.x4[2] + 128)) +
|
|
(((orc_uint16) (var52.x4[2] + 128)) >> 8))) >> 8;
|
|
var53.x4[3] =
|
|
((orc_uint16) (((orc_uint16) (var52.x4[3] + 128)) +
|
|
(((orc_uint16) (var52.x4[3] + 128)) >> 8))) >> 8;
|
|
/* 13: addw */
|
|
var54.x4[0] = var50.x4[0] + var53.x4[0];
|
|
var54.x4[1] = var50.x4[1] + var53.x4[1];
|
|
var54.x4[2] = var50.x4[2] + var53.x4[2];
|
|
var54.x4[3] = var50.x4[3] + var53.x4[3];
|
|
/* 14: convwb */
|
|
var55.x4[0] = var54.x4[0];
|
|
var55.x4[1] = var54.x4[1];
|
|
var55.x4[2] = var54.x4[2];
|
|
var55.x4[3] = var54.x4[3];
|
|
/* 16: orl */
|
|
var56.i = var55.i | var40.i;
|
|
/* 17: storel */
|
|
ptr0[i] = var56;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_blend_big (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union32 var40;
|
|
#else
|
|
orc_union32 var40;
|
|
#endif
|
|
orc_union32 var41;
|
|
orc_union32 var42;
|
|
orc_union16 var43;
|
|
orc_int8 var44;
|
|
orc_union32 var45;
|
|
orc_union64 var46;
|
|
orc_union64 var47;
|
|
orc_union64 var48;
|
|
orc_union32 var49;
|
|
orc_union64 var50;
|
|
orc_union64 var51;
|
|
orc_union64 var52;
|
|
orc_union64 var53;
|
|
orc_union64 var54;
|
|
orc_union32 var55;
|
|
orc_union32 var56;
|
|
|
|
ptr0 = (orc_union32 *) ex->arrays[0];
|
|
ptr4 = (orc_union32 *) ex->arrays[4];
|
|
|
|
/* 15: loadpl */
|
|
var40.i = (int) 0xff000000; /* -16777216 or 2.11371e-314f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var41 = ptr4[i];
|
|
/* 1: shrul */
|
|
var42.i = ((orc_uint32) var41.i) >> 24;
|
|
/* 2: convlw */
|
|
var43.i = var42.i;
|
|
/* 3: convwb */
|
|
var44 = var43.i;
|
|
/* 4: splatbl */
|
|
var45.i =
|
|
((((orc_uint32) var44) & 0xff) << 24) | ((((orc_uint32) var44) & 0xff)
|
|
<< 16) | ((((orc_uint32) var44) & 0xff) << 8) | (((orc_uint32) var44) &
|
|
0xff);
|
|
/* 5: convubw */
|
|
var46.x4[0] = (orc_uint8) var45.x4[0];
|
|
var46.x4[1] = (orc_uint8) var45.x4[1];
|
|
var46.x4[2] = (orc_uint8) var45.x4[2];
|
|
var46.x4[3] = (orc_uint8) var45.x4[3];
|
|
/* 6: shruw */
|
|
var47.x4[0] = ((orc_uint16) var46.x4[0]) >> 8;
|
|
var47.x4[1] = ((orc_uint16) var46.x4[1]) >> 8;
|
|
var47.x4[2] = ((orc_uint16) var46.x4[2]) >> 8;
|
|
var47.x4[3] = ((orc_uint16) var46.x4[3]) >> 8;
|
|
/* 7: convubw */
|
|
var48.x4[0] = (orc_uint8) var41.x4[0];
|
|
var48.x4[1] = (orc_uint8) var41.x4[1];
|
|
var48.x4[2] = (orc_uint8) var41.x4[2];
|
|
var48.x4[3] = (orc_uint8) var41.x4[3];
|
|
/* 8: loadl */
|
|
var49 = ptr0[i];
|
|
/* 9: convubw */
|
|
var50.x4[0] = (orc_uint8) var49.x4[0];
|
|
var50.x4[1] = (orc_uint8) var49.x4[1];
|
|
var50.x4[2] = (orc_uint8) var49.x4[2];
|
|
var50.x4[3] = (orc_uint8) var49.x4[3];
|
|
/* 10: subw */
|
|
var51.x4[0] = var48.x4[0] - var50.x4[0];
|
|
var51.x4[1] = var48.x4[1] - var50.x4[1];
|
|
var51.x4[2] = var48.x4[2] - var50.x4[2];
|
|
var51.x4[3] = var48.x4[3] - var50.x4[3];
|
|
/* 11: mullw */
|
|
var52.x4[0] = (var51.x4[0] * var47.x4[0]) & 0xffff;
|
|
var52.x4[1] = (var51.x4[1] * var47.x4[1]) & 0xffff;
|
|
var52.x4[2] = (var51.x4[2] * var47.x4[2]) & 0xffff;
|
|
var52.x4[3] = (var51.x4[3] * var47.x4[3]) & 0xffff;
|
|
/* 12: div255w */
|
|
var53.x4[0] =
|
|
((orc_uint16) (((orc_uint16) (var52.x4[0] + 128)) +
|
|
(((orc_uint16) (var52.x4[0] + 128)) >> 8))) >> 8;
|
|
var53.x4[1] =
|
|
((orc_uint16) (((orc_uint16) (var52.x4[1] + 128)) +
|
|
(((orc_uint16) (var52.x4[1] + 128)) >> 8))) >> 8;
|
|
var53.x4[2] =
|
|
((orc_uint16) (((orc_uint16) (var52.x4[2] + 128)) +
|
|
(((orc_uint16) (var52.x4[2] + 128)) >> 8))) >> 8;
|
|
var53.x4[3] =
|
|
((orc_uint16) (((orc_uint16) (var52.x4[3] + 128)) +
|
|
(((orc_uint16) (var52.x4[3] + 128)) >> 8))) >> 8;
|
|
/* 13: addw */
|
|
var54.x4[0] = var50.x4[0] + var53.x4[0];
|
|
var54.x4[1] = var50.x4[1] + var53.x4[1];
|
|
var54.x4[2] = var50.x4[2] + var53.x4[2];
|
|
var54.x4[3] = var50.x4[3] + var53.x4[3];
|
|
/* 14: convwb */
|
|
var55.x4[0] = var54.x4[0];
|
|
var55.x4[1] = var54.x4[1];
|
|
var55.x4[2] = var54.x4[2];
|
|
var55.x4[3] = var54.x4[3];
|
|
/* 16: orl */
|
|
var56.i = var55.i | var40.i;
|
|
/* 17: storel */
|
|
ptr0[i] = var56;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_blend_big (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
int n)
|
|
{
|
|
OrcExecutor _ex, *ex = &_ex;
|
|
static volatile int p_inited = 0;
|
|
static OrcCode *c = 0;
|
|
void (*func) (OrcExecutor *);
|
|
|
|
if (!p_inited) {
|
|
orc_once_mutex_lock ();
|
|
if (!p_inited) {
|
|
OrcProgram *p;
|
|
|
|
#if 1
|
|
static const orc_uint8 bc[] = {
|
|
1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 98, 108, 101,
|
|
110, 100, 95, 98, 105, 103, 11, 4, 4, 12, 4, 4, 14, 4, 0, 0,
|
|
0, 255, 14, 4, 24, 0, 0, 0, 14, 2, 8, 0, 0, 0, 20, 4,
|
|
20, 4, 20, 2, 20, 1, 20, 4, 20, 8, 20, 8, 20, 8, 113, 32,
|
|
4, 126, 33, 32, 17, 163, 34, 33, 157, 35, 34, 152, 36, 35, 21, 2,
|
|
150, 39, 36, 21, 2, 95, 39, 39, 18, 21, 2, 150, 38, 32, 113, 32,
|
|
0, 21, 2, 150, 37, 32, 21, 2, 98, 38, 38, 37, 21, 2, 89, 38,
|
|
38, 39, 21, 2, 80, 38, 38, 21, 2, 70, 37, 37, 38, 21, 2, 157,
|
|
32, 37, 123, 32, 32, 16, 128, 0, 32, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_blend_big);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_blend_big");
|
|
orc_program_set_backup_function (p, _backup_video_orc_blend_big);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 4, "s1");
|
|
orc_program_add_constant (p, 4, 0xff000000, "c1");
|
|
orc_program_add_constant (p, 4, 0x00000018, "c2");
|
|
orc_program_add_constant (p, 2, 0x00000008, "c3");
|
|
orc_program_add_temporary (p, 4, "t1");
|
|
orc_program_add_temporary (p, 4, "t2");
|
|
orc_program_add_temporary (p, 2, "t3");
|
|
orc_program_add_temporary (p, 1, "t4");
|
|
orc_program_add_temporary (p, 4, "t5");
|
|
orc_program_add_temporary (p, 8, "t6");
|
|
orc_program_add_temporary (p, 8, "t7");
|
|
orc_program_add_temporary (p, 8, "t8");
|
|
|
|
orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_C2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 2, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "shruw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_C3,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 2, ORC_VAR_T7, ORC_VAR_T1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "loadl", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 2, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "subw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T6,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mullw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T8,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "div255w", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 2, ORC_VAR_T6, ORC_VAR_T6, ORC_VAR_T7,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convwb", 2, ORC_VAR_T1, ORC_VAR_T6, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "orl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
#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_I420 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_unpack_I420 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n)
|
|
{
|
|
int i;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_int8 var36;
|
|
#else
|
|
orc_int8 var36;
|
|
#endif
|
|
orc_int8 var37;
|
|
orc_union32 var38;
|
|
orc_int8 var39;
|
|
orc_int8 var40;
|
|
orc_union16 var41;
|
|
orc_union16 var42;
|
|
|
|
ptr0 = (orc_union32 *) d1;
|
|
ptr4 = (orc_int8 *) s1;
|
|
ptr5 = (orc_int8 *) s2;
|
|
ptr6 = (orc_int8 *) s3;
|
|
|
|
/* 3: loadpb */
|
|
var36 = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadupdb */
|
|
var39 = ptr5[i >> 1];
|
|
/* 1: loadupdb */
|
|
var40 = ptr6[i >> 1];
|
|
/* 2: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var39;
|
|
_dest.x2[1] = var40;
|
|
var41.i = _dest.i;
|
|
}
|
|
/* 4: loadb */
|
|
var37 = ptr4[i];
|
|
/* 5: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var36;
|
|
_dest.x2[1] = var37;
|
|
var42.i = _dest.i;
|
|
}
|
|
/* 6: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var42.i;
|
|
_dest.x2[1] = var41.i;
|
|
var38.i = _dest.i;
|
|
}
|
|
/* 7: storel */
|
|
ptr0[i] = var38;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_unpack_I420 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_int8 var36;
|
|
#else
|
|
orc_int8 var36;
|
|
#endif
|
|
orc_int8 var37;
|
|
orc_union32 var38;
|
|
orc_int8 var39;
|
|
orc_int8 var40;
|
|
orc_union16 var41;
|
|
orc_union16 var42;
|
|
|
|
ptr0 = (orc_union32 *) ex->arrays[0];
|
|
ptr4 = (orc_int8 *) ex->arrays[4];
|
|
ptr5 = (orc_int8 *) ex->arrays[5];
|
|
ptr6 = (orc_int8 *) ex->arrays[6];
|
|
|
|
/* 3: loadpb */
|
|
var36 = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadupdb */
|
|
var39 = ptr5[i >> 1];
|
|
/* 1: loadupdb */
|
|
var40 = ptr6[i >> 1];
|
|
/* 2: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var39;
|
|
_dest.x2[1] = var40;
|
|
var41.i = _dest.i;
|
|
}
|
|
/* 4: loadb */
|
|
var37 = ptr4[i];
|
|
/* 5: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var36;
|
|
_dest.x2[1] = var37;
|
|
var42.i = _dest.i;
|
|
}
|
|
/* 6: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var42.i;
|
|
_dest.x2[1] = var41.i;
|
|
var38.i = _dest.i;
|
|
}
|
|
/* 7: storel */
|
|
ptr0[i] = var38;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_unpack_I420 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, 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, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
|
|
97, 99, 107, 95, 73, 52, 50, 48, 11, 4, 4, 12, 1, 1, 12, 1,
|
|
1, 12, 1, 1, 14, 1, 255, 0, 0, 0, 20, 2, 20, 2, 20, 1,
|
|
20, 1, 45, 34, 5, 45, 35, 6, 196, 32, 34, 35, 196, 33, 16, 4,
|
|
195, 0, 33, 32, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_unpack_I420);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_unpack_I420");
|
|
orc_program_set_backup_function (p, _backup_video_orc_unpack_I420);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 1, "s1");
|
|
orc_program_add_source (p, 1, "s2");
|
|
orc_program_add_source (p, 1, "s3");
|
|
orc_program_add_constant (p, 1, 0x000000ff, "c1");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 2, "t2");
|
|
orc_program_add_temporary (p, 1, "t3");
|
|
orc_program_add_temporary (p, 1, "t4");
|
|
|
|
orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T3, ORC_VAR_S2,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T4, ORC_VAR_S3,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
#endif
|
|
|
|
orc_program_compile (p);
|
|
c = orc_program_take_code (p);
|
|
orc_program_free (p);
|
|
}
|
|
p_inited = TRUE;
|
|
orc_once_mutex_unlock ();
|
|
}
|
|
ex->arrays[ORC_VAR_A2] = c;
|
|
ex->program = 0;
|
|
|
|
ex->n = n;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
ex->arrays[ORC_VAR_S3] = (void *) s3;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_pack_I420 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_pack_I420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
|
guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n)
|
|
{
|
|
int i;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
orc_int8 *ORC_RESTRICT ptr1;
|
|
orc_int8 *ORC_RESTRICT ptr2;
|
|
const orc_union64 *ORC_RESTRICT ptr4;
|
|
orc_union64 var38;
|
|
orc_union16 var39;
|
|
orc_int8 var40;
|
|
orc_int8 var41;
|
|
orc_union32 var42;
|
|
orc_union32 var43;
|
|
orc_union16 var44;
|
|
orc_union16 var45;
|
|
|
|
ptr0 = (orc_union16 *) d1;
|
|
ptr1 = (orc_int8 *) d2;
|
|
ptr2 = (orc_int8 *) d3;
|
|
ptr4 = (orc_union64 *) s1;
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadq */
|
|
var38 = ptr4[i];
|
|
/* 1: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var38.x2[0];
|
|
var42.x2[0] = _src.x2[1];
|
|
var43.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var38.x2[1];
|
|
var42.x2[1] = _src.x2[1];
|
|
var43.x2[1] = _src.x2[0];
|
|
}
|
|
/* 2: select1wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var43.x2[0];
|
|
var39.x2[0] = _src.x2[1];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var43.x2[1];
|
|
var39.x2[1] = _src.x2[1];
|
|
}
|
|
/* 3: storew */
|
|
ptr0[i] = var39;
|
|
/* 4: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var42.x2[0];
|
|
var44.x2[0] = _src.x2[1];
|
|
var45.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var42.x2[1];
|
|
var44.x2[1] = _src.x2[1];
|
|
var45.x2[1] = _src.x2[0];
|
|
}
|
|
/* 5: select0wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var45.i;
|
|
var40 = _src.x2[0];
|
|
}
|
|
/* 6: storeb */
|
|
ptr1[i] = var40;
|
|
/* 7: select0wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var44.i;
|
|
var41 = _src.x2[0];
|
|
}
|
|
/* 8: storeb */
|
|
ptr2[i] = var41;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_pack_I420 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
orc_int8 *ORC_RESTRICT ptr1;
|
|
orc_int8 *ORC_RESTRICT ptr2;
|
|
const orc_union64 *ORC_RESTRICT ptr4;
|
|
orc_union64 var38;
|
|
orc_union16 var39;
|
|
orc_int8 var40;
|
|
orc_int8 var41;
|
|
orc_union32 var42;
|
|
orc_union32 var43;
|
|
orc_union16 var44;
|
|
orc_union16 var45;
|
|
|
|
ptr0 = (orc_union16 *) ex->arrays[0];
|
|
ptr1 = (orc_int8 *) ex->arrays[1];
|
|
ptr2 = (orc_int8 *) ex->arrays[2];
|
|
ptr4 = (orc_union64 *) ex->arrays[4];
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadq */
|
|
var38 = ptr4[i];
|
|
/* 1: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var38.x2[0];
|
|
var42.x2[0] = _src.x2[1];
|
|
var43.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var38.x2[1];
|
|
var42.x2[1] = _src.x2[1];
|
|
var43.x2[1] = _src.x2[0];
|
|
}
|
|
/* 2: select1wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var43.x2[0];
|
|
var39.x2[0] = _src.x2[1];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var43.x2[1];
|
|
var39.x2[1] = _src.x2[1];
|
|
}
|
|
/* 3: storew */
|
|
ptr0[i] = var39;
|
|
/* 4: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var42.x2[0];
|
|
var44.x2[0] = _src.x2[1];
|
|
var45.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var42.x2[1];
|
|
var44.x2[1] = _src.x2[1];
|
|
var45.x2[1] = _src.x2[0];
|
|
}
|
|
/* 5: select0wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var45.i;
|
|
var40 = _src.x2[0];
|
|
}
|
|
/* 6: storeb */
|
|
ptr1[i] = var40;
|
|
/* 7: select0wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var44.i;
|
|
var41 = _src.x2[0];
|
|
}
|
|
/* 8: storeb */
|
|
ptr2[i] = var41;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_pack_I420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
|
guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n)
|
|
{
|
|
OrcExecutor _ex, *ex = &_ex;
|
|
static volatile int p_inited = 0;
|
|
static OrcCode *c = 0;
|
|
void (*func) (OrcExecutor *);
|
|
|
|
if (!p_inited) {
|
|
orc_once_mutex_lock ();
|
|
if (!p_inited) {
|
|
OrcProgram *p;
|
|
|
|
#if 1
|
|
static const orc_uint8 bc[] = {
|
|
1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
|
|
107, 95, 73, 52, 50, 48, 11, 2, 2, 11, 1, 1, 11, 1, 1, 12,
|
|
8, 8, 20, 4, 20, 4, 20, 2, 20, 2, 20, 1, 20, 1, 21, 1,
|
|
198, 33, 32, 4, 21, 1, 189, 0, 32, 21, 1, 199, 35, 34, 33, 188,
|
|
1, 34, 188, 2, 35, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_pack_I420);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_pack_I420");
|
|
orc_program_set_backup_function (p, _backup_video_orc_pack_I420);
|
|
orc_program_add_destination (p, 2, "d1");
|
|
orc_program_add_destination (p, 1, "d2");
|
|
orc_program_add_destination (p, 1, "d3");
|
|
orc_program_add_source (p, 8, "s1");
|
|
orc_program_add_temporary (p, 4, "t1");
|
|
orc_program_add_temporary (p, 4, "t2");
|
|
orc_program_add_temporary (p, 2, "t3");
|
|
orc_program_add_temporary (p, 2, "t4");
|
|
orc_program_add_temporary (p, 1, "t5");
|
|
orc_program_add_temporary (p, 1, "t6");
|
|
|
|
orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select0wb", 0, ORC_VAR_D2, ORC_VAR_T3,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select0wb", 0, ORC_VAR_D3, ORC_VAR_T4,
|
|
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_D2] = d2;
|
|
ex->arrays[ORC_VAR_D3] = d3;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_pack_Y */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_pack_Y (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
int n)
|
|
{
|
|
int i;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var33;
|
|
orc_int8 var34;
|
|
orc_union16 var35;
|
|
|
|
ptr0 = (orc_int8 *) d1;
|
|
ptr4 = (orc_union32 *) s1;
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var33 = ptr4[i];
|
|
/* 1: select0lw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var33.i;
|
|
var35.i = _src.x2[0];
|
|
}
|
|
/* 2: select1wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var35.i;
|
|
var34 = _src.x2[1];
|
|
}
|
|
/* 3: storeb */
|
|
ptr0[i] = var34;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_pack_Y (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var33;
|
|
orc_int8 var34;
|
|
orc_union16 var35;
|
|
|
|
ptr0 = (orc_int8 *) ex->arrays[0];
|
|
ptr4 = (orc_union32 *) ex->arrays[4];
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var33 = ptr4[i];
|
|
/* 1: select0lw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var33.i;
|
|
var35.i = _src.x2[0];
|
|
}
|
|
/* 2: select1wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var35.i;
|
|
var34 = _src.x2[1];
|
|
}
|
|
/* 3: storeb */
|
|
ptr0[i] = var34;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_pack_Y (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
int n)
|
|
{
|
|
OrcExecutor _ex, *ex = &_ex;
|
|
static volatile int p_inited = 0;
|
|
static OrcCode *c = 0;
|
|
void (*func) (OrcExecutor *);
|
|
|
|
if (!p_inited) {
|
|
orc_once_mutex_lock ();
|
|
if (!p_inited) {
|
|
OrcProgram *p;
|
|
|
|
#if 1
|
|
static const orc_uint8 bc[] = {
|
|
1, 9, 16, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
|
|
107, 95, 89, 11, 1, 1, 12, 4, 4, 20, 2, 190, 32, 4, 189, 0,
|
|
32, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_pack_Y);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_pack_Y");
|
|
orc_program_set_backup_function (p, _backup_video_orc_pack_Y);
|
|
orc_program_add_destination (p, 1, "d1");
|
|
orc_program_add_source (p, 4, "s1");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
|
|
orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_S1,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1,
|
|
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_YUY2 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_unpack_YUY2 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
int n)
|
|
{
|
|
int i;
|
|
orc_union64 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var36;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union16 var37;
|
|
#else
|
|
orc_union16 var37;
|
|
#endif
|
|
orc_union64 var38;
|
|
orc_union16 var39;
|
|
orc_union16 var40;
|
|
orc_union32 var41;
|
|
orc_union32 var42;
|
|
|
|
ptr0 = (orc_union64 *) d1;
|
|
ptr4 = (orc_union32 *) s1;
|
|
|
|
/* 2: loadpb */
|
|
var37.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
var37.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var36 = ptr4[i];
|
|
/* 1: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var36.x2[0];
|
|
var39.x2[0] = _src.x2[1];
|
|
var40.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var36.x2[1];
|
|
var39.x2[1] = _src.x2[1];
|
|
var40.x2[1] = _src.x2[0];
|
|
}
|
|
/* 3: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var37.x2[0];
|
|
_dest.x2[1] = var40.x2[0];
|
|
var41.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var37.x2[1];
|
|
_dest.x2[1] = var40.x2[1];
|
|
var41.x2[1] = _dest.i;
|
|
}
|
|
/* 4: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var39.i;
|
|
_dest.x2[1] = var39.i;
|
|
var42.i = _dest.i;
|
|
}
|
|
/* 5: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var41.x2[0];
|
|
_dest.x2[1] = var42.x2[0];
|
|
var38.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var41.x2[1];
|
|
_dest.x2[1] = var42.x2[1];
|
|
var38.x2[1] = _dest.i;
|
|
}
|
|
/* 6: storeq */
|
|
ptr0[i] = var38;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_unpack_YUY2 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union64 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var36;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union16 var37;
|
|
#else
|
|
orc_union16 var37;
|
|
#endif
|
|
orc_union64 var38;
|
|
orc_union16 var39;
|
|
orc_union16 var40;
|
|
orc_union32 var41;
|
|
orc_union32 var42;
|
|
|
|
ptr0 = (orc_union64 *) ex->arrays[0];
|
|
ptr4 = (orc_union32 *) ex->arrays[4];
|
|
|
|
/* 2: loadpb */
|
|
var37.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
var37.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var36 = ptr4[i];
|
|
/* 1: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var36.x2[0];
|
|
var39.x2[0] = _src.x2[1];
|
|
var40.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var36.x2[1];
|
|
var39.x2[1] = _src.x2[1];
|
|
var40.x2[1] = _src.x2[0];
|
|
}
|
|
/* 3: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var37.x2[0];
|
|
_dest.x2[1] = var40.x2[0];
|
|
var41.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var37.x2[1];
|
|
_dest.x2[1] = var40.x2[1];
|
|
var41.x2[1] = _dest.i;
|
|
}
|
|
/* 4: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var39.i;
|
|
_dest.x2[1] = var39.i;
|
|
var42.i = _dest.i;
|
|
}
|
|
/* 5: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var41.x2[0];
|
|
_dest.x2[1] = var42.x2[0];
|
|
var38.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var41.x2[1];
|
|
_dest.x2[1] = var42.x2[1];
|
|
var38.x2[1] = _dest.i;
|
|
}
|
|
/* 6: storeq */
|
|
ptr0[i] = var38;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_unpack_YUY2 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
int n)
|
|
{
|
|
OrcExecutor _ex, *ex = &_ex;
|
|
static volatile int p_inited = 0;
|
|
static OrcCode *c = 0;
|
|
void (*func) (OrcExecutor *);
|
|
|
|
if (!p_inited) {
|
|
orc_once_mutex_lock ();
|
|
if (!p_inited) {
|
|
OrcProgram *p;
|
|
|
|
#if 1
|
|
static const orc_uint8 bc[] = {
|
|
1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
|
|
97, 99, 107, 95, 89, 85, 89, 50, 11, 8, 8, 12, 4, 4, 14, 2,
|
|
255, 0, 0, 0, 20, 2, 20, 2, 20, 4, 20, 4, 21, 1, 199, 33,
|
|
32, 4, 21, 1, 196, 34, 16, 32, 195, 35, 33, 33, 21, 1, 195, 0,
|
|
34, 35, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_unpack_YUY2);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_unpack_YUY2");
|
|
orc_program_set_backup_function (p, _backup_video_orc_unpack_YUY2);
|
|
orc_program_add_destination (p, 8, "d1");
|
|
orc_program_add_source (p, 4, "s1");
|
|
orc_program_add_constant (p, 2, 0x000000ff, "c1");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 2, "t2");
|
|
orc_program_add_temporary (p, 4, "t3");
|
|
orc_program_add_temporary (p, 4, "t4");
|
|
|
|
orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4,
|
|
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_YUY2 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_pack_YUY2 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
int n)
|
|
{
|
|
int i;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union64 *ORC_RESTRICT ptr4;
|
|
orc_union64 var36;
|
|
orc_union32 var37;
|
|
orc_union32 var38;
|
|
orc_union32 var39;
|
|
orc_union16 var40;
|
|
orc_union16 var41;
|
|
|
|
ptr0 = (orc_union32 *) d1;
|
|
ptr4 = (orc_union64 *) s1;
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadq */
|
|
var36 = ptr4[i];
|
|
/* 1: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var36.x2[0];
|
|
var38.x2[0] = _src.x2[1];
|
|
var39.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var36.x2[1];
|
|
var38.x2[1] = _src.x2[1];
|
|
var39.x2[1] = _src.x2[0];
|
|
}
|
|
/* 2: select0lw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var38.i;
|
|
var40.i = _src.x2[0];
|
|
}
|
|
/* 3: select1wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var39.x2[0];
|
|
var41.x2[0] = _src.x2[1];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var39.x2[1];
|
|
var41.x2[1] = _src.x2[1];
|
|
}
|
|
/* 4: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var41.x2[0];
|
|
_dest.x2[1] = var40.x2[0];
|
|
var37.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var41.x2[1];
|
|
_dest.x2[1] = var40.x2[1];
|
|
var37.x2[1] = _dest.i;
|
|
}
|
|
/* 5: storel */
|
|
ptr0[i] = var37;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_pack_YUY2 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union64 *ORC_RESTRICT ptr4;
|
|
orc_union64 var36;
|
|
orc_union32 var37;
|
|
orc_union32 var38;
|
|
orc_union32 var39;
|
|
orc_union16 var40;
|
|
orc_union16 var41;
|
|
|
|
ptr0 = (orc_union32 *) ex->arrays[0];
|
|
ptr4 = (orc_union64 *) ex->arrays[4];
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadq */
|
|
var36 = ptr4[i];
|
|
/* 1: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var36.x2[0];
|
|
var38.x2[0] = _src.x2[1];
|
|
var39.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var36.x2[1];
|
|
var38.x2[1] = _src.x2[1];
|
|
var39.x2[1] = _src.x2[0];
|
|
}
|
|
/* 2: select0lw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var38.i;
|
|
var40.i = _src.x2[0];
|
|
}
|
|
/* 3: select1wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var39.x2[0];
|
|
var41.x2[0] = _src.x2[1];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var39.x2[1];
|
|
var41.x2[1] = _src.x2[1];
|
|
}
|
|
/* 4: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var41.x2[0];
|
|
_dest.x2[1] = var40.x2[0];
|
|
var37.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var41.x2[1];
|
|
_dest.x2[1] = var40.x2[1];
|
|
var37.x2[1] = _dest.i;
|
|
}
|
|
/* 5: storel */
|
|
ptr0[i] = var37;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_pack_YUY2 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
int n)
|
|
{
|
|
OrcExecutor _ex, *ex = &_ex;
|
|
static volatile int p_inited = 0;
|
|
static OrcCode *c = 0;
|
|
void (*func) (OrcExecutor *);
|
|
|
|
if (!p_inited) {
|
|
orc_once_mutex_lock ();
|
|
if (!p_inited) {
|
|
OrcProgram *p;
|
|
|
|
#if 1
|
|
static const orc_uint8 bc[] = {
|
|
1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
|
|
107, 95, 89, 85, 89, 50, 11, 4, 4, 12, 8, 8, 20, 2, 20, 2,
|
|
20, 4, 20, 4, 21, 1, 198, 35, 34, 4, 190, 33, 35, 21, 1, 189,
|
|
32, 34, 21, 1, 196, 0, 32, 33, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_pack_YUY2);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_pack_YUY2");
|
|
orc_program_set_backup_function (p, _backup_video_orc_pack_YUY2);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 8, "s1");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 2, "t2");
|
|
orc_program_add_temporary (p, 4, "t3");
|
|
orc_program_add_temporary (p, 4, "t4");
|
|
|
|
orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T2, ORC_VAR_T4,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T3,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
|
|
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_UYVY */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_pack_UYVY (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
int n)
|
|
{
|
|
int i;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union64 *ORC_RESTRICT ptr4;
|
|
orc_union64 var36;
|
|
orc_union32 var37;
|
|
orc_union32 var38;
|
|
orc_union32 var39;
|
|
orc_union16 var40;
|
|
orc_union16 var41;
|
|
|
|
ptr0 = (orc_union32 *) d1;
|
|
ptr4 = (orc_union64 *) s1;
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadq */
|
|
var36 = ptr4[i];
|
|
/* 1: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var36.x2[0];
|
|
var38.x2[0] = _src.x2[1];
|
|
var39.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var36.x2[1];
|
|
var38.x2[1] = _src.x2[1];
|
|
var39.x2[1] = _src.x2[0];
|
|
}
|
|
/* 2: select0lw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var38.i;
|
|
var40.i = _src.x2[0];
|
|
}
|
|
/* 3: select1wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var39.x2[0];
|
|
var41.x2[0] = _src.x2[1];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var39.x2[1];
|
|
var41.x2[1] = _src.x2[1];
|
|
}
|
|
/* 4: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var40.x2[0];
|
|
_dest.x2[1] = var41.x2[0];
|
|
var37.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var40.x2[1];
|
|
_dest.x2[1] = var41.x2[1];
|
|
var37.x2[1] = _dest.i;
|
|
}
|
|
/* 5: storel */
|
|
ptr0[i] = var37;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_pack_UYVY (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union64 *ORC_RESTRICT ptr4;
|
|
orc_union64 var36;
|
|
orc_union32 var37;
|
|
orc_union32 var38;
|
|
orc_union32 var39;
|
|
orc_union16 var40;
|
|
orc_union16 var41;
|
|
|
|
ptr0 = (orc_union32 *) ex->arrays[0];
|
|
ptr4 = (orc_union64 *) ex->arrays[4];
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadq */
|
|
var36 = ptr4[i];
|
|
/* 1: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var36.x2[0];
|
|
var38.x2[0] = _src.x2[1];
|
|
var39.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var36.x2[1];
|
|
var38.x2[1] = _src.x2[1];
|
|
var39.x2[1] = _src.x2[0];
|
|
}
|
|
/* 2: select0lw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var38.i;
|
|
var40.i = _src.x2[0];
|
|
}
|
|
/* 3: select1wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var39.x2[0];
|
|
var41.x2[0] = _src.x2[1];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var39.x2[1];
|
|
var41.x2[1] = _src.x2[1];
|
|
}
|
|
/* 4: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var40.x2[0];
|
|
_dest.x2[1] = var41.x2[0];
|
|
var37.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var40.x2[1];
|
|
_dest.x2[1] = var41.x2[1];
|
|
var37.x2[1] = _dest.i;
|
|
}
|
|
/* 5: storel */
|
|
ptr0[i] = var37;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_pack_UYVY (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
int n)
|
|
{
|
|
OrcExecutor _ex, *ex = &_ex;
|
|
static volatile int p_inited = 0;
|
|
static OrcCode *c = 0;
|
|
void (*func) (OrcExecutor *);
|
|
|
|
if (!p_inited) {
|
|
orc_once_mutex_lock ();
|
|
if (!p_inited) {
|
|
OrcProgram *p;
|
|
|
|
#if 1
|
|
static const orc_uint8 bc[] = {
|
|
1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
|
|
107, 95, 85, 89, 86, 89, 11, 4, 4, 12, 8, 8, 20, 2, 20, 2,
|
|
20, 4, 20, 4, 21, 1, 198, 35, 34, 4, 190, 33, 35, 21, 1, 189,
|
|
32, 34, 21, 1, 196, 0, 33, 32, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_pack_UYVY);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_pack_UYVY");
|
|
orc_program_set_backup_function (p, _backup_video_orc_pack_UYVY);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 8, "s1");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 2, "t2");
|
|
orc_program_add_temporary (p, 4, "t3");
|
|
orc_program_add_temporary (p, 4, "t4");
|
|
|
|
orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T2, ORC_VAR_T4,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T3,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
#endif
|
|
|
|
orc_program_compile (p);
|
|
c = orc_program_take_code (p);
|
|
orc_program_free (p);
|
|
}
|
|
p_inited = TRUE;
|
|
orc_once_mutex_unlock ();
|
|
}
|
|
ex->arrays[ORC_VAR_A2] = c;
|
|
ex->program = 0;
|
|
|
|
ex->n = n;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_unpack_UYVY */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_unpack_UYVY (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
int n)
|
|
{
|
|
int i;
|
|
orc_union64 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var36;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union16 var37;
|
|
#else
|
|
orc_union16 var37;
|
|
#endif
|
|
orc_union64 var38;
|
|
orc_union16 var39;
|
|
orc_union16 var40;
|
|
orc_union32 var41;
|
|
orc_union32 var42;
|
|
|
|
ptr0 = (orc_union64 *) d1;
|
|
ptr4 = (orc_union32 *) s1;
|
|
|
|
/* 2: loadpb */
|
|
var37.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
var37.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var36 = ptr4[i];
|
|
/* 1: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var36.x2[0];
|
|
var39.x2[0] = _src.x2[1];
|
|
var40.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var36.x2[1];
|
|
var39.x2[1] = _src.x2[1];
|
|
var40.x2[1] = _src.x2[0];
|
|
}
|
|
/* 3: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var37.x2[0];
|
|
_dest.x2[1] = var39.x2[0];
|
|
var41.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var37.x2[1];
|
|
_dest.x2[1] = var39.x2[1];
|
|
var41.x2[1] = _dest.i;
|
|
}
|
|
/* 4: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var40.i;
|
|
_dest.x2[1] = var40.i;
|
|
var42.i = _dest.i;
|
|
}
|
|
/* 5: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var41.x2[0];
|
|
_dest.x2[1] = var42.x2[0];
|
|
var38.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var41.x2[1];
|
|
_dest.x2[1] = var42.x2[1];
|
|
var38.x2[1] = _dest.i;
|
|
}
|
|
/* 6: storeq */
|
|
ptr0[i] = var38;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_unpack_UYVY (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union64 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var36;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union16 var37;
|
|
#else
|
|
orc_union16 var37;
|
|
#endif
|
|
orc_union64 var38;
|
|
orc_union16 var39;
|
|
orc_union16 var40;
|
|
orc_union32 var41;
|
|
orc_union32 var42;
|
|
|
|
ptr0 = (orc_union64 *) ex->arrays[0];
|
|
ptr4 = (orc_union32 *) ex->arrays[4];
|
|
|
|
/* 2: loadpb */
|
|
var37.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
var37.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var36 = ptr4[i];
|
|
/* 1: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var36.x2[0];
|
|
var39.x2[0] = _src.x2[1];
|
|
var40.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var36.x2[1];
|
|
var39.x2[1] = _src.x2[1];
|
|
var40.x2[1] = _src.x2[0];
|
|
}
|
|
/* 3: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var37.x2[0];
|
|
_dest.x2[1] = var39.x2[0];
|
|
var41.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var37.x2[1];
|
|
_dest.x2[1] = var39.x2[1];
|
|
var41.x2[1] = _dest.i;
|
|
}
|
|
/* 4: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var40.i;
|
|
_dest.x2[1] = var40.i;
|
|
var42.i = _dest.i;
|
|
}
|
|
/* 5: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var41.x2[0];
|
|
_dest.x2[1] = var42.x2[0];
|
|
var38.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var41.x2[1];
|
|
_dest.x2[1] = var42.x2[1];
|
|
var38.x2[1] = _dest.i;
|
|
}
|
|
/* 6: storeq */
|
|
ptr0[i] = var38;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_unpack_UYVY (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
int n)
|
|
{
|
|
OrcExecutor _ex, *ex = &_ex;
|
|
static volatile int p_inited = 0;
|
|
static OrcCode *c = 0;
|
|
void (*func) (OrcExecutor *);
|
|
|
|
if (!p_inited) {
|
|
orc_once_mutex_lock ();
|
|
if (!p_inited) {
|
|
OrcProgram *p;
|
|
|
|
#if 1
|
|
static const orc_uint8 bc[] = {
|
|
1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
|
|
97, 99, 107, 95, 85, 89, 86, 89, 11, 8, 8, 12, 4, 4, 14, 2,
|
|
255, 0, 0, 0, 20, 2, 20, 2, 20, 4, 20, 4, 21, 1, 199, 32,
|
|
33, 4, 21, 1, 196, 34, 16, 32, 195, 35, 33, 33, 21, 1, 195, 0,
|
|
34, 35, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_unpack_UYVY);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_unpack_UYVY");
|
|
orc_program_set_backup_function (p, _backup_video_orc_unpack_UYVY);
|
|
orc_program_add_destination (p, 8, "d1");
|
|
orc_program_add_source (p, 4, "s1");
|
|
orc_program_add_constant (p, 2, 0x000000ff, "c1");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 2, "t2");
|
|
orc_program_add_temporary (p, 4, "t3");
|
|
orc_program_add_temporary (p, 4, "t4");
|
|
|
|
orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4,
|
|
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_YVYU */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_unpack_YVYU (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
int n)
|
|
{
|
|
int i;
|
|
orc_union64 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var36;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union16 var37;
|
|
#else
|
|
orc_union16 var37;
|
|
#endif
|
|
orc_union64 var38;
|
|
orc_union16 var39;
|
|
orc_union16 var40;
|
|
orc_union16 var41;
|
|
orc_union32 var42;
|
|
orc_union32 var43;
|
|
|
|
ptr0 = (orc_union64 *) d1;
|
|
ptr4 = (orc_union32 *) s1;
|
|
|
|
/* 3: loadpb */
|
|
var37.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
var37.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var36 = ptr4[i];
|
|
/* 1: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var36.x2[0];
|
|
var39.x2[0] = _src.x2[1];
|
|
var40.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var36.x2[1];
|
|
var39.x2[1] = _src.x2[1];
|
|
var40.x2[1] = _src.x2[0];
|
|
}
|
|
/* 2: swapw */
|
|
var41.i = ORC_SWAP_W (var39.i);
|
|
/* 4: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var37.x2[0];
|
|
_dest.x2[1] = var40.x2[0];
|
|
var42.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var37.x2[1];
|
|
_dest.x2[1] = var40.x2[1];
|
|
var42.x2[1] = _dest.i;
|
|
}
|
|
/* 5: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var41.i;
|
|
_dest.x2[1] = var41.i;
|
|
var43.i = _dest.i;
|
|
}
|
|
/* 6: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var42.x2[0];
|
|
_dest.x2[1] = var43.x2[0];
|
|
var38.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var42.x2[1];
|
|
_dest.x2[1] = var43.x2[1];
|
|
var38.x2[1] = _dest.i;
|
|
}
|
|
/* 7: storeq */
|
|
ptr0[i] = var38;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_unpack_YVYU (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union64 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var36;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union16 var37;
|
|
#else
|
|
orc_union16 var37;
|
|
#endif
|
|
orc_union64 var38;
|
|
orc_union16 var39;
|
|
orc_union16 var40;
|
|
orc_union16 var41;
|
|
orc_union32 var42;
|
|
orc_union32 var43;
|
|
|
|
ptr0 = (orc_union64 *) ex->arrays[0];
|
|
ptr4 = (orc_union32 *) ex->arrays[4];
|
|
|
|
/* 3: loadpb */
|
|
var37.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
var37.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var36 = ptr4[i];
|
|
/* 1: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var36.x2[0];
|
|
var39.x2[0] = _src.x2[1];
|
|
var40.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var36.x2[1];
|
|
var39.x2[1] = _src.x2[1];
|
|
var40.x2[1] = _src.x2[0];
|
|
}
|
|
/* 2: swapw */
|
|
var41.i = ORC_SWAP_W (var39.i);
|
|
/* 4: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var37.x2[0];
|
|
_dest.x2[1] = var40.x2[0];
|
|
var42.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var37.x2[1];
|
|
_dest.x2[1] = var40.x2[1];
|
|
var42.x2[1] = _dest.i;
|
|
}
|
|
/* 5: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var41.i;
|
|
_dest.x2[1] = var41.i;
|
|
var43.i = _dest.i;
|
|
}
|
|
/* 6: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var42.x2[0];
|
|
_dest.x2[1] = var43.x2[0];
|
|
var38.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var42.x2[1];
|
|
_dest.x2[1] = var43.x2[1];
|
|
var38.x2[1] = _dest.i;
|
|
}
|
|
/* 7: storeq */
|
|
ptr0[i] = var38;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_unpack_YVYU (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
int n)
|
|
{
|
|
OrcExecutor _ex, *ex = &_ex;
|
|
static volatile int p_inited = 0;
|
|
static OrcCode *c = 0;
|
|
void (*func) (OrcExecutor *);
|
|
|
|
if (!p_inited) {
|
|
orc_once_mutex_lock ();
|
|
if (!p_inited) {
|
|
OrcProgram *p;
|
|
|
|
#if 1
|
|
static const orc_uint8 bc[] = {
|
|
1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
|
|
97, 99, 107, 95, 89, 86, 89, 85, 11, 8, 8, 12, 4, 4, 14, 2,
|
|
255, 0, 0, 0, 20, 2, 20, 2, 20, 4, 20, 4, 21, 1, 199, 33,
|
|
32, 4, 183, 33, 33, 21, 1, 196, 34, 16, 32, 195, 35, 33, 33, 21,
|
|
1, 195, 0, 34, 35, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_unpack_YVYU);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_unpack_YVYU");
|
|
orc_program_set_backup_function (p, _backup_video_orc_unpack_YVYU);
|
|
orc_program_add_destination (p, 8, "d1");
|
|
orc_program_add_source (p, 4, "s1");
|
|
orc_program_add_constant (p, 2, 0x000000ff, "c1");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 2, "t2");
|
|
orc_program_add_temporary (p, 4, "t3");
|
|
orc_program_add_temporary (p, 4, "t4");
|
|
|
|
orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "swapw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4,
|
|
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_YVYU */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_pack_YVYU (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
int n)
|
|
{
|
|
int i;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union64 *ORC_RESTRICT ptr4;
|
|
orc_union64 var36;
|
|
orc_union32 var37;
|
|
orc_union32 var38;
|
|
orc_union32 var39;
|
|
orc_union16 var40;
|
|
orc_union16 var41;
|
|
orc_union16 var42;
|
|
|
|
ptr0 = (orc_union32 *) d1;
|
|
ptr4 = (orc_union64 *) s1;
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadq */
|
|
var36 = ptr4[i];
|
|
/* 1: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var36.x2[0];
|
|
var38.x2[0] = _src.x2[1];
|
|
var39.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var36.x2[1];
|
|
var38.x2[1] = _src.x2[1];
|
|
var39.x2[1] = _src.x2[0];
|
|
}
|
|
/* 2: select0lw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var38.i;
|
|
var40.i = _src.x2[0];
|
|
}
|
|
/* 3: select1wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var39.x2[0];
|
|
var41.x2[0] = _src.x2[1];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var39.x2[1];
|
|
var41.x2[1] = _src.x2[1];
|
|
}
|
|
/* 4: swapw */
|
|
var42.i = ORC_SWAP_W (var40.i);
|
|
/* 5: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var41.x2[0];
|
|
_dest.x2[1] = var42.x2[0];
|
|
var37.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var41.x2[1];
|
|
_dest.x2[1] = var42.x2[1];
|
|
var37.x2[1] = _dest.i;
|
|
}
|
|
/* 6: storel */
|
|
ptr0[i] = var37;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_pack_YVYU (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union64 *ORC_RESTRICT ptr4;
|
|
orc_union64 var36;
|
|
orc_union32 var37;
|
|
orc_union32 var38;
|
|
orc_union32 var39;
|
|
orc_union16 var40;
|
|
orc_union16 var41;
|
|
orc_union16 var42;
|
|
|
|
ptr0 = (orc_union32 *) ex->arrays[0];
|
|
ptr4 = (orc_union64 *) ex->arrays[4];
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadq */
|
|
var36 = ptr4[i];
|
|
/* 1: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var36.x2[0];
|
|
var38.x2[0] = _src.x2[1];
|
|
var39.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var36.x2[1];
|
|
var38.x2[1] = _src.x2[1];
|
|
var39.x2[1] = _src.x2[0];
|
|
}
|
|
/* 2: select0lw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var38.i;
|
|
var40.i = _src.x2[0];
|
|
}
|
|
/* 3: select1wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var39.x2[0];
|
|
var41.x2[0] = _src.x2[1];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var39.x2[1];
|
|
var41.x2[1] = _src.x2[1];
|
|
}
|
|
/* 4: swapw */
|
|
var42.i = ORC_SWAP_W (var40.i);
|
|
/* 5: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var41.x2[0];
|
|
_dest.x2[1] = var42.x2[0];
|
|
var37.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var41.x2[1];
|
|
_dest.x2[1] = var42.x2[1];
|
|
var37.x2[1] = _dest.i;
|
|
}
|
|
/* 6: storel */
|
|
ptr0[i] = var37;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_pack_YVYU (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
int n)
|
|
{
|
|
OrcExecutor _ex, *ex = &_ex;
|
|
static volatile int p_inited = 0;
|
|
static OrcCode *c = 0;
|
|
void (*func) (OrcExecutor *);
|
|
|
|
if (!p_inited) {
|
|
orc_once_mutex_lock ();
|
|
if (!p_inited) {
|
|
OrcProgram *p;
|
|
|
|
#if 1
|
|
static const orc_uint8 bc[] = {
|
|
1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
|
|
107, 95, 89, 86, 89, 85, 11, 4, 4, 12, 8, 8, 20, 2, 20, 2,
|
|
20, 4, 20, 4, 21, 1, 198, 35, 34, 4, 190, 33, 35, 21, 1, 189,
|
|
32, 34, 183, 33, 33, 21, 1, 196, 0, 32, 33, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_pack_YVYU);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_pack_YVYU");
|
|
orc_program_set_backup_function (p, _backup_video_orc_pack_YVYU);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 8, "s1");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 2, "t2");
|
|
orc_program_add_temporary (p, 4, "t3");
|
|
orc_program_add_temporary (p, 4, "t4");
|
|
|
|
orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T2, ORC_VAR_T4,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T3,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "swapw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
|
|
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_YUV9 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_unpack_YUV9 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n)
|
|
{
|
|
int i;
|
|
orc_union64 *ORC_RESTRICT ptr0;
|
|
const orc_union16 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union16 var37;
|
|
#else
|
|
orc_union16 var37;
|
|
#endif
|
|
orc_union16 var38;
|
|
orc_union64 var39;
|
|
orc_int8 var40;
|
|
orc_int8 var41;
|
|
orc_union16 var42;
|
|
orc_union32 var43;
|
|
orc_union32 var44;
|
|
|
|
ptr0 = (orc_union64 *) d1;
|
|
ptr4 = (orc_union16 *) s1;
|
|
ptr5 = (orc_int8 *) s2;
|
|
ptr6 = (orc_int8 *) s3;
|
|
|
|
/* 4: loadpb */
|
|
var37.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
var37.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadupdb */
|
|
var40 = ptr5[i >> 1];
|
|
/* 1: loadupdb */
|
|
var41 = ptr6[i >> 1];
|
|
/* 2: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var40;
|
|
_dest.x2[1] = var41;
|
|
var42.i = _dest.i;
|
|
}
|
|
/* 3: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var42.i;
|
|
_dest.x2[1] = var42.i;
|
|
var43.i = _dest.i;
|
|
}
|
|
/* 5: loadw */
|
|
var38 = ptr4[i];
|
|
/* 6: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var37.x2[0];
|
|
_dest.x2[1] = var38.x2[0];
|
|
var44.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var37.x2[1];
|
|
_dest.x2[1] = var38.x2[1];
|
|
var44.x2[1] = _dest.i;
|
|
}
|
|
/* 7: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var44.x2[0];
|
|
_dest.x2[1] = var43.x2[0];
|
|
var39.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var44.x2[1];
|
|
_dest.x2[1] = var43.x2[1];
|
|
var39.x2[1] = _dest.i;
|
|
}
|
|
/* 8: storeq */
|
|
ptr0[i] = var39;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_unpack_YUV9 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union64 *ORC_RESTRICT ptr0;
|
|
const orc_union16 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union16 var37;
|
|
#else
|
|
orc_union16 var37;
|
|
#endif
|
|
orc_union16 var38;
|
|
orc_union64 var39;
|
|
orc_int8 var40;
|
|
orc_int8 var41;
|
|
orc_union16 var42;
|
|
orc_union32 var43;
|
|
orc_union32 var44;
|
|
|
|
ptr0 = (orc_union64 *) ex->arrays[0];
|
|
ptr4 = (orc_union16 *) ex->arrays[4];
|
|
ptr5 = (orc_int8 *) ex->arrays[5];
|
|
ptr6 = (orc_int8 *) ex->arrays[6];
|
|
|
|
/* 4: loadpb */
|
|
var37.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
var37.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadupdb */
|
|
var40 = ptr5[i >> 1];
|
|
/* 1: loadupdb */
|
|
var41 = ptr6[i >> 1];
|
|
/* 2: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var40;
|
|
_dest.x2[1] = var41;
|
|
var42.i = _dest.i;
|
|
}
|
|
/* 3: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var42.i;
|
|
_dest.x2[1] = var42.i;
|
|
var43.i = _dest.i;
|
|
}
|
|
/* 5: loadw */
|
|
var38 = ptr4[i];
|
|
/* 6: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var37.x2[0];
|
|
_dest.x2[1] = var38.x2[0];
|
|
var44.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var37.x2[1];
|
|
_dest.x2[1] = var38.x2[1];
|
|
var44.x2[1] = _dest.i;
|
|
}
|
|
/* 7: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var44.x2[0];
|
|
_dest.x2[1] = var43.x2[0];
|
|
var39.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var44.x2[1];
|
|
_dest.x2[1] = var43.x2[1];
|
|
var39.x2[1] = _dest.i;
|
|
}
|
|
/* 8: storeq */
|
|
ptr0[i] = var39;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_unpack_YUV9 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, 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, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
|
|
97, 99, 107, 95, 89, 85, 86, 57, 11, 8, 8, 12, 2, 2, 12, 1,
|
|
1, 12, 1, 1, 14, 1, 255, 0, 0, 0, 20, 2, 20, 4, 20, 4,
|
|
20, 1, 20, 1, 45, 35, 5, 45, 36, 6, 196, 32, 35, 36, 195, 34,
|
|
32, 32, 21, 1, 196, 33, 16, 4, 21, 1, 195, 0, 33, 34, 2, 0,
|
|
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_unpack_YUV9);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_unpack_YUV9");
|
|
orc_program_set_backup_function (p, _backup_video_orc_unpack_YUV9);
|
|
orc_program_add_destination (p, 8, "d1");
|
|
orc_program_add_source (p, 2, "s1");
|
|
orc_program_add_source (p, 1, "s2");
|
|
orc_program_add_source (p, 1, "s3");
|
|
orc_program_add_constant (p, 1, 0x000000ff, "c1");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 4, "t2");
|
|
orc_program_add_temporary (p, 4, "t3");
|
|
orc_program_add_temporary (p, 1, "t4");
|
|
orc_program_add_temporary (p, 1, "t5");
|
|
|
|
orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T4, ORC_VAR_S2,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T5, ORC_VAR_S3,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T4, ORC_VAR_T5,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T3,
|
|
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;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
ex->arrays[ORC_VAR_S3] = (void *) s3;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_unpack_Y42B */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_unpack_Y42B (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n)
|
|
{
|
|
int i;
|
|
orc_union64 *ORC_RESTRICT ptr0;
|
|
const orc_union16 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
orc_int8 var36;
|
|
orc_int8 var37;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union16 var38;
|
|
#else
|
|
orc_union16 var38;
|
|
#endif
|
|
orc_union16 var39;
|
|
orc_union64 var40;
|
|
orc_union16 var41;
|
|
orc_union32 var42;
|
|
orc_union32 var43;
|
|
|
|
ptr0 = (orc_union64 *) d1;
|
|
ptr4 = (orc_union16 *) s1;
|
|
ptr5 = (orc_int8 *) s2;
|
|
ptr6 = (orc_int8 *) s3;
|
|
|
|
/* 3: loadpb */
|
|
var38.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
var38.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var36 = ptr5[i];
|
|
/* 1: loadb */
|
|
var37 = ptr6[i];
|
|
/* 2: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var36;
|
|
_dest.x2[1] = var37;
|
|
var41.i = _dest.i;
|
|
}
|
|
/* 4: loadw */
|
|
var39 = ptr4[i];
|
|
/* 5: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var38.x2[0];
|
|
_dest.x2[1] = var39.x2[0];
|
|
var42.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var38.x2[1];
|
|
_dest.x2[1] = var39.x2[1];
|
|
var42.x2[1] = _dest.i;
|
|
}
|
|
/* 6: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var41.i;
|
|
_dest.x2[1] = var41.i;
|
|
var43.i = _dest.i;
|
|
}
|
|
/* 7: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var42.x2[0];
|
|
_dest.x2[1] = var43.x2[0];
|
|
var40.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var42.x2[1];
|
|
_dest.x2[1] = var43.x2[1];
|
|
var40.x2[1] = _dest.i;
|
|
}
|
|
/* 8: storeq */
|
|
ptr0[i] = var40;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_unpack_Y42B (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union64 *ORC_RESTRICT ptr0;
|
|
const orc_union16 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
orc_int8 var36;
|
|
orc_int8 var37;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union16 var38;
|
|
#else
|
|
orc_union16 var38;
|
|
#endif
|
|
orc_union16 var39;
|
|
orc_union64 var40;
|
|
orc_union16 var41;
|
|
orc_union32 var42;
|
|
orc_union32 var43;
|
|
|
|
ptr0 = (orc_union64 *) ex->arrays[0];
|
|
ptr4 = (orc_union16 *) ex->arrays[4];
|
|
ptr5 = (orc_int8 *) ex->arrays[5];
|
|
ptr6 = (orc_int8 *) ex->arrays[6];
|
|
|
|
/* 3: loadpb */
|
|
var38.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
var38.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var36 = ptr5[i];
|
|
/* 1: loadb */
|
|
var37 = ptr6[i];
|
|
/* 2: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var36;
|
|
_dest.x2[1] = var37;
|
|
var41.i = _dest.i;
|
|
}
|
|
/* 4: loadw */
|
|
var39 = ptr4[i];
|
|
/* 5: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var38.x2[0];
|
|
_dest.x2[1] = var39.x2[0];
|
|
var42.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var38.x2[1];
|
|
_dest.x2[1] = var39.x2[1];
|
|
var42.x2[1] = _dest.i;
|
|
}
|
|
/* 6: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var41.i;
|
|
_dest.x2[1] = var41.i;
|
|
var43.i = _dest.i;
|
|
}
|
|
/* 7: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var42.x2[0];
|
|
_dest.x2[1] = var43.x2[0];
|
|
var40.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var42.x2[1];
|
|
_dest.x2[1] = var43.x2[1];
|
|
var40.x2[1] = _dest.i;
|
|
}
|
|
/* 8: storeq */
|
|
ptr0[i] = var40;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_unpack_Y42B (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, 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, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
|
|
97, 99, 107, 95, 89, 52, 50, 66, 11, 8, 8, 12, 2, 2, 12, 1,
|
|
1, 12, 1, 1, 14, 1, 255, 0, 0, 0, 20, 2, 20, 2, 20, 4,
|
|
20, 4, 196, 32, 5, 6, 21, 1, 196, 35, 16, 4, 195, 34, 32, 32,
|
|
21, 1, 195, 0, 35, 34, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_unpack_Y42B);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_unpack_Y42B");
|
|
orc_program_set_backup_function (p, _backup_video_orc_unpack_Y42B);
|
|
orc_program_add_destination (p, 8, "d1");
|
|
orc_program_add_source (p, 2, "s1");
|
|
orc_program_add_source (p, 1, "s2");
|
|
orc_program_add_source (p, 1, "s3");
|
|
orc_program_add_constant (p, 1, 0x000000ff, "c1");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 2, "t2");
|
|
orc_program_add_temporary (p, 4, "t3");
|
|
orc_program_add_temporary (p, 4, "t4");
|
|
|
|
orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T4, ORC_VAR_C1, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_T3,
|
|
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;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
ex->arrays[ORC_VAR_S3] = (void *) s3;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_pack_Y42B */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_pack_Y42B (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
|
guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n)
|
|
{
|
|
int i;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
orc_int8 *ORC_RESTRICT ptr1;
|
|
orc_int8 *ORC_RESTRICT ptr2;
|
|
const orc_union64 *ORC_RESTRICT ptr4;
|
|
orc_union64 var35;
|
|
orc_int8 var36;
|
|
orc_int8 var37;
|
|
orc_union16 var38;
|
|
orc_union32 var39;
|
|
orc_union32 var40;
|
|
orc_union16 var41;
|
|
|
|
ptr0 = (orc_union16 *) d1;
|
|
ptr1 = (orc_int8 *) d2;
|
|
ptr2 = (orc_int8 *) d3;
|
|
ptr4 = (orc_union64 *) s1;
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadq */
|
|
var35 = ptr4[i];
|
|
/* 1: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var35.x2[0];
|
|
var39.x2[0] = _src.x2[1];
|
|
var40.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var35.x2[1];
|
|
var39.x2[1] = _src.x2[1];
|
|
var40.x2[1] = _src.x2[0];
|
|
}
|
|
/* 2: select0lw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var39.i;
|
|
var41.i = _src.x2[0];
|
|
}
|
|
/* 3: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var41.i;
|
|
var36 = _src.x2[1];
|
|
var37 = _src.x2[0];
|
|
}
|
|
/* 4: storeb */
|
|
ptr2[i] = var36;
|
|
/* 5: storeb */
|
|
ptr1[i] = var37;
|
|
/* 6: select1wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var40.x2[0];
|
|
var38.x2[0] = _src.x2[1];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var40.x2[1];
|
|
var38.x2[1] = _src.x2[1];
|
|
}
|
|
/* 7: storew */
|
|
ptr0[i] = var38;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_pack_Y42B (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
orc_int8 *ORC_RESTRICT ptr1;
|
|
orc_int8 *ORC_RESTRICT ptr2;
|
|
const orc_union64 *ORC_RESTRICT ptr4;
|
|
orc_union64 var35;
|
|
orc_int8 var36;
|
|
orc_int8 var37;
|
|
orc_union16 var38;
|
|
orc_union32 var39;
|
|
orc_union32 var40;
|
|
orc_union16 var41;
|
|
|
|
ptr0 = (orc_union16 *) ex->arrays[0];
|
|
ptr1 = (orc_int8 *) ex->arrays[1];
|
|
ptr2 = (orc_int8 *) ex->arrays[2];
|
|
ptr4 = (orc_union64 *) ex->arrays[4];
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadq */
|
|
var35 = ptr4[i];
|
|
/* 1: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var35.x2[0];
|
|
var39.x2[0] = _src.x2[1];
|
|
var40.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var35.x2[1];
|
|
var39.x2[1] = _src.x2[1];
|
|
var40.x2[1] = _src.x2[0];
|
|
}
|
|
/* 2: select0lw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var39.i;
|
|
var41.i = _src.x2[0];
|
|
}
|
|
/* 3: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var41.i;
|
|
var36 = _src.x2[1];
|
|
var37 = _src.x2[0];
|
|
}
|
|
/* 4: storeb */
|
|
ptr2[i] = var36;
|
|
/* 5: storeb */
|
|
ptr1[i] = var37;
|
|
/* 6: select1wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var40.x2[0];
|
|
var38.x2[0] = _src.x2[1];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var40.x2[1];
|
|
var38.x2[1] = _src.x2[1];
|
|
}
|
|
/* 7: storew */
|
|
ptr0[i] = var38;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_pack_Y42B (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
|
guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n)
|
|
{
|
|
OrcExecutor _ex, *ex = &_ex;
|
|
static volatile int p_inited = 0;
|
|
static OrcCode *c = 0;
|
|
void (*func) (OrcExecutor *);
|
|
|
|
if (!p_inited) {
|
|
orc_once_mutex_lock ();
|
|
if (!p_inited) {
|
|
OrcProgram *p;
|
|
|
|
#if 1
|
|
static const orc_uint8 bc[] = {
|
|
1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
|
|
107, 95, 89, 52, 50, 66, 11, 2, 2, 11, 1, 1, 11, 1, 1, 12,
|
|
8, 8, 20, 4, 20, 4, 20, 2, 21, 1, 198, 33, 32, 4, 190, 34,
|
|
33, 199, 2, 1, 34, 21, 1, 189, 0, 32, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_pack_Y42B);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_pack_Y42B");
|
|
orc_program_set_backup_function (p, _backup_video_orc_pack_Y42B);
|
|
orc_program_add_destination (p, 2, "d1");
|
|
orc_program_add_destination (p, 1, "d2");
|
|
orc_program_add_destination (p, 1, "d3");
|
|
orc_program_add_source (p, 8, "s1");
|
|
orc_program_add_temporary (p, 4, "t1");
|
|
orc_program_add_temporary (p, 4, "t2");
|
|
orc_program_add_temporary (p, 2, "t3");
|
|
|
|
orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T3, ORC_VAR_T2,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T3,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
|
|
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_D2] = d2;
|
|
ex->arrays[ORC_VAR_D3] = d3;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_unpack_Y444 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_unpack_Y444 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, int n)
|
|
{
|
|
int i;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
orc_int8 var34;
|
|
orc_int8 var35;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_int8 var36;
|
|
#else
|
|
orc_int8 var36;
|
|
#endif
|
|
orc_int8 var37;
|
|
orc_union32 var38;
|
|
orc_union16 var39;
|
|
orc_union16 var40;
|
|
|
|
ptr0 = (orc_union32 *) d1;
|
|
ptr4 = (orc_int8 *) s1;
|
|
ptr5 = (orc_int8 *) s2;
|
|
ptr6 = (orc_int8 *) s3;
|
|
|
|
/* 3: loadpb */
|
|
var36 = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var34 = ptr5[i];
|
|
/* 1: loadb */
|
|
var35 = ptr6[i];
|
|
/* 2: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var34;
|
|
_dest.x2[1] = var35;
|
|
var39.i = _dest.i;
|
|
}
|
|
/* 4: loadb */
|
|
var37 = ptr4[i];
|
|
/* 5: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var36;
|
|
_dest.x2[1] = var37;
|
|
var40.i = _dest.i;
|
|
}
|
|
/* 6: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var40.i;
|
|
_dest.x2[1] = var39.i;
|
|
var38.i = _dest.i;
|
|
}
|
|
/* 7: storel */
|
|
ptr0[i] = var38;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_unpack_Y444 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
orc_int8 var34;
|
|
orc_int8 var35;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_int8 var36;
|
|
#else
|
|
orc_int8 var36;
|
|
#endif
|
|
orc_int8 var37;
|
|
orc_union32 var38;
|
|
orc_union16 var39;
|
|
orc_union16 var40;
|
|
|
|
ptr0 = (orc_union32 *) ex->arrays[0];
|
|
ptr4 = (orc_int8 *) ex->arrays[4];
|
|
ptr5 = (orc_int8 *) ex->arrays[5];
|
|
ptr6 = (orc_int8 *) ex->arrays[6];
|
|
|
|
/* 3: loadpb */
|
|
var36 = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var34 = ptr5[i];
|
|
/* 1: loadb */
|
|
var35 = ptr6[i];
|
|
/* 2: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var34;
|
|
_dest.x2[1] = var35;
|
|
var39.i = _dest.i;
|
|
}
|
|
/* 4: loadb */
|
|
var37 = ptr4[i];
|
|
/* 5: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var36;
|
|
_dest.x2[1] = var37;
|
|
var40.i = _dest.i;
|
|
}
|
|
/* 6: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var40.i;
|
|
_dest.x2[1] = var39.i;
|
|
var38.i = _dest.i;
|
|
}
|
|
/* 7: storel */
|
|
ptr0[i] = var38;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_unpack_Y444 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, 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, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
|
|
97, 99, 107, 95, 89, 52, 52, 52, 11, 4, 4, 12, 1, 1, 12, 1,
|
|
1, 12, 1, 1, 14, 1, 255, 0, 0, 0, 20, 2, 20, 2, 196, 32,
|
|
5, 6, 196, 33, 16, 4, 195, 0, 33, 32, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_unpack_Y444);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_unpack_Y444");
|
|
orc_program_set_backup_function (p, _backup_video_orc_unpack_Y444);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 1, "s1");
|
|
orc_program_add_source (p, 1, "s2");
|
|
orc_program_add_source (p, 1, "s3");
|
|
orc_program_add_constant (p, 1, 0x000000ff, "c1");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 2, "t2");
|
|
|
|
orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
#endif
|
|
|
|
orc_program_compile (p);
|
|
c = orc_program_take_code (p);
|
|
orc_program_free (p);
|
|
}
|
|
p_inited = TRUE;
|
|
orc_once_mutex_unlock ();
|
|
}
|
|
ex->arrays[ORC_VAR_A2] = c;
|
|
ex->program = 0;
|
|
|
|
ex->n = n;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
ex->arrays[ORC_VAR_S3] = (void *) s3;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_pack_Y444 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_pack_Y444 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
|
guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n)
|
|
{
|
|
int i;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
orc_int8 *ORC_RESTRICT ptr1;
|
|
orc_int8 *ORC_RESTRICT ptr2;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var34;
|
|
orc_int8 var35;
|
|
orc_int8 var36;
|
|
orc_int8 var37;
|
|
orc_union16 var38;
|
|
orc_union16 var39;
|
|
|
|
ptr0 = (orc_int8 *) d1;
|
|
ptr1 = (orc_int8 *) d2;
|
|
ptr2 = (orc_int8 *) d3;
|
|
ptr4 = (orc_union32 *) s1;
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var34 = ptr4[i];
|
|
/* 1: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var34.i;
|
|
var38.i = _src.x2[1];
|
|
var39.i = _src.x2[0];
|
|
}
|
|
/* 2: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var38.i;
|
|
var35 = _src.x2[1];
|
|
var36 = _src.x2[0];
|
|
}
|
|
/* 3: storeb */
|
|
ptr2[i] = var35;
|
|
/* 4: storeb */
|
|
ptr1[i] = var36;
|
|
/* 5: select1wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var39.i;
|
|
var37 = _src.x2[1];
|
|
}
|
|
/* 6: storeb */
|
|
ptr0[i] = var37;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_pack_Y444 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
orc_int8 *ORC_RESTRICT ptr1;
|
|
orc_int8 *ORC_RESTRICT ptr2;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var34;
|
|
orc_int8 var35;
|
|
orc_int8 var36;
|
|
orc_int8 var37;
|
|
orc_union16 var38;
|
|
orc_union16 var39;
|
|
|
|
ptr0 = (orc_int8 *) ex->arrays[0];
|
|
ptr1 = (orc_int8 *) ex->arrays[1];
|
|
ptr2 = (orc_int8 *) ex->arrays[2];
|
|
ptr4 = (orc_union32 *) ex->arrays[4];
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var34 = ptr4[i];
|
|
/* 1: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var34.i;
|
|
var38.i = _src.x2[1];
|
|
var39.i = _src.x2[0];
|
|
}
|
|
/* 2: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var38.i;
|
|
var35 = _src.x2[1];
|
|
var36 = _src.x2[0];
|
|
}
|
|
/* 3: storeb */
|
|
ptr2[i] = var35;
|
|
/* 4: storeb */
|
|
ptr1[i] = var36;
|
|
/* 5: select1wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var39.i;
|
|
var37 = _src.x2[1];
|
|
}
|
|
/* 6: storeb */
|
|
ptr0[i] = var37;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_pack_Y444 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
|
guint8 * ORC_RESTRICT d3, const guint8 * ORC_RESTRICT s1, int n)
|
|
{
|
|
OrcExecutor _ex, *ex = &_ex;
|
|
static volatile int p_inited = 0;
|
|
static OrcCode *c = 0;
|
|
void (*func) (OrcExecutor *);
|
|
|
|
if (!p_inited) {
|
|
orc_once_mutex_lock ();
|
|
if (!p_inited) {
|
|
OrcProgram *p;
|
|
|
|
#if 1
|
|
static const orc_uint8 bc[] = {
|
|
1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
|
|
107, 95, 89, 52, 52, 52, 11, 1, 1, 11, 1, 1, 11, 1, 1, 12,
|
|
4, 4, 20, 2, 20, 2, 198, 33, 32, 4, 199, 2, 1, 33, 189, 0,
|
|
32, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_pack_Y444);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_pack_Y444");
|
|
orc_program_set_backup_function (p, _backup_video_orc_pack_Y444);
|
|
orc_program_add_destination (p, 1, "d1");
|
|
orc_program_add_destination (p, 1, "d2");
|
|
orc_program_add_destination (p, 1, "d3");
|
|
orc_program_add_source (p, 4, "s1");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 2, "t2");
|
|
|
|
orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1,
|
|
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_D2] = d2;
|
|
ex->arrays[ORC_VAR_D3] = d3;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_unpack_GRAY8 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_unpack_GRAY8 (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int n)
|
|
{
|
|
int i;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_int8 var33;
|
|
#else
|
|
orc_int8 var33;
|
|
#endif
|
|
orc_int8 var34;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union16 var35;
|
|
#else
|
|
orc_union16 var35;
|
|
#endif
|
|
orc_union32 var36;
|
|
orc_union16 var37;
|
|
|
|
ptr0 = (orc_union32 *) d1;
|
|
ptr4 = (orc_int8 *) s1;
|
|
|
|
/* 0: loadpb */
|
|
var33 = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
/* 3: loadpw */
|
|
var35.i = (int) 0x00008080; /* 32896 or 1.62528e-319f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 1: loadb */
|
|
var34 = ptr4[i];
|
|
/* 2: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var33;
|
|
_dest.x2[1] = var34;
|
|
var37.i = _dest.i;
|
|
}
|
|
/* 4: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var37.i;
|
|
_dest.x2[1] = var35.i;
|
|
var36.i = _dest.i;
|
|
}
|
|
/* 5: storel */
|
|
ptr0[i] = var36;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_unpack_GRAY8 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_int8 var33;
|
|
#else
|
|
orc_int8 var33;
|
|
#endif
|
|
orc_int8 var34;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union16 var35;
|
|
#else
|
|
orc_union16 var35;
|
|
#endif
|
|
orc_union32 var36;
|
|
orc_union16 var37;
|
|
|
|
ptr0 = (orc_union32 *) ex->arrays[0];
|
|
ptr4 = (orc_int8 *) ex->arrays[4];
|
|
|
|
/* 0: loadpb */
|
|
var33 = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
/* 3: loadpw */
|
|
var35.i = (int) 0x00008080; /* 32896 or 1.62528e-319f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 1: loadb */
|
|
var34 = ptr4[i];
|
|
/* 2: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var33;
|
|
_dest.x2[1] = var34;
|
|
var37.i = _dest.i;
|
|
}
|
|
/* 4: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var37.i;
|
|
_dest.x2[1] = var35.i;
|
|
var36.i = _dest.i;
|
|
}
|
|
/* 5: storel */
|
|
ptr0[i] = var36;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_unpack_GRAY8 (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int n)
|
|
{
|
|
OrcExecutor _ex, *ex = &_ex;
|
|
static volatile int p_inited = 0;
|
|
static OrcCode *c = 0;
|
|
void (*func) (OrcExecutor *);
|
|
|
|
if (!p_inited) {
|
|
orc_once_mutex_lock ();
|
|
if (!p_inited) {
|
|
OrcProgram *p;
|
|
|
|
#if 1
|
|
static const orc_uint8 bc[] = {
|
|
1, 9, 22, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
|
|
97, 99, 107, 95, 71, 82, 65, 89, 56, 11, 4, 4, 12, 1, 1, 14,
|
|
1, 255, 0, 0, 0, 14, 2, 128, 128, 0, 0, 20, 2, 196, 32, 16,
|
|
4, 195, 0, 32, 17, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_unpack_GRAY8);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_unpack_GRAY8");
|
|
orc_program_set_backup_function (p, _backup_video_orc_unpack_GRAY8);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 1, "s1");
|
|
orc_program_add_constant (p, 1, 0x000000ff, "c1");
|
|
orc_program_add_constant (p, 2, 0x00008080, "c2");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
|
|
orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_C2,
|
|
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_GRAY8 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_pack_GRAY8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
int n)
|
|
{
|
|
int i;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var33;
|
|
orc_int8 var34;
|
|
orc_union16 var35;
|
|
|
|
ptr0 = (orc_int8 *) d1;
|
|
ptr4 = (orc_union32 *) s1;
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var33 = ptr4[i];
|
|
/* 1: select0lw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var33.i;
|
|
var35.i = _src.x2[0];
|
|
}
|
|
/* 2: select1wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var35.i;
|
|
var34 = _src.x2[1];
|
|
}
|
|
/* 3: storeb */
|
|
ptr0[i] = var34;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_pack_GRAY8 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var33;
|
|
orc_int8 var34;
|
|
orc_union16 var35;
|
|
|
|
ptr0 = (orc_int8 *) ex->arrays[0];
|
|
ptr4 = (orc_union32 *) ex->arrays[4];
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var33 = ptr4[i];
|
|
/* 1: select0lw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var33.i;
|
|
var35.i = _src.x2[0];
|
|
}
|
|
/* 2: select1wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var35.i;
|
|
var34 = _src.x2[1];
|
|
}
|
|
/* 3: storeb */
|
|
ptr0[i] = var34;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_pack_GRAY8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
int n)
|
|
{
|
|
OrcExecutor _ex, *ex = &_ex;
|
|
static volatile int p_inited = 0;
|
|
static OrcCode *c = 0;
|
|
void (*func) (OrcExecutor *);
|
|
|
|
if (!p_inited) {
|
|
orc_once_mutex_lock ();
|
|
if (!p_inited) {
|
|
OrcProgram *p;
|
|
|
|
#if 1
|
|
static const orc_uint8 bc[] = {
|
|
1, 9, 20, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
|
|
107, 95, 71, 82, 65, 89, 56, 11, 1, 1, 12, 4, 4, 20, 2, 190,
|
|
32, 4, 189, 0, 32, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_pack_GRAY8);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_pack_GRAY8");
|
|
orc_program_set_backup_function (p, _backup_video_orc_pack_GRAY8);
|
|
orc_program_add_destination (p, 1, "d1");
|
|
orc_program_add_source (p, 4, "s1");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
|
|
orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_S1,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1,
|
|
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_BGRA */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_unpack_BGRA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
int n)
|
|
{
|
|
int i;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var32;
|
|
orc_union32 var33;
|
|
|
|
ptr0 = (orc_union32 *) d1;
|
|
ptr4 = (orc_union32 *) s1;
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var32 = ptr4[i];
|
|
/* 1: swapl */
|
|
var33.i = ORC_SWAP_L (var32.i);
|
|
/* 2: storel */
|
|
ptr0[i] = var33;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_unpack_BGRA (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var32;
|
|
orc_union32 var33;
|
|
|
|
ptr0 = (orc_union32 *) ex->arrays[0];
|
|
ptr4 = (orc_union32 *) ex->arrays[4];
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var32 = ptr4[i];
|
|
/* 1: swapl */
|
|
var33.i = ORC_SWAP_L (var32.i);
|
|
/* 2: storel */
|
|
ptr0[i] = var33;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_unpack_BGRA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
int n)
|
|
{
|
|
OrcExecutor _ex, *ex = &_ex;
|
|
static volatile int p_inited = 0;
|
|
static OrcCode *c = 0;
|
|
void (*func) (OrcExecutor *);
|
|
|
|
if (!p_inited) {
|
|
orc_once_mutex_lock ();
|
|
if (!p_inited) {
|
|
OrcProgram *p;
|
|
|
|
#if 1
|
|
static const orc_uint8 bc[] = {
|
|
1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
|
|
97, 99, 107, 95, 66, 71, 82, 65, 11, 4, 4, 12, 4, 4, 184, 0,
|
|
4, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_unpack_BGRA);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_unpack_BGRA");
|
|
orc_program_set_backup_function (p, _backup_video_orc_unpack_BGRA);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 4, "s1");
|
|
|
|
orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_S1, 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_BGRA */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_pack_BGRA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
int n)
|
|
{
|
|
int i;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var32;
|
|
orc_union32 var33;
|
|
|
|
ptr0 = (orc_union32 *) d1;
|
|
ptr4 = (orc_union32 *) s1;
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var32 = ptr4[i];
|
|
/* 1: swapl */
|
|
var33.i = ORC_SWAP_L (var32.i);
|
|
/* 2: storel */
|
|
ptr0[i] = var33;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_pack_BGRA (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var32;
|
|
orc_union32 var33;
|
|
|
|
ptr0 = (orc_union32 *) ex->arrays[0];
|
|
ptr4 = (orc_union32 *) ex->arrays[4];
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var32 = ptr4[i];
|
|
/* 1: swapl */
|
|
var33.i = ORC_SWAP_L (var32.i);
|
|
/* 2: storel */
|
|
ptr0[i] = var33;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_pack_BGRA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
int n)
|
|
{
|
|
OrcExecutor _ex, *ex = &_ex;
|
|
static volatile int p_inited = 0;
|
|
static OrcCode *c = 0;
|
|
void (*func) (OrcExecutor *);
|
|
|
|
if (!p_inited) {
|
|
orc_once_mutex_lock ();
|
|
if (!p_inited) {
|
|
OrcProgram *p;
|
|
|
|
#if 1
|
|
static const orc_uint8 bc[] = {
|
|
1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
|
|
107, 95, 66, 71, 82, 65, 11, 4, 4, 12, 4, 4, 184, 0, 4, 2,
|
|
0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_pack_BGRA);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_pack_BGRA");
|
|
orc_program_set_backup_function (p, _backup_video_orc_pack_BGRA);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 4, "s1");
|
|
|
|
orc_program_append_2 (p, "swapl", 0, ORC_VAR_D1, ORC_VAR_S1, 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_RGBA */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_pack_RGBA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
int n)
|
|
{
|
|
int i;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var34;
|
|
orc_union32 var35;
|
|
orc_union32 var36;
|
|
orc_union32 var37;
|
|
|
|
ptr0 = (orc_union32 *) d1;
|
|
ptr4 = (orc_union32 *) s1;
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var35 = ptr4[i];
|
|
/* 1: shrul */
|
|
var36.i = ((orc_uint32) var35.i) >> 8;
|
|
/* 2: shll */
|
|
var37.i = ((orc_uint32) var35.i) << 24;
|
|
/* 3: orl */
|
|
var34.i = var37.i | var36.i;
|
|
/* 4: storel */
|
|
ptr0[i] = var34;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_pack_RGBA (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var34;
|
|
orc_union32 var35;
|
|
orc_union32 var36;
|
|
orc_union32 var37;
|
|
|
|
ptr0 = (orc_union32 *) ex->arrays[0];
|
|
ptr4 = (orc_union32 *) ex->arrays[4];
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var35 = ptr4[i];
|
|
/* 1: shrul */
|
|
var36.i = ((orc_uint32) var35.i) >> 8;
|
|
/* 2: shll */
|
|
var37.i = ((orc_uint32) var35.i) << 24;
|
|
/* 3: orl */
|
|
var34.i = var37.i | var36.i;
|
|
/* 4: storel */
|
|
ptr0[i] = var34;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_pack_RGBA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
int n)
|
|
{
|
|
OrcExecutor _ex, *ex = &_ex;
|
|
static volatile int p_inited = 0;
|
|
static OrcCode *c = 0;
|
|
void (*func) (OrcExecutor *);
|
|
|
|
if (!p_inited) {
|
|
orc_once_mutex_lock ();
|
|
if (!p_inited) {
|
|
OrcProgram *p;
|
|
|
|
#if 1
|
|
static const orc_uint8 bc[] = {
|
|
1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
|
|
107, 95, 82, 71, 66, 65, 11, 4, 4, 12, 4, 4, 14, 4, 8, 0,
|
|
0, 0, 14, 4, 24, 0, 0, 0, 20, 4, 20, 4, 113, 33, 4, 126,
|
|
32, 33, 16, 124, 33, 33, 17, 123, 0, 33, 32, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_pack_RGBA);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_pack_RGBA");
|
|
orc_program_set_backup_function (p, _backup_video_orc_pack_RGBA);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 4, "s1");
|
|
orc_program_add_constant (p, 4, 0x00000008, "c1");
|
|
orc_program_add_constant (p, 4, 0x00000018, "c2");
|
|
orc_program_add_temporary (p, 4, "t1");
|
|
orc_program_add_temporary (p, 4, "t2");
|
|
|
|
orc_program_append_2 (p, "loadl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "shrul", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_C1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "shll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
#endif
|
|
|
|
orc_program_compile (p);
|
|
c = orc_program_take_code (p);
|
|
orc_program_free (p);
|
|
}
|
|
p_inited = TRUE;
|
|
orc_once_mutex_unlock ();
|
|
}
|
|
ex->arrays[ORC_VAR_A2] = c;
|
|
ex->program = 0;
|
|
|
|
ex->n = n;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_unpack_RGBA */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_unpack_RGBA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
int n)
|
|
{
|
|
int i;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var34;
|
|
orc_union32 var35;
|
|
orc_union32 var36;
|
|
orc_union32 var37;
|
|
|
|
ptr0 = (orc_union32 *) d1;
|
|
ptr4 = (orc_union32 *) s1;
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var35 = ptr4[i];
|
|
/* 1: shll */
|
|
var36.i = ((orc_uint32) var35.i) << 8;
|
|
/* 2: shrul */
|
|
var37.i = ((orc_uint32) var35.i) >> 24;
|
|
/* 3: orl */
|
|
var34.i = var37.i | var36.i;
|
|
/* 4: storel */
|
|
ptr0[i] = var34;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_unpack_RGBA (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var34;
|
|
orc_union32 var35;
|
|
orc_union32 var36;
|
|
orc_union32 var37;
|
|
|
|
ptr0 = (orc_union32 *) ex->arrays[0];
|
|
ptr4 = (orc_union32 *) ex->arrays[4];
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var35 = ptr4[i];
|
|
/* 1: shll */
|
|
var36.i = ((orc_uint32) var35.i) << 8;
|
|
/* 2: shrul */
|
|
var37.i = ((orc_uint32) var35.i) >> 24;
|
|
/* 3: orl */
|
|
var34.i = var37.i | var36.i;
|
|
/* 4: storel */
|
|
ptr0[i] = var34;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_unpack_RGBA (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
int n)
|
|
{
|
|
OrcExecutor _ex, *ex = &_ex;
|
|
static volatile int p_inited = 0;
|
|
static OrcCode *c = 0;
|
|
void (*func) (OrcExecutor *);
|
|
|
|
if (!p_inited) {
|
|
orc_once_mutex_lock ();
|
|
if (!p_inited) {
|
|
OrcProgram *p;
|
|
|
|
#if 1
|
|
static const orc_uint8 bc[] = {
|
|
1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
|
|
97, 99, 107, 95, 82, 71, 66, 65, 11, 4, 4, 12, 4, 4, 14, 4,
|
|
8, 0, 0, 0, 14, 4, 24, 0, 0, 0, 20, 4, 20, 4, 113, 33,
|
|
4, 124, 32, 33, 16, 126, 33, 33, 17, 123, 0, 33, 32, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_unpack_RGBA);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_unpack_RGBA");
|
|
orc_program_set_backup_function (p, _backup_video_orc_unpack_RGBA);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 4, "s1");
|
|
orc_program_add_constant (p, 4, 0x00000008, "c1");
|
|
orc_program_add_constant (p, 4, 0x00000018, "c2");
|
|
orc_program_add_temporary (p, 4, "t1");
|
|
orc_program_add_temporary (p, 4, "t2");
|
|
|
|
orc_program_append_2 (p, "loadl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_C1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
#endif
|
|
|
|
orc_program_compile (p);
|
|
c = orc_program_take_code (p);
|
|
orc_program_free (p);
|
|
}
|
|
p_inited = TRUE;
|
|
orc_once_mutex_unlock ();
|
|
}
|
|
ex->arrays[ORC_VAR_A2] = c;
|
|
ex->program = 0;
|
|
|
|
ex->n = n;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_unpack_ABGR */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_unpack_ABGR (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
int n)
|
|
{
|
|
int i;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var34;
|
|
orc_union32 var35;
|
|
orc_union32 var36;
|
|
orc_union32 var37;
|
|
orc_union32 var38;
|
|
|
|
ptr0 = (orc_union32 *) d1;
|
|
ptr4 = (orc_union32 *) s1;
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var34 = ptr4[i];
|
|
/* 1: swapl */
|
|
var36.i = ORC_SWAP_L (var34.i);
|
|
/* 2: shll */
|
|
var37.i = ((orc_uint32) var36.i) << 8;
|
|
/* 3: shrul */
|
|
var38.i = ((orc_uint32) var36.i) >> 24;
|
|
/* 4: orl */
|
|
var35.i = var38.i | var37.i;
|
|
/* 5: storel */
|
|
ptr0[i] = var35;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_unpack_ABGR (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var34;
|
|
orc_union32 var35;
|
|
orc_union32 var36;
|
|
orc_union32 var37;
|
|
orc_union32 var38;
|
|
|
|
ptr0 = (orc_union32 *) ex->arrays[0];
|
|
ptr4 = (orc_union32 *) ex->arrays[4];
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var34 = ptr4[i];
|
|
/* 1: swapl */
|
|
var36.i = ORC_SWAP_L (var34.i);
|
|
/* 2: shll */
|
|
var37.i = ((orc_uint32) var36.i) << 8;
|
|
/* 3: shrul */
|
|
var38.i = ((orc_uint32) var36.i) >> 24;
|
|
/* 4: orl */
|
|
var35.i = var38.i | var37.i;
|
|
/* 5: storel */
|
|
ptr0[i] = var35;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_unpack_ABGR (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
int n)
|
|
{
|
|
OrcExecutor _ex, *ex = &_ex;
|
|
static volatile int p_inited = 0;
|
|
static OrcCode *c = 0;
|
|
void (*func) (OrcExecutor *);
|
|
|
|
if (!p_inited) {
|
|
orc_once_mutex_lock ();
|
|
if (!p_inited) {
|
|
OrcProgram *p;
|
|
|
|
#if 1
|
|
static const orc_uint8 bc[] = {
|
|
1, 9, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
|
|
97, 99, 107, 95, 65, 66, 71, 82, 11, 4, 4, 12, 4, 4, 14, 4,
|
|
8, 0, 0, 0, 14, 4, 24, 0, 0, 0, 20, 4, 20, 4, 184, 33,
|
|
4, 124, 32, 33, 16, 126, 33, 33, 17, 123, 0, 33, 32, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_unpack_ABGR);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_unpack_ABGR");
|
|
orc_program_set_backup_function (p, _backup_video_orc_unpack_ABGR);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 4, "s1");
|
|
orc_program_add_constant (p, 4, 0x00000008, "c1");
|
|
orc_program_add_constant (p, 4, 0x00000018, "c2");
|
|
orc_program_add_temporary (p, 4, "t1");
|
|
orc_program_add_temporary (p, 4, "t2");
|
|
|
|
orc_program_append_2 (p, "swapl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_C1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
#endif
|
|
|
|
orc_program_compile (p);
|
|
c = orc_program_take_code (p);
|
|
orc_program_free (p);
|
|
}
|
|
p_inited = TRUE;
|
|
orc_once_mutex_unlock ();
|
|
}
|
|
ex->arrays[ORC_VAR_A2] = c;
|
|
ex->program = 0;
|
|
|
|
ex->n = n;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_pack_ABGR */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_pack_ABGR (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
int n)
|
|
{
|
|
int i;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var34;
|
|
orc_union32 var35;
|
|
orc_union32 var36;
|
|
orc_union32 var37;
|
|
orc_union32 var38;
|
|
|
|
ptr0 = (orc_union32 *) d1;
|
|
ptr4 = (orc_union32 *) s1;
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var34 = ptr4[i];
|
|
/* 1: swapl */
|
|
var36.i = ORC_SWAP_L (var34.i);
|
|
/* 2: shll */
|
|
var37.i = ((orc_uint32) var36.i) << 8;
|
|
/* 3: shrul */
|
|
var38.i = ((orc_uint32) var36.i) >> 24;
|
|
/* 4: orl */
|
|
var35.i = var38.i | var37.i;
|
|
/* 5: storel */
|
|
ptr0[i] = var35;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_pack_ABGR (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var34;
|
|
orc_union32 var35;
|
|
orc_union32 var36;
|
|
orc_union32 var37;
|
|
orc_union32 var38;
|
|
|
|
ptr0 = (orc_union32 *) ex->arrays[0];
|
|
ptr4 = (orc_union32 *) ex->arrays[4];
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var34 = ptr4[i];
|
|
/* 1: swapl */
|
|
var36.i = ORC_SWAP_L (var34.i);
|
|
/* 2: shll */
|
|
var37.i = ((orc_uint32) var36.i) << 8;
|
|
/* 3: shrul */
|
|
var38.i = ((orc_uint32) var36.i) >> 24;
|
|
/* 4: orl */
|
|
var35.i = var38.i | var37.i;
|
|
/* 5: storel */
|
|
ptr0[i] = var35;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_pack_ABGR (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
int n)
|
|
{
|
|
OrcExecutor _ex, *ex = &_ex;
|
|
static volatile int p_inited = 0;
|
|
static OrcCode *c = 0;
|
|
void (*func) (OrcExecutor *);
|
|
|
|
if (!p_inited) {
|
|
orc_once_mutex_lock ();
|
|
if (!p_inited) {
|
|
OrcProgram *p;
|
|
|
|
#if 1
|
|
static const orc_uint8 bc[] = {
|
|
1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
|
|
107, 95, 65, 66, 71, 82, 11, 4, 4, 12, 4, 4, 14, 4, 8, 0,
|
|
0, 0, 14, 4, 24, 0, 0, 0, 20, 4, 20, 4, 184, 33, 4, 124,
|
|
32, 33, 16, 126, 33, 33, 17, 123, 0, 33, 32, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_pack_ABGR);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_pack_ABGR");
|
|
orc_program_set_backup_function (p, _backup_video_orc_pack_ABGR);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 4, "s1");
|
|
orc_program_add_constant (p, 4, 0x00000008, "c1");
|
|
orc_program_add_constant (p, 4, 0x00000018, "c2");
|
|
orc_program_add_temporary (p, 4, "t1");
|
|
orc_program_add_temporary (p, 4, "t2");
|
|
|
|
orc_program_append_2 (p, "swapl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "shll", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_C1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "shrul", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "orl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
#endif
|
|
|
|
orc_program_compile (p);
|
|
c = orc_program_take_code (p);
|
|
orc_program_free (p);
|
|
}
|
|
p_inited = TRUE;
|
|
orc_once_mutex_unlock ();
|
|
}
|
|
ex->arrays[ORC_VAR_A2] = c;
|
|
ex->program = 0;
|
|
|
|
ex->n = n;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_unpack_NV12 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_unpack_NV12 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
const guint8 * ORC_RESTRICT s2, int n)
|
|
{
|
|
int i;
|
|
orc_union64 *ORC_RESTRICT ptr0;
|
|
const orc_union16 *ORC_RESTRICT ptr4;
|
|
const orc_union16 *ORC_RESTRICT ptr5;
|
|
orc_union16 var34;
|
|
orc_union16 var35;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union16 var36;
|
|
#else
|
|
orc_union16 var36;
|
|
#endif
|
|
orc_union16 var37;
|
|
orc_union64 var38;
|
|
orc_union32 var39;
|
|
orc_union32 var40;
|
|
|
|
ptr0 = (orc_union64 *) d1;
|
|
ptr4 = (orc_union16 *) s1;
|
|
ptr5 = (orc_union16 *) s2;
|
|
|
|
/* 3: loadpb */
|
|
var36.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
var36.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadw */
|
|
var34 = ptr5[i];
|
|
/* 1: loadw */
|
|
var35 = ptr5[i];
|
|
/* 2: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var34.i;
|
|
_dest.x2[1] = var35.i;
|
|
var39.i = _dest.i;
|
|
}
|
|
/* 4: loadw */
|
|
var37 = ptr4[i];
|
|
/* 5: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var36.x2[0];
|
|
_dest.x2[1] = var37.x2[0];
|
|
var40.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var36.x2[1];
|
|
_dest.x2[1] = var37.x2[1];
|
|
var40.x2[1] = _dest.i;
|
|
}
|
|
/* 6: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var40.x2[0];
|
|
_dest.x2[1] = var39.x2[0];
|
|
var38.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var40.x2[1];
|
|
_dest.x2[1] = var39.x2[1];
|
|
var38.x2[1] = _dest.i;
|
|
}
|
|
/* 7: storeq */
|
|
ptr0[i] = var38;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_unpack_NV12 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union64 *ORC_RESTRICT ptr0;
|
|
const orc_union16 *ORC_RESTRICT ptr4;
|
|
const orc_union16 *ORC_RESTRICT ptr5;
|
|
orc_union16 var34;
|
|
orc_union16 var35;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union16 var36;
|
|
#else
|
|
orc_union16 var36;
|
|
#endif
|
|
orc_union16 var37;
|
|
orc_union64 var38;
|
|
orc_union32 var39;
|
|
orc_union32 var40;
|
|
|
|
ptr0 = (orc_union64 *) ex->arrays[0];
|
|
ptr4 = (orc_union16 *) ex->arrays[4];
|
|
ptr5 = (orc_union16 *) ex->arrays[5];
|
|
|
|
/* 3: loadpb */
|
|
var36.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
var36.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadw */
|
|
var34 = ptr5[i];
|
|
/* 1: loadw */
|
|
var35 = ptr5[i];
|
|
/* 2: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var34.i;
|
|
_dest.x2[1] = var35.i;
|
|
var39.i = _dest.i;
|
|
}
|
|
/* 4: loadw */
|
|
var37 = ptr4[i];
|
|
/* 5: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var36.x2[0];
|
|
_dest.x2[1] = var37.x2[0];
|
|
var40.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var36.x2[1];
|
|
_dest.x2[1] = var37.x2[1];
|
|
var40.x2[1] = _dest.i;
|
|
}
|
|
/* 6: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var40.x2[0];
|
|
_dest.x2[1] = var39.x2[0];
|
|
var38.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var40.x2[1];
|
|
_dest.x2[1] = var39.x2[1];
|
|
var38.x2[1] = _dest.i;
|
|
}
|
|
/* 7: storeq */
|
|
ptr0[i] = var38;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_unpack_NV12 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
const guint8 * ORC_RESTRICT s2, 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, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
|
|
97, 99, 107, 95, 78, 86, 49, 50, 11, 8, 8, 12, 2, 2, 12, 2,
|
|
2, 14, 1, 255, 0, 0, 0, 20, 4, 20, 4, 195, 33, 5, 5, 21,
|
|
1, 196, 32, 16, 4, 21, 1, 195, 0, 32, 33, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_unpack_NV12);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_unpack_NV12");
|
|
orc_program_set_backup_function (p, _backup_video_orc_unpack_NV12);
|
|
orc_program_add_destination (p, 8, "d1");
|
|
orc_program_add_source (p, 2, "s1");
|
|
orc_program_add_source (p, 2, "s2");
|
|
orc_program_add_constant (p, 1, 0x000000ff, "c1");
|
|
orc_program_add_temporary (p, 4, "t1");
|
|
orc_program_add_temporary (p, 4, "t2");
|
|
|
|
orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
|
|
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;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_pack_NV12 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_pack_NV12 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
|
const guint8 * ORC_RESTRICT s1, int n)
|
|
{
|
|
int i;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
orc_union16 *ORC_RESTRICT ptr1;
|
|
const orc_union64 *ORC_RESTRICT ptr4;
|
|
orc_union64 var34;
|
|
orc_union16 var35;
|
|
orc_union16 var36;
|
|
orc_union32 var37;
|
|
orc_union32 var38;
|
|
|
|
ptr0 = (orc_union16 *) d1;
|
|
ptr1 = (orc_union16 *) d2;
|
|
ptr4 = (orc_union64 *) s1;
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadq */
|
|
var34 = ptr4[i];
|
|
/* 1: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var34.x2[0];
|
|
var37.x2[0] = _src.x2[1];
|
|
var38.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var34.x2[1];
|
|
var37.x2[1] = _src.x2[1];
|
|
var38.x2[1] = _src.x2[0];
|
|
}
|
|
/* 2: select1wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var38.x2[0];
|
|
var35.x2[0] = _src.x2[1];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var38.x2[1];
|
|
var35.x2[1] = _src.x2[1];
|
|
}
|
|
/* 3: storew */
|
|
ptr0[i] = var35;
|
|
/* 4: select0lw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var37.i;
|
|
var36.i = _src.x2[0];
|
|
}
|
|
/* 5: storew */
|
|
ptr1[i] = var36;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_pack_NV12 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
orc_union16 *ORC_RESTRICT ptr1;
|
|
const orc_union64 *ORC_RESTRICT ptr4;
|
|
orc_union64 var34;
|
|
orc_union16 var35;
|
|
orc_union16 var36;
|
|
orc_union32 var37;
|
|
orc_union32 var38;
|
|
|
|
ptr0 = (orc_union16 *) ex->arrays[0];
|
|
ptr1 = (orc_union16 *) ex->arrays[1];
|
|
ptr4 = (orc_union64 *) ex->arrays[4];
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadq */
|
|
var34 = ptr4[i];
|
|
/* 1: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var34.x2[0];
|
|
var37.x2[0] = _src.x2[1];
|
|
var38.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var34.x2[1];
|
|
var37.x2[1] = _src.x2[1];
|
|
var38.x2[1] = _src.x2[0];
|
|
}
|
|
/* 2: select1wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var38.x2[0];
|
|
var35.x2[0] = _src.x2[1];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var38.x2[1];
|
|
var35.x2[1] = _src.x2[1];
|
|
}
|
|
/* 3: storew */
|
|
ptr0[i] = var35;
|
|
/* 4: select0lw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var37.i;
|
|
var36.i = _src.x2[0];
|
|
}
|
|
/* 5: storew */
|
|
ptr1[i] = var36;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_pack_NV12 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
|
const guint8 * ORC_RESTRICT s1, int n)
|
|
{
|
|
OrcExecutor _ex, *ex = &_ex;
|
|
static volatile int p_inited = 0;
|
|
static OrcCode *c = 0;
|
|
void (*func) (OrcExecutor *);
|
|
|
|
if (!p_inited) {
|
|
orc_once_mutex_lock ();
|
|
if (!p_inited) {
|
|
OrcProgram *p;
|
|
|
|
#if 1
|
|
static const orc_uint8 bc[] = {
|
|
1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
|
|
107, 95, 78, 86, 49, 50, 11, 2, 2, 11, 2, 2, 12, 8, 8, 20,
|
|
4, 20, 4, 21, 1, 198, 33, 32, 4, 21, 1, 189, 0, 32, 190, 1,
|
|
33, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_pack_NV12);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_pack_NV12");
|
|
orc_program_set_backup_function (p, _backup_video_orc_pack_NV12);
|
|
orc_program_add_destination (p, 2, "d1");
|
|
orc_program_add_destination (p, 2, "d2");
|
|
orc_program_add_source (p, 8, "s1");
|
|
orc_program_add_temporary (p, 4, "t1");
|
|
orc_program_add_temporary (p, 4, "t2");
|
|
|
|
orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select0lw", 0, ORC_VAR_D2, ORC_VAR_T2,
|
|
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_D2] = d2;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_unpack_NV21 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_unpack_NV21 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
const guint8 * ORC_RESTRICT s2, int n)
|
|
{
|
|
int i;
|
|
orc_union64 *ORC_RESTRICT ptr0;
|
|
const orc_union16 *ORC_RESTRICT ptr4;
|
|
const orc_union16 *ORC_RESTRICT ptr5;
|
|
orc_union16 var35;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union16 var36;
|
|
#else
|
|
orc_union16 var36;
|
|
#endif
|
|
orc_union16 var37;
|
|
orc_union64 var38;
|
|
orc_union16 var39;
|
|
orc_union32 var40;
|
|
orc_union32 var41;
|
|
|
|
ptr0 = (orc_union64 *) d1;
|
|
ptr4 = (orc_union16 *) s1;
|
|
ptr5 = (orc_union16 *) s2;
|
|
|
|
/* 3: loadpb */
|
|
var36.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
var36.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadw */
|
|
var35 = ptr5[i];
|
|
/* 1: swapw */
|
|
var39.i = ORC_SWAP_W (var35.i);
|
|
/* 2: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var39.i;
|
|
_dest.x2[1] = var39.i;
|
|
var40.i = _dest.i;
|
|
}
|
|
/* 4: loadw */
|
|
var37 = ptr4[i];
|
|
/* 5: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var36.x2[0];
|
|
_dest.x2[1] = var37.x2[0];
|
|
var41.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var36.x2[1];
|
|
_dest.x2[1] = var37.x2[1];
|
|
var41.x2[1] = _dest.i;
|
|
}
|
|
/* 6: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var41.x2[0];
|
|
_dest.x2[1] = var40.x2[0];
|
|
var38.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var41.x2[1];
|
|
_dest.x2[1] = var40.x2[1];
|
|
var38.x2[1] = _dest.i;
|
|
}
|
|
/* 7: storeq */
|
|
ptr0[i] = var38;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_unpack_NV21 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union64 *ORC_RESTRICT ptr0;
|
|
const orc_union16 *ORC_RESTRICT ptr4;
|
|
const orc_union16 *ORC_RESTRICT ptr5;
|
|
orc_union16 var35;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union16 var36;
|
|
#else
|
|
orc_union16 var36;
|
|
#endif
|
|
orc_union16 var37;
|
|
orc_union64 var38;
|
|
orc_union16 var39;
|
|
orc_union32 var40;
|
|
orc_union32 var41;
|
|
|
|
ptr0 = (orc_union64 *) ex->arrays[0];
|
|
ptr4 = (orc_union16 *) ex->arrays[4];
|
|
ptr5 = (orc_union16 *) ex->arrays[5];
|
|
|
|
/* 3: loadpb */
|
|
var36.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
var36.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadw */
|
|
var35 = ptr5[i];
|
|
/* 1: swapw */
|
|
var39.i = ORC_SWAP_W (var35.i);
|
|
/* 2: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var39.i;
|
|
_dest.x2[1] = var39.i;
|
|
var40.i = _dest.i;
|
|
}
|
|
/* 4: loadw */
|
|
var37 = ptr4[i];
|
|
/* 5: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var36.x2[0];
|
|
_dest.x2[1] = var37.x2[0];
|
|
var41.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var36.x2[1];
|
|
_dest.x2[1] = var37.x2[1];
|
|
var41.x2[1] = _dest.i;
|
|
}
|
|
/* 6: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var41.x2[0];
|
|
_dest.x2[1] = var40.x2[0];
|
|
var38.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var41.x2[1];
|
|
_dest.x2[1] = var40.x2[1];
|
|
var38.x2[1] = _dest.i;
|
|
}
|
|
/* 7: storeq */
|
|
ptr0[i] = var38;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_unpack_NV21 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
const guint8 * ORC_RESTRICT s2, 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, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
|
|
97, 99, 107, 95, 78, 86, 50, 49, 11, 8, 8, 12, 2, 2, 12, 2,
|
|
2, 14, 1, 255, 0, 0, 0, 20, 2, 20, 4, 20, 4, 183, 32, 5,
|
|
195, 34, 32, 32, 21, 1, 196, 33, 16, 4, 21, 1, 195, 0, 33, 34,
|
|
2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_unpack_NV21);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_unpack_NV21");
|
|
orc_program_set_backup_function (p, _backup_video_orc_unpack_NV21);
|
|
orc_program_add_destination (p, 8, "d1");
|
|
orc_program_add_source (p, 2, "s1");
|
|
orc_program_add_source (p, 2, "s2");
|
|
orc_program_add_constant (p, 1, 0x000000ff, "c1");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 4, "t2");
|
|
orc_program_add_temporary (p, 4, "t3");
|
|
|
|
orc_program_append_2 (p, "swapw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T3,
|
|
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;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_pack_NV21 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_pack_NV21 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
|
const guint8 * ORC_RESTRICT s1, int n)
|
|
{
|
|
int i;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
orc_union16 *ORC_RESTRICT ptr1;
|
|
const orc_union64 *ORC_RESTRICT ptr4;
|
|
orc_union64 var35;
|
|
orc_union16 var36;
|
|
orc_union16 var37;
|
|
orc_union32 var38;
|
|
orc_union32 var39;
|
|
orc_union16 var40;
|
|
|
|
ptr0 = (orc_union16 *) d1;
|
|
ptr1 = (orc_union16 *) d2;
|
|
ptr4 = (orc_union64 *) s1;
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadq */
|
|
var35 = ptr4[i];
|
|
/* 1: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var35.x2[0];
|
|
var38.x2[0] = _src.x2[1];
|
|
var39.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var35.x2[1];
|
|
var38.x2[1] = _src.x2[1];
|
|
var39.x2[1] = _src.x2[0];
|
|
}
|
|
/* 2: select1wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var39.x2[0];
|
|
var36.x2[0] = _src.x2[1];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var39.x2[1];
|
|
var36.x2[1] = _src.x2[1];
|
|
}
|
|
/* 3: storew */
|
|
ptr0[i] = var36;
|
|
/* 4: select0lw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var38.i;
|
|
var40.i = _src.x2[0];
|
|
}
|
|
/* 5: swapw */
|
|
var37.i = ORC_SWAP_W (var40.i);
|
|
/* 6: storew */
|
|
ptr1[i] = var37;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_pack_NV21 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
orc_union16 *ORC_RESTRICT ptr1;
|
|
const orc_union64 *ORC_RESTRICT ptr4;
|
|
orc_union64 var35;
|
|
orc_union16 var36;
|
|
orc_union16 var37;
|
|
orc_union32 var38;
|
|
orc_union32 var39;
|
|
orc_union16 var40;
|
|
|
|
ptr0 = (orc_union16 *) ex->arrays[0];
|
|
ptr1 = (orc_union16 *) ex->arrays[1];
|
|
ptr4 = (orc_union64 *) ex->arrays[4];
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadq */
|
|
var35 = ptr4[i];
|
|
/* 1: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var35.x2[0];
|
|
var38.x2[0] = _src.x2[1];
|
|
var39.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var35.x2[1];
|
|
var38.x2[1] = _src.x2[1];
|
|
var39.x2[1] = _src.x2[0];
|
|
}
|
|
/* 2: select1wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var39.x2[0];
|
|
var36.x2[0] = _src.x2[1];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var39.x2[1];
|
|
var36.x2[1] = _src.x2[1];
|
|
}
|
|
/* 3: storew */
|
|
ptr0[i] = var36;
|
|
/* 4: select0lw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var38.i;
|
|
var40.i = _src.x2[0];
|
|
}
|
|
/* 5: swapw */
|
|
var37.i = ORC_SWAP_W (var40.i);
|
|
/* 6: storew */
|
|
ptr1[i] = var37;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_pack_NV21 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
|
const guint8 * ORC_RESTRICT s1, int n)
|
|
{
|
|
OrcExecutor _ex, *ex = &_ex;
|
|
static volatile int p_inited = 0;
|
|
static OrcCode *c = 0;
|
|
void (*func) (OrcExecutor *);
|
|
|
|
if (!p_inited) {
|
|
orc_once_mutex_lock ();
|
|
if (!p_inited) {
|
|
OrcProgram *p;
|
|
|
|
#if 1
|
|
static const orc_uint8 bc[] = {
|
|
1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
|
|
107, 95, 78, 86, 50, 49, 11, 2, 2, 11, 2, 2, 12, 8, 8, 20,
|
|
4, 20, 4, 20, 2, 21, 1, 198, 33, 32, 4, 21, 1, 189, 0, 32,
|
|
190, 34, 33, 183, 1, 34, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_pack_NV21);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_pack_NV21");
|
|
orc_program_set_backup_function (p, _backup_video_orc_pack_NV21);
|
|
orc_program_add_destination (p, 2, "d1");
|
|
orc_program_add_destination (p, 2, "d2");
|
|
orc_program_add_source (p, 8, "s1");
|
|
orc_program_add_temporary (p, 4, "t1");
|
|
orc_program_add_temporary (p, 4, "t2");
|
|
orc_program_add_temporary (p, 2, "t3");
|
|
|
|
orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T3, ORC_VAR_T2,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "swapw", 0, ORC_VAR_D2, ORC_VAR_T3, 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_D2] = d2;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_unpack_NV24 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_unpack_NV24 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
const guint8 * ORC_RESTRICT s2, int n)
|
|
{
|
|
int i;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_union16 *ORC_RESTRICT ptr5;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_int8 var33;
|
|
#else
|
|
orc_int8 var33;
|
|
#endif
|
|
orc_int8 var34;
|
|
orc_union16 var35;
|
|
orc_union32 var36;
|
|
orc_union16 var37;
|
|
|
|
ptr0 = (orc_union32 *) d1;
|
|
ptr4 = (orc_int8 *) s1;
|
|
ptr5 = (orc_union16 *) s2;
|
|
|
|
/* 0: loadpb */
|
|
var33 = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 1: loadb */
|
|
var34 = ptr4[i];
|
|
/* 2: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var33;
|
|
_dest.x2[1] = var34;
|
|
var37.i = _dest.i;
|
|
}
|
|
/* 3: loadw */
|
|
var35 = ptr5[i];
|
|
/* 4: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var37.i;
|
|
_dest.x2[1] = var35.i;
|
|
var36.i = _dest.i;
|
|
}
|
|
/* 5: storel */
|
|
ptr0[i] = var36;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_unpack_NV24 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_union16 *ORC_RESTRICT ptr5;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_int8 var33;
|
|
#else
|
|
orc_int8 var33;
|
|
#endif
|
|
orc_int8 var34;
|
|
orc_union16 var35;
|
|
orc_union32 var36;
|
|
orc_union16 var37;
|
|
|
|
ptr0 = (orc_union32 *) ex->arrays[0];
|
|
ptr4 = (orc_int8 *) ex->arrays[4];
|
|
ptr5 = (orc_union16 *) ex->arrays[5];
|
|
|
|
/* 0: loadpb */
|
|
var33 = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 1: loadb */
|
|
var34 = ptr4[i];
|
|
/* 2: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var33;
|
|
_dest.x2[1] = var34;
|
|
var37.i = _dest.i;
|
|
}
|
|
/* 3: loadw */
|
|
var35 = ptr5[i];
|
|
/* 4: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var37.i;
|
|
_dest.x2[1] = var35.i;
|
|
var36.i = _dest.i;
|
|
}
|
|
/* 5: storel */
|
|
ptr0[i] = var36;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_unpack_NV24 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
const guint8 * ORC_RESTRICT s2, 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, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
|
|
97, 99, 107, 95, 78, 86, 50, 52, 11, 4, 4, 12, 1, 1, 12, 2,
|
|
2, 14, 1, 255, 0, 0, 0, 20, 2, 196, 32, 16, 4, 195, 0, 32,
|
|
5, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_unpack_NV24);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_unpack_NV24");
|
|
orc_program_set_backup_function (p, _backup_video_orc_unpack_NV24);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 1, "s1");
|
|
orc_program_add_source (p, 2, "s2");
|
|
orc_program_add_constant (p, 1, 0x000000ff, "c1");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
|
|
orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_C1, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S2,
|
|
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;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_pack_NV24 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_pack_NV24 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
|
const guint8 * ORC_RESTRICT s1, int n)
|
|
{
|
|
int i;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
orc_union16 *ORC_RESTRICT ptr1;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var33;
|
|
orc_union16 var34;
|
|
orc_int8 var35;
|
|
orc_union16 var36;
|
|
|
|
ptr0 = (orc_int8 *) d1;
|
|
ptr1 = (orc_union16 *) d2;
|
|
ptr4 = (orc_union32 *) s1;
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var33 = ptr4[i];
|
|
/* 1: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var33.i;
|
|
var34.i = _src.x2[1];
|
|
var36.i = _src.x2[0];
|
|
}
|
|
/* 2: storew */
|
|
ptr1[i] = var34;
|
|
/* 3: select1wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var36.i;
|
|
var35 = _src.x2[1];
|
|
}
|
|
/* 4: storeb */
|
|
ptr0[i] = var35;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_pack_NV24 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
orc_union16 *ORC_RESTRICT ptr1;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var33;
|
|
orc_union16 var34;
|
|
orc_int8 var35;
|
|
orc_union16 var36;
|
|
|
|
ptr0 = (orc_int8 *) ex->arrays[0];
|
|
ptr1 = (orc_union16 *) ex->arrays[1];
|
|
ptr4 = (orc_union32 *) ex->arrays[4];
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var33 = ptr4[i];
|
|
/* 1: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var33.i;
|
|
var34.i = _src.x2[1];
|
|
var36.i = _src.x2[0];
|
|
}
|
|
/* 2: storew */
|
|
ptr1[i] = var34;
|
|
/* 3: select1wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var36.i;
|
|
var35 = _src.x2[1];
|
|
}
|
|
/* 4: storeb */
|
|
ptr0[i] = var35;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_pack_NV24 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
|
const guint8 * ORC_RESTRICT s1, int n)
|
|
{
|
|
OrcExecutor _ex, *ex = &_ex;
|
|
static volatile int p_inited = 0;
|
|
static OrcCode *c = 0;
|
|
void (*func) (OrcExecutor *);
|
|
|
|
if (!p_inited) {
|
|
orc_once_mutex_lock ();
|
|
if (!p_inited) {
|
|
OrcProgram *p;
|
|
|
|
#if 1
|
|
static const orc_uint8 bc[] = {
|
|
1, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
|
|
107, 95, 78, 86, 50, 52, 11, 1, 1, 11, 2, 2, 12, 4, 4, 20,
|
|
2, 198, 1, 32, 4, 189, 0, 32, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_pack_NV24);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_pack_NV24");
|
|
orc_program_set_backup_function (p, _backup_video_orc_pack_NV24);
|
|
orc_program_add_destination (p, 1, "d1");
|
|
orc_program_add_destination (p, 2, "d2");
|
|
orc_program_add_source (p, 4, "s1");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
|
|
orc_program_append_2 (p, "splitlw", 0, ORC_VAR_D2, ORC_VAR_T1, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1,
|
|
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_D2] = d2;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_unpack_A420 */
|
|
#ifdef DISABLE_ORC
|
|
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)
|
|
{
|
|
int i;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
const orc_int8 *ORC_RESTRICT ptr7;
|
|
orc_int8 var36;
|
|
orc_int8 var37;
|
|
orc_union32 var38;
|
|
orc_int8 var39;
|
|
orc_int8 var40;
|
|
orc_union16 var41;
|
|
orc_union16 var42;
|
|
|
|
ptr0 = (orc_union32 *) d1;
|
|
ptr4 = (orc_int8 *) s1;
|
|
ptr5 = (orc_int8 *) s2;
|
|
ptr6 = (orc_int8 *) s3;
|
|
ptr7 = (orc_int8 *) s4;
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadupdb */
|
|
var39 = ptr5[i >> 1];
|
|
/* 1: loadupdb */
|
|
var40 = ptr6[i >> 1];
|
|
/* 2: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var39;
|
|
_dest.x2[1] = var40;
|
|
var41.i = _dest.i;
|
|
}
|
|
/* 3: loadb */
|
|
var36 = ptr7[i];
|
|
/* 4: loadb */
|
|
var37 = ptr4[i];
|
|
/* 5: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var36;
|
|
_dest.x2[1] = var37;
|
|
var42.i = _dest.i;
|
|
}
|
|
/* 6: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var42.i;
|
|
_dest.x2[1] = var41.i;
|
|
var38.i = _dest.i;
|
|
}
|
|
/* 7: storel */
|
|
ptr0[i] = var38;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_unpack_A420 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
const orc_int8 *ORC_RESTRICT ptr7;
|
|
orc_int8 var36;
|
|
orc_int8 var37;
|
|
orc_union32 var38;
|
|
orc_int8 var39;
|
|
orc_int8 var40;
|
|
orc_union16 var41;
|
|
orc_union16 var42;
|
|
|
|
ptr0 = (orc_union32 *) ex->arrays[0];
|
|
ptr4 = (orc_int8 *) ex->arrays[4];
|
|
ptr5 = (orc_int8 *) ex->arrays[5];
|
|
ptr6 = (orc_int8 *) ex->arrays[6];
|
|
ptr7 = (orc_int8 *) ex->arrays[7];
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadupdb */
|
|
var39 = ptr5[i >> 1];
|
|
/* 1: loadupdb */
|
|
var40 = ptr6[i >> 1];
|
|
/* 2: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var39;
|
|
_dest.x2[1] = var40;
|
|
var41.i = _dest.i;
|
|
}
|
|
/* 3: loadb */
|
|
var36 = ptr7[i];
|
|
/* 4: loadb */
|
|
var37 = ptr4[i];
|
|
/* 5: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var36;
|
|
_dest.x2[1] = var37;
|
|
var42.i = _dest.i;
|
|
}
|
|
/* 6: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var42.i;
|
|
_dest.x2[1] = var41.i;
|
|
var38.i = _dest.i;
|
|
}
|
|
/* 7: storel */
|
|
ptr0[i] = var38;
|
|
}
|
|
|
|
}
|
|
|
|
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)
|
|
{
|
|
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, 21, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 117, 110, 112,
|
|
97, 99, 107, 95, 65, 52, 50, 48, 11, 4, 4, 12, 1, 1, 12, 1,
|
|
1, 12, 1, 1, 12, 1, 1, 20, 2, 20, 2, 20, 1, 20, 1, 45,
|
|
34, 5, 45, 35, 6, 196, 32, 34, 35, 196, 33, 7, 4, 195, 0, 33,
|
|
32, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_unpack_A420);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_unpack_A420");
|
|
orc_program_set_backup_function (p, _backup_video_orc_unpack_A420);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 1, "s1");
|
|
orc_program_add_source (p, 1, "s2");
|
|
orc_program_add_source (p, 1, "s3");
|
|
orc_program_add_source (p, 1, "s4");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 2, "t2");
|
|
orc_program_add_temporary (p, 1, "t3");
|
|
orc_program_add_temporary (p, 1, "t4");
|
|
|
|
orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T3, ORC_VAR_S2,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T4, ORC_VAR_S3,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_S4, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
#endif
|
|
|
|
orc_program_compile (p);
|
|
c = orc_program_take_code (p);
|
|
orc_program_free (p);
|
|
}
|
|
p_inited = TRUE;
|
|
orc_once_mutex_unlock ();
|
|
}
|
|
ex->arrays[ORC_VAR_A2] = c;
|
|
ex->program = 0;
|
|
|
|
ex->n = n;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
ex->arrays[ORC_VAR_S3] = (void *) s3;
|
|
ex->arrays[ORC_VAR_S4] = (void *) s4;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_pack_A420 */
|
|
#ifdef DISABLE_ORC
|
|
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)
|
|
{
|
|
int i;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
orc_int8 *ORC_RESTRICT ptr1;
|
|
orc_int8 *ORC_RESTRICT ptr2;
|
|
orc_union16 *ORC_RESTRICT ptr3;
|
|
const orc_union64 *ORC_RESTRICT ptr4;
|
|
orc_union64 var36;
|
|
orc_union16 var37;
|
|
orc_union16 var38;
|
|
orc_int8 var39;
|
|
orc_int8 var40;
|
|
orc_union32 var41;
|
|
orc_union32 var42;
|
|
orc_union16 var43;
|
|
orc_union16 var44;
|
|
|
|
ptr0 = (orc_union16 *) d1;
|
|
ptr1 = (orc_int8 *) d2;
|
|
ptr2 = (orc_int8 *) d3;
|
|
ptr3 = (orc_union16 *) d4;
|
|
ptr4 = (orc_union64 *) s1;
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadq */
|
|
var36 = ptr4[i];
|
|
/* 1: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var36.x2[0];
|
|
var41.x2[0] = _src.x2[1];
|
|
var42.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var36.x2[1];
|
|
var41.x2[1] = _src.x2[1];
|
|
var42.x2[1] = _src.x2[0];
|
|
}
|
|
/* 2: select1wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var42.x2[0];
|
|
var37.x2[0] = _src.x2[1];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var42.x2[1];
|
|
var37.x2[1] = _src.x2[1];
|
|
}
|
|
/* 3: storew */
|
|
ptr0[i] = var37;
|
|
/* 4: select0wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var42.x2[0];
|
|
var38.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var42.x2[1];
|
|
var38.x2[1] = _src.x2[0];
|
|
}
|
|
/* 5: storew */
|
|
ptr3[i] = var38;
|
|
/* 6: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var41.x2[0];
|
|
var43.x2[0] = _src.x2[1];
|
|
var44.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var41.x2[1];
|
|
var43.x2[1] = _src.x2[1];
|
|
var44.x2[1] = _src.x2[0];
|
|
}
|
|
/* 7: select0wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var44.i;
|
|
var39 = _src.x2[0];
|
|
}
|
|
/* 8: storeb */
|
|
ptr1[i] = var39;
|
|
/* 9: select0wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var43.i;
|
|
var40 = _src.x2[0];
|
|
}
|
|
/* 10: storeb */
|
|
ptr2[i] = var40;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_pack_A420 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
orc_int8 *ORC_RESTRICT ptr1;
|
|
orc_int8 *ORC_RESTRICT ptr2;
|
|
orc_union16 *ORC_RESTRICT ptr3;
|
|
const orc_union64 *ORC_RESTRICT ptr4;
|
|
orc_union64 var36;
|
|
orc_union16 var37;
|
|
orc_union16 var38;
|
|
orc_int8 var39;
|
|
orc_int8 var40;
|
|
orc_union32 var41;
|
|
orc_union32 var42;
|
|
orc_union16 var43;
|
|
orc_union16 var44;
|
|
|
|
ptr0 = (orc_union16 *) ex->arrays[0];
|
|
ptr1 = (orc_int8 *) ex->arrays[1];
|
|
ptr2 = (orc_int8 *) ex->arrays[2];
|
|
ptr3 = (orc_union16 *) ex->arrays[3];
|
|
ptr4 = (orc_union64 *) ex->arrays[4];
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadq */
|
|
var36 = ptr4[i];
|
|
/* 1: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var36.x2[0];
|
|
var41.x2[0] = _src.x2[1];
|
|
var42.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var36.x2[1];
|
|
var41.x2[1] = _src.x2[1];
|
|
var42.x2[1] = _src.x2[0];
|
|
}
|
|
/* 2: select1wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var42.x2[0];
|
|
var37.x2[0] = _src.x2[1];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var42.x2[1];
|
|
var37.x2[1] = _src.x2[1];
|
|
}
|
|
/* 3: storew */
|
|
ptr0[i] = var37;
|
|
/* 4: select0wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var42.x2[0];
|
|
var38.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var42.x2[1];
|
|
var38.x2[1] = _src.x2[0];
|
|
}
|
|
/* 5: storew */
|
|
ptr3[i] = var38;
|
|
/* 6: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var41.x2[0];
|
|
var43.x2[0] = _src.x2[1];
|
|
var44.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var41.x2[1];
|
|
var43.x2[1] = _src.x2[1];
|
|
var44.x2[1] = _src.x2[0];
|
|
}
|
|
/* 7: select0wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var44.i;
|
|
var39 = _src.x2[0];
|
|
}
|
|
/* 8: storeb */
|
|
ptr1[i] = var39;
|
|
/* 9: select0wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var43.i;
|
|
var40 = _src.x2[0];
|
|
}
|
|
/* 10: storeb */
|
|
ptr2[i] = var40;
|
|
}
|
|
|
|
}
|
|
|
|
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)
|
|
{
|
|
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, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
|
|
107, 95, 65, 52, 50, 48, 11, 2, 2, 11, 1, 1, 11, 1, 1, 11,
|
|
2, 2, 12, 8, 8, 20, 4, 20, 4, 20, 2, 20, 2, 21, 1, 198,
|
|
33, 32, 4, 21, 1, 189, 0, 32, 21, 1, 188, 3, 32, 21, 1, 199,
|
|
35, 34, 33, 188, 1, 34, 188, 2, 35, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_pack_A420);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_pack_A420");
|
|
orc_program_set_backup_function (p, _backup_video_orc_pack_A420);
|
|
orc_program_add_destination (p, 2, "d1");
|
|
orc_program_add_destination (p, 1, "d2");
|
|
orc_program_add_destination (p, 1, "d3");
|
|
orc_program_add_destination (p, 2, "d4");
|
|
orc_program_add_source (p, 8, "s1");
|
|
orc_program_add_temporary (p, 4, "t1");
|
|
orc_program_add_temporary (p, 4, "t2");
|
|
orc_program_add_temporary (p, 2, "t3");
|
|
orc_program_add_temporary (p, 2, "t4");
|
|
|
|
orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select0wb", 1, ORC_VAR_D4, ORC_VAR_T1,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select0wb", 0, ORC_VAR_D2, ORC_VAR_T3,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select0wb", 0, ORC_VAR_D3, ORC_VAR_T4,
|
|
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_D2] = d2;
|
|
ex->arrays[ORC_VAR_D3] = d3;
|
|
ex->arrays[ORC_VAR_D4] = d4;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_pack_AY */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_pack_AY (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
|
const guint8 * ORC_RESTRICT s1, int n)
|
|
{
|
|
int i;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
orc_int8 *ORC_RESTRICT ptr1;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var33;
|
|
orc_int8 var34;
|
|
orc_int8 var35;
|
|
orc_union16 var36;
|
|
|
|
ptr0 = (orc_int8 *) d1;
|
|
ptr1 = (orc_int8 *) d2;
|
|
ptr4 = (orc_union32 *) s1;
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var33 = ptr4[i];
|
|
/* 1: select0lw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var33.i;
|
|
var36.i = _src.x2[0];
|
|
}
|
|
/* 2: select1wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var36.i;
|
|
var34 = _src.x2[1];
|
|
}
|
|
/* 3: storeb */
|
|
ptr0[i] = var34;
|
|
/* 4: select0wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var36.i;
|
|
var35 = _src.x2[0];
|
|
}
|
|
/* 5: storeb */
|
|
ptr1[i] = var35;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_pack_AY (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
orc_int8 *ORC_RESTRICT ptr1;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var33;
|
|
orc_int8 var34;
|
|
orc_int8 var35;
|
|
orc_union16 var36;
|
|
|
|
ptr0 = (orc_int8 *) ex->arrays[0];
|
|
ptr1 = (orc_int8 *) ex->arrays[1];
|
|
ptr4 = (orc_union32 *) ex->arrays[4];
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var33 = ptr4[i];
|
|
/* 1: select0lw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var33.i;
|
|
var36.i = _src.x2[0];
|
|
}
|
|
/* 2: select1wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var36.i;
|
|
var34 = _src.x2[1];
|
|
}
|
|
/* 3: storeb */
|
|
ptr0[i] = var34;
|
|
/* 4: select0wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var36.i;
|
|
var35 = _src.x2[0];
|
|
}
|
|
/* 5: storeb */
|
|
ptr1[i] = var35;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_pack_AY (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
|
const guint8 * ORC_RESTRICT s1, int n)
|
|
{
|
|
OrcExecutor _ex, *ex = &_ex;
|
|
static volatile int p_inited = 0;
|
|
static OrcCode *c = 0;
|
|
void (*func) (OrcExecutor *);
|
|
|
|
if (!p_inited) {
|
|
orc_once_mutex_lock ();
|
|
if (!p_inited) {
|
|
OrcProgram *p;
|
|
|
|
#if 1
|
|
static const orc_uint8 bc[] = {
|
|
1, 9, 17, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 97, 99,
|
|
107, 95, 65, 89, 11, 1, 1, 11, 1, 1, 12, 4, 4, 20, 2, 190,
|
|
32, 4, 189, 0, 32, 188, 1, 32, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_pack_AY);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_pack_AY");
|
|
orc_program_set_backup_function (p, _backup_video_orc_pack_AY);
|
|
orc_program_add_destination (p, 1, "d1");
|
|
orc_program_add_destination (p, 1, "d2");
|
|
orc_program_add_source (p, 4, "s1");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
|
|
orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_S1,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select0wb", 0, ORC_VAR_D2, ORC_VAR_T1,
|
|
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_D2] = d2;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_resample_bilinear_u32 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_resample_bilinear_u32 (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int p1, int p2, int n)
|
|
{
|
|
int i;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var32;
|
|
|
|
ptr0 = (orc_union32 *) d1;
|
|
ptr4 = (orc_union32 *) s1;
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: ldreslinl */
|
|
{
|
|
int tmp = p1 + i * p2;
|
|
orc_union32 a = ptr4[tmp >> 16];
|
|
orc_union32 b = ptr4[(tmp >> 16) + 1];
|
|
var32.x4[0] =
|
|
((orc_uint8) a.x4[0] * (256 - ((tmp >> 8) & 0xff)) +
|
|
(orc_uint8) b.x4[0] * ((tmp >> 8) & 0xff)) >> 8;
|
|
var32.x4[1] =
|
|
((orc_uint8) a.x4[1] * (256 - ((tmp >> 8) & 0xff)) +
|
|
(orc_uint8) b.x4[1] * ((tmp >> 8) & 0xff)) >> 8;
|
|
var32.x4[2] =
|
|
((orc_uint8) a.x4[2] * (256 - ((tmp >> 8) & 0xff)) +
|
|
(orc_uint8) b.x4[2] * ((tmp >> 8) & 0xff)) >> 8;
|
|
var32.x4[3] =
|
|
((orc_uint8) a.x4[3] * (256 - ((tmp >> 8) & 0xff)) +
|
|
(orc_uint8) b.x4[3] * ((tmp >> 8) & 0xff)) >> 8;
|
|
}
|
|
/* 1: storel */
|
|
ptr0[i] = var32;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_resample_bilinear_u32 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var32;
|
|
|
|
ptr0 = (orc_union32 *) ex->arrays[0];
|
|
ptr4 = (orc_union32 *) ex->arrays[4];
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: ldreslinl */
|
|
{
|
|
int tmp = ex->params[24] + i * ex->params[25];
|
|
orc_union32 a = ptr4[tmp >> 16];
|
|
orc_union32 b = ptr4[(tmp >> 16) + 1];
|
|
var32.x4[0] =
|
|
((orc_uint8) a.x4[0] * (256 - ((tmp >> 8) & 0xff)) +
|
|
(orc_uint8) b.x4[0] * ((tmp >> 8) & 0xff)) >> 8;
|
|
var32.x4[1] =
|
|
((orc_uint8) a.x4[1] * (256 - ((tmp >> 8) & 0xff)) +
|
|
(orc_uint8) b.x4[1] * ((tmp >> 8) & 0xff)) >> 8;
|
|
var32.x4[2] =
|
|
((orc_uint8) a.x4[2] * (256 - ((tmp >> 8) & 0xff)) +
|
|
(orc_uint8) b.x4[2] * ((tmp >> 8) & 0xff)) >> 8;
|
|
var32.x4[3] =
|
|
((orc_uint8) a.x4[3] * (256 - ((tmp >> 8) & 0xff)) +
|
|
(orc_uint8) b.x4[3] * ((tmp >> 8) & 0xff)) >> 8;
|
|
}
|
|
/* 1: storel */
|
|
ptr0[i] = var32;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_resample_bilinear_u32 (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int p1, int p2, 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, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
|
|
97, 109, 112, 108, 101, 95, 98, 105, 108, 105, 110, 101, 97, 114, 95,
|
|
117,
|
|
51, 50, 11, 4, 4, 12, 4, 4, 16, 4, 16, 4, 51, 0, 4, 24,
|
|
25, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_bilinear_u32);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_resample_bilinear_u32");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_bilinear_u32);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 4, "s1");
|
|
orc_program_add_parameter (p, 4, "p1");
|
|
orc_program_add_parameter (p, 4, "p2");
|
|
|
|
orc_program_append_2 (p, "ldreslinl", 0, ORC_VAR_D1, ORC_VAR_S1,
|
|
ORC_VAR_P1, ORC_VAR_P2);
|
|
#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;
|
|
ex->params[ORC_VAR_P1] = p1;
|
|
ex->params[ORC_VAR_P2] = p2;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_merge_linear_u8 */
|
|
#ifdef DISABLE_ORC
|
|
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)
|
|
{
|
|
int i;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
orc_int8 var36;
|
|
orc_int8 var37;
|
|
orc_union16 var38;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union16 var39;
|
|
#else
|
|
orc_union16 var39;
|
|
#endif
|
|
orc_int8 var40;
|
|
orc_int8 var41;
|
|
orc_union16 var42;
|
|
orc_union16 var43;
|
|
orc_union16 var44;
|
|
orc_union16 var45;
|
|
orc_union16 var46;
|
|
orc_int8 var47;
|
|
|
|
ptr0 = (orc_int8 *) d1;
|
|
ptr4 = (orc_int8 *) s1;
|
|
ptr5 = (orc_int8 *) s2;
|
|
|
|
/* 6: loadpw */
|
|
var38.i = p1;
|
|
/* 8: loadpw */
|
|
var39.i = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var41 = ptr4[i];
|
|
/* 1: loadb */
|
|
var36 = ptr4[i];
|
|
/* 2: convubw */
|
|
var42.i = (orc_uint8) var36;
|
|
/* 3: loadb */
|
|
var37 = ptr5[i];
|
|
/* 4: convubw */
|
|
var43.i = (orc_uint8) var37;
|
|
/* 5: subw */
|
|
var44.i = var43.i - var42.i;
|
|
/* 7: mullw */
|
|
var45.i = (var44.i * var38.i) & 0xffff;
|
|
/* 9: addw */
|
|
var46.i = var45.i + var39.i;
|
|
/* 10: convhwb */
|
|
var47 = ((orc_uint16) var46.i) >> 8;
|
|
/* 11: addb */
|
|
var40 = var47 + var41;
|
|
/* 12: storeb */
|
|
ptr0[i] = var40;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_merge_linear_u8 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
orc_int8 var36;
|
|
orc_int8 var37;
|
|
orc_union16 var38;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union16 var39;
|
|
#else
|
|
orc_union16 var39;
|
|
#endif
|
|
orc_int8 var40;
|
|
orc_int8 var41;
|
|
orc_union16 var42;
|
|
orc_union16 var43;
|
|
orc_union16 var44;
|
|
orc_union16 var45;
|
|
orc_union16 var46;
|
|
orc_int8 var47;
|
|
|
|
ptr0 = (orc_int8 *) ex->arrays[0];
|
|
ptr4 = (orc_int8 *) ex->arrays[4];
|
|
ptr5 = (orc_int8 *) ex->arrays[5];
|
|
|
|
/* 6: loadpw */
|
|
var38.i = ex->params[24];
|
|
/* 8: loadpw */
|
|
var39.i = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var41 = ptr4[i];
|
|
/* 1: loadb */
|
|
var36 = ptr4[i];
|
|
/* 2: convubw */
|
|
var42.i = (orc_uint8) var36;
|
|
/* 3: loadb */
|
|
var37 = ptr5[i];
|
|
/* 4: convubw */
|
|
var43.i = (orc_uint8) var37;
|
|
/* 5: subw */
|
|
var44.i = var43.i - var42.i;
|
|
/* 7: mullw */
|
|
var45.i = (var44.i * var38.i) & 0xffff;
|
|
/* 9: addw */
|
|
var46.i = var45.i + var39.i;
|
|
/* 10: convhwb */
|
|
var47 = ((orc_uint16) var46.i) >> 8;
|
|
/* 11: addb */
|
|
var40 = var47 + var41;
|
|
/* 12: storeb */
|
|
ptr0[i] = var40;
|
|
}
|
|
|
|
}
|
|
|
|
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)
|
|
{
|
|
OrcExecutor _ex, *ex = &_ex;
|
|
static volatile int p_inited = 0;
|
|
static OrcCode *c = 0;
|
|
void (*func) (OrcExecutor *);
|
|
|
|
if (!p_inited) {
|
|
orc_once_mutex_lock ();
|
|
if (!p_inited) {
|
|
OrcProgram *p;
|
|
|
|
#if 1
|
|
static const orc_uint8 bc[] = {
|
|
1, 9, 25, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 109, 101, 114,
|
|
103, 101, 95, 108, 105, 110, 101, 97, 114, 95, 117, 56, 11, 1, 1, 12,
|
|
1, 1, 12, 1, 1, 14, 2, 128, 0, 0, 0, 16, 1, 20, 2, 20,
|
|
2, 20, 1, 20, 1, 43, 34, 4, 150, 32, 4, 150, 33, 5, 98, 33,
|
|
33, 32, 89, 33, 33, 24, 70, 33, 33, 16, 158, 35, 33, 33, 0, 35,
|
|
34, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_merge_linear_u8);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_merge_linear_u8");
|
|
orc_program_set_backup_function (p, _backup_video_orc_merge_linear_u8);
|
|
orc_program_add_destination (p, 1, "d1");
|
|
orc_program_add_source (p, 1, "s1");
|
|
orc_program_add_source (p, 1, "s2");
|
|
orc_program_add_constant (p, 2, 0x00000080, "c1");
|
|
orc_program_add_parameter (p, 1, "p1");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 2, "t2");
|
|
orc_program_add_temporary (p, 1, "t3");
|
|
orc_program_add_temporary (p, 1, "t4");
|
|
|
|
orc_program_append_2 (p, "loadb", 0, ORC_VAR_T3, ORC_VAR_S1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convhwb", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addb", 0, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_T3,
|
|
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;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
ex->params[ORC_VAR_P1] = p1;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_memset_2d */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_memset_2d (guint8 * ORC_RESTRICT d1, int d1_stride, int p1, int n,
|
|
int m)
|
|
{
|
|
int i;
|
|
int j;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
orc_int8 var32;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
|
|
|
|
/* 0: loadpb */
|
|
var32 = p1;
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 1: storeb */
|
|
ptr0[i] = var32;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_memset_2d (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int j;
|
|
int n = ex->n;
|
|
int m = ex->params[ORC_VAR_A1];
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
orc_int8 var32;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
|
|
|
|
/* 0: loadpb */
|
|
var32 = ex->params[24];
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 1: storeb */
|
|
ptr0[i] = var32;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_memset_2d (guint8 * ORC_RESTRICT d1, int d1_stride, int p1, int n,
|
|
int m)
|
|
{
|
|
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, 7, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 109, 101,
|
|
109, 115, 101, 116, 95, 50, 100, 11, 1, 1, 16, 1, 64, 0, 24, 2,
|
|
0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_memset_2d);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_2d (p);
|
|
orc_program_set_name (p, "video_orc_memset_2d");
|
|
orc_program_set_backup_function (p, _backup_video_orc_memset_2d);
|
|
orc_program_add_destination (p, 1, "d1");
|
|
orc_program_add_parameter (p, 1, "p1");
|
|
|
|
orc_program_append_2 (p, "storeb", 0, ORC_VAR_D1, ORC_VAR_P1, 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;
|
|
ORC_EXECUTOR_M (ex) = m;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->params[ORC_VAR_D1] = d1_stride;
|
|
ex->params[ORC_VAR_P1] = p1;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_memcpy_2d */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_memcpy_2d (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
|
|
{
|
|
int i;
|
|
int j;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
orc_int8 var32;
|
|
orc_int8 var33;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
|
|
ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var32 = ptr4[i];
|
|
/* 1: copyb */
|
|
var33 = var32;
|
|
/* 2: storeb */
|
|
ptr0[i] = var33;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_memcpy_2d (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int j;
|
|
int n = ex->n;
|
|
int m = ex->params[ORC_VAR_A1];
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
orc_int8 var32;
|
|
orc_int8 var33;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
|
|
ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var32 = ptr4[i];
|
|
/* 1: copyb */
|
|
var33 = var32;
|
|
/* 2: storeb */
|
|
ptr0[i] = var33;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_memcpy_2d (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
|
|
{
|
|
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, 7, 9, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 109, 101,
|
|
109, 99, 112, 121, 95, 50, 100, 11, 1, 1, 12, 1, 1, 42, 0, 4,
|
|
2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_memcpy_2d);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_2d (p);
|
|
orc_program_set_name (p, "video_orc_memcpy_2d");
|
|
orc_program_set_backup_function (p, _backup_video_orc_memcpy_2d);
|
|
orc_program_add_destination (p, 1, "d1");
|
|
orc_program_add_source (p, 1, "s1");
|
|
|
|
orc_program_append_2 (p, "copyb", 0, ORC_VAR_D1, ORC_VAR_S1, 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;
|
|
ORC_EXECUTOR_M (ex) = m;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->params[ORC_VAR_D1] = d1_stride;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->params[ORC_VAR_S1] = s1_stride;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_convert_u16_to_u8 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_convert_u16_to_u8 (guint8 * ORC_RESTRICT d1,
|
|
const guint16 * ORC_RESTRICT s1, int n)
|
|
{
|
|
int i;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
const orc_union16 *ORC_RESTRICT ptr4;
|
|
orc_union16 var32;
|
|
orc_int8 var33;
|
|
|
|
ptr0 = (orc_int8 *) d1;
|
|
ptr4 = (orc_union16 *) s1;
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadw */
|
|
var32 = ptr4[i];
|
|
/* 1: convhwb */
|
|
var33 = ((orc_uint16) var32.i) >> 8;
|
|
/* 2: storeb */
|
|
ptr0[i] = var33;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_convert_u16_to_u8 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
const orc_union16 *ORC_RESTRICT ptr4;
|
|
orc_union16 var32;
|
|
orc_int8 var33;
|
|
|
|
ptr0 = (orc_int8 *) ex->arrays[0];
|
|
ptr4 = (orc_union16 *) ex->arrays[4];
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadw */
|
|
var32 = ptr4[i];
|
|
/* 1: convhwb */
|
|
var33 = ((orc_uint16) var32.i) >> 8;
|
|
/* 2: storeb */
|
|
ptr0[i] = var33;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_convert_u16_to_u8 (guint8 * 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, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, 110,
|
|
118, 101, 114, 116, 95, 117, 49, 54, 95, 116, 111, 95, 117, 56, 11, 1,
|
|
1, 12, 2, 2, 158, 0, 4, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_u16_to_u8);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_convert_u16_to_u8");
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_u16_to_u8);
|
|
orc_program_add_destination (p, 1, "d1");
|
|
orc_program_add_source (p, 2, "s1");
|
|
|
|
orc_program_append_2 (p, "convhwb", 0, ORC_VAR_D1, ORC_VAR_S1, 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_convert_u8_to_u16 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_convert_u8_to_u16 (guint16 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int n)
|
|
{
|
|
int i;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
orc_int8 var32;
|
|
orc_int8 var33;
|
|
orc_union16 var34;
|
|
|
|
ptr0 = (orc_union16 *) d1;
|
|
ptr4 = (orc_int8 *) s1;
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var32 = ptr4[i];
|
|
/* 1: loadb */
|
|
var33 = ptr4[i];
|
|
/* 2: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var32;
|
|
_dest.x2[1] = var33;
|
|
var34.i = _dest.i;
|
|
}
|
|
/* 3: storew */
|
|
ptr0[i] = var34;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_convert_u8_to_u16 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
orc_int8 var32;
|
|
orc_int8 var33;
|
|
orc_union16 var34;
|
|
|
|
ptr0 = (orc_union16 *) ex->arrays[0];
|
|
ptr4 = (orc_int8 *) ex->arrays[4];
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var32 = ptr4[i];
|
|
/* 1: loadb */
|
|
var33 = ptr4[i];
|
|
/* 2: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var32;
|
|
_dest.x2[1] = var33;
|
|
var34.i = _dest.i;
|
|
}
|
|
/* 3: storew */
|
|
ptr0[i] = var34;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_convert_u8_to_u16 (guint16 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int n)
|
|
{
|
|
OrcExecutor _ex, *ex = &_ex;
|
|
static volatile int p_inited = 0;
|
|
static OrcCode *c = 0;
|
|
void (*func) (OrcExecutor *);
|
|
|
|
if (!p_inited) {
|
|
orc_once_mutex_lock ();
|
|
if (!p_inited) {
|
|
OrcProgram *p;
|
|
|
|
#if 1
|
|
static const orc_uint8 bc[] = {
|
|
1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, 110,
|
|
118, 101, 114, 116, 95, 117, 56, 95, 116, 111, 95, 117, 49, 54, 11, 2,
|
|
2, 12, 1, 1, 196, 0, 4, 4, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_u8_to_u16);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_convert_u8_to_u16");
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_u8_to_u16);
|
|
orc_program_add_destination (p, 2, "d1");
|
|
orc_program_add_source (p, 1, "s1");
|
|
|
|
orc_program_append_2 (p, "mergebw", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S1,
|
|
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_splat_u16 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_splat_u16 (guint8 * ORC_RESTRICT d1, int p1, int n)
|
|
{
|
|
int i;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
orc_union16 var32;
|
|
|
|
ptr0 = (orc_union16 *) d1;
|
|
|
|
/* 0: loadpw */
|
|
var32.i = p1;
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 1: storew */
|
|
ptr0[i] = var32;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_splat_u16 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
orc_union16 var32;
|
|
|
|
ptr0 = (orc_union16 *) ex->arrays[0];
|
|
|
|
/* 0: loadpw */
|
|
var32.i = ex->params[24];
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 1: storew */
|
|
ptr0[i] = var32;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_splat_u16 (guint8 * ORC_RESTRICT d1, int p1, 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, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 115, 112, 108,
|
|
97, 116, 95, 117, 49, 54, 11, 2, 2, 16, 2, 97, 0, 24, 2, 0,
|
|
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_splat_u16);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_splat_u16");
|
|
orc_program_set_backup_function (p, _backup_video_orc_splat_u16);
|
|
orc_program_add_destination (p, 2, "d1");
|
|
orc_program_add_parameter (p, 2, "p1");
|
|
|
|
orc_program_append_2 (p, "storew", 0, ORC_VAR_D1, ORC_VAR_P1, 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->params[ORC_VAR_P1] = p1;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_splat_u32 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_splat_u32 (guint8 * ORC_RESTRICT d1, int p1, int n)
|
|
{
|
|
int i;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
orc_union32 var32;
|
|
|
|
ptr0 = (orc_union32 *) d1;
|
|
|
|
/* 0: loadpl */
|
|
var32.i = p1;
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 1: storel */
|
|
ptr0[i] = var32;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_splat_u32 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
orc_union32 var32;
|
|
|
|
ptr0 = (orc_union32 *) ex->arrays[0];
|
|
|
|
/* 0: loadpl */
|
|
var32.i = ex->params[24];
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 1: storel */
|
|
ptr0[i] = var32;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_splat_u32 (guint8 * ORC_RESTRICT d1, int p1, 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, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 115, 112, 108,
|
|
97, 116, 95, 117, 51, 50, 11, 4, 4, 16, 4, 128, 0, 24, 2, 0,
|
|
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_splat_u32);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_splat_u32");
|
|
orc_program_set_backup_function (p, _backup_video_orc_splat_u32);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_parameter (p, 4, "p1");
|
|
|
|
orc_program_append_2 (p, "storel", 0, ORC_VAR_D1, ORC_VAR_P1, 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->params[ORC_VAR_P1] = p1;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_splat_u64 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_splat_u64 (guint8 * ORC_RESTRICT d1, orc_int64 p1, int n)
|
|
{
|
|
int i;
|
|
orc_union64 *ORC_RESTRICT ptr0;
|
|
orc_union64 var32;
|
|
|
|
ptr0 = (orc_union64 *) d1;
|
|
|
|
/* 0: loadpq */
|
|
var32.i = p1;
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 1: storeq */
|
|
ptr0[i] = var32;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_splat_u64 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union64 *ORC_RESTRICT ptr0;
|
|
orc_union64 var32;
|
|
|
|
ptr0 = (orc_union64 *) ex->arrays[0];
|
|
|
|
/* 0: loadpq */
|
|
var32.i =
|
|
(ex->params[24] & 0xffffffff) | ((orc_uint64) (ex->params[24 +
|
|
(ORC_VAR_T1 - ORC_VAR_P1)]) << 32);
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 1: storeq */
|
|
ptr0[i] = var32;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_splat_u64 (guint8 * ORC_RESTRICT d1, orc_int64 p1, 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, 19, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 115, 112, 108,
|
|
97, 116, 95, 117, 54, 52, 11, 8, 8, 18, 8, 135, 0, 24, 2, 0,
|
|
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_splat_u64);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_splat_u64");
|
|
orc_program_set_backup_function (p, _backup_video_orc_splat_u64);
|
|
orc_program_add_destination (p, 8, "d1");
|
|
orc_program_add_parameter_int64 (p, 8, "p1");
|
|
|
|
orc_program_append_2 (p, "storeq", 0, ORC_VAR_D1, ORC_VAR_P1, 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;
|
|
{
|
|
orc_union64 tmp;
|
|
tmp.i = p1;
|
|
ex->params[ORC_VAR_P1] = ((orc_uint64) tmp.i) & 0xffffffff;
|
|
ex->params[ORC_VAR_T1] = ((orc_uint64) tmp.i) >> 32;
|
|
}
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_splat2_u64 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_splat2_u64 (guint8 * ORC_RESTRICT d1, int p1, int n)
|
|
{
|
|
int i;
|
|
orc_union64 *ORC_RESTRICT ptr0;
|
|
orc_union64 var33;
|
|
orc_union32 var34;
|
|
|
|
ptr0 = (orc_union64 *) d1;
|
|
|
|
/* 0: loadpl */
|
|
var34.i = p1;
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 1: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var34.x4[0];
|
|
_dest.x2[1] = var34.x4[0];
|
|
var33.x4[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var34.x4[1];
|
|
_dest.x2[1] = var34.x4[1];
|
|
var33.x4[1] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var34.x4[2];
|
|
_dest.x2[1] = var34.x4[2];
|
|
var33.x4[2] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var34.x4[3];
|
|
_dest.x2[1] = var34.x4[3];
|
|
var33.x4[3] = _dest.i;
|
|
}
|
|
/* 2: storeq */
|
|
ptr0[i] = var33;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_splat2_u64 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union64 *ORC_RESTRICT ptr0;
|
|
orc_union64 var33;
|
|
orc_union32 var34;
|
|
|
|
ptr0 = (orc_union64 *) ex->arrays[0];
|
|
|
|
/* 0: loadpl */
|
|
var34.i = ex->params[24];
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 1: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var34.x4[0];
|
|
_dest.x2[1] = var34.x4[0];
|
|
var33.x4[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var34.x4[1];
|
|
_dest.x2[1] = var34.x4[1];
|
|
var33.x4[1] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var34.x4[2];
|
|
_dest.x2[1] = var34.x4[2];
|
|
var33.x4[2] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var34.x4[3];
|
|
_dest.x2[1] = var34.x4[3];
|
|
var33.x4[3] = _dest.i;
|
|
}
|
|
/* 2: storeq */
|
|
ptr0[i] = var33;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_splat2_u64 (guint8 * ORC_RESTRICT d1, int p1, 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, 115, 112, 108,
|
|
97, 116, 50, 95, 117, 54, 52, 11, 8, 8, 16, 4, 20, 4, 115, 32,
|
|
24, 21, 2, 196, 0, 32, 32, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_splat2_u64);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_splat2_u64");
|
|
orc_program_set_backup_function (p, _backup_video_orc_splat2_u64);
|
|
orc_program_add_destination (p, 8, "d1");
|
|
orc_program_add_parameter (p, 4, "p1");
|
|
orc_program_add_temporary (p, 4, "t1");
|
|
|
|
orc_program_append_2 (p, "loadpl", 0, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 2, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
#endif
|
|
|
|
orc_program_compile (p);
|
|
c = orc_program_take_code (p);
|
|
orc_program_free (p);
|
|
}
|
|
p_inited = TRUE;
|
|
orc_once_mutex_unlock ();
|
|
}
|
|
ex->arrays[ORC_VAR_A2] = c;
|
|
ex->program = 0;
|
|
|
|
ex->n = n;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->params[ORC_VAR_P1] = p1;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_convert_I420_UYVY */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_convert_I420_UYVY (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
|
|
const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n)
|
|
{
|
|
int i;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
orc_union32 *ORC_RESTRICT ptr1;
|
|
const orc_union16 *ORC_RESTRICT ptr4;
|
|
const orc_union16 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
const orc_int8 *ORC_RESTRICT ptr7;
|
|
orc_int8 var33;
|
|
orc_int8 var34;
|
|
orc_union16 var35;
|
|
orc_union32 var36;
|
|
orc_union16 var37;
|
|
orc_union32 var38;
|
|
orc_union16 var39;
|
|
|
|
ptr0 = (orc_union32 *) d1;
|
|
ptr1 = (orc_union32 *) d2;
|
|
ptr4 = (orc_union16 *) s1;
|
|
ptr5 = (orc_union16 *) s2;
|
|
ptr6 = (orc_int8 *) s3;
|
|
ptr7 = (orc_int8 *) s4;
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var33 = ptr6[i];
|
|
/* 1: loadb */
|
|
var34 = ptr7[i];
|
|
/* 2: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var33;
|
|
_dest.x2[1] = var34;
|
|
var39.i = _dest.i;
|
|
}
|
|
/* 3: loadw */
|
|
var35 = ptr4[i];
|
|
/* 4: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var39.x2[0];
|
|
_dest.x2[1] = var35.x2[0];
|
|
var36.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var39.x2[1];
|
|
_dest.x2[1] = var35.x2[1];
|
|
var36.x2[1] = _dest.i;
|
|
}
|
|
/* 5: storel */
|
|
ptr0[i] = var36;
|
|
/* 6: loadw */
|
|
var37 = ptr5[i];
|
|
/* 7: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var39.x2[0];
|
|
_dest.x2[1] = var37.x2[0];
|
|
var38.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var39.x2[1];
|
|
_dest.x2[1] = var37.x2[1];
|
|
var38.x2[1] = _dest.i;
|
|
}
|
|
/* 8: storel */
|
|
ptr1[i] = var38;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_convert_I420_UYVY (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
orc_union32 *ORC_RESTRICT ptr1;
|
|
const orc_union16 *ORC_RESTRICT ptr4;
|
|
const orc_union16 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
const orc_int8 *ORC_RESTRICT ptr7;
|
|
orc_int8 var33;
|
|
orc_int8 var34;
|
|
orc_union16 var35;
|
|
orc_union32 var36;
|
|
orc_union16 var37;
|
|
orc_union32 var38;
|
|
orc_union16 var39;
|
|
|
|
ptr0 = (orc_union32 *) ex->arrays[0];
|
|
ptr1 = (orc_union32 *) ex->arrays[1];
|
|
ptr4 = (orc_union16 *) ex->arrays[4];
|
|
ptr5 = (orc_union16 *) ex->arrays[5];
|
|
ptr6 = (orc_int8 *) ex->arrays[6];
|
|
ptr7 = (orc_int8 *) ex->arrays[7];
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var33 = ptr6[i];
|
|
/* 1: loadb */
|
|
var34 = ptr7[i];
|
|
/* 2: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var33;
|
|
_dest.x2[1] = var34;
|
|
var39.i = _dest.i;
|
|
}
|
|
/* 3: loadw */
|
|
var35 = ptr4[i];
|
|
/* 4: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var39.x2[0];
|
|
_dest.x2[1] = var35.x2[0];
|
|
var36.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var39.x2[1];
|
|
_dest.x2[1] = var35.x2[1];
|
|
var36.x2[1] = _dest.i;
|
|
}
|
|
/* 5: storel */
|
|
ptr0[i] = var36;
|
|
/* 6: loadw */
|
|
var37 = ptr5[i];
|
|
/* 7: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var39.x2[0];
|
|
_dest.x2[1] = var37.x2[0];
|
|
var38.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var39.x2[1];
|
|
_dest.x2[1] = var37.x2[1];
|
|
var38.x2[1] = _dest.i;
|
|
}
|
|
/* 8: storel */
|
|
ptr1[i] = var38;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_convert_I420_UYVY (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
|
|
const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, 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, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, 110,
|
|
118, 101, 114, 116, 95, 73, 52, 50, 48, 95, 85, 89, 86, 89, 11, 4,
|
|
4, 11, 4, 4, 12, 2, 2, 12, 2, 2, 12, 1, 1, 12, 1, 1,
|
|
20, 2, 196, 32, 6, 7, 21, 1, 196, 0, 32, 4, 21, 1, 196, 1,
|
|
32, 5, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_I420_UYVY);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_convert_I420_UYVY");
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_I420_UYVY);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_destination (p, 4, "d2");
|
|
orc_program_add_source (p, 2, "s1");
|
|
orc_program_add_source (p, 2, "s2");
|
|
orc_program_add_source (p, 1, "s3");
|
|
orc_program_add_source (p, 1, "s4");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
|
|
orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S3, ORC_VAR_S4,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D2, ORC_VAR_T1, ORC_VAR_S2,
|
|
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_D2] = d2;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
ex->arrays[ORC_VAR_S3] = (void *) s3;
|
|
ex->arrays[ORC_VAR_S4] = (void *) s4;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_convert_I420_YUY2 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_convert_I420_YUY2 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
|
|
const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n)
|
|
{
|
|
int i;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
orc_union32 *ORC_RESTRICT ptr1;
|
|
const orc_union16 *ORC_RESTRICT ptr4;
|
|
const orc_union16 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
const orc_int8 *ORC_RESTRICT ptr7;
|
|
orc_int8 var33;
|
|
orc_int8 var34;
|
|
orc_union16 var35;
|
|
orc_union32 var36;
|
|
orc_union16 var37;
|
|
orc_union32 var38;
|
|
orc_union16 var39;
|
|
|
|
ptr0 = (orc_union32 *) d1;
|
|
ptr1 = (orc_union32 *) d2;
|
|
ptr4 = (orc_union16 *) s1;
|
|
ptr5 = (orc_union16 *) s2;
|
|
ptr6 = (orc_int8 *) s3;
|
|
ptr7 = (orc_int8 *) s4;
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var33 = ptr6[i];
|
|
/* 1: loadb */
|
|
var34 = ptr7[i];
|
|
/* 2: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var33;
|
|
_dest.x2[1] = var34;
|
|
var39.i = _dest.i;
|
|
}
|
|
/* 3: loadw */
|
|
var35 = ptr4[i];
|
|
/* 4: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var35.x2[0];
|
|
_dest.x2[1] = var39.x2[0];
|
|
var36.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var35.x2[1];
|
|
_dest.x2[1] = var39.x2[1];
|
|
var36.x2[1] = _dest.i;
|
|
}
|
|
/* 5: storel */
|
|
ptr0[i] = var36;
|
|
/* 6: loadw */
|
|
var37 = ptr5[i];
|
|
/* 7: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var37.x2[0];
|
|
_dest.x2[1] = var39.x2[0];
|
|
var38.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var37.x2[1];
|
|
_dest.x2[1] = var39.x2[1];
|
|
var38.x2[1] = _dest.i;
|
|
}
|
|
/* 8: storel */
|
|
ptr1[i] = var38;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_convert_I420_YUY2 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
orc_union32 *ORC_RESTRICT ptr1;
|
|
const orc_union16 *ORC_RESTRICT ptr4;
|
|
const orc_union16 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
const orc_int8 *ORC_RESTRICT ptr7;
|
|
orc_int8 var33;
|
|
orc_int8 var34;
|
|
orc_union16 var35;
|
|
orc_union32 var36;
|
|
orc_union16 var37;
|
|
orc_union32 var38;
|
|
orc_union16 var39;
|
|
|
|
ptr0 = (orc_union32 *) ex->arrays[0];
|
|
ptr1 = (orc_union32 *) ex->arrays[1];
|
|
ptr4 = (orc_union16 *) ex->arrays[4];
|
|
ptr5 = (orc_union16 *) ex->arrays[5];
|
|
ptr6 = (orc_int8 *) ex->arrays[6];
|
|
ptr7 = (orc_int8 *) ex->arrays[7];
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var33 = ptr6[i];
|
|
/* 1: loadb */
|
|
var34 = ptr7[i];
|
|
/* 2: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var33;
|
|
_dest.x2[1] = var34;
|
|
var39.i = _dest.i;
|
|
}
|
|
/* 3: loadw */
|
|
var35 = ptr4[i];
|
|
/* 4: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var35.x2[0];
|
|
_dest.x2[1] = var39.x2[0];
|
|
var36.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var35.x2[1];
|
|
_dest.x2[1] = var39.x2[1];
|
|
var36.x2[1] = _dest.i;
|
|
}
|
|
/* 5: storel */
|
|
ptr0[i] = var36;
|
|
/* 6: loadw */
|
|
var37 = ptr5[i];
|
|
/* 7: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var37.x2[0];
|
|
_dest.x2[1] = var39.x2[0];
|
|
var38.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var37.x2[1];
|
|
_dest.x2[1] = var39.x2[1];
|
|
var38.x2[1] = _dest.i;
|
|
}
|
|
/* 8: storel */
|
|
ptr1[i] = var38;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_convert_I420_YUY2 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
|
|
const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, 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, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, 110,
|
|
118, 101, 114, 116, 95, 73, 52, 50, 48, 95, 89, 85, 89, 50, 11, 4,
|
|
4, 11, 4, 4, 12, 2, 2, 12, 2, 2, 12, 1, 1, 12, 1, 1,
|
|
20, 2, 196, 32, 6, 7, 21, 1, 196, 0, 4, 32, 21, 1, 196, 1,
|
|
5, 32, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_I420_YUY2);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_convert_I420_YUY2");
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_I420_YUY2);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_destination (p, 4, "d2");
|
|
orc_program_add_source (p, 2, "s1");
|
|
orc_program_add_source (p, 2, "s2");
|
|
orc_program_add_source (p, 1, "s3");
|
|
orc_program_add_source (p, 1, "s4");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
|
|
orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S3, ORC_VAR_S4,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D2, ORC_VAR_S2, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
#endif
|
|
|
|
orc_program_compile (p);
|
|
c = orc_program_take_code (p);
|
|
orc_program_free (p);
|
|
}
|
|
p_inited = TRUE;
|
|
orc_once_mutex_unlock ();
|
|
}
|
|
ex->arrays[ORC_VAR_A2] = c;
|
|
ex->program = 0;
|
|
|
|
ex->n = n;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->arrays[ORC_VAR_D2] = d2;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
ex->arrays[ORC_VAR_S3] = (void *) s3;
|
|
ex->arrays[ORC_VAR_S4] = (void *) s4;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_convert_I420_AYUV */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_convert_I420_AYUV (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
|
|
const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n)
|
|
{
|
|
int i;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
orc_union32 *ORC_RESTRICT ptr1;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
const orc_int8 *ORC_RESTRICT ptr7;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_int8 var36;
|
|
#else
|
|
orc_int8 var36;
|
|
#endif
|
|
orc_int8 var37;
|
|
orc_union32 var38;
|
|
orc_int8 var39;
|
|
orc_union32 var40;
|
|
orc_int8 var41;
|
|
orc_int8 var42;
|
|
orc_union16 var43;
|
|
orc_union16 var44;
|
|
orc_union16 var45;
|
|
|
|
ptr0 = (orc_union32 *) d1;
|
|
ptr1 = (orc_union32 *) d2;
|
|
ptr4 = (orc_int8 *) s1;
|
|
ptr5 = (orc_int8 *) s2;
|
|
ptr6 = (orc_int8 *) s3;
|
|
ptr7 = (orc_int8 *) s4;
|
|
|
|
/* 3: loadpb */
|
|
var36 = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadupdb */
|
|
var41 = ptr6[i >> 1];
|
|
/* 1: loadupdb */
|
|
var42 = ptr7[i >> 1];
|
|
/* 2: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var41;
|
|
_dest.x2[1] = var42;
|
|
var43.i = _dest.i;
|
|
}
|
|
/* 4: loadb */
|
|
var37 = ptr4[i];
|
|
/* 5: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var36;
|
|
_dest.x2[1] = var37;
|
|
var44.i = _dest.i;
|
|
}
|
|
/* 6: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var44.i;
|
|
_dest.x2[1] = var43.i;
|
|
var38.i = _dest.i;
|
|
}
|
|
/* 7: storel */
|
|
ptr0[i] = var38;
|
|
/* 8: loadb */
|
|
var39 = ptr5[i];
|
|
/* 9: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var36;
|
|
_dest.x2[1] = var39;
|
|
var45.i = _dest.i;
|
|
}
|
|
/* 10: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var45.i;
|
|
_dest.x2[1] = var43.i;
|
|
var40.i = _dest.i;
|
|
}
|
|
/* 11: storel */
|
|
ptr1[i] = var40;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_convert_I420_AYUV (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
orc_union32 *ORC_RESTRICT ptr1;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
const orc_int8 *ORC_RESTRICT ptr7;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_int8 var36;
|
|
#else
|
|
orc_int8 var36;
|
|
#endif
|
|
orc_int8 var37;
|
|
orc_union32 var38;
|
|
orc_int8 var39;
|
|
orc_union32 var40;
|
|
orc_int8 var41;
|
|
orc_int8 var42;
|
|
orc_union16 var43;
|
|
orc_union16 var44;
|
|
orc_union16 var45;
|
|
|
|
ptr0 = (orc_union32 *) ex->arrays[0];
|
|
ptr1 = (orc_union32 *) ex->arrays[1];
|
|
ptr4 = (orc_int8 *) ex->arrays[4];
|
|
ptr5 = (orc_int8 *) ex->arrays[5];
|
|
ptr6 = (orc_int8 *) ex->arrays[6];
|
|
ptr7 = (orc_int8 *) ex->arrays[7];
|
|
|
|
/* 3: loadpb */
|
|
var36 = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadupdb */
|
|
var41 = ptr6[i >> 1];
|
|
/* 1: loadupdb */
|
|
var42 = ptr7[i >> 1];
|
|
/* 2: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var41;
|
|
_dest.x2[1] = var42;
|
|
var43.i = _dest.i;
|
|
}
|
|
/* 4: loadb */
|
|
var37 = ptr4[i];
|
|
/* 5: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var36;
|
|
_dest.x2[1] = var37;
|
|
var44.i = _dest.i;
|
|
}
|
|
/* 6: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var44.i;
|
|
_dest.x2[1] = var43.i;
|
|
var38.i = _dest.i;
|
|
}
|
|
/* 7: storel */
|
|
ptr0[i] = var38;
|
|
/* 8: loadb */
|
|
var39 = ptr5[i];
|
|
/* 9: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var36;
|
|
_dest.x2[1] = var39;
|
|
var45.i = _dest.i;
|
|
}
|
|
/* 10: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var45.i;
|
|
_dest.x2[1] = var43.i;
|
|
var40.i = _dest.i;
|
|
}
|
|
/* 11: storel */
|
|
ptr1[i] = var40;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_convert_I420_AYUV (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
|
|
const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, 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, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, 110,
|
|
118, 101, 114, 116, 95, 73, 52, 50, 48, 95, 65, 89, 85, 86, 11, 4,
|
|
4, 11, 4, 4, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1,
|
|
14, 1, 255, 0, 0, 0, 20, 2, 20, 2, 20, 1, 20, 1, 45, 34,
|
|
6, 45, 35, 7, 196, 32, 34, 35, 196, 33, 16, 4, 195, 0, 33, 32,
|
|
196, 33, 16, 5, 195, 1, 33, 32, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_I420_AYUV);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_convert_I420_AYUV");
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_I420_AYUV);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_destination (p, 4, "d2");
|
|
orc_program_add_source (p, 1, "s1");
|
|
orc_program_add_source (p, 1, "s2");
|
|
orc_program_add_source (p, 1, "s3");
|
|
orc_program_add_source (p, 1, "s4");
|
|
orc_program_add_constant (p, 1, 0x000000ff, "c1");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 2, "t2");
|
|
orc_program_add_temporary (p, 1, "t3");
|
|
orc_program_add_temporary (p, 1, "t4");
|
|
|
|
orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T3, ORC_VAR_S3,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T4, ORC_VAR_S4,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
#endif
|
|
|
|
orc_program_compile (p);
|
|
c = orc_program_take_code (p);
|
|
orc_program_free (p);
|
|
}
|
|
p_inited = TRUE;
|
|
orc_once_mutex_unlock ();
|
|
}
|
|
ex->arrays[ORC_VAR_A2] = c;
|
|
ex->program = 0;
|
|
|
|
ex->n = n;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->arrays[ORC_VAR_D2] = d2;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
ex->arrays[ORC_VAR_S3] = (void *) s3;
|
|
ex->arrays[ORC_VAR_S4] = (void *) s4;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_convert_YUY2_I420 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_convert_YUY2_I420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
|
guint8 * ORC_RESTRICT d3, guint8 * ORC_RESTRICT d4,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
|
|
{
|
|
int i;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
orc_union16 *ORC_RESTRICT ptr1;
|
|
orc_int8 *ORC_RESTRICT ptr2;
|
|
orc_int8 *ORC_RESTRICT ptr3;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
const orc_union32 *ORC_RESTRICT ptr5;
|
|
orc_union32 var35;
|
|
orc_union32 var36;
|
|
orc_int8 var37;
|
|
orc_int8 var38;
|
|
orc_union16 var39;
|
|
orc_union16 var40;
|
|
orc_union16 var41;
|
|
orc_union16 var42;
|
|
orc_union16 var43;
|
|
|
|
ptr0 = (orc_union16 *) d1;
|
|
ptr1 = (orc_union16 *) d2;
|
|
ptr2 = (orc_int8 *) d3;
|
|
ptr3 = (orc_int8 *) d4;
|
|
ptr4 = (orc_union32 *) s1;
|
|
ptr5 = (orc_union32 *) s2;
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var35 = ptr4[i];
|
|
/* 1: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var35.x2[0];
|
|
var39.x2[0] = _src.x2[1];
|
|
var40.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var35.x2[1];
|
|
var39.x2[1] = _src.x2[1];
|
|
var40.x2[1] = _src.x2[0];
|
|
}
|
|
/* 2: storew */
|
|
ptr0[i] = var40;
|
|
/* 3: loadl */
|
|
var36 = ptr5[i];
|
|
/* 4: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var36.x2[0];
|
|
var41.x2[0] = _src.x2[1];
|
|
var42.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var36.x2[1];
|
|
var41.x2[1] = _src.x2[1];
|
|
var42.x2[1] = _src.x2[0];
|
|
}
|
|
/* 5: storew */
|
|
ptr1[i] = var42;
|
|
/* 6: avgub */
|
|
var43.x2[0] = ((orc_uint8) var39.x2[0] + (orc_uint8) var41.x2[0] + 1) >> 1;
|
|
var43.x2[1] = ((orc_uint8) var39.x2[1] + (orc_uint8) var41.x2[1] + 1) >> 1;
|
|
/* 7: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var43.i;
|
|
var37 = _src.x2[1];
|
|
var38 = _src.x2[0];
|
|
}
|
|
/* 8: storeb */
|
|
ptr3[i] = var37;
|
|
/* 9: storeb */
|
|
ptr2[i] = var38;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_convert_YUY2_I420 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
orc_union16 *ORC_RESTRICT ptr1;
|
|
orc_int8 *ORC_RESTRICT ptr2;
|
|
orc_int8 *ORC_RESTRICT ptr3;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
const orc_union32 *ORC_RESTRICT ptr5;
|
|
orc_union32 var35;
|
|
orc_union32 var36;
|
|
orc_int8 var37;
|
|
orc_int8 var38;
|
|
orc_union16 var39;
|
|
orc_union16 var40;
|
|
orc_union16 var41;
|
|
orc_union16 var42;
|
|
orc_union16 var43;
|
|
|
|
ptr0 = (orc_union16 *) ex->arrays[0];
|
|
ptr1 = (orc_union16 *) ex->arrays[1];
|
|
ptr2 = (orc_int8 *) ex->arrays[2];
|
|
ptr3 = (orc_int8 *) ex->arrays[3];
|
|
ptr4 = (orc_union32 *) ex->arrays[4];
|
|
ptr5 = (orc_union32 *) ex->arrays[5];
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var35 = ptr4[i];
|
|
/* 1: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var35.x2[0];
|
|
var39.x2[0] = _src.x2[1];
|
|
var40.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var35.x2[1];
|
|
var39.x2[1] = _src.x2[1];
|
|
var40.x2[1] = _src.x2[0];
|
|
}
|
|
/* 2: storew */
|
|
ptr0[i] = var40;
|
|
/* 3: loadl */
|
|
var36 = ptr5[i];
|
|
/* 4: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var36.x2[0];
|
|
var41.x2[0] = _src.x2[1];
|
|
var42.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var36.x2[1];
|
|
var41.x2[1] = _src.x2[1];
|
|
var42.x2[1] = _src.x2[0];
|
|
}
|
|
/* 5: storew */
|
|
ptr1[i] = var42;
|
|
/* 6: avgub */
|
|
var43.x2[0] = ((orc_uint8) var39.x2[0] + (orc_uint8) var41.x2[0] + 1) >> 1;
|
|
var43.x2[1] = ((orc_uint8) var39.x2[1] + (orc_uint8) var41.x2[1] + 1) >> 1;
|
|
/* 7: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var43.i;
|
|
var37 = _src.x2[1];
|
|
var38 = _src.x2[0];
|
|
}
|
|
/* 8: storeb */
|
|
ptr3[i] = var37;
|
|
/* 9: storeb */
|
|
ptr2[i] = var38;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_convert_YUY2_I420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
|
guint8 * ORC_RESTRICT d3, guint8 * ORC_RESTRICT d4,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, 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, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, 110,
|
|
118, 101, 114, 116, 95, 89, 85, 89, 50, 95, 73, 52, 50, 48, 11, 2,
|
|
2, 11, 2, 2, 11, 1, 1, 11, 1, 1, 12, 4, 4, 12, 4, 4,
|
|
20, 2, 20, 2, 20, 2, 21, 1, 199, 32, 34, 4, 97, 0, 34, 21,
|
|
1, 199, 33, 34, 5, 97, 1, 34, 21, 1, 39, 32, 32, 33, 199, 3,
|
|
2, 32, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_YUY2_I420);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_convert_YUY2_I420");
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_YUY2_I420);
|
|
orc_program_add_destination (p, 2, "d1");
|
|
orc_program_add_destination (p, 2, "d2");
|
|
orc_program_add_destination (p, 1, "d3");
|
|
orc_program_add_destination (p, 1, "d4");
|
|
orc_program_add_source (p, 4, "s1");
|
|
orc_program_add_source (p, 4, "s2");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 2, "t2");
|
|
orc_program_add_temporary (p, 2, "t3");
|
|
|
|
orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "storew", 0, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_S2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "storew", 0, ORC_VAR_D2, ORC_VAR_T3, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "avgub", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D4, ORC_VAR_D3, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
#endif
|
|
|
|
orc_program_compile (p);
|
|
c = orc_program_take_code (p);
|
|
orc_program_free (p);
|
|
}
|
|
p_inited = TRUE;
|
|
orc_once_mutex_unlock ();
|
|
}
|
|
ex->arrays[ORC_VAR_A2] = c;
|
|
ex->program = 0;
|
|
|
|
ex->n = n;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->arrays[ORC_VAR_D2] = d2;
|
|
ex->arrays[ORC_VAR_D3] = d3;
|
|
ex->arrays[ORC_VAR_D4] = d4;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_convert_UYVY_YUY2 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_convert_UYVY_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
|
|
{
|
|
int i;
|
|
int j;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var32;
|
|
orc_union32 var33;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
|
|
ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var32 = ptr4[i];
|
|
/* 1: swapw */
|
|
var33.x2[0] = ORC_SWAP_W (var32.x2[0]);
|
|
var33.x2[1] = ORC_SWAP_W (var32.x2[1]);
|
|
/* 2: storel */
|
|
ptr0[i] = var33;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_convert_UYVY_YUY2 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int j;
|
|
int n = ex->n;
|
|
int m = ex->params[ORC_VAR_A1];
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var32;
|
|
orc_union32 var33;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
|
|
ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var32 = ptr4[i];
|
|
/* 1: swapw */
|
|
var33.x2[0] = ORC_SWAP_W (var32.x2[0]);
|
|
var33.x2[1] = ORC_SWAP_W (var32.x2[1]);
|
|
/* 2: storel */
|
|
ptr0[i] = var33;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_convert_UYVY_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
|
|
{
|
|
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, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
|
|
110, 118, 101, 114, 116, 95, 85, 89, 86, 89, 95, 89, 85, 89, 50, 11,
|
|
4, 4, 12, 4, 4, 21, 1, 183, 0, 4, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_YUY2);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_2d (p);
|
|
orc_program_set_name (p, "video_orc_convert_UYVY_YUY2");
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_YUY2);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 4, "s1");
|
|
|
|
orc_program_append_2 (p, "swapw", 1, ORC_VAR_D1, ORC_VAR_S1, 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;
|
|
ORC_EXECUTOR_M (ex) = m;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->params[ORC_VAR_D1] = d1_stride;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->params[ORC_VAR_S1] = s1_stride;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_planar_chroma_420_422 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_planar_chroma_420_422 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
guint8 * ORC_RESTRICT d2, int d2_stride, const guint8 * ORC_RESTRICT s1,
|
|
int s1_stride, int n, int m)
|
|
{
|
|
int i;
|
|
int j;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
orc_int8 *ORC_RESTRICT ptr1;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
orc_int8 var32;
|
|
orc_int8 var33;
|
|
orc_int8 var34;
|
|
orc_int8 var35;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
|
|
ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
|
|
ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var32 = ptr4[i];
|
|
/* 1: copyb */
|
|
var33 = var32;
|
|
/* 2: storeb */
|
|
ptr0[i] = var33;
|
|
/* 3: loadb */
|
|
var34 = ptr4[i];
|
|
/* 4: copyb */
|
|
var35 = var34;
|
|
/* 5: storeb */
|
|
ptr1[i] = var35;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_planar_chroma_420_422 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int j;
|
|
int n = ex->n;
|
|
int m = ex->params[ORC_VAR_A1];
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
orc_int8 *ORC_RESTRICT ptr1;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
orc_int8 var32;
|
|
orc_int8 var33;
|
|
orc_int8 var34;
|
|
orc_int8 var35;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
|
|
ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
|
|
ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var32 = ptr4[i];
|
|
/* 1: copyb */
|
|
var33 = var32;
|
|
/* 2: storeb */
|
|
ptr0[i] = var33;
|
|
/* 3: loadb */
|
|
var34 = ptr4[i];
|
|
/* 4: copyb */
|
|
var35 = var34;
|
|
/* 5: storeb */
|
|
ptr1[i] = var35;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_planar_chroma_420_422 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
guint8 * ORC_RESTRICT d2, int d2_stride, const guint8 * ORC_RESTRICT s1,
|
|
int s1_stride, int n, int m)
|
|
{
|
|
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, 7, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 108,
|
|
97, 110, 97, 114, 95, 99, 104, 114, 111, 109, 97, 95, 52, 50, 48, 95,
|
|
52, 50, 50, 11, 1, 1, 11, 1, 1, 12, 1, 1, 42, 0, 4, 42,
|
|
1, 4, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_planar_chroma_420_422);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_2d (p);
|
|
orc_program_set_name (p, "video_orc_planar_chroma_420_422");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_planar_chroma_420_422);
|
|
orc_program_add_destination (p, 1, "d1");
|
|
orc_program_add_destination (p, 1, "d2");
|
|
orc_program_add_source (p, 1, "s1");
|
|
|
|
orc_program_append_2 (p, "copyb", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "copyb", 0, ORC_VAR_D2, ORC_VAR_S1, 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;
|
|
ORC_EXECUTOR_M (ex) = m;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->params[ORC_VAR_D1] = d1_stride;
|
|
ex->arrays[ORC_VAR_D2] = d2;
|
|
ex->params[ORC_VAR_D2] = d2_stride;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->params[ORC_VAR_S1] = s1_stride;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_planar_chroma_420_444 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_planar_chroma_420_444 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
guint8 * ORC_RESTRICT d2, int d2_stride, const guint8 * ORC_RESTRICT s1,
|
|
int s1_stride, int n, int m)
|
|
{
|
|
int i;
|
|
int j;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
orc_union16 *ORC_RESTRICT ptr1;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
orc_int8 var33;
|
|
orc_union16 var34;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
|
|
ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
|
|
ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var33 = ptr4[i];
|
|
/* 1: splatbw */
|
|
var34.i = ((var33 & 0xff) << 8) | (var33 & 0xff);
|
|
/* 2: storew */
|
|
ptr0[i] = var34;
|
|
/* 3: storew */
|
|
ptr1[i] = var34;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_planar_chroma_420_444 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int j;
|
|
int n = ex->n;
|
|
int m = ex->params[ORC_VAR_A1];
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
orc_union16 *ORC_RESTRICT ptr1;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
orc_int8 var33;
|
|
orc_union16 var34;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
|
|
ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
|
|
ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var33 = ptr4[i];
|
|
/* 1: splatbw */
|
|
var34.i = ((var33 & 0xff) << 8) | (var33 & 0xff);
|
|
/* 2: storew */
|
|
ptr0[i] = var34;
|
|
/* 3: storew */
|
|
ptr1[i] = var34;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_planar_chroma_420_444 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
guint8 * ORC_RESTRICT d2, int d2_stride, const guint8 * ORC_RESTRICT s1,
|
|
int s1_stride, int n, int m)
|
|
{
|
|
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, 7, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 108,
|
|
97, 110, 97, 114, 95, 99, 104, 114, 111, 109, 97, 95, 52, 50, 48, 95,
|
|
52, 52, 52, 11, 2, 2, 11, 2, 2, 12, 1, 1, 20, 2, 151, 32,
|
|
4, 97, 0, 32, 97, 1, 32, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_planar_chroma_420_444);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_2d (p);
|
|
orc_program_set_name (p, "video_orc_planar_chroma_420_444");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_planar_chroma_420_444);
|
|
orc_program_add_destination (p, 2, "d1");
|
|
orc_program_add_destination (p, 2, "d2");
|
|
orc_program_add_source (p, 1, "s1");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
|
|
orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "storew", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "storew", 0, ORC_VAR_D2, ORC_VAR_T1, 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;
|
|
ORC_EXECUTOR_M (ex) = m;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->params[ORC_VAR_D1] = d1_stride;
|
|
ex->arrays[ORC_VAR_D2] = d2;
|
|
ex->params[ORC_VAR_D2] = d2_stride;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->params[ORC_VAR_S1] = s1_stride;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_planar_chroma_422_444 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_planar_chroma_422_444 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
|
|
{
|
|
int i;
|
|
int j;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
orc_int8 var33;
|
|
orc_union16 var34;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
|
|
ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var33 = ptr4[i];
|
|
/* 1: splatbw */
|
|
var34.i = ((var33 & 0xff) << 8) | (var33 & 0xff);
|
|
/* 2: storew */
|
|
ptr0[i] = var34;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_planar_chroma_422_444 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int j;
|
|
int n = ex->n;
|
|
int m = ex->params[ORC_VAR_A1];
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
orc_int8 var33;
|
|
orc_union16 var34;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
|
|
ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var33 = ptr4[i];
|
|
/* 1: splatbw */
|
|
var34.i = ((var33 & 0xff) << 8) | (var33 & 0xff);
|
|
/* 2: storew */
|
|
ptr0[i] = var34;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_planar_chroma_422_444 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
|
|
{
|
|
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, 7, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 108,
|
|
97, 110, 97, 114, 95, 99, 104, 114, 111, 109, 97, 95, 52, 50, 50, 95,
|
|
52, 52, 52, 11, 2, 2, 12, 1, 1, 20, 2, 151, 32, 4, 97, 0,
|
|
32, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_planar_chroma_422_444);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_2d (p);
|
|
orc_program_set_name (p, "video_orc_planar_chroma_422_444");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_planar_chroma_422_444);
|
|
orc_program_add_destination (p, 2, "d1");
|
|
orc_program_add_source (p, 1, "s1");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
|
|
orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "storew", 0, ORC_VAR_D1, ORC_VAR_T1, 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;
|
|
ORC_EXECUTOR_M (ex) = m;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->params[ORC_VAR_D1] = d1_stride;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->params[ORC_VAR_S1] = s1_stride;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_planar_chroma_444_422 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_planar_chroma_444_422 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
|
|
{
|
|
int i;
|
|
int j;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
const orc_union16 *ORC_RESTRICT ptr4;
|
|
orc_union16 var34;
|
|
orc_int8 var35;
|
|
orc_int8 var36;
|
|
orc_int8 var37;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
|
|
ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadw */
|
|
var34 = ptr4[i];
|
|
/* 1: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var34.i;
|
|
var36 = _src.x2[1];
|
|
var37 = _src.x2[0];
|
|
}
|
|
/* 2: avgub */
|
|
var35 = ((orc_uint8) var36 + (orc_uint8) var37 + 1) >> 1;
|
|
/* 3: storeb */
|
|
ptr0[i] = var35;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_planar_chroma_444_422 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int j;
|
|
int n = ex->n;
|
|
int m = ex->params[ORC_VAR_A1];
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
const orc_union16 *ORC_RESTRICT ptr4;
|
|
orc_union16 var34;
|
|
orc_int8 var35;
|
|
orc_int8 var36;
|
|
orc_int8 var37;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
|
|
ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadw */
|
|
var34 = ptr4[i];
|
|
/* 1: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var34.i;
|
|
var36 = _src.x2[1];
|
|
var37 = _src.x2[0];
|
|
}
|
|
/* 2: avgub */
|
|
var35 = ((orc_uint8) var36 + (orc_uint8) var37 + 1) >> 1;
|
|
/* 3: storeb */
|
|
ptr0[i] = var35;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_planar_chroma_444_422 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
|
|
{
|
|
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, 7, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 108,
|
|
97, 110, 97, 114, 95, 99, 104, 114, 111, 109, 97, 95, 52, 52, 52, 95,
|
|
52, 50, 50, 11, 1, 1, 12, 2, 2, 20, 1, 20, 1, 199, 32, 33,
|
|
4, 39, 0, 32, 33, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_planar_chroma_444_422);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_2d (p);
|
|
orc_program_set_name (p, "video_orc_planar_chroma_444_422");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_planar_chroma_444_422);
|
|
orc_program_add_destination (p, 1, "d1");
|
|
orc_program_add_source (p, 2, "s1");
|
|
orc_program_add_temporary (p, 1, "t1");
|
|
orc_program_add_temporary (p, 1, "t2");
|
|
|
|
orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
|
|
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;
|
|
ORC_EXECUTOR_M (ex) = m;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->params[ORC_VAR_D1] = d1_stride;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->params[ORC_VAR_S1] = s1_stride;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_planar_chroma_444_420 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_planar_chroma_444_420 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride,
|
|
const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m)
|
|
{
|
|
int i;
|
|
int j;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
const orc_union16 *ORC_RESTRICT ptr4;
|
|
const orc_union16 *ORC_RESTRICT ptr5;
|
|
orc_union16 var35;
|
|
orc_union16 var36;
|
|
orc_int8 var37;
|
|
orc_union16 var38;
|
|
orc_int8 var39;
|
|
orc_int8 var40;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
|
|
ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
|
|
ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadw */
|
|
var35 = ptr4[i];
|
|
/* 1: loadw */
|
|
var36 = ptr5[i];
|
|
/* 2: avgub */
|
|
var38.x2[0] =
|
|
((orc_uint8) var35.x2[0] + (orc_uint8) var36.x2[0] + 1) >> 1;
|
|
var38.x2[1] =
|
|
((orc_uint8) var35.x2[1] + (orc_uint8) var36.x2[1] + 1) >> 1;
|
|
/* 3: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var38.i;
|
|
var39 = _src.x2[1];
|
|
var40 = _src.x2[0];
|
|
}
|
|
/* 4: avgub */
|
|
var37 = ((orc_uint8) var39 + (orc_uint8) var40 + 1) >> 1;
|
|
/* 5: storeb */
|
|
ptr0[i] = var37;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_planar_chroma_444_420 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int j;
|
|
int n = ex->n;
|
|
int m = ex->params[ORC_VAR_A1];
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
const orc_union16 *ORC_RESTRICT ptr4;
|
|
const orc_union16 *ORC_RESTRICT ptr5;
|
|
orc_union16 var35;
|
|
orc_union16 var36;
|
|
orc_int8 var37;
|
|
orc_union16 var38;
|
|
orc_int8 var39;
|
|
orc_int8 var40;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
|
|
ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
|
|
ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadw */
|
|
var35 = ptr4[i];
|
|
/* 1: loadw */
|
|
var36 = ptr5[i];
|
|
/* 2: avgub */
|
|
var38.x2[0] =
|
|
((orc_uint8) var35.x2[0] + (orc_uint8) var36.x2[0] + 1) >> 1;
|
|
var38.x2[1] =
|
|
((orc_uint8) var35.x2[1] + (orc_uint8) var36.x2[1] + 1) >> 1;
|
|
/* 3: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var38.i;
|
|
var39 = _src.x2[1];
|
|
var40 = _src.x2[0];
|
|
}
|
|
/* 4: avgub */
|
|
var37 = ((orc_uint8) var39 + (orc_uint8) var40 + 1) >> 1;
|
|
/* 5: storeb */
|
|
ptr0[i] = var37;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_planar_chroma_444_420 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride,
|
|
const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m)
|
|
{
|
|
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, 7, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 108,
|
|
97, 110, 97, 114, 95, 99, 104, 114, 111, 109, 97, 95, 52, 52, 52, 95,
|
|
52, 50, 48, 11, 1, 1, 12, 2, 2, 12, 2, 2, 20, 2, 20, 1,
|
|
20, 1, 21, 1, 39, 32, 4, 5, 199, 33, 34, 32, 39, 0, 33, 34,
|
|
2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_planar_chroma_444_420);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_2d (p);
|
|
orc_program_set_name (p, "video_orc_planar_chroma_444_420");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_planar_chroma_444_420);
|
|
orc_program_add_destination (p, 1, "d1");
|
|
orc_program_add_source (p, 2, "s1");
|
|
orc_program_add_source (p, 2, "s2");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 1, "t2");
|
|
orc_program_add_temporary (p, 1, "t3");
|
|
|
|
orc_program_append_2 (p, "avgub", 1, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_S2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T3,
|
|
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;
|
|
ORC_EXECUTOR_M (ex) = m;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->params[ORC_VAR_D1] = d1_stride;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->params[ORC_VAR_S1] = s1_stride;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
ex->params[ORC_VAR_S2] = s2_stride;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_planar_chroma_422_420 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_planar_chroma_422_420 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride,
|
|
const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m)
|
|
{
|
|
int i;
|
|
int j;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
orc_int8 var32;
|
|
orc_int8 var33;
|
|
orc_int8 var34;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
|
|
ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
|
|
ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var32 = ptr4[i];
|
|
/* 1: loadb */
|
|
var33 = ptr5[i];
|
|
/* 2: avgub */
|
|
var34 = ((orc_uint8) var32 + (orc_uint8) var33 + 1) >> 1;
|
|
/* 3: storeb */
|
|
ptr0[i] = var34;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_planar_chroma_422_420 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int j;
|
|
int n = ex->n;
|
|
int m = ex->params[ORC_VAR_A1];
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
orc_int8 var32;
|
|
orc_int8 var33;
|
|
orc_int8 var34;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
|
|
ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
|
|
ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var32 = ptr4[i];
|
|
/* 1: loadb */
|
|
var33 = ptr5[i];
|
|
/* 2: avgub */
|
|
var34 = ((orc_uint8) var32 + (orc_uint8) var33 + 1) >> 1;
|
|
/* 3: storeb */
|
|
ptr0[i] = var34;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_planar_chroma_422_420 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride,
|
|
const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m)
|
|
{
|
|
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, 7, 9, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 112, 108,
|
|
97, 110, 97, 114, 95, 99, 104, 114, 111, 109, 97, 95, 52, 50, 50, 95,
|
|
52, 50, 48, 11, 1, 1, 12, 1, 1, 12, 1, 1, 39, 0, 4, 5,
|
|
2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_planar_chroma_422_420);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_2d (p);
|
|
orc_program_set_name (p, "video_orc_planar_chroma_422_420");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_planar_chroma_422_420);
|
|
orc_program_add_destination (p, 1, "d1");
|
|
orc_program_add_source (p, 1, "s1");
|
|
orc_program_add_source (p, 1, "s2");
|
|
|
|
orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S2,
|
|
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;
|
|
ORC_EXECUTOR_M (ex) = m;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->params[ORC_VAR_D1] = d1_stride;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->params[ORC_VAR_S1] = s1_stride;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
ex->params[ORC_VAR_S2] = s2_stride;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_convert_YUY2_AYUV */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_convert_YUY2_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
|
|
{
|
|
int i;
|
|
int j;
|
|
orc_union64 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var36;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union16 var37;
|
|
#else
|
|
orc_union16 var37;
|
|
#endif
|
|
orc_union64 var38;
|
|
orc_union16 var39;
|
|
orc_union16 var40;
|
|
orc_union32 var41;
|
|
orc_union32 var42;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
|
|
ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
|
|
|
|
/* 2: loadpb */
|
|
var37.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
var37.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var36 = ptr4[i];
|
|
/* 1: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var36.x2[0];
|
|
var39.x2[0] = _src.x2[1];
|
|
var40.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var36.x2[1];
|
|
var39.x2[1] = _src.x2[1];
|
|
var40.x2[1] = _src.x2[0];
|
|
}
|
|
/* 3: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var37.x2[0];
|
|
_dest.x2[1] = var40.x2[0];
|
|
var41.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var37.x2[1];
|
|
_dest.x2[1] = var40.x2[1];
|
|
var41.x2[1] = _dest.i;
|
|
}
|
|
/* 4: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var39.i;
|
|
_dest.x2[1] = var39.i;
|
|
var42.i = _dest.i;
|
|
}
|
|
/* 5: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var41.x2[0];
|
|
_dest.x2[1] = var42.x2[0];
|
|
var38.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var41.x2[1];
|
|
_dest.x2[1] = var42.x2[1];
|
|
var38.x2[1] = _dest.i;
|
|
}
|
|
/* 6: storeq */
|
|
ptr0[i] = var38;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_convert_YUY2_AYUV (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int j;
|
|
int n = ex->n;
|
|
int m = ex->params[ORC_VAR_A1];
|
|
orc_union64 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var36;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union16 var37;
|
|
#else
|
|
orc_union16 var37;
|
|
#endif
|
|
orc_union64 var38;
|
|
orc_union16 var39;
|
|
orc_union16 var40;
|
|
orc_union32 var41;
|
|
orc_union32 var42;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
|
|
ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
|
|
|
|
/* 2: loadpb */
|
|
var37.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
var37.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var36 = ptr4[i];
|
|
/* 1: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var36.x2[0];
|
|
var39.x2[0] = _src.x2[1];
|
|
var40.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var36.x2[1];
|
|
var39.x2[1] = _src.x2[1];
|
|
var40.x2[1] = _src.x2[0];
|
|
}
|
|
/* 3: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var37.x2[0];
|
|
_dest.x2[1] = var40.x2[0];
|
|
var41.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var37.x2[1];
|
|
_dest.x2[1] = var40.x2[1];
|
|
var41.x2[1] = _dest.i;
|
|
}
|
|
/* 4: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var39.i;
|
|
_dest.x2[1] = var39.i;
|
|
var42.i = _dest.i;
|
|
}
|
|
/* 5: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var41.x2[0];
|
|
_dest.x2[1] = var42.x2[0];
|
|
var38.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var41.x2[1];
|
|
_dest.x2[1] = var42.x2[1];
|
|
var38.x2[1] = _dest.i;
|
|
}
|
|
/* 6: storeq */
|
|
ptr0[i] = var38;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_convert_YUY2_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
|
|
{
|
|
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, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
|
|
110, 118, 101, 114, 116, 95, 89, 85, 89, 50, 95, 65, 89, 85, 86, 11,
|
|
8, 8, 12, 4, 4, 14, 2, 255, 0, 0, 0, 20, 2, 20, 2, 20,
|
|
4, 20, 4, 21, 1, 199, 33, 32, 4, 21, 1, 196, 34, 16, 32, 195,
|
|
35, 33, 33, 21, 1, 195, 0, 34, 35, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_YUY2_AYUV);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_2d (p);
|
|
orc_program_set_name (p, "video_orc_convert_YUY2_AYUV");
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_YUY2_AYUV);
|
|
orc_program_add_destination (p, 8, "d1");
|
|
orc_program_add_source (p, 4, "s1");
|
|
orc_program_add_constant (p, 2, 0x000000ff, "c1");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 2, "t2");
|
|
orc_program_add_temporary (p, 4, "t3");
|
|
orc_program_add_temporary (p, 4, "t4");
|
|
|
|
orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4,
|
|
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;
|
|
ORC_EXECUTOR_M (ex) = m;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->params[ORC_VAR_D1] = d1_stride;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->params[ORC_VAR_S1] = s1_stride;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_convert_UYVY_AYUV */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_convert_UYVY_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
|
|
{
|
|
int i;
|
|
int j;
|
|
orc_union64 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var36;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union16 var37;
|
|
#else
|
|
orc_union16 var37;
|
|
#endif
|
|
orc_union64 var38;
|
|
orc_union16 var39;
|
|
orc_union16 var40;
|
|
orc_union32 var41;
|
|
orc_union32 var42;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
|
|
ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
|
|
|
|
/* 2: loadpb */
|
|
var37.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
var37.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var36 = ptr4[i];
|
|
/* 1: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var36.x2[0];
|
|
var39.x2[0] = _src.x2[1];
|
|
var40.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var36.x2[1];
|
|
var39.x2[1] = _src.x2[1];
|
|
var40.x2[1] = _src.x2[0];
|
|
}
|
|
/* 3: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var37.x2[0];
|
|
_dest.x2[1] = var39.x2[0];
|
|
var41.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var37.x2[1];
|
|
_dest.x2[1] = var39.x2[1];
|
|
var41.x2[1] = _dest.i;
|
|
}
|
|
/* 4: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var40.i;
|
|
_dest.x2[1] = var40.i;
|
|
var42.i = _dest.i;
|
|
}
|
|
/* 5: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var41.x2[0];
|
|
_dest.x2[1] = var42.x2[0];
|
|
var38.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var41.x2[1];
|
|
_dest.x2[1] = var42.x2[1];
|
|
var38.x2[1] = _dest.i;
|
|
}
|
|
/* 6: storeq */
|
|
ptr0[i] = var38;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_convert_UYVY_AYUV (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int j;
|
|
int n = ex->n;
|
|
int m = ex->params[ORC_VAR_A1];
|
|
orc_union64 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var36;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union16 var37;
|
|
#else
|
|
orc_union16 var37;
|
|
#endif
|
|
orc_union64 var38;
|
|
orc_union16 var39;
|
|
orc_union16 var40;
|
|
orc_union32 var41;
|
|
orc_union32 var42;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
|
|
ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
|
|
|
|
/* 2: loadpb */
|
|
var37.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
var37.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var36 = ptr4[i];
|
|
/* 1: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var36.x2[0];
|
|
var39.x2[0] = _src.x2[1];
|
|
var40.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var36.x2[1];
|
|
var39.x2[1] = _src.x2[1];
|
|
var40.x2[1] = _src.x2[0];
|
|
}
|
|
/* 3: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var37.x2[0];
|
|
_dest.x2[1] = var39.x2[0];
|
|
var41.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var37.x2[1];
|
|
_dest.x2[1] = var39.x2[1];
|
|
var41.x2[1] = _dest.i;
|
|
}
|
|
/* 4: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var40.i;
|
|
_dest.x2[1] = var40.i;
|
|
var42.i = _dest.i;
|
|
}
|
|
/* 5: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var41.x2[0];
|
|
_dest.x2[1] = var42.x2[0];
|
|
var38.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var41.x2[1];
|
|
_dest.x2[1] = var42.x2[1];
|
|
var38.x2[1] = _dest.i;
|
|
}
|
|
/* 6: storeq */
|
|
ptr0[i] = var38;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_convert_UYVY_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
|
|
{
|
|
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, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
|
|
110, 118, 101, 114, 116, 95, 85, 89, 86, 89, 95, 65, 89, 85, 86, 11,
|
|
8, 8, 12, 4, 4, 14, 2, 255, 0, 0, 0, 20, 2, 20, 2, 20,
|
|
4, 20, 4, 21, 1, 199, 32, 33, 4, 21, 1, 196, 34, 16, 32, 195,
|
|
35, 33, 33, 21, 1, 195, 0, 34, 35, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_AYUV);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_2d (p);
|
|
orc_program_set_name (p, "video_orc_convert_UYVY_AYUV");
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_AYUV);
|
|
orc_program_add_destination (p, 8, "d1");
|
|
orc_program_add_source (p, 4, "s1");
|
|
orc_program_add_constant (p, 2, 0x000000ff, "c1");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 2, "t2");
|
|
orc_program_add_temporary (p, 4, "t3");
|
|
orc_program_add_temporary (p, 4, "t4");
|
|
|
|
orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_T4,
|
|
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;
|
|
ORC_EXECUTOR_M (ex) = m;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->params[ORC_VAR_D1] = d1_stride;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->params[ORC_VAR_S1] = s1_stride;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_convert_YUY2_Y42B */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_convert_YUY2_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
|
|
int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
|
|
{
|
|
int i;
|
|
int j;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
orc_int8 *ORC_RESTRICT ptr1;
|
|
orc_int8 *ORC_RESTRICT ptr2;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var33;
|
|
orc_union16 var34;
|
|
orc_int8 var35;
|
|
orc_int8 var36;
|
|
orc_union16 var37;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
|
|
ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
|
|
ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j);
|
|
ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var33 = ptr4[i];
|
|
/* 1: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var33.x2[0];
|
|
var37.x2[0] = _src.x2[1];
|
|
var34.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var33.x2[1];
|
|
var37.x2[1] = _src.x2[1];
|
|
var34.x2[1] = _src.x2[0];
|
|
}
|
|
/* 2: storew */
|
|
ptr0[i] = var34;
|
|
/* 3: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var37.i;
|
|
var35 = _src.x2[1];
|
|
var36 = _src.x2[0];
|
|
}
|
|
/* 4: storeb */
|
|
ptr2[i] = var35;
|
|
/* 5: storeb */
|
|
ptr1[i] = var36;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_convert_YUY2_Y42B (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int j;
|
|
int n = ex->n;
|
|
int m = ex->params[ORC_VAR_A1];
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
orc_int8 *ORC_RESTRICT ptr1;
|
|
orc_int8 *ORC_RESTRICT ptr2;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var33;
|
|
orc_union16 var34;
|
|
orc_int8 var35;
|
|
orc_int8 var36;
|
|
orc_union16 var37;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
|
|
ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
|
|
ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j);
|
|
ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var33 = ptr4[i];
|
|
/* 1: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var33.x2[0];
|
|
var37.x2[0] = _src.x2[1];
|
|
var34.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var33.x2[1];
|
|
var37.x2[1] = _src.x2[1];
|
|
var34.x2[1] = _src.x2[0];
|
|
}
|
|
/* 2: storew */
|
|
ptr0[i] = var34;
|
|
/* 3: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var37.i;
|
|
var35 = _src.x2[1];
|
|
var36 = _src.x2[0];
|
|
}
|
|
/* 4: storeb */
|
|
ptr2[i] = var35;
|
|
/* 5: storeb */
|
|
ptr1[i] = var36;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_convert_YUY2_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
|
|
int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
|
|
{
|
|
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, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
|
|
110, 118, 101, 114, 116, 95, 89, 85, 89, 50, 95, 89, 52, 50, 66, 11,
|
|
2, 2, 11, 1, 1, 11, 1, 1, 12, 4, 4, 20, 2, 21, 1, 199,
|
|
32, 0, 4, 199, 2, 1, 32, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_YUY2_Y42B);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_2d (p);
|
|
orc_program_set_name (p, "video_orc_convert_YUY2_Y42B");
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_YUY2_Y42B);
|
|
orc_program_add_destination (p, 2, "d1");
|
|
orc_program_add_destination (p, 1, "d2");
|
|
orc_program_add_destination (p, 1, "d3");
|
|
orc_program_add_source (p, 4, "s1");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
|
|
orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
#endif
|
|
|
|
orc_program_compile (p);
|
|
c = orc_program_take_code (p);
|
|
orc_program_free (p);
|
|
}
|
|
p_inited = TRUE;
|
|
orc_once_mutex_unlock ();
|
|
}
|
|
ex->arrays[ORC_VAR_A2] = c;
|
|
ex->program = 0;
|
|
|
|
ex->n = n;
|
|
ORC_EXECUTOR_M (ex) = m;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->params[ORC_VAR_D1] = d1_stride;
|
|
ex->arrays[ORC_VAR_D2] = d2;
|
|
ex->params[ORC_VAR_D2] = d2_stride;
|
|
ex->arrays[ORC_VAR_D3] = d3;
|
|
ex->params[ORC_VAR_D3] = d3_stride;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->params[ORC_VAR_S1] = s1_stride;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_convert_UYVY_Y42B */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_convert_UYVY_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
|
|
int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
|
|
{
|
|
int i;
|
|
int j;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
orc_int8 *ORC_RESTRICT ptr1;
|
|
orc_int8 *ORC_RESTRICT ptr2;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var33;
|
|
orc_union16 var34;
|
|
orc_int8 var35;
|
|
orc_int8 var36;
|
|
orc_union16 var37;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
|
|
ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
|
|
ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j);
|
|
ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var33 = ptr4[i];
|
|
/* 1: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var33.x2[0];
|
|
var34.x2[0] = _src.x2[1];
|
|
var37.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var33.x2[1];
|
|
var34.x2[1] = _src.x2[1];
|
|
var37.x2[1] = _src.x2[0];
|
|
}
|
|
/* 2: storew */
|
|
ptr0[i] = var34;
|
|
/* 3: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var37.i;
|
|
var35 = _src.x2[1];
|
|
var36 = _src.x2[0];
|
|
}
|
|
/* 4: storeb */
|
|
ptr2[i] = var35;
|
|
/* 5: storeb */
|
|
ptr1[i] = var36;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_convert_UYVY_Y42B (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int j;
|
|
int n = ex->n;
|
|
int m = ex->params[ORC_VAR_A1];
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
orc_int8 *ORC_RESTRICT ptr1;
|
|
orc_int8 *ORC_RESTRICT ptr2;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var33;
|
|
orc_union16 var34;
|
|
orc_int8 var35;
|
|
orc_int8 var36;
|
|
orc_union16 var37;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
|
|
ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
|
|
ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j);
|
|
ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var33 = ptr4[i];
|
|
/* 1: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var33.x2[0];
|
|
var34.x2[0] = _src.x2[1];
|
|
var37.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var33.x2[1];
|
|
var34.x2[1] = _src.x2[1];
|
|
var37.x2[1] = _src.x2[0];
|
|
}
|
|
/* 2: storew */
|
|
ptr0[i] = var34;
|
|
/* 3: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var37.i;
|
|
var35 = _src.x2[1];
|
|
var36 = _src.x2[0];
|
|
}
|
|
/* 4: storeb */
|
|
ptr2[i] = var35;
|
|
/* 5: storeb */
|
|
ptr1[i] = var36;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_convert_UYVY_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
|
|
int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
|
|
{
|
|
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, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
|
|
110, 118, 101, 114, 116, 95, 85, 89, 86, 89, 95, 89, 52, 50, 66, 11,
|
|
2, 2, 11, 1, 1, 11, 1, 1, 12, 4, 4, 20, 2, 21, 1, 199,
|
|
0, 32, 4, 199, 2, 1, 32, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_Y42B);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_2d (p);
|
|
orc_program_set_name (p, "video_orc_convert_UYVY_Y42B");
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_Y42B);
|
|
orc_program_add_destination (p, 2, "d1");
|
|
orc_program_add_destination (p, 1, "d2");
|
|
orc_program_add_destination (p, 1, "d3");
|
|
orc_program_add_source (p, 4, "s1");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
|
|
orc_program_append_2 (p, "splitwb", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
#endif
|
|
|
|
orc_program_compile (p);
|
|
c = orc_program_take_code (p);
|
|
orc_program_free (p);
|
|
}
|
|
p_inited = TRUE;
|
|
orc_once_mutex_unlock ();
|
|
}
|
|
ex->arrays[ORC_VAR_A2] = c;
|
|
ex->program = 0;
|
|
|
|
ex->n = n;
|
|
ORC_EXECUTOR_M (ex) = m;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->params[ORC_VAR_D1] = d1_stride;
|
|
ex->arrays[ORC_VAR_D2] = d2;
|
|
ex->params[ORC_VAR_D2] = d2_stride;
|
|
ex->arrays[ORC_VAR_D3] = d3;
|
|
ex->params[ORC_VAR_D3] = d3_stride;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->params[ORC_VAR_S1] = s1_stride;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_convert_YUY2_Y444 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_convert_YUY2_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
|
|
int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
|
|
{
|
|
int i;
|
|
int j;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
orc_union16 *ORC_RESTRICT ptr1;
|
|
orc_union16 *ORC_RESTRICT ptr2;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var35;
|
|
orc_union16 var36;
|
|
orc_union16 var37;
|
|
orc_union16 var38;
|
|
orc_union16 var39;
|
|
orc_int8 var40;
|
|
orc_int8 var41;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
|
|
ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
|
|
ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j);
|
|
ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var35 = ptr4[i];
|
|
/* 1: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var35.x2[0];
|
|
var39.x2[0] = _src.x2[1];
|
|
var36.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var35.x2[1];
|
|
var39.x2[1] = _src.x2[1];
|
|
var36.x2[1] = _src.x2[0];
|
|
}
|
|
/* 2: storew */
|
|
ptr0[i] = var36;
|
|
/* 3: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var39.i;
|
|
var40 = _src.x2[1];
|
|
var41 = _src.x2[0];
|
|
}
|
|
/* 4: splatbw */
|
|
var37.i = ((var41 & 0xff) << 8) | (var41 & 0xff);
|
|
/* 5: storew */
|
|
ptr1[i] = var37;
|
|
/* 6: splatbw */
|
|
var38.i = ((var40 & 0xff) << 8) | (var40 & 0xff);
|
|
/* 7: storew */
|
|
ptr2[i] = var38;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_convert_YUY2_Y444 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int j;
|
|
int n = ex->n;
|
|
int m = ex->params[ORC_VAR_A1];
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
orc_union16 *ORC_RESTRICT ptr1;
|
|
orc_union16 *ORC_RESTRICT ptr2;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var35;
|
|
orc_union16 var36;
|
|
orc_union16 var37;
|
|
orc_union16 var38;
|
|
orc_union16 var39;
|
|
orc_int8 var40;
|
|
orc_int8 var41;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
|
|
ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
|
|
ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j);
|
|
ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var35 = ptr4[i];
|
|
/* 1: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var35.x2[0];
|
|
var39.x2[0] = _src.x2[1];
|
|
var36.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var35.x2[1];
|
|
var39.x2[1] = _src.x2[1];
|
|
var36.x2[1] = _src.x2[0];
|
|
}
|
|
/* 2: storew */
|
|
ptr0[i] = var36;
|
|
/* 3: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var39.i;
|
|
var40 = _src.x2[1];
|
|
var41 = _src.x2[0];
|
|
}
|
|
/* 4: splatbw */
|
|
var37.i = ((var41 & 0xff) << 8) | (var41 & 0xff);
|
|
/* 5: storew */
|
|
ptr1[i] = var37;
|
|
/* 6: splatbw */
|
|
var38.i = ((var40 & 0xff) << 8) | (var40 & 0xff);
|
|
/* 7: storew */
|
|
ptr2[i] = var38;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_convert_YUY2_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
|
|
int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
|
|
{
|
|
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, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
|
|
110, 118, 101, 114, 116, 95, 89, 85, 89, 50, 95, 89, 52, 52, 52, 11,
|
|
2, 2, 11, 2, 2, 11, 2, 2, 12, 4, 4, 20, 2, 20, 1, 20,
|
|
1, 21, 1, 199, 32, 0, 4, 199, 34, 33, 32, 151, 1, 33, 151, 2,
|
|
34, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_YUY2_Y444);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_2d (p);
|
|
orc_program_set_name (p, "video_orc_convert_YUY2_Y444");
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_YUY2_Y444);
|
|
orc_program_add_destination (p, 2, "d1");
|
|
orc_program_add_destination (p, 2, "d2");
|
|
orc_program_add_destination (p, 2, "d3");
|
|
orc_program_add_source (p, 4, "s1");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 1, "t2");
|
|
orc_program_add_temporary (p, 1, "t3");
|
|
|
|
orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splatbw", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splatbw", 0, ORC_VAR_D3, ORC_VAR_T3, 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;
|
|
ORC_EXECUTOR_M (ex) = m;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->params[ORC_VAR_D1] = d1_stride;
|
|
ex->arrays[ORC_VAR_D2] = d2;
|
|
ex->params[ORC_VAR_D2] = d2_stride;
|
|
ex->arrays[ORC_VAR_D3] = d3;
|
|
ex->params[ORC_VAR_D3] = d3_stride;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->params[ORC_VAR_S1] = s1_stride;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_convert_UYVY_Y444 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_convert_UYVY_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
|
|
int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
|
|
{
|
|
int i;
|
|
int j;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
orc_union16 *ORC_RESTRICT ptr1;
|
|
orc_union16 *ORC_RESTRICT ptr2;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var35;
|
|
orc_union16 var36;
|
|
orc_union16 var37;
|
|
orc_union16 var38;
|
|
orc_union16 var39;
|
|
orc_int8 var40;
|
|
orc_int8 var41;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
|
|
ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
|
|
ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j);
|
|
ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var35 = ptr4[i];
|
|
/* 1: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var35.x2[0];
|
|
var36.x2[0] = _src.x2[1];
|
|
var39.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var35.x2[1];
|
|
var36.x2[1] = _src.x2[1];
|
|
var39.x2[1] = _src.x2[0];
|
|
}
|
|
/* 2: storew */
|
|
ptr0[i] = var36;
|
|
/* 3: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var39.i;
|
|
var40 = _src.x2[1];
|
|
var41 = _src.x2[0];
|
|
}
|
|
/* 4: splatbw */
|
|
var37.i = ((var41 & 0xff) << 8) | (var41 & 0xff);
|
|
/* 5: storew */
|
|
ptr1[i] = var37;
|
|
/* 6: splatbw */
|
|
var38.i = ((var40 & 0xff) << 8) | (var40 & 0xff);
|
|
/* 7: storew */
|
|
ptr2[i] = var38;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_convert_UYVY_Y444 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int j;
|
|
int n = ex->n;
|
|
int m = ex->params[ORC_VAR_A1];
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
orc_union16 *ORC_RESTRICT ptr1;
|
|
orc_union16 *ORC_RESTRICT ptr2;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var35;
|
|
orc_union16 var36;
|
|
orc_union16 var37;
|
|
orc_union16 var38;
|
|
orc_union16 var39;
|
|
orc_int8 var40;
|
|
orc_int8 var41;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
|
|
ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
|
|
ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j);
|
|
ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var35 = ptr4[i];
|
|
/* 1: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var35.x2[0];
|
|
var36.x2[0] = _src.x2[1];
|
|
var39.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var35.x2[1];
|
|
var36.x2[1] = _src.x2[1];
|
|
var39.x2[1] = _src.x2[0];
|
|
}
|
|
/* 2: storew */
|
|
ptr0[i] = var36;
|
|
/* 3: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var39.i;
|
|
var40 = _src.x2[1];
|
|
var41 = _src.x2[0];
|
|
}
|
|
/* 4: splatbw */
|
|
var37.i = ((var41 & 0xff) << 8) | (var41 & 0xff);
|
|
/* 5: storew */
|
|
ptr1[i] = var37;
|
|
/* 6: splatbw */
|
|
var38.i = ((var40 & 0xff) << 8) | (var40 & 0xff);
|
|
/* 7: storew */
|
|
ptr2[i] = var38;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_convert_UYVY_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
|
|
int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
|
|
{
|
|
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, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
|
|
110, 118, 101, 114, 116, 95, 85, 89, 86, 89, 95, 89, 52, 52, 52, 11,
|
|
2, 2, 11, 2, 2, 11, 2, 2, 12, 4, 4, 20, 2, 20, 1, 20,
|
|
1, 21, 1, 199, 0, 32, 4, 199, 34, 33, 32, 151, 1, 33, 151, 2,
|
|
34, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_Y444);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_2d (p);
|
|
orc_program_set_name (p, "video_orc_convert_UYVY_Y444");
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_Y444);
|
|
orc_program_add_destination (p, 2, "d1");
|
|
orc_program_add_destination (p, 2, "d2");
|
|
orc_program_add_destination (p, 2, "d3");
|
|
orc_program_add_source (p, 4, "s1");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 1, "t2");
|
|
orc_program_add_temporary (p, 1, "t3");
|
|
|
|
orc_program_append_2 (p, "splitwb", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splatbw", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splatbw", 0, ORC_VAR_D3, ORC_VAR_T3, 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;
|
|
ORC_EXECUTOR_M (ex) = m;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->params[ORC_VAR_D1] = d1_stride;
|
|
ex->arrays[ORC_VAR_D2] = d2;
|
|
ex->params[ORC_VAR_D2] = d2_stride;
|
|
ex->arrays[ORC_VAR_D3] = d3;
|
|
ex->params[ORC_VAR_D3] = d3_stride;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->params[ORC_VAR_S1] = s1_stride;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_convert_UYVY_I420 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_convert_UYVY_I420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
|
guint8 * ORC_RESTRICT d3, guint8 * ORC_RESTRICT d4,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
|
|
{
|
|
int i;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
orc_union16 *ORC_RESTRICT ptr1;
|
|
orc_int8 *ORC_RESTRICT ptr2;
|
|
orc_int8 *ORC_RESTRICT ptr3;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
const orc_union32 *ORC_RESTRICT ptr5;
|
|
orc_union32 var35;
|
|
orc_union32 var36;
|
|
orc_int8 var37;
|
|
orc_int8 var38;
|
|
orc_union16 var39;
|
|
orc_union16 var40;
|
|
orc_union16 var41;
|
|
orc_union16 var42;
|
|
orc_union16 var43;
|
|
|
|
ptr0 = (orc_union16 *) d1;
|
|
ptr1 = (orc_union16 *) d2;
|
|
ptr2 = (orc_int8 *) d3;
|
|
ptr3 = (orc_int8 *) d4;
|
|
ptr4 = (orc_union32 *) s1;
|
|
ptr5 = (orc_union32 *) s2;
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var35 = ptr4[i];
|
|
/* 1: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var35.x2[0];
|
|
var39.x2[0] = _src.x2[1];
|
|
var40.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var35.x2[1];
|
|
var39.x2[1] = _src.x2[1];
|
|
var40.x2[1] = _src.x2[0];
|
|
}
|
|
/* 2: storew */
|
|
ptr0[i] = var39;
|
|
/* 3: loadl */
|
|
var36 = ptr5[i];
|
|
/* 4: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var36.x2[0];
|
|
var41.x2[0] = _src.x2[1];
|
|
var42.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var36.x2[1];
|
|
var41.x2[1] = _src.x2[1];
|
|
var42.x2[1] = _src.x2[0];
|
|
}
|
|
/* 5: storew */
|
|
ptr1[i] = var41;
|
|
/* 6: avgub */
|
|
var43.x2[0] = ((orc_uint8) var40.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
|
|
var43.x2[1] = ((orc_uint8) var40.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
|
|
/* 7: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var43.i;
|
|
var37 = _src.x2[1];
|
|
var38 = _src.x2[0];
|
|
}
|
|
/* 8: storeb */
|
|
ptr3[i] = var37;
|
|
/* 9: storeb */
|
|
ptr2[i] = var38;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_convert_UYVY_I420 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
orc_union16 *ORC_RESTRICT ptr1;
|
|
orc_int8 *ORC_RESTRICT ptr2;
|
|
orc_int8 *ORC_RESTRICT ptr3;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
const orc_union32 *ORC_RESTRICT ptr5;
|
|
orc_union32 var35;
|
|
orc_union32 var36;
|
|
orc_int8 var37;
|
|
orc_int8 var38;
|
|
orc_union16 var39;
|
|
orc_union16 var40;
|
|
orc_union16 var41;
|
|
orc_union16 var42;
|
|
orc_union16 var43;
|
|
|
|
ptr0 = (orc_union16 *) ex->arrays[0];
|
|
ptr1 = (orc_union16 *) ex->arrays[1];
|
|
ptr2 = (orc_int8 *) ex->arrays[2];
|
|
ptr3 = (orc_int8 *) ex->arrays[3];
|
|
ptr4 = (orc_union32 *) ex->arrays[4];
|
|
ptr5 = (orc_union32 *) ex->arrays[5];
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var35 = ptr4[i];
|
|
/* 1: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var35.x2[0];
|
|
var39.x2[0] = _src.x2[1];
|
|
var40.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var35.x2[1];
|
|
var39.x2[1] = _src.x2[1];
|
|
var40.x2[1] = _src.x2[0];
|
|
}
|
|
/* 2: storew */
|
|
ptr0[i] = var39;
|
|
/* 3: loadl */
|
|
var36 = ptr5[i];
|
|
/* 4: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var36.x2[0];
|
|
var41.x2[0] = _src.x2[1];
|
|
var42.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var36.x2[1];
|
|
var41.x2[1] = _src.x2[1];
|
|
var42.x2[1] = _src.x2[0];
|
|
}
|
|
/* 5: storew */
|
|
ptr1[i] = var41;
|
|
/* 6: avgub */
|
|
var43.x2[0] = ((orc_uint8) var40.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
|
|
var43.x2[1] = ((orc_uint8) var40.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
|
|
/* 7: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var43.i;
|
|
var37 = _src.x2[1];
|
|
var38 = _src.x2[0];
|
|
}
|
|
/* 8: storeb */
|
|
ptr3[i] = var37;
|
|
/* 9: storeb */
|
|
ptr2[i] = var38;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_convert_UYVY_I420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
|
guint8 * ORC_RESTRICT d3, guint8 * ORC_RESTRICT d4,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, 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, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, 110,
|
|
118, 101, 114, 116, 95, 85, 89, 86, 89, 95, 73, 52, 50, 48, 11, 2,
|
|
2, 11, 2, 2, 11, 1, 1, 11, 1, 1, 12, 4, 4, 12, 4, 4,
|
|
20, 2, 20, 2, 20, 2, 21, 1, 199, 34, 32, 4, 97, 0, 34, 21,
|
|
1, 199, 34, 33, 5, 97, 1, 34, 21, 1, 39, 32, 32, 33, 199, 3,
|
|
2, 32, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_I420);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_convert_UYVY_I420");
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_I420);
|
|
orc_program_add_destination (p, 2, "d1");
|
|
orc_program_add_destination (p, 2, "d2");
|
|
orc_program_add_destination (p, 1, "d3");
|
|
orc_program_add_destination (p, 1, "d4");
|
|
orc_program_add_source (p, 4, "s1");
|
|
orc_program_add_source (p, 4, "s2");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 2, "t2");
|
|
orc_program_add_temporary (p, 2, "t3");
|
|
|
|
orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "storew", 0, ORC_VAR_D1, ORC_VAR_T3, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_S2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "storew", 0, ORC_VAR_D2, ORC_VAR_T3, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "avgub", 1, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D4, ORC_VAR_D3, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
#endif
|
|
|
|
orc_program_compile (p);
|
|
c = orc_program_take_code (p);
|
|
orc_program_free (p);
|
|
}
|
|
p_inited = TRUE;
|
|
orc_once_mutex_unlock ();
|
|
}
|
|
ex->arrays[ORC_VAR_A2] = c;
|
|
ex->program = 0;
|
|
|
|
ex->n = n;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->arrays[ORC_VAR_D2] = d2;
|
|
ex->arrays[ORC_VAR_D3] = d3;
|
|
ex->arrays[ORC_VAR_D4] = d4;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_convert_AYUV_I420 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_convert_AYUV_I420 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
|
|
int d3_stride, guint8 * ORC_RESTRICT d4, int d4_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride,
|
|
const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m)
|
|
{
|
|
int i;
|
|
int j;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
orc_union16 *ORC_RESTRICT ptr1;
|
|
orc_int8 *ORC_RESTRICT ptr2;
|
|
orc_int8 *ORC_RESTRICT ptr3;
|
|
const orc_union64 *ORC_RESTRICT ptr4;
|
|
const orc_union64 *ORC_RESTRICT ptr5;
|
|
orc_union64 var40;
|
|
orc_union16 var41;
|
|
orc_union64 var42;
|
|
orc_union16 var43;
|
|
orc_int8 var44;
|
|
orc_int8 var45;
|
|
orc_union32 var46;
|
|
orc_union32 var47;
|
|
orc_union32 var48;
|
|
orc_union32 var49;
|
|
orc_union32 var50;
|
|
orc_union16 var51;
|
|
orc_union16 var52;
|
|
orc_int8 var53;
|
|
orc_int8 var54;
|
|
orc_int8 var55;
|
|
orc_int8 var56;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
|
|
ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
|
|
ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j);
|
|
ptr3 = ORC_PTR_OFFSET (d4, d4_stride * j);
|
|
ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
|
|
ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadq */
|
|
var40 = ptr4[i];
|
|
/* 1: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var40.x2[0];
|
|
var46.x2[0] = _src.x2[1];
|
|
var47.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var40.x2[1];
|
|
var46.x2[1] = _src.x2[1];
|
|
var47.x2[1] = _src.x2[0];
|
|
}
|
|
/* 2: select1wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var47.x2[0];
|
|
var41.x2[0] = _src.x2[1];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var47.x2[1];
|
|
var41.x2[1] = _src.x2[1];
|
|
}
|
|
/* 3: storew */
|
|
ptr0[i] = var41;
|
|
/* 4: loadq */
|
|
var42 = ptr5[i];
|
|
/* 5: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var42.x2[0];
|
|
var48.x2[0] = _src.x2[1];
|
|
var49.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var42.x2[1];
|
|
var48.x2[1] = _src.x2[1];
|
|
var49.x2[1] = _src.x2[0];
|
|
}
|
|
/* 6: select1wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var49.x2[0];
|
|
var43.x2[0] = _src.x2[1];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var49.x2[1];
|
|
var43.x2[1] = _src.x2[1];
|
|
}
|
|
/* 7: storew */
|
|
ptr1[i] = var43;
|
|
/* 8: avgub */
|
|
var50.x4[0] =
|
|
((orc_uint8) var46.x4[0] + (orc_uint8) var48.x4[0] + 1) >> 1;
|
|
var50.x4[1] =
|
|
((orc_uint8) var46.x4[1] + (orc_uint8) var48.x4[1] + 1) >> 1;
|
|
var50.x4[2] =
|
|
((orc_uint8) var46.x4[2] + (orc_uint8) var48.x4[2] + 1) >> 1;
|
|
var50.x4[3] =
|
|
((orc_uint8) var46.x4[3] + (orc_uint8) var48.x4[3] + 1) >> 1;
|
|
/* 9: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var50.x2[0];
|
|
var51.x2[0] = _src.x2[1];
|
|
var52.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var50.x2[1];
|
|
var51.x2[1] = _src.x2[1];
|
|
var52.x2[1] = _src.x2[0];
|
|
}
|
|
/* 10: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var52.i;
|
|
var53 = _src.x2[1];
|
|
var54 = _src.x2[0];
|
|
}
|
|
/* 11: avgub */
|
|
var44 = ((orc_uint8) var53 + (orc_uint8) var54 + 1) >> 1;
|
|
/* 12: storeb */
|
|
ptr2[i] = var44;
|
|
/* 13: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var51.i;
|
|
var55 = _src.x2[1];
|
|
var56 = _src.x2[0];
|
|
}
|
|
/* 14: avgub */
|
|
var45 = ((orc_uint8) var55 + (orc_uint8) var56 + 1) >> 1;
|
|
/* 15: storeb */
|
|
ptr3[i] = var45;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_convert_AYUV_I420 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int j;
|
|
int n = ex->n;
|
|
int m = ex->params[ORC_VAR_A1];
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
orc_union16 *ORC_RESTRICT ptr1;
|
|
orc_int8 *ORC_RESTRICT ptr2;
|
|
orc_int8 *ORC_RESTRICT ptr3;
|
|
const orc_union64 *ORC_RESTRICT ptr4;
|
|
const orc_union64 *ORC_RESTRICT ptr5;
|
|
orc_union64 var40;
|
|
orc_union16 var41;
|
|
orc_union64 var42;
|
|
orc_union16 var43;
|
|
orc_int8 var44;
|
|
orc_int8 var45;
|
|
orc_union32 var46;
|
|
orc_union32 var47;
|
|
orc_union32 var48;
|
|
orc_union32 var49;
|
|
orc_union32 var50;
|
|
orc_union16 var51;
|
|
orc_union16 var52;
|
|
orc_int8 var53;
|
|
orc_int8 var54;
|
|
orc_int8 var55;
|
|
orc_int8 var56;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
|
|
ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
|
|
ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j);
|
|
ptr3 = ORC_PTR_OFFSET (ex->arrays[3], ex->params[3] * j);
|
|
ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
|
|
ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadq */
|
|
var40 = ptr4[i];
|
|
/* 1: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var40.x2[0];
|
|
var46.x2[0] = _src.x2[1];
|
|
var47.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var40.x2[1];
|
|
var46.x2[1] = _src.x2[1];
|
|
var47.x2[1] = _src.x2[0];
|
|
}
|
|
/* 2: select1wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var47.x2[0];
|
|
var41.x2[0] = _src.x2[1];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var47.x2[1];
|
|
var41.x2[1] = _src.x2[1];
|
|
}
|
|
/* 3: storew */
|
|
ptr0[i] = var41;
|
|
/* 4: loadq */
|
|
var42 = ptr5[i];
|
|
/* 5: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var42.x2[0];
|
|
var48.x2[0] = _src.x2[1];
|
|
var49.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var42.x2[1];
|
|
var48.x2[1] = _src.x2[1];
|
|
var49.x2[1] = _src.x2[0];
|
|
}
|
|
/* 6: select1wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var49.x2[0];
|
|
var43.x2[0] = _src.x2[1];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var49.x2[1];
|
|
var43.x2[1] = _src.x2[1];
|
|
}
|
|
/* 7: storew */
|
|
ptr1[i] = var43;
|
|
/* 8: avgub */
|
|
var50.x4[0] =
|
|
((orc_uint8) var46.x4[0] + (orc_uint8) var48.x4[0] + 1) >> 1;
|
|
var50.x4[1] =
|
|
((orc_uint8) var46.x4[1] + (orc_uint8) var48.x4[1] + 1) >> 1;
|
|
var50.x4[2] =
|
|
((orc_uint8) var46.x4[2] + (orc_uint8) var48.x4[2] + 1) >> 1;
|
|
var50.x4[3] =
|
|
((orc_uint8) var46.x4[3] + (orc_uint8) var48.x4[3] + 1) >> 1;
|
|
/* 9: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var50.x2[0];
|
|
var51.x2[0] = _src.x2[1];
|
|
var52.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var50.x2[1];
|
|
var51.x2[1] = _src.x2[1];
|
|
var52.x2[1] = _src.x2[0];
|
|
}
|
|
/* 10: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var52.i;
|
|
var53 = _src.x2[1];
|
|
var54 = _src.x2[0];
|
|
}
|
|
/* 11: avgub */
|
|
var44 = ((orc_uint8) var53 + (orc_uint8) var54 + 1) >> 1;
|
|
/* 12: storeb */
|
|
ptr2[i] = var44;
|
|
/* 13: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var51.i;
|
|
var55 = _src.x2[1];
|
|
var56 = _src.x2[0];
|
|
}
|
|
/* 14: avgub */
|
|
var45 = ((orc_uint8) var55 + (orc_uint8) var56 + 1) >> 1;
|
|
/* 15: storeb */
|
|
ptr3[i] = var45;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_convert_AYUV_I420 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
|
|
int d3_stride, guint8 * ORC_RESTRICT d4, int d4_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride,
|
|
const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m)
|
|
{
|
|
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, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
|
|
110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 73, 52, 50, 48, 11,
|
|
2, 2, 11, 2, 2, 11, 1, 1, 11, 1, 1, 12, 8, 8, 12, 8,
|
|
8, 20, 4, 20, 4, 20, 4, 20, 4, 20, 2, 20, 2, 20, 1, 20,
|
|
1, 21, 1, 198, 33, 32, 4, 21, 1, 189, 0, 32, 21, 1, 198, 34,
|
|
32, 5, 21, 1, 189, 1, 32, 21, 2, 39, 35, 33, 34, 21, 1, 199,
|
|
37, 36, 35, 199, 38, 39, 36, 39, 2, 38, 39, 199, 38, 39, 37, 39,
|
|
3, 38, 39, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_I420);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_2d (p);
|
|
orc_program_set_name (p, "video_orc_convert_AYUV_I420");
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_I420);
|
|
orc_program_add_destination (p, 2, "d1");
|
|
orc_program_add_destination (p, 2, "d2");
|
|
orc_program_add_destination (p, 1, "d3");
|
|
orc_program_add_destination (p, 1, "d4");
|
|
orc_program_add_source (p, 8, "s1");
|
|
orc_program_add_source (p, 8, "s2");
|
|
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, 2, "t5");
|
|
orc_program_add_temporary (p, 2, "t6");
|
|
orc_program_add_temporary (p, 1, "t7");
|
|
orc_program_add_temporary (p, 1, "t8");
|
|
|
|
orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_S2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D2, ORC_VAR_T1,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "avgub", 2, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T3,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T6, ORC_VAR_T5, ORC_VAR_T4,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T7, ORC_VAR_T8, ORC_VAR_T5,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "avgub", 0, ORC_VAR_D3, ORC_VAR_T7, ORC_VAR_T8,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T7, ORC_VAR_T8, ORC_VAR_T6,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "avgub", 0, ORC_VAR_D4, ORC_VAR_T7, ORC_VAR_T8,
|
|
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;
|
|
ORC_EXECUTOR_M (ex) = m;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->params[ORC_VAR_D1] = d1_stride;
|
|
ex->arrays[ORC_VAR_D2] = d2;
|
|
ex->params[ORC_VAR_D2] = d2_stride;
|
|
ex->arrays[ORC_VAR_D3] = d3;
|
|
ex->params[ORC_VAR_D3] = d3_stride;
|
|
ex->arrays[ORC_VAR_D4] = d4;
|
|
ex->params[ORC_VAR_D4] = d4_stride;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->params[ORC_VAR_S1] = s1_stride;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
ex->params[ORC_VAR_S2] = s2_stride;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_convert_AYUV_YUY2 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_convert_AYUV_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
|
|
{
|
|
int i;
|
|
int j;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union64 *ORC_RESTRICT ptr4;
|
|
orc_union64 var37;
|
|
orc_union32 var38;
|
|
orc_union32 var39;
|
|
orc_union32 var40;
|
|
orc_union16 var41;
|
|
orc_union16 var42;
|
|
orc_union16 var43;
|
|
orc_union16 var44;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
|
|
ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadq */
|
|
var37 = ptr4[i];
|
|
/* 1: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var37.x2[0];
|
|
var39.x2[0] = _src.x2[1];
|
|
var40.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var37.x2[1];
|
|
var39.x2[1] = _src.x2[1];
|
|
var40.x2[1] = _src.x2[0];
|
|
}
|
|
/* 2: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var39.i;
|
|
var41.i = _src.x2[1];
|
|
var42.i = _src.x2[0];
|
|
}
|
|
/* 3: avgub */
|
|
var43.x2[0] =
|
|
((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
|
|
var43.x2[1] =
|
|
((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
|
|
/* 4: select1wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var40.x2[0];
|
|
var44.x2[0] = _src.x2[1];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var40.x2[1];
|
|
var44.x2[1] = _src.x2[1];
|
|
}
|
|
/* 5: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var44.x2[0];
|
|
_dest.x2[1] = var43.x2[0];
|
|
var38.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var44.x2[1];
|
|
_dest.x2[1] = var43.x2[1];
|
|
var38.x2[1] = _dest.i;
|
|
}
|
|
/* 6: storel */
|
|
ptr0[i] = var38;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_convert_AYUV_YUY2 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int j;
|
|
int n = ex->n;
|
|
int m = ex->params[ORC_VAR_A1];
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union64 *ORC_RESTRICT ptr4;
|
|
orc_union64 var37;
|
|
orc_union32 var38;
|
|
orc_union32 var39;
|
|
orc_union32 var40;
|
|
orc_union16 var41;
|
|
orc_union16 var42;
|
|
orc_union16 var43;
|
|
orc_union16 var44;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
|
|
ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadq */
|
|
var37 = ptr4[i];
|
|
/* 1: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var37.x2[0];
|
|
var39.x2[0] = _src.x2[1];
|
|
var40.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var37.x2[1];
|
|
var39.x2[1] = _src.x2[1];
|
|
var40.x2[1] = _src.x2[0];
|
|
}
|
|
/* 2: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var39.i;
|
|
var41.i = _src.x2[1];
|
|
var42.i = _src.x2[0];
|
|
}
|
|
/* 3: avgub */
|
|
var43.x2[0] =
|
|
((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
|
|
var43.x2[1] =
|
|
((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
|
|
/* 4: select1wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var40.x2[0];
|
|
var44.x2[0] = _src.x2[1];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var40.x2[1];
|
|
var44.x2[1] = _src.x2[1];
|
|
}
|
|
/* 5: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var44.x2[0];
|
|
_dest.x2[1] = var43.x2[0];
|
|
var38.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var44.x2[1];
|
|
_dest.x2[1] = var43.x2[1];
|
|
var38.x2[1] = _dest.i;
|
|
}
|
|
/* 6: storel */
|
|
ptr0[i] = var38;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_convert_AYUV_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
|
|
{
|
|
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, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
|
|
110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 89, 85, 89, 50, 11,
|
|
4, 4, 12, 8, 8, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, 21,
|
|
1, 198, 36, 35, 4, 198, 33, 34, 36, 21, 1, 39, 33, 33, 34, 21,
|
|
1, 189, 32, 35, 21, 1, 196, 0, 32, 33, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_YUY2);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_2d (p);
|
|
orc_program_set_name (p, "video_orc_convert_AYUV_YUY2");
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_YUY2);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 8, "s1");
|
|
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, 4, "t4");
|
|
orc_program_add_temporary (p, 4, "t5");
|
|
|
|
orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T5,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "avgub", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T4,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
|
|
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;
|
|
ORC_EXECUTOR_M (ex) = m;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->params[ORC_VAR_D1] = d1_stride;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->params[ORC_VAR_S1] = s1_stride;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_convert_AYUV_UYVY */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_convert_AYUV_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
|
|
{
|
|
int i;
|
|
int j;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union64 *ORC_RESTRICT ptr4;
|
|
orc_union64 var37;
|
|
orc_union32 var38;
|
|
orc_union32 var39;
|
|
orc_union32 var40;
|
|
orc_union16 var41;
|
|
orc_union16 var42;
|
|
orc_union16 var43;
|
|
orc_union16 var44;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
|
|
ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadq */
|
|
var37 = ptr4[i];
|
|
/* 1: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var37.x2[0];
|
|
var39.x2[0] = _src.x2[1];
|
|
var40.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var37.x2[1];
|
|
var39.x2[1] = _src.x2[1];
|
|
var40.x2[1] = _src.x2[0];
|
|
}
|
|
/* 2: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var39.i;
|
|
var41.i = _src.x2[1];
|
|
var42.i = _src.x2[0];
|
|
}
|
|
/* 3: avgub */
|
|
var43.x2[0] =
|
|
((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
|
|
var43.x2[1] =
|
|
((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
|
|
/* 4: select1wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var40.x2[0];
|
|
var44.x2[0] = _src.x2[1];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var40.x2[1];
|
|
var44.x2[1] = _src.x2[1];
|
|
}
|
|
/* 5: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var43.x2[0];
|
|
_dest.x2[1] = var44.x2[0];
|
|
var38.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var43.x2[1];
|
|
_dest.x2[1] = var44.x2[1];
|
|
var38.x2[1] = _dest.i;
|
|
}
|
|
/* 6: storel */
|
|
ptr0[i] = var38;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_convert_AYUV_UYVY (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int j;
|
|
int n = ex->n;
|
|
int m = ex->params[ORC_VAR_A1];
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union64 *ORC_RESTRICT ptr4;
|
|
orc_union64 var37;
|
|
orc_union32 var38;
|
|
orc_union32 var39;
|
|
orc_union32 var40;
|
|
orc_union16 var41;
|
|
orc_union16 var42;
|
|
orc_union16 var43;
|
|
orc_union16 var44;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
|
|
ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadq */
|
|
var37 = ptr4[i];
|
|
/* 1: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var37.x2[0];
|
|
var39.x2[0] = _src.x2[1];
|
|
var40.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var37.x2[1];
|
|
var39.x2[1] = _src.x2[1];
|
|
var40.x2[1] = _src.x2[0];
|
|
}
|
|
/* 2: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var39.i;
|
|
var41.i = _src.x2[1];
|
|
var42.i = _src.x2[0];
|
|
}
|
|
/* 3: avgub */
|
|
var43.x2[0] =
|
|
((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
|
|
var43.x2[1] =
|
|
((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
|
|
/* 4: select1wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var40.x2[0];
|
|
var44.x2[0] = _src.x2[1];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var40.x2[1];
|
|
var44.x2[1] = _src.x2[1];
|
|
}
|
|
/* 5: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var43.x2[0];
|
|
_dest.x2[1] = var44.x2[0];
|
|
var38.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var43.x2[1];
|
|
_dest.x2[1] = var44.x2[1];
|
|
var38.x2[1] = _dest.i;
|
|
}
|
|
/* 6: storel */
|
|
ptr0[i] = var38;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_convert_AYUV_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
|
|
{
|
|
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, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
|
|
110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 85, 89, 86, 89, 11,
|
|
4, 4, 12, 8, 8, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4, 21,
|
|
1, 198, 36, 35, 4, 198, 33, 34, 36, 21, 1, 39, 33, 33, 34, 21,
|
|
1, 189, 32, 35, 21, 1, 196, 0, 33, 32, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_UYVY);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_2d (p);
|
|
orc_program_set_name (p, "video_orc_convert_AYUV_UYVY");
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_UYVY);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 8, "s1");
|
|
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, 4, "t4");
|
|
orc_program_add_temporary (p, 4, "t5");
|
|
|
|
orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T3, ORC_VAR_T5,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "avgub", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select1wb", 1, ORC_VAR_T1, ORC_VAR_T4,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
#endif
|
|
|
|
orc_program_compile (p);
|
|
c = orc_program_take_code (p);
|
|
orc_program_free (p);
|
|
}
|
|
p_inited = TRUE;
|
|
orc_once_mutex_unlock ();
|
|
}
|
|
ex->arrays[ORC_VAR_A2] = c;
|
|
ex->program = 0;
|
|
|
|
ex->n = n;
|
|
ORC_EXECUTOR_M (ex) = m;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->params[ORC_VAR_D1] = d1_stride;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->params[ORC_VAR_S1] = s1_stride;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_convert_AYUV_Y42B */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_convert_AYUV_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
|
|
int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
|
|
{
|
|
int i;
|
|
int j;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
orc_int8 *ORC_RESTRICT ptr1;
|
|
orc_int8 *ORC_RESTRICT ptr2;
|
|
const orc_union64 *ORC_RESTRICT ptr4;
|
|
orc_union64 var36;
|
|
orc_int8 var37;
|
|
orc_int8 var38;
|
|
orc_union16 var39;
|
|
orc_union32 var40;
|
|
orc_union32 var41;
|
|
orc_union16 var42;
|
|
orc_union16 var43;
|
|
orc_union16 var44;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
|
|
ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
|
|
ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j);
|
|
ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadq */
|
|
var36 = ptr4[i];
|
|
/* 1: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var36.x2[0];
|
|
var40.x2[0] = _src.x2[1];
|
|
var41.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var36.x2[1];
|
|
var40.x2[1] = _src.x2[1];
|
|
var41.x2[1] = _src.x2[0];
|
|
}
|
|
/* 2: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var40.i;
|
|
var42.i = _src.x2[1];
|
|
var43.i = _src.x2[0];
|
|
}
|
|
/* 3: avgub */
|
|
var44.x2[0] =
|
|
((orc_uint8) var42.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1;
|
|
var44.x2[1] =
|
|
((orc_uint8) var42.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1;
|
|
/* 4: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var44.i;
|
|
var37 = _src.x2[1];
|
|
var38 = _src.x2[0];
|
|
}
|
|
/* 5: storeb */
|
|
ptr2[i] = var37;
|
|
/* 6: storeb */
|
|
ptr1[i] = var38;
|
|
/* 7: select1wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var41.x2[0];
|
|
var39.x2[0] = _src.x2[1];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var41.x2[1];
|
|
var39.x2[1] = _src.x2[1];
|
|
}
|
|
/* 8: storew */
|
|
ptr0[i] = var39;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_convert_AYUV_Y42B (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int j;
|
|
int n = ex->n;
|
|
int m = ex->params[ORC_VAR_A1];
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
orc_int8 *ORC_RESTRICT ptr1;
|
|
orc_int8 *ORC_RESTRICT ptr2;
|
|
const orc_union64 *ORC_RESTRICT ptr4;
|
|
orc_union64 var36;
|
|
orc_int8 var37;
|
|
orc_int8 var38;
|
|
orc_union16 var39;
|
|
orc_union32 var40;
|
|
orc_union32 var41;
|
|
orc_union16 var42;
|
|
orc_union16 var43;
|
|
orc_union16 var44;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
|
|
ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
|
|
ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j);
|
|
ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadq */
|
|
var36 = ptr4[i];
|
|
/* 1: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var36.x2[0];
|
|
var40.x2[0] = _src.x2[1];
|
|
var41.x2[0] = _src.x2[0];
|
|
}
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var36.x2[1];
|
|
var40.x2[1] = _src.x2[1];
|
|
var41.x2[1] = _src.x2[0];
|
|
}
|
|
/* 2: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var40.i;
|
|
var42.i = _src.x2[1];
|
|
var43.i = _src.x2[0];
|
|
}
|
|
/* 3: avgub */
|
|
var44.x2[0] =
|
|
((orc_uint8) var42.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1;
|
|
var44.x2[1] =
|
|
((orc_uint8) var42.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1;
|
|
/* 4: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var44.i;
|
|
var37 = _src.x2[1];
|
|
var38 = _src.x2[0];
|
|
}
|
|
/* 5: storeb */
|
|
ptr2[i] = var37;
|
|
/* 6: storeb */
|
|
ptr1[i] = var38;
|
|
/* 7: select1wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var41.x2[0];
|
|
var39.x2[0] = _src.x2[1];
|
|
}
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var41.x2[1];
|
|
var39.x2[1] = _src.x2[1];
|
|
}
|
|
/* 8: storew */
|
|
ptr0[i] = var39;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_convert_AYUV_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
|
|
int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
|
|
{
|
|
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, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
|
|
110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 89, 52, 50, 66, 11,
|
|
2, 2, 11, 1, 1, 11, 1, 1, 12, 8, 8, 20, 4, 20, 4, 20,
|
|
2, 20, 2, 21, 1, 198, 33, 32, 4, 198, 34, 35, 33, 21, 1, 39,
|
|
34, 34, 35, 199, 2, 1, 34, 21, 1, 189, 0, 32, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_Y42B);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_2d (p);
|
|
orc_program_set_name (p, "video_orc_convert_AYUV_Y42B");
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_Y42B);
|
|
orc_program_add_destination (p, 2, "d1");
|
|
orc_program_add_destination (p, 1, "d2");
|
|
orc_program_add_destination (p, 1, "d3");
|
|
orc_program_add_source (p, 8, "s1");
|
|
orc_program_add_temporary (p, 4, "t1");
|
|
orc_program_add_temporary (p, 4, "t2");
|
|
orc_program_add_temporary (p, 2, "t3");
|
|
orc_program_add_temporary (p, 2, "t4");
|
|
|
|
orc_program_append_2 (p, "splitlw", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "avgub", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T3,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select1wb", 1, ORC_VAR_D1, ORC_VAR_T1,
|
|
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;
|
|
ORC_EXECUTOR_M (ex) = m;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->params[ORC_VAR_D1] = d1_stride;
|
|
ex->arrays[ORC_VAR_D2] = d2;
|
|
ex->params[ORC_VAR_D2] = d2_stride;
|
|
ex->arrays[ORC_VAR_D3] = d3;
|
|
ex->params[ORC_VAR_D3] = d3_stride;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->params[ORC_VAR_S1] = s1_stride;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_convert_AYUV_Y444 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_convert_AYUV_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
|
|
int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
|
|
{
|
|
int i;
|
|
int j;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
orc_int8 *ORC_RESTRICT ptr1;
|
|
orc_int8 *ORC_RESTRICT ptr2;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var34;
|
|
orc_int8 var35;
|
|
orc_int8 var36;
|
|
orc_int8 var37;
|
|
orc_union16 var38;
|
|
orc_union16 var39;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
|
|
ptr1 = ORC_PTR_OFFSET (d2, d2_stride * j);
|
|
ptr2 = ORC_PTR_OFFSET (d3, d3_stride * j);
|
|
ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var34 = ptr4[i];
|
|
/* 1: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var34.i;
|
|
var38.i = _src.x2[1];
|
|
var39.i = _src.x2[0];
|
|
}
|
|
/* 2: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var38.i;
|
|
var35 = _src.x2[1];
|
|
var36 = _src.x2[0];
|
|
}
|
|
/* 3: storeb */
|
|
ptr2[i] = var35;
|
|
/* 4: storeb */
|
|
ptr1[i] = var36;
|
|
/* 5: select1wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var39.i;
|
|
var37 = _src.x2[1];
|
|
}
|
|
/* 6: storeb */
|
|
ptr0[i] = var37;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_convert_AYUV_Y444 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int j;
|
|
int n = ex->n;
|
|
int m = ex->params[ORC_VAR_A1];
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
orc_int8 *ORC_RESTRICT ptr1;
|
|
orc_int8 *ORC_RESTRICT ptr2;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var34;
|
|
orc_int8 var35;
|
|
orc_int8 var36;
|
|
orc_int8 var37;
|
|
orc_union16 var38;
|
|
orc_union16 var39;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
|
|
ptr1 = ORC_PTR_OFFSET (ex->arrays[1], ex->params[1] * j);
|
|
ptr2 = ORC_PTR_OFFSET (ex->arrays[2], ex->params[2] * j);
|
|
ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var34 = ptr4[i];
|
|
/* 1: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var34.i;
|
|
var38.i = _src.x2[1];
|
|
var39.i = _src.x2[0];
|
|
}
|
|
/* 2: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var38.i;
|
|
var35 = _src.x2[1];
|
|
var36 = _src.x2[0];
|
|
}
|
|
/* 3: storeb */
|
|
ptr2[i] = var35;
|
|
/* 4: storeb */
|
|
ptr1[i] = var36;
|
|
/* 5: select1wb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var39.i;
|
|
var37 = _src.x2[1];
|
|
}
|
|
/* 6: storeb */
|
|
ptr0[i] = var37;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_convert_AYUV_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
|
|
int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
|
|
{
|
|
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, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
|
|
110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 89, 52, 52, 52, 11,
|
|
1, 1, 11, 1, 1, 11, 1, 1, 12, 4, 4, 20, 2, 20, 2, 198,
|
|
33, 32, 4, 199, 2, 1, 33, 189, 0, 32, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_Y444);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_2d (p);
|
|
orc_program_set_name (p, "video_orc_convert_AYUV_Y444");
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_Y444);
|
|
orc_program_add_destination (p, 1, "d1");
|
|
orc_program_add_destination (p, 1, "d2");
|
|
orc_program_add_destination (p, 1, "d3");
|
|
orc_program_add_source (p, 4, "s1");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 2, "t2");
|
|
|
|
orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splitwb", 0, ORC_VAR_D3, ORC_VAR_D2, ORC_VAR_T2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select1wb", 0, ORC_VAR_D1, ORC_VAR_T1,
|
|
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;
|
|
ORC_EXECUTOR_M (ex) = m;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->params[ORC_VAR_D1] = d1_stride;
|
|
ex->arrays[ORC_VAR_D2] = d2;
|
|
ex->params[ORC_VAR_D2] = d2_stride;
|
|
ex->arrays[ORC_VAR_D3] = d3;
|
|
ex->params[ORC_VAR_D3] = d3_stride;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->params[ORC_VAR_S1] = s1_stride;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_convert_Y42B_YUY2 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_convert_Y42B_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride,
|
|
const guint8 * ORC_RESTRICT s2, int s2_stride,
|
|
const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
|
|
{
|
|
int i;
|
|
int j;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union16 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
orc_int8 var33;
|
|
orc_int8 var34;
|
|
orc_union16 var35;
|
|
orc_union32 var36;
|
|
orc_union16 var37;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
|
|
ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
|
|
ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
|
|
ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var33 = ptr5[i];
|
|
/* 1: loadb */
|
|
var34 = ptr6[i];
|
|
/* 2: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var33;
|
|
_dest.x2[1] = var34;
|
|
var37.i = _dest.i;
|
|
}
|
|
/* 3: loadw */
|
|
var35 = ptr4[i];
|
|
/* 4: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var35.x2[0];
|
|
_dest.x2[1] = var37.x2[0];
|
|
var36.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var35.x2[1];
|
|
_dest.x2[1] = var37.x2[1];
|
|
var36.x2[1] = _dest.i;
|
|
}
|
|
/* 5: storel */
|
|
ptr0[i] = var36;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_convert_Y42B_YUY2 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int j;
|
|
int n = ex->n;
|
|
int m = ex->params[ORC_VAR_A1];
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union16 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
orc_int8 var33;
|
|
orc_int8 var34;
|
|
orc_union16 var35;
|
|
orc_union32 var36;
|
|
orc_union16 var37;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
|
|
ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
|
|
ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
|
|
ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var33 = ptr5[i];
|
|
/* 1: loadb */
|
|
var34 = ptr6[i];
|
|
/* 2: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var33;
|
|
_dest.x2[1] = var34;
|
|
var37.i = _dest.i;
|
|
}
|
|
/* 3: loadw */
|
|
var35 = ptr4[i];
|
|
/* 4: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var35.x2[0];
|
|
_dest.x2[1] = var37.x2[0];
|
|
var36.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var35.x2[1];
|
|
_dest.x2[1] = var37.x2[1];
|
|
var36.x2[1] = _dest.i;
|
|
}
|
|
/* 5: storel */
|
|
ptr0[i] = var36;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_convert_Y42B_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride,
|
|
const guint8 * ORC_RESTRICT s2, int s2_stride,
|
|
const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
|
|
{
|
|
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, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
|
|
110, 118, 101, 114, 116, 95, 89, 52, 50, 66, 95, 89, 85, 89, 50, 11,
|
|
4, 4, 12, 2, 2, 12, 1, 1, 12, 1, 1, 20, 2, 196, 32, 5,
|
|
6, 21, 1, 196, 0, 4, 32, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_Y42B_YUY2);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_2d (p);
|
|
orc_program_set_name (p, "video_orc_convert_Y42B_YUY2");
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_Y42B_YUY2);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 2, "s1");
|
|
orc_program_add_source (p, 1, "s2");
|
|
orc_program_add_source (p, 1, "s3");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
|
|
orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
#endif
|
|
|
|
orc_program_compile (p);
|
|
c = orc_program_take_code (p);
|
|
orc_program_free (p);
|
|
}
|
|
p_inited = TRUE;
|
|
orc_once_mutex_unlock ();
|
|
}
|
|
ex->arrays[ORC_VAR_A2] = c;
|
|
ex->program = 0;
|
|
|
|
ex->n = n;
|
|
ORC_EXECUTOR_M (ex) = m;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->params[ORC_VAR_D1] = d1_stride;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->params[ORC_VAR_S1] = s1_stride;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
ex->params[ORC_VAR_S2] = s2_stride;
|
|
ex->arrays[ORC_VAR_S3] = (void *) s3;
|
|
ex->params[ORC_VAR_S3] = s3_stride;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_convert_Y42B_UYVY */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_convert_Y42B_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride,
|
|
const guint8 * ORC_RESTRICT s2, int s2_stride,
|
|
const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
|
|
{
|
|
int i;
|
|
int j;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union16 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
orc_int8 var33;
|
|
orc_int8 var34;
|
|
orc_union16 var35;
|
|
orc_union32 var36;
|
|
orc_union16 var37;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
|
|
ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
|
|
ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
|
|
ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var33 = ptr5[i];
|
|
/* 1: loadb */
|
|
var34 = ptr6[i];
|
|
/* 2: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var33;
|
|
_dest.x2[1] = var34;
|
|
var37.i = _dest.i;
|
|
}
|
|
/* 3: loadw */
|
|
var35 = ptr4[i];
|
|
/* 4: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var37.x2[0];
|
|
_dest.x2[1] = var35.x2[0];
|
|
var36.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var37.x2[1];
|
|
_dest.x2[1] = var35.x2[1];
|
|
var36.x2[1] = _dest.i;
|
|
}
|
|
/* 5: storel */
|
|
ptr0[i] = var36;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_convert_Y42B_UYVY (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int j;
|
|
int n = ex->n;
|
|
int m = ex->params[ORC_VAR_A1];
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union16 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
orc_int8 var33;
|
|
orc_int8 var34;
|
|
orc_union16 var35;
|
|
orc_union32 var36;
|
|
orc_union16 var37;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
|
|
ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
|
|
ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
|
|
ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var33 = ptr5[i];
|
|
/* 1: loadb */
|
|
var34 = ptr6[i];
|
|
/* 2: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var33;
|
|
_dest.x2[1] = var34;
|
|
var37.i = _dest.i;
|
|
}
|
|
/* 3: loadw */
|
|
var35 = ptr4[i];
|
|
/* 4: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var37.x2[0];
|
|
_dest.x2[1] = var35.x2[0];
|
|
var36.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var37.x2[1];
|
|
_dest.x2[1] = var35.x2[1];
|
|
var36.x2[1] = _dest.i;
|
|
}
|
|
/* 5: storel */
|
|
ptr0[i] = var36;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_convert_Y42B_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride,
|
|
const guint8 * ORC_RESTRICT s2, int s2_stride,
|
|
const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
|
|
{
|
|
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, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
|
|
110, 118, 101, 114, 116, 95, 89, 52, 50, 66, 95, 85, 89, 86, 89, 11,
|
|
4, 4, 12, 2, 2, 12, 1, 1, 12, 1, 1, 20, 2, 196, 32, 5,
|
|
6, 21, 1, 196, 0, 32, 4, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_Y42B_UYVY);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_2d (p);
|
|
orc_program_set_name (p, "video_orc_convert_Y42B_UYVY");
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_Y42B_UYVY);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 2, "s1");
|
|
orc_program_add_source (p, 1, "s2");
|
|
orc_program_add_source (p, 1, "s3");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
|
|
orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1,
|
|
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;
|
|
ORC_EXECUTOR_M (ex) = m;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->params[ORC_VAR_D1] = d1_stride;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->params[ORC_VAR_S1] = s1_stride;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
ex->params[ORC_VAR_S2] = s2_stride;
|
|
ex->arrays[ORC_VAR_S3] = (void *) s3;
|
|
ex->params[ORC_VAR_S3] = s3_stride;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_convert_Y42B_AYUV */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_convert_Y42B_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride,
|
|
const guint8 * ORC_RESTRICT s2, int s2_stride,
|
|
const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
|
|
{
|
|
int i;
|
|
int j;
|
|
orc_union64 *ORC_RESTRICT ptr0;
|
|
const orc_union16 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
orc_int8 var36;
|
|
orc_int8 var37;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union16 var38;
|
|
#else
|
|
orc_union16 var38;
|
|
#endif
|
|
orc_union16 var39;
|
|
orc_union64 var40;
|
|
orc_union16 var41;
|
|
orc_union32 var42;
|
|
orc_union32 var43;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
|
|
ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
|
|
ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
|
|
ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j);
|
|
|
|
/* 3: loadpb */
|
|
var38.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
var38.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var36 = ptr5[i];
|
|
/* 1: loadb */
|
|
var37 = ptr6[i];
|
|
/* 2: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var36;
|
|
_dest.x2[1] = var37;
|
|
var41.i = _dest.i;
|
|
}
|
|
/* 4: loadw */
|
|
var39 = ptr4[i];
|
|
/* 5: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var38.x2[0];
|
|
_dest.x2[1] = var39.x2[0];
|
|
var42.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var38.x2[1];
|
|
_dest.x2[1] = var39.x2[1];
|
|
var42.x2[1] = _dest.i;
|
|
}
|
|
/* 6: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var41.i;
|
|
_dest.x2[1] = var41.i;
|
|
var43.i = _dest.i;
|
|
}
|
|
/* 7: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var42.x2[0];
|
|
_dest.x2[1] = var43.x2[0];
|
|
var40.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var42.x2[1];
|
|
_dest.x2[1] = var43.x2[1];
|
|
var40.x2[1] = _dest.i;
|
|
}
|
|
/* 8: storeq */
|
|
ptr0[i] = var40;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_convert_Y42B_AYUV (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int j;
|
|
int n = ex->n;
|
|
int m = ex->params[ORC_VAR_A1];
|
|
orc_union64 *ORC_RESTRICT ptr0;
|
|
const orc_union16 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
orc_int8 var36;
|
|
orc_int8 var37;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union16 var38;
|
|
#else
|
|
orc_union16 var38;
|
|
#endif
|
|
orc_union16 var39;
|
|
orc_union64 var40;
|
|
orc_union16 var41;
|
|
orc_union32 var42;
|
|
orc_union32 var43;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
|
|
ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
|
|
ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
|
|
ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j);
|
|
|
|
/* 3: loadpb */
|
|
var38.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
var38.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var36 = ptr5[i];
|
|
/* 1: loadb */
|
|
var37 = ptr6[i];
|
|
/* 2: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var36;
|
|
_dest.x2[1] = var37;
|
|
var41.i = _dest.i;
|
|
}
|
|
/* 4: loadw */
|
|
var39 = ptr4[i];
|
|
/* 5: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var38.x2[0];
|
|
_dest.x2[1] = var39.x2[0];
|
|
var42.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var38.x2[1];
|
|
_dest.x2[1] = var39.x2[1];
|
|
var42.x2[1] = _dest.i;
|
|
}
|
|
/* 6: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var41.i;
|
|
_dest.x2[1] = var41.i;
|
|
var43.i = _dest.i;
|
|
}
|
|
/* 7: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var42.x2[0];
|
|
_dest.x2[1] = var43.x2[0];
|
|
var40.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var42.x2[1];
|
|
_dest.x2[1] = var43.x2[1];
|
|
var40.x2[1] = _dest.i;
|
|
}
|
|
/* 8: storeq */
|
|
ptr0[i] = var40;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_convert_Y42B_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride,
|
|
const guint8 * ORC_RESTRICT s2, int s2_stride,
|
|
const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
|
|
{
|
|
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, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
|
|
110, 118, 101, 114, 116, 95, 89, 52, 50, 66, 95, 65, 89, 85, 86, 11,
|
|
8, 8, 12, 2, 2, 12, 1, 1, 12, 1, 1, 14, 1, 255, 0, 0,
|
|
0, 20, 2, 20, 2, 20, 4, 20, 4, 196, 32, 5, 6, 21, 1, 196,
|
|
35, 16, 4, 195, 34, 32, 32, 21, 1, 195, 0, 35, 34, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_Y42B_AYUV);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_2d (p);
|
|
orc_program_set_name (p, "video_orc_convert_Y42B_AYUV");
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_Y42B_AYUV);
|
|
orc_program_add_destination (p, 8, "d1");
|
|
orc_program_add_source (p, 2, "s1");
|
|
orc_program_add_source (p, 1, "s2");
|
|
orc_program_add_source (p, 1, "s3");
|
|
orc_program_add_constant (p, 1, 0x000000ff, "c1");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 2, "t2");
|
|
orc_program_add_temporary (p, 4, "t3");
|
|
orc_program_add_temporary (p, 4, "t4");
|
|
|
|
orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T4, ORC_VAR_C1, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergewl", 1, ORC_VAR_D1, ORC_VAR_T4, ORC_VAR_T3,
|
|
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;
|
|
ORC_EXECUTOR_M (ex) = m;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->params[ORC_VAR_D1] = d1_stride;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->params[ORC_VAR_S1] = s1_stride;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
ex->params[ORC_VAR_S2] = s2_stride;
|
|
ex->arrays[ORC_VAR_S3] = (void *) s3;
|
|
ex->params[ORC_VAR_S3] = s3_stride;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_convert_Y444_YUY2 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_convert_Y444_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride,
|
|
const guint8 * ORC_RESTRICT s2, int s2_stride,
|
|
const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
|
|
{
|
|
int i;
|
|
int j;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union16 *ORC_RESTRICT ptr4;
|
|
const orc_union16 *ORC_RESTRICT ptr5;
|
|
const orc_union16 *ORC_RESTRICT ptr6;
|
|
orc_union16 var36;
|
|
orc_union16 var37;
|
|
orc_union16 var38;
|
|
orc_union32 var39;
|
|
orc_union32 var40;
|
|
orc_union16 var41;
|
|
orc_union16 var42;
|
|
orc_union16 var43;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
|
|
ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
|
|
ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
|
|
ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadw */
|
|
var36 = ptr5[i];
|
|
/* 1: loadw */
|
|
var37 = ptr6[i];
|
|
/* 2: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var36.x2[0];
|
|
_dest.x2[1] = var37.x2[0];
|
|
var40.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var36.x2[1];
|
|
_dest.x2[1] = var37.x2[1];
|
|
var40.x2[1] = _dest.i;
|
|
}
|
|
/* 3: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var40.i;
|
|
var41.i = _src.x2[1];
|
|
var42.i = _src.x2[0];
|
|
}
|
|
/* 4: avgub */
|
|
var43.x2[0] =
|
|
((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
|
|
var43.x2[1] =
|
|
((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
|
|
/* 5: loadw */
|
|
var38 = ptr4[i];
|
|
/* 6: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var38.x2[0];
|
|
_dest.x2[1] = var43.x2[0];
|
|
var39.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var38.x2[1];
|
|
_dest.x2[1] = var43.x2[1];
|
|
var39.x2[1] = _dest.i;
|
|
}
|
|
/* 7: storel */
|
|
ptr0[i] = var39;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_convert_Y444_YUY2 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int j;
|
|
int n = ex->n;
|
|
int m = ex->params[ORC_VAR_A1];
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union16 *ORC_RESTRICT ptr4;
|
|
const orc_union16 *ORC_RESTRICT ptr5;
|
|
const orc_union16 *ORC_RESTRICT ptr6;
|
|
orc_union16 var36;
|
|
orc_union16 var37;
|
|
orc_union16 var38;
|
|
orc_union32 var39;
|
|
orc_union32 var40;
|
|
orc_union16 var41;
|
|
orc_union16 var42;
|
|
orc_union16 var43;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
|
|
ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
|
|
ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
|
|
ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadw */
|
|
var36 = ptr5[i];
|
|
/* 1: loadw */
|
|
var37 = ptr6[i];
|
|
/* 2: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var36.x2[0];
|
|
_dest.x2[1] = var37.x2[0];
|
|
var40.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var36.x2[1];
|
|
_dest.x2[1] = var37.x2[1];
|
|
var40.x2[1] = _dest.i;
|
|
}
|
|
/* 3: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var40.i;
|
|
var41.i = _src.x2[1];
|
|
var42.i = _src.x2[0];
|
|
}
|
|
/* 4: avgub */
|
|
var43.x2[0] =
|
|
((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
|
|
var43.x2[1] =
|
|
((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
|
|
/* 5: loadw */
|
|
var38 = ptr4[i];
|
|
/* 6: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var38.x2[0];
|
|
_dest.x2[1] = var43.x2[0];
|
|
var39.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var38.x2[1];
|
|
_dest.x2[1] = var43.x2[1];
|
|
var39.x2[1] = _dest.i;
|
|
}
|
|
/* 7: storel */
|
|
ptr0[i] = var39;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_convert_Y444_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride,
|
|
const guint8 * ORC_RESTRICT s2, int s2_stride,
|
|
const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
|
|
{
|
|
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, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
|
|
110, 118, 101, 114, 116, 95, 89, 52, 52, 52, 95, 89, 85, 89, 50, 11,
|
|
4, 4, 12, 2, 2, 12, 2, 2, 12, 2, 2, 20, 2, 20, 4, 20,
|
|
2, 20, 2, 21, 1, 196, 33, 5, 6, 198, 34, 35, 33, 21, 1, 39,
|
|
32, 34, 35, 21, 1, 196, 0, 4, 32, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_Y444_YUY2);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_2d (p);
|
|
orc_program_set_name (p, "video_orc_convert_Y444_YUY2");
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_Y444_YUY2);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 2, "s1");
|
|
orc_program_add_source (p, 2, "s2");
|
|
orc_program_add_source (p, 2, "s3");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 4, "t2");
|
|
orc_program_add_temporary (p, 2, "t3");
|
|
orc_program_add_temporary (p, 2, "t4");
|
|
|
|
orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S3,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "avgub", 1, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
#endif
|
|
|
|
orc_program_compile (p);
|
|
c = orc_program_take_code (p);
|
|
orc_program_free (p);
|
|
}
|
|
p_inited = TRUE;
|
|
orc_once_mutex_unlock ();
|
|
}
|
|
ex->arrays[ORC_VAR_A2] = c;
|
|
ex->program = 0;
|
|
|
|
ex->n = n;
|
|
ORC_EXECUTOR_M (ex) = m;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->params[ORC_VAR_D1] = d1_stride;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->params[ORC_VAR_S1] = s1_stride;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
ex->params[ORC_VAR_S2] = s2_stride;
|
|
ex->arrays[ORC_VAR_S3] = (void *) s3;
|
|
ex->params[ORC_VAR_S3] = s3_stride;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_convert_Y444_UYVY */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_convert_Y444_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride,
|
|
const guint8 * ORC_RESTRICT s2, int s2_stride,
|
|
const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
|
|
{
|
|
int i;
|
|
int j;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union16 *ORC_RESTRICT ptr4;
|
|
const orc_union16 *ORC_RESTRICT ptr5;
|
|
const orc_union16 *ORC_RESTRICT ptr6;
|
|
orc_union16 var36;
|
|
orc_union16 var37;
|
|
orc_union16 var38;
|
|
orc_union32 var39;
|
|
orc_union32 var40;
|
|
orc_union16 var41;
|
|
orc_union16 var42;
|
|
orc_union16 var43;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
|
|
ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
|
|
ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
|
|
ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadw */
|
|
var36 = ptr5[i];
|
|
/* 1: loadw */
|
|
var37 = ptr6[i];
|
|
/* 2: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var36.x2[0];
|
|
_dest.x2[1] = var37.x2[0];
|
|
var40.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var36.x2[1];
|
|
_dest.x2[1] = var37.x2[1];
|
|
var40.x2[1] = _dest.i;
|
|
}
|
|
/* 3: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var40.i;
|
|
var41.i = _src.x2[1];
|
|
var42.i = _src.x2[0];
|
|
}
|
|
/* 4: avgub */
|
|
var43.x2[0] =
|
|
((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
|
|
var43.x2[1] =
|
|
((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
|
|
/* 5: loadw */
|
|
var38 = ptr4[i];
|
|
/* 6: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var43.x2[0];
|
|
_dest.x2[1] = var38.x2[0];
|
|
var39.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var43.x2[1];
|
|
_dest.x2[1] = var38.x2[1];
|
|
var39.x2[1] = _dest.i;
|
|
}
|
|
/* 7: storel */
|
|
ptr0[i] = var39;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_convert_Y444_UYVY (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int j;
|
|
int n = ex->n;
|
|
int m = ex->params[ORC_VAR_A1];
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union16 *ORC_RESTRICT ptr4;
|
|
const orc_union16 *ORC_RESTRICT ptr5;
|
|
const orc_union16 *ORC_RESTRICT ptr6;
|
|
orc_union16 var36;
|
|
orc_union16 var37;
|
|
orc_union16 var38;
|
|
orc_union32 var39;
|
|
orc_union32 var40;
|
|
orc_union16 var41;
|
|
orc_union16 var42;
|
|
orc_union16 var43;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
|
|
ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
|
|
ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
|
|
ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadw */
|
|
var36 = ptr5[i];
|
|
/* 1: loadw */
|
|
var37 = ptr6[i];
|
|
/* 2: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var36.x2[0];
|
|
_dest.x2[1] = var37.x2[0];
|
|
var40.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var36.x2[1];
|
|
_dest.x2[1] = var37.x2[1];
|
|
var40.x2[1] = _dest.i;
|
|
}
|
|
/* 3: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var40.i;
|
|
var41.i = _src.x2[1];
|
|
var42.i = _src.x2[0];
|
|
}
|
|
/* 4: avgub */
|
|
var43.x2[0] =
|
|
((orc_uint8) var41.x2[0] + (orc_uint8) var42.x2[0] + 1) >> 1;
|
|
var43.x2[1] =
|
|
((orc_uint8) var41.x2[1] + (orc_uint8) var42.x2[1] + 1) >> 1;
|
|
/* 5: loadw */
|
|
var38 = ptr4[i];
|
|
/* 6: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var43.x2[0];
|
|
_dest.x2[1] = var38.x2[0];
|
|
var39.x2[0] = _dest.i;
|
|
}
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var43.x2[1];
|
|
_dest.x2[1] = var38.x2[1];
|
|
var39.x2[1] = _dest.i;
|
|
}
|
|
/* 7: storel */
|
|
ptr0[i] = var39;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_convert_Y444_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride,
|
|
const guint8 * ORC_RESTRICT s2, int s2_stride,
|
|
const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
|
|
{
|
|
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, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
|
|
110, 118, 101, 114, 116, 95, 89, 52, 52, 52, 95, 85, 89, 86, 89, 11,
|
|
4, 4, 12, 2, 2, 12, 2, 2, 12, 2, 2, 20, 2, 20, 4, 20,
|
|
2, 20, 2, 21, 1, 196, 33, 5, 6, 198, 34, 35, 33, 21, 1, 39,
|
|
32, 34, 35, 21, 1, 196, 0, 32, 4, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_Y444_UYVY);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_2d (p);
|
|
orc_program_set_name (p, "video_orc_convert_Y444_UYVY");
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_Y444_UYVY);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 2, "s1");
|
|
orc_program_add_source (p, 2, "s2");
|
|
orc_program_add_source (p, 2, "s3");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 4, "t2");
|
|
orc_program_add_temporary (p, 2, "t3");
|
|
orc_program_add_temporary (p, 2, "t4");
|
|
|
|
orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_S3,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T4, ORC_VAR_T2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "avgub", 1, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 1, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1,
|
|
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;
|
|
ORC_EXECUTOR_M (ex) = m;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->params[ORC_VAR_D1] = d1_stride;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->params[ORC_VAR_S1] = s1_stride;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
ex->params[ORC_VAR_S2] = s2_stride;
|
|
ex->arrays[ORC_VAR_S3] = (void *) s3;
|
|
ex->params[ORC_VAR_S3] = s3_stride;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_convert_Y444_AYUV */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_convert_Y444_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride,
|
|
const guint8 * ORC_RESTRICT s2, int s2_stride,
|
|
const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
|
|
{
|
|
int i;
|
|
int j;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
orc_int8 var34;
|
|
orc_int8 var35;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_int8 var36;
|
|
#else
|
|
orc_int8 var36;
|
|
#endif
|
|
orc_int8 var37;
|
|
orc_union32 var38;
|
|
orc_union16 var39;
|
|
orc_union16 var40;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
|
|
ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
|
|
ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
|
|
ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j);
|
|
|
|
/* 3: loadpb */
|
|
var36 = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var34 = ptr5[i];
|
|
/* 1: loadb */
|
|
var35 = ptr6[i];
|
|
/* 2: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var34;
|
|
_dest.x2[1] = var35;
|
|
var39.i = _dest.i;
|
|
}
|
|
/* 4: loadb */
|
|
var37 = ptr4[i];
|
|
/* 5: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var36;
|
|
_dest.x2[1] = var37;
|
|
var40.i = _dest.i;
|
|
}
|
|
/* 6: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var40.i;
|
|
_dest.x2[1] = var39.i;
|
|
var38.i = _dest.i;
|
|
}
|
|
/* 7: storel */
|
|
ptr0[i] = var38;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_convert_Y444_AYUV (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int j;
|
|
int n = ex->n;
|
|
int m = ex->params[ORC_VAR_A1];
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
orc_int8 var34;
|
|
orc_int8 var35;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_int8 var36;
|
|
#else
|
|
orc_int8 var36;
|
|
#endif
|
|
orc_int8 var37;
|
|
orc_union32 var38;
|
|
orc_union16 var39;
|
|
orc_union16 var40;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
|
|
ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
|
|
ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
|
|
ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j);
|
|
|
|
/* 3: loadpb */
|
|
var36 = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var34 = ptr5[i];
|
|
/* 1: loadb */
|
|
var35 = ptr6[i];
|
|
/* 2: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var34;
|
|
_dest.x2[1] = var35;
|
|
var39.i = _dest.i;
|
|
}
|
|
/* 4: loadb */
|
|
var37 = ptr4[i];
|
|
/* 5: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var36;
|
|
_dest.x2[1] = var37;
|
|
var40.i = _dest.i;
|
|
}
|
|
/* 6: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var40.i;
|
|
_dest.x2[1] = var39.i;
|
|
var38.i = _dest.i;
|
|
}
|
|
/* 7: storel */
|
|
ptr0[i] = var38;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_convert_Y444_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride,
|
|
const guint8 * ORC_RESTRICT s2, int s2_stride,
|
|
const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
|
|
{
|
|
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, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
|
|
110, 118, 101, 114, 116, 95, 89, 52, 52, 52, 95, 65, 89, 85, 86, 11,
|
|
4, 4, 12, 1, 1, 12, 1, 1, 12, 1, 1, 14, 1, 255, 0, 0,
|
|
0, 20, 2, 20, 2, 196, 32, 5, 6, 196, 33, 16, 4, 195, 0, 33,
|
|
32, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_Y444_AYUV);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_2d (p);
|
|
orc_program_set_name (p, "video_orc_convert_Y444_AYUV");
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_Y444_AYUV);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 1, "s1");
|
|
orc_program_add_source (p, 1, "s2");
|
|
orc_program_add_source (p, 1, "s3");
|
|
orc_program_add_constant (p, 1, 0x000000ff, "c1");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 2, "t2");
|
|
|
|
orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
#endif
|
|
|
|
orc_program_compile (p);
|
|
c = orc_program_take_code (p);
|
|
orc_program_free (p);
|
|
}
|
|
p_inited = TRUE;
|
|
orc_once_mutex_unlock ();
|
|
}
|
|
ex->arrays[ORC_VAR_A2] = c;
|
|
ex->program = 0;
|
|
|
|
ex->n = n;
|
|
ORC_EXECUTOR_M (ex) = m;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->params[ORC_VAR_D1] = d1_stride;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->params[ORC_VAR_S1] = s1_stride;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
ex->params[ORC_VAR_S2] = s2_stride;
|
|
ex->arrays[ORC_VAR_S3] = (void *) s3;
|
|
ex->params[ORC_VAR_S3] = s3_stride;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_convert_AYUV_ARGB */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_convert_AYUV_ARGB (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
|
|
int p4, int p5, int n, int m)
|
|
{
|
|
int i;
|
|
int j;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var46;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union32 var47;
|
|
#else
|
|
orc_union32 var47;
|
|
#endif
|
|
orc_union16 var48;
|
|
orc_union16 var49;
|
|
orc_union16 var50;
|
|
orc_union16 var51;
|
|
orc_union16 var52;
|
|
orc_union32 var53;
|
|
orc_union32 var54;
|
|
orc_union16 var55;
|
|
orc_union16 var56;
|
|
orc_int8 var57;
|
|
orc_int8 var58;
|
|
orc_int8 var59;
|
|
orc_int8 var60;
|
|
orc_union16 var61;
|
|
orc_union16 var62;
|
|
orc_union16 var63;
|
|
orc_union16 var64;
|
|
orc_union16 var65;
|
|
orc_union16 var66;
|
|
orc_int8 var67;
|
|
orc_union16 var68;
|
|
orc_union16 var69;
|
|
orc_union16 var70;
|
|
orc_int8 var71;
|
|
orc_union16 var72;
|
|
orc_union16 var73;
|
|
orc_union16 var74;
|
|
orc_union16 var75;
|
|
orc_int8 var76;
|
|
orc_union16 var77;
|
|
orc_union32 var78;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
|
|
ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
|
|
|
|
/* 1: loadpb */
|
|
var47.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
var47.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
var47.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
var47.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
/* 9: loadpw */
|
|
var48.i = p1;
|
|
/* 11: loadpw */
|
|
var49.i = p2;
|
|
/* 16: loadpw */
|
|
var50.i = p3;
|
|
/* 20: loadpw */
|
|
var51.i = p4;
|
|
/* 23: loadpw */
|
|
var52.i = p5;
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var46 = ptr4[i];
|
|
/* 2: subb */
|
|
var54.x4[0] = var46.x4[0] - var47.x4[0];
|
|
var54.x4[1] = var46.x4[1] - var47.x4[1];
|
|
var54.x4[2] = var46.x4[2] - var47.x4[2];
|
|
var54.x4[3] = var46.x4[3] - var47.x4[3];
|
|
/* 3: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var54.i;
|
|
var55.i = _src.x2[1];
|
|
var56.i = _src.x2[0];
|
|
}
|
|
/* 4: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var56.i;
|
|
var57 = _src.x2[1];
|
|
var58 = _src.x2[0];
|
|
}
|
|
/* 5: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var55.i;
|
|
var59 = _src.x2[1];
|
|
var60 = _src.x2[0];
|
|
}
|
|
/* 6: splatbw */
|
|
var61.i = ((var57 & 0xff) << 8) | (var57 & 0xff);
|
|
/* 7: splatbw */
|
|
var62.i = ((var60 & 0xff) << 8) | (var60 & 0xff);
|
|
/* 8: splatbw */
|
|
var63.i = ((var59 & 0xff) << 8) | (var59 & 0xff);
|
|
/* 10: mulhsw */
|
|
var64.i = (var61.i * var48.i) >> 16;
|
|
/* 12: mulhsw */
|
|
var65.i = (var63.i * var49.i) >> 16;
|
|
/* 13: addw */
|
|
var66.i = var64.i + var65.i;
|
|
/* 14: convssswb */
|
|
var67 = ORC_CLAMP_SB (var66.i);
|
|
/* 15: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var58;
|
|
_dest.x2[1] = var67;
|
|
var68.i = _dest.i;
|
|
}
|
|
/* 17: mulhsw */
|
|
var69.i = (var62.i * var50.i) >> 16;
|
|
/* 18: addw */
|
|
var70.i = var64.i + var69.i;
|
|
/* 19: convssswb */
|
|
var71 = ORC_CLAMP_SB (var70.i);
|
|
/* 21: mulhsw */
|
|
var72.i = (var62.i * var51.i) >> 16;
|
|
/* 22: addw */
|
|
var73.i = var64.i + var72.i;
|
|
/* 24: mulhsw */
|
|
var74.i = (var63.i * var52.i) >> 16;
|
|
/* 25: addw */
|
|
var75.i = var73.i + var74.i;
|
|
/* 26: convssswb */
|
|
var76 = ORC_CLAMP_SB (var75.i);
|
|
/* 27: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var76;
|
|
_dest.x2[1] = var71;
|
|
var77.i = _dest.i;
|
|
}
|
|
/* 28: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var68.i;
|
|
_dest.x2[1] = var77.i;
|
|
var78.i = _dest.i;
|
|
}
|
|
/* 29: addb */
|
|
var53.x4[0] = var78.x4[0] + var47.x4[0];
|
|
var53.x4[1] = var78.x4[1] + var47.x4[1];
|
|
var53.x4[2] = var78.x4[2] + var47.x4[2];
|
|
var53.x4[3] = var78.x4[3] + var47.x4[3];
|
|
/* 30: storel */
|
|
ptr0[i] = var53;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_convert_AYUV_ARGB (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int j;
|
|
int n = ex->n;
|
|
int m = ex->params[ORC_VAR_A1];
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var46;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union32 var47;
|
|
#else
|
|
orc_union32 var47;
|
|
#endif
|
|
orc_union16 var48;
|
|
orc_union16 var49;
|
|
orc_union16 var50;
|
|
orc_union16 var51;
|
|
orc_union16 var52;
|
|
orc_union32 var53;
|
|
orc_union32 var54;
|
|
orc_union16 var55;
|
|
orc_union16 var56;
|
|
orc_int8 var57;
|
|
orc_int8 var58;
|
|
orc_int8 var59;
|
|
orc_int8 var60;
|
|
orc_union16 var61;
|
|
orc_union16 var62;
|
|
orc_union16 var63;
|
|
orc_union16 var64;
|
|
orc_union16 var65;
|
|
orc_union16 var66;
|
|
orc_int8 var67;
|
|
orc_union16 var68;
|
|
orc_union16 var69;
|
|
orc_union16 var70;
|
|
orc_int8 var71;
|
|
orc_union16 var72;
|
|
orc_union16 var73;
|
|
orc_union16 var74;
|
|
orc_union16 var75;
|
|
orc_int8 var76;
|
|
orc_union16 var77;
|
|
orc_union32 var78;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
|
|
ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
|
|
|
|
/* 1: loadpb */
|
|
var47.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
var47.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
var47.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
var47.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
/* 9: loadpw */
|
|
var48.i = ex->params[24];
|
|
/* 11: loadpw */
|
|
var49.i = ex->params[25];
|
|
/* 16: loadpw */
|
|
var50.i = ex->params[26];
|
|
/* 20: loadpw */
|
|
var51.i = ex->params[27];
|
|
/* 23: loadpw */
|
|
var52.i = ex->params[28];
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var46 = ptr4[i];
|
|
/* 2: subb */
|
|
var54.x4[0] = var46.x4[0] - var47.x4[0];
|
|
var54.x4[1] = var46.x4[1] - var47.x4[1];
|
|
var54.x4[2] = var46.x4[2] - var47.x4[2];
|
|
var54.x4[3] = var46.x4[3] - var47.x4[3];
|
|
/* 3: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var54.i;
|
|
var55.i = _src.x2[1];
|
|
var56.i = _src.x2[0];
|
|
}
|
|
/* 4: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var56.i;
|
|
var57 = _src.x2[1];
|
|
var58 = _src.x2[0];
|
|
}
|
|
/* 5: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var55.i;
|
|
var59 = _src.x2[1];
|
|
var60 = _src.x2[0];
|
|
}
|
|
/* 6: splatbw */
|
|
var61.i = ((var57 & 0xff) << 8) | (var57 & 0xff);
|
|
/* 7: splatbw */
|
|
var62.i = ((var60 & 0xff) << 8) | (var60 & 0xff);
|
|
/* 8: splatbw */
|
|
var63.i = ((var59 & 0xff) << 8) | (var59 & 0xff);
|
|
/* 10: mulhsw */
|
|
var64.i = (var61.i * var48.i) >> 16;
|
|
/* 12: mulhsw */
|
|
var65.i = (var63.i * var49.i) >> 16;
|
|
/* 13: addw */
|
|
var66.i = var64.i + var65.i;
|
|
/* 14: convssswb */
|
|
var67 = ORC_CLAMP_SB (var66.i);
|
|
/* 15: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var58;
|
|
_dest.x2[1] = var67;
|
|
var68.i = _dest.i;
|
|
}
|
|
/* 17: mulhsw */
|
|
var69.i = (var62.i * var50.i) >> 16;
|
|
/* 18: addw */
|
|
var70.i = var64.i + var69.i;
|
|
/* 19: convssswb */
|
|
var71 = ORC_CLAMP_SB (var70.i);
|
|
/* 21: mulhsw */
|
|
var72.i = (var62.i * var51.i) >> 16;
|
|
/* 22: addw */
|
|
var73.i = var64.i + var72.i;
|
|
/* 24: mulhsw */
|
|
var74.i = (var63.i * var52.i) >> 16;
|
|
/* 25: addw */
|
|
var75.i = var73.i + var74.i;
|
|
/* 26: convssswb */
|
|
var76 = ORC_CLAMP_SB (var75.i);
|
|
/* 27: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var76;
|
|
_dest.x2[1] = var71;
|
|
var77.i = _dest.i;
|
|
}
|
|
/* 28: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var68.i;
|
|
_dest.x2[1] = var77.i;
|
|
var78.i = _dest.i;
|
|
}
|
|
/* 29: addb */
|
|
var53.x4[0] = var78.x4[0] + var47.x4[0];
|
|
var53.x4[1] = var78.x4[1] + var47.x4[1];
|
|
var53.x4[2] = var78.x4[2] + var47.x4[2];
|
|
var53.x4[3] = var78.x4[3] + var47.x4[3];
|
|
/* 30: storel */
|
|
ptr0[i] = var53;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_convert_AYUV_ARGB (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
|
|
int p4, int p5, int n, int m)
|
|
{
|
|
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, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
|
|
110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 65, 82, 71, 66, 11,
|
|
4, 4, 12, 4, 4, 14, 1, 128, 0, 0, 0, 16, 2, 16, 2, 16,
|
|
2, 16, 2, 16, 2, 20, 1, 20, 1, 20, 1, 20, 1, 20, 2, 20,
|
|
2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 1, 20, 1, 20, 1, 20,
|
|
4, 21, 2, 65, 45, 4, 16, 198, 38, 36, 45, 199, 33, 32, 36, 199,
|
|
35, 34, 38, 151, 36, 33, 151, 37, 34, 151, 38, 35, 90, 36, 36, 24,
|
|
90, 39, 38, 25, 70, 39, 36, 39, 159, 42, 39, 196, 39, 32, 42, 90,
|
|
41, 37, 26, 70, 41, 36, 41, 159, 44, 41, 90, 40, 37, 27, 70, 40,
|
|
36, 40, 90, 36, 38, 28, 70, 40, 40, 36, 159, 43, 40, 196, 41, 43,
|
|
44, 195, 45, 39, 41, 21, 2, 33, 0, 45, 16, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_ARGB);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_2d (p);
|
|
orc_program_set_name (p, "video_orc_convert_AYUV_ARGB");
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_ARGB);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 4, "s1");
|
|
orc_program_add_constant (p, 1, 0x00000080, "c1");
|
|
orc_program_add_parameter (p, 2, "p1");
|
|
orc_program_add_parameter (p, 2, "p2");
|
|
orc_program_add_parameter (p, 2, "p3");
|
|
orc_program_add_parameter (p, 2, "p4");
|
|
orc_program_add_parameter (p, 2, "p5");
|
|
orc_program_add_temporary (p, 1, "t1");
|
|
orc_program_add_temporary (p, 1, "t2");
|
|
orc_program_add_temporary (p, 1, "t3");
|
|
orc_program_add_temporary (p, 1, "t4");
|
|
orc_program_add_temporary (p, 2, "t5");
|
|
orc_program_add_temporary (p, 2, "t6");
|
|
orc_program_add_temporary (p, 2, "t7");
|
|
orc_program_add_temporary (p, 2, "t8");
|
|
orc_program_add_temporary (p, 2, "t9");
|
|
orc_program_add_temporary (p, 2, "t10");
|
|
orc_program_add_temporary (p, 1, "t11");
|
|
orc_program_add_temporary (p, 1, "t12");
|
|
orc_program_add_temporary (p, 1, "t13");
|
|
orc_program_add_temporary (p, 4, "t14");
|
|
|
|
orc_program_append_2 (p, "subb", 2, ORC_VAR_T14, ORC_VAR_S1, ORC_VAR_C1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T7, ORC_VAR_T5,
|
|
ORC_VAR_T14, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T5,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T7,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_P1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_P2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T8,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T11, ORC_VAR_T8,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T8, ORC_VAR_T1,
|
|
ORC_VAR_T11, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T10, ORC_VAR_T6, ORC_VAR_P3,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T10, ORC_VAR_T5, ORC_VAR_T10,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T13, ORC_VAR_T10,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_P4,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T9, ORC_VAR_T5, ORC_VAR_T9,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T7, ORC_VAR_P5,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T5,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T12, ORC_VAR_T9,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T10, ORC_VAR_T12,
|
|
ORC_VAR_T13, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T14, ORC_VAR_T8,
|
|
ORC_VAR_T10, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T14, ORC_VAR_C1,
|
|
ORC_VAR_D1);
|
|
#endif
|
|
|
|
orc_program_compile (p);
|
|
c = orc_program_take_code (p);
|
|
orc_program_free (p);
|
|
}
|
|
p_inited = TRUE;
|
|
orc_once_mutex_unlock ();
|
|
}
|
|
ex->arrays[ORC_VAR_A2] = c;
|
|
ex->program = 0;
|
|
|
|
ex->n = n;
|
|
ORC_EXECUTOR_M (ex) = m;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->params[ORC_VAR_D1] = d1_stride;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->params[ORC_VAR_S1] = s1_stride;
|
|
ex->params[ORC_VAR_P1] = p1;
|
|
ex->params[ORC_VAR_P2] = p2;
|
|
ex->params[ORC_VAR_P3] = p3;
|
|
ex->params[ORC_VAR_P4] = p4;
|
|
ex->params[ORC_VAR_P5] = p5;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_convert_AYUV_BGRA */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_convert_AYUV_BGRA (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
|
|
int p4, int p5, int n, int m)
|
|
{
|
|
int i;
|
|
int j;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var46;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union32 var47;
|
|
#else
|
|
orc_union32 var47;
|
|
#endif
|
|
orc_union16 var48;
|
|
orc_union16 var49;
|
|
orc_union16 var50;
|
|
orc_union16 var51;
|
|
orc_union16 var52;
|
|
orc_union32 var53;
|
|
orc_union32 var54;
|
|
orc_union16 var55;
|
|
orc_union16 var56;
|
|
orc_int8 var57;
|
|
orc_int8 var58;
|
|
orc_int8 var59;
|
|
orc_int8 var60;
|
|
orc_union16 var61;
|
|
orc_union16 var62;
|
|
orc_union16 var63;
|
|
orc_union16 var64;
|
|
orc_union16 var65;
|
|
orc_union16 var66;
|
|
orc_int8 var67;
|
|
orc_union16 var68;
|
|
orc_union16 var69;
|
|
orc_union16 var70;
|
|
orc_int8 var71;
|
|
orc_union16 var72;
|
|
orc_union16 var73;
|
|
orc_union16 var74;
|
|
orc_union16 var75;
|
|
orc_int8 var76;
|
|
orc_union16 var77;
|
|
orc_union32 var78;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
|
|
ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
|
|
|
|
/* 1: loadpb */
|
|
var47.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
var47.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
var47.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
var47.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
/* 9: loadpw */
|
|
var48.i = p1;
|
|
/* 11: loadpw */
|
|
var49.i = p2;
|
|
/* 16: loadpw */
|
|
var50.i = p3;
|
|
/* 20: loadpw */
|
|
var51.i = p4;
|
|
/* 23: loadpw */
|
|
var52.i = p5;
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var46 = ptr4[i];
|
|
/* 2: subb */
|
|
var54.x4[0] = var46.x4[0] - var47.x4[0];
|
|
var54.x4[1] = var46.x4[1] - var47.x4[1];
|
|
var54.x4[2] = var46.x4[2] - var47.x4[2];
|
|
var54.x4[3] = var46.x4[3] - var47.x4[3];
|
|
/* 3: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var54.i;
|
|
var55.i = _src.x2[1];
|
|
var56.i = _src.x2[0];
|
|
}
|
|
/* 4: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var56.i;
|
|
var57 = _src.x2[1];
|
|
var58 = _src.x2[0];
|
|
}
|
|
/* 5: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var55.i;
|
|
var59 = _src.x2[1];
|
|
var60 = _src.x2[0];
|
|
}
|
|
/* 6: splatbw */
|
|
var61.i = ((var57 & 0xff) << 8) | (var57 & 0xff);
|
|
/* 7: splatbw */
|
|
var62.i = ((var60 & 0xff) << 8) | (var60 & 0xff);
|
|
/* 8: splatbw */
|
|
var63.i = ((var59 & 0xff) << 8) | (var59 & 0xff);
|
|
/* 10: mulhsw */
|
|
var64.i = (var61.i * var48.i) >> 16;
|
|
/* 12: mulhsw */
|
|
var65.i = (var63.i * var49.i) >> 16;
|
|
/* 13: addw */
|
|
var66.i = var64.i + var65.i;
|
|
/* 14: convssswb */
|
|
var67 = ORC_CLAMP_SB (var66.i);
|
|
/* 15: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var67;
|
|
_dest.x2[1] = var58;
|
|
var68.i = _dest.i;
|
|
}
|
|
/* 17: mulhsw */
|
|
var69.i = (var62.i * var50.i) >> 16;
|
|
/* 18: addw */
|
|
var70.i = var64.i + var69.i;
|
|
/* 19: convssswb */
|
|
var71 = ORC_CLAMP_SB (var70.i);
|
|
/* 21: mulhsw */
|
|
var72.i = (var62.i * var51.i) >> 16;
|
|
/* 22: addw */
|
|
var73.i = var64.i + var72.i;
|
|
/* 24: mulhsw */
|
|
var74.i = (var63.i * var52.i) >> 16;
|
|
/* 25: addw */
|
|
var75.i = var73.i + var74.i;
|
|
/* 26: convssswb */
|
|
var76 = ORC_CLAMP_SB (var75.i);
|
|
/* 27: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var71;
|
|
_dest.x2[1] = var76;
|
|
var77.i = _dest.i;
|
|
}
|
|
/* 28: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var77.i;
|
|
_dest.x2[1] = var68.i;
|
|
var78.i = _dest.i;
|
|
}
|
|
/* 29: addb */
|
|
var53.x4[0] = var78.x4[0] + var47.x4[0];
|
|
var53.x4[1] = var78.x4[1] + var47.x4[1];
|
|
var53.x4[2] = var78.x4[2] + var47.x4[2];
|
|
var53.x4[3] = var78.x4[3] + var47.x4[3];
|
|
/* 30: storel */
|
|
ptr0[i] = var53;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_convert_AYUV_BGRA (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int j;
|
|
int n = ex->n;
|
|
int m = ex->params[ORC_VAR_A1];
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var46;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union32 var47;
|
|
#else
|
|
orc_union32 var47;
|
|
#endif
|
|
orc_union16 var48;
|
|
orc_union16 var49;
|
|
orc_union16 var50;
|
|
orc_union16 var51;
|
|
orc_union16 var52;
|
|
orc_union32 var53;
|
|
orc_union32 var54;
|
|
orc_union16 var55;
|
|
orc_union16 var56;
|
|
orc_int8 var57;
|
|
orc_int8 var58;
|
|
orc_int8 var59;
|
|
orc_int8 var60;
|
|
orc_union16 var61;
|
|
orc_union16 var62;
|
|
orc_union16 var63;
|
|
orc_union16 var64;
|
|
orc_union16 var65;
|
|
orc_union16 var66;
|
|
orc_int8 var67;
|
|
orc_union16 var68;
|
|
orc_union16 var69;
|
|
orc_union16 var70;
|
|
orc_int8 var71;
|
|
orc_union16 var72;
|
|
orc_union16 var73;
|
|
orc_union16 var74;
|
|
orc_union16 var75;
|
|
orc_int8 var76;
|
|
orc_union16 var77;
|
|
orc_union32 var78;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
|
|
ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
|
|
|
|
/* 1: loadpb */
|
|
var47.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
var47.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
var47.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
var47.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
/* 9: loadpw */
|
|
var48.i = ex->params[24];
|
|
/* 11: loadpw */
|
|
var49.i = ex->params[25];
|
|
/* 16: loadpw */
|
|
var50.i = ex->params[26];
|
|
/* 20: loadpw */
|
|
var51.i = ex->params[27];
|
|
/* 23: loadpw */
|
|
var52.i = ex->params[28];
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var46 = ptr4[i];
|
|
/* 2: subb */
|
|
var54.x4[0] = var46.x4[0] - var47.x4[0];
|
|
var54.x4[1] = var46.x4[1] - var47.x4[1];
|
|
var54.x4[2] = var46.x4[2] - var47.x4[2];
|
|
var54.x4[3] = var46.x4[3] - var47.x4[3];
|
|
/* 3: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var54.i;
|
|
var55.i = _src.x2[1];
|
|
var56.i = _src.x2[0];
|
|
}
|
|
/* 4: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var56.i;
|
|
var57 = _src.x2[1];
|
|
var58 = _src.x2[0];
|
|
}
|
|
/* 5: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var55.i;
|
|
var59 = _src.x2[1];
|
|
var60 = _src.x2[0];
|
|
}
|
|
/* 6: splatbw */
|
|
var61.i = ((var57 & 0xff) << 8) | (var57 & 0xff);
|
|
/* 7: splatbw */
|
|
var62.i = ((var60 & 0xff) << 8) | (var60 & 0xff);
|
|
/* 8: splatbw */
|
|
var63.i = ((var59 & 0xff) << 8) | (var59 & 0xff);
|
|
/* 10: mulhsw */
|
|
var64.i = (var61.i * var48.i) >> 16;
|
|
/* 12: mulhsw */
|
|
var65.i = (var63.i * var49.i) >> 16;
|
|
/* 13: addw */
|
|
var66.i = var64.i + var65.i;
|
|
/* 14: convssswb */
|
|
var67 = ORC_CLAMP_SB (var66.i);
|
|
/* 15: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var67;
|
|
_dest.x2[1] = var58;
|
|
var68.i = _dest.i;
|
|
}
|
|
/* 17: mulhsw */
|
|
var69.i = (var62.i * var50.i) >> 16;
|
|
/* 18: addw */
|
|
var70.i = var64.i + var69.i;
|
|
/* 19: convssswb */
|
|
var71 = ORC_CLAMP_SB (var70.i);
|
|
/* 21: mulhsw */
|
|
var72.i = (var62.i * var51.i) >> 16;
|
|
/* 22: addw */
|
|
var73.i = var64.i + var72.i;
|
|
/* 24: mulhsw */
|
|
var74.i = (var63.i * var52.i) >> 16;
|
|
/* 25: addw */
|
|
var75.i = var73.i + var74.i;
|
|
/* 26: convssswb */
|
|
var76 = ORC_CLAMP_SB (var75.i);
|
|
/* 27: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var71;
|
|
_dest.x2[1] = var76;
|
|
var77.i = _dest.i;
|
|
}
|
|
/* 28: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var77.i;
|
|
_dest.x2[1] = var68.i;
|
|
var78.i = _dest.i;
|
|
}
|
|
/* 29: addb */
|
|
var53.x4[0] = var78.x4[0] + var47.x4[0];
|
|
var53.x4[1] = var78.x4[1] + var47.x4[1];
|
|
var53.x4[2] = var78.x4[2] + var47.x4[2];
|
|
var53.x4[3] = var78.x4[3] + var47.x4[3];
|
|
/* 30: storel */
|
|
ptr0[i] = var53;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_convert_AYUV_BGRA (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
|
|
int p4, int p5, int n, int m)
|
|
{
|
|
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, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
|
|
110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 66, 71, 82, 65, 11,
|
|
4, 4, 12, 4, 4, 14, 1, 128, 0, 0, 0, 16, 2, 16, 2, 16,
|
|
2, 16, 2, 16, 2, 20, 1, 20, 1, 20, 1, 20, 1, 20, 2, 20,
|
|
2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 1, 20, 1, 20, 1, 20,
|
|
4, 21, 2, 65, 45, 4, 16, 198, 38, 36, 45, 199, 33, 32, 36, 199,
|
|
35, 34, 38, 151, 36, 33, 151, 37, 34, 151, 38, 35, 90, 36, 36, 24,
|
|
90, 39, 38, 25, 70, 39, 36, 39, 159, 42, 39, 196, 39, 42, 32, 90,
|
|
41, 37, 26, 70, 41, 36, 41, 159, 44, 41, 90, 40, 37, 27, 70, 40,
|
|
36, 40, 90, 36, 38, 28, 70, 40, 40, 36, 159, 43, 40, 196, 41, 44,
|
|
43, 195, 45, 41, 39, 21, 2, 33, 0, 45, 16, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_BGRA);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_2d (p);
|
|
orc_program_set_name (p, "video_orc_convert_AYUV_BGRA");
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_BGRA);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 4, "s1");
|
|
orc_program_add_constant (p, 1, 0x00000080, "c1");
|
|
orc_program_add_parameter (p, 2, "p1");
|
|
orc_program_add_parameter (p, 2, "p2");
|
|
orc_program_add_parameter (p, 2, "p3");
|
|
orc_program_add_parameter (p, 2, "p4");
|
|
orc_program_add_parameter (p, 2, "p5");
|
|
orc_program_add_temporary (p, 1, "t1");
|
|
orc_program_add_temporary (p, 1, "t2");
|
|
orc_program_add_temporary (p, 1, "t3");
|
|
orc_program_add_temporary (p, 1, "t4");
|
|
orc_program_add_temporary (p, 2, "t5");
|
|
orc_program_add_temporary (p, 2, "t6");
|
|
orc_program_add_temporary (p, 2, "t7");
|
|
orc_program_add_temporary (p, 2, "t8");
|
|
orc_program_add_temporary (p, 2, "t9");
|
|
orc_program_add_temporary (p, 2, "t10");
|
|
orc_program_add_temporary (p, 1, "t11");
|
|
orc_program_add_temporary (p, 1, "t12");
|
|
orc_program_add_temporary (p, 1, "t13");
|
|
orc_program_add_temporary (p, 4, "t14");
|
|
|
|
orc_program_append_2 (p, "subb", 2, ORC_VAR_T14, ORC_VAR_S1, ORC_VAR_C1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T7, ORC_VAR_T5,
|
|
ORC_VAR_T14, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T5,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T7,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_P1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_P2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T8,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T11, ORC_VAR_T8,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T8, ORC_VAR_T11,
|
|
ORC_VAR_T1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T10, ORC_VAR_T6, ORC_VAR_P3,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T10, ORC_VAR_T5, ORC_VAR_T10,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T13, ORC_VAR_T10,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_P4,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T9, ORC_VAR_T5, ORC_VAR_T9,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T7, ORC_VAR_P5,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T5,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T12, ORC_VAR_T9,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T10, ORC_VAR_T13,
|
|
ORC_VAR_T12, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T14, ORC_VAR_T10,
|
|
ORC_VAR_T8, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T14, ORC_VAR_C1,
|
|
ORC_VAR_D1);
|
|
#endif
|
|
|
|
orc_program_compile (p);
|
|
c = orc_program_take_code (p);
|
|
orc_program_free (p);
|
|
}
|
|
p_inited = TRUE;
|
|
orc_once_mutex_unlock ();
|
|
}
|
|
ex->arrays[ORC_VAR_A2] = c;
|
|
ex->program = 0;
|
|
|
|
ex->n = n;
|
|
ORC_EXECUTOR_M (ex) = m;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->params[ORC_VAR_D1] = d1_stride;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->params[ORC_VAR_S1] = s1_stride;
|
|
ex->params[ORC_VAR_P1] = p1;
|
|
ex->params[ORC_VAR_P2] = p2;
|
|
ex->params[ORC_VAR_P3] = p3;
|
|
ex->params[ORC_VAR_P4] = p4;
|
|
ex->params[ORC_VAR_P5] = p5;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_convert_AYUV_ABGR */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_convert_AYUV_ABGR (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
|
|
int p4, int p5, int n, int m)
|
|
{
|
|
int i;
|
|
int j;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var46;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union32 var47;
|
|
#else
|
|
orc_union32 var47;
|
|
#endif
|
|
orc_union16 var48;
|
|
orc_union16 var49;
|
|
orc_union16 var50;
|
|
orc_union16 var51;
|
|
orc_union16 var52;
|
|
orc_union32 var53;
|
|
orc_union32 var54;
|
|
orc_union16 var55;
|
|
orc_union16 var56;
|
|
orc_int8 var57;
|
|
orc_int8 var58;
|
|
orc_int8 var59;
|
|
orc_int8 var60;
|
|
orc_union16 var61;
|
|
orc_union16 var62;
|
|
orc_union16 var63;
|
|
orc_union16 var64;
|
|
orc_union16 var65;
|
|
orc_union16 var66;
|
|
orc_int8 var67;
|
|
orc_union16 var68;
|
|
orc_union16 var69;
|
|
orc_int8 var70;
|
|
orc_union16 var71;
|
|
orc_union16 var72;
|
|
orc_union16 var73;
|
|
orc_union16 var74;
|
|
orc_union16 var75;
|
|
orc_int8 var76;
|
|
orc_union16 var77;
|
|
orc_union32 var78;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
|
|
ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
|
|
|
|
/* 1: loadpb */
|
|
var47.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
var47.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
var47.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
var47.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
/* 9: loadpw */
|
|
var48.i = p1;
|
|
/* 11: loadpw */
|
|
var49.i = p2;
|
|
/* 15: loadpw */
|
|
var50.i = p3;
|
|
/* 20: loadpw */
|
|
var51.i = p4;
|
|
/* 23: loadpw */
|
|
var52.i = p5;
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var46 = ptr4[i];
|
|
/* 2: subb */
|
|
var54.x4[0] = var46.x4[0] - var47.x4[0];
|
|
var54.x4[1] = var46.x4[1] - var47.x4[1];
|
|
var54.x4[2] = var46.x4[2] - var47.x4[2];
|
|
var54.x4[3] = var46.x4[3] - var47.x4[3];
|
|
/* 3: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var54.i;
|
|
var55.i = _src.x2[1];
|
|
var56.i = _src.x2[0];
|
|
}
|
|
/* 4: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var56.i;
|
|
var57 = _src.x2[1];
|
|
var58 = _src.x2[0];
|
|
}
|
|
/* 5: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var55.i;
|
|
var59 = _src.x2[1];
|
|
var60 = _src.x2[0];
|
|
}
|
|
/* 6: splatbw */
|
|
var61.i = ((var57 & 0xff) << 8) | (var57 & 0xff);
|
|
/* 7: splatbw */
|
|
var62.i = ((var60 & 0xff) << 8) | (var60 & 0xff);
|
|
/* 8: splatbw */
|
|
var63.i = ((var59 & 0xff) << 8) | (var59 & 0xff);
|
|
/* 10: mulhsw */
|
|
var64.i = (var61.i * var48.i) >> 16;
|
|
/* 12: mulhsw */
|
|
var65.i = (var63.i * var49.i) >> 16;
|
|
/* 13: addw */
|
|
var66.i = var64.i + var65.i;
|
|
/* 14: convssswb */
|
|
var67 = ORC_CLAMP_SB (var66.i);
|
|
/* 16: mulhsw */
|
|
var68.i = (var62.i * var50.i) >> 16;
|
|
/* 17: addw */
|
|
var69.i = var64.i + var68.i;
|
|
/* 18: convssswb */
|
|
var70 = ORC_CLAMP_SB (var69.i);
|
|
/* 19: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var58;
|
|
_dest.x2[1] = var70;
|
|
var71.i = _dest.i;
|
|
}
|
|
/* 21: mulhsw */
|
|
var72.i = (var62.i * var51.i) >> 16;
|
|
/* 22: addw */
|
|
var73.i = var64.i + var72.i;
|
|
/* 24: mulhsw */
|
|
var74.i = (var63.i * var52.i) >> 16;
|
|
/* 25: addw */
|
|
var75.i = var73.i + var74.i;
|
|
/* 26: convssswb */
|
|
var76 = ORC_CLAMP_SB (var75.i);
|
|
/* 27: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var76;
|
|
_dest.x2[1] = var67;
|
|
var77.i = _dest.i;
|
|
}
|
|
/* 28: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var71.i;
|
|
_dest.x2[1] = var77.i;
|
|
var78.i = _dest.i;
|
|
}
|
|
/* 29: addb */
|
|
var53.x4[0] = var78.x4[0] + var47.x4[0];
|
|
var53.x4[1] = var78.x4[1] + var47.x4[1];
|
|
var53.x4[2] = var78.x4[2] + var47.x4[2];
|
|
var53.x4[3] = var78.x4[3] + var47.x4[3];
|
|
/* 30: storel */
|
|
ptr0[i] = var53;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_convert_AYUV_ABGR (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int j;
|
|
int n = ex->n;
|
|
int m = ex->params[ORC_VAR_A1];
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var46;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union32 var47;
|
|
#else
|
|
orc_union32 var47;
|
|
#endif
|
|
orc_union16 var48;
|
|
orc_union16 var49;
|
|
orc_union16 var50;
|
|
orc_union16 var51;
|
|
orc_union16 var52;
|
|
orc_union32 var53;
|
|
orc_union32 var54;
|
|
orc_union16 var55;
|
|
orc_union16 var56;
|
|
orc_int8 var57;
|
|
orc_int8 var58;
|
|
orc_int8 var59;
|
|
orc_int8 var60;
|
|
orc_union16 var61;
|
|
orc_union16 var62;
|
|
orc_union16 var63;
|
|
orc_union16 var64;
|
|
orc_union16 var65;
|
|
orc_union16 var66;
|
|
orc_int8 var67;
|
|
orc_union16 var68;
|
|
orc_union16 var69;
|
|
orc_int8 var70;
|
|
orc_union16 var71;
|
|
orc_union16 var72;
|
|
orc_union16 var73;
|
|
orc_union16 var74;
|
|
orc_union16 var75;
|
|
orc_int8 var76;
|
|
orc_union16 var77;
|
|
orc_union32 var78;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
|
|
ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
|
|
|
|
/* 1: loadpb */
|
|
var47.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
var47.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
var47.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
var47.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
/* 9: loadpw */
|
|
var48.i = ex->params[24];
|
|
/* 11: loadpw */
|
|
var49.i = ex->params[25];
|
|
/* 15: loadpw */
|
|
var50.i = ex->params[26];
|
|
/* 20: loadpw */
|
|
var51.i = ex->params[27];
|
|
/* 23: loadpw */
|
|
var52.i = ex->params[28];
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var46 = ptr4[i];
|
|
/* 2: subb */
|
|
var54.x4[0] = var46.x4[0] - var47.x4[0];
|
|
var54.x4[1] = var46.x4[1] - var47.x4[1];
|
|
var54.x4[2] = var46.x4[2] - var47.x4[2];
|
|
var54.x4[3] = var46.x4[3] - var47.x4[3];
|
|
/* 3: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var54.i;
|
|
var55.i = _src.x2[1];
|
|
var56.i = _src.x2[0];
|
|
}
|
|
/* 4: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var56.i;
|
|
var57 = _src.x2[1];
|
|
var58 = _src.x2[0];
|
|
}
|
|
/* 5: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var55.i;
|
|
var59 = _src.x2[1];
|
|
var60 = _src.x2[0];
|
|
}
|
|
/* 6: splatbw */
|
|
var61.i = ((var57 & 0xff) << 8) | (var57 & 0xff);
|
|
/* 7: splatbw */
|
|
var62.i = ((var60 & 0xff) << 8) | (var60 & 0xff);
|
|
/* 8: splatbw */
|
|
var63.i = ((var59 & 0xff) << 8) | (var59 & 0xff);
|
|
/* 10: mulhsw */
|
|
var64.i = (var61.i * var48.i) >> 16;
|
|
/* 12: mulhsw */
|
|
var65.i = (var63.i * var49.i) >> 16;
|
|
/* 13: addw */
|
|
var66.i = var64.i + var65.i;
|
|
/* 14: convssswb */
|
|
var67 = ORC_CLAMP_SB (var66.i);
|
|
/* 16: mulhsw */
|
|
var68.i = (var62.i * var50.i) >> 16;
|
|
/* 17: addw */
|
|
var69.i = var64.i + var68.i;
|
|
/* 18: convssswb */
|
|
var70 = ORC_CLAMP_SB (var69.i);
|
|
/* 19: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var58;
|
|
_dest.x2[1] = var70;
|
|
var71.i = _dest.i;
|
|
}
|
|
/* 21: mulhsw */
|
|
var72.i = (var62.i * var51.i) >> 16;
|
|
/* 22: addw */
|
|
var73.i = var64.i + var72.i;
|
|
/* 24: mulhsw */
|
|
var74.i = (var63.i * var52.i) >> 16;
|
|
/* 25: addw */
|
|
var75.i = var73.i + var74.i;
|
|
/* 26: convssswb */
|
|
var76 = ORC_CLAMP_SB (var75.i);
|
|
/* 27: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var76;
|
|
_dest.x2[1] = var67;
|
|
var77.i = _dest.i;
|
|
}
|
|
/* 28: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var71.i;
|
|
_dest.x2[1] = var77.i;
|
|
var78.i = _dest.i;
|
|
}
|
|
/* 29: addb */
|
|
var53.x4[0] = var78.x4[0] + var47.x4[0];
|
|
var53.x4[1] = var78.x4[1] + var47.x4[1];
|
|
var53.x4[2] = var78.x4[2] + var47.x4[2];
|
|
var53.x4[3] = var78.x4[3] + var47.x4[3];
|
|
/* 30: storel */
|
|
ptr0[i] = var53;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_convert_AYUV_ABGR (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
|
|
int p4, int p5, int n, int m)
|
|
{
|
|
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, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
|
|
110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 65, 66, 71, 82, 11,
|
|
4, 4, 12, 4, 4, 14, 1, 128, 0, 0, 0, 16, 2, 16, 2, 16,
|
|
2, 16, 2, 16, 2, 20, 1, 20, 1, 20, 1, 20, 1, 20, 2, 20,
|
|
2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 1, 20, 1, 20, 1, 20,
|
|
4, 21, 2, 65, 45, 4, 16, 198, 38, 36, 45, 199, 33, 32, 36, 199,
|
|
35, 34, 38, 151, 36, 33, 151, 37, 34, 151, 38, 35, 90, 36, 36, 24,
|
|
90, 39, 38, 25, 70, 39, 36, 39, 159, 42, 39, 90, 41, 37, 26, 70,
|
|
41, 36, 41, 159, 44, 41, 196, 41, 32, 44, 90, 40, 37, 27, 70, 40,
|
|
36, 40, 90, 36, 38, 28, 70, 40, 40, 36, 159, 43, 40, 196, 39, 43,
|
|
42, 195, 45, 41, 39, 21, 2, 33, 0, 45, 16, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_ABGR);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_2d (p);
|
|
orc_program_set_name (p, "video_orc_convert_AYUV_ABGR");
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_ABGR);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 4, "s1");
|
|
orc_program_add_constant (p, 1, 0x00000080, "c1");
|
|
orc_program_add_parameter (p, 2, "p1");
|
|
orc_program_add_parameter (p, 2, "p2");
|
|
orc_program_add_parameter (p, 2, "p3");
|
|
orc_program_add_parameter (p, 2, "p4");
|
|
orc_program_add_parameter (p, 2, "p5");
|
|
orc_program_add_temporary (p, 1, "t1");
|
|
orc_program_add_temporary (p, 1, "t2");
|
|
orc_program_add_temporary (p, 1, "t3");
|
|
orc_program_add_temporary (p, 1, "t4");
|
|
orc_program_add_temporary (p, 2, "t5");
|
|
orc_program_add_temporary (p, 2, "t6");
|
|
orc_program_add_temporary (p, 2, "t7");
|
|
orc_program_add_temporary (p, 2, "t8");
|
|
orc_program_add_temporary (p, 2, "t9");
|
|
orc_program_add_temporary (p, 2, "t10");
|
|
orc_program_add_temporary (p, 1, "t11");
|
|
orc_program_add_temporary (p, 1, "t12");
|
|
orc_program_add_temporary (p, 1, "t13");
|
|
orc_program_add_temporary (p, 4, "t14");
|
|
|
|
orc_program_append_2 (p, "subb", 2, ORC_VAR_T14, ORC_VAR_S1, ORC_VAR_C1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T7, ORC_VAR_T5,
|
|
ORC_VAR_T14, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T5,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T7,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_P1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_P2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T8,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T11, ORC_VAR_T8,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T10, ORC_VAR_T6, ORC_VAR_P3,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T10, ORC_VAR_T5, ORC_VAR_T10,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T13, ORC_VAR_T10,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T10, ORC_VAR_T1,
|
|
ORC_VAR_T13, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_P4,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T9, ORC_VAR_T5, ORC_VAR_T9,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T7, ORC_VAR_P5,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T5,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T12, ORC_VAR_T9,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T8, ORC_VAR_T12,
|
|
ORC_VAR_T11, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T14, ORC_VAR_T10,
|
|
ORC_VAR_T8, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T14, ORC_VAR_C1,
|
|
ORC_VAR_D1);
|
|
#endif
|
|
|
|
orc_program_compile (p);
|
|
c = orc_program_take_code (p);
|
|
orc_program_free (p);
|
|
}
|
|
p_inited = TRUE;
|
|
orc_once_mutex_unlock ();
|
|
}
|
|
ex->arrays[ORC_VAR_A2] = c;
|
|
ex->program = 0;
|
|
|
|
ex->n = n;
|
|
ORC_EXECUTOR_M (ex) = m;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->params[ORC_VAR_D1] = d1_stride;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->params[ORC_VAR_S1] = s1_stride;
|
|
ex->params[ORC_VAR_P1] = p1;
|
|
ex->params[ORC_VAR_P2] = p2;
|
|
ex->params[ORC_VAR_P3] = p3;
|
|
ex->params[ORC_VAR_P4] = p4;
|
|
ex->params[ORC_VAR_P5] = p5;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_convert_AYUV_RGBA */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_convert_AYUV_RGBA (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
|
|
int p4, int p5, int n, int m)
|
|
{
|
|
int i;
|
|
int j;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var46;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union32 var47;
|
|
#else
|
|
orc_union32 var47;
|
|
#endif
|
|
orc_union16 var48;
|
|
orc_union16 var49;
|
|
orc_union16 var50;
|
|
orc_union16 var51;
|
|
orc_union16 var52;
|
|
orc_union32 var53;
|
|
orc_union32 var54;
|
|
orc_union16 var55;
|
|
orc_union16 var56;
|
|
orc_int8 var57;
|
|
orc_int8 var58;
|
|
orc_int8 var59;
|
|
orc_int8 var60;
|
|
orc_union16 var61;
|
|
orc_union16 var62;
|
|
orc_union16 var63;
|
|
orc_union16 var64;
|
|
orc_union16 var65;
|
|
orc_union16 var66;
|
|
orc_int8 var67;
|
|
orc_union16 var68;
|
|
orc_union16 var69;
|
|
orc_int8 var70;
|
|
orc_union16 var71;
|
|
orc_union16 var72;
|
|
orc_union16 var73;
|
|
orc_union16 var74;
|
|
orc_union16 var75;
|
|
orc_int8 var76;
|
|
orc_union16 var77;
|
|
orc_union32 var78;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
|
|
ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
|
|
|
|
/* 1: loadpb */
|
|
var47.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
var47.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
var47.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
var47.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
/* 9: loadpw */
|
|
var48.i = p1;
|
|
/* 11: loadpw */
|
|
var49.i = p2;
|
|
/* 15: loadpw */
|
|
var50.i = p3;
|
|
/* 20: loadpw */
|
|
var51.i = p4;
|
|
/* 23: loadpw */
|
|
var52.i = p5;
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var46 = ptr4[i];
|
|
/* 2: subb */
|
|
var54.x4[0] = var46.x4[0] - var47.x4[0];
|
|
var54.x4[1] = var46.x4[1] - var47.x4[1];
|
|
var54.x4[2] = var46.x4[2] - var47.x4[2];
|
|
var54.x4[3] = var46.x4[3] - var47.x4[3];
|
|
/* 3: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var54.i;
|
|
var55.i = _src.x2[1];
|
|
var56.i = _src.x2[0];
|
|
}
|
|
/* 4: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var56.i;
|
|
var57 = _src.x2[1];
|
|
var58 = _src.x2[0];
|
|
}
|
|
/* 5: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var55.i;
|
|
var59 = _src.x2[1];
|
|
var60 = _src.x2[0];
|
|
}
|
|
/* 6: splatbw */
|
|
var61.i = ((var57 & 0xff) << 8) | (var57 & 0xff);
|
|
/* 7: splatbw */
|
|
var62.i = ((var60 & 0xff) << 8) | (var60 & 0xff);
|
|
/* 8: splatbw */
|
|
var63.i = ((var59 & 0xff) << 8) | (var59 & 0xff);
|
|
/* 10: mulhsw */
|
|
var64.i = (var61.i * var48.i) >> 16;
|
|
/* 12: mulhsw */
|
|
var65.i = (var63.i * var49.i) >> 16;
|
|
/* 13: addw */
|
|
var66.i = var64.i + var65.i;
|
|
/* 14: convssswb */
|
|
var67 = ORC_CLAMP_SB (var66.i);
|
|
/* 16: mulhsw */
|
|
var68.i = (var62.i * var50.i) >> 16;
|
|
/* 17: addw */
|
|
var69.i = var64.i + var68.i;
|
|
/* 18: convssswb */
|
|
var70 = ORC_CLAMP_SB (var69.i);
|
|
/* 19: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var70;
|
|
_dest.x2[1] = var58;
|
|
var71.i = _dest.i;
|
|
}
|
|
/* 21: mulhsw */
|
|
var72.i = (var62.i * var51.i) >> 16;
|
|
/* 22: addw */
|
|
var73.i = var64.i + var72.i;
|
|
/* 24: mulhsw */
|
|
var74.i = (var63.i * var52.i) >> 16;
|
|
/* 25: addw */
|
|
var75.i = var73.i + var74.i;
|
|
/* 26: convssswb */
|
|
var76 = ORC_CLAMP_SB (var75.i);
|
|
/* 27: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var67;
|
|
_dest.x2[1] = var76;
|
|
var77.i = _dest.i;
|
|
}
|
|
/* 28: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var77.i;
|
|
_dest.x2[1] = var71.i;
|
|
var78.i = _dest.i;
|
|
}
|
|
/* 29: addb */
|
|
var53.x4[0] = var78.x4[0] + var47.x4[0];
|
|
var53.x4[1] = var78.x4[1] + var47.x4[1];
|
|
var53.x4[2] = var78.x4[2] + var47.x4[2];
|
|
var53.x4[3] = var78.x4[3] + var47.x4[3];
|
|
/* 30: storel */
|
|
ptr0[i] = var53;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_convert_AYUV_RGBA (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int j;
|
|
int n = ex->n;
|
|
int m = ex->params[ORC_VAR_A1];
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var46;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union32 var47;
|
|
#else
|
|
orc_union32 var47;
|
|
#endif
|
|
orc_union16 var48;
|
|
orc_union16 var49;
|
|
orc_union16 var50;
|
|
orc_union16 var51;
|
|
orc_union16 var52;
|
|
orc_union32 var53;
|
|
orc_union32 var54;
|
|
orc_union16 var55;
|
|
orc_union16 var56;
|
|
orc_int8 var57;
|
|
orc_int8 var58;
|
|
orc_int8 var59;
|
|
orc_int8 var60;
|
|
orc_union16 var61;
|
|
orc_union16 var62;
|
|
orc_union16 var63;
|
|
orc_union16 var64;
|
|
orc_union16 var65;
|
|
orc_union16 var66;
|
|
orc_int8 var67;
|
|
orc_union16 var68;
|
|
orc_union16 var69;
|
|
orc_int8 var70;
|
|
orc_union16 var71;
|
|
orc_union16 var72;
|
|
orc_union16 var73;
|
|
orc_union16 var74;
|
|
orc_union16 var75;
|
|
orc_int8 var76;
|
|
orc_union16 var77;
|
|
orc_union32 var78;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
|
|
ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
|
|
|
|
/* 1: loadpb */
|
|
var47.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
var47.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
var47.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
var47.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
/* 9: loadpw */
|
|
var48.i = ex->params[24];
|
|
/* 11: loadpw */
|
|
var49.i = ex->params[25];
|
|
/* 15: loadpw */
|
|
var50.i = ex->params[26];
|
|
/* 20: loadpw */
|
|
var51.i = ex->params[27];
|
|
/* 23: loadpw */
|
|
var52.i = ex->params[28];
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var46 = ptr4[i];
|
|
/* 2: subb */
|
|
var54.x4[0] = var46.x4[0] - var47.x4[0];
|
|
var54.x4[1] = var46.x4[1] - var47.x4[1];
|
|
var54.x4[2] = var46.x4[2] - var47.x4[2];
|
|
var54.x4[3] = var46.x4[3] - var47.x4[3];
|
|
/* 3: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var54.i;
|
|
var55.i = _src.x2[1];
|
|
var56.i = _src.x2[0];
|
|
}
|
|
/* 4: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var56.i;
|
|
var57 = _src.x2[1];
|
|
var58 = _src.x2[0];
|
|
}
|
|
/* 5: splitwb */
|
|
{
|
|
orc_union16 _src;
|
|
_src.i = var55.i;
|
|
var59 = _src.x2[1];
|
|
var60 = _src.x2[0];
|
|
}
|
|
/* 6: splatbw */
|
|
var61.i = ((var57 & 0xff) << 8) | (var57 & 0xff);
|
|
/* 7: splatbw */
|
|
var62.i = ((var60 & 0xff) << 8) | (var60 & 0xff);
|
|
/* 8: splatbw */
|
|
var63.i = ((var59 & 0xff) << 8) | (var59 & 0xff);
|
|
/* 10: mulhsw */
|
|
var64.i = (var61.i * var48.i) >> 16;
|
|
/* 12: mulhsw */
|
|
var65.i = (var63.i * var49.i) >> 16;
|
|
/* 13: addw */
|
|
var66.i = var64.i + var65.i;
|
|
/* 14: convssswb */
|
|
var67 = ORC_CLAMP_SB (var66.i);
|
|
/* 16: mulhsw */
|
|
var68.i = (var62.i * var50.i) >> 16;
|
|
/* 17: addw */
|
|
var69.i = var64.i + var68.i;
|
|
/* 18: convssswb */
|
|
var70 = ORC_CLAMP_SB (var69.i);
|
|
/* 19: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var70;
|
|
_dest.x2[1] = var58;
|
|
var71.i = _dest.i;
|
|
}
|
|
/* 21: mulhsw */
|
|
var72.i = (var62.i * var51.i) >> 16;
|
|
/* 22: addw */
|
|
var73.i = var64.i + var72.i;
|
|
/* 24: mulhsw */
|
|
var74.i = (var63.i * var52.i) >> 16;
|
|
/* 25: addw */
|
|
var75.i = var73.i + var74.i;
|
|
/* 26: convssswb */
|
|
var76 = ORC_CLAMP_SB (var75.i);
|
|
/* 27: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var67;
|
|
_dest.x2[1] = var76;
|
|
var77.i = _dest.i;
|
|
}
|
|
/* 28: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var77.i;
|
|
_dest.x2[1] = var71.i;
|
|
var78.i = _dest.i;
|
|
}
|
|
/* 29: addb */
|
|
var53.x4[0] = var78.x4[0] + var47.x4[0];
|
|
var53.x4[1] = var78.x4[1] + var47.x4[1];
|
|
var53.x4[2] = var78.x4[2] + var47.x4[2];
|
|
var53.x4[3] = var78.x4[3] + var47.x4[3];
|
|
/* 30: storel */
|
|
ptr0[i] = var53;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_convert_AYUV_RGBA (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
|
|
int p4, int p5, int n, int m)
|
|
{
|
|
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, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
|
|
110, 118, 101, 114, 116, 95, 65, 89, 85, 86, 95, 82, 71, 66, 65, 11,
|
|
4, 4, 12, 4, 4, 14, 1, 128, 0, 0, 0, 16, 2, 16, 2, 16,
|
|
2, 16, 2, 16, 2, 20, 1, 20, 1, 20, 1, 20, 1, 20, 2, 20,
|
|
2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 1, 20, 1, 20, 1, 20,
|
|
4, 21, 2, 65, 45, 4, 16, 198, 38, 36, 45, 199, 33, 32, 36, 199,
|
|
35, 34, 38, 151, 36, 33, 151, 37, 34, 151, 38, 35, 90, 36, 36, 24,
|
|
90, 39, 38, 25, 70, 39, 36, 39, 159, 42, 39, 90, 41, 37, 26, 70,
|
|
41, 36, 41, 159, 44, 41, 196, 41, 44, 32, 90, 40, 37, 27, 70, 40,
|
|
36, 40, 90, 36, 38, 28, 70, 40, 40, 36, 159, 43, 40, 196, 39, 42,
|
|
43, 195, 45, 39, 41, 21, 2, 33, 0, 45, 16, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_RGBA);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_2d (p);
|
|
orc_program_set_name (p, "video_orc_convert_AYUV_RGBA");
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_AYUV_RGBA);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 4, "s1");
|
|
orc_program_add_constant (p, 1, 0x00000080, "c1");
|
|
orc_program_add_parameter (p, 2, "p1");
|
|
orc_program_add_parameter (p, 2, "p2");
|
|
orc_program_add_parameter (p, 2, "p3");
|
|
orc_program_add_parameter (p, 2, "p4");
|
|
orc_program_add_parameter (p, 2, "p5");
|
|
orc_program_add_temporary (p, 1, "t1");
|
|
orc_program_add_temporary (p, 1, "t2");
|
|
orc_program_add_temporary (p, 1, "t3");
|
|
orc_program_add_temporary (p, 1, "t4");
|
|
orc_program_add_temporary (p, 2, "t5");
|
|
orc_program_add_temporary (p, 2, "t6");
|
|
orc_program_add_temporary (p, 2, "t7");
|
|
orc_program_add_temporary (p, 2, "t8");
|
|
orc_program_add_temporary (p, 2, "t9");
|
|
orc_program_add_temporary (p, 2, "t10");
|
|
orc_program_add_temporary (p, 1, "t11");
|
|
orc_program_add_temporary (p, 1, "t12");
|
|
orc_program_add_temporary (p, 1, "t13");
|
|
orc_program_add_temporary (p, 4, "t14");
|
|
|
|
orc_program_append_2 (p, "subb", 2, ORC_VAR_T14, ORC_VAR_S1, ORC_VAR_C1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T7, ORC_VAR_T5,
|
|
ORC_VAR_T14, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T5,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splitwb", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T7,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T6, ORC_VAR_T3, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T7, ORC_VAR_T4, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_P1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T8, ORC_VAR_T7, ORC_VAR_P2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T8,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T11, ORC_VAR_T8,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T10, ORC_VAR_T6, ORC_VAR_P3,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T10, ORC_VAR_T5, ORC_VAR_T10,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T13, ORC_VAR_T10,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T10, ORC_VAR_T13,
|
|
ORC_VAR_T1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T9, ORC_VAR_T6, ORC_VAR_P4,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T9, ORC_VAR_T5, ORC_VAR_T9,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T7, ORC_VAR_P5,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T9, ORC_VAR_T9, ORC_VAR_T5,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T12, ORC_VAR_T9,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T8, ORC_VAR_T11,
|
|
ORC_VAR_T12, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T14, ORC_VAR_T8,
|
|
ORC_VAR_T10, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T14, ORC_VAR_C1,
|
|
ORC_VAR_D1);
|
|
#endif
|
|
|
|
orc_program_compile (p);
|
|
c = orc_program_take_code (p);
|
|
orc_program_free (p);
|
|
}
|
|
p_inited = TRUE;
|
|
orc_once_mutex_unlock ();
|
|
}
|
|
ex->arrays[ORC_VAR_A2] = c;
|
|
ex->program = 0;
|
|
|
|
ex->n = n;
|
|
ORC_EXECUTOR_M (ex) = m;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->params[ORC_VAR_D1] = d1_stride;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->params[ORC_VAR_S1] = s1_stride;
|
|
ex->params[ORC_VAR_P1] = p1;
|
|
ex->params[ORC_VAR_P2] = p2;
|
|
ex->params[ORC_VAR_P3] = p3;
|
|
ex->params[ORC_VAR_P4] = p4;
|
|
ex->params[ORC_VAR_P5] = p5;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_convert_I420_BGRA */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_convert_I420_BGRA (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
|
|
const guint8 * ORC_RESTRICT s3, int p1, int p2, int p3, int p4, int p5,
|
|
int n)
|
|
{
|
|
int i;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
orc_int8 var42;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_int8 var43;
|
|
#else
|
|
orc_int8 var43;
|
|
#endif
|
|
orc_union16 var44;
|
|
orc_union16 var45;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_int8 var46;
|
|
#else
|
|
orc_int8 var46;
|
|
#endif
|
|
orc_union16 var47;
|
|
orc_union16 var48;
|
|
orc_union16 var49;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union32 var50;
|
|
#else
|
|
orc_union32 var50;
|
|
#endif
|
|
orc_union32 var51;
|
|
orc_int8 var52;
|
|
orc_union16 var53;
|
|
orc_int8 var54;
|
|
orc_int8 var55;
|
|
orc_union16 var56;
|
|
orc_int8 var57;
|
|
orc_int8 var58;
|
|
orc_union16 var59;
|
|
orc_union16 var60;
|
|
orc_union16 var61;
|
|
orc_union16 var62;
|
|
orc_int8 var63;
|
|
orc_union16 var64;
|
|
orc_union16 var65;
|
|
orc_union16 var66;
|
|
orc_int8 var67;
|
|
orc_union16 var68;
|
|
orc_union16 var69;
|
|
orc_union16 var70;
|
|
orc_union16 var71;
|
|
orc_int8 var72;
|
|
orc_union16 var73;
|
|
orc_union32 var74;
|
|
|
|
ptr0 = (orc_union32 *) d1;
|
|
ptr4 = (orc_int8 *) s1;
|
|
ptr5 = (orc_int8 *) s2;
|
|
ptr6 = (orc_int8 *) s3;
|
|
|
|
/* 1: loadpb */
|
|
var43 = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
/* 10: loadpw */
|
|
var44.i = p1;
|
|
/* 12: loadpw */
|
|
var45.i = p2;
|
|
/* 16: loadpb */
|
|
var46 = (int) 0x0000007f; /* 127 or 6.27463e-322f */
|
|
/* 18: loadpw */
|
|
var47.i = p3;
|
|
/* 22: loadpw */
|
|
var48.i = p4;
|
|
/* 25: loadpw */
|
|
var49.i = p5;
|
|
/* 31: loadpb */
|
|
var50.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
var50.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
var50.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
var50.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var42 = ptr4[i];
|
|
/* 2: subb */
|
|
var52 = var42 - var43;
|
|
/* 3: splatbw */
|
|
var53.i = ((var52 & 0xff) << 8) | (var52 & 0xff);
|
|
/* 4: loadupdb */
|
|
var54 = ptr5[i >> 1];
|
|
/* 5: subb */
|
|
var55 = var54 - var43;
|
|
/* 6: splatbw */
|
|
var56.i = ((var55 & 0xff) << 8) | (var55 & 0xff);
|
|
/* 7: loadupdb */
|
|
var57 = ptr6[i >> 1];
|
|
/* 8: subb */
|
|
var58 = var57 - var43;
|
|
/* 9: splatbw */
|
|
var59.i = ((var58 & 0xff) << 8) | (var58 & 0xff);
|
|
/* 11: mulhsw */
|
|
var60.i = (var53.i * var44.i) >> 16;
|
|
/* 13: mulhsw */
|
|
var61.i = (var59.i * var45.i) >> 16;
|
|
/* 14: addw */
|
|
var62.i = var60.i + var61.i;
|
|
/* 15: convssswb */
|
|
var63 = ORC_CLAMP_SB (var62.i);
|
|
/* 17: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var63;
|
|
_dest.x2[1] = var46;
|
|
var64.i = _dest.i;
|
|
}
|
|
/* 19: mulhsw */
|
|
var65.i = (var56.i * var47.i) >> 16;
|
|
/* 20: addw */
|
|
var66.i = var60.i + var65.i;
|
|
/* 21: convssswb */
|
|
var67 = ORC_CLAMP_SB (var66.i);
|
|
/* 23: mulhsw */
|
|
var68.i = (var56.i * var48.i) >> 16;
|
|
/* 24: addw */
|
|
var69.i = var60.i + var68.i;
|
|
/* 26: mulhsw */
|
|
var70.i = (var59.i * var49.i) >> 16;
|
|
/* 27: addw */
|
|
var71.i = var69.i + var70.i;
|
|
/* 28: convssswb */
|
|
var72 = ORC_CLAMP_SB (var71.i);
|
|
/* 29: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var67;
|
|
_dest.x2[1] = var72;
|
|
var73.i = _dest.i;
|
|
}
|
|
/* 30: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var73.i;
|
|
_dest.x2[1] = var64.i;
|
|
var74.i = _dest.i;
|
|
}
|
|
/* 32: addb */
|
|
var51.x4[0] = var74.x4[0] + var50.x4[0];
|
|
var51.x4[1] = var74.x4[1] + var50.x4[1];
|
|
var51.x4[2] = var74.x4[2] + var50.x4[2];
|
|
var51.x4[3] = var74.x4[3] + var50.x4[3];
|
|
/* 33: storel */
|
|
ptr0[i] = var51;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_convert_I420_BGRA (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
orc_int8 var42;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_int8 var43;
|
|
#else
|
|
orc_int8 var43;
|
|
#endif
|
|
orc_union16 var44;
|
|
orc_union16 var45;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_int8 var46;
|
|
#else
|
|
orc_int8 var46;
|
|
#endif
|
|
orc_union16 var47;
|
|
orc_union16 var48;
|
|
orc_union16 var49;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union32 var50;
|
|
#else
|
|
orc_union32 var50;
|
|
#endif
|
|
orc_union32 var51;
|
|
orc_int8 var52;
|
|
orc_union16 var53;
|
|
orc_int8 var54;
|
|
orc_int8 var55;
|
|
orc_union16 var56;
|
|
orc_int8 var57;
|
|
orc_int8 var58;
|
|
orc_union16 var59;
|
|
orc_union16 var60;
|
|
orc_union16 var61;
|
|
orc_union16 var62;
|
|
orc_int8 var63;
|
|
orc_union16 var64;
|
|
orc_union16 var65;
|
|
orc_union16 var66;
|
|
orc_int8 var67;
|
|
orc_union16 var68;
|
|
orc_union16 var69;
|
|
orc_union16 var70;
|
|
orc_union16 var71;
|
|
orc_int8 var72;
|
|
orc_union16 var73;
|
|
orc_union32 var74;
|
|
|
|
ptr0 = (orc_union32 *) ex->arrays[0];
|
|
ptr4 = (orc_int8 *) ex->arrays[4];
|
|
ptr5 = (orc_int8 *) ex->arrays[5];
|
|
ptr6 = (orc_int8 *) ex->arrays[6];
|
|
|
|
/* 1: loadpb */
|
|
var43 = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
/* 10: loadpw */
|
|
var44.i = ex->params[24];
|
|
/* 12: loadpw */
|
|
var45.i = ex->params[25];
|
|
/* 16: loadpb */
|
|
var46 = (int) 0x0000007f; /* 127 or 6.27463e-322f */
|
|
/* 18: loadpw */
|
|
var47.i = ex->params[26];
|
|
/* 22: loadpw */
|
|
var48.i = ex->params[27];
|
|
/* 25: loadpw */
|
|
var49.i = ex->params[28];
|
|
/* 31: loadpb */
|
|
var50.x4[0] = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
var50.x4[1] = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
var50.x4[2] = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
var50.x4[3] = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var42 = ptr4[i];
|
|
/* 2: subb */
|
|
var52 = var42 - var43;
|
|
/* 3: splatbw */
|
|
var53.i = ((var52 & 0xff) << 8) | (var52 & 0xff);
|
|
/* 4: loadupdb */
|
|
var54 = ptr5[i >> 1];
|
|
/* 5: subb */
|
|
var55 = var54 - var43;
|
|
/* 6: splatbw */
|
|
var56.i = ((var55 & 0xff) << 8) | (var55 & 0xff);
|
|
/* 7: loadupdb */
|
|
var57 = ptr6[i >> 1];
|
|
/* 8: subb */
|
|
var58 = var57 - var43;
|
|
/* 9: splatbw */
|
|
var59.i = ((var58 & 0xff) << 8) | (var58 & 0xff);
|
|
/* 11: mulhsw */
|
|
var60.i = (var53.i * var44.i) >> 16;
|
|
/* 13: mulhsw */
|
|
var61.i = (var59.i * var45.i) >> 16;
|
|
/* 14: addw */
|
|
var62.i = var60.i + var61.i;
|
|
/* 15: convssswb */
|
|
var63 = ORC_CLAMP_SB (var62.i);
|
|
/* 17: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var63;
|
|
_dest.x2[1] = var46;
|
|
var64.i = _dest.i;
|
|
}
|
|
/* 19: mulhsw */
|
|
var65.i = (var56.i * var47.i) >> 16;
|
|
/* 20: addw */
|
|
var66.i = var60.i + var65.i;
|
|
/* 21: convssswb */
|
|
var67 = ORC_CLAMP_SB (var66.i);
|
|
/* 23: mulhsw */
|
|
var68.i = (var56.i * var48.i) >> 16;
|
|
/* 24: addw */
|
|
var69.i = var60.i + var68.i;
|
|
/* 26: mulhsw */
|
|
var70.i = (var59.i * var49.i) >> 16;
|
|
/* 27: addw */
|
|
var71.i = var69.i + var70.i;
|
|
/* 28: convssswb */
|
|
var72 = ORC_CLAMP_SB (var71.i);
|
|
/* 29: mergebw */
|
|
{
|
|
orc_union16 _dest;
|
|
_dest.x2[0] = var67;
|
|
_dest.x2[1] = var72;
|
|
var73.i = _dest.i;
|
|
}
|
|
/* 30: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var73.i;
|
|
_dest.x2[1] = var64.i;
|
|
var74.i = _dest.i;
|
|
}
|
|
/* 32: addb */
|
|
var51.x4[0] = var74.x4[0] + var50.x4[0];
|
|
var51.x4[1] = var74.x4[1] + var50.x4[1];
|
|
var51.x4[2] = var74.x4[2] + var50.x4[2];
|
|
var51.x4[3] = var74.x4[3] + var50.x4[3];
|
|
/* 33: storel */
|
|
ptr0[i] = var51;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_convert_I420_BGRA (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
|
|
const guint8 * ORC_RESTRICT s3, int p1, int p2, int p3, int p4, int p5,
|
|
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, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, 110,
|
|
118, 101, 114, 116, 95, 73, 52, 50, 48, 95, 66, 71, 82, 65, 11, 4,
|
|
4, 12, 1, 1, 12, 1, 1, 12, 1, 1, 14, 1, 128, 0, 0, 0,
|
|
14, 1, 127, 0, 0, 0, 16, 2, 16, 2, 16, 2, 16, 2, 16, 2,
|
|
20, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 2, 20, 1, 20, 1,
|
|
20, 1, 20, 4, 65, 38, 4, 16, 151, 32, 38, 45, 38, 5, 65, 38,
|
|
38, 16, 151, 33, 38, 45, 38, 6, 65, 38, 38, 16, 151, 34, 38, 90,
|
|
32, 32, 24, 90, 35, 34, 25, 70, 35, 32, 35, 159, 38, 35, 196, 35,
|
|
38, 17, 90, 37, 33, 26, 70, 37, 32, 37, 159, 40, 37, 90, 36, 33,
|
|
27, 70, 36, 32, 36, 90, 32, 34, 28, 70, 36, 36, 32, 159, 39, 36,
|
|
196, 37, 40, 39, 195, 41, 37, 35, 21, 2, 33, 0, 41, 16, 2, 0,
|
|
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_I420_BGRA);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_convert_I420_BGRA");
|
|
orc_program_set_backup_function (p, _backup_video_orc_convert_I420_BGRA);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 1, "s1");
|
|
orc_program_add_source (p, 1, "s2");
|
|
orc_program_add_source (p, 1, "s3");
|
|
orc_program_add_constant (p, 1, 0x00000080, "c1");
|
|
orc_program_add_constant (p, 1, 0x0000007f, "c2");
|
|
orc_program_add_parameter (p, 2, "p1");
|
|
orc_program_add_parameter (p, 2, "p2");
|
|
orc_program_add_parameter (p, 2, "p3");
|
|
orc_program_add_parameter (p, 2, "p4");
|
|
orc_program_add_parameter (p, 2, "p5");
|
|
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, 2, "t5");
|
|
orc_program_add_temporary (p, 2, "t6");
|
|
orc_program_add_temporary (p, 1, "t7");
|
|
orc_program_add_temporary (p, 1, "t8");
|
|
orc_program_add_temporary (p, 1, "t9");
|
|
orc_program_add_temporary (p, 4, "t10");
|
|
|
|
orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_S1, ORC_VAR_C1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T1, ORC_VAR_T7, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T7, ORC_VAR_S2,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T2, ORC_VAR_T7, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "loadupdb", 0, ORC_VAR_T7, ORC_VAR_S3,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "subb", 0, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splatbw", 0, ORC_VAR_T3, ORC_VAR_T7, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_P2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T4, ORC_VAR_T1, ORC_VAR_T4,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T7, ORC_VAR_T4,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T4, ORC_VAR_T7, ORC_VAR_C2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T6, ORC_VAR_T2, ORC_VAR_P3,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T6, ORC_VAR_T1, ORC_VAR_T6,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T9, ORC_VAR_T6,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T5, ORC_VAR_T2, ORC_VAR_P4,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_T5,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulhsw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_P5,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convssswb", 0, ORC_VAR_T8, ORC_VAR_T5,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T6, ORC_VAR_T9, ORC_VAR_T8,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T10, ORC_VAR_T6,
|
|
ORC_VAR_T4, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T10, ORC_VAR_C1,
|
|
ORC_VAR_D1);
|
|
#endif
|
|
|
|
orc_program_compile (p);
|
|
c = orc_program_take_code (p);
|
|
orc_program_free (p);
|
|
}
|
|
p_inited = TRUE;
|
|
orc_once_mutex_unlock ();
|
|
}
|
|
ex->arrays[ORC_VAR_A2] = c;
|
|
ex->program = 0;
|
|
|
|
ex->n = n;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
ex->arrays[ORC_VAR_S3] = (void *) s3;
|
|
ex->params[ORC_VAR_P1] = p1;
|
|
ex->params[ORC_VAR_P2] = p2;
|
|
ex->params[ORC_VAR_P3] = p3;
|
|
ex->params[ORC_VAR_P4] = p4;
|
|
ex->params[ORC_VAR_P5] = p5;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_matrix8 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_matrix8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
orc_int64 p1, orc_int64 p2, orc_int64 p3, orc_int64 p4, int n)
|
|
{
|
|
_custom_video_orc_matrix8 (d1, s1, p1, p2, p3, p4, n);
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_matrix8 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
_custom_video_orc_matrix8 (ex->arrays[ORC_VAR_D1], ex->arrays[ORC_VAR_S1],
|
|
(ex->params[ORC_VAR_P1] & 0xffffffff) |
|
|
((orc_uint64) (ex->params[ORC_VAR_T1]) << 32),
|
|
(ex->params[ORC_VAR_P2] & 0xffffffff) |
|
|
((orc_uint64) (ex->params[ORC_VAR_T2]) << 32),
|
|
(ex->params[ORC_VAR_P3] & 0xffffffff) |
|
|
((orc_uint64) (ex->params[ORC_VAR_T3]) << 32),
|
|
(ex->params[ORC_VAR_P4] & 0xffffffff) |
|
|
((orc_uint64) (ex->params[ORC_VAR_T4]) << 32), ex->n);
|
|
}
|
|
|
|
void
|
|
video_orc_matrix8 (guint8 * ORC_RESTRICT d1, const guint8 * ORC_RESTRICT s1,
|
|
orc_int64 p1, orc_int64 p2, orc_int64 p3, orc_int64 p4, 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, 17, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 109, 97, 116,
|
|
114, 105, 120, 56, 11, 4, 4, 12, 4, 4, 14, 1, 128, 0, 0, 0,
|
|
18, 8, 18, 8, 18, 8, 18, 8, 20, 2, 20, 2, 20, 1, 20, 1,
|
|
20, 4, 20, 4, 20, 8, 20, 8, 20, 8, 20, 8, 20, 8, 134, 40,
|
|
24, 134, 41, 25, 134, 42, 26, 21, 2, 65, 36, 4, 16, 190, 32, 36,
|
|
191, 33, 36, 188, 34, 32, 189, 35, 32, 150, 32, 34, 154, 36, 32, 21,
|
|
2, 196, 38, 36, 36, 152, 36, 35, 194, 39, 36, 36, 21, 2, 90, 39,
|
|
39, 40, 21, 2, 70, 38, 38, 39, 188, 34, 33, 152, 36, 34, 194, 39,
|
|
36, 36, 21, 2, 90, 39, 39, 41, 21, 2, 70, 38, 38, 39, 189, 35,
|
|
33, 152, 36, 35, 194, 39, 36, 36, 21, 2, 90, 39, 39, 42, 21, 2,
|
|
70, 38, 38, 39, 21, 2, 159, 37, 38, 21, 2, 33, 0, 37, 16, 2,
|
|
0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_matrix8);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_matrix8");
|
|
orc_program_set_backup_function (p, _backup_video_orc_matrix8);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 4, "s1");
|
|
orc_program_add_constant (p, 1, 0x00000080, "c1");
|
|
orc_program_add_parameter_int64 (p, 8, "p1");
|
|
orc_program_add_parameter_int64 (p, 8, "p2");
|
|
orc_program_add_parameter_int64 (p, 8, "p3");
|
|
orc_program_add_parameter_int64 (p, 8, "p4");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 2, "t2");
|
|
orc_program_add_temporary (p, 1, "t3");
|
|
orc_program_add_temporary (p, 1, "t4");
|
|
orc_program_add_temporary (p, 4, "t5");
|
|
orc_program_add_temporary (p, 4, "t6");
|
|
orc_program_add_temporary (p, 8, "t7");
|
|
orc_program_add_temporary (p, 8, "t8");
|
|
orc_program_add_temporary (p, 8, "t9");
|
|
orc_program_add_temporary (p, 8, "t10");
|
|
orc_program_add_temporary (p, 8, "t11");
|
|
|
|
orc_program_append_2 (p, "loadpq", 0, ORC_VAR_T9, ORC_VAR_P1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "loadpq", 0, ORC_VAR_T10, ORC_VAR_P2, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "loadpq", 0, ORC_VAR_T11, ORC_VAR_P3, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "subb", 2, ORC_VAR_T5, ORC_VAR_S1, ORC_VAR_C1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select0lw", 0, ORC_VAR_T1, ORC_VAR_T5,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T2, ORC_VAR_T5,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select0wb", 0, ORC_VAR_T3, ORC_VAR_T1,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T4, ORC_VAR_T1,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T5, ORC_VAR_T1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergebw", 2, ORC_VAR_T7, ORC_VAR_T5, ORC_VAR_T5,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T5,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulhsw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T9,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T8,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select0wb", 0, ORC_VAR_T3, ORC_VAR_T2,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T5,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulhsw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T10,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T8,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select1wb", 0, ORC_VAR_T4, ORC_VAR_T2,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splatbl", 0, ORC_VAR_T5, ORC_VAR_T4, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergelq", 0, ORC_VAR_T8, ORC_VAR_T5, ORC_VAR_T5,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulhsw", 2, ORC_VAR_T8, ORC_VAR_T8, ORC_VAR_T11,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 2, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T8,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convssswb", 2, ORC_VAR_T6, ORC_VAR_T7,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addb", 2, ORC_VAR_D1, ORC_VAR_T6, ORC_VAR_C1,
|
|
ORC_VAR_D1);
|
|
#endif
|
|
|
|
orc_program_compile (p);
|
|
c = orc_program_take_code (p);
|
|
orc_program_free (p);
|
|
}
|
|
p_inited = TRUE;
|
|
orc_once_mutex_unlock ();
|
|
}
|
|
ex->arrays[ORC_VAR_A2] = c;
|
|
ex->program = 0;
|
|
|
|
ex->n = n;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
{
|
|
orc_union64 tmp;
|
|
tmp.i = p1;
|
|
ex->params[ORC_VAR_P1] = ((orc_uint64) tmp.i) & 0xffffffff;
|
|
ex->params[ORC_VAR_T1] = ((orc_uint64) tmp.i) >> 32;
|
|
}
|
|
{
|
|
orc_union64 tmp;
|
|
tmp.i = p2;
|
|
ex->params[ORC_VAR_P2] = ((orc_uint64) tmp.i) & 0xffffffff;
|
|
ex->params[ORC_VAR_T2] = ((orc_uint64) tmp.i) >> 32;
|
|
}
|
|
{
|
|
orc_union64 tmp;
|
|
tmp.i = p3;
|
|
ex->params[ORC_VAR_P3] = ((orc_uint64) tmp.i) & 0xffffffff;
|
|
ex->params[ORC_VAR_T3] = ((orc_uint64) tmp.i) >> 32;
|
|
}
|
|
{
|
|
orc_union64 tmp;
|
|
tmp.i = p4;
|
|
ex->params[ORC_VAR_P4] = ((orc_uint64) tmp.i) & 0xffffffff;
|
|
ex->params[ORC_VAR_T4] = ((orc_uint64) tmp.i) >> 32;
|
|
}
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_resample_h_near_u32_lq */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_resample_h_near_u32_lq (guint32 * ORC_RESTRICT d1,
|
|
const guint32 * ORC_RESTRICT s1, int p1, int p2, int n)
|
|
{
|
|
int i;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var32;
|
|
|
|
ptr0 = (orc_union32 *) d1;
|
|
ptr4 = (orc_union32 *) s1;
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: ldresnearl */
|
|
var32 = ptr4[(p1 + i * p2) >> 16];
|
|
/* 1: storel */
|
|
ptr0[i] = var32;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_resample_h_near_u32_lq (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var32;
|
|
|
|
ptr0 = (orc_union32 *) ex->arrays[0];
|
|
ptr4 = (orc_union32 *) ex->arrays[4];
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: ldresnearl */
|
|
var32 = ptr4[(ex->params[24] + i * ex->params[25]) >> 16];
|
|
/* 1: storel */
|
|
ptr0[i] = var32;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_resample_h_near_u32_lq (guint32 * ORC_RESTRICT d1,
|
|
const guint32 * ORC_RESTRICT s1, int p1, int p2, 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, 32, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
|
|
97, 109, 112, 108, 101, 95, 104, 95, 110, 101, 97, 114, 95, 117, 51, 50,
|
|
95, 108, 113, 11, 4, 4, 12, 4, 4, 16, 4, 16, 4, 49, 0, 4,
|
|
24, 25, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_h_near_u32_lq);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_resample_h_near_u32_lq");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_h_near_u32_lq);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 4, "s1");
|
|
orc_program_add_parameter (p, 4, "p1");
|
|
orc_program_add_parameter (p, 4, "p2");
|
|
|
|
orc_program_append_2 (p, "ldresnearl", 0, ORC_VAR_D1, ORC_VAR_S1,
|
|
ORC_VAR_P1, ORC_VAR_P2);
|
|
#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;
|
|
ex->params[ORC_VAR_P1] = p1;
|
|
ex->params[ORC_VAR_P2] = p2;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_resample_h_2tap_1u8_lq */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_resample_h_2tap_1u8_lq (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int p1, int p2, int n)
|
|
{
|
|
int i;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
orc_int8 var32;
|
|
|
|
ptr0 = (orc_int8 *) d1;
|
|
ptr4 = (orc_int8 *) s1;
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: ldreslinb */
|
|
{
|
|
int tmp = p1 + i * p2;
|
|
var32 =
|
|
((orc_uint8) ptr4[tmp >> 16] * (256 - ((tmp >> 8) & 0xff)) +
|
|
(orc_uint8) ptr4[(tmp >> 16) + 1] * ((tmp >> 8) & 0xff)) >> 8;
|
|
}
|
|
/* 1: storeb */
|
|
ptr0[i] = var32;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_resample_h_2tap_1u8_lq (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
orc_int8 var32;
|
|
|
|
ptr0 = (orc_int8 *) ex->arrays[0];
|
|
ptr4 = (orc_int8 *) ex->arrays[4];
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: ldreslinb */
|
|
{
|
|
int tmp = ex->params[24] + i * ex->params[25];
|
|
var32 =
|
|
((orc_uint8) ptr4[tmp >> 16] * (256 - ((tmp >> 8) & 0xff)) +
|
|
(orc_uint8) ptr4[(tmp >> 16) + 1] * ((tmp >> 8) & 0xff)) >> 8;
|
|
}
|
|
/* 1: storeb */
|
|
ptr0[i] = var32;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_resample_h_2tap_1u8_lq (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int p1, int p2, 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, 32, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
|
|
97, 109, 112, 108, 101, 95, 104, 95, 50, 116, 97, 112, 95, 49, 117, 56,
|
|
95, 108, 113, 11, 1, 1, 12, 1, 1, 16, 4, 16, 4, 50, 0, 4,
|
|
24, 25, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_h_2tap_1u8_lq);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_resample_h_2tap_1u8_lq");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_h_2tap_1u8_lq);
|
|
orc_program_add_destination (p, 1, "d1");
|
|
orc_program_add_source (p, 1, "s1");
|
|
orc_program_add_parameter (p, 4, "p1");
|
|
orc_program_add_parameter (p, 4, "p2");
|
|
|
|
orc_program_append_2 (p, "ldreslinb", 0, ORC_VAR_D1, ORC_VAR_S1,
|
|
ORC_VAR_P1, ORC_VAR_P2);
|
|
#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;
|
|
ex->params[ORC_VAR_P1] = p1;
|
|
ex->params[ORC_VAR_P2] = p2;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_resample_h_2tap_4u8_lq */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_resample_h_2tap_4u8_lq (guint32 * ORC_RESTRICT d1,
|
|
const guint32 * ORC_RESTRICT s1, int p1, int p2, int n)
|
|
{
|
|
int i;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var32;
|
|
|
|
ptr0 = (orc_union32 *) d1;
|
|
ptr4 = (orc_union32 *) s1;
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: ldreslinl */
|
|
{
|
|
int tmp = p1 + i * p2;
|
|
orc_union32 a = ptr4[tmp >> 16];
|
|
orc_union32 b = ptr4[(tmp >> 16) + 1];
|
|
var32.x4[0] =
|
|
((orc_uint8) a.x4[0] * (256 - ((tmp >> 8) & 0xff)) +
|
|
(orc_uint8) b.x4[0] * ((tmp >> 8) & 0xff)) >> 8;
|
|
var32.x4[1] =
|
|
((orc_uint8) a.x4[1] * (256 - ((tmp >> 8) & 0xff)) +
|
|
(orc_uint8) b.x4[1] * ((tmp >> 8) & 0xff)) >> 8;
|
|
var32.x4[2] =
|
|
((orc_uint8) a.x4[2] * (256 - ((tmp >> 8) & 0xff)) +
|
|
(orc_uint8) b.x4[2] * ((tmp >> 8) & 0xff)) >> 8;
|
|
var32.x4[3] =
|
|
((orc_uint8) a.x4[3] * (256 - ((tmp >> 8) & 0xff)) +
|
|
(orc_uint8) b.x4[3] * ((tmp >> 8) & 0xff)) >> 8;
|
|
}
|
|
/* 1: storel */
|
|
ptr0[i] = var32;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_resample_h_2tap_4u8_lq (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var32;
|
|
|
|
ptr0 = (orc_union32 *) ex->arrays[0];
|
|
ptr4 = (orc_union32 *) ex->arrays[4];
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: ldreslinl */
|
|
{
|
|
int tmp = ex->params[24] + i * ex->params[25];
|
|
orc_union32 a = ptr4[tmp >> 16];
|
|
orc_union32 b = ptr4[(tmp >> 16) + 1];
|
|
var32.x4[0] =
|
|
((orc_uint8) a.x4[0] * (256 - ((tmp >> 8) & 0xff)) +
|
|
(orc_uint8) b.x4[0] * ((tmp >> 8) & 0xff)) >> 8;
|
|
var32.x4[1] =
|
|
((orc_uint8) a.x4[1] * (256 - ((tmp >> 8) & 0xff)) +
|
|
(orc_uint8) b.x4[1] * ((tmp >> 8) & 0xff)) >> 8;
|
|
var32.x4[2] =
|
|
((orc_uint8) a.x4[2] * (256 - ((tmp >> 8) & 0xff)) +
|
|
(orc_uint8) b.x4[2] * ((tmp >> 8) & 0xff)) >> 8;
|
|
var32.x4[3] =
|
|
((orc_uint8) a.x4[3] * (256 - ((tmp >> 8) & 0xff)) +
|
|
(orc_uint8) b.x4[3] * ((tmp >> 8) & 0xff)) >> 8;
|
|
}
|
|
/* 1: storel */
|
|
ptr0[i] = var32;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_resample_h_2tap_4u8_lq (guint32 * ORC_RESTRICT d1,
|
|
const guint32 * ORC_RESTRICT s1, int p1, int p2, 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, 32, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
|
|
97, 109, 112, 108, 101, 95, 104, 95, 50, 116, 97, 112, 95, 52, 117, 56,
|
|
95, 108, 113, 11, 4, 4, 12, 4, 4, 16, 4, 16, 4, 51, 0, 4,
|
|
24, 25, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_h_2tap_4u8_lq);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_resample_h_2tap_4u8_lq");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_h_2tap_4u8_lq);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 4, "s1");
|
|
orc_program_add_parameter (p, 4, "p1");
|
|
orc_program_add_parameter (p, 4, "p2");
|
|
|
|
orc_program_append_2 (p, "ldreslinl", 0, ORC_VAR_D1, ORC_VAR_S1,
|
|
ORC_VAR_P1, ORC_VAR_P2);
|
|
#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;
|
|
ex->params[ORC_VAR_P1] = p1;
|
|
ex->params[ORC_VAR_P2] = p2;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_resample_h_2tap_u8_lq */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_resample_h_2tap_u8_lq (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
|
|
const gint16 * ORC_RESTRICT s3, const gint16 * ORC_RESTRICT s4, int n)
|
|
{
|
|
int i;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
const orc_union16 *ORC_RESTRICT ptr6;
|
|
const orc_union16 *ORC_RESTRICT ptr7;
|
|
orc_int8 var34;
|
|
orc_union16 var35;
|
|
orc_int8 var36;
|
|
orc_union16 var37;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union16 var38;
|
|
#else
|
|
orc_union16 var38;
|
|
#endif
|
|
orc_int8 var39;
|
|
orc_union16 var40;
|
|
orc_union16 var41;
|
|
orc_union16 var42;
|
|
orc_union16 var43;
|
|
orc_union16 var44;
|
|
orc_union16 var45;
|
|
orc_union16 var46;
|
|
|
|
ptr0 = (orc_int8 *) d1;
|
|
ptr4 = (orc_int8 *) s1;
|
|
ptr5 = (orc_int8 *) s2;
|
|
ptr6 = (orc_union16 *) s3;
|
|
ptr7 = (orc_union16 *) s4;
|
|
|
|
/* 9: loadpw */
|
|
var38.i = (int) 0x00000020; /* 32 or 1.58101e-322f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var34 = ptr4[i];
|
|
/* 1: convubw */
|
|
var40.i = (orc_uint8) var34;
|
|
/* 2: loadw */
|
|
var35 = ptr6[i];
|
|
/* 3: mullw */
|
|
var41.i = (var40.i * var35.i) & 0xffff;
|
|
/* 4: loadb */
|
|
var36 = ptr5[i];
|
|
/* 5: convubw */
|
|
var42.i = (orc_uint8) var36;
|
|
/* 6: loadw */
|
|
var37 = ptr7[i];
|
|
/* 7: mullw */
|
|
var43.i = (var42.i * var37.i) & 0xffff;
|
|
/* 8: addw */
|
|
var44.i = var41.i + var43.i;
|
|
/* 10: addw */
|
|
var45.i = var44.i + var38.i;
|
|
/* 11: shrsw */
|
|
var46.i = var45.i >> 6;
|
|
/* 12: convsuswb */
|
|
var39 = ORC_CLAMP_UB (var46.i);
|
|
/* 13: storeb */
|
|
ptr0[i] = var39;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_resample_h_2tap_u8_lq (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
const orc_union16 *ORC_RESTRICT ptr6;
|
|
const orc_union16 *ORC_RESTRICT ptr7;
|
|
orc_int8 var34;
|
|
orc_union16 var35;
|
|
orc_int8 var36;
|
|
orc_union16 var37;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union16 var38;
|
|
#else
|
|
orc_union16 var38;
|
|
#endif
|
|
orc_int8 var39;
|
|
orc_union16 var40;
|
|
orc_union16 var41;
|
|
orc_union16 var42;
|
|
orc_union16 var43;
|
|
orc_union16 var44;
|
|
orc_union16 var45;
|
|
orc_union16 var46;
|
|
|
|
ptr0 = (orc_int8 *) ex->arrays[0];
|
|
ptr4 = (orc_int8 *) ex->arrays[4];
|
|
ptr5 = (orc_int8 *) ex->arrays[5];
|
|
ptr6 = (orc_union16 *) ex->arrays[6];
|
|
ptr7 = (orc_union16 *) ex->arrays[7];
|
|
|
|
/* 9: loadpw */
|
|
var38.i = (int) 0x00000020; /* 32 or 1.58101e-322f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var34 = ptr4[i];
|
|
/* 1: convubw */
|
|
var40.i = (orc_uint8) var34;
|
|
/* 2: loadw */
|
|
var35 = ptr6[i];
|
|
/* 3: mullw */
|
|
var41.i = (var40.i * var35.i) & 0xffff;
|
|
/* 4: loadb */
|
|
var36 = ptr5[i];
|
|
/* 5: convubw */
|
|
var42.i = (orc_uint8) var36;
|
|
/* 6: loadw */
|
|
var37 = ptr7[i];
|
|
/* 7: mullw */
|
|
var43.i = (var42.i * var37.i) & 0xffff;
|
|
/* 8: addw */
|
|
var44.i = var41.i + var43.i;
|
|
/* 10: addw */
|
|
var45.i = var44.i + var38.i;
|
|
/* 11: shrsw */
|
|
var46.i = var45.i >> 6;
|
|
/* 12: convsuswb */
|
|
var39 = ORC_CLAMP_UB (var46.i);
|
|
/* 13: storeb */
|
|
ptr0[i] = var39;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_resample_h_2tap_u8_lq (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
|
|
const gint16 * ORC_RESTRICT s3, const gint16 * ORC_RESTRICT s4, 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, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
|
|
97, 109, 112, 108, 101, 95, 104, 95, 50, 116, 97, 112, 95, 117, 56, 95,
|
|
108, 113, 11, 1, 1, 12, 1, 1, 12, 1, 1, 12, 2, 2, 12, 2,
|
|
2, 14, 2, 32, 0, 0, 0, 14, 2, 6, 0, 0, 0, 20, 2, 20,
|
|
2, 150, 32, 4, 89, 32, 32, 6, 150, 33, 5, 89, 33, 33, 7, 70,
|
|
32, 32, 33, 70, 32, 32, 16, 94, 32, 32, 17, 160, 0, 32, 2, 0,
|
|
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_h_2tap_u8_lq);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_resample_h_2tap_u8_lq");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_h_2tap_u8_lq);
|
|
orc_program_add_destination (p, 1, "d1");
|
|
orc_program_add_source (p, 1, "s1");
|
|
orc_program_add_source (p, 1, "s2");
|
|
orc_program_add_source (p, 2, "s3");
|
|
orc_program_add_source (p, 2, "s4");
|
|
orc_program_add_constant (p, 2, 0x00000020, "c1");
|
|
orc_program_add_constant (p, 2, 0x00000006, "c2");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 2, "t2");
|
|
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S3,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_S4,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1,
|
|
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;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
ex->arrays[ORC_VAR_S3] = (void *) s3;
|
|
ex->arrays[ORC_VAR_S4] = (void *) s4;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_resample_v_2tap_u8_lq */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_resample_v_2tap_u8_lq (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int p1,
|
|
int n)
|
|
{
|
|
int i;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
orc_int8 var35;
|
|
orc_int8 var36;
|
|
orc_union16 var37;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union16 var38;
|
|
#else
|
|
orc_union16 var38;
|
|
#endif
|
|
orc_int8 var39;
|
|
orc_int8 var40;
|
|
orc_union16 var41;
|
|
orc_union16 var42;
|
|
orc_union16 var43;
|
|
orc_union16 var44;
|
|
orc_union16 var45;
|
|
orc_int8 var46;
|
|
|
|
ptr0 = (orc_int8 *) d1;
|
|
ptr4 = (orc_int8 *) s1;
|
|
ptr5 = (orc_int8 *) s2;
|
|
|
|
/* 5: loadpw */
|
|
var37.i = p1;
|
|
/* 7: loadpw */
|
|
var38.i = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var35 = ptr4[i];
|
|
/* 1: convubw */
|
|
var41.i = (orc_uint8) var35;
|
|
/* 2: loadb */
|
|
var36 = ptr5[i];
|
|
/* 3: convubw */
|
|
var42.i = (orc_uint8) var36;
|
|
/* 4: subw */
|
|
var43.i = var42.i - var41.i;
|
|
/* 6: mullw */
|
|
var44.i = (var43.i * var37.i) & 0xffff;
|
|
/* 8: addw */
|
|
var45.i = var44.i + var38.i;
|
|
/* 9: convhwb */
|
|
var46 = ((orc_uint16) var45.i) >> 8;
|
|
/* 10: loadb */
|
|
var39 = ptr4[i];
|
|
/* 11: addb */
|
|
var40 = var46 + var39;
|
|
/* 12: storeb */
|
|
ptr0[i] = var40;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_resample_v_2tap_u8_lq (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
orc_int8 var35;
|
|
orc_int8 var36;
|
|
orc_union16 var37;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union16 var38;
|
|
#else
|
|
orc_union16 var38;
|
|
#endif
|
|
orc_int8 var39;
|
|
orc_int8 var40;
|
|
orc_union16 var41;
|
|
orc_union16 var42;
|
|
orc_union16 var43;
|
|
orc_union16 var44;
|
|
orc_union16 var45;
|
|
orc_int8 var46;
|
|
|
|
ptr0 = (orc_int8 *) ex->arrays[0];
|
|
ptr4 = (orc_int8 *) ex->arrays[4];
|
|
ptr5 = (orc_int8 *) ex->arrays[5];
|
|
|
|
/* 5: loadpw */
|
|
var37.i = ex->params[24];
|
|
/* 7: loadpw */
|
|
var38.i = (int) 0x00000080; /* 128 or 6.32404e-322f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var35 = ptr4[i];
|
|
/* 1: convubw */
|
|
var41.i = (orc_uint8) var35;
|
|
/* 2: loadb */
|
|
var36 = ptr5[i];
|
|
/* 3: convubw */
|
|
var42.i = (orc_uint8) var36;
|
|
/* 4: subw */
|
|
var43.i = var42.i - var41.i;
|
|
/* 6: mullw */
|
|
var44.i = (var43.i * var37.i) & 0xffff;
|
|
/* 8: addw */
|
|
var45.i = var44.i + var38.i;
|
|
/* 9: convhwb */
|
|
var46 = ((orc_uint16) var45.i) >> 8;
|
|
/* 10: loadb */
|
|
var39 = ptr4[i];
|
|
/* 11: addb */
|
|
var40 = var46 + var39;
|
|
/* 12: storeb */
|
|
ptr0[i] = var40;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_resample_v_2tap_u8_lq (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int p1,
|
|
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, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
|
|
97, 109, 112, 108, 101, 95, 118, 95, 50, 116, 97, 112, 95, 117, 56, 95,
|
|
108, 113, 11, 1, 1, 12, 1, 1, 12, 1, 1, 14, 2, 128, 0, 0,
|
|
0, 16, 2, 20, 1, 20, 2, 20, 2, 150, 33, 4, 150, 34, 5, 98,
|
|
34, 34, 33, 89, 34, 34, 24, 70, 34, 34, 16, 158, 32, 34, 33, 0,
|
|
32, 4, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_v_2tap_u8_lq);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_resample_v_2tap_u8_lq");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_v_2tap_u8_lq);
|
|
orc_program_add_destination (p, 1, "d1");
|
|
orc_program_add_source (p, 1, "s1");
|
|
orc_program_add_source (p, 1, "s2");
|
|
orc_program_add_constant (p, 2, 0x00000080, "c1");
|
|
orc_program_add_parameter (p, 2, "p1");
|
|
orc_program_add_temporary (p, 1, "t1");
|
|
orc_program_add_temporary (p, 2, "t2");
|
|
orc_program_add_temporary (p, 2, "t3");
|
|
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S2, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "subw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mullw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_P1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convhwb", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addb", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S1,
|
|
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;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
ex->params[ORC_VAR_P1] = p1;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_resample_v_2tap_u16 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_resample_v_2tap_u16 (guint16 * ORC_RESTRICT d1,
|
|
const guint16 * ORC_RESTRICT s1, const guint16 * ORC_RESTRICT s2, int p1,
|
|
int n)
|
|
{
|
|
int i;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
const orc_union16 *ORC_RESTRICT ptr4;
|
|
const orc_union16 *ORC_RESTRICT ptr5;
|
|
orc_union16 var35;
|
|
orc_union16 var36;
|
|
orc_union16 var37;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union32 var38;
|
|
#else
|
|
orc_union32 var38;
|
|
#endif
|
|
orc_union16 var39;
|
|
orc_union32 var40;
|
|
orc_union32 var41;
|
|
orc_union32 var42;
|
|
orc_union32 var43;
|
|
orc_union32 var44;
|
|
orc_union32 var45;
|
|
orc_union32 var46;
|
|
orc_union32 var47;
|
|
|
|
ptr0 = (orc_union16 *) d1;
|
|
ptr4 = (orc_union16 *) s1;
|
|
ptr5 = (orc_union16 *) s2;
|
|
|
|
/* 5: loadpw */
|
|
var37.i = p1;
|
|
/* 8: loadpl */
|
|
var38.i = (int) 0x00001000; /* 4096 or 2.02369e-320f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadw */
|
|
var35 = ptr4[i];
|
|
/* 1: convuwl */
|
|
var40.i = (orc_uint16) var35.i;
|
|
/* 2: loadw */
|
|
var36 = ptr5[i];
|
|
/* 3: convuwl */
|
|
var41.i = (orc_uint16) var36.i;
|
|
/* 4: subl */
|
|
var42.i = ((orc_uint32) var41.i) - ((orc_uint32) var40.i);
|
|
/* 6: convuwl */
|
|
var43.i = (orc_uint16) var37.i;
|
|
/* 7: mulll */
|
|
var44.i = (((orc_uint32) var42.i) * ((orc_uint32) var43.i)) & 0xffffffff;
|
|
/* 9: addl */
|
|
var45.i = ((orc_uint32) var44.i) + ((orc_uint32) var38.i);
|
|
/* 10: shrsl */
|
|
var46.i = var45.i >> 12;
|
|
/* 11: addl */
|
|
var47.i = ((orc_uint32) var40.i) + ((orc_uint32) var46.i);
|
|
/* 12: convsuslw */
|
|
var39.i = ORC_CLAMP_UW (var47.i);
|
|
/* 13: storew */
|
|
ptr0[i] = var39;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_resample_v_2tap_u16 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
const orc_union16 *ORC_RESTRICT ptr4;
|
|
const orc_union16 *ORC_RESTRICT ptr5;
|
|
orc_union16 var35;
|
|
orc_union16 var36;
|
|
orc_union16 var37;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union32 var38;
|
|
#else
|
|
orc_union32 var38;
|
|
#endif
|
|
orc_union16 var39;
|
|
orc_union32 var40;
|
|
orc_union32 var41;
|
|
orc_union32 var42;
|
|
orc_union32 var43;
|
|
orc_union32 var44;
|
|
orc_union32 var45;
|
|
orc_union32 var46;
|
|
orc_union32 var47;
|
|
|
|
ptr0 = (orc_union16 *) ex->arrays[0];
|
|
ptr4 = (orc_union16 *) ex->arrays[4];
|
|
ptr5 = (orc_union16 *) ex->arrays[5];
|
|
|
|
/* 5: loadpw */
|
|
var37.i = ex->params[24];
|
|
/* 8: loadpl */
|
|
var38.i = (int) 0x00001000; /* 4096 or 2.02369e-320f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadw */
|
|
var35 = ptr4[i];
|
|
/* 1: convuwl */
|
|
var40.i = (orc_uint16) var35.i;
|
|
/* 2: loadw */
|
|
var36 = ptr5[i];
|
|
/* 3: convuwl */
|
|
var41.i = (orc_uint16) var36.i;
|
|
/* 4: subl */
|
|
var42.i = ((orc_uint32) var41.i) - ((orc_uint32) var40.i);
|
|
/* 6: convuwl */
|
|
var43.i = (orc_uint16) var37.i;
|
|
/* 7: mulll */
|
|
var44.i = (((orc_uint32) var42.i) * ((orc_uint32) var43.i)) & 0xffffffff;
|
|
/* 9: addl */
|
|
var45.i = ((orc_uint32) var44.i) + ((orc_uint32) var38.i);
|
|
/* 10: shrsl */
|
|
var46.i = var45.i >> 12;
|
|
/* 11: addl */
|
|
var47.i = ((orc_uint32) var40.i) + ((orc_uint32) var46.i);
|
|
/* 12: convsuslw */
|
|
var39.i = ORC_CLAMP_UW (var47.i);
|
|
/* 13: storew */
|
|
ptr0[i] = var39;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_resample_v_2tap_u16 (guint16 * ORC_RESTRICT d1,
|
|
const guint16 * ORC_RESTRICT s1, const guint16 * ORC_RESTRICT s2, int p1,
|
|
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, 29, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
|
|
97, 109, 112, 108, 101, 95, 118, 95, 50, 116, 97, 112, 95, 117, 49, 54,
|
|
11, 2, 2, 12, 2, 2, 12, 2, 2, 14, 4, 0, 16, 0, 0, 14,
|
|
4, 12, 0, 0, 0, 16, 2, 20, 4, 20, 4, 20, 4, 154, 32, 4,
|
|
154, 33, 5, 129, 33, 33, 32, 154, 34, 24, 120, 33, 33, 34, 103, 33,
|
|
33, 16, 125, 33, 33, 17, 103, 32, 32, 33, 166, 0, 32, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_v_2tap_u16);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_resample_v_2tap_u16");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_v_2tap_u16);
|
|
orc_program_add_destination (p, 2, "d1");
|
|
orc_program_add_source (p, 2, "s1");
|
|
orc_program_add_source (p, 2, "s2");
|
|
orc_program_add_constant (p, 4, 0x00001000, "c1");
|
|
orc_program_add_constant (p, 4, 0x0000000c, "c2");
|
|
orc_program_add_parameter (p, 2, "p1");
|
|
orc_program_add_temporary (p, 4, "t1");
|
|
orc_program_add_temporary (p, 4, "t2");
|
|
orc_program_add_temporary (p, 4, "t3");
|
|
|
|
orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "subl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T3, ORC_VAR_P1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulll", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convsuslw", 0, ORC_VAR_D1, ORC_VAR_T1,
|
|
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;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
ex->params[ORC_VAR_P1] = p1;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_resample_v_2tap_u8 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_resample_v_2tap_u8 (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int p1,
|
|
int n)
|
|
{
|
|
int i;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
orc_int8 var37;
|
|
orc_int8 var38;
|
|
orc_union16 var39;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union32 var40;
|
|
#else
|
|
orc_union32 var40;
|
|
#endif
|
|
orc_int8 var41;
|
|
orc_union16 var42;
|
|
orc_union16 var43;
|
|
orc_union16 var44;
|
|
orc_union32 var45;
|
|
orc_union32 var46;
|
|
orc_union32 var47;
|
|
orc_union16 var48;
|
|
orc_union16 var49;
|
|
|
|
ptr0 = (orc_int8 *) d1;
|
|
ptr4 = (orc_int8 *) s1;
|
|
ptr5 = (orc_int8 *) s2;
|
|
|
|
/* 5: loadpw */
|
|
var39.i = p1;
|
|
/* 7: loadpl */
|
|
var40.i = (int) 0x00000fff; /* 4095 or 2.0232e-320f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var37 = ptr4[i];
|
|
/* 1: convubw */
|
|
var42.i = (orc_uint8) var37;
|
|
/* 2: loadb */
|
|
var38 = ptr5[i];
|
|
/* 3: convubw */
|
|
var43.i = (orc_uint8) var38;
|
|
/* 4: subw */
|
|
var44.i = var43.i - var42.i;
|
|
/* 6: mulswl */
|
|
var45.i = var44.i * var39.i;
|
|
/* 8: addl */
|
|
var46.i = ((orc_uint32) var45.i) + ((orc_uint32) var40.i);
|
|
/* 9: shrsl */
|
|
var47.i = var46.i >> 12;
|
|
/* 10: convlw */
|
|
var48.i = var47.i;
|
|
/* 11: addw */
|
|
var49.i = var48.i + var42.i;
|
|
/* 12: convsuswb */
|
|
var41 = ORC_CLAMP_UB (var49.i);
|
|
/* 13: storeb */
|
|
ptr0[i] = var41;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_resample_v_2tap_u8 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
orc_int8 var37;
|
|
orc_int8 var38;
|
|
orc_union16 var39;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union32 var40;
|
|
#else
|
|
orc_union32 var40;
|
|
#endif
|
|
orc_int8 var41;
|
|
orc_union16 var42;
|
|
orc_union16 var43;
|
|
orc_union16 var44;
|
|
orc_union32 var45;
|
|
orc_union32 var46;
|
|
orc_union32 var47;
|
|
orc_union16 var48;
|
|
orc_union16 var49;
|
|
|
|
ptr0 = (orc_int8 *) ex->arrays[0];
|
|
ptr4 = (orc_int8 *) ex->arrays[4];
|
|
ptr5 = (orc_int8 *) ex->arrays[5];
|
|
|
|
/* 5: loadpw */
|
|
var39.i = ex->params[24];
|
|
/* 7: loadpl */
|
|
var40.i = (int) 0x00000fff; /* 4095 or 2.0232e-320f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var37 = ptr4[i];
|
|
/* 1: convubw */
|
|
var42.i = (orc_uint8) var37;
|
|
/* 2: loadb */
|
|
var38 = ptr5[i];
|
|
/* 3: convubw */
|
|
var43.i = (orc_uint8) var38;
|
|
/* 4: subw */
|
|
var44.i = var43.i - var42.i;
|
|
/* 6: mulswl */
|
|
var45.i = var44.i * var39.i;
|
|
/* 8: addl */
|
|
var46.i = ((orc_uint32) var45.i) + ((orc_uint32) var40.i);
|
|
/* 9: shrsl */
|
|
var47.i = var46.i >> 12;
|
|
/* 10: convlw */
|
|
var48.i = var47.i;
|
|
/* 11: addw */
|
|
var49.i = var48.i + var42.i;
|
|
/* 12: convsuswb */
|
|
var41 = ORC_CLAMP_UB (var49.i);
|
|
/* 13: storeb */
|
|
ptr0[i] = var41;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_resample_v_2tap_u8 (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int p1,
|
|
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, 114, 101, 115,
|
|
97, 109, 112, 108, 101, 95, 118, 95, 50, 116, 97, 112, 95, 117, 56, 11,
|
|
1, 1, 12, 1, 1, 12, 1, 1, 14, 4, 255, 15, 0, 0, 14, 4,
|
|
12, 0, 0, 0, 16, 2, 20, 1, 20, 2, 20, 2, 20, 4, 20, 4,
|
|
150, 33, 4, 150, 34, 5, 98, 34, 34, 33, 176, 36, 34, 24, 103, 36,
|
|
36, 16, 125, 36, 36, 17, 163, 34, 36, 70, 34, 34, 33, 160, 0, 34,
|
|
2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_resample_v_2tap_u8);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_resample_v_2tap_u8");
|
|
orc_program_set_backup_function (p, _backup_video_orc_resample_v_2tap_u8);
|
|
orc_program_add_destination (p, 1, "d1");
|
|
orc_program_add_source (p, 1, "s1");
|
|
orc_program_add_source (p, 1, "s2");
|
|
orc_program_add_constant (p, 4, 0x00000fff, "c1");
|
|
orc_program_add_constant (p, 4, 0x0000000c, "c2");
|
|
orc_program_add_parameter (p, 2, "p1");
|
|
orc_program_add_temporary (p, 1, "t1");
|
|
orc_program_add_temporary (p, 2, "t2");
|
|
orc_program_add_temporary (p, 2, "t3");
|
|
orc_program_add_temporary (p, 4, "t4");
|
|
orc_program_add_temporary (p, 4, "t5");
|
|
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S2, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "subw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_P1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addl", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convlw", 0, ORC_VAR_T3, ORC_VAR_T5, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T3,
|
|
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;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
ex->params[ORC_VAR_P1] = p1;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_resample_v_4tap_u8_lq */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_resample_v_4tap_u8_lq (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 p1,
|
|
int p2, int p3, int p4, int n)
|
|
{
|
|
int i;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
const orc_int8 *ORC_RESTRICT ptr7;
|
|
orc_int8 var34;
|
|
orc_union16 var35;
|
|
orc_int8 var36;
|
|
orc_union16 var37;
|
|
orc_int8 var38;
|
|
orc_union16 var39;
|
|
orc_int8 var40;
|
|
orc_union16 var41;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union16 var42;
|
|
#else
|
|
orc_union16 var42;
|
|
#endif
|
|
orc_int8 var43;
|
|
orc_union16 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_union16 var53;
|
|
orc_union16 var54;
|
|
orc_union16 var55;
|
|
orc_union16 var56;
|
|
|
|
ptr0 = (orc_int8 *) d1;
|
|
ptr4 = (orc_int8 *) s1;
|
|
ptr5 = (orc_int8 *) s2;
|
|
ptr6 = (orc_int8 *) s3;
|
|
ptr7 = (orc_int8 *) s4;
|
|
|
|
/* 2: loadpw */
|
|
var35.i = p1;
|
|
/* 6: loadpw */
|
|
var37.i = p2;
|
|
/* 11: loadpw */
|
|
var39.i = p3;
|
|
/* 16: loadpw */
|
|
var41.i = p4;
|
|
/* 19: loadpw */
|
|
var42.i = (int) 0x00000020; /* 32 or 1.58101e-322f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var34 = ptr4[i];
|
|
/* 1: convubw */
|
|
var44.i = (orc_uint8) var34;
|
|
/* 3: mullw */
|
|
var45.i = (var44.i * var35.i) & 0xffff;
|
|
/* 4: loadb */
|
|
var36 = ptr5[i];
|
|
/* 5: convubw */
|
|
var46.i = (orc_uint8) var36;
|
|
/* 7: mullw */
|
|
var47.i = (var46.i * var37.i) & 0xffff;
|
|
/* 8: addw */
|
|
var48.i = var45.i + var47.i;
|
|
/* 9: loadb */
|
|
var38 = ptr6[i];
|
|
/* 10: convubw */
|
|
var49.i = (orc_uint8) var38;
|
|
/* 12: mullw */
|
|
var50.i = (var49.i * var39.i) & 0xffff;
|
|
/* 13: addw */
|
|
var51.i = var48.i + var50.i;
|
|
/* 14: loadb */
|
|
var40 = ptr7[i];
|
|
/* 15: convubw */
|
|
var52.i = (orc_uint8) var40;
|
|
/* 17: mullw */
|
|
var53.i = (var52.i * var41.i) & 0xffff;
|
|
/* 18: addw */
|
|
var54.i = var51.i + var53.i;
|
|
/* 20: addw */
|
|
var55.i = var54.i + var42.i;
|
|
/* 21: shrsw */
|
|
var56.i = var55.i >> 6;
|
|
/* 22: convsuswb */
|
|
var43 = ORC_CLAMP_UB (var56.i);
|
|
/* 23: storeb */
|
|
ptr0[i] = var43;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_resample_v_4tap_u8_lq (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
const orc_int8 *ORC_RESTRICT ptr7;
|
|
orc_int8 var34;
|
|
orc_union16 var35;
|
|
orc_int8 var36;
|
|
orc_union16 var37;
|
|
orc_int8 var38;
|
|
orc_union16 var39;
|
|
orc_int8 var40;
|
|
orc_union16 var41;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union16 var42;
|
|
#else
|
|
orc_union16 var42;
|
|
#endif
|
|
orc_int8 var43;
|
|
orc_union16 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_union16 var53;
|
|
orc_union16 var54;
|
|
orc_union16 var55;
|
|
orc_union16 var56;
|
|
|
|
ptr0 = (orc_int8 *) ex->arrays[0];
|
|
ptr4 = (orc_int8 *) ex->arrays[4];
|
|
ptr5 = (orc_int8 *) ex->arrays[5];
|
|
ptr6 = (orc_int8 *) ex->arrays[6];
|
|
ptr7 = (orc_int8 *) ex->arrays[7];
|
|
|
|
/* 2: loadpw */
|
|
var35.i = ex->params[24];
|
|
/* 6: loadpw */
|
|
var37.i = ex->params[25];
|
|
/* 11: loadpw */
|
|
var39.i = ex->params[26];
|
|
/* 16: loadpw */
|
|
var41.i = ex->params[27];
|
|
/* 19: loadpw */
|
|
var42.i = (int) 0x00000020; /* 32 or 1.58101e-322f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var34 = ptr4[i];
|
|
/* 1: convubw */
|
|
var44.i = (orc_uint8) var34;
|
|
/* 3: mullw */
|
|
var45.i = (var44.i * var35.i) & 0xffff;
|
|
/* 4: loadb */
|
|
var36 = ptr5[i];
|
|
/* 5: convubw */
|
|
var46.i = (orc_uint8) var36;
|
|
/* 7: mullw */
|
|
var47.i = (var46.i * var37.i) & 0xffff;
|
|
/* 8: addw */
|
|
var48.i = var45.i + var47.i;
|
|
/* 9: loadb */
|
|
var38 = ptr6[i];
|
|
/* 10: convubw */
|
|
var49.i = (orc_uint8) var38;
|
|
/* 12: mullw */
|
|
var50.i = (var49.i * var39.i) & 0xffff;
|
|
/* 13: addw */
|
|
var51.i = var48.i + var50.i;
|
|
/* 14: loadb */
|
|
var40 = ptr7[i];
|
|
/* 15: convubw */
|
|
var52.i = (orc_uint8) var40;
|
|
/* 17: mullw */
|
|
var53.i = (var52.i * var41.i) & 0xffff;
|
|
/* 18: addw */
|
|
var54.i = var51.i + var53.i;
|
|
/* 20: addw */
|
|
var55.i = var54.i + var42.i;
|
|
/* 21: shrsw */
|
|
var56.i = var55.i >> 6;
|
|
/* 22: convsuswb */
|
|
var43 = ORC_CLAMP_UB (var56.i);
|
|
/* 23: storeb */
|
|
ptr0[i] = var43;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_resample_v_4tap_u8_lq (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 p1,
|
|
int p2, int p3, int p4, 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, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
|
|
97, 109, 112, 108, 101, 95, 118, 95, 52, 116, 97, 112, 95, 117, 56, 95,
|
|
108, 113, 11, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1,
|
|
1, 14, 2, 32, 0, 0, 0, 14, 2, 6, 0, 0, 0, 16, 2, 16,
|
|
2, 16, 2, 16, 2, 20, 2, 20, 2, 150, 32, 4, 89, 32, 32, 24,
|
|
150, 33, 5, 89, 33, 33, 25, 70, 32, 32, 33, 150, 33, 6, 89, 33,
|
|
33, 26, 70, 32, 32, 33, 150, 33, 7, 89, 33, 33, 27, 70, 32, 32,
|
|
33, 70, 32, 32, 16, 94, 32, 32, 17, 160, 0, 32, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_v_4tap_u8_lq);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_resample_v_4tap_u8_lq");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_v_4tap_u8_lq);
|
|
orc_program_add_destination (p, 1, "d1");
|
|
orc_program_add_source (p, 1, "s1");
|
|
orc_program_add_source (p, 1, "s2");
|
|
orc_program_add_source (p, 1, "s3");
|
|
orc_program_add_source (p, 1, "s4");
|
|
orc_program_add_constant (p, 2, 0x00000020, "c1");
|
|
orc_program_add_constant (p, 2, 0x00000006, "c2");
|
|
orc_program_add_parameter (p, 2, "p1");
|
|
orc_program_add_parameter (p, 2, "p2");
|
|
orc_program_add_parameter (p, 2, "p3");
|
|
orc_program_add_parameter (p, 2, "p4");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 2, "t2");
|
|
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P3,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S4, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P4,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1,
|
|
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;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
ex->arrays[ORC_VAR_S3] = (void *) s3;
|
|
ex->arrays[ORC_VAR_S4] = (void *) s4;
|
|
ex->params[ORC_VAR_P1] = p1;
|
|
ex->params[ORC_VAR_P2] = p2;
|
|
ex->params[ORC_VAR_P3] = p3;
|
|
ex->params[ORC_VAR_P4] = p4;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_resample_v_4tap_u8 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_resample_v_4tap_u8 (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 p1,
|
|
int p2, int p3, int p4, int n)
|
|
{
|
|
int i;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
const orc_int8 *ORC_RESTRICT ptr7;
|
|
orc_int8 var36;
|
|
orc_union16 var37;
|
|
orc_int8 var38;
|
|
orc_union16 var39;
|
|
orc_int8 var40;
|
|
orc_union16 var41;
|
|
orc_int8 var42;
|
|
orc_union16 var43;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union32 var44;
|
|
#else
|
|
orc_union32 var44;
|
|
#endif
|
|
orc_int8 var45;
|
|
orc_union16 var46;
|
|
orc_union32 var47;
|
|
orc_union16 var48;
|
|
orc_union32 var49;
|
|
orc_union32 var50;
|
|
orc_union16 var51;
|
|
orc_union32 var52;
|
|
orc_union32 var53;
|
|
orc_union16 var54;
|
|
orc_union32 var55;
|
|
orc_union32 var56;
|
|
orc_union32 var57;
|
|
orc_union32 var58;
|
|
orc_union16 var59;
|
|
|
|
ptr0 = (orc_int8 *) d1;
|
|
ptr4 = (orc_int8 *) s1;
|
|
ptr5 = (orc_int8 *) s2;
|
|
ptr6 = (orc_int8 *) s3;
|
|
ptr7 = (orc_int8 *) s4;
|
|
|
|
/* 2: loadpw */
|
|
var37.i = p1;
|
|
/* 6: loadpw */
|
|
var39.i = p2;
|
|
/* 11: loadpw */
|
|
var41.i = p3;
|
|
/* 16: loadpw */
|
|
var43.i = p4;
|
|
/* 19: loadpl */
|
|
var44.i = (int) 0x00000fff; /* 4095 or 2.0232e-320f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var36 = ptr4[i];
|
|
/* 1: convubw */
|
|
var46.i = (orc_uint8) var36;
|
|
/* 3: mulswl */
|
|
var47.i = var46.i * var37.i;
|
|
/* 4: loadb */
|
|
var38 = ptr5[i];
|
|
/* 5: convubw */
|
|
var48.i = (orc_uint8) var38;
|
|
/* 7: mulswl */
|
|
var49.i = var48.i * var39.i;
|
|
/* 8: addl */
|
|
var50.i = ((orc_uint32) var47.i) + ((orc_uint32) var49.i);
|
|
/* 9: loadb */
|
|
var40 = ptr6[i];
|
|
/* 10: convubw */
|
|
var51.i = (orc_uint8) var40;
|
|
/* 12: mulswl */
|
|
var52.i = var51.i * var41.i;
|
|
/* 13: addl */
|
|
var53.i = ((orc_uint32) var50.i) + ((orc_uint32) var52.i);
|
|
/* 14: loadb */
|
|
var42 = ptr7[i];
|
|
/* 15: convubw */
|
|
var54.i = (orc_uint8) var42;
|
|
/* 17: mulswl */
|
|
var55.i = var54.i * var43.i;
|
|
/* 18: addl */
|
|
var56.i = ((orc_uint32) var53.i) + ((orc_uint32) var55.i);
|
|
/* 20: addl */
|
|
var57.i = ((orc_uint32) var56.i) + ((orc_uint32) var44.i);
|
|
/* 21: shrsl */
|
|
var58.i = var57.i >> 12;
|
|
/* 22: convsuslw */
|
|
var59.i = ORC_CLAMP_UW (var58.i);
|
|
/* 23: convsuswb */
|
|
var45 = ORC_CLAMP_UB (var59.i);
|
|
/* 24: storeb */
|
|
ptr0[i] = var45;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_resample_v_4tap_u8 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
const orc_int8 *ORC_RESTRICT ptr7;
|
|
orc_int8 var36;
|
|
orc_union16 var37;
|
|
orc_int8 var38;
|
|
orc_union16 var39;
|
|
orc_int8 var40;
|
|
orc_union16 var41;
|
|
orc_int8 var42;
|
|
orc_union16 var43;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union32 var44;
|
|
#else
|
|
orc_union32 var44;
|
|
#endif
|
|
orc_int8 var45;
|
|
orc_union16 var46;
|
|
orc_union32 var47;
|
|
orc_union16 var48;
|
|
orc_union32 var49;
|
|
orc_union32 var50;
|
|
orc_union16 var51;
|
|
orc_union32 var52;
|
|
orc_union32 var53;
|
|
orc_union16 var54;
|
|
orc_union32 var55;
|
|
orc_union32 var56;
|
|
orc_union32 var57;
|
|
orc_union32 var58;
|
|
orc_union16 var59;
|
|
|
|
ptr0 = (orc_int8 *) ex->arrays[0];
|
|
ptr4 = (orc_int8 *) ex->arrays[4];
|
|
ptr5 = (orc_int8 *) ex->arrays[5];
|
|
ptr6 = (orc_int8 *) ex->arrays[6];
|
|
ptr7 = (orc_int8 *) ex->arrays[7];
|
|
|
|
/* 2: loadpw */
|
|
var37.i = ex->params[24];
|
|
/* 6: loadpw */
|
|
var39.i = ex->params[25];
|
|
/* 11: loadpw */
|
|
var41.i = ex->params[26];
|
|
/* 16: loadpw */
|
|
var43.i = ex->params[27];
|
|
/* 19: loadpl */
|
|
var44.i = (int) 0x00000fff; /* 4095 or 2.0232e-320f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var36 = ptr4[i];
|
|
/* 1: convubw */
|
|
var46.i = (orc_uint8) var36;
|
|
/* 3: mulswl */
|
|
var47.i = var46.i * var37.i;
|
|
/* 4: loadb */
|
|
var38 = ptr5[i];
|
|
/* 5: convubw */
|
|
var48.i = (orc_uint8) var38;
|
|
/* 7: mulswl */
|
|
var49.i = var48.i * var39.i;
|
|
/* 8: addl */
|
|
var50.i = ((orc_uint32) var47.i) + ((orc_uint32) var49.i);
|
|
/* 9: loadb */
|
|
var40 = ptr6[i];
|
|
/* 10: convubw */
|
|
var51.i = (orc_uint8) var40;
|
|
/* 12: mulswl */
|
|
var52.i = var51.i * var41.i;
|
|
/* 13: addl */
|
|
var53.i = ((orc_uint32) var50.i) + ((orc_uint32) var52.i);
|
|
/* 14: loadb */
|
|
var42 = ptr7[i];
|
|
/* 15: convubw */
|
|
var54.i = (orc_uint8) var42;
|
|
/* 17: mulswl */
|
|
var55.i = var54.i * var43.i;
|
|
/* 18: addl */
|
|
var56.i = ((orc_uint32) var53.i) + ((orc_uint32) var55.i);
|
|
/* 20: addl */
|
|
var57.i = ((orc_uint32) var56.i) + ((orc_uint32) var44.i);
|
|
/* 21: shrsl */
|
|
var58.i = var57.i >> 12;
|
|
/* 22: convsuslw */
|
|
var59.i = ORC_CLAMP_UW (var58.i);
|
|
/* 23: convsuswb */
|
|
var45 = ORC_CLAMP_UB (var59.i);
|
|
/* 24: storeb */
|
|
ptr0[i] = var45;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_resample_v_4tap_u8 (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 p1,
|
|
int p2, int p3, int p4, 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, 114, 101, 115,
|
|
97, 109, 112, 108, 101, 95, 118, 95, 52, 116, 97, 112, 95, 117, 56, 11,
|
|
1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 14, 4,
|
|
255, 15, 0, 0, 14, 4, 12, 0, 0, 0, 16, 2, 16, 2, 16, 2,
|
|
16, 2, 20, 2, 20, 2, 20, 4, 20, 4, 150, 32, 4, 176, 34, 32,
|
|
24, 150, 33, 5, 176, 35, 33, 25, 103, 34, 34, 35, 150, 33, 6, 176,
|
|
35, 33, 26, 103, 34, 34, 35, 150, 33, 7, 176, 35, 33, 27, 103, 34,
|
|
34, 35, 103, 34, 34, 16, 125, 34, 34, 17, 166, 32, 34, 160, 0, 32,
|
|
2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_resample_v_4tap_u8);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_resample_v_4tap_u8");
|
|
orc_program_set_backup_function (p, _backup_video_orc_resample_v_4tap_u8);
|
|
orc_program_add_destination (p, 1, "d1");
|
|
orc_program_add_source (p, 1, "s1");
|
|
orc_program_add_source (p, 1, "s2");
|
|
orc_program_add_source (p, 1, "s3");
|
|
orc_program_add_source (p, 1, "s4");
|
|
orc_program_add_constant (p, 4, 0x00000fff, "c1");
|
|
orc_program_add_constant (p, 4, 0x0000000c, "c2");
|
|
orc_program_add_parameter (p, 2, "p1");
|
|
orc_program_add_parameter (p, 2, "p2");
|
|
orc_program_add_parameter (p, 2, "p3");
|
|
orc_program_add_parameter (p, 2, "p4");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 2, "t2");
|
|
orc_program_add_temporary (p, 4, "t3");
|
|
orc_program_add_temporary (p, 4, "t4");
|
|
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_P1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_P2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_P3,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S4, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_P4,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convsuslw", 0, ORC_VAR_T1, ORC_VAR_T3,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1,
|
|
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;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
ex->arrays[ORC_VAR_S3] = (void *) s3;
|
|
ex->arrays[ORC_VAR_S4] = (void *) s4;
|
|
ex->params[ORC_VAR_P1] = p1;
|
|
ex->params[ORC_VAR_P2] = p2;
|
|
ex->params[ORC_VAR_P3] = p3;
|
|
ex->params[ORC_VAR_P4] = p4;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_resample_h_multaps_u8 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_resample_h_multaps_u8 (gint32 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const gint16 * ORC_RESTRICT s2, int n)
|
|
{
|
|
int i;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_union16 *ORC_RESTRICT ptr5;
|
|
orc_int8 var33;
|
|
orc_union16 var34;
|
|
orc_union32 var35;
|
|
orc_union16 var36;
|
|
|
|
ptr0 = (orc_union32 *) d1;
|
|
ptr4 = (orc_int8 *) s1;
|
|
ptr5 = (orc_union16 *) s2;
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var33 = ptr4[i];
|
|
/* 1: convubw */
|
|
var36.i = (orc_uint8) var33;
|
|
/* 2: loadw */
|
|
var34 = ptr5[i];
|
|
/* 3: mulswl */
|
|
var35.i = var36.i * var34.i;
|
|
/* 4: storel */
|
|
ptr0[i] = var35;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_resample_h_multaps_u8 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_union16 *ORC_RESTRICT ptr5;
|
|
orc_int8 var33;
|
|
orc_union16 var34;
|
|
orc_union32 var35;
|
|
orc_union16 var36;
|
|
|
|
ptr0 = (orc_union32 *) ex->arrays[0];
|
|
ptr4 = (orc_int8 *) ex->arrays[4];
|
|
ptr5 = (orc_union16 *) ex->arrays[5];
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var33 = ptr4[i];
|
|
/* 1: convubw */
|
|
var36.i = (orc_uint8) var33;
|
|
/* 2: loadw */
|
|
var34 = ptr5[i];
|
|
/* 3: mulswl */
|
|
var35.i = var36.i * var34.i;
|
|
/* 4: storel */
|
|
ptr0[i] = var35;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_resample_h_multaps_u8 (gint32 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const gint16 * ORC_RESTRICT s2, 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, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
|
|
97, 109, 112, 108, 101, 95, 104, 95, 109, 117, 108, 116, 97, 112, 115,
|
|
95,
|
|
117, 56, 11, 4, 4, 12, 1, 1, 12, 2, 2, 20, 2, 150, 32, 4,
|
|
176, 0, 32, 5, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_h_multaps_u8);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_resample_h_multaps_u8");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_h_multaps_u8);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 1, "s1");
|
|
orc_program_add_source (p, 2, "s2");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulswl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S2,
|
|
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;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_resample_h_muladdtaps_u8 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_resample_h_muladdtaps_u8 (gint32 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride,
|
|
const gint16 * ORC_RESTRICT s2, int s2_stride, int n, int m)
|
|
{
|
|
int i;
|
|
int j;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_union16 *ORC_RESTRICT ptr5;
|
|
orc_int8 var34;
|
|
orc_union16 var35;
|
|
orc_union32 var36;
|
|
orc_union32 var37;
|
|
orc_union16 var38;
|
|
orc_union32 var39;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
|
|
ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
|
|
ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var34 = ptr4[i];
|
|
/* 1: convubw */
|
|
var38.i = (orc_uint8) var34;
|
|
/* 2: loadw */
|
|
var35 = ptr5[i];
|
|
/* 3: mulswl */
|
|
var39.i = var38.i * var35.i;
|
|
/* 4: loadl */
|
|
var36 = ptr0[i];
|
|
/* 5: addl */
|
|
var37.i = ((orc_uint32) var36.i) + ((orc_uint32) var39.i);
|
|
/* 6: storel */
|
|
ptr0[i] = var37;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_resample_h_muladdtaps_u8 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int j;
|
|
int n = ex->n;
|
|
int m = ex->params[ORC_VAR_A1];
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_union16 *ORC_RESTRICT ptr5;
|
|
orc_int8 var34;
|
|
orc_union16 var35;
|
|
orc_union32 var36;
|
|
orc_union32 var37;
|
|
orc_union16 var38;
|
|
orc_union32 var39;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
|
|
ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
|
|
ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var34 = ptr4[i];
|
|
/* 1: convubw */
|
|
var38.i = (orc_uint8) var34;
|
|
/* 2: loadw */
|
|
var35 = ptr5[i];
|
|
/* 3: mulswl */
|
|
var39.i = var38.i * var35.i;
|
|
/* 4: loadl */
|
|
var36 = ptr0[i];
|
|
/* 5: addl */
|
|
var37.i = ((orc_uint32) var36.i) + ((orc_uint32) var39.i);
|
|
/* 6: storel */
|
|
ptr0[i] = var37;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_resample_h_muladdtaps_u8 (gint32 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride,
|
|
const gint16 * ORC_RESTRICT s2, int s2_stride, int n, int m)
|
|
{
|
|
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, 7, 9, 34, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101,
|
|
115, 97, 109, 112, 108, 101, 95, 104, 95, 109, 117, 108, 97, 100, 100,
|
|
116,
|
|
97, 112, 115, 95, 117, 56, 11, 4, 4, 12, 1, 1, 12, 2, 2, 20,
|
|
2, 20, 4, 150, 32, 4, 176, 33, 32, 5, 103, 0, 0, 33, 2, 0,
|
|
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_h_muladdtaps_u8);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_2d (p);
|
|
orc_program_set_name (p, "video_orc_resample_h_muladdtaps_u8");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_h_muladdtaps_u8);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 1, "s1");
|
|
orc_program_add_source (p, 2, "s2");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 4, "t2");
|
|
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addl", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T2,
|
|
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;
|
|
ORC_EXECUTOR_M (ex) = m;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->params[ORC_VAR_D1] = d1_stride;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->params[ORC_VAR_S1] = s1_stride;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
ex->params[ORC_VAR_S2] = s2_stride;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_resample_scaletaps_u8 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_resample_scaletaps_u8 (guint8 * ORC_RESTRICT d1,
|
|
const gint32 * ORC_RESTRICT s1, int n)
|
|
{
|
|
int i;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var34;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union32 var35;
|
|
#else
|
|
orc_union32 var35;
|
|
#endif
|
|
orc_int8 var36;
|
|
orc_union32 var37;
|
|
orc_union32 var38;
|
|
orc_union16 var39;
|
|
|
|
ptr0 = (orc_int8 *) d1;
|
|
ptr4 = (orc_union32 *) s1;
|
|
|
|
/* 1: loadpl */
|
|
var35.i = (int) 0x00000fff; /* 4095 or 2.0232e-320f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var34 = ptr4[i];
|
|
/* 2: addl */
|
|
var37.i = ((orc_uint32) var34.i) + ((orc_uint32) var35.i);
|
|
/* 3: shrsl */
|
|
var38.i = var37.i >> 12;
|
|
/* 4: convsuslw */
|
|
var39.i = ORC_CLAMP_UW (var38.i);
|
|
/* 5: convsuswb */
|
|
var36 = ORC_CLAMP_UB (var39.i);
|
|
/* 6: storeb */
|
|
ptr0[i] = var36;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_resample_scaletaps_u8 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var34;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union32 var35;
|
|
#else
|
|
orc_union32 var35;
|
|
#endif
|
|
orc_int8 var36;
|
|
orc_union32 var37;
|
|
orc_union32 var38;
|
|
orc_union16 var39;
|
|
|
|
ptr0 = (orc_int8 *) ex->arrays[0];
|
|
ptr4 = (orc_union32 *) ex->arrays[4];
|
|
|
|
/* 1: loadpl */
|
|
var35.i = (int) 0x00000fff; /* 4095 or 2.0232e-320f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var34 = ptr4[i];
|
|
/* 2: addl */
|
|
var37.i = ((orc_uint32) var34.i) + ((orc_uint32) var35.i);
|
|
/* 3: shrsl */
|
|
var38.i = var37.i >> 12;
|
|
/* 4: convsuslw */
|
|
var39.i = ORC_CLAMP_UW (var38.i);
|
|
/* 5: convsuswb */
|
|
var36 = ORC_CLAMP_UB (var39.i);
|
|
/* 6: storeb */
|
|
ptr0[i] = var36;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_resample_scaletaps_u8 (guint8 * ORC_RESTRICT d1,
|
|
const gint32 * 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, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
|
|
97, 109, 112, 108, 101, 95, 115, 99, 97, 108, 101, 116, 97, 112, 115,
|
|
95,
|
|
117, 56, 11, 1, 1, 12, 4, 4, 14, 4, 255, 15, 0, 0, 14, 4,
|
|
12, 0, 0, 0, 20, 2, 20, 4, 103, 33, 4, 16, 125, 33, 33, 17,
|
|
166, 32, 33, 160, 0, 32, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_scaletaps_u8);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_resample_scaletaps_u8");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_scaletaps_u8);
|
|
orc_program_add_destination (p, 1, "d1");
|
|
orc_program_add_source (p, 4, "s1");
|
|
orc_program_add_constant (p, 4, 0x00000fff, "c1");
|
|
orc_program_add_constant (p, 4, 0x0000000c, "c2");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 4, "t2");
|
|
|
|
orc_program_append_2 (p, "addl", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_C1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convsuslw", 0, ORC_VAR_T1, ORC_VAR_T2,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1,
|
|
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_h_multaps_u8_lq */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_resample_h_multaps_u8_lq (gint16 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const gint16 * ORC_RESTRICT s2, int n)
|
|
{
|
|
int i;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_union16 *ORC_RESTRICT ptr5;
|
|
orc_int8 var33;
|
|
orc_union16 var34;
|
|
orc_union16 var35;
|
|
orc_union16 var36;
|
|
|
|
ptr0 = (orc_union16 *) d1;
|
|
ptr4 = (orc_int8 *) s1;
|
|
ptr5 = (orc_union16 *) s2;
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var33 = ptr4[i];
|
|
/* 1: convubw */
|
|
var36.i = (orc_uint8) var33;
|
|
/* 2: loadw */
|
|
var34 = ptr5[i];
|
|
/* 3: mullw */
|
|
var35.i = (var36.i * var34.i) & 0xffff;
|
|
/* 4: storew */
|
|
ptr0[i] = var35;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_resample_h_multaps_u8_lq (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_union16 *ORC_RESTRICT ptr5;
|
|
orc_int8 var33;
|
|
orc_union16 var34;
|
|
orc_union16 var35;
|
|
orc_union16 var36;
|
|
|
|
ptr0 = (orc_union16 *) ex->arrays[0];
|
|
ptr4 = (orc_int8 *) ex->arrays[4];
|
|
ptr5 = (orc_union16 *) ex->arrays[5];
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var33 = ptr4[i];
|
|
/* 1: convubw */
|
|
var36.i = (orc_uint8) var33;
|
|
/* 2: loadw */
|
|
var34 = ptr5[i];
|
|
/* 3: mullw */
|
|
var35.i = (var36.i * var34.i) & 0xffff;
|
|
/* 4: storew */
|
|
ptr0[i] = var35;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_resample_h_multaps_u8_lq (gint16 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const gint16 * ORC_RESTRICT s2, 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, 34, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
|
|
97, 109, 112, 108, 101, 95, 104, 95, 109, 117, 108, 116, 97, 112, 115,
|
|
95,
|
|
117, 56, 95, 108, 113, 11, 2, 2, 12, 1, 1, 12, 2, 2, 20, 2,
|
|
150, 32, 4, 89, 0, 32, 5, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_h_multaps_u8_lq);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_resample_h_multaps_u8_lq");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_h_multaps_u8_lq);
|
|
orc_program_add_destination (p, 2, "d1");
|
|
orc_program_add_source (p, 1, "s1");
|
|
orc_program_add_source (p, 2, "s2");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mullw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_S2,
|
|
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;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_resample_h_muladdtaps_u8_lq */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_resample_h_muladdtaps_u8_lq (gint16 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride,
|
|
const gint16 * ORC_RESTRICT s2, int s2_stride, int n, int m)
|
|
{
|
|
int i;
|
|
int j;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_union16 *ORC_RESTRICT ptr5;
|
|
orc_int8 var33;
|
|
orc_union16 var34;
|
|
orc_union16 var35;
|
|
orc_union16 var36;
|
|
orc_union16 var37;
|
|
orc_union16 var38;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
|
|
ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
|
|
ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var33 = ptr4[i];
|
|
/* 1: convubw */
|
|
var37.i = (orc_uint8) var33;
|
|
/* 2: loadw */
|
|
var34 = ptr5[i];
|
|
/* 3: mullw */
|
|
var38.i = (var37.i * var34.i) & 0xffff;
|
|
/* 4: loadw */
|
|
var35 = ptr0[i];
|
|
/* 5: addw */
|
|
var36.i = var35.i + var38.i;
|
|
/* 6: storew */
|
|
ptr0[i] = var36;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_resample_h_muladdtaps_u8_lq (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int j;
|
|
int n = ex->n;
|
|
int m = ex->params[ORC_VAR_A1];
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_union16 *ORC_RESTRICT ptr5;
|
|
orc_int8 var33;
|
|
orc_union16 var34;
|
|
orc_union16 var35;
|
|
orc_union16 var36;
|
|
orc_union16 var37;
|
|
orc_union16 var38;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
|
|
ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
|
|
ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var33 = ptr4[i];
|
|
/* 1: convubw */
|
|
var37.i = (orc_uint8) var33;
|
|
/* 2: loadw */
|
|
var34 = ptr5[i];
|
|
/* 3: mullw */
|
|
var38.i = (var37.i * var34.i) & 0xffff;
|
|
/* 4: loadw */
|
|
var35 = ptr0[i];
|
|
/* 5: addw */
|
|
var36.i = var35.i + var38.i;
|
|
/* 6: storew */
|
|
ptr0[i] = var36;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_resample_h_muladdtaps_u8_lq (gint16 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint8 * ORC_RESTRICT s1, int s1_stride,
|
|
const gint16 * ORC_RESTRICT s2, int s2_stride, int n, int m)
|
|
{
|
|
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, 7, 9, 37, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101,
|
|
115, 97, 109, 112, 108, 101, 95, 104, 95, 109, 117, 108, 97, 100, 100,
|
|
116,
|
|
97, 112, 115, 95, 117, 56, 95, 108, 113, 11, 2, 2, 12, 1, 1, 12,
|
|
2, 2, 20, 2, 150, 32, 4, 89, 32, 32, 5, 70, 0, 0, 32, 2,
|
|
0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_h_muladdtaps_u8_lq);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_2d (p);
|
|
orc_program_set_name (p, "video_orc_resample_h_muladdtaps_u8_lq");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_h_muladdtaps_u8_lq);
|
|
orc_program_add_destination (p, 2, "d1");
|
|
orc_program_add_source (p, 1, "s1");
|
|
orc_program_add_source (p, 2, "s2");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
#endif
|
|
|
|
orc_program_compile (p);
|
|
c = orc_program_take_code (p);
|
|
orc_program_free (p);
|
|
}
|
|
p_inited = TRUE;
|
|
orc_once_mutex_unlock ();
|
|
}
|
|
ex->arrays[ORC_VAR_A2] = c;
|
|
ex->program = 0;
|
|
|
|
ex->n = n;
|
|
ORC_EXECUTOR_M (ex) = m;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->params[ORC_VAR_D1] = d1_stride;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->params[ORC_VAR_S1] = s1_stride;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
ex->params[ORC_VAR_S2] = s2_stride;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_resample_h_multaps3_u8_lq */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_resample_h_multaps3_u8_lq (gint16 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
|
|
const guint8 * ORC_RESTRICT s3, const gint16 * ORC_RESTRICT s4,
|
|
const gint16 * ORC_RESTRICT s5, const gint16 * ORC_RESTRICT s6, int n)
|
|
{
|
|
int i;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
const orc_union16 *ORC_RESTRICT ptr7;
|
|
const orc_union16 *ORC_RESTRICT ptr8;
|
|
const orc_union16 *ORC_RESTRICT ptr9;
|
|
orc_int8 var34;
|
|
orc_union16 var35;
|
|
orc_int8 var36;
|
|
orc_union16 var37;
|
|
orc_int8 var38;
|
|
orc_union16 var39;
|
|
orc_union16 var40;
|
|
orc_union16 var41;
|
|
orc_union16 var42;
|
|
orc_union16 var43;
|
|
orc_union16 var44;
|
|
orc_union16 var45;
|
|
orc_union16 var46;
|
|
orc_union16 var47;
|
|
|
|
ptr0 = (orc_union16 *) d1;
|
|
ptr4 = (orc_int8 *) s1;
|
|
ptr5 = (orc_int8 *) s2;
|
|
ptr6 = (orc_int8 *) s3;
|
|
ptr7 = (orc_union16 *) s4;
|
|
ptr8 = (orc_union16 *) s5;
|
|
ptr9 = (orc_union16 *) s6;
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var34 = ptr4[i];
|
|
/* 1: convubw */
|
|
var41.i = (orc_uint8) var34;
|
|
/* 2: loadw */
|
|
var35 = ptr7[i];
|
|
/* 3: mullw */
|
|
var42.i = (var41.i * var35.i) & 0xffff;
|
|
/* 4: loadb */
|
|
var36 = ptr5[i];
|
|
/* 5: convubw */
|
|
var43.i = (orc_uint8) var36;
|
|
/* 6: loadw */
|
|
var37 = ptr8[i];
|
|
/* 7: mullw */
|
|
var44.i = (var43.i * var37.i) & 0xffff;
|
|
/* 8: addw */
|
|
var45.i = var42.i + var44.i;
|
|
/* 9: loadb */
|
|
var38 = ptr6[i];
|
|
/* 10: convubw */
|
|
var46.i = (orc_uint8) var38;
|
|
/* 11: loadw */
|
|
var39 = ptr9[i];
|
|
/* 12: mullw */
|
|
var47.i = (var46.i * var39.i) & 0xffff;
|
|
/* 13: addw */
|
|
var40.i = var45.i + var47.i;
|
|
/* 14: storew */
|
|
ptr0[i] = var40;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_resample_h_multaps3_u8_lq (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
const orc_union16 *ORC_RESTRICT ptr7;
|
|
const orc_union16 *ORC_RESTRICT ptr8;
|
|
const orc_union16 *ORC_RESTRICT ptr9;
|
|
orc_int8 var34;
|
|
orc_union16 var35;
|
|
orc_int8 var36;
|
|
orc_union16 var37;
|
|
orc_int8 var38;
|
|
orc_union16 var39;
|
|
orc_union16 var40;
|
|
orc_union16 var41;
|
|
orc_union16 var42;
|
|
orc_union16 var43;
|
|
orc_union16 var44;
|
|
orc_union16 var45;
|
|
orc_union16 var46;
|
|
orc_union16 var47;
|
|
|
|
ptr0 = (orc_union16 *) ex->arrays[0];
|
|
ptr4 = (orc_int8 *) ex->arrays[4];
|
|
ptr5 = (orc_int8 *) ex->arrays[5];
|
|
ptr6 = (orc_int8 *) ex->arrays[6];
|
|
ptr7 = (orc_union16 *) ex->arrays[7];
|
|
ptr8 = (orc_union16 *) ex->arrays[8];
|
|
ptr9 = (orc_union16 *) ex->arrays[9];
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var34 = ptr4[i];
|
|
/* 1: convubw */
|
|
var41.i = (orc_uint8) var34;
|
|
/* 2: loadw */
|
|
var35 = ptr7[i];
|
|
/* 3: mullw */
|
|
var42.i = (var41.i * var35.i) & 0xffff;
|
|
/* 4: loadb */
|
|
var36 = ptr5[i];
|
|
/* 5: convubw */
|
|
var43.i = (orc_uint8) var36;
|
|
/* 6: loadw */
|
|
var37 = ptr8[i];
|
|
/* 7: mullw */
|
|
var44.i = (var43.i * var37.i) & 0xffff;
|
|
/* 8: addw */
|
|
var45.i = var42.i + var44.i;
|
|
/* 9: loadb */
|
|
var38 = ptr6[i];
|
|
/* 10: convubw */
|
|
var46.i = (orc_uint8) var38;
|
|
/* 11: loadw */
|
|
var39 = ptr9[i];
|
|
/* 12: mullw */
|
|
var47.i = (var46.i * var39.i) & 0xffff;
|
|
/* 13: addw */
|
|
var40.i = var45.i + var47.i;
|
|
/* 14: storew */
|
|
ptr0[i] = var40;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_resample_h_multaps3_u8_lq (gint16 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
|
|
const guint8 * ORC_RESTRICT s3, const gint16 * ORC_RESTRICT s4,
|
|
const gint16 * ORC_RESTRICT s5, const gint16 * ORC_RESTRICT s6, 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, 35, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
|
|
97, 109, 112, 108, 101, 95, 104, 95, 109, 117, 108, 116, 97, 112, 115,
|
|
51,
|
|
95, 117, 56, 95, 108, 113, 11, 2, 2, 12, 1, 1, 12, 1, 1, 12,
|
|
1, 1, 12, 2, 2, 12, 2, 2, 12, 2, 2, 20, 2, 20, 2, 150,
|
|
32, 4, 89, 32, 32, 7, 150, 33, 5, 89, 33, 33, 8, 70, 32, 32,
|
|
33, 150, 33, 6, 89, 33, 33, 9, 70, 0, 32, 33, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_h_multaps3_u8_lq);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_resample_h_multaps3_u8_lq");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_h_multaps3_u8_lq);
|
|
orc_program_add_destination (p, 2, "d1");
|
|
orc_program_add_source (p, 1, "s1");
|
|
orc_program_add_source (p, 1, "s2");
|
|
orc_program_add_source (p, 1, "s3");
|
|
orc_program_add_source (p, 2, "s4");
|
|
orc_program_add_source (p, 2, "s5");
|
|
orc_program_add_source (p, 2, "s6");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 2, "t2");
|
|
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S4,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_S5,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_S6,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
|
|
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;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
ex->arrays[ORC_VAR_S3] = (void *) s3;
|
|
ex->arrays[ORC_VAR_S4] = (void *) s4;
|
|
ex->arrays[ORC_VAR_S5] = (void *) s5;
|
|
ex->arrays[ORC_VAR_S6] = (void *) s6;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_resample_h_muladdtaps3_u8_lq */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_resample_h_muladdtaps3_u8_lq (gint16 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
|
|
const guint8 * ORC_RESTRICT s3, const gint16 * ORC_RESTRICT s4,
|
|
const gint16 * ORC_RESTRICT s5, const gint16 * ORC_RESTRICT s6, int n)
|
|
{
|
|
int i;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
const orc_union16 *ORC_RESTRICT ptr7;
|
|
const orc_union16 *ORC_RESTRICT ptr8;
|
|
const orc_union16 *ORC_RESTRICT ptr9;
|
|
orc_int8 var34;
|
|
orc_union16 var35;
|
|
orc_int8 var36;
|
|
orc_union16 var37;
|
|
orc_int8 var38;
|
|
orc_union16 var39;
|
|
orc_union16 var40;
|
|
orc_union16 var41;
|
|
orc_union16 var42;
|
|
orc_union16 var43;
|
|
orc_union16 var44;
|
|
orc_union16 var45;
|
|
orc_union16 var46;
|
|
orc_union16 var47;
|
|
orc_union16 var48;
|
|
orc_union16 var49;
|
|
|
|
ptr0 = (orc_union16 *) d1;
|
|
ptr4 = (orc_int8 *) s1;
|
|
ptr5 = (orc_int8 *) s2;
|
|
ptr6 = (orc_int8 *) s3;
|
|
ptr7 = (orc_union16 *) s4;
|
|
ptr8 = (orc_union16 *) s5;
|
|
ptr9 = (orc_union16 *) s6;
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var34 = ptr4[i];
|
|
/* 1: convubw */
|
|
var42.i = (orc_uint8) var34;
|
|
/* 2: loadw */
|
|
var35 = ptr7[i];
|
|
/* 3: mullw */
|
|
var43.i = (var42.i * var35.i) & 0xffff;
|
|
/* 4: loadb */
|
|
var36 = ptr5[i];
|
|
/* 5: convubw */
|
|
var44.i = (orc_uint8) var36;
|
|
/* 6: loadw */
|
|
var37 = ptr8[i];
|
|
/* 7: mullw */
|
|
var45.i = (var44.i * var37.i) & 0xffff;
|
|
/* 8: addw */
|
|
var46.i = var43.i + var45.i;
|
|
/* 9: loadb */
|
|
var38 = ptr6[i];
|
|
/* 10: convubw */
|
|
var47.i = (orc_uint8) var38;
|
|
/* 11: loadw */
|
|
var39 = ptr9[i];
|
|
/* 12: mullw */
|
|
var48.i = (var47.i * var39.i) & 0xffff;
|
|
/* 13: addw */
|
|
var49.i = var46.i + var48.i;
|
|
/* 14: loadw */
|
|
var40 = ptr0[i];
|
|
/* 15: addw */
|
|
var41.i = var40.i + var49.i;
|
|
/* 16: storew */
|
|
ptr0[i] = var41;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_resample_h_muladdtaps3_u8_lq (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
const orc_union16 *ORC_RESTRICT ptr7;
|
|
const orc_union16 *ORC_RESTRICT ptr8;
|
|
const orc_union16 *ORC_RESTRICT ptr9;
|
|
orc_int8 var34;
|
|
orc_union16 var35;
|
|
orc_int8 var36;
|
|
orc_union16 var37;
|
|
orc_int8 var38;
|
|
orc_union16 var39;
|
|
orc_union16 var40;
|
|
orc_union16 var41;
|
|
orc_union16 var42;
|
|
orc_union16 var43;
|
|
orc_union16 var44;
|
|
orc_union16 var45;
|
|
orc_union16 var46;
|
|
orc_union16 var47;
|
|
orc_union16 var48;
|
|
orc_union16 var49;
|
|
|
|
ptr0 = (orc_union16 *) ex->arrays[0];
|
|
ptr4 = (orc_int8 *) ex->arrays[4];
|
|
ptr5 = (orc_int8 *) ex->arrays[5];
|
|
ptr6 = (orc_int8 *) ex->arrays[6];
|
|
ptr7 = (orc_union16 *) ex->arrays[7];
|
|
ptr8 = (orc_union16 *) ex->arrays[8];
|
|
ptr9 = (orc_union16 *) ex->arrays[9];
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var34 = ptr4[i];
|
|
/* 1: convubw */
|
|
var42.i = (orc_uint8) var34;
|
|
/* 2: loadw */
|
|
var35 = ptr7[i];
|
|
/* 3: mullw */
|
|
var43.i = (var42.i * var35.i) & 0xffff;
|
|
/* 4: loadb */
|
|
var36 = ptr5[i];
|
|
/* 5: convubw */
|
|
var44.i = (orc_uint8) var36;
|
|
/* 6: loadw */
|
|
var37 = ptr8[i];
|
|
/* 7: mullw */
|
|
var45.i = (var44.i * var37.i) & 0xffff;
|
|
/* 8: addw */
|
|
var46.i = var43.i + var45.i;
|
|
/* 9: loadb */
|
|
var38 = ptr6[i];
|
|
/* 10: convubw */
|
|
var47.i = (orc_uint8) var38;
|
|
/* 11: loadw */
|
|
var39 = ptr9[i];
|
|
/* 12: mullw */
|
|
var48.i = (var47.i * var39.i) & 0xffff;
|
|
/* 13: addw */
|
|
var49.i = var46.i + var48.i;
|
|
/* 14: loadw */
|
|
var40 = ptr0[i];
|
|
/* 15: addw */
|
|
var41.i = var40.i + var49.i;
|
|
/* 16: storew */
|
|
ptr0[i] = var41;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_resample_h_muladdtaps3_u8_lq (gint16 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
|
|
const guint8 * ORC_RESTRICT s3, const gint16 * ORC_RESTRICT s4,
|
|
const gint16 * ORC_RESTRICT s5, const gint16 * ORC_RESTRICT s6, 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, 38, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
|
|
97, 109, 112, 108, 101, 95, 104, 95, 109, 117, 108, 97, 100, 100, 116,
|
|
97,
|
|
112, 115, 51, 95, 117, 56, 95, 108, 113, 11, 2, 2, 12, 1, 1, 12,
|
|
1, 1, 12, 1, 1, 12, 2, 2, 12, 2, 2, 12, 2, 2, 20, 2,
|
|
20, 2, 150, 32, 4, 89, 32, 32, 7, 150, 33, 5, 89, 33, 33, 8,
|
|
70, 32, 32, 33, 150, 33, 6, 89, 33, 33, 9, 70, 32, 32, 33, 70,
|
|
0, 0, 32, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_h_muladdtaps3_u8_lq);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_resample_h_muladdtaps3_u8_lq");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_h_muladdtaps3_u8_lq);
|
|
orc_program_add_destination (p, 2, "d1");
|
|
orc_program_add_source (p, 1, "s1");
|
|
orc_program_add_source (p, 1, "s2");
|
|
orc_program_add_source (p, 1, "s3");
|
|
orc_program_add_source (p, 2, "s4");
|
|
orc_program_add_source (p, 2, "s5");
|
|
orc_program_add_source (p, 2, "s6");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 2, "t2");
|
|
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S4,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_S5,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_S6,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
#endif
|
|
|
|
orc_program_compile (p);
|
|
c = orc_program_take_code (p);
|
|
orc_program_free (p);
|
|
}
|
|
p_inited = TRUE;
|
|
orc_once_mutex_unlock ();
|
|
}
|
|
ex->arrays[ORC_VAR_A2] = c;
|
|
ex->program = 0;
|
|
|
|
ex->n = n;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
ex->arrays[ORC_VAR_S3] = (void *) s3;
|
|
ex->arrays[ORC_VAR_S4] = (void *) s4;
|
|
ex->arrays[ORC_VAR_S5] = (void *) s5;
|
|
ex->arrays[ORC_VAR_S6] = (void *) s6;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_resample_h_muladdscaletaps3_u8_lq */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_resample_h_muladdscaletaps3_u8_lq (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
|
|
const guint8 * ORC_RESTRICT s3, const gint16 * ORC_RESTRICT s4,
|
|
const gint16 * ORC_RESTRICT s5, const gint16 * ORC_RESTRICT s6,
|
|
const gint16 * ORC_RESTRICT s7, int n)
|
|
{
|
|
int i;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
const orc_union16 *ORC_RESTRICT ptr7;
|
|
const orc_union16 *ORC_RESTRICT ptr8;
|
|
const orc_union16 *ORC_RESTRICT ptr9;
|
|
const orc_union16 *ORC_RESTRICT ptr10;
|
|
orc_int8 var34;
|
|
orc_union16 var35;
|
|
orc_int8 var36;
|
|
orc_union16 var37;
|
|
orc_int8 var38;
|
|
orc_union16 var39;
|
|
orc_union16 var40;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union16 var41;
|
|
#else
|
|
orc_union16 var41;
|
|
#endif
|
|
orc_int8 var42;
|
|
orc_union16 var43;
|
|
orc_union16 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_union16 var53;
|
|
|
|
ptr0 = (orc_int8 *) d1;
|
|
ptr4 = (orc_int8 *) s1;
|
|
ptr5 = (orc_int8 *) s2;
|
|
ptr6 = (orc_int8 *) s3;
|
|
ptr7 = (orc_union16 *) s4;
|
|
ptr8 = (orc_union16 *) s5;
|
|
ptr9 = (orc_union16 *) s6;
|
|
ptr10 = (orc_union16 *) s7;
|
|
|
|
/* 16: loadpw */
|
|
var41.i = (int) 0x00000020; /* 32 or 1.58101e-322f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var34 = ptr4[i];
|
|
/* 1: convubw */
|
|
var43.i = (orc_uint8) var34;
|
|
/* 2: loadw */
|
|
var35 = ptr7[i];
|
|
/* 3: mullw */
|
|
var44.i = (var43.i * var35.i) & 0xffff;
|
|
/* 4: loadb */
|
|
var36 = ptr5[i];
|
|
/* 5: convubw */
|
|
var45.i = (orc_uint8) var36;
|
|
/* 6: loadw */
|
|
var37 = ptr8[i];
|
|
/* 7: mullw */
|
|
var46.i = (var45.i * var37.i) & 0xffff;
|
|
/* 8: addw */
|
|
var47.i = var44.i + var46.i;
|
|
/* 9: loadb */
|
|
var38 = ptr6[i];
|
|
/* 10: convubw */
|
|
var48.i = (orc_uint8) var38;
|
|
/* 11: loadw */
|
|
var39 = ptr9[i];
|
|
/* 12: mullw */
|
|
var49.i = (var48.i * var39.i) & 0xffff;
|
|
/* 13: addw */
|
|
var50.i = var47.i + var49.i;
|
|
/* 14: loadw */
|
|
var40 = ptr10[i];
|
|
/* 15: addw */
|
|
var51.i = var50.i + var40.i;
|
|
/* 17: addw */
|
|
var52.i = var51.i + var41.i;
|
|
/* 18: shrsw */
|
|
var53.i = var52.i >> 6;
|
|
/* 19: convsuswb */
|
|
var42 = ORC_CLAMP_UB (var53.i);
|
|
/* 20: storeb */
|
|
ptr0[i] = var42;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_resample_h_muladdscaletaps3_u8_lq (OrcExecutor *
|
|
ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
const orc_union16 *ORC_RESTRICT ptr7;
|
|
const orc_union16 *ORC_RESTRICT ptr8;
|
|
const orc_union16 *ORC_RESTRICT ptr9;
|
|
const orc_union16 *ORC_RESTRICT ptr10;
|
|
orc_int8 var34;
|
|
orc_union16 var35;
|
|
orc_int8 var36;
|
|
orc_union16 var37;
|
|
orc_int8 var38;
|
|
orc_union16 var39;
|
|
orc_union16 var40;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union16 var41;
|
|
#else
|
|
orc_union16 var41;
|
|
#endif
|
|
orc_int8 var42;
|
|
orc_union16 var43;
|
|
orc_union16 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_union16 var53;
|
|
|
|
ptr0 = (orc_int8 *) ex->arrays[0];
|
|
ptr4 = (orc_int8 *) ex->arrays[4];
|
|
ptr5 = (orc_int8 *) ex->arrays[5];
|
|
ptr6 = (orc_int8 *) ex->arrays[6];
|
|
ptr7 = (orc_union16 *) ex->arrays[7];
|
|
ptr8 = (orc_union16 *) ex->arrays[8];
|
|
ptr9 = (orc_union16 *) ex->arrays[9];
|
|
ptr10 = (orc_union16 *) ex->arrays[10];
|
|
|
|
/* 16: loadpw */
|
|
var41.i = (int) 0x00000020; /* 32 or 1.58101e-322f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var34 = ptr4[i];
|
|
/* 1: convubw */
|
|
var43.i = (orc_uint8) var34;
|
|
/* 2: loadw */
|
|
var35 = ptr7[i];
|
|
/* 3: mullw */
|
|
var44.i = (var43.i * var35.i) & 0xffff;
|
|
/* 4: loadb */
|
|
var36 = ptr5[i];
|
|
/* 5: convubw */
|
|
var45.i = (orc_uint8) var36;
|
|
/* 6: loadw */
|
|
var37 = ptr8[i];
|
|
/* 7: mullw */
|
|
var46.i = (var45.i * var37.i) & 0xffff;
|
|
/* 8: addw */
|
|
var47.i = var44.i + var46.i;
|
|
/* 9: loadb */
|
|
var38 = ptr6[i];
|
|
/* 10: convubw */
|
|
var48.i = (orc_uint8) var38;
|
|
/* 11: loadw */
|
|
var39 = ptr9[i];
|
|
/* 12: mullw */
|
|
var49.i = (var48.i * var39.i) & 0xffff;
|
|
/* 13: addw */
|
|
var50.i = var47.i + var49.i;
|
|
/* 14: loadw */
|
|
var40 = ptr10[i];
|
|
/* 15: addw */
|
|
var51.i = var50.i + var40.i;
|
|
/* 17: addw */
|
|
var52.i = var51.i + var41.i;
|
|
/* 18: shrsw */
|
|
var53.i = var52.i >> 6;
|
|
/* 19: convsuswb */
|
|
var42 = ORC_CLAMP_UB (var53.i);
|
|
/* 20: storeb */
|
|
ptr0[i] = var42;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_resample_h_muladdscaletaps3_u8_lq (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
|
|
const guint8 * ORC_RESTRICT s3, const gint16 * ORC_RESTRICT s4,
|
|
const gint16 * ORC_RESTRICT s5, const gint16 * ORC_RESTRICT s6,
|
|
const gint16 * ORC_RESTRICT s7, 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, 43, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
|
|
97, 109, 112, 108, 101, 95, 104, 95, 109, 117, 108, 97, 100, 100, 115,
|
|
99,
|
|
97, 108, 101, 116, 97, 112, 115, 51, 95, 117, 56, 95, 108, 113, 11, 1,
|
|
1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 2, 2, 12, 2, 2,
|
|
12, 2, 2, 12, 2, 2, 14, 2, 32, 0, 0, 0, 14, 2, 6, 0,
|
|
0, 0, 20, 2, 20, 2, 150, 32, 4, 89, 32, 32, 7, 150, 33, 5,
|
|
89, 33, 33, 8, 70, 32, 32, 33, 150, 33, 6, 89, 33, 33, 9, 70,
|
|
32, 32, 33, 70, 32, 32, 10, 70, 32, 32, 16, 94, 32, 32, 17, 160,
|
|
0, 32, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_h_muladdscaletaps3_u8_lq);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_resample_h_muladdscaletaps3_u8_lq");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_h_muladdscaletaps3_u8_lq);
|
|
orc_program_add_destination (p, 1, "d1");
|
|
orc_program_add_source (p, 1, "s1");
|
|
orc_program_add_source (p, 1, "s2");
|
|
orc_program_add_source (p, 1, "s3");
|
|
orc_program_add_source (p, 2, "s4");
|
|
orc_program_add_source (p, 2, "s5");
|
|
orc_program_add_source (p, 2, "s6");
|
|
orc_program_add_source (p, 2, "s7");
|
|
orc_program_add_constant (p, 2, 0x00000020, "c1");
|
|
orc_program_add_constant (p, 2, 0x00000006, "c2");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 2, "t2");
|
|
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S4,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_S5,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_S6,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S7,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1,
|
|
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;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
ex->arrays[ORC_VAR_S3] = (void *) s3;
|
|
ex->arrays[ORC_VAR_S4] = (void *) s4;
|
|
ex->arrays[ORC_VAR_S5] = (void *) s5;
|
|
ex->arrays[ORC_VAR_S6] = (void *) s6;
|
|
ex->arrays[ORC_VAR_S7] = (void *) s7;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_resample_scaletaps_u8_lq */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_resample_scaletaps_u8_lq (guint8 * ORC_RESTRICT d1,
|
|
const gint16 * ORC_RESTRICT s1, int n)
|
|
{
|
|
int i;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
const orc_union16 *ORC_RESTRICT ptr4;
|
|
orc_union16 var33;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union16 var34;
|
|
#else
|
|
orc_union16 var34;
|
|
#endif
|
|
orc_int8 var35;
|
|
orc_union16 var36;
|
|
orc_union16 var37;
|
|
|
|
ptr0 = (orc_int8 *) d1;
|
|
ptr4 = (orc_union16 *) s1;
|
|
|
|
/* 1: loadpw */
|
|
var34.i = (int) 0x00000020; /* 32 or 1.58101e-322f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadw */
|
|
var33 = ptr4[i];
|
|
/* 2: addw */
|
|
var36.i = var33.i + var34.i;
|
|
/* 3: shrsw */
|
|
var37.i = var36.i >> 6;
|
|
/* 4: convsuswb */
|
|
var35 = ORC_CLAMP_UB (var37.i);
|
|
/* 5: storeb */
|
|
ptr0[i] = var35;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_resample_scaletaps_u8_lq (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
const orc_union16 *ORC_RESTRICT ptr4;
|
|
orc_union16 var33;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union16 var34;
|
|
#else
|
|
orc_union16 var34;
|
|
#endif
|
|
orc_int8 var35;
|
|
orc_union16 var36;
|
|
orc_union16 var37;
|
|
|
|
ptr0 = (orc_int8 *) ex->arrays[0];
|
|
ptr4 = (orc_union16 *) ex->arrays[4];
|
|
|
|
/* 1: loadpw */
|
|
var34.i = (int) 0x00000020; /* 32 or 1.58101e-322f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadw */
|
|
var33 = ptr4[i];
|
|
/* 2: addw */
|
|
var36.i = var33.i + var34.i;
|
|
/* 3: shrsw */
|
|
var37.i = var36.i >> 6;
|
|
/* 4: convsuswb */
|
|
var35 = ORC_CLAMP_UB (var37.i);
|
|
/* 5: storeb */
|
|
ptr0[i] = var35;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_resample_scaletaps_u8_lq (guint8 * ORC_RESTRICT d1,
|
|
const gint16 * 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, 34, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
|
|
97, 109, 112, 108, 101, 95, 115, 99, 97, 108, 101, 116, 97, 112, 115,
|
|
95,
|
|
117, 56, 95, 108, 113, 11, 1, 1, 12, 2, 2, 14, 2, 32, 0, 0,
|
|
0, 14, 2, 6, 0, 0, 0, 20, 2, 70, 32, 4, 16, 94, 32, 32,
|
|
17, 160, 0, 32, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_scaletaps_u8_lq);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_resample_scaletaps_u8_lq");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_scaletaps_u8_lq);
|
|
orc_program_add_destination (p, 1, "d1");
|
|
orc_program_add_source (p, 2, "s1");
|
|
orc_program_add_constant (p, 2, 0x00000020, "c1");
|
|
orc_program_add_constant (p, 2, 0x00000006, "c2");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1,
|
|
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_h_multaps_u16 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_resample_h_multaps_u16 (gint32 * ORC_RESTRICT d1,
|
|
const guint16 * ORC_RESTRICT s1, const gint16 * ORC_RESTRICT s2, int n)
|
|
{
|
|
int i;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union16 *ORC_RESTRICT ptr4;
|
|
const orc_union16 *ORC_RESTRICT ptr5;
|
|
orc_union16 var34;
|
|
orc_union16 var35;
|
|
orc_union32 var36;
|
|
orc_union32 var37;
|
|
orc_union32 var38;
|
|
|
|
ptr0 = (orc_union32 *) d1;
|
|
ptr4 = (orc_union16 *) s1;
|
|
ptr5 = (orc_union16 *) s2;
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadw */
|
|
var34 = ptr4[i];
|
|
/* 1: convuwl */
|
|
var37.i = (orc_uint16) var34.i;
|
|
/* 2: loadw */
|
|
var35 = ptr5[i];
|
|
/* 3: convswl */
|
|
var38.i = var35.i;
|
|
/* 4: mulll */
|
|
var36.i = (((orc_uint32) var37.i) * ((orc_uint32) var38.i)) & 0xffffffff;
|
|
/* 5: storel */
|
|
ptr0[i] = var36;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_resample_h_multaps_u16 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union16 *ORC_RESTRICT ptr4;
|
|
const orc_union16 *ORC_RESTRICT ptr5;
|
|
orc_union16 var34;
|
|
orc_union16 var35;
|
|
orc_union32 var36;
|
|
orc_union32 var37;
|
|
orc_union32 var38;
|
|
|
|
ptr0 = (orc_union32 *) ex->arrays[0];
|
|
ptr4 = (orc_union16 *) ex->arrays[4];
|
|
ptr5 = (orc_union16 *) ex->arrays[5];
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadw */
|
|
var34 = ptr4[i];
|
|
/* 1: convuwl */
|
|
var37.i = (orc_uint16) var34.i;
|
|
/* 2: loadw */
|
|
var35 = ptr5[i];
|
|
/* 3: convswl */
|
|
var38.i = var35.i;
|
|
/* 4: mulll */
|
|
var36.i = (((orc_uint32) var37.i) * ((orc_uint32) var38.i)) & 0xffffffff;
|
|
/* 5: storel */
|
|
ptr0[i] = var36;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_resample_h_multaps_u16 (gint32 * ORC_RESTRICT d1,
|
|
const guint16 * ORC_RESTRICT s1, const gint16 * ORC_RESTRICT s2, 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, 32, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
|
|
97, 109, 112, 108, 101, 95, 104, 95, 109, 117, 108, 116, 97, 112, 115,
|
|
95,
|
|
117, 49, 54, 11, 4, 4, 12, 2, 2, 12, 2, 2, 20, 4, 20, 4,
|
|
154, 32, 4, 153, 33, 5, 120, 0, 32, 33, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_h_multaps_u16);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_resample_h_multaps_u16");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_h_multaps_u16);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 2, "s1");
|
|
orc_program_add_source (p, 2, "s2");
|
|
orc_program_add_temporary (p, 4, "t1");
|
|
orc_program_add_temporary (p, 4, "t2");
|
|
|
|
orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convswl", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulll", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
|
|
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;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_resample_h_muladdtaps_u16 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_resample_h_muladdtaps_u16 (gint32 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint16 * ORC_RESTRICT s1, int s1_stride,
|
|
const gint16 * ORC_RESTRICT s2, int s2_stride, int n, int m)
|
|
{
|
|
int i;
|
|
int j;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union16 *ORC_RESTRICT ptr4;
|
|
const orc_union16 *ORC_RESTRICT ptr5;
|
|
orc_union16 var34;
|
|
orc_union16 var35;
|
|
orc_union32 var36;
|
|
orc_union32 var37;
|
|
orc_union32 var38;
|
|
orc_union32 var39;
|
|
orc_union32 var40;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j);
|
|
ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
|
|
ptr5 = ORC_PTR_OFFSET (s2, s2_stride * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadw */
|
|
var34 = ptr4[i];
|
|
/* 1: convuwl */
|
|
var38.i = (orc_uint16) var34.i;
|
|
/* 2: loadw */
|
|
var35 = ptr5[i];
|
|
/* 3: convswl */
|
|
var39.i = var35.i;
|
|
/* 4: mulll */
|
|
var40.i = (((orc_uint32) var38.i) * ((orc_uint32) var39.i)) & 0xffffffff;
|
|
/* 5: loadl */
|
|
var36 = ptr0[i];
|
|
/* 6: addl */
|
|
var37.i = ((orc_uint32) var36.i) + ((orc_uint32) var40.i);
|
|
/* 7: storel */
|
|
ptr0[i] = var37;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_resample_h_muladdtaps_u16 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int j;
|
|
int n = ex->n;
|
|
int m = ex->params[ORC_VAR_A1];
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union16 *ORC_RESTRICT ptr4;
|
|
const orc_union16 *ORC_RESTRICT ptr5;
|
|
orc_union16 var34;
|
|
orc_union16 var35;
|
|
orc_union32 var36;
|
|
orc_union32 var37;
|
|
orc_union32 var38;
|
|
orc_union32 var39;
|
|
orc_union32 var40;
|
|
|
|
for (j = 0; j < m; j++) {
|
|
ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j);
|
|
ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
|
|
ptr5 = ORC_PTR_OFFSET (ex->arrays[5], ex->params[5] * j);
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadw */
|
|
var34 = ptr4[i];
|
|
/* 1: convuwl */
|
|
var38.i = (orc_uint16) var34.i;
|
|
/* 2: loadw */
|
|
var35 = ptr5[i];
|
|
/* 3: convswl */
|
|
var39.i = var35.i;
|
|
/* 4: mulll */
|
|
var40.i = (((orc_uint32) var38.i) * ((orc_uint32) var39.i)) & 0xffffffff;
|
|
/* 5: loadl */
|
|
var36 = ptr0[i];
|
|
/* 6: addl */
|
|
var37.i = ((orc_uint32) var36.i) + ((orc_uint32) var40.i);
|
|
/* 7: storel */
|
|
ptr0[i] = var37;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_resample_h_muladdtaps_u16 (gint32 * ORC_RESTRICT d1, int d1_stride,
|
|
const guint16 * ORC_RESTRICT s1, int s1_stride,
|
|
const gint16 * ORC_RESTRICT s2, int s2_stride, int n, int m)
|
|
{
|
|
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, 7, 9, 35, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101,
|
|
115, 97, 109, 112, 108, 101, 95, 104, 95, 109, 117, 108, 97, 100, 100,
|
|
116,
|
|
97, 112, 115, 95, 117, 49, 54, 11, 4, 4, 12, 2, 2, 12, 2, 2,
|
|
20, 4, 20, 4, 154, 32, 4, 153, 33, 5, 120, 32, 32, 33, 103, 0,
|
|
0, 32, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_h_muladdtaps_u16);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_2d (p);
|
|
orc_program_set_name (p, "video_orc_resample_h_muladdtaps_u16");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_h_muladdtaps_u16);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 2, "s1");
|
|
orc_program_add_source (p, 2, "s2");
|
|
orc_program_add_temporary (p, 4, "t1");
|
|
orc_program_add_temporary (p, 4, "t2");
|
|
|
|
orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convswl", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addl", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
#endif
|
|
|
|
orc_program_compile (p);
|
|
c = orc_program_take_code (p);
|
|
orc_program_free (p);
|
|
}
|
|
p_inited = TRUE;
|
|
orc_once_mutex_unlock ();
|
|
}
|
|
ex->arrays[ORC_VAR_A2] = c;
|
|
ex->program = 0;
|
|
|
|
ex->n = n;
|
|
ORC_EXECUTOR_M (ex) = m;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->params[ORC_VAR_D1] = d1_stride;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->params[ORC_VAR_S1] = s1_stride;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
ex->params[ORC_VAR_S2] = s2_stride;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_resample_scaletaps_u16 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_resample_scaletaps_u16 (guint16 * ORC_RESTRICT d1,
|
|
const gint32 * ORC_RESTRICT s1, int n)
|
|
{
|
|
int i;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var33;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union32 var34;
|
|
#else
|
|
orc_union32 var34;
|
|
#endif
|
|
orc_union16 var35;
|
|
orc_union32 var36;
|
|
orc_union32 var37;
|
|
|
|
ptr0 = (orc_union16 *) d1;
|
|
ptr4 = (orc_union32 *) s1;
|
|
|
|
/* 1: loadpl */
|
|
var34.i = (int) 0x00000fff; /* 4095 or 2.0232e-320f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var33 = ptr4[i];
|
|
/* 2: addl */
|
|
var36.i = ((orc_uint32) var33.i) + ((orc_uint32) var34.i);
|
|
/* 3: shrsl */
|
|
var37.i = var36.i >> 12;
|
|
/* 4: convsuslw */
|
|
var35.i = ORC_CLAMP_UW (var37.i);
|
|
/* 5: storew */
|
|
ptr0[i] = var35;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_resample_scaletaps_u16 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
orc_union32 var33;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union32 var34;
|
|
#else
|
|
orc_union32 var34;
|
|
#endif
|
|
orc_union16 var35;
|
|
orc_union32 var36;
|
|
orc_union32 var37;
|
|
|
|
ptr0 = (orc_union16 *) ex->arrays[0];
|
|
ptr4 = (orc_union32 *) ex->arrays[4];
|
|
|
|
/* 1: loadpl */
|
|
var34.i = (int) 0x00000fff; /* 4095 or 2.0232e-320f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var33 = ptr4[i];
|
|
/* 2: addl */
|
|
var36.i = ((orc_uint32) var33.i) + ((orc_uint32) var34.i);
|
|
/* 3: shrsl */
|
|
var37.i = var36.i >> 12;
|
|
/* 4: convsuslw */
|
|
var35.i = ORC_CLAMP_UW (var37.i);
|
|
/* 5: storew */
|
|
ptr0[i] = var35;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_resample_scaletaps_u16 (guint16 * ORC_RESTRICT d1,
|
|
const gint32 * 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, 32, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
|
|
97, 109, 112, 108, 101, 95, 115, 99, 97, 108, 101, 116, 97, 112, 115,
|
|
95,
|
|
117, 49, 54, 11, 2, 2, 12, 4, 4, 14, 4, 255, 15, 0, 0, 14,
|
|
4, 12, 0, 0, 0, 20, 4, 103, 32, 4, 16, 125, 32, 32, 17, 166,
|
|
0, 32, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_scaletaps_u16);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_resample_scaletaps_u16");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_scaletaps_u16);
|
|
orc_program_add_destination (p, 2, "d1");
|
|
orc_program_add_source (p, 4, "s1");
|
|
orc_program_add_constant (p, 4, 0x00000fff, "c1");
|
|
orc_program_add_constant (p, 4, 0x0000000c, "c2");
|
|
orc_program_add_temporary (p, 4, "t1");
|
|
|
|
orc_program_append_2 (p, "addl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_C1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "shrsl", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convsuslw", 0, ORC_VAR_D1, ORC_VAR_T1,
|
|
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_v_multaps_u8 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_resample_v_multaps_u8 (gint32 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int p1, int n)
|
|
{
|
|
int i;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
orc_int8 var33;
|
|
orc_union16 var34;
|
|
orc_union32 var35;
|
|
orc_union16 var36;
|
|
|
|
ptr0 = (orc_union32 *) d1;
|
|
ptr4 = (orc_int8 *) s1;
|
|
|
|
/* 2: loadpw */
|
|
var34.i = p1;
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var33 = ptr4[i];
|
|
/* 1: convubw */
|
|
var36.i = (orc_uint8) var33;
|
|
/* 3: mulswl */
|
|
var35.i = var36.i * var34.i;
|
|
/* 4: storel */
|
|
ptr0[i] = var35;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_resample_v_multaps_u8 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
orc_int8 var33;
|
|
orc_union16 var34;
|
|
orc_union32 var35;
|
|
orc_union16 var36;
|
|
|
|
ptr0 = (orc_union32 *) ex->arrays[0];
|
|
ptr4 = (orc_int8 *) ex->arrays[4];
|
|
|
|
/* 2: loadpw */
|
|
var34.i = ex->params[24];
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var33 = ptr4[i];
|
|
/* 1: convubw */
|
|
var36.i = (orc_uint8) var33;
|
|
/* 3: mulswl */
|
|
var35.i = var36.i * var34.i;
|
|
/* 4: storel */
|
|
ptr0[i] = var35;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_resample_v_multaps_u8 (gint32 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int p1, 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, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
|
|
97, 109, 112, 108, 101, 95, 118, 95, 109, 117, 108, 116, 97, 112, 115,
|
|
95,
|
|
117, 56, 11, 4, 4, 12, 1, 1, 16, 2, 20, 2, 150, 32, 4, 176,
|
|
0, 32, 24, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_v_multaps_u8);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_resample_v_multaps_u8");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_v_multaps_u8);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 1, "s1");
|
|
orc_program_add_parameter (p, 2, "p1");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulswl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_P1,
|
|
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;
|
|
ex->params[ORC_VAR_P1] = p1;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_resample_v_muladdtaps_u8 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_resample_v_muladdtaps_u8 (gint32 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int p1, int n)
|
|
{
|
|
int i;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
orc_int8 var34;
|
|
orc_union16 var35;
|
|
orc_union32 var36;
|
|
orc_union32 var37;
|
|
orc_union16 var38;
|
|
orc_union32 var39;
|
|
|
|
ptr0 = (orc_union32 *) d1;
|
|
ptr4 = (orc_int8 *) s1;
|
|
|
|
/* 2: loadpw */
|
|
var35.i = p1;
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var34 = ptr4[i];
|
|
/* 1: convubw */
|
|
var38.i = (orc_uint8) var34;
|
|
/* 3: mulswl */
|
|
var39.i = var38.i * var35.i;
|
|
/* 4: loadl */
|
|
var36 = ptr0[i];
|
|
/* 5: addl */
|
|
var37.i = ((orc_uint32) var36.i) + ((orc_uint32) var39.i);
|
|
/* 6: storel */
|
|
ptr0[i] = var37;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_resample_v_muladdtaps_u8 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
orc_int8 var34;
|
|
orc_union16 var35;
|
|
orc_union32 var36;
|
|
orc_union32 var37;
|
|
orc_union16 var38;
|
|
orc_union32 var39;
|
|
|
|
ptr0 = (orc_union32 *) ex->arrays[0];
|
|
ptr4 = (orc_int8 *) ex->arrays[4];
|
|
|
|
/* 2: loadpw */
|
|
var35.i = ex->params[24];
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var34 = ptr4[i];
|
|
/* 1: convubw */
|
|
var38.i = (orc_uint8) var34;
|
|
/* 3: mulswl */
|
|
var39.i = var38.i * var35.i;
|
|
/* 4: loadl */
|
|
var36 = ptr0[i];
|
|
/* 5: addl */
|
|
var37.i = ((orc_uint32) var36.i) + ((orc_uint32) var39.i);
|
|
/* 6: storel */
|
|
ptr0[i] = var37;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_resample_v_muladdtaps_u8 (gint32 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int p1, 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, 34, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
|
|
97, 109, 112, 108, 101, 95, 118, 95, 109, 117, 108, 97, 100, 100, 116,
|
|
97,
|
|
112, 115, 95, 117, 56, 11, 4, 4, 12, 1, 1, 16, 2, 20, 2, 20,
|
|
4, 150, 32, 4, 176, 33, 32, 24, 103, 0, 0, 33, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_v_muladdtaps_u8);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_resample_v_muladdtaps_u8");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_v_muladdtaps_u8);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 1, "s1");
|
|
orc_program_add_parameter (p, 2, "p1");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 4, "t2");
|
|
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulswl", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_P1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addl", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T2,
|
|
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;
|
|
ex->params[ORC_VAR_P1] = p1;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_resample_v_multaps_u16 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_resample_v_multaps_u16 (gint32 * ORC_RESTRICT d1,
|
|
const guint16 * ORC_RESTRICT s1, int p1, int n)
|
|
{
|
|
int i;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union16 *ORC_RESTRICT ptr4;
|
|
orc_union16 var33;
|
|
orc_union32 var34;
|
|
orc_union32 var35;
|
|
orc_union32 var36;
|
|
|
|
ptr0 = (orc_union32 *) d1;
|
|
ptr4 = (orc_union16 *) s1;
|
|
|
|
/* 2: loadpl */
|
|
var34.i = p1;
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadw */
|
|
var33 = ptr4[i];
|
|
/* 1: convuwl */
|
|
var36.i = (orc_uint16) var33.i;
|
|
/* 3: mulll */
|
|
var35.i = (((orc_uint32) var36.i) * ((orc_uint32) var34.i)) & 0xffffffff;
|
|
/* 4: storel */
|
|
ptr0[i] = var35;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_resample_v_multaps_u16 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union16 *ORC_RESTRICT ptr4;
|
|
orc_union16 var33;
|
|
orc_union32 var34;
|
|
orc_union32 var35;
|
|
orc_union32 var36;
|
|
|
|
ptr0 = (orc_union32 *) ex->arrays[0];
|
|
ptr4 = (orc_union16 *) ex->arrays[4];
|
|
|
|
/* 2: loadpl */
|
|
var34.i = ex->params[24];
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadw */
|
|
var33 = ptr4[i];
|
|
/* 1: convuwl */
|
|
var36.i = (orc_uint16) var33.i;
|
|
/* 3: mulll */
|
|
var35.i = (((orc_uint32) var36.i) * ((orc_uint32) var34.i)) & 0xffffffff;
|
|
/* 4: storel */
|
|
ptr0[i] = var35;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_resample_v_multaps_u16 (gint32 * ORC_RESTRICT d1,
|
|
const guint16 * ORC_RESTRICT s1, int p1, 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, 32, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
|
|
97, 109, 112, 108, 101, 95, 118, 95, 109, 117, 108, 116, 97, 112, 115,
|
|
95,
|
|
117, 49, 54, 11, 4, 4, 12, 2, 2, 16, 2, 20, 4, 154, 32, 4,
|
|
120, 0, 32, 24, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_v_multaps_u16);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_resample_v_multaps_u16");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_v_multaps_u16);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 2, "s1");
|
|
orc_program_add_parameter (p, 2, "p1");
|
|
orc_program_add_temporary (p, 4, "t1");
|
|
|
|
orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulll", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_P1,
|
|
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;
|
|
ex->params[ORC_VAR_P1] = p1;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_resample_v_muladdtaps_u16 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_resample_v_muladdtaps_u16 (gint32 * ORC_RESTRICT d1,
|
|
const guint16 * ORC_RESTRICT s1, int p1, int n)
|
|
{
|
|
int i;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union16 *ORC_RESTRICT ptr4;
|
|
orc_union16 var34;
|
|
orc_union16 var35;
|
|
orc_union32 var36;
|
|
orc_union32 var37;
|
|
orc_union32 var38;
|
|
orc_union32 var39;
|
|
orc_union32 var40;
|
|
|
|
ptr0 = (orc_union32 *) d1;
|
|
ptr4 = (orc_union16 *) s1;
|
|
|
|
/* 2: loadpw */
|
|
var35.i = p1;
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadw */
|
|
var34 = ptr4[i];
|
|
/* 1: convuwl */
|
|
var38.i = (orc_uint16) var34.i;
|
|
/* 3: convswl */
|
|
var39.i = var35.i;
|
|
/* 4: mulll */
|
|
var40.i = (((orc_uint32) var38.i) * ((orc_uint32) var39.i)) & 0xffffffff;
|
|
/* 5: loadl */
|
|
var36 = ptr0[i];
|
|
/* 6: addl */
|
|
var37.i = ((orc_uint32) var36.i) + ((orc_uint32) var40.i);
|
|
/* 7: storel */
|
|
ptr0[i] = var37;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_resample_v_muladdtaps_u16 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union16 *ORC_RESTRICT ptr4;
|
|
orc_union16 var34;
|
|
orc_union16 var35;
|
|
orc_union32 var36;
|
|
orc_union32 var37;
|
|
orc_union32 var38;
|
|
orc_union32 var39;
|
|
orc_union32 var40;
|
|
|
|
ptr0 = (orc_union32 *) ex->arrays[0];
|
|
ptr4 = (orc_union16 *) ex->arrays[4];
|
|
|
|
/* 2: loadpw */
|
|
var35.i = ex->params[24];
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadw */
|
|
var34 = ptr4[i];
|
|
/* 1: convuwl */
|
|
var38.i = (orc_uint16) var34.i;
|
|
/* 3: convswl */
|
|
var39.i = var35.i;
|
|
/* 4: mulll */
|
|
var40.i = (((orc_uint32) var38.i) * ((orc_uint32) var39.i)) & 0xffffffff;
|
|
/* 5: loadl */
|
|
var36 = ptr0[i];
|
|
/* 6: addl */
|
|
var37.i = ((orc_uint32) var36.i) + ((orc_uint32) var40.i);
|
|
/* 7: storel */
|
|
ptr0[i] = var37;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_resample_v_muladdtaps_u16 (gint32 * ORC_RESTRICT d1,
|
|
const guint16 * ORC_RESTRICT s1, int p1, 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, 35, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
|
|
97, 109, 112, 108, 101, 95, 118, 95, 109, 117, 108, 97, 100, 100, 116,
|
|
97,
|
|
112, 115, 95, 117, 49, 54, 11, 4, 4, 12, 2, 2, 16, 2, 20, 4,
|
|
20, 4, 154, 32, 4, 153, 33, 24, 120, 32, 32, 33, 103, 0, 0, 32,
|
|
2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_v_muladdtaps_u16);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_resample_v_muladdtaps_u16");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_v_muladdtaps_u16);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 2, "s1");
|
|
orc_program_add_parameter (p, 2, "p1");
|
|
orc_program_add_temporary (p, 4, "t1");
|
|
orc_program_add_temporary (p, 4, "t2");
|
|
|
|
orc_program_append_2 (p, "convuwl", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convswl", 0, ORC_VAR_T2, ORC_VAR_P1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulll", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addl", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
#endif
|
|
|
|
orc_program_compile (p);
|
|
c = orc_program_take_code (p);
|
|
orc_program_free (p);
|
|
}
|
|
p_inited = TRUE;
|
|
orc_once_mutex_unlock ();
|
|
}
|
|
ex->arrays[ORC_VAR_A2] = c;
|
|
ex->program = 0;
|
|
|
|
ex->n = n;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->params[ORC_VAR_P1] = p1;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_resample_v_multaps_u8_lq */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_resample_v_multaps_u8_lq (gint16 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int p1, int n)
|
|
{
|
|
int i;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
orc_int8 var33;
|
|
orc_union16 var34;
|
|
orc_union16 var35;
|
|
orc_union16 var36;
|
|
|
|
ptr0 = (orc_union16 *) d1;
|
|
ptr4 = (orc_int8 *) s1;
|
|
|
|
/* 2: loadpw */
|
|
var34.i = p1;
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var33 = ptr4[i];
|
|
/* 1: convubw */
|
|
var36.i = (orc_uint8) var33;
|
|
/* 3: mullw */
|
|
var35.i = (var36.i * var34.i) & 0xffff;
|
|
/* 4: storew */
|
|
ptr0[i] = var35;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_resample_v_multaps_u8_lq (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
orc_int8 var33;
|
|
orc_union16 var34;
|
|
orc_union16 var35;
|
|
orc_union16 var36;
|
|
|
|
ptr0 = (orc_union16 *) ex->arrays[0];
|
|
ptr4 = (orc_int8 *) ex->arrays[4];
|
|
|
|
/* 2: loadpw */
|
|
var34.i = ex->params[24];
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var33 = ptr4[i];
|
|
/* 1: convubw */
|
|
var36.i = (orc_uint8) var33;
|
|
/* 3: mullw */
|
|
var35.i = (var36.i * var34.i) & 0xffff;
|
|
/* 4: storew */
|
|
ptr0[i] = var35;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_resample_v_multaps_u8_lq (gint16 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int p1, 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, 34, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
|
|
97, 109, 112, 108, 101, 95, 118, 95, 109, 117, 108, 116, 97, 112, 115,
|
|
95,
|
|
117, 56, 95, 108, 113, 11, 2, 2, 12, 1, 1, 16, 2, 20, 2, 150,
|
|
32, 4, 89, 0, 32, 24, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_v_multaps_u8_lq);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_resample_v_multaps_u8_lq");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_v_multaps_u8_lq);
|
|
orc_program_add_destination (p, 2, "d1");
|
|
orc_program_add_source (p, 1, "s1");
|
|
orc_program_add_parameter (p, 2, "p1");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mullw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_P1,
|
|
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;
|
|
ex->params[ORC_VAR_P1] = p1;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_resample_v_multaps4_u8_lq */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_resample_v_multaps4_u8_lq (gint16 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
|
|
const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int p1,
|
|
int p2, int p3, int p4, int n)
|
|
{
|
|
int i;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
const orc_int8 *ORC_RESTRICT ptr7;
|
|
orc_int8 var34;
|
|
orc_union16 var35;
|
|
orc_int8 var36;
|
|
orc_union16 var37;
|
|
orc_int8 var38;
|
|
orc_union16 var39;
|
|
orc_int8 var40;
|
|
orc_union16 var41;
|
|
orc_union16 var42;
|
|
orc_union16 var43;
|
|
orc_union16 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;
|
|
|
|
ptr0 = (orc_union16 *) d1;
|
|
ptr4 = (orc_int8 *) s1;
|
|
ptr5 = (orc_int8 *) s2;
|
|
ptr6 = (orc_int8 *) s3;
|
|
ptr7 = (orc_int8 *) s4;
|
|
|
|
/* 2: loadpw */
|
|
var35.i = p1;
|
|
/* 6: loadpw */
|
|
var37.i = p2;
|
|
/* 11: loadpw */
|
|
var39.i = p3;
|
|
/* 16: loadpw */
|
|
var41.i = p4;
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var34 = ptr4[i];
|
|
/* 1: convubw */
|
|
var43.i = (orc_uint8) var34;
|
|
/* 3: mullw */
|
|
var44.i = (var43.i * var35.i) & 0xffff;
|
|
/* 4: loadb */
|
|
var36 = ptr5[i];
|
|
/* 5: convubw */
|
|
var45.i = (orc_uint8) var36;
|
|
/* 7: mullw */
|
|
var46.i = (var45.i * var37.i) & 0xffff;
|
|
/* 8: addw */
|
|
var47.i = var44.i + var46.i;
|
|
/* 9: loadb */
|
|
var38 = ptr6[i];
|
|
/* 10: convubw */
|
|
var48.i = (orc_uint8) var38;
|
|
/* 12: mullw */
|
|
var49.i = (var48.i * var39.i) & 0xffff;
|
|
/* 13: addw */
|
|
var50.i = var47.i + var49.i;
|
|
/* 14: loadb */
|
|
var40 = ptr7[i];
|
|
/* 15: convubw */
|
|
var51.i = (orc_uint8) var40;
|
|
/* 17: mullw */
|
|
var52.i = (var51.i * var41.i) & 0xffff;
|
|
/* 18: addw */
|
|
var42.i = var50.i + var52.i;
|
|
/* 19: storew */
|
|
ptr0[i] = var42;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_resample_v_multaps4_u8_lq (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
const orc_int8 *ORC_RESTRICT ptr7;
|
|
orc_int8 var34;
|
|
orc_union16 var35;
|
|
orc_int8 var36;
|
|
orc_union16 var37;
|
|
orc_int8 var38;
|
|
orc_union16 var39;
|
|
orc_int8 var40;
|
|
orc_union16 var41;
|
|
orc_union16 var42;
|
|
orc_union16 var43;
|
|
orc_union16 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;
|
|
|
|
ptr0 = (orc_union16 *) ex->arrays[0];
|
|
ptr4 = (orc_int8 *) ex->arrays[4];
|
|
ptr5 = (orc_int8 *) ex->arrays[5];
|
|
ptr6 = (orc_int8 *) ex->arrays[6];
|
|
ptr7 = (orc_int8 *) ex->arrays[7];
|
|
|
|
/* 2: loadpw */
|
|
var35.i = ex->params[24];
|
|
/* 6: loadpw */
|
|
var37.i = ex->params[25];
|
|
/* 11: loadpw */
|
|
var39.i = ex->params[26];
|
|
/* 16: loadpw */
|
|
var41.i = ex->params[27];
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var34 = ptr4[i];
|
|
/* 1: convubw */
|
|
var43.i = (orc_uint8) var34;
|
|
/* 3: mullw */
|
|
var44.i = (var43.i * var35.i) & 0xffff;
|
|
/* 4: loadb */
|
|
var36 = ptr5[i];
|
|
/* 5: convubw */
|
|
var45.i = (orc_uint8) var36;
|
|
/* 7: mullw */
|
|
var46.i = (var45.i * var37.i) & 0xffff;
|
|
/* 8: addw */
|
|
var47.i = var44.i + var46.i;
|
|
/* 9: loadb */
|
|
var38 = ptr6[i];
|
|
/* 10: convubw */
|
|
var48.i = (orc_uint8) var38;
|
|
/* 12: mullw */
|
|
var49.i = (var48.i * var39.i) & 0xffff;
|
|
/* 13: addw */
|
|
var50.i = var47.i + var49.i;
|
|
/* 14: loadb */
|
|
var40 = ptr7[i];
|
|
/* 15: convubw */
|
|
var51.i = (orc_uint8) var40;
|
|
/* 17: mullw */
|
|
var52.i = (var51.i * var41.i) & 0xffff;
|
|
/* 18: addw */
|
|
var42.i = var50.i + var52.i;
|
|
/* 19: storew */
|
|
ptr0[i] = var42;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_resample_v_multaps4_u8_lq (gint16 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
|
|
const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int p1,
|
|
int p2, int p3, int p4, 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, 35, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
|
|
97, 109, 112, 108, 101, 95, 118, 95, 109, 117, 108, 116, 97, 112, 115,
|
|
52,
|
|
95, 117, 56, 95, 108, 113, 11, 2, 2, 12, 1, 1, 12, 1, 1, 12,
|
|
1, 1, 12, 1, 1, 16, 2, 16, 2, 16, 2, 16, 2, 20, 2, 20,
|
|
2, 150, 32, 4, 89, 32, 32, 24, 150, 33, 5, 89, 33, 33, 25, 70,
|
|
32, 32, 33, 150, 33, 6, 89, 33, 33, 26, 70, 32, 32, 33, 150, 33,
|
|
7, 89, 33, 33, 27, 70, 0, 32, 33, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_v_multaps4_u8_lq);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_resample_v_multaps4_u8_lq");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_v_multaps4_u8_lq);
|
|
orc_program_add_destination (p, 2, "d1");
|
|
orc_program_add_source (p, 1, "s1");
|
|
orc_program_add_source (p, 1, "s2");
|
|
orc_program_add_source (p, 1, "s3");
|
|
orc_program_add_source (p, 1, "s4");
|
|
orc_program_add_parameter (p, 2, "p1");
|
|
orc_program_add_parameter (p, 2, "p2");
|
|
orc_program_add_parameter (p, 2, "p3");
|
|
orc_program_add_parameter (p, 2, "p4");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 2, "t2");
|
|
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P3,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S4, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P4,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
|
|
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;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
ex->arrays[ORC_VAR_S3] = (void *) s3;
|
|
ex->arrays[ORC_VAR_S4] = (void *) s4;
|
|
ex->params[ORC_VAR_P1] = p1;
|
|
ex->params[ORC_VAR_P2] = p2;
|
|
ex->params[ORC_VAR_P3] = p3;
|
|
ex->params[ORC_VAR_P4] = p4;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_resample_v_muladdtaps_u8_lq */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_resample_v_muladdtaps_u8_lq (gint16 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int p1, int n)
|
|
{
|
|
int i;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
orc_int8 var33;
|
|
orc_union16 var34;
|
|
orc_union16 var35;
|
|
orc_union16 var36;
|
|
orc_union16 var37;
|
|
orc_union16 var38;
|
|
|
|
ptr0 = (orc_union16 *) d1;
|
|
ptr4 = (orc_int8 *) s1;
|
|
|
|
/* 2: loadpw */
|
|
var34.i = p1;
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var33 = ptr4[i];
|
|
/* 1: convubw */
|
|
var37.i = (orc_uint8) var33;
|
|
/* 3: mullw */
|
|
var38.i = (var37.i * var34.i) & 0xffff;
|
|
/* 4: loadw */
|
|
var35 = ptr0[i];
|
|
/* 5: addw */
|
|
var36.i = var35.i + var38.i;
|
|
/* 6: storew */
|
|
ptr0[i] = var36;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_resample_v_muladdtaps_u8_lq (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
orc_int8 var33;
|
|
orc_union16 var34;
|
|
orc_union16 var35;
|
|
orc_union16 var36;
|
|
orc_union16 var37;
|
|
orc_union16 var38;
|
|
|
|
ptr0 = (orc_union16 *) ex->arrays[0];
|
|
ptr4 = (orc_int8 *) ex->arrays[4];
|
|
|
|
/* 2: loadpw */
|
|
var34.i = ex->params[24];
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var33 = ptr4[i];
|
|
/* 1: convubw */
|
|
var37.i = (orc_uint8) var33;
|
|
/* 3: mullw */
|
|
var38.i = (var37.i * var34.i) & 0xffff;
|
|
/* 4: loadw */
|
|
var35 = ptr0[i];
|
|
/* 5: addw */
|
|
var36.i = var35.i + var38.i;
|
|
/* 6: storew */
|
|
ptr0[i] = var36;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_resample_v_muladdtaps_u8_lq (gint16 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int p1, 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, 37, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
|
|
97, 109, 112, 108, 101, 95, 118, 95, 109, 117, 108, 97, 100, 100, 116,
|
|
97,
|
|
112, 115, 95, 117, 56, 95, 108, 113, 11, 2, 2, 12, 1, 1, 16, 2,
|
|
20, 2, 150, 32, 4, 89, 32, 32, 24, 70, 0, 0, 32, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_v_muladdtaps_u8_lq);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_resample_v_muladdtaps_u8_lq");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_v_muladdtaps_u8_lq);
|
|
orc_program_add_destination (p, 2, "d1");
|
|
orc_program_add_source (p, 1, "s1");
|
|
orc_program_add_parameter (p, 2, "p1");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
#endif
|
|
|
|
orc_program_compile (p);
|
|
c = orc_program_take_code (p);
|
|
orc_program_free (p);
|
|
}
|
|
p_inited = TRUE;
|
|
orc_once_mutex_unlock ();
|
|
}
|
|
ex->arrays[ORC_VAR_A2] = c;
|
|
ex->program = 0;
|
|
|
|
ex->n = n;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->params[ORC_VAR_P1] = p1;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_resample_v_muladdtaps4_u8_lq */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_resample_v_muladdtaps4_u8_lq (gint16 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
|
|
const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int p1,
|
|
int p2, int p3, int p4, int n)
|
|
{
|
|
int i;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
const orc_int8 *ORC_RESTRICT ptr7;
|
|
orc_int8 var34;
|
|
orc_union16 var35;
|
|
orc_int8 var36;
|
|
orc_union16 var37;
|
|
orc_int8 var38;
|
|
orc_union16 var39;
|
|
orc_int8 var40;
|
|
orc_union16 var41;
|
|
orc_union16 var42;
|
|
orc_union16 var43;
|
|
orc_union16 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_union16 var53;
|
|
orc_union16 var54;
|
|
|
|
ptr0 = (orc_union16 *) d1;
|
|
ptr4 = (orc_int8 *) s1;
|
|
ptr5 = (orc_int8 *) s2;
|
|
ptr6 = (orc_int8 *) s3;
|
|
ptr7 = (orc_int8 *) s4;
|
|
|
|
/* 2: loadpw */
|
|
var35.i = p1;
|
|
/* 6: loadpw */
|
|
var37.i = p2;
|
|
/* 11: loadpw */
|
|
var39.i = p3;
|
|
/* 16: loadpw */
|
|
var41.i = p4;
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var34 = ptr4[i];
|
|
/* 1: convubw */
|
|
var44.i = (orc_uint8) var34;
|
|
/* 3: mullw */
|
|
var45.i = (var44.i * var35.i) & 0xffff;
|
|
/* 4: loadb */
|
|
var36 = ptr5[i];
|
|
/* 5: convubw */
|
|
var46.i = (orc_uint8) var36;
|
|
/* 7: mullw */
|
|
var47.i = (var46.i * var37.i) & 0xffff;
|
|
/* 8: addw */
|
|
var48.i = var45.i + var47.i;
|
|
/* 9: loadb */
|
|
var38 = ptr6[i];
|
|
/* 10: convubw */
|
|
var49.i = (orc_uint8) var38;
|
|
/* 12: mullw */
|
|
var50.i = (var49.i * var39.i) & 0xffff;
|
|
/* 13: addw */
|
|
var51.i = var48.i + var50.i;
|
|
/* 14: loadb */
|
|
var40 = ptr7[i];
|
|
/* 15: convubw */
|
|
var52.i = (orc_uint8) var40;
|
|
/* 17: mullw */
|
|
var53.i = (var52.i * var41.i) & 0xffff;
|
|
/* 18: addw */
|
|
var54.i = var51.i + var53.i;
|
|
/* 19: loadw */
|
|
var42 = ptr0[i];
|
|
/* 20: addw */
|
|
var43.i = var42.i + var54.i;
|
|
/* 21: storew */
|
|
ptr0[i] = var43;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_resample_v_muladdtaps4_u8_lq (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
const orc_int8 *ORC_RESTRICT ptr7;
|
|
orc_int8 var34;
|
|
orc_union16 var35;
|
|
orc_int8 var36;
|
|
orc_union16 var37;
|
|
orc_int8 var38;
|
|
orc_union16 var39;
|
|
orc_int8 var40;
|
|
orc_union16 var41;
|
|
orc_union16 var42;
|
|
orc_union16 var43;
|
|
orc_union16 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_union16 var53;
|
|
orc_union16 var54;
|
|
|
|
ptr0 = (orc_union16 *) ex->arrays[0];
|
|
ptr4 = (orc_int8 *) ex->arrays[4];
|
|
ptr5 = (orc_int8 *) ex->arrays[5];
|
|
ptr6 = (orc_int8 *) ex->arrays[6];
|
|
ptr7 = (orc_int8 *) ex->arrays[7];
|
|
|
|
/* 2: loadpw */
|
|
var35.i = ex->params[24];
|
|
/* 6: loadpw */
|
|
var37.i = ex->params[25];
|
|
/* 11: loadpw */
|
|
var39.i = ex->params[26];
|
|
/* 16: loadpw */
|
|
var41.i = ex->params[27];
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var34 = ptr4[i];
|
|
/* 1: convubw */
|
|
var44.i = (orc_uint8) var34;
|
|
/* 3: mullw */
|
|
var45.i = (var44.i * var35.i) & 0xffff;
|
|
/* 4: loadb */
|
|
var36 = ptr5[i];
|
|
/* 5: convubw */
|
|
var46.i = (orc_uint8) var36;
|
|
/* 7: mullw */
|
|
var47.i = (var46.i * var37.i) & 0xffff;
|
|
/* 8: addw */
|
|
var48.i = var45.i + var47.i;
|
|
/* 9: loadb */
|
|
var38 = ptr6[i];
|
|
/* 10: convubw */
|
|
var49.i = (orc_uint8) var38;
|
|
/* 12: mullw */
|
|
var50.i = (var49.i * var39.i) & 0xffff;
|
|
/* 13: addw */
|
|
var51.i = var48.i + var50.i;
|
|
/* 14: loadb */
|
|
var40 = ptr7[i];
|
|
/* 15: convubw */
|
|
var52.i = (orc_uint8) var40;
|
|
/* 17: mullw */
|
|
var53.i = (var52.i * var41.i) & 0xffff;
|
|
/* 18: addw */
|
|
var54.i = var51.i + var53.i;
|
|
/* 19: loadw */
|
|
var42 = ptr0[i];
|
|
/* 20: addw */
|
|
var43.i = var42.i + var54.i;
|
|
/* 21: storew */
|
|
ptr0[i] = var43;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_resample_v_muladdtaps4_u8_lq (gint16 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
|
|
const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int p1,
|
|
int p2, int p3, int p4, 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, 38, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
|
|
97, 109, 112, 108, 101, 95, 118, 95, 109, 117, 108, 97, 100, 100, 116,
|
|
97,
|
|
112, 115, 52, 95, 117, 56, 95, 108, 113, 11, 2, 2, 12, 1, 1, 12,
|
|
1, 1, 12, 1, 1, 12, 1, 1, 16, 2, 16, 2, 16, 2, 16, 2,
|
|
20, 2, 20, 2, 150, 32, 4, 89, 32, 32, 24, 150, 33, 5, 89, 33,
|
|
33, 25, 70, 32, 32, 33, 150, 33, 6, 89, 33, 33, 26, 70, 32, 32,
|
|
33, 150, 33, 7, 89, 33, 33, 27, 70, 32, 32, 33, 70, 0, 0, 32,
|
|
2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_v_muladdtaps4_u8_lq);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_resample_v_muladdtaps4_u8_lq");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_v_muladdtaps4_u8_lq);
|
|
orc_program_add_destination (p, 2, "d1");
|
|
orc_program_add_source (p, 1, "s1");
|
|
orc_program_add_source (p, 1, "s2");
|
|
orc_program_add_source (p, 1, "s3");
|
|
orc_program_add_source (p, 1, "s4");
|
|
orc_program_add_parameter (p, 2, "p1");
|
|
orc_program_add_parameter (p, 2, "p2");
|
|
orc_program_add_parameter (p, 2, "p3");
|
|
orc_program_add_parameter (p, 2, "p4");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 2, "t2");
|
|
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P3,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S4, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P4,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
#endif
|
|
|
|
orc_program_compile (p);
|
|
c = orc_program_take_code (p);
|
|
orc_program_free (p);
|
|
}
|
|
p_inited = TRUE;
|
|
orc_once_mutex_unlock ();
|
|
}
|
|
ex->arrays[ORC_VAR_A2] = c;
|
|
ex->program = 0;
|
|
|
|
ex->n = n;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
ex->arrays[ORC_VAR_S3] = (void *) s3;
|
|
ex->arrays[ORC_VAR_S4] = (void *) s4;
|
|
ex->params[ORC_VAR_P1] = p1;
|
|
ex->params[ORC_VAR_P2] = p2;
|
|
ex->params[ORC_VAR_P3] = p3;
|
|
ex->params[ORC_VAR_P4] = p4;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_resample_v_muladdscaletaps4_u8_lq */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_resample_v_muladdscaletaps4_u8_lq (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
|
|
const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4,
|
|
const gint16 * ORC_RESTRICT s5, int p1, int p2, int p3, int p4, int n)
|
|
{
|
|
int i;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
const orc_int8 *ORC_RESTRICT ptr7;
|
|
const orc_union16 *ORC_RESTRICT ptr8;
|
|
orc_int8 var34;
|
|
orc_union16 var35;
|
|
orc_int8 var36;
|
|
orc_union16 var37;
|
|
orc_int8 var38;
|
|
orc_union16 var39;
|
|
orc_int8 var40;
|
|
orc_union16 var41;
|
|
orc_union16 var42;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union16 var43;
|
|
#else
|
|
orc_union16 var43;
|
|
#endif
|
|
orc_int8 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_union16 var53;
|
|
orc_union16 var54;
|
|
orc_union16 var55;
|
|
orc_union16 var56;
|
|
orc_union16 var57;
|
|
orc_union16 var58;
|
|
|
|
ptr0 = (orc_int8 *) d1;
|
|
ptr4 = (orc_int8 *) s1;
|
|
ptr5 = (orc_int8 *) s2;
|
|
ptr6 = (orc_int8 *) s3;
|
|
ptr7 = (orc_int8 *) s4;
|
|
ptr8 = (orc_union16 *) s5;
|
|
|
|
/* 2: loadpw */
|
|
var35.i = p1;
|
|
/* 6: loadpw */
|
|
var37.i = p2;
|
|
/* 11: loadpw */
|
|
var39.i = p3;
|
|
/* 16: loadpw */
|
|
var41.i = p4;
|
|
/* 21: loadpw */
|
|
var43.i = (int) 0x00000020; /* 32 or 1.58101e-322f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var34 = ptr4[i];
|
|
/* 1: convubw */
|
|
var45.i = (orc_uint8) var34;
|
|
/* 3: mullw */
|
|
var46.i = (var45.i * var35.i) & 0xffff;
|
|
/* 4: loadb */
|
|
var36 = ptr5[i];
|
|
/* 5: convubw */
|
|
var47.i = (orc_uint8) var36;
|
|
/* 7: mullw */
|
|
var48.i = (var47.i * var37.i) & 0xffff;
|
|
/* 8: addw */
|
|
var49.i = var46.i + var48.i;
|
|
/* 9: loadb */
|
|
var38 = ptr6[i];
|
|
/* 10: convubw */
|
|
var50.i = (orc_uint8) var38;
|
|
/* 12: mullw */
|
|
var51.i = (var50.i * var39.i) & 0xffff;
|
|
/* 13: addw */
|
|
var52.i = var49.i + var51.i;
|
|
/* 14: loadb */
|
|
var40 = ptr7[i];
|
|
/* 15: convubw */
|
|
var53.i = (orc_uint8) var40;
|
|
/* 17: mullw */
|
|
var54.i = (var53.i * var41.i) & 0xffff;
|
|
/* 18: addw */
|
|
var55.i = var52.i + var54.i;
|
|
/* 19: loadw */
|
|
var42 = ptr8[i];
|
|
/* 20: addw */
|
|
var56.i = var55.i + var42.i;
|
|
/* 22: addw */
|
|
var57.i = var56.i + var43.i;
|
|
/* 23: shrsw */
|
|
var58.i = var57.i >> 6;
|
|
/* 24: convsuswb */
|
|
var44 = ORC_CLAMP_UB (var58.i);
|
|
/* 25: storeb */
|
|
ptr0[i] = var44;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_resample_v_muladdscaletaps4_u8_lq (OrcExecutor *
|
|
ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
const orc_int8 *ORC_RESTRICT ptr5;
|
|
const orc_int8 *ORC_RESTRICT ptr6;
|
|
const orc_int8 *ORC_RESTRICT ptr7;
|
|
const orc_union16 *ORC_RESTRICT ptr8;
|
|
orc_int8 var34;
|
|
orc_union16 var35;
|
|
orc_int8 var36;
|
|
orc_union16 var37;
|
|
orc_int8 var38;
|
|
orc_union16 var39;
|
|
orc_int8 var40;
|
|
orc_union16 var41;
|
|
orc_union16 var42;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union16 var43;
|
|
#else
|
|
orc_union16 var43;
|
|
#endif
|
|
orc_int8 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_union16 var53;
|
|
orc_union16 var54;
|
|
orc_union16 var55;
|
|
orc_union16 var56;
|
|
orc_union16 var57;
|
|
orc_union16 var58;
|
|
|
|
ptr0 = (orc_int8 *) ex->arrays[0];
|
|
ptr4 = (orc_int8 *) ex->arrays[4];
|
|
ptr5 = (orc_int8 *) ex->arrays[5];
|
|
ptr6 = (orc_int8 *) ex->arrays[6];
|
|
ptr7 = (orc_int8 *) ex->arrays[7];
|
|
ptr8 = (orc_union16 *) ex->arrays[8];
|
|
|
|
/* 2: loadpw */
|
|
var35.i = ex->params[24];
|
|
/* 6: loadpw */
|
|
var37.i = ex->params[25];
|
|
/* 11: loadpw */
|
|
var39.i = ex->params[26];
|
|
/* 16: loadpw */
|
|
var41.i = ex->params[27];
|
|
/* 21: loadpw */
|
|
var43.i = (int) 0x00000020; /* 32 or 1.58101e-322f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var34 = ptr4[i];
|
|
/* 1: convubw */
|
|
var45.i = (orc_uint8) var34;
|
|
/* 3: mullw */
|
|
var46.i = (var45.i * var35.i) & 0xffff;
|
|
/* 4: loadb */
|
|
var36 = ptr5[i];
|
|
/* 5: convubw */
|
|
var47.i = (orc_uint8) var36;
|
|
/* 7: mullw */
|
|
var48.i = (var47.i * var37.i) & 0xffff;
|
|
/* 8: addw */
|
|
var49.i = var46.i + var48.i;
|
|
/* 9: loadb */
|
|
var38 = ptr6[i];
|
|
/* 10: convubw */
|
|
var50.i = (orc_uint8) var38;
|
|
/* 12: mullw */
|
|
var51.i = (var50.i * var39.i) & 0xffff;
|
|
/* 13: addw */
|
|
var52.i = var49.i + var51.i;
|
|
/* 14: loadb */
|
|
var40 = ptr7[i];
|
|
/* 15: convubw */
|
|
var53.i = (orc_uint8) var40;
|
|
/* 17: mullw */
|
|
var54.i = (var53.i * var41.i) & 0xffff;
|
|
/* 18: addw */
|
|
var55.i = var52.i + var54.i;
|
|
/* 19: loadw */
|
|
var42 = ptr8[i];
|
|
/* 20: addw */
|
|
var56.i = var55.i + var42.i;
|
|
/* 22: addw */
|
|
var57.i = var56.i + var43.i;
|
|
/* 23: shrsw */
|
|
var58.i = var57.i >> 6;
|
|
/* 24: convsuswb */
|
|
var44 = ORC_CLAMP_UB (var58.i);
|
|
/* 25: storeb */
|
|
ptr0[i] = var44;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_resample_v_muladdscaletaps4_u8_lq (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
|
|
const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4,
|
|
const gint16 * ORC_RESTRICT s5, int p1, int p2, int p3, int p4, 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, 43, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 114, 101, 115,
|
|
97, 109, 112, 108, 101, 95, 118, 95, 109, 117, 108, 97, 100, 100, 115,
|
|
99,
|
|
97, 108, 101, 116, 97, 112, 115, 52, 95, 117, 56, 95, 108, 113, 11, 1,
|
|
1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 2, 2,
|
|
14, 2, 32, 0, 0, 0, 14, 2, 6, 0, 0, 0, 16, 2, 16, 2,
|
|
16, 2, 16, 2, 20, 2, 20, 2, 150, 32, 4, 89, 32, 32, 24, 150,
|
|
33, 5, 89, 33, 33, 25, 70, 32, 32, 33, 150, 33, 6, 89, 33, 33,
|
|
26, 70, 32, 32, 33, 150, 33, 7, 89, 33, 33, 27, 70, 32, 32, 33,
|
|
70, 32, 32, 8, 70, 32, 32, 16, 94, 32, 32, 17, 160, 0, 32, 2,
|
|
0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_v_muladdscaletaps4_u8_lq);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_resample_v_muladdscaletaps4_u8_lq");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_resample_v_muladdscaletaps4_u8_lq);
|
|
orc_program_add_destination (p, 1, "d1");
|
|
orc_program_add_source (p, 1, "s1");
|
|
orc_program_add_source (p, 1, "s2");
|
|
orc_program_add_source (p, 1, "s3");
|
|
orc_program_add_source (p, 1, "s4");
|
|
orc_program_add_source (p, 2, "s5");
|
|
orc_program_add_constant (p, 2, 0x00000020, "c1");
|
|
orc_program_add_constant (p, 2, 0x00000006, "c2");
|
|
orc_program_add_parameter (p, 2, "p1");
|
|
orc_program_add_parameter (p, 2, "p2");
|
|
orc_program_add_parameter (p, 2, "p3");
|
|
orc_program_add_parameter (p, 2, "p4");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 2, "t2");
|
|
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mullw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_P1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S3, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P3,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S4, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P4,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S5,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1,
|
|
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;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
ex->arrays[ORC_VAR_S3] = (void *) s3;
|
|
ex->arrays[ORC_VAR_S4] = (void *) s4;
|
|
ex->arrays[ORC_VAR_S5] = (void *) s5;
|
|
ex->params[ORC_VAR_P1] = p1;
|
|
ex->params[ORC_VAR_P2] = p2;
|
|
ex->params[ORC_VAR_P3] = p3;
|
|
ex->params[ORC_VAR_P4] = p4;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_chroma_down_h2_u8 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_chroma_down_h2_u8 (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int n)
|
|
{
|
|
int i;
|
|
orc_union64 *ORC_RESTRICT ptr0;
|
|
const orc_union64 *ORC_RESTRICT ptr4;
|
|
orc_union64 var37;
|
|
orc_union64 var38;
|
|
orc_union32 var39;
|
|
orc_union32 var40;
|
|
orc_union16 var41;
|
|
orc_union16 var42;
|
|
orc_union16 var43;
|
|
orc_union16 var44;
|
|
orc_union32 var45;
|
|
|
|
ptr0 = (orc_union64 *) d1;
|
|
ptr4 = (orc_union64 *) s1;
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadq */
|
|
var37 = ptr4[i];
|
|
/* 1: splitql */
|
|
{
|
|
orc_union64 _src;
|
|
_src.i = var37.i;
|
|
var39.i = _src.x2[1];
|
|
var40.i = _src.x2[0];
|
|
}
|
|
/* 2: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var40.i;
|
|
var41.i = _src.x2[1];
|
|
var42.i = _src.x2[0];
|
|
}
|
|
/* 3: select1lw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var39.i;
|
|
var43.i = _src.x2[1];
|
|
}
|
|
/* 4: avgub */
|
|
var44.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1;
|
|
var44.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1;
|
|
/* 5: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var42.i;
|
|
_dest.x2[1] = var44.i;
|
|
var45.i = _dest.i;
|
|
}
|
|
/* 6: mergelq */
|
|
{
|
|
orc_union64 _dest;
|
|
_dest.x2[0] = var45.i;
|
|
_dest.x2[1] = var39.i;
|
|
var38.i = _dest.i;
|
|
}
|
|
/* 7: storeq */
|
|
ptr0[i] = var38;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_chroma_down_h2_u8 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union64 *ORC_RESTRICT ptr0;
|
|
const orc_union64 *ORC_RESTRICT ptr4;
|
|
orc_union64 var37;
|
|
orc_union64 var38;
|
|
orc_union32 var39;
|
|
orc_union32 var40;
|
|
orc_union16 var41;
|
|
orc_union16 var42;
|
|
orc_union16 var43;
|
|
orc_union16 var44;
|
|
orc_union32 var45;
|
|
|
|
ptr0 = (orc_union64 *) ex->arrays[0];
|
|
ptr4 = (orc_union64 *) ex->arrays[4];
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadq */
|
|
var37 = ptr4[i];
|
|
/* 1: splitql */
|
|
{
|
|
orc_union64 _src;
|
|
_src.i = var37.i;
|
|
var39.i = _src.x2[1];
|
|
var40.i = _src.x2[0];
|
|
}
|
|
/* 2: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var40.i;
|
|
var41.i = _src.x2[1];
|
|
var42.i = _src.x2[0];
|
|
}
|
|
/* 3: select1lw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var39.i;
|
|
var43.i = _src.x2[1];
|
|
}
|
|
/* 4: avgub */
|
|
var44.x2[0] = ((orc_uint8) var41.x2[0] + (orc_uint8) var43.x2[0] + 1) >> 1;
|
|
var44.x2[1] = ((orc_uint8) var41.x2[1] + (orc_uint8) var43.x2[1] + 1) >> 1;
|
|
/* 5: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var42.i;
|
|
_dest.x2[1] = var44.i;
|
|
var45.i = _dest.i;
|
|
}
|
|
/* 6: mergelq */
|
|
{
|
|
orc_union64 _dest;
|
|
_dest.x2[0] = var45.i;
|
|
_dest.x2[1] = var39.i;
|
|
var38.i = _dest.i;
|
|
}
|
|
/* 7: storeq */
|
|
ptr0[i] = var38;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_chroma_down_h2_u8 (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int n)
|
|
{
|
|
OrcExecutor _ex, *ex = &_ex;
|
|
static volatile int p_inited = 0;
|
|
static OrcCode *c = 0;
|
|
void (*func) (OrcExecutor *);
|
|
|
|
if (!p_inited) {
|
|
orc_once_mutex_lock ();
|
|
if (!p_inited) {
|
|
OrcProgram *p;
|
|
|
|
#if 1
|
|
static const orc_uint8 bc[] = {
|
|
1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 104, 114,
|
|
111, 109, 97, 95, 100, 111, 119, 110, 95, 104, 50, 95, 117, 56, 11, 8,
|
|
8, 12, 8, 8, 20, 4, 20, 4, 20, 2, 20, 2, 20, 2, 197, 33,
|
|
32, 4, 198, 35, 34, 32, 191, 36, 33, 21, 1, 39, 35, 35, 36, 195,
|
|
32, 34, 35, 194, 0, 32, 33, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_chroma_down_h2_u8);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_chroma_down_h2_u8");
|
|
orc_program_set_backup_function (p, _backup_video_orc_chroma_down_h2_u8);
|
|
orc_program_add_destination (p, 8, "d1");
|
|
orc_program_add_source (p, 8, "s1");
|
|
orc_program_add_temporary (p, 4, "t1");
|
|
orc_program_add_temporary (p, 4, "t2");
|
|
orc_program_add_temporary (p, 2, "t3");
|
|
orc_program_add_temporary (p, 2, "t4");
|
|
orc_program_add_temporary (p, 2, "t5");
|
|
|
|
orc_program_append_2 (p, "splitql", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T5, ORC_VAR_T2,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "avgub", 1, ORC_VAR_T4, ORC_VAR_T4, ORC_VAR_T5,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
|
|
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_chroma_down_v2_u8 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_chroma_down_v2_u8 (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
|
|
{
|
|
int i;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
const orc_union32 *ORC_RESTRICT ptr5;
|
|
orc_union32 var35;
|
|
orc_union32 var36;
|
|
orc_union32 var37;
|
|
orc_union16 var38;
|
|
orc_union16 var39;
|
|
orc_union16 var40;
|
|
orc_union16 var41;
|
|
|
|
ptr0 = (orc_union32 *) d1;
|
|
ptr4 = (orc_union32 *) s1;
|
|
ptr5 = (orc_union32 *) s2;
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var35 = ptr4[i];
|
|
/* 1: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var35.i;
|
|
var38.i = _src.x2[1];
|
|
var39.i = _src.x2[0];
|
|
}
|
|
/* 2: loadl */
|
|
var36 = ptr5[i];
|
|
/* 3: select1lw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var36.i;
|
|
var40.i = _src.x2[1];
|
|
}
|
|
/* 4: avgub */
|
|
var41.x2[0] = ((orc_uint8) var38.x2[0] + (orc_uint8) var40.x2[0] + 1) >> 1;
|
|
var41.x2[1] = ((orc_uint8) var38.x2[1] + (orc_uint8) var40.x2[1] + 1) >> 1;
|
|
/* 5: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var39.i;
|
|
_dest.x2[1] = var41.i;
|
|
var37.i = _dest.i;
|
|
}
|
|
/* 6: storel */
|
|
ptr0[i] = var37;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_chroma_down_v2_u8 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
const orc_union32 *ORC_RESTRICT ptr5;
|
|
orc_union32 var35;
|
|
orc_union32 var36;
|
|
orc_union32 var37;
|
|
orc_union16 var38;
|
|
orc_union16 var39;
|
|
orc_union16 var40;
|
|
orc_union16 var41;
|
|
|
|
ptr0 = (orc_union32 *) ex->arrays[0];
|
|
ptr4 = (orc_union32 *) ex->arrays[4];
|
|
ptr5 = (orc_union32 *) ex->arrays[5];
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var35 = ptr4[i];
|
|
/* 1: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var35.i;
|
|
var38.i = _src.x2[1];
|
|
var39.i = _src.x2[0];
|
|
}
|
|
/* 2: loadl */
|
|
var36 = ptr5[i];
|
|
/* 3: select1lw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var36.i;
|
|
var40.i = _src.x2[1];
|
|
}
|
|
/* 4: avgub */
|
|
var41.x2[0] = ((orc_uint8) var38.x2[0] + (orc_uint8) var40.x2[0] + 1) >> 1;
|
|
var41.x2[1] = ((orc_uint8) var38.x2[1] + (orc_uint8) var40.x2[1] + 1) >> 1;
|
|
/* 5: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var39.i;
|
|
_dest.x2[1] = var41.i;
|
|
var37.i = _dest.i;
|
|
}
|
|
/* 6: storel */
|
|
ptr0[i] = var37;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_chroma_down_v2_u8 (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, 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, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 104, 114,
|
|
111, 109, 97, 95, 100, 111, 119, 110, 95, 118, 50, 95, 117, 56, 11, 4,
|
|
4, 12, 4, 4, 12, 4, 4, 20, 2, 20, 2, 20, 2, 198, 33, 32,
|
|
4, 191, 34, 5, 21, 1, 39, 33, 33, 34, 195, 0, 32, 33, 2, 0,
|
|
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_chroma_down_v2_u8);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_chroma_down_v2_u8");
|
|
orc_program_set_backup_function (p, _backup_video_orc_chroma_down_v2_u8);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 4, "s1");
|
|
orc_program_add_source (p, 4, "s2");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 2, "t2");
|
|
orc_program_add_temporary (p, 2, "t3");
|
|
|
|
orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T3, ORC_VAR_S2,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "avgub", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
|
|
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;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_chroma_up_v2_u8 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_chroma_up_v2_u8 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
|
|
{
|
|
int i;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
orc_union32 *ORC_RESTRICT ptr1;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
const orc_union32 *ORC_RESTRICT ptr5;
|
|
orc_union32 var39;
|
|
orc_union32 var40;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union32 var41;
|
|
#else
|
|
orc_union32 var41;
|
|
#endif
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union32 var42;
|
|
#else
|
|
orc_union32 var42;
|
|
#endif
|
|
orc_union32 var43;
|
|
orc_union32 var44;
|
|
orc_union16 var45;
|
|
orc_union16 var46;
|
|
orc_union16 var47;
|
|
orc_union16 var48;
|
|
orc_union32 var49;
|
|
orc_union32 var50;
|
|
orc_union32 var51;
|
|
orc_union32 var52;
|
|
orc_union32 var53;
|
|
orc_union32 var54;
|
|
orc_union16 var55;
|
|
orc_union32 var56;
|
|
orc_union32 var57;
|
|
orc_union32 var58;
|
|
orc_union32 var59;
|
|
orc_union16 var60;
|
|
|
|
ptr0 = (orc_union32 *) d1;
|
|
ptr1 = (orc_union32 *) d2;
|
|
ptr4 = (orc_union32 *) s1;
|
|
ptr5 = (orc_union32 *) s2;
|
|
|
|
/* 6: loadpw */
|
|
var41.x2[0] = (int) 0x00000003; /* 3 or 1.4822e-323f */
|
|
var41.x2[1] = (int) 0x00000003; /* 3 or 1.4822e-323f */
|
|
/* 9: loadpw */
|
|
var42.x2[0] = (int) 0x00000002; /* 2 or 9.88131e-324f */
|
|
var42.x2[1] = (int) 0x00000002; /* 2 or 9.88131e-324f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var39 = ptr4[i];
|
|
/* 1: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var39.i;
|
|
var45.i = _src.x2[1];
|
|
var46.i = _src.x2[0];
|
|
}
|
|
/* 2: loadl */
|
|
var40 = ptr5[i];
|
|
/* 3: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var40.i;
|
|
var47.i = _src.x2[1];
|
|
var48.i = _src.x2[0];
|
|
}
|
|
/* 4: convubw */
|
|
var49.x2[0] = (orc_uint8) var45.x2[0];
|
|
var49.x2[1] = (orc_uint8) var45.x2[1];
|
|
/* 5: convubw */
|
|
var50.x2[0] = (orc_uint8) var47.x2[0];
|
|
var50.x2[1] = (orc_uint8) var47.x2[1];
|
|
/* 7: mullw */
|
|
var51.x2[0] = (var49.x2[0] * var41.x2[0]) & 0xffff;
|
|
var51.x2[1] = (var49.x2[1] * var41.x2[1]) & 0xffff;
|
|
/* 8: addw */
|
|
var52.x2[0] = var51.x2[0] + var50.x2[0];
|
|
var52.x2[1] = var51.x2[1] + var50.x2[1];
|
|
/* 10: addw */
|
|
var53.x2[0] = var52.x2[0] + var42.x2[0];
|
|
var53.x2[1] = var52.x2[1] + var42.x2[1];
|
|
/* 11: shruw */
|
|
var54.x2[0] = ((orc_uint16) var53.x2[0]) >> 2;
|
|
var54.x2[1] = ((orc_uint16) var53.x2[1]) >> 2;
|
|
/* 12: convsuswb */
|
|
var55.x2[0] = ORC_CLAMP_UB (var54.x2[0]);
|
|
var55.x2[1] = ORC_CLAMP_UB (var54.x2[1]);
|
|
/* 13: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var46.i;
|
|
_dest.x2[1] = var55.i;
|
|
var43.i = _dest.i;
|
|
}
|
|
/* 14: storel */
|
|
ptr0[i] = var43;
|
|
/* 15: mullw */
|
|
var56.x2[0] = (var50.x2[0] * var41.x2[0]) & 0xffff;
|
|
var56.x2[1] = (var50.x2[1] * var41.x2[1]) & 0xffff;
|
|
/* 16: addw */
|
|
var57.x2[0] = var56.x2[0] + var49.x2[0];
|
|
var57.x2[1] = var56.x2[1] + var49.x2[1];
|
|
/* 17: addw */
|
|
var58.x2[0] = var57.x2[0] + var42.x2[0];
|
|
var58.x2[1] = var57.x2[1] + var42.x2[1];
|
|
/* 18: shruw */
|
|
var59.x2[0] = ((orc_uint16) var58.x2[0]) >> 2;
|
|
var59.x2[1] = ((orc_uint16) var58.x2[1]) >> 2;
|
|
/* 19: convsuswb */
|
|
var60.x2[0] = ORC_CLAMP_UB (var59.x2[0]);
|
|
var60.x2[1] = ORC_CLAMP_UB (var59.x2[1]);
|
|
/* 20: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var48.i;
|
|
_dest.x2[1] = var60.i;
|
|
var44.i = _dest.i;
|
|
}
|
|
/* 21: storel */
|
|
ptr1[i] = var44;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_chroma_up_v2_u8 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
orc_union32 *ORC_RESTRICT ptr1;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
const orc_union32 *ORC_RESTRICT ptr5;
|
|
orc_union32 var39;
|
|
orc_union32 var40;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union32 var41;
|
|
#else
|
|
orc_union32 var41;
|
|
#endif
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union32 var42;
|
|
#else
|
|
orc_union32 var42;
|
|
#endif
|
|
orc_union32 var43;
|
|
orc_union32 var44;
|
|
orc_union16 var45;
|
|
orc_union16 var46;
|
|
orc_union16 var47;
|
|
orc_union16 var48;
|
|
orc_union32 var49;
|
|
orc_union32 var50;
|
|
orc_union32 var51;
|
|
orc_union32 var52;
|
|
orc_union32 var53;
|
|
orc_union32 var54;
|
|
orc_union16 var55;
|
|
orc_union32 var56;
|
|
orc_union32 var57;
|
|
orc_union32 var58;
|
|
orc_union32 var59;
|
|
orc_union16 var60;
|
|
|
|
ptr0 = (orc_union32 *) ex->arrays[0];
|
|
ptr1 = (orc_union32 *) ex->arrays[1];
|
|
ptr4 = (orc_union32 *) ex->arrays[4];
|
|
ptr5 = (orc_union32 *) ex->arrays[5];
|
|
|
|
/* 6: loadpw */
|
|
var41.x2[0] = (int) 0x00000003; /* 3 or 1.4822e-323f */
|
|
var41.x2[1] = (int) 0x00000003; /* 3 or 1.4822e-323f */
|
|
/* 9: loadpw */
|
|
var42.x2[0] = (int) 0x00000002; /* 2 or 9.88131e-324f */
|
|
var42.x2[1] = (int) 0x00000002; /* 2 or 9.88131e-324f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var39 = ptr4[i];
|
|
/* 1: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var39.i;
|
|
var45.i = _src.x2[1];
|
|
var46.i = _src.x2[0];
|
|
}
|
|
/* 2: loadl */
|
|
var40 = ptr5[i];
|
|
/* 3: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var40.i;
|
|
var47.i = _src.x2[1];
|
|
var48.i = _src.x2[0];
|
|
}
|
|
/* 4: convubw */
|
|
var49.x2[0] = (orc_uint8) var45.x2[0];
|
|
var49.x2[1] = (orc_uint8) var45.x2[1];
|
|
/* 5: convubw */
|
|
var50.x2[0] = (orc_uint8) var47.x2[0];
|
|
var50.x2[1] = (orc_uint8) var47.x2[1];
|
|
/* 7: mullw */
|
|
var51.x2[0] = (var49.x2[0] * var41.x2[0]) & 0xffff;
|
|
var51.x2[1] = (var49.x2[1] * var41.x2[1]) & 0xffff;
|
|
/* 8: addw */
|
|
var52.x2[0] = var51.x2[0] + var50.x2[0];
|
|
var52.x2[1] = var51.x2[1] + var50.x2[1];
|
|
/* 10: addw */
|
|
var53.x2[0] = var52.x2[0] + var42.x2[0];
|
|
var53.x2[1] = var52.x2[1] + var42.x2[1];
|
|
/* 11: shruw */
|
|
var54.x2[0] = ((orc_uint16) var53.x2[0]) >> 2;
|
|
var54.x2[1] = ((orc_uint16) var53.x2[1]) >> 2;
|
|
/* 12: convsuswb */
|
|
var55.x2[0] = ORC_CLAMP_UB (var54.x2[0]);
|
|
var55.x2[1] = ORC_CLAMP_UB (var54.x2[1]);
|
|
/* 13: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var46.i;
|
|
_dest.x2[1] = var55.i;
|
|
var43.i = _dest.i;
|
|
}
|
|
/* 14: storel */
|
|
ptr0[i] = var43;
|
|
/* 15: mullw */
|
|
var56.x2[0] = (var50.x2[0] * var41.x2[0]) & 0xffff;
|
|
var56.x2[1] = (var50.x2[1] * var41.x2[1]) & 0xffff;
|
|
/* 16: addw */
|
|
var57.x2[0] = var56.x2[0] + var49.x2[0];
|
|
var57.x2[1] = var56.x2[1] + var49.x2[1];
|
|
/* 17: addw */
|
|
var58.x2[0] = var57.x2[0] + var42.x2[0];
|
|
var58.x2[1] = var57.x2[1] + var42.x2[1];
|
|
/* 18: shruw */
|
|
var59.x2[0] = ((orc_uint16) var58.x2[0]) >> 2;
|
|
var59.x2[1] = ((orc_uint16) var58.x2[1]) >> 2;
|
|
/* 19: convsuswb */
|
|
var60.x2[0] = ORC_CLAMP_UB (var59.x2[0]);
|
|
var60.x2[1] = ORC_CLAMP_UB (var59.x2[1]);
|
|
/* 20: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var48.i;
|
|
_dest.x2[1] = var60.i;
|
|
var44.i = _dest.i;
|
|
}
|
|
/* 21: storel */
|
|
ptr1[i] = var44;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_chroma_up_v2_u8 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
|
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n)
|
|
{
|
|
OrcExecutor _ex, *ex = &_ex;
|
|
static volatile int p_inited = 0;
|
|
static OrcCode *c = 0;
|
|
void (*func) (OrcExecutor *);
|
|
|
|
if (!p_inited) {
|
|
orc_once_mutex_lock ();
|
|
if (!p_inited) {
|
|
OrcProgram *p;
|
|
|
|
#if 1
|
|
static const orc_uint8 bc[] = {
|
|
1, 9, 25, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 104, 114,
|
|
111, 109, 97, 95, 117, 112, 95, 118, 50, 95, 117, 56, 11, 4, 4, 11,
|
|
4, 4, 12, 4, 4, 12, 4, 4, 14, 2, 3, 0, 0, 0, 14, 2,
|
|
2, 0, 0, 0, 20, 2, 20, 2, 20, 2, 20, 2, 20, 4, 20, 4,
|
|
20, 4, 198, 34, 32, 4, 198, 35, 33, 5, 21, 1, 150, 36, 34, 21,
|
|
1, 150, 37, 35, 21, 1, 89, 38, 36, 16, 21, 1, 70, 38, 38, 37,
|
|
21, 1, 70, 38, 38, 17, 21, 1, 95, 38, 38, 17, 21, 1, 160, 34,
|
|
38, 195, 0, 32, 34, 21, 1, 89, 38, 37, 16, 21, 1, 70, 38, 38,
|
|
36, 21, 1, 70, 38, 38, 17, 21, 1, 95, 38, 38, 17, 21, 1, 160,
|
|
35, 38, 195, 1, 33, 35, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_chroma_up_v2_u8);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_chroma_up_v2_u8");
|
|
orc_program_set_backup_function (p, _backup_video_orc_chroma_up_v2_u8);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_destination (p, 4, "d2");
|
|
orc_program_add_source (p, 4, "s1");
|
|
orc_program_add_source (p, 4, "s2");
|
|
orc_program_add_constant (p, 2, 0x00000003, "c1");
|
|
orc_program_add_constant (p, 2, 0x00000002, "c2");
|
|
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, 4, "t7");
|
|
|
|
orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splitlw", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_S2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 1, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 1, ORC_VAR_T6, ORC_VAR_T4, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mullw", 1, ORC_VAR_T7, ORC_VAR_T5, ORC_VAR_C1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T6,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "shruw", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convsuswb", 1, ORC_VAR_T3, ORC_VAR_T7,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T3,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mullw", 1, ORC_VAR_T7, ORC_VAR_T6, ORC_VAR_C1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T5,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "shruw", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convsuswb", 1, ORC_VAR_T4, ORC_VAR_T7,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_T4,
|
|
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_D2] = d2;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_chroma_up_v2_u16 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_chroma_up_v2_u16 (guint16 * ORC_RESTRICT d1,
|
|
guint16 * ORC_RESTRICT d2, const guint16 * ORC_RESTRICT s1,
|
|
const guint16 * ORC_RESTRICT s2, int n)
|
|
{
|
|
int i;
|
|
orc_union64 *ORC_RESTRICT ptr0;
|
|
orc_union64 *ORC_RESTRICT ptr1;
|
|
const orc_union64 *ORC_RESTRICT ptr4;
|
|
const orc_union64 *ORC_RESTRICT ptr5;
|
|
orc_union64 var39;
|
|
orc_union64 var40;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union64 var41;
|
|
#else
|
|
orc_union64 var41;
|
|
#endif
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union64 var42;
|
|
#else
|
|
orc_union64 var42;
|
|
#endif
|
|
orc_union64 var43;
|
|
orc_union64 var44;
|
|
orc_union32 var45;
|
|
orc_union32 var46;
|
|
orc_union32 var47;
|
|
orc_union32 var48;
|
|
orc_union64 var49;
|
|
orc_union64 var50;
|
|
orc_union64 var51;
|
|
orc_union64 var52;
|
|
orc_union64 var53;
|
|
orc_union64 var54;
|
|
orc_union32 var55;
|
|
orc_union64 var56;
|
|
orc_union64 var57;
|
|
orc_union64 var58;
|
|
orc_union64 var59;
|
|
orc_union32 var60;
|
|
|
|
ptr0 = (orc_union64 *) d1;
|
|
ptr1 = (orc_union64 *) d2;
|
|
ptr4 = (orc_union64 *) s1;
|
|
ptr5 = (orc_union64 *) s2;
|
|
|
|
/* 6: loadpl */
|
|
var41.x2[0] = (int) 0x00000003; /* 3 or 1.4822e-323f */
|
|
var41.x2[1] = (int) 0x00000003; /* 3 or 1.4822e-323f */
|
|
/* 9: loadpl */
|
|
var42.x2[0] = (int) 0x00000002; /* 2 or 9.88131e-324f */
|
|
var42.x2[1] = (int) 0x00000002; /* 2 or 9.88131e-324f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadq */
|
|
var39 = ptr4[i];
|
|
/* 1: splitql */
|
|
{
|
|
orc_union64 _src;
|
|
_src.i = var39.i;
|
|
var45.i = _src.x2[1];
|
|
var46.i = _src.x2[0];
|
|
}
|
|
/* 2: loadq */
|
|
var40 = ptr5[i];
|
|
/* 3: splitql */
|
|
{
|
|
orc_union64 _src;
|
|
_src.i = var40.i;
|
|
var47.i = _src.x2[1];
|
|
var48.i = _src.x2[0];
|
|
}
|
|
/* 4: convuwl */
|
|
var49.x2[0] = (orc_uint16) var45.x2[0];
|
|
var49.x2[1] = (orc_uint16) var45.x2[1];
|
|
/* 5: convuwl */
|
|
var50.x2[0] = (orc_uint16) var47.x2[0];
|
|
var50.x2[1] = (orc_uint16) var47.x2[1];
|
|
/* 7: mulll */
|
|
var51.x2[0] =
|
|
(((orc_uint32) var49.x2[0]) * ((orc_uint32) var41.x2[0])) & 0xffffffff;
|
|
var51.x2[1] =
|
|
(((orc_uint32) var49.x2[1]) * ((orc_uint32) var41.x2[1])) & 0xffffffff;
|
|
/* 8: addl */
|
|
var52.x2[0] = ((orc_uint32) var51.x2[0]) + ((orc_uint32) var50.x2[0]);
|
|
var52.x2[1] = ((orc_uint32) var51.x2[1]) + ((orc_uint32) var50.x2[1]);
|
|
/* 10: addl */
|
|
var53.x2[0] = ((orc_uint32) var52.x2[0]) + ((orc_uint32) var42.x2[0]);
|
|
var53.x2[1] = ((orc_uint32) var52.x2[1]) + ((orc_uint32) var42.x2[1]);
|
|
/* 11: shrul */
|
|
var54.x2[0] = ((orc_uint32) var53.x2[0]) >> 2;
|
|
var54.x2[1] = ((orc_uint32) var53.x2[1]) >> 2;
|
|
/* 12: convsuslw */
|
|
var55.x2[0] = ORC_CLAMP_UW (var54.x2[0]);
|
|
var55.x2[1] = ORC_CLAMP_UW (var54.x2[1]);
|
|
/* 13: mergelq */
|
|
{
|
|
orc_union64 _dest;
|
|
_dest.x2[0] = var46.i;
|
|
_dest.x2[1] = var55.i;
|
|
var43.i = _dest.i;
|
|
}
|
|
/* 14: storeq */
|
|
ptr0[i] = var43;
|
|
/* 15: mulll */
|
|
var56.x2[0] =
|
|
(((orc_uint32) var50.x2[0]) * ((orc_uint32) var41.x2[0])) & 0xffffffff;
|
|
var56.x2[1] =
|
|
(((orc_uint32) var50.x2[1]) * ((orc_uint32) var41.x2[1])) & 0xffffffff;
|
|
/* 16: addl */
|
|
var57.x2[0] = ((orc_uint32) var56.x2[0]) + ((orc_uint32) var49.x2[0]);
|
|
var57.x2[1] = ((orc_uint32) var56.x2[1]) + ((orc_uint32) var49.x2[1]);
|
|
/* 17: addl */
|
|
var58.x2[0] = ((orc_uint32) var57.x2[0]) + ((orc_uint32) var42.x2[0]);
|
|
var58.x2[1] = ((orc_uint32) var57.x2[1]) + ((orc_uint32) var42.x2[1]);
|
|
/* 18: shrul */
|
|
var59.x2[0] = ((orc_uint32) var58.x2[0]) >> 2;
|
|
var59.x2[1] = ((orc_uint32) var58.x2[1]) >> 2;
|
|
/* 19: convsuslw */
|
|
var60.x2[0] = ORC_CLAMP_UW (var59.x2[0]);
|
|
var60.x2[1] = ORC_CLAMP_UW (var59.x2[1]);
|
|
/* 20: mergelq */
|
|
{
|
|
orc_union64 _dest;
|
|
_dest.x2[0] = var48.i;
|
|
_dest.x2[1] = var60.i;
|
|
var44.i = _dest.i;
|
|
}
|
|
/* 21: storeq */
|
|
ptr1[i] = var44;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_chroma_up_v2_u16 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union64 *ORC_RESTRICT ptr0;
|
|
orc_union64 *ORC_RESTRICT ptr1;
|
|
const orc_union64 *ORC_RESTRICT ptr4;
|
|
const orc_union64 *ORC_RESTRICT ptr5;
|
|
orc_union64 var39;
|
|
orc_union64 var40;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union64 var41;
|
|
#else
|
|
orc_union64 var41;
|
|
#endif
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union64 var42;
|
|
#else
|
|
orc_union64 var42;
|
|
#endif
|
|
orc_union64 var43;
|
|
orc_union64 var44;
|
|
orc_union32 var45;
|
|
orc_union32 var46;
|
|
orc_union32 var47;
|
|
orc_union32 var48;
|
|
orc_union64 var49;
|
|
orc_union64 var50;
|
|
orc_union64 var51;
|
|
orc_union64 var52;
|
|
orc_union64 var53;
|
|
orc_union64 var54;
|
|
orc_union32 var55;
|
|
orc_union64 var56;
|
|
orc_union64 var57;
|
|
orc_union64 var58;
|
|
orc_union64 var59;
|
|
orc_union32 var60;
|
|
|
|
ptr0 = (orc_union64 *) ex->arrays[0];
|
|
ptr1 = (orc_union64 *) ex->arrays[1];
|
|
ptr4 = (orc_union64 *) ex->arrays[4];
|
|
ptr5 = (orc_union64 *) ex->arrays[5];
|
|
|
|
/* 6: loadpl */
|
|
var41.x2[0] = (int) 0x00000003; /* 3 or 1.4822e-323f */
|
|
var41.x2[1] = (int) 0x00000003; /* 3 or 1.4822e-323f */
|
|
/* 9: loadpl */
|
|
var42.x2[0] = (int) 0x00000002; /* 2 or 9.88131e-324f */
|
|
var42.x2[1] = (int) 0x00000002; /* 2 or 9.88131e-324f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadq */
|
|
var39 = ptr4[i];
|
|
/* 1: splitql */
|
|
{
|
|
orc_union64 _src;
|
|
_src.i = var39.i;
|
|
var45.i = _src.x2[1];
|
|
var46.i = _src.x2[0];
|
|
}
|
|
/* 2: loadq */
|
|
var40 = ptr5[i];
|
|
/* 3: splitql */
|
|
{
|
|
orc_union64 _src;
|
|
_src.i = var40.i;
|
|
var47.i = _src.x2[1];
|
|
var48.i = _src.x2[0];
|
|
}
|
|
/* 4: convuwl */
|
|
var49.x2[0] = (orc_uint16) var45.x2[0];
|
|
var49.x2[1] = (orc_uint16) var45.x2[1];
|
|
/* 5: convuwl */
|
|
var50.x2[0] = (orc_uint16) var47.x2[0];
|
|
var50.x2[1] = (orc_uint16) var47.x2[1];
|
|
/* 7: mulll */
|
|
var51.x2[0] =
|
|
(((orc_uint32) var49.x2[0]) * ((orc_uint32) var41.x2[0])) & 0xffffffff;
|
|
var51.x2[1] =
|
|
(((orc_uint32) var49.x2[1]) * ((orc_uint32) var41.x2[1])) & 0xffffffff;
|
|
/* 8: addl */
|
|
var52.x2[0] = ((orc_uint32) var51.x2[0]) + ((orc_uint32) var50.x2[0]);
|
|
var52.x2[1] = ((orc_uint32) var51.x2[1]) + ((orc_uint32) var50.x2[1]);
|
|
/* 10: addl */
|
|
var53.x2[0] = ((orc_uint32) var52.x2[0]) + ((orc_uint32) var42.x2[0]);
|
|
var53.x2[1] = ((orc_uint32) var52.x2[1]) + ((orc_uint32) var42.x2[1]);
|
|
/* 11: shrul */
|
|
var54.x2[0] = ((orc_uint32) var53.x2[0]) >> 2;
|
|
var54.x2[1] = ((orc_uint32) var53.x2[1]) >> 2;
|
|
/* 12: convsuslw */
|
|
var55.x2[0] = ORC_CLAMP_UW (var54.x2[0]);
|
|
var55.x2[1] = ORC_CLAMP_UW (var54.x2[1]);
|
|
/* 13: mergelq */
|
|
{
|
|
orc_union64 _dest;
|
|
_dest.x2[0] = var46.i;
|
|
_dest.x2[1] = var55.i;
|
|
var43.i = _dest.i;
|
|
}
|
|
/* 14: storeq */
|
|
ptr0[i] = var43;
|
|
/* 15: mulll */
|
|
var56.x2[0] =
|
|
(((orc_uint32) var50.x2[0]) * ((orc_uint32) var41.x2[0])) & 0xffffffff;
|
|
var56.x2[1] =
|
|
(((orc_uint32) var50.x2[1]) * ((orc_uint32) var41.x2[1])) & 0xffffffff;
|
|
/* 16: addl */
|
|
var57.x2[0] = ((orc_uint32) var56.x2[0]) + ((orc_uint32) var49.x2[0]);
|
|
var57.x2[1] = ((orc_uint32) var56.x2[1]) + ((orc_uint32) var49.x2[1]);
|
|
/* 17: addl */
|
|
var58.x2[0] = ((orc_uint32) var57.x2[0]) + ((orc_uint32) var42.x2[0]);
|
|
var58.x2[1] = ((orc_uint32) var57.x2[1]) + ((orc_uint32) var42.x2[1]);
|
|
/* 18: shrul */
|
|
var59.x2[0] = ((orc_uint32) var58.x2[0]) >> 2;
|
|
var59.x2[1] = ((orc_uint32) var58.x2[1]) >> 2;
|
|
/* 19: convsuslw */
|
|
var60.x2[0] = ORC_CLAMP_UW (var59.x2[0]);
|
|
var60.x2[1] = ORC_CLAMP_UW (var59.x2[1]);
|
|
/* 20: mergelq */
|
|
{
|
|
orc_union64 _dest;
|
|
_dest.x2[0] = var48.i;
|
|
_dest.x2[1] = var60.i;
|
|
var44.i = _dest.i;
|
|
}
|
|
/* 21: storeq */
|
|
ptr1[i] = var44;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_chroma_up_v2_u16 (guint16 * ORC_RESTRICT d1,
|
|
guint16 * ORC_RESTRICT d2, const guint16 * ORC_RESTRICT s1,
|
|
const guint16 * ORC_RESTRICT s2, int n)
|
|
{
|
|
OrcExecutor _ex, *ex = &_ex;
|
|
static volatile int p_inited = 0;
|
|
static OrcCode *c = 0;
|
|
void (*func) (OrcExecutor *);
|
|
|
|
if (!p_inited) {
|
|
orc_once_mutex_lock ();
|
|
if (!p_inited) {
|
|
OrcProgram *p;
|
|
|
|
#if 1
|
|
static const orc_uint8 bc[] = {
|
|
1, 9, 26, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 104, 114,
|
|
111, 109, 97, 95, 117, 112, 95, 118, 50, 95, 117, 49, 54, 11, 8, 8,
|
|
11, 8, 8, 12, 8, 8, 12, 8, 8, 14, 4, 3, 0, 0, 0, 14,
|
|
4, 2, 0, 0, 0, 20, 4, 20, 4, 20, 4, 20, 4, 20, 8, 20,
|
|
8, 20, 8, 197, 34, 32, 4, 197, 35, 33, 5, 21, 1, 154, 36, 34,
|
|
21, 1, 154, 37, 35, 21, 1, 120, 38, 36, 16, 21, 1, 103, 38, 38,
|
|
37, 21, 1, 103, 38, 38, 17, 21, 1, 126, 38, 38, 17, 21, 1, 166,
|
|
34, 38, 194, 0, 32, 34, 21, 1, 120, 38, 37, 16, 21, 1, 103, 38,
|
|
38, 36, 21, 1, 103, 38, 38, 17, 21, 1, 126, 38, 38, 17, 21, 1,
|
|
166, 35, 38, 194, 1, 33, 35, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_chroma_up_v2_u16);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_chroma_up_v2_u16");
|
|
orc_program_set_backup_function (p, _backup_video_orc_chroma_up_v2_u16);
|
|
orc_program_add_destination (p, 8, "d1");
|
|
orc_program_add_destination (p, 8, "d2");
|
|
orc_program_add_source (p, 8, "s1");
|
|
orc_program_add_source (p, 8, "s2");
|
|
orc_program_add_constant (p, 4, 0x00000003, "c1");
|
|
orc_program_add_constant (p, 4, 0x00000002, "c2");
|
|
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, 8, "t5");
|
|
orc_program_add_temporary (p, 8, "t6");
|
|
orc_program_add_temporary (p, 8, "t7");
|
|
|
|
orc_program_append_2 (p, "splitql", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "splitql", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_S2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convuwl", 1, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convuwl", 1, ORC_VAR_T6, ORC_VAR_T4, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulll", 1, ORC_VAR_T7, ORC_VAR_T5, ORC_VAR_C1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addl", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T6,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addl", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "shrul", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convsuslw", 1, ORC_VAR_T3, ORC_VAR_T7,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T3,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mulll", 1, ORC_VAR_T7, ORC_VAR_T6, ORC_VAR_C1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addl", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_T5,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addl", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "shrul", 1, ORC_VAR_T7, ORC_VAR_T7, ORC_VAR_C2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convsuslw", 1, ORC_VAR_T4, ORC_VAR_T7,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_T4,
|
|
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_D2] = d2;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_chroma_down_v2_u16 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_chroma_down_v2_u16 (guint16 * ORC_RESTRICT d1,
|
|
const guint16 * ORC_RESTRICT s1, const guint16 * ORC_RESTRICT s2, int n)
|
|
{
|
|
int i;
|
|
orc_union64 *ORC_RESTRICT ptr0;
|
|
const orc_union64 *ORC_RESTRICT ptr4;
|
|
const orc_union64 *ORC_RESTRICT ptr5;
|
|
orc_union64 var35;
|
|
orc_union64 var36;
|
|
orc_union64 var37;
|
|
orc_union32 var38;
|
|
orc_union32 var39;
|
|
orc_union32 var40;
|
|
orc_union32 var41;
|
|
|
|
ptr0 = (orc_union64 *) d1;
|
|
ptr4 = (orc_union64 *) s1;
|
|
ptr5 = (orc_union64 *) s2;
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadq */
|
|
var35 = ptr4[i];
|
|
/* 1: splitql */
|
|
{
|
|
orc_union64 _src;
|
|
_src.i = var35.i;
|
|
var38.i = _src.x2[1];
|
|
var39.i = _src.x2[0];
|
|
}
|
|
/* 2: loadq */
|
|
var36 = ptr5[i];
|
|
/* 3: select1ql */
|
|
{
|
|
orc_union64 _src;
|
|
_src.i = var36.i;
|
|
var40.i = _src.x2[1];
|
|
}
|
|
/* 4: avguw */
|
|
var41.x2[0] =
|
|
((orc_uint16) var38.x2[0] + (orc_uint16) var40.x2[0] + 1) >> 1;
|
|
var41.x2[1] =
|
|
((orc_uint16) var38.x2[1] + (orc_uint16) var40.x2[1] + 1) >> 1;
|
|
/* 5: mergelq */
|
|
{
|
|
orc_union64 _dest;
|
|
_dest.x2[0] = var39.i;
|
|
_dest.x2[1] = var41.i;
|
|
var37.i = _dest.i;
|
|
}
|
|
/* 6: storeq */
|
|
ptr0[i] = var37;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_chroma_down_v2_u16 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union64 *ORC_RESTRICT ptr0;
|
|
const orc_union64 *ORC_RESTRICT ptr4;
|
|
const orc_union64 *ORC_RESTRICT ptr5;
|
|
orc_union64 var35;
|
|
orc_union64 var36;
|
|
orc_union64 var37;
|
|
orc_union32 var38;
|
|
orc_union32 var39;
|
|
orc_union32 var40;
|
|
orc_union32 var41;
|
|
|
|
ptr0 = (orc_union64 *) ex->arrays[0];
|
|
ptr4 = (orc_union64 *) ex->arrays[4];
|
|
ptr5 = (orc_union64 *) ex->arrays[5];
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadq */
|
|
var35 = ptr4[i];
|
|
/* 1: splitql */
|
|
{
|
|
orc_union64 _src;
|
|
_src.i = var35.i;
|
|
var38.i = _src.x2[1];
|
|
var39.i = _src.x2[0];
|
|
}
|
|
/* 2: loadq */
|
|
var36 = ptr5[i];
|
|
/* 3: select1ql */
|
|
{
|
|
orc_union64 _src;
|
|
_src.i = var36.i;
|
|
var40.i = _src.x2[1];
|
|
}
|
|
/* 4: avguw */
|
|
var41.x2[0] =
|
|
((orc_uint16) var38.x2[0] + (orc_uint16) var40.x2[0] + 1) >> 1;
|
|
var41.x2[1] =
|
|
((orc_uint16) var38.x2[1] + (orc_uint16) var40.x2[1] + 1) >> 1;
|
|
/* 5: mergelq */
|
|
{
|
|
orc_union64 _dest;
|
|
_dest.x2[0] = var39.i;
|
|
_dest.x2[1] = var41.i;
|
|
var37.i = _dest.i;
|
|
}
|
|
/* 6: storeq */
|
|
ptr0[i] = var37;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_chroma_down_v2_u16 (guint16 * ORC_RESTRICT d1,
|
|
const guint16 * ORC_RESTRICT s1, const guint16 * ORC_RESTRICT s2, 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, 99, 104, 114,
|
|
111, 109, 97, 95, 100, 111, 119, 110, 95, 118, 50, 95, 117, 49, 54, 11,
|
|
8, 8, 12, 8, 8, 12, 8, 8, 20, 4, 20, 4, 20, 4, 197, 33,
|
|
32, 4, 193, 34, 5, 21, 1, 76, 33, 33, 34, 194, 0, 32, 33, 2,
|
|
0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_chroma_down_v2_u16);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_chroma_down_v2_u16");
|
|
orc_program_set_backup_function (p, _backup_video_orc_chroma_down_v2_u16);
|
|
orc_program_add_destination (p, 8, "d1");
|
|
orc_program_add_source (p, 8, "s1");
|
|
orc_program_add_source (p, 8, "s2");
|
|
orc_program_add_temporary (p, 4, "t1");
|
|
orc_program_add_temporary (p, 4, "t2");
|
|
orc_program_add_temporary (p, 4, "t3");
|
|
|
|
orc_program_append_2 (p, "splitql", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select1ql", 0, ORC_VAR_T3, ORC_VAR_S2,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "avguw", 1, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
|
|
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;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_chroma_down_v4_u8 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_chroma_down_v4_u8 (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)
|
|
{
|
|
int i;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
const orc_union32 *ORC_RESTRICT ptr5;
|
|
const orc_union32 *ORC_RESTRICT ptr6;
|
|
const orc_union32 *ORC_RESTRICT ptr7;
|
|
orc_union32 var37;
|
|
orc_union32 var38;
|
|
orc_union32 var39;
|
|
orc_union32 var40;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union32 var41;
|
|
#else
|
|
orc_union32 var41;
|
|
#endif
|
|
orc_union32 var42;
|
|
orc_union16 var43;
|
|
orc_union16 var44;
|
|
orc_union32 var45;
|
|
orc_union16 var46;
|
|
orc_union32 var47;
|
|
orc_union32 var48;
|
|
orc_union16 var49;
|
|
orc_union32 var50;
|
|
orc_union16 var51;
|
|
orc_union32 var52;
|
|
orc_union32 var53;
|
|
orc_union32 var54;
|
|
orc_union32 var55;
|
|
orc_union32 var56;
|
|
orc_union32 var57;
|
|
orc_union32 var58;
|
|
orc_union16 var59;
|
|
|
|
ptr0 = (orc_union32 *) d1;
|
|
ptr4 = (orc_union32 *) s1;
|
|
ptr5 = (orc_union32 *) s2;
|
|
ptr6 = (orc_union32 *) s3;
|
|
ptr7 = (orc_union32 *) s4;
|
|
|
|
/* 17: loadpw */
|
|
var41.x2[0] = (int) 0x00000004; /* 4 or 1.97626e-323f */
|
|
var41.x2[1] = (int) 0x00000004; /* 4 or 1.97626e-323f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var37 = ptr4[i];
|
|
/* 1: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var37.i;
|
|
var43.i = _src.x2[1];
|
|
var44.i = _src.x2[0];
|
|
}
|
|
/* 2: convubw */
|
|
var45.x2[0] = (orc_uint8) var43.x2[0];
|
|
var45.x2[1] = (orc_uint8) var43.x2[1];
|
|
/* 3: loadl */
|
|
var38 = ptr7[i];
|
|
/* 4: select1lw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var38.i;
|
|
var46.i = _src.x2[1];
|
|
}
|
|
/* 5: convubw */
|
|
var47.x2[0] = (orc_uint8) var46.x2[0];
|
|
var47.x2[1] = (orc_uint8) var46.x2[1];
|
|
/* 6: addw */
|
|
var48.x2[0] = var45.x2[0] + var47.x2[0];
|
|
var48.x2[1] = var45.x2[1] + var47.x2[1];
|
|
/* 7: loadl */
|
|
var39 = ptr5[i];
|
|
/* 8: select1lw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var39.i;
|
|
var49.i = _src.x2[1];
|
|
}
|
|
/* 9: convubw */
|
|
var50.x2[0] = (orc_uint8) var49.x2[0];
|
|
var50.x2[1] = (orc_uint8) var49.x2[1];
|
|
/* 10: loadl */
|
|
var40 = ptr6[i];
|
|
/* 11: select1lw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var40.i;
|
|
var51.i = _src.x2[1];
|
|
}
|
|
/* 12: convubw */
|
|
var52.x2[0] = (orc_uint8) var51.x2[0];
|
|
var52.x2[1] = (orc_uint8) var51.x2[1];
|
|
/* 13: addw */
|
|
var53.x2[0] = var50.x2[0] + var52.x2[0];
|
|
var53.x2[1] = var50.x2[1] + var52.x2[1];
|
|
/* 14: shlw */
|
|
var54.x2[0] = ((orc_uint16) var53.x2[0]) << 1;
|
|
var54.x2[1] = ((orc_uint16) var53.x2[1]) << 1;
|
|
/* 15: addw */
|
|
var55.x2[0] = var53.x2[0] + var54.x2[0];
|
|
var55.x2[1] = var53.x2[1] + var54.x2[1];
|
|
/* 16: addw */
|
|
var56.x2[0] = var48.x2[0] + var55.x2[0];
|
|
var56.x2[1] = var48.x2[1] + var55.x2[1];
|
|
/* 18: addw */
|
|
var57.x2[0] = var56.x2[0] + var41.x2[0];
|
|
var57.x2[1] = var56.x2[1] + var41.x2[1];
|
|
/* 19: shruw */
|
|
var58.x2[0] = ((orc_uint16) var57.x2[0]) >> 3;
|
|
var58.x2[1] = ((orc_uint16) var57.x2[1]) >> 3;
|
|
/* 20: convsuswb */
|
|
var59.x2[0] = ORC_CLAMP_UB (var58.x2[0]);
|
|
var59.x2[1] = ORC_CLAMP_UB (var58.x2[1]);
|
|
/* 21: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var44.i;
|
|
_dest.x2[1] = var59.i;
|
|
var42.i = _dest.i;
|
|
}
|
|
/* 22: storel */
|
|
ptr0[i] = var42;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_chroma_down_v4_u8 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union32 *ORC_RESTRICT ptr4;
|
|
const orc_union32 *ORC_RESTRICT ptr5;
|
|
const orc_union32 *ORC_RESTRICT ptr6;
|
|
const orc_union32 *ORC_RESTRICT ptr7;
|
|
orc_union32 var37;
|
|
orc_union32 var38;
|
|
orc_union32 var39;
|
|
orc_union32 var40;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union32 var41;
|
|
#else
|
|
orc_union32 var41;
|
|
#endif
|
|
orc_union32 var42;
|
|
orc_union16 var43;
|
|
orc_union16 var44;
|
|
orc_union32 var45;
|
|
orc_union16 var46;
|
|
orc_union32 var47;
|
|
orc_union32 var48;
|
|
orc_union16 var49;
|
|
orc_union32 var50;
|
|
orc_union16 var51;
|
|
orc_union32 var52;
|
|
orc_union32 var53;
|
|
orc_union32 var54;
|
|
orc_union32 var55;
|
|
orc_union32 var56;
|
|
orc_union32 var57;
|
|
orc_union32 var58;
|
|
orc_union16 var59;
|
|
|
|
ptr0 = (orc_union32 *) ex->arrays[0];
|
|
ptr4 = (orc_union32 *) ex->arrays[4];
|
|
ptr5 = (orc_union32 *) ex->arrays[5];
|
|
ptr6 = (orc_union32 *) ex->arrays[6];
|
|
ptr7 = (orc_union32 *) ex->arrays[7];
|
|
|
|
/* 17: loadpw */
|
|
var41.x2[0] = (int) 0x00000004; /* 4 or 1.97626e-323f */
|
|
var41.x2[1] = (int) 0x00000004; /* 4 or 1.97626e-323f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadl */
|
|
var37 = ptr4[i];
|
|
/* 1: splitlw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var37.i;
|
|
var43.i = _src.x2[1];
|
|
var44.i = _src.x2[0];
|
|
}
|
|
/* 2: convubw */
|
|
var45.x2[0] = (orc_uint8) var43.x2[0];
|
|
var45.x2[1] = (orc_uint8) var43.x2[1];
|
|
/* 3: loadl */
|
|
var38 = ptr7[i];
|
|
/* 4: select1lw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var38.i;
|
|
var46.i = _src.x2[1];
|
|
}
|
|
/* 5: convubw */
|
|
var47.x2[0] = (orc_uint8) var46.x2[0];
|
|
var47.x2[1] = (orc_uint8) var46.x2[1];
|
|
/* 6: addw */
|
|
var48.x2[0] = var45.x2[0] + var47.x2[0];
|
|
var48.x2[1] = var45.x2[1] + var47.x2[1];
|
|
/* 7: loadl */
|
|
var39 = ptr5[i];
|
|
/* 8: select1lw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var39.i;
|
|
var49.i = _src.x2[1];
|
|
}
|
|
/* 9: convubw */
|
|
var50.x2[0] = (orc_uint8) var49.x2[0];
|
|
var50.x2[1] = (orc_uint8) var49.x2[1];
|
|
/* 10: loadl */
|
|
var40 = ptr6[i];
|
|
/* 11: select1lw */
|
|
{
|
|
orc_union32 _src;
|
|
_src.i = var40.i;
|
|
var51.i = _src.x2[1];
|
|
}
|
|
/* 12: convubw */
|
|
var52.x2[0] = (orc_uint8) var51.x2[0];
|
|
var52.x2[1] = (orc_uint8) var51.x2[1];
|
|
/* 13: addw */
|
|
var53.x2[0] = var50.x2[0] + var52.x2[0];
|
|
var53.x2[1] = var50.x2[1] + var52.x2[1];
|
|
/* 14: shlw */
|
|
var54.x2[0] = ((orc_uint16) var53.x2[0]) << 1;
|
|
var54.x2[1] = ((orc_uint16) var53.x2[1]) << 1;
|
|
/* 15: addw */
|
|
var55.x2[0] = var53.x2[0] + var54.x2[0];
|
|
var55.x2[1] = var53.x2[1] + var54.x2[1];
|
|
/* 16: addw */
|
|
var56.x2[0] = var48.x2[0] + var55.x2[0];
|
|
var56.x2[1] = var48.x2[1] + var55.x2[1];
|
|
/* 18: addw */
|
|
var57.x2[0] = var56.x2[0] + var41.x2[0];
|
|
var57.x2[1] = var56.x2[1] + var41.x2[1];
|
|
/* 19: shruw */
|
|
var58.x2[0] = ((orc_uint16) var57.x2[0]) >> 3;
|
|
var58.x2[1] = ((orc_uint16) var57.x2[1]) >> 3;
|
|
/* 20: convsuswb */
|
|
var59.x2[0] = ORC_CLAMP_UB (var58.x2[0]);
|
|
var59.x2[1] = ORC_CLAMP_UB (var58.x2[1]);
|
|
/* 21: mergewl */
|
|
{
|
|
orc_union32 _dest;
|
|
_dest.x2[0] = var44.i;
|
|
_dest.x2[1] = var59.i;
|
|
var42.i = _dest.i;
|
|
}
|
|
/* 22: storel */
|
|
ptr0[i] = var42;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_chroma_down_v4_u8 (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)
|
|
{
|
|
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, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 104, 114,
|
|
111, 109, 97, 95, 100, 111, 119, 110, 95, 118, 52, 95, 117, 56, 11, 4,
|
|
4, 12, 4, 4, 12, 4, 4, 12, 4, 4, 12, 4, 4, 14, 2, 1,
|
|
0, 0, 0, 14, 2, 4, 0, 0, 0, 14, 2, 3, 0, 0, 0, 20,
|
|
2, 20, 2, 20, 4, 20, 4, 20, 4, 198, 33, 32, 4, 21, 1, 150,
|
|
34, 33, 191, 33, 7, 21, 1, 150, 35, 33, 21, 1, 70, 36, 34, 35,
|
|
191, 33, 5, 21, 1, 150, 34, 33, 191, 33, 6, 21, 1, 150, 35, 33,
|
|
21, 1, 70, 34, 34, 35, 21, 1, 93, 35, 34, 16, 21, 1, 70, 34,
|
|
34, 35, 21, 1, 70, 36, 36, 34, 21, 1, 70, 36, 36, 17, 21, 1,
|
|
95, 36, 36, 18, 21, 1, 160, 33, 36, 195, 0, 32, 33, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_chroma_down_v4_u8);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_chroma_down_v4_u8");
|
|
orc_program_set_backup_function (p, _backup_video_orc_chroma_down_v4_u8);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 4, "s1");
|
|
orc_program_add_source (p, 4, "s2");
|
|
orc_program_add_source (p, 4, "s3");
|
|
orc_program_add_source (p, 4, "s4");
|
|
orc_program_add_constant (p, 2, 0x00000001, "c1");
|
|
orc_program_add_constant (p, 2, 0x00000004, "c2");
|
|
orc_program_add_constant (p, 2, 0x00000003, "c3");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 2, "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, "splitlw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 1, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T2, ORC_VAR_S4,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 1, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 1, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_T4,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T2, ORC_VAR_S2,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 1, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select1lw", 0, ORC_VAR_T2, ORC_VAR_S3,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 1, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "shlw", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_C1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 1, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T3,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 1, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "shruw", 1, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C3,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convsuswb", 1, ORC_VAR_T2, ORC_VAR_T5,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
|
|
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;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
ex->arrays[ORC_VAR_S3] = (void *) s3;
|
|
ex->arrays[ORC_VAR_S4] = (void *) s4;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_chroma_down_v4_u16 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_chroma_down_v4_u16 (guint16 * ORC_RESTRICT d1,
|
|
const guint16 * ORC_RESTRICT s1, const guint16 * ORC_RESTRICT s2,
|
|
const guint16 * ORC_RESTRICT s3, const guint16 * ORC_RESTRICT s4, int n)
|
|
{
|
|
int i;
|
|
orc_union64 *ORC_RESTRICT ptr0;
|
|
const orc_union64 *ORC_RESTRICT ptr4;
|
|
const orc_union64 *ORC_RESTRICT ptr5;
|
|
const orc_union64 *ORC_RESTRICT ptr6;
|
|
const orc_union64 *ORC_RESTRICT ptr7;
|
|
orc_union64 var37;
|
|
orc_union64 var38;
|
|
orc_union64 var39;
|
|
orc_union64 var40;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union64 var41;
|
|
#else
|
|
orc_union64 var41;
|
|
#endif
|
|
orc_union64 var42;
|
|
orc_union32 var43;
|
|
orc_union32 var44;
|
|
orc_union64 var45;
|
|
orc_union32 var46;
|
|
orc_union64 var47;
|
|
orc_union64 var48;
|
|
orc_union32 var49;
|
|
orc_union64 var50;
|
|
orc_union32 var51;
|
|
orc_union64 var52;
|
|
orc_union64 var53;
|
|
orc_union64 var54;
|
|
orc_union64 var55;
|
|
orc_union64 var56;
|
|
orc_union64 var57;
|
|
orc_union64 var58;
|
|
orc_union32 var59;
|
|
|
|
ptr0 = (orc_union64 *) d1;
|
|
ptr4 = (orc_union64 *) s1;
|
|
ptr5 = (orc_union64 *) s2;
|
|
ptr6 = (orc_union64 *) s3;
|
|
ptr7 = (orc_union64 *) s4;
|
|
|
|
/* 17: loadpl */
|
|
var41.x2[0] = (int) 0x00000004; /* 4 or 1.97626e-323f */
|
|
var41.x2[1] = (int) 0x00000004; /* 4 or 1.97626e-323f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadq */
|
|
var37 = ptr4[i];
|
|
/* 1: splitql */
|
|
{
|
|
orc_union64 _src;
|
|
_src.i = var37.i;
|
|
var43.i = _src.x2[1];
|
|
var44.i = _src.x2[0];
|
|
}
|
|
/* 2: convuwl */
|
|
var45.x2[0] = (orc_uint16) var43.x2[0];
|
|
var45.x2[1] = (orc_uint16) var43.x2[1];
|
|
/* 3: loadq */
|
|
var38 = ptr7[i];
|
|
/* 4: select1ql */
|
|
{
|
|
orc_union64 _src;
|
|
_src.i = var38.i;
|
|
var46.i = _src.x2[1];
|
|
}
|
|
/* 5: convuwl */
|
|
var47.x2[0] = (orc_uint16) var46.x2[0];
|
|
var47.x2[1] = (orc_uint16) var46.x2[1];
|
|
/* 6: addl */
|
|
var48.x2[0] = ((orc_uint32) var45.x2[0]) + ((orc_uint32) var47.x2[0]);
|
|
var48.x2[1] = ((orc_uint32) var45.x2[1]) + ((orc_uint32) var47.x2[1]);
|
|
/* 7: loadq */
|
|
var39 = ptr5[i];
|
|
/* 8: select1ql */
|
|
{
|
|
orc_union64 _src;
|
|
_src.i = var39.i;
|
|
var49.i = _src.x2[1];
|
|
}
|
|
/* 9: convuwl */
|
|
var50.x2[0] = (orc_uint16) var49.x2[0];
|
|
var50.x2[1] = (orc_uint16) var49.x2[1];
|
|
/* 10: loadq */
|
|
var40 = ptr6[i];
|
|
/* 11: select1ql */
|
|
{
|
|
orc_union64 _src;
|
|
_src.i = var40.i;
|
|
var51.i = _src.x2[1];
|
|
}
|
|
/* 12: convuwl */
|
|
var52.x2[0] = (orc_uint16) var51.x2[0];
|
|
var52.x2[1] = (orc_uint16) var51.x2[1];
|
|
/* 13: addl */
|
|
var53.x2[0] = ((orc_uint32) var50.x2[0]) + ((orc_uint32) var52.x2[0]);
|
|
var53.x2[1] = ((orc_uint32) var50.x2[1]) + ((orc_uint32) var52.x2[1]);
|
|
/* 14: shll */
|
|
var54.x2[0] = ((orc_uint32) var53.x2[0]) << 1;
|
|
var54.x2[1] = ((orc_uint32) var53.x2[1]) << 1;
|
|
/* 15: addl */
|
|
var55.x2[0] = ((orc_uint32) var53.x2[0]) + ((orc_uint32) var54.x2[0]);
|
|
var55.x2[1] = ((orc_uint32) var53.x2[1]) + ((orc_uint32) var54.x2[1]);
|
|
/* 16: addl */
|
|
var56.x2[0] = ((orc_uint32) var48.x2[0]) + ((orc_uint32) var55.x2[0]);
|
|
var56.x2[1] = ((orc_uint32) var48.x2[1]) + ((orc_uint32) var55.x2[1]);
|
|
/* 18: addl */
|
|
var57.x2[0] = ((orc_uint32) var56.x2[0]) + ((orc_uint32) var41.x2[0]);
|
|
var57.x2[1] = ((orc_uint32) var56.x2[1]) + ((orc_uint32) var41.x2[1]);
|
|
/* 19: shrul */
|
|
var58.x2[0] = ((orc_uint32) var57.x2[0]) >> 3;
|
|
var58.x2[1] = ((orc_uint32) var57.x2[1]) >> 3;
|
|
/* 20: convsuslw */
|
|
var59.x2[0] = ORC_CLAMP_UW (var58.x2[0]);
|
|
var59.x2[1] = ORC_CLAMP_UW (var58.x2[1]);
|
|
/* 21: mergelq */
|
|
{
|
|
orc_union64 _dest;
|
|
_dest.x2[0] = var44.i;
|
|
_dest.x2[1] = var59.i;
|
|
var42.i = _dest.i;
|
|
}
|
|
/* 22: storeq */
|
|
ptr0[i] = var42;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_chroma_down_v4_u16 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union64 *ORC_RESTRICT ptr0;
|
|
const orc_union64 *ORC_RESTRICT ptr4;
|
|
const orc_union64 *ORC_RESTRICT ptr5;
|
|
const orc_union64 *ORC_RESTRICT ptr6;
|
|
const orc_union64 *ORC_RESTRICT ptr7;
|
|
orc_union64 var37;
|
|
orc_union64 var38;
|
|
orc_union64 var39;
|
|
orc_union64 var40;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union64 var41;
|
|
#else
|
|
orc_union64 var41;
|
|
#endif
|
|
orc_union64 var42;
|
|
orc_union32 var43;
|
|
orc_union32 var44;
|
|
orc_union64 var45;
|
|
orc_union32 var46;
|
|
orc_union64 var47;
|
|
orc_union64 var48;
|
|
orc_union32 var49;
|
|
orc_union64 var50;
|
|
orc_union32 var51;
|
|
orc_union64 var52;
|
|
orc_union64 var53;
|
|
orc_union64 var54;
|
|
orc_union64 var55;
|
|
orc_union64 var56;
|
|
orc_union64 var57;
|
|
orc_union64 var58;
|
|
orc_union32 var59;
|
|
|
|
ptr0 = (orc_union64 *) ex->arrays[0];
|
|
ptr4 = (orc_union64 *) ex->arrays[4];
|
|
ptr5 = (orc_union64 *) ex->arrays[5];
|
|
ptr6 = (orc_union64 *) ex->arrays[6];
|
|
ptr7 = (orc_union64 *) ex->arrays[7];
|
|
|
|
/* 17: loadpl */
|
|
var41.x2[0] = (int) 0x00000004; /* 4 or 1.97626e-323f */
|
|
var41.x2[1] = (int) 0x00000004; /* 4 or 1.97626e-323f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadq */
|
|
var37 = ptr4[i];
|
|
/* 1: splitql */
|
|
{
|
|
orc_union64 _src;
|
|
_src.i = var37.i;
|
|
var43.i = _src.x2[1];
|
|
var44.i = _src.x2[0];
|
|
}
|
|
/* 2: convuwl */
|
|
var45.x2[0] = (orc_uint16) var43.x2[0];
|
|
var45.x2[1] = (orc_uint16) var43.x2[1];
|
|
/* 3: loadq */
|
|
var38 = ptr7[i];
|
|
/* 4: select1ql */
|
|
{
|
|
orc_union64 _src;
|
|
_src.i = var38.i;
|
|
var46.i = _src.x2[1];
|
|
}
|
|
/* 5: convuwl */
|
|
var47.x2[0] = (orc_uint16) var46.x2[0];
|
|
var47.x2[1] = (orc_uint16) var46.x2[1];
|
|
/* 6: addl */
|
|
var48.x2[0] = ((orc_uint32) var45.x2[0]) + ((orc_uint32) var47.x2[0]);
|
|
var48.x2[1] = ((orc_uint32) var45.x2[1]) + ((orc_uint32) var47.x2[1]);
|
|
/* 7: loadq */
|
|
var39 = ptr5[i];
|
|
/* 8: select1ql */
|
|
{
|
|
orc_union64 _src;
|
|
_src.i = var39.i;
|
|
var49.i = _src.x2[1];
|
|
}
|
|
/* 9: convuwl */
|
|
var50.x2[0] = (orc_uint16) var49.x2[0];
|
|
var50.x2[1] = (orc_uint16) var49.x2[1];
|
|
/* 10: loadq */
|
|
var40 = ptr6[i];
|
|
/* 11: select1ql */
|
|
{
|
|
orc_union64 _src;
|
|
_src.i = var40.i;
|
|
var51.i = _src.x2[1];
|
|
}
|
|
/* 12: convuwl */
|
|
var52.x2[0] = (orc_uint16) var51.x2[0];
|
|
var52.x2[1] = (orc_uint16) var51.x2[1];
|
|
/* 13: addl */
|
|
var53.x2[0] = ((orc_uint32) var50.x2[0]) + ((orc_uint32) var52.x2[0]);
|
|
var53.x2[1] = ((orc_uint32) var50.x2[1]) + ((orc_uint32) var52.x2[1]);
|
|
/* 14: shll */
|
|
var54.x2[0] = ((orc_uint32) var53.x2[0]) << 1;
|
|
var54.x2[1] = ((orc_uint32) var53.x2[1]) << 1;
|
|
/* 15: addl */
|
|
var55.x2[0] = ((orc_uint32) var53.x2[0]) + ((orc_uint32) var54.x2[0]);
|
|
var55.x2[1] = ((orc_uint32) var53.x2[1]) + ((orc_uint32) var54.x2[1]);
|
|
/* 16: addl */
|
|
var56.x2[0] = ((orc_uint32) var48.x2[0]) + ((orc_uint32) var55.x2[0]);
|
|
var56.x2[1] = ((orc_uint32) var48.x2[1]) + ((orc_uint32) var55.x2[1]);
|
|
/* 18: addl */
|
|
var57.x2[0] = ((orc_uint32) var56.x2[0]) + ((orc_uint32) var41.x2[0]);
|
|
var57.x2[1] = ((orc_uint32) var56.x2[1]) + ((orc_uint32) var41.x2[1]);
|
|
/* 19: shrul */
|
|
var58.x2[0] = ((orc_uint32) var57.x2[0]) >> 3;
|
|
var58.x2[1] = ((orc_uint32) var57.x2[1]) >> 3;
|
|
/* 20: convsuslw */
|
|
var59.x2[0] = ORC_CLAMP_UW (var58.x2[0]);
|
|
var59.x2[1] = ORC_CLAMP_UW (var58.x2[1]);
|
|
/* 21: mergelq */
|
|
{
|
|
orc_union64 _dest;
|
|
_dest.x2[0] = var44.i;
|
|
_dest.x2[1] = var59.i;
|
|
var42.i = _dest.i;
|
|
}
|
|
/* 22: storeq */
|
|
ptr0[i] = var42;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_chroma_down_v4_u16 (guint16 * ORC_RESTRICT d1,
|
|
const guint16 * ORC_RESTRICT s1, const guint16 * ORC_RESTRICT s2,
|
|
const guint16 * ORC_RESTRICT s3, const guint16 * ORC_RESTRICT s4, 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, 99, 104, 114,
|
|
111, 109, 97, 95, 100, 111, 119, 110, 95, 118, 52, 95, 117, 49, 54, 11,
|
|
8, 8, 12, 8, 8, 12, 8, 8, 12, 8, 8, 12, 8, 8, 14, 4,
|
|
1, 0, 0, 0, 14, 4, 4, 0, 0, 0, 14, 4, 3, 0, 0, 0,
|
|
20, 4, 20, 4, 20, 8, 20, 8, 20, 8, 197, 33, 32, 4, 21, 1,
|
|
154, 34, 33, 193, 33, 7, 21, 1, 154, 35, 33, 21, 1, 103, 36, 34,
|
|
35, 193, 33, 5, 21, 1, 154, 34, 33, 193, 33, 6, 21, 1, 154, 35,
|
|
33, 21, 1, 103, 34, 34, 35, 21, 1, 124, 35, 34, 16, 21, 1, 103,
|
|
34, 34, 35, 21, 1, 103, 36, 36, 34, 21, 1, 103, 36, 36, 17, 21,
|
|
1, 126, 36, 36, 18, 21, 1, 166, 33, 36, 194, 0, 32, 33, 2, 0,
|
|
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_chroma_down_v4_u16);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_chroma_down_v4_u16");
|
|
orc_program_set_backup_function (p, _backup_video_orc_chroma_down_v4_u16);
|
|
orc_program_add_destination (p, 8, "d1");
|
|
orc_program_add_source (p, 8, "s1");
|
|
orc_program_add_source (p, 8, "s2");
|
|
orc_program_add_source (p, 8, "s3");
|
|
orc_program_add_source (p, 8, "s4");
|
|
orc_program_add_constant (p, 4, 0x00000001, "c1");
|
|
orc_program_add_constant (p, 4, 0x00000004, "c2");
|
|
orc_program_add_constant (p, 4, 0x00000003, "c3");
|
|
orc_program_add_temporary (p, 4, "t1");
|
|
orc_program_add_temporary (p, 4, "t2");
|
|
orc_program_add_temporary (p, 8, "t3");
|
|
orc_program_add_temporary (p, 8, "t4");
|
|
orc_program_add_temporary (p, 8, "t5");
|
|
|
|
orc_program_append_2 (p, "splitql", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convuwl", 1, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select1ql", 0, ORC_VAR_T2, ORC_VAR_S4,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convuwl", 1, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addl", 1, ORC_VAR_T5, ORC_VAR_T3, ORC_VAR_T4,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select1ql", 0, ORC_VAR_T2, ORC_VAR_S2,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convuwl", 1, ORC_VAR_T3, ORC_VAR_T2, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "select1ql", 0, ORC_VAR_T2, ORC_VAR_S3,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convuwl", 1, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addl", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "shll", 1, ORC_VAR_T4, ORC_VAR_T3, ORC_VAR_C1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addl", 1, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T4,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addl", 1, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_T3,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addl", 1, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "shrul", 1, ORC_VAR_T5, ORC_VAR_T5, ORC_VAR_C3,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convsuslw", 1, ORC_VAR_T2, ORC_VAR_T5,
|
|
ORC_VAR_D1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mergelq", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
|
|
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;
|
|
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
|
ex->arrays[ORC_VAR_S3] = (void *) s3;
|
|
ex->arrays[ORC_VAR_S4] = (void *) s4;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_dither_none_4u8_mask */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_dither_none_4u8_mask (guint8 * ORC_RESTRICT d1, int p1, int n)
|
|
{
|
|
int i;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
orc_union32 var33;
|
|
orc_union32 var34;
|
|
orc_union32 var35;
|
|
|
|
ptr0 = (orc_union32 *) d1;
|
|
|
|
/* 0: loadpl */
|
|
var35.i = p1;
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 1: loadl */
|
|
var33 = ptr0[i];
|
|
/* 2: andnb */
|
|
var34.x4[0] = (~var35.x4[0]) & var33.x4[0];
|
|
var34.x4[1] = (~var35.x4[1]) & var33.x4[1];
|
|
var34.x4[2] = (~var35.x4[2]) & var33.x4[2];
|
|
var34.x4[3] = (~var35.x4[3]) & var33.x4[3];
|
|
/* 3: storel */
|
|
ptr0[i] = var34;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_dither_none_4u8_mask (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
orc_union32 var33;
|
|
orc_union32 var34;
|
|
orc_union32 var35;
|
|
|
|
ptr0 = (orc_union32 *) ex->arrays[0];
|
|
|
|
/* 0: loadpl */
|
|
var35.i = ex->params[24];
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 1: loadl */
|
|
var33 = ptr0[i];
|
|
/* 2: andnb */
|
|
var34.x4[0] = (~var35.x4[0]) & var33.x4[0];
|
|
var34.x4[1] = (~var35.x4[1]) & var33.x4[1];
|
|
var34.x4[2] = (~var35.x4[2]) & var33.x4[2];
|
|
var34.x4[3] = (~var35.x4[3]) & var33.x4[3];
|
|
/* 3: storel */
|
|
ptr0[i] = var34;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_dither_none_4u8_mask (guint8 * ORC_RESTRICT d1, int p1, 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, 30, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 100, 105, 116,
|
|
104, 101, 114, 95, 110, 111, 110, 101, 95, 52, 117, 56, 95, 109, 97,
|
|
115,
|
|
107, 11, 4, 4, 16, 4, 20, 4, 115, 32, 24, 21, 2, 37, 0, 32,
|
|
0, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_dither_none_4u8_mask);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_dither_none_4u8_mask");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_dither_none_4u8_mask);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_parameter (p, 4, "p1");
|
|
orc_program_add_temporary (p, 4, "t1");
|
|
|
|
orc_program_append_2 (p, "loadpl", 0, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "andnb", 2, ORC_VAR_D1, ORC_VAR_T1, 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->params[ORC_VAR_P1] = p1;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_dither_none_4u16_mask */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_dither_none_4u16_mask (guint16 * ORC_RESTRICT d1, orc_int64 p1, int n)
|
|
{
|
|
int i;
|
|
orc_union64 *ORC_RESTRICT ptr0;
|
|
orc_union64 var33;
|
|
orc_union64 var34;
|
|
orc_union64 var35;
|
|
|
|
ptr0 = (orc_union64 *) d1;
|
|
|
|
/* 0: loadpq */
|
|
var35.i = p1;
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 1: loadq */
|
|
var33 = ptr0[i];
|
|
/* 2: andnw */
|
|
var34.x4[0] = (~var35.x4[0]) & var33.x4[0];
|
|
var34.x4[1] = (~var35.x4[1]) & var33.x4[1];
|
|
var34.x4[2] = (~var35.x4[2]) & var33.x4[2];
|
|
var34.x4[3] = (~var35.x4[3]) & var33.x4[3];
|
|
/* 3: storeq */
|
|
ptr0[i] = var34;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_dither_none_4u16_mask (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union64 *ORC_RESTRICT ptr0;
|
|
orc_union64 var33;
|
|
orc_union64 var34;
|
|
orc_union64 var35;
|
|
|
|
ptr0 = (orc_union64 *) ex->arrays[0];
|
|
|
|
/* 0: loadpq */
|
|
var35.i =
|
|
(ex->params[24] & 0xffffffff) | ((orc_uint64) (ex->params[24 +
|
|
(ORC_VAR_T1 - ORC_VAR_P1)]) << 32);
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 1: loadq */
|
|
var33 = ptr0[i];
|
|
/* 2: andnw */
|
|
var34.x4[0] = (~var35.x4[0]) & var33.x4[0];
|
|
var34.x4[1] = (~var35.x4[1]) & var33.x4[1];
|
|
var34.x4[2] = (~var35.x4[2]) & var33.x4[2];
|
|
var34.x4[3] = (~var35.x4[3]) & var33.x4[3];
|
|
/* 3: storeq */
|
|
ptr0[i] = var34;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_dither_none_4u16_mask (guint16 * ORC_RESTRICT d1, orc_int64 p1, 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, 31, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 100, 105, 116,
|
|
104, 101, 114, 95, 110, 111, 110, 101, 95, 52, 117, 49, 54, 95, 109, 97,
|
|
115, 107, 11, 8, 8, 18, 8, 20, 8, 134, 32, 24, 21, 2, 74, 0,
|
|
32, 0, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_dither_none_4u16_mask);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_dither_none_4u16_mask");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_dither_none_4u16_mask);
|
|
orc_program_add_destination (p, 8, "d1");
|
|
orc_program_add_parameter_int64 (p, 8, "p1");
|
|
orc_program_add_temporary (p, 8, "t1");
|
|
|
|
orc_program_append_2 (p, "loadpq", 0, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "andnw", 2, ORC_VAR_D1, ORC_VAR_T1, 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;
|
|
{
|
|
orc_union64 tmp;
|
|
tmp.i = p1;
|
|
ex->params[ORC_VAR_P1] = ((orc_uint64) tmp.i) & 0xffffffff;
|
|
ex->params[ORC_VAR_T1] = ((orc_uint64) tmp.i) >> 32;
|
|
}
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_dither_verterr_4u8_mask */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_dither_verterr_4u8_mask (guint8 * ORC_RESTRICT d1,
|
|
guint16 * ORC_RESTRICT d2, orc_int64 p1, int n)
|
|
{
|
|
int i;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
orc_union64 *ORC_RESTRICT ptr1;
|
|
orc_union32 var34;
|
|
orc_union64 var35;
|
|
orc_union64 var36;
|
|
orc_union32 var37;
|
|
orc_union64 var38;
|
|
orc_union64 var39;
|
|
orc_union64 var40;
|
|
orc_union64 var41;
|
|
|
|
ptr0 = (orc_union32 *) d1;
|
|
ptr1 = (orc_union64 *) d2;
|
|
|
|
/* 0: loadpq */
|
|
var38.i = p1;
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 1: loadl */
|
|
var34 = ptr0[i];
|
|
/* 2: convubw */
|
|
var39.x4[0] = (orc_uint8) var34.x4[0];
|
|
var39.x4[1] = (orc_uint8) var34.x4[1];
|
|
var39.x4[2] = (orc_uint8) var34.x4[2];
|
|
var39.x4[3] = (orc_uint8) var34.x4[3];
|
|
/* 3: loadq */
|
|
var35 = ptr1[i];
|
|
/* 4: addw */
|
|
var40.x4[0] = var35.x4[0] + var39.x4[0];
|
|
var40.x4[1] = var35.x4[1] + var39.x4[1];
|
|
var40.x4[2] = var35.x4[2] + var39.x4[2];
|
|
var40.x4[3] = var35.x4[3] + var39.x4[3];
|
|
/* 5: andw */
|
|
var36.x4[0] = var38.x4[0] & var40.x4[0];
|
|
var36.x4[1] = var38.x4[1] & var40.x4[1];
|
|
var36.x4[2] = var38.x4[2] & var40.x4[2];
|
|
var36.x4[3] = var38.x4[3] & var40.x4[3];
|
|
/* 6: storeq */
|
|
ptr1[i] = var36;
|
|
/* 7: andnw */
|
|
var41.x4[0] = (~var38.x4[0]) & var40.x4[0];
|
|
var41.x4[1] = (~var38.x4[1]) & var40.x4[1];
|
|
var41.x4[2] = (~var38.x4[2]) & var40.x4[2];
|
|
var41.x4[3] = (~var38.x4[3]) & var40.x4[3];
|
|
/* 8: convsuswb */
|
|
var37.x4[0] = ORC_CLAMP_UB (var41.x4[0]);
|
|
var37.x4[1] = ORC_CLAMP_UB (var41.x4[1]);
|
|
var37.x4[2] = ORC_CLAMP_UB (var41.x4[2]);
|
|
var37.x4[3] = ORC_CLAMP_UB (var41.x4[3]);
|
|
/* 9: storel */
|
|
ptr0[i] = var37;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_dither_verterr_4u8_mask (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
orc_union64 *ORC_RESTRICT ptr1;
|
|
orc_union32 var34;
|
|
orc_union64 var35;
|
|
orc_union64 var36;
|
|
orc_union32 var37;
|
|
orc_union64 var38;
|
|
orc_union64 var39;
|
|
orc_union64 var40;
|
|
orc_union64 var41;
|
|
|
|
ptr0 = (orc_union32 *) ex->arrays[0];
|
|
ptr1 = (orc_union64 *) ex->arrays[1];
|
|
|
|
/* 0: loadpq */
|
|
var38.i =
|
|
(ex->params[24] & 0xffffffff) | ((orc_uint64) (ex->params[24 +
|
|
(ORC_VAR_T1 - ORC_VAR_P1)]) << 32);
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 1: loadl */
|
|
var34 = ptr0[i];
|
|
/* 2: convubw */
|
|
var39.x4[0] = (orc_uint8) var34.x4[0];
|
|
var39.x4[1] = (orc_uint8) var34.x4[1];
|
|
var39.x4[2] = (orc_uint8) var34.x4[2];
|
|
var39.x4[3] = (orc_uint8) var34.x4[3];
|
|
/* 3: loadq */
|
|
var35 = ptr1[i];
|
|
/* 4: addw */
|
|
var40.x4[0] = var35.x4[0] + var39.x4[0];
|
|
var40.x4[1] = var35.x4[1] + var39.x4[1];
|
|
var40.x4[2] = var35.x4[2] + var39.x4[2];
|
|
var40.x4[3] = var35.x4[3] + var39.x4[3];
|
|
/* 5: andw */
|
|
var36.x4[0] = var38.x4[0] & var40.x4[0];
|
|
var36.x4[1] = var38.x4[1] & var40.x4[1];
|
|
var36.x4[2] = var38.x4[2] & var40.x4[2];
|
|
var36.x4[3] = var38.x4[3] & var40.x4[3];
|
|
/* 6: storeq */
|
|
ptr1[i] = var36;
|
|
/* 7: andnw */
|
|
var41.x4[0] = (~var38.x4[0]) & var40.x4[0];
|
|
var41.x4[1] = (~var38.x4[1]) & var40.x4[1];
|
|
var41.x4[2] = (~var38.x4[2]) & var40.x4[2];
|
|
var41.x4[3] = (~var38.x4[3]) & var40.x4[3];
|
|
/* 8: convsuswb */
|
|
var37.x4[0] = ORC_CLAMP_UB (var41.x4[0]);
|
|
var37.x4[1] = ORC_CLAMP_UB (var41.x4[1]);
|
|
var37.x4[2] = ORC_CLAMP_UB (var41.x4[2]);
|
|
var37.x4[3] = ORC_CLAMP_UB (var41.x4[3]);
|
|
/* 9: storel */
|
|
ptr0[i] = var37;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_dither_verterr_4u8_mask (guint8 * ORC_RESTRICT d1,
|
|
guint16 * ORC_RESTRICT d2, orc_int64 p1, 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, 33, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 100, 105, 116,
|
|
104, 101, 114, 95, 118, 101, 114, 116, 101, 114, 114, 95, 52, 117, 56,
|
|
95,
|
|
109, 97, 115, 107, 11, 4, 4, 11, 8, 8, 18, 8, 20, 8, 20, 8,
|
|
134, 32, 24, 21, 2, 150, 33, 0, 21, 2, 70, 33, 1, 33, 21, 2,
|
|
73, 1, 32, 33, 21, 2, 74, 33, 32, 33, 21, 2, 160, 0, 33, 2,
|
|
0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_dither_verterr_4u8_mask);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_dither_verterr_4u8_mask");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_dither_verterr_4u8_mask);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_destination (p, 8, "d2");
|
|
orc_program_add_parameter_int64 (p, 8, "p1");
|
|
orc_program_add_temporary (p, 8, "t1");
|
|
orc_program_add_temporary (p, 8, "t2");
|
|
|
|
orc_program_append_2 (p, "loadpq", 0, ORC_VAR_T1, ORC_VAR_P1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 2, ORC_VAR_T2, ORC_VAR_D1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 2, ORC_VAR_T2, ORC_VAR_D2, ORC_VAR_T2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "andw", 2, ORC_VAR_D2, ORC_VAR_T1, ORC_VAR_T2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "andnw", 2, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convsuswb", 2, ORC_VAR_D1, ORC_VAR_T2,
|
|
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_D2] = d2;
|
|
{
|
|
orc_union64 tmp;
|
|
tmp.i = p1;
|
|
ex->params[ORC_VAR_P1] = ((orc_uint64) tmp.i) & 0xffffffff;
|
|
ex->params[ORC_VAR_T1] = ((orc_uint64) tmp.i) >> 32;
|
|
}
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_dither_fs_muladd_u8 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_dither_fs_muladd_u8 (guint16 * ORC_RESTRICT d1, int n)
|
|
{
|
|
int i;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union16 var34;
|
|
#else
|
|
orc_union16 var34;
|
|
#endif
|
|
orc_union16 var35;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union16 var36;
|
|
#else
|
|
orc_union16 var36;
|
|
#endif
|
|
orc_union16 var37;
|
|
orc_union16 var38;
|
|
orc_union16 var39;
|
|
orc_union16 var40;
|
|
orc_union16 var41;
|
|
orc_union16 var42;
|
|
|
|
ptr0 = (orc_union16 *) d1;
|
|
|
|
/* 1: loadpw */
|
|
var34.i = (int) 0x00000005; /* 5 or 2.47033e-323f */
|
|
/* 6: loadpw */
|
|
var36.i = (int) 0x00000003; /* 3 or 1.4822e-323f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadoffw */
|
|
var38 = ptr0[i + 4];
|
|
/* 2: mullw */
|
|
var39.i = (var38.i * var34.i) & 0xffff;
|
|
/* 3: loadw */
|
|
var35 = ptr0[i];
|
|
/* 4: addw */
|
|
var40.i = var39.i + var35.i;
|
|
/* 5: loadoffw */
|
|
var41 = ptr0[i + 8];
|
|
/* 7: mullw */
|
|
var42.i = (var41.i * var36.i) & 0xffff;
|
|
/* 8: addw */
|
|
var37.i = var40.i + var42.i;
|
|
/* 9: storew */
|
|
ptr0[i] = var37;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_dither_fs_muladd_u8 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union16 *ORC_RESTRICT ptr0;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union16 var34;
|
|
#else
|
|
orc_union16 var34;
|
|
#endif
|
|
orc_union16 var35;
|
|
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
|
volatile orc_union16 var36;
|
|
#else
|
|
orc_union16 var36;
|
|
#endif
|
|
orc_union16 var37;
|
|
orc_union16 var38;
|
|
orc_union16 var39;
|
|
orc_union16 var40;
|
|
orc_union16 var41;
|
|
orc_union16 var42;
|
|
|
|
ptr0 = (orc_union16 *) ex->arrays[0];
|
|
|
|
/* 1: loadpw */
|
|
var34.i = (int) 0x00000005; /* 5 or 2.47033e-323f */
|
|
/* 6: loadpw */
|
|
var36.i = (int) 0x00000003; /* 3 or 1.4822e-323f */
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadoffw */
|
|
var38 = ptr0[i + 4];
|
|
/* 2: mullw */
|
|
var39.i = (var38.i * var34.i) & 0xffff;
|
|
/* 3: loadw */
|
|
var35 = ptr0[i];
|
|
/* 4: addw */
|
|
var40.i = var39.i + var35.i;
|
|
/* 5: loadoffw */
|
|
var41 = ptr0[i + 8];
|
|
/* 7: mullw */
|
|
var42.i = (var41.i * var36.i) & 0xffff;
|
|
/* 8: addw */
|
|
var37.i = var40.i + var42.i;
|
|
/* 9: storew */
|
|
ptr0[i] = var37;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_dither_fs_muladd_u8 (guint16 * ORC_RESTRICT d1, 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, 29, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 100, 105, 116,
|
|
104, 101, 114, 95, 102, 115, 95, 109, 117, 108, 97, 100, 100, 95, 117,
|
|
56,
|
|
11, 2, 2, 14, 4, 4, 0, 0, 0, 14, 2, 5, 0, 0, 0, 14,
|
|
4, 8, 0, 0, 0, 14, 2, 3, 0, 0, 0, 20, 2, 20, 2, 83,
|
|
33, 0, 16, 89, 33, 33, 17, 70, 32, 33, 0, 83, 33, 0, 18, 89,
|
|
33, 33, 19, 70, 0, 32, 33, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_dither_fs_muladd_u8);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_dither_fs_muladd_u8");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_dither_fs_muladd_u8);
|
|
orc_program_add_destination (p, 2, "d1");
|
|
orc_program_add_constant (p, 4, 0x00000004, "c1");
|
|
orc_program_add_constant (p, 2, 0x00000005, "c2");
|
|
orc_program_add_constant (p, 4, 0x00000008, "c3");
|
|
orc_program_add_constant (p, 2, 0x00000003, "c4");
|
|
orc_program_add_temporary (p, 2, "t1");
|
|
orc_program_add_temporary (p, 2, "t2");
|
|
|
|
orc_program_append_2 (p, "loadoffw", 0, ORC_VAR_T2, ORC_VAR_D1,
|
|
ORC_VAR_C1, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C2,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "loadoffw", 0, ORC_VAR_T2, ORC_VAR_D1,
|
|
ORC_VAR_C3, ORC_VAR_D1);
|
|
orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 0, ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_T2,
|
|
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;
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_dither_ordered_u8 */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_dither_ordered_u8 (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int n)
|
|
{
|
|
int i;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
orc_int8 var32;
|
|
orc_int8 var33;
|
|
orc_int8 var34;
|
|
|
|
ptr0 = (orc_int8 *) d1;
|
|
ptr4 = (orc_int8 *) s1;
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var32 = ptr0[i];
|
|
/* 1: loadb */
|
|
var33 = ptr4[i];
|
|
/* 2: addusb */
|
|
var34 = ORC_CLAMP_UB ((orc_uint8) var32 + (orc_uint8) var33);
|
|
/* 3: storeb */
|
|
ptr0[i] = var34;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_dither_ordered_u8 (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_int8 *ORC_RESTRICT ptr0;
|
|
const orc_int8 *ORC_RESTRICT ptr4;
|
|
orc_int8 var32;
|
|
orc_int8 var33;
|
|
orc_int8 var34;
|
|
|
|
ptr0 = (orc_int8 *) ex->arrays[0];
|
|
ptr4 = (orc_int8 *) ex->arrays[4];
|
|
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 0: loadb */
|
|
var32 = ptr0[i];
|
|
/* 1: loadb */
|
|
var33 = ptr4[i];
|
|
/* 2: addusb */
|
|
var34 = ORC_CLAMP_UB ((orc_uint8) var32 + (orc_uint8) var33);
|
|
/* 3: storeb */
|
|
ptr0[i] = var34;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_dither_ordered_u8 (guint8 * ORC_RESTRICT d1,
|
|
const guint8 * ORC_RESTRICT s1, int n)
|
|
{
|
|
OrcExecutor _ex, *ex = &_ex;
|
|
static volatile int p_inited = 0;
|
|
static OrcCode *c = 0;
|
|
void (*func) (OrcExecutor *);
|
|
|
|
if (!p_inited) {
|
|
orc_once_mutex_lock ();
|
|
if (!p_inited) {
|
|
OrcProgram *p;
|
|
|
|
#if 1
|
|
static const orc_uint8 bc[] = {
|
|
1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 100, 105, 116,
|
|
104, 101, 114, 95, 111, 114, 100, 101, 114, 101, 100, 95, 117, 56, 11,
|
|
1,
|
|
1, 12, 1, 1, 35, 0, 0, 4, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p, _backup_video_orc_dither_ordered_u8);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_dither_ordered_u8");
|
|
orc_program_set_backup_function (p, _backup_video_orc_dither_ordered_u8);
|
|
orc_program_add_destination (p, 1, "d1");
|
|
orc_program_add_source (p, 1, "s1");
|
|
|
|
orc_program_append_2 (p, "addusb", 0, ORC_VAR_D1, ORC_VAR_D1, ORC_VAR_S1,
|
|
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_dither_ordered_4u8_mask */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_dither_ordered_4u8_mask (guint8 * ORC_RESTRICT d1,
|
|
const guint16 * ORC_RESTRICT s1, orc_int64 p1, int n)
|
|
{
|
|
int i;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union64 *ORC_RESTRICT ptr4;
|
|
orc_union32 var34;
|
|
orc_union64 var35;
|
|
orc_union32 var36;
|
|
orc_union64 var37;
|
|
orc_union64 var38;
|
|
orc_union64 var39;
|
|
orc_union64 var40;
|
|
|
|
ptr0 = (orc_union32 *) d1;
|
|
ptr4 = (orc_union64 *) s1;
|
|
|
|
/* 0: loadpq */
|
|
var37.i = p1;
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 1: loadl */
|
|
var34 = ptr0[i];
|
|
/* 2: convubw */
|
|
var38.x4[0] = (orc_uint8) var34.x4[0];
|
|
var38.x4[1] = (orc_uint8) var34.x4[1];
|
|
var38.x4[2] = (orc_uint8) var34.x4[2];
|
|
var38.x4[3] = (orc_uint8) var34.x4[3];
|
|
/* 3: loadq */
|
|
var35 = ptr4[i];
|
|
/* 4: addw */
|
|
var39.x4[0] = var38.x4[0] + var35.x4[0];
|
|
var39.x4[1] = var38.x4[1] + var35.x4[1];
|
|
var39.x4[2] = var38.x4[2] + var35.x4[2];
|
|
var39.x4[3] = var38.x4[3] + var35.x4[3];
|
|
/* 5: andnw */
|
|
var40.x4[0] = (~var37.x4[0]) & var39.x4[0];
|
|
var40.x4[1] = (~var37.x4[1]) & var39.x4[1];
|
|
var40.x4[2] = (~var37.x4[2]) & var39.x4[2];
|
|
var40.x4[3] = (~var37.x4[3]) & var39.x4[3];
|
|
/* 6: convsuswb */
|
|
var36.x4[0] = ORC_CLAMP_UB (var40.x4[0]);
|
|
var36.x4[1] = ORC_CLAMP_UB (var40.x4[1]);
|
|
var36.x4[2] = ORC_CLAMP_UB (var40.x4[2]);
|
|
var36.x4[3] = ORC_CLAMP_UB (var40.x4[3]);
|
|
/* 7: storel */
|
|
ptr0[i] = var36;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_dither_ordered_4u8_mask (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union32 *ORC_RESTRICT ptr0;
|
|
const orc_union64 *ORC_RESTRICT ptr4;
|
|
orc_union32 var34;
|
|
orc_union64 var35;
|
|
orc_union32 var36;
|
|
orc_union64 var37;
|
|
orc_union64 var38;
|
|
orc_union64 var39;
|
|
orc_union64 var40;
|
|
|
|
ptr0 = (orc_union32 *) ex->arrays[0];
|
|
ptr4 = (orc_union64 *) ex->arrays[4];
|
|
|
|
/* 0: loadpq */
|
|
var37.i =
|
|
(ex->params[24] & 0xffffffff) | ((orc_uint64) (ex->params[24 +
|
|
(ORC_VAR_T1 - ORC_VAR_P1)]) << 32);
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 1: loadl */
|
|
var34 = ptr0[i];
|
|
/* 2: convubw */
|
|
var38.x4[0] = (orc_uint8) var34.x4[0];
|
|
var38.x4[1] = (orc_uint8) var34.x4[1];
|
|
var38.x4[2] = (orc_uint8) var34.x4[2];
|
|
var38.x4[3] = (orc_uint8) var34.x4[3];
|
|
/* 3: loadq */
|
|
var35 = ptr4[i];
|
|
/* 4: addw */
|
|
var39.x4[0] = var38.x4[0] + var35.x4[0];
|
|
var39.x4[1] = var38.x4[1] + var35.x4[1];
|
|
var39.x4[2] = var38.x4[2] + var35.x4[2];
|
|
var39.x4[3] = var38.x4[3] + var35.x4[3];
|
|
/* 5: andnw */
|
|
var40.x4[0] = (~var37.x4[0]) & var39.x4[0];
|
|
var40.x4[1] = (~var37.x4[1]) & var39.x4[1];
|
|
var40.x4[2] = (~var37.x4[2]) & var39.x4[2];
|
|
var40.x4[3] = (~var37.x4[3]) & var39.x4[3];
|
|
/* 6: convsuswb */
|
|
var36.x4[0] = ORC_CLAMP_UB (var40.x4[0]);
|
|
var36.x4[1] = ORC_CLAMP_UB (var40.x4[1]);
|
|
var36.x4[2] = ORC_CLAMP_UB (var40.x4[2]);
|
|
var36.x4[3] = ORC_CLAMP_UB (var40.x4[3]);
|
|
/* 7: storel */
|
|
ptr0[i] = var36;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_dither_ordered_4u8_mask (guint8 * ORC_RESTRICT d1,
|
|
const guint16 * ORC_RESTRICT s1, orc_int64 p1, 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, 33, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 100, 105, 116,
|
|
104, 101, 114, 95, 111, 114, 100, 101, 114, 101, 100, 95, 52, 117, 56,
|
|
95,
|
|
109, 97, 115, 107, 11, 4, 4, 12, 8, 8, 18, 8, 20, 8, 20, 8,
|
|
134, 33, 24, 21, 2, 150, 32, 0, 21, 2, 70, 32, 32, 4, 21, 2,
|
|
74, 32, 33, 32, 21, 2, 160, 0, 32, 2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_dither_ordered_4u8_mask);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_dither_ordered_4u8_mask");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_dither_ordered_4u8_mask);
|
|
orc_program_add_destination (p, 4, "d1");
|
|
orc_program_add_source (p, 8, "s1");
|
|
orc_program_add_parameter_int64 (p, 8, "p1");
|
|
orc_program_add_temporary (p, 8, "t1");
|
|
orc_program_add_temporary (p, 8, "t2");
|
|
|
|
orc_program_append_2 (p, "loadpq", 0, ORC_VAR_T2, ORC_VAR_P1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convubw", 2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 2, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "andnw", 2, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "convsuswb", 2, ORC_VAR_D1, ORC_VAR_T1,
|
|
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;
|
|
{
|
|
orc_union64 tmp;
|
|
tmp.i = p1;
|
|
ex->params[ORC_VAR_P1] = ((orc_uint64) tmp.i) & 0xffffffff;
|
|
ex->params[ORC_VAR_T1] = ((orc_uint64) tmp.i) >> 32;
|
|
}
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|
|
|
|
|
|
/* video_orc_dither_ordered_4u16_mask */
|
|
#ifdef DISABLE_ORC
|
|
void
|
|
video_orc_dither_ordered_4u16_mask (guint16 * ORC_RESTRICT d1,
|
|
const guint16 * ORC_RESTRICT s1, orc_int64 p1, int n)
|
|
{
|
|
int i;
|
|
orc_union64 *ORC_RESTRICT ptr0;
|
|
const orc_union64 *ORC_RESTRICT ptr4;
|
|
orc_union64 var34;
|
|
orc_union64 var35;
|
|
orc_union64 var36;
|
|
orc_union64 var37;
|
|
orc_union64 var38;
|
|
|
|
ptr0 = (orc_union64 *) d1;
|
|
ptr4 = (orc_union64 *) s1;
|
|
|
|
/* 0: loadpq */
|
|
var37.i = p1;
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 1: loadq */
|
|
var34 = ptr0[i];
|
|
/* 2: loadq */
|
|
var35 = ptr4[i];
|
|
/* 3: addw */
|
|
var38.x4[0] = var34.x4[0] + var35.x4[0];
|
|
var38.x4[1] = var34.x4[1] + var35.x4[1];
|
|
var38.x4[2] = var34.x4[2] + var35.x4[2];
|
|
var38.x4[3] = var34.x4[3] + var35.x4[3];
|
|
/* 4: andnw */
|
|
var36.x4[0] = (~var37.x4[0]) & var38.x4[0];
|
|
var36.x4[1] = (~var37.x4[1]) & var38.x4[1];
|
|
var36.x4[2] = (~var37.x4[2]) & var38.x4[2];
|
|
var36.x4[3] = (~var37.x4[3]) & var38.x4[3];
|
|
/* 5: storeq */
|
|
ptr0[i] = var36;
|
|
}
|
|
|
|
}
|
|
|
|
#else
|
|
static void
|
|
_backup_video_orc_dither_ordered_4u16_mask (OrcExecutor * ORC_RESTRICT ex)
|
|
{
|
|
int i;
|
|
int n = ex->n;
|
|
orc_union64 *ORC_RESTRICT ptr0;
|
|
const orc_union64 *ORC_RESTRICT ptr4;
|
|
orc_union64 var34;
|
|
orc_union64 var35;
|
|
orc_union64 var36;
|
|
orc_union64 var37;
|
|
orc_union64 var38;
|
|
|
|
ptr0 = (orc_union64 *) ex->arrays[0];
|
|
ptr4 = (orc_union64 *) ex->arrays[4];
|
|
|
|
/* 0: loadpq */
|
|
var37.i =
|
|
(ex->params[24] & 0xffffffff) | ((orc_uint64) (ex->params[24 +
|
|
(ORC_VAR_T1 - ORC_VAR_P1)]) << 32);
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* 1: loadq */
|
|
var34 = ptr0[i];
|
|
/* 2: loadq */
|
|
var35 = ptr4[i];
|
|
/* 3: addw */
|
|
var38.x4[0] = var34.x4[0] + var35.x4[0];
|
|
var38.x4[1] = var34.x4[1] + var35.x4[1];
|
|
var38.x4[2] = var34.x4[2] + var35.x4[2];
|
|
var38.x4[3] = var34.x4[3] + var35.x4[3];
|
|
/* 4: andnw */
|
|
var36.x4[0] = (~var37.x4[0]) & var38.x4[0];
|
|
var36.x4[1] = (~var37.x4[1]) & var38.x4[1];
|
|
var36.x4[2] = (~var37.x4[2]) & var38.x4[2];
|
|
var36.x4[3] = (~var37.x4[3]) & var38.x4[3];
|
|
/* 5: storeq */
|
|
ptr0[i] = var36;
|
|
}
|
|
|
|
}
|
|
|
|
void
|
|
video_orc_dither_ordered_4u16_mask (guint16 * ORC_RESTRICT d1,
|
|
const guint16 * ORC_RESTRICT s1, orc_int64 p1, 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, 34, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 100, 105, 116,
|
|
104, 101, 114, 95, 111, 114, 100, 101, 114, 101, 100, 95, 52, 117, 49,
|
|
54,
|
|
95, 109, 97, 115, 107, 11, 8, 8, 12, 8, 8, 18, 8, 20, 8, 20,
|
|
8, 134, 33, 24, 21, 2, 70, 32, 0, 4, 21, 2, 74, 0, 33, 32,
|
|
2, 0,
|
|
};
|
|
p = orc_program_new_from_static_bytecode (bc);
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_dither_ordered_4u16_mask);
|
|
#else
|
|
p = orc_program_new ();
|
|
orc_program_set_name (p, "video_orc_dither_ordered_4u16_mask");
|
|
orc_program_set_backup_function (p,
|
|
_backup_video_orc_dither_ordered_4u16_mask);
|
|
orc_program_add_destination (p, 8, "d1");
|
|
orc_program_add_source (p, 8, "s1");
|
|
orc_program_add_parameter_int64 (p, 8, "p1");
|
|
orc_program_add_temporary (p, 8, "t1");
|
|
orc_program_add_temporary (p, 8, "t2");
|
|
|
|
orc_program_append_2 (p, "loadpq", 0, ORC_VAR_T2, ORC_VAR_P1, ORC_VAR_D1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "addw", 2, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_S1,
|
|
ORC_VAR_D1);
|
|
orc_program_append_2 (p, "andnw", 2, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
|
|
ORC_VAR_D1);
|
|
#endif
|
|
|
|
orc_program_compile (p);
|
|
c = orc_program_take_code (p);
|
|
orc_program_free (p);
|
|
}
|
|
p_inited = TRUE;
|
|
orc_once_mutex_unlock ();
|
|
}
|
|
ex->arrays[ORC_VAR_A2] = c;
|
|
ex->program = 0;
|
|
|
|
ex->n = n;
|
|
ex->arrays[ORC_VAR_D1] = d1;
|
|
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
|
{
|
|
orc_union64 tmp;
|
|
tmp.i = p1;
|
|
ex->params[ORC_VAR_P1] = ((orc_uint64) tmp.i) & 0xffffffff;
|
|
ex->params[ORC_VAR_T1] = ((orc_uint64) tmp.i) >> 32;
|
|
}
|
|
|
|
func = c->exec;
|
|
func (ex);
|
|
}
|
|
#endif
|